aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/appl/eval-pollin
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-08-26 20:31:40 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-08-26 20:31:40 +0200
commitd80736ab6e8e3cad2f1a30c6eaba2d6883dbe967 (patch)
tree15962f3d8542ae182d88ac5913a3c4bfce6f2b03 /amforth-6.5/appl/eval-pollin
parent530a312ee523a25e5df475341d201e5bb1296c41 (diff)
Remove AmForth
Diffstat (limited to 'amforth-6.5/appl/eval-pollin')
-rw-r--r--amforth-6.5/appl/eval-pollin/blocks/hd44780.frt115
-rw-r--r--amforth-6.5/appl/eval-pollin/blocks/hello-world.frt81
-rw-r--r--amforth-6.5/appl/eval-pollin/blocks/netio.frt32
-rw-r--r--amforth-6.5/appl/eval-pollin/build.xml15
-rw-r--r--amforth-6.5/appl/eval-pollin/dict_appl.inc8
-rw-r--r--amforth-6.5/appl/eval-pollin/dict_appl_core.inc2
-rw-r--r--amforth-6.5/appl/eval-pollin/p1284-16.eep.hex7
-rw-r--r--amforth-6.5/appl/eval-pollin/p1284-16.hex646
-rw-r--r--amforth-6.5/appl/eval-pollin/p1284-16.lst10495
-rw-r--r--amforth-6.5/appl/eval-pollin/p1284-16.map2253
-rw-r--r--amforth-6.5/appl/eval-pollin/p1284-16.xml36
-rw-r--r--amforth-6.5/appl/eval-pollin/p16-8.eep.hex7
-rw-r--r--amforth-6.5/appl/eval-pollin/p16-8.hex625
-rw-r--r--amforth-6.5/appl/eval-pollin/p16-8.lst10363
-rw-r--r--amforth-6.5/appl/eval-pollin/p16-8.map1961
-rw-r--r--amforth-6.5/appl/eval-pollin/p16-8.xml36
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-16.xml45
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-8.eep.hex7
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-8.hex628
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-8.lst10420
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-8.map1933
-rw-r--r--amforth-6.5/appl/eval-pollin/p32-8.xml35
-rw-r--r--amforth-6.5/appl/eval-pollin/p328-16.eep.hex7
-rw-r--r--amforth-6.5/appl/eval-pollin/p328-16.hex633
-rw-r--r--amforth-6.5/appl/eval-pollin/p328-16.lst10427
-rw-r--r--amforth-6.5/appl/eval-pollin/p328-16.map2054
-rw-r--r--amforth-6.5/appl/eval-pollin/p328-16.xml36
-rw-r--r--amforth-6.5/appl/eval-pollin/p644-16.eep.hex7
-rw-r--r--amforth-6.5/appl/eval-pollin/p644-16.hex635
-rw-r--r--amforth-6.5/appl/eval-pollin/p644-16.lst10444
-rw-r--r--amforth-6.5/appl/eval-pollin/p644-16.map2133
-rw-r--r--amforth-6.5/appl/eval-pollin/p644-16.xml27
-rw-r--r--amforth-6.5/appl/eval-pollin/p8-12.xml25
-rw-r--r--amforth-6.5/appl/eval-pollin/pollin.asm21
-rw-r--r--amforth-6.5/appl/eval-pollin/words/applturnkey.asm30
35 files changed, 0 insertions, 66229 deletions
diff --git a/amforth-6.5/appl/eval-pollin/blocks/hd44780.frt b/amforth-6.5/appl/eval-pollin/blocks/hd44780.frt
deleted file mode 100644
index 0524f5f..0000000
--- a/amforth-6.5/appl/eval-pollin/blocks/hd44780.frt
+++ /dev/null
@@ -1,115 +0,0 @@
-\
-\ Module: hd44780 routines
-\ use the hd44780 module in 8bit mode
-\ v 0.9
-
-\ needs marker.frt and bitnames.frt from lib
-
-marker _hd44780_
-
-
-hex
-
-\ for the pollin addon board 1.0
-1b 20 + constant hd44780-data \ PORTA
-18 20 + constant hd44780-ctrl \ PORTB
-
-hd44780-ctrl 1 portpin: hd44780-rw
-hd44780-ctrl 0 portpin: hd44780-en
-hd44780-ctrl 2 portpin: hd44780-rs
-
-2 constant hd44780-pulse-delay
-a constant hd44780-short-delay
-
-: hd44780-pulse-en
- hd44780-en high
- hd44780-pulse-delay ms
- hd44780-en low
- hd44780-pulse-delay ms
-;
-
-: hd44780-data-mode
- hd44780-rs high
-;
-
-: hd44780-command-mode
- hd44780-rs low
-;
-
-
-: hd44780-read-mode
- 0 hd44780-data 1- c! \ input
- hd44780-rw high
-;
-
-: hd44780-write-mode
- ff hd44780-data 1- c! \ output
- hd44780-rw low
-;
-
-: hd44780-read-data ( -- c )
- hd44780-read-mode
- hd44780-pulse-en
- hd44780-short-delay ms
- hd44780-data 1- 1- c@
-;
-
-: hd44780-wait
- hd44780-read-mode
- hd44780-rw high
- hd44780-rs low
- hd44780-pulse-en
- begin
- hd44780-data 1- 1- c@
- 80 and
- until
-;
-
-: hd44780-command ( n -- )
- hd44780-wait
- hd44780-write-mode
- hd44780-command-mode
- hd44780-data c!
- hd44780-pulse-en
-;
-
-: hd44780-emit ( c -- )
- hd44780-write-mode
- hd44780-data-mode
- hd44780-data c!
- hd44780-pulse-en
-;
-
-: hd44780-init
- hd44780-rw pin_output
- hd44780-en pin_output
- hd44780-rs pin_output
-;
-\ from tracker: hd44780.frt - added LCD initialization - ID: 2785157
-: hd44780-cmd-no-wait ( n -- )
- hd44780-write-mode
- hd44780-command-mode
- hd44780-data c!
- hd44780-pulse-en
-;
-
-: hd44780-start
- hd44780-init
- 15 ms
- 30 hd44780-cmd-no-wait
- 4 ms
- 30 hd44780-cmd-no-wait
- 1 ms
- 30 hd44780-cmd-no-wait
- 38 hd44780-command
- 6 hd44780-command
- c hd44780-command
- 1 hd44780-command
-;
-
-
-: hd44780-page ( clear page )
- 1 hd44780-command ( clear hd44780 )
- 3 hd44780-command ( cursor home )
-;
-
diff --git a/amforth-6.5/appl/eval-pollin/blocks/hello-world.frt b/amforth-6.5/appl/eval-pollin/blocks/hello-world.frt
deleted file mode 100644
index 94073b8..0000000
--- a/amforth-6.5/appl/eval-pollin/blocks/hello-world.frt
+++ /dev/null
@@ -1,81 +0,0 @@
-\ test routines for the atmel evaluation
-\ boards from www.pollin.de
-\ needs the device register definitions loaded
-
-#require ms.frt
-
-marker _pollin_
-
-decimal
-
-\ wait some milliseconds
-: blinkdelay 250 ms ;
-
-PORTD 5 portpin: led1
-PORTD 6 portpin: led2
-
-PORTD 2 portpin: key1
-PORTD 3 portpin: key2
-PORTD 4 portpin: key3
-
-GICR 7 portpin: en_int1
-GICR 6 portpin: en_int0
-GICR 5 portpin: en_int2
-
-: +demoports
- led1 pin_output
- led2 pin_output
- key1 pin_input
- key2 pin_input
- key3 pin_input
-
- 05 MCUCR c! \ int0/1
- en_int1 high
- en_int0 high
- en_int2 low
-;
-
-\ test runs until a terminal-key is pressed
-
-\ as long as a key on the board is pressed the
-\ corresponding led/buzzer is turned on
-: keys
- begin
- PIND c@
- [ hex ] fc and
- 3 lshift
- PORTD c!
- key? until
- key drop \ we do not want to keep this key stroke
-;
-
-
-: blink ( -- )
- led1 high blinkdelay
- led2 high blinkdelay
- led2 low blinkdelay
- led1 low blinkdelay
-;
-
-: led1blink
- led1 high
- blinkdelay
- led1 low
-;
-
-\ simple lights on/off
-: led
- begin
- blink
- key?
- until
- key drop \ we do not want to keep this key stroke
-;
-
-\ interrupt processing takes a long time, do not
-\ press the key while it runs...
-\ ' led1blink 1 int!
-\ ' noop 2 int!
-
-\ autoconfig the i/o ports
-\ ' portinit 'turnkey e!
diff --git a/amforth-6.5/appl/eval-pollin/blocks/netio.frt b/amforth-6.5/appl/eval-pollin/blocks/netio.frt
deleted file mode 100644
index 6c1f62c..0000000
--- a/amforth-6.5/appl/eval-pollin/blocks/netio.frt
+++ /dev/null
@@ -1,32 +0,0 @@
-
-\ Definitions for the netio-addon board
-
-\ SPI communication pins
- PORTB 4 portpin: /ss
- PORTB 5 portpin: _mosi
- PORTB 6 portpin: _miso
- PORTB 7 portpin: _clk
-
-\ setup the SPI pins
- : +spi ( -- )
- /ss high \ activate pullup!
- _mosi high _mosi pin_output
- _clk low _clk pin_output
- ;
-
- : -spi 0 SPCR c! ;
-
- \ transfer 1 cell
- : ><spi ( x -- x' )
- dup >< c!@spi
- swap c!@spi
- swap >< +
- ;
-
-: +mmc
- /ss low
-;
-: -mmc
- /ss high
-;
-
diff --git a/amforth-6.5/appl/eval-pollin/build.xml b/amforth-6.5/appl/eval-pollin/build.xml
deleted file mode 100644
index 081eea6..0000000
--- a/amforth-6.5/appl/eval-pollin/build.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- make multiple targets with antelope -->
-<project name="pollins" basedir="." default="Help">
- <import file="../avr-build.xml"/>
- <import file="p328-16.xml"/>
- <import file="p16-8.xml"/>
- <import file="p32-16.xml"/>
- <import file="p32-8.xml"/>
- <import file="p644-16.xml"/>
- <import file="p1284-16.xml"/>
- <import file="p8-12.xml"/>
-
- <target name="compile" depends="p16-8.hex, p32-8.hex, p328-16.hex, p1284-16.hex, p644-16.hex">
-
- </target>
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/dict_appl.inc b/amforth-6.5/appl/eval-pollin/dict_appl.inc
deleted file mode 100644
index a7e4b42..0000000
--- a/amforth-6.5/appl/eval-pollin/dict_appl.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-; this dictionary contains optional words
-; they may be moved to the core dictionary if needed
-.include "words/dot-s.asm"
-.include "words/spirw.asm"
-.include "words/n-spi.asm"
-.include "words/applturnkey.asm"
-.include "dict/compiler2.inc"
-.include "words/2r_fetch.asm"
diff --git a/amforth-6.5/appl/eval-pollin/dict_appl_core.inc b/amforth-6.5/appl/eval-pollin/dict_appl_core.inc
deleted file mode 100644
index 93c0d8a..0000000
--- a/amforth-6.5/appl/eval-pollin/dict_appl_core.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-; This file is intentionally left empty
-; do not delete it!
diff --git a/amforth-6.5/appl/eval-pollin/p1284-16.eep.hex b/amforth-6.5/appl/eval-pollin/p1284-16.eep.hex
deleted file mode 100644
index dfec159..0000000
--- a/amforth-6.5/appl/eval-pollin/p1284-16.eep.hex
+++ /dev/null
@@ -1,7 +0,0 @@
-:10004600FFFF9A05CB01A00042046E00B040EC040D
-:0A0056004DF55A00A8FD01005A0004
-:06006E0002003FFB2BFB2A
-:1000780090F37A0000000000FF40AF40AF4000005E
-:100088000A00B600C4008B00A60040FD00002DFD4C
-:0800980005FA24FA14FA19001C
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p1284-16.hex b/amforth-6.5/appl/eval-pollin/p1284-16.hex
deleted file mode 100644
index 1f80cb8..0000000
--- a/amforth-6.5/appl/eval-pollin/p1284-16.hex
+++ /dev/null
@@ -1,646 +0,0 @@
-:020000020000FC
-:0200040039D1F0
-:0200080037D1EE
-:02000C0035D1EC
-:0200100033D1EA
-:0200140031D1E8
-:020018002FD1E6
-:02001C002DD1E4
-:020020002BD1E2
-:0200240029D1E0
-:0200280027D1DE
-:02002C0025D1DC
-:0200300023D1DA
-:0200340021D1D8
-:020038001FD1D6
-:02003C001DD1D4
-:020040001BD1D2
-:0200440019D1D0
-:0200480017D1CE
-:02004C0015D1CC
-:0200500013D1CA
-:0200540011D1C8
-:020058000FD1C6
-:02005C000DD1C4
-:020060000BD1C2
-:0200640009D1C0
-:0200680007D1BE
-:02006C0005D1BC
-:0200700003D1BA
-:0200740001D1B8
-:02007800FFD0B7
-:02007C00FDD0B5
-:02008000FBD0B3
-:02008400F9D0B1
-:10008800F7D000400010FFFF23000B0041546D65BE
-:10009800676131323834500007FF3E72782D62753F
-:1000A800660000005700082F10911001E0E0F1E011
-:1000B800E10FF31D008313951F70109310018991B0
-:1000C80099910C9405F006FF6973722D72785000AF
-:1000D80001F046F0C600AAF0C3F046F003009AFD0E
-:1000E8003FF0770074FA560026F001F046F06C00F5
-:1000F80046F02800A2F446F0000146F0160066F12A
-:10010800EAF426F006FF72782D627566670001F042
-:10011800A6003FF08C0046F01101AAF0C3F046F0AB
-:100128000001AFF1AAF0D6F041F246F00F0025F237
-:1001380046F011019FF026F007FF72783F2D627597
-:100148006600860001F06CFA46F01101AAF046F04C
-:100158001001AAF025F126F007FF74782D706F6C56
-:100168006C00A00001F0C4003FF0B70046F0C600E4
-:100178009FF026F008FF74783F2D706F6C6CB0000C
-:1001880001F06CFA46F0C000AAF046F0200025F213
-:1001980026F004FF75627272BE0081F09E00CFFBEC
-:1001A800D9FB06FF2B7573617274CD0001F046F020
-:1001B800980046F0C1009FF046F0060046F0C200E5
-:1001C8009FF0D100C3F00BF346F0C5009FF046F056
-:1001D800C4009FF0790026F008FF31772E7265730E
-:1001E8006574D500F7009A938A93249A2C98E0E8CE
-:1001F800F7E03197F1F71FB7F8942C9A2498E0E0CC
-:10020800F1E03197F1F783B184FF9FEF1FBF249886
-:100218002C98E0E8F6E03197F1F7892F0C9405F077
-:1002280007FF31772E736C6F7400F0001B012C9858
-:10023800249A1FB7F894E8E1F0E03197F1F7889431
-:10024800879510F42C9A2498E4E2F0E03197F1F7BE
-:1002580003B104FD8068ECECF0E03197F1F72C9ADB
-:100268002498E8E0F0E03197F1F71FBF0C9405F00F
-:040000000C9475FAED
-:100278000A920FB60A920F900F900A94B02CFF932F
-:10028800EF93E2E1F1E00694E00DF31D00800394A2
-:100298000082EF91FF9109900FBE0990089502FF27
-:1002A8006D2B140101F082FD30F426F003FF756414
-:1002B8002A00530101F0C3F011F1F2F1EBF0D6F08E
-:1002C80008F1F2F1F3F0AFF126F004FF756D6178F3
-:1002D8005A0101F080F56EF13FF07301D6F0EBF0B2
-:1002E80026F004FF756D696E690101F080F579F1FA
-:1002F8003FF07F01D6F0EBF026F001F046F00080E9
-:1003080025F22CF13FF08A01A1FD26F05DF126F0DF
-:100318000AFF6E616D653E666C616773750101F079
-:10032800E3F346F000FF25F226F006FF6E657765D9
-:1003380073748C0154F0350106FF6C617465737435
-:10034800990154F0390108FF2863726561746529C1
-:10035800A00101F0CFF90403C3F09E0179F593F0F1
-:10036800E9029E0193F026F001005C00A70101F06C
-:10037800B6F902F199F593F026F001002800B801CA
-:1003880001F046F02900A2F989F526F007FF636F0E
-:100398006D70696C6500C10101F008F1C3F0C6FB1E
-:1003A80011F1E3F3DB0126F001FF2C00CA0101F093
-:1003B800C9F585F3C9F541F2B4FBCAF526F0030087
-:1003C8005B275D00D80101F025F8F10126F0070050
-:1003D8006C69746572616C00E30101F0D00146F04C
-:1003E800DB0126F00800736C69746572616CEB01BF
-:1003F80001F0D00188F796F726F001F0C9F5D00191
-:10040800FFFF26F001F072FBC9F5D6F085F326F060
-:1004180001F0C9F526F001F072FBDB0126F00500BA
-:10042800616865616400F60101F0D00135F00102F0
-:1004380026F002006966130201F0D0013FF00102C4
-:1004480026F00400656C73651D0201F0D00135F0DB
-:100458000102D6F0060226F004007468656E2502D3
-:1004680001F0060226F00500626567696E00300239
-:1004780001F00C0226F005007768696C6500370208
-:1004880001F02002D6F026F00600726570656174EE
-:100498003F0201F06102340226F00500756E7469AE
-:1004A8006C00480201F046F03FF0DB010F0226F035
-:1004B8000500616761696E00510201F0D00135F0F5
-:1004C8000F0226F00200646F5C0201F0D001ADF269
-:1004D8000C0266F1C40226F004006C6F6F706602AD
-:1004E80001F0D001DBF2AB0226F005002B6C6F6F38
-:1004F8007000700201F0D001CCF2AB0226F00500CA
-:100508006C6561766500790201F0D001E6F21802A7
-:10051800C40226F003003F646F00830201F0D0019B
-:100528009A0220026902D6F0C40226F001F080F592
-:100538009AFDC3F011F13FF0A20289F508F10FF21C
-:1005480026F007FF656E646C6F6F70008E0201F015
-:100558000F02B802CBF03FF0B402340235F0AD021E
-:1005680026F002FF6C3EA50201F0D7028BF08BF05B
-:1005780046F0FEFFD70277F226F002FF3E6CB50286
-:1005880001F0A6FDD70277F2D7028BF093F026F0A0
-:1005980003FF6C703000C10281F05200CFFBD9FB21
-:1005A80002FF6C70CC0254F03B0106FF6372656178
-:1005B8007465D40201F0AD010D03D00161F026F09D
-:1005C80006FF686561646572D90201F0C9F511F129
-:1005D80011F1C3F03AF13FF0FB02C3F046F000FF1F
-:1005E8002EF29AF708F171F3DB0108F126F046F0D4
-:1005F800F0FF5CF807FF776C73636F706500E402C7
-:100608002EFC4E00CFFBD9FB06FF72657665616C48
-:10061800FE0201F09E0179F58BF0CBF03FF0180354
-:100628009E018BF0D6F04DF326F00500646F6573DC
-:100638003E00080301F0D0013103D0010E94D0012F
-:10064800260326F09A938A93CB0101967F916F91A6
-:10065800BF93AF93DB010C9405F001F008F19E0104
-:1006680079F58BF071F399FC85F326F001FF3A00D8
-:10067800190301F0AD014803EBF026F007FF3A6ECD
-:100688006F6E616D65003A0301F0C9F5C3F0A5010D
-:1006980093F0D00101F05D0326F001003B00420316
-:1006A80001F0D00126F065030D0326F001FF5D007F
-:1006B800510301F0A1FD66F593F026F001005B00FF
-:1006C8005A0301F066F166F593F026F008FF7661AB
-:1006D800726961626C65620301F0DAF57C03A6FD5C
-:1006E800E3F526F008FF636F6E7374616E746A0336
-:1006F80001F0AD010D03D00154F0DB0126F004FF39
-:1007080075736572760301F0AD010D03D00167F0D2
-:10071800DB0126F007007265637572736500830359
-:1007280001F0A5018BF0DB0126F009FF696D6D650D
-:100738006469617465008E0301F0420471F3C3F0CB
-:10074800E3F346F0FF7F25F2D6F085F326F00600A6
-:100758005B636861725D990301F0D00146F005F9A9
-:10076800DB0126F0060061626F727422AB0301F0B0
-:10077800DCF4D001CD0326F005FF61626F727400CE
-:10078800B60301F05DF15CF806FF3F61626F7274B9
-:10079800C00301F0F3F03FF0D303BBF7C50389F5BD
-:1007A80026F009FF6765742D737461636B00C803D5
-:1007B80001F0C3F079F5D6F071F3C3F011F166F1E9
-:1007C800D6F09A023FF0F303ADF2BEF247F273F5AA
-:1007D800E1F0AFF171F3D6F05DF1CCF2E90389F500
-:1007E80008F126F009FF7365742D737461636B005B
-:1007F800D50301F0E1F033F13FF0050446F0FCFFCA
-:100808005CF880F54DF3D6F066F19A023FF01204D9
-:10081800ADF279F591F54DF3DBF20D04EBF026F02E
-:1008280009FF6D61702D737461636B00F60301F04D
-:10083800C3F079F5D6F071F373F579FD9A023FF0BC
-:100848003704ADF2BEF271F3D6F011F11AF130F0BF
-:10085800CBF03FF0330408F1EBF0E6F226F008F1B4
-:10086800A6FDCCF22604EBF066F126F00BFF6765D7
-:10087800742D63757272656E7400140401F046F08D
-:10088800580071F326F009FF6765742D6F7264656F
-:1008980072003A0401F046F05C00DC0326F009FF20
-:1008A8006366672D6F7264657200470454F05C00DC
-:1008B80007FF636F6D706172650053046304BF9333
-:1008C800AF938C0189919991DC01899199919C014F
-:1008D80089919991FC01ED90F190EF1451F40A95EA
-:1008E80019F02A95C1F701C02A95022B11F488271F
-:1008F80002C08FEF00C0982FAF91BF910C9405F004
-:1009080007FF6E66613E6C6661005C0401F08DFC59
-:1009180041F216F2AFF126F002FF2E73840401F0C3
-:10092800BCFA63F4FDF7BCFA66F19A023FF0A20440
-:10093800ADF2BEF2CAF463F4DBF29D0426F006FFC2
-:100948006321407370699004A90403D099270C941B
-:1009580005F08EBD0DB5087F0DBD0DB507FFFACFAB
-:100968008EB5089505FF6E4073706900A304BC043A
-:100978008C0189919991FC01C8012EBC2DB527FFE6
-:10098800FDCF2EB521930197C1F7899199910C94C8
-:1009980005F005FF6E2173706900B604D3048C015D
-:1009A80089919991FC01C80121912EBD2DB527FF90
-:1009B800FDCF2EB50197C1F7899199910C9405F057
-:1009C8000BFF6170706C7475726E6B657900CD0485
-:1009D80001F0DA0094F47FFBFDF75BF546F0E803DD
-:1009E800D4F102F1F8F53DF788F704006B487A2056
-:1009F800BBF726F00BFF7365742D63757272656E15
-:100A08007400E40401F046F058004DF326F008FFA6
-:100A1800776F72646C697374FE0401F0D2F566F145
-:100A2800E1F04DF3C3F079F5B4FBD3F526F00EFFF2
-:100A3800666F7274682D776F72646C6973740B05D6
-:100A480054F05A0009FF7365742D6F726465720063
-:100A58001B0501F046F05C00FD0326F00FFF7365EF
-:100A6800742D7265636F676E697A65727300260507
-:100A780001F046F06E00FD0326F00FFF6765742D48
-:100A88007265636F676E697A65727300320501F08B
-:100A980046F06E00DC0326F004FF636F64654105D1
-:100AA80001F0AD010D03C9F5C6FBDB0126F008FF17
-:100AB800656E642D636F6465500501F0D0010C9478
-:100AC800D00105F026F008FF286D61726B65722968
-:100AD8005B0581F07A00CFFBD9FB0800706F737457
-:100AE800706F6E65670501F0CFF9E7FAF2FAC3F0A7
-:100AF80011F1C6FBC6FBE3F330F008F1C6FBE3F3E4
-:100B0800DB0126F003FF3272400071058B059A93D2
-:100B18008A93EF91FF918F919F919F938F93FF936A
-:0C0B2800EF939A938A93CF010C9405F090
-:020000021000EC
-:10E00200BF93AF93DB011196B21499F4FD0155272A
-:10E01200EE0FFF1F551F5BBF679177911196FB01B2
-:10E022005527EE0FFF1F551F5BBF07911791F80190
-:10E0320009949A938A938B2D9927BB246DEB74EFE5
-:10E04200EECF04FF65786974860527F0AF91BF9122
-:10E05200DBCF07FF657865637574650022F031F0E8
-:10E06200BC0189919991DBCF36F0FD015527EE0F66
-:10E07200FF1F551F5BBFA791B791C6CF40F0982BEA
-:10E082008991999191F31196BFCF47F09A938A9310
-:10E09200FD015527EE0FFF1F551F5BBF879197911B
-:10E0A2001196B2CF54F09A938A93FB013196552779
-:10E0B200EE0FFF1F551F5BBF87919791A5CF61F0B0
-:10E0C2009A938A93CB0101969FCF67F09A938A9392
-:10E0D200FB0131965527EE0FFF1F551F5BBF87913E
-:10E0E2009791840D951D90CF07FF2876616C756519
-:10E0F20029002AF001F0AD010D03D00181F026F0D4
-:10E102000E942603C3F0C6FBE3F330F026F001FFC2
-:10E11200400075F08CF0FC018191919175CF01FF67
-:10E12200210088F094F0FC01899199919183808378
-:10E132008991999169CF02FF632190F0A0F0FC01CF
-:10E14200899199918083899199915ECF02FF634071
-:10E152009CF0ABF0FC019927808156CF02FF4075FD
-:10E16200A7F001F014F3AFF18BF026F002FF217556
-:10E17200AFF001F014F3AFF193F026F003FF6475F2
-:10E182007000B7F0C4F09A938A933ECF04FF3F64C5
-:10E192007570BFF0CCF0082F092B11F09A938A9377
-:10E1A20033CF04FF73776170C7F0D7F08C01899188
-:10E1B20099911A930A9328CF04FF6F766572D2F071
-:10E1C200E2F09A938A938A819B811ECF04FF647244
-:10E1D2006F70DDF0ECF08991999116CF03FF726FA9
-:10E1E2007400E7F0F4F08C012991399189919991A9
-:10E1F2003A932A931A930A9307CF03FF6E6970002A
-:10E20200EFF003F1229600CF02FF723EFEF009F119
-:10E212009A938A938F919F91F7CE02FF3E7205F1F6
-:10E2220012F19F938F9389919991EECE02FF7240E2
-:10E232000EF11BF19A938A938F919F919F938F93E3
-:10E24200E3CE02FF3C3E17F101F09AFD2CF126F0DD
-:10E2520002FF303D22F12DF1982BD1F530C002FFA3
-:10E26200303C29F134F197FD2AC032C002FF303E22
-:10E2720030F13BF1821593055CF151F120C003FFAF
-:10E2820064303E0037F145F18215930589919991E9
-:10E2920082059305ECF0E1F012C003FF64303C000C
-:10E2A20040F153F1229697FD0C9460F10C9469F1C0
-:10E2B20004FF747275654EF15EF19A938A938FEF43
-:10E2C2009FEFA2CE01FF300059F167F19A938A9332
-:10E2D200C1019ACE02FF753C63F16FF12991399128
-:10E2E20082179307A8F3A1F3EACF02FF753E6BF101
-:10E2F20001F0D6F06EF126F001FF3C0076F181F1DB
-:10E3020029913991281739071CF7D9CF01FF3E000F
-:10E312007DF18BF12991399128173907CCF2C1F29D
-:10E32200CECF04FF6C6F673287F197F1FC0199271A
-:10E3320080E18A9522F0EE0FFF1FD8F765CE9A95FD
-:10E3420063CE01FF2D0092F1A6F109911991081BEC
-:10E35200190BC80159CE01FF2B00A2F1B0F10991AE
-:10E362001991800F911F50CE02FF6D2AACF1B9F1C5
-:10E372008C01899199919C0131027001209FC00109
-:10E382003003F308900DE11CF31C1203F308900D07
-:10E39200E11CF31C9A938A93C70136CE06FF756D72
-:10E3A2002F6D6F64B5F1D5F17C01299139910991F5
-:10E3B200199140E15527000F111F221F331F551FCE
-:10E3C2002E153F05520518F003952E193F094A955F
-:10E3D20089F73A932A93C80117CE03FF756D2A0075
-:10E3E200CFF1F3F18C0189919991809FF00122275D
-:10E3F2003327909FF00D211D331D819FF00D211DAC
-:10E40200331D919F200D311DCF019A938A93C9012B
-:10E41200FBCD06FF696E76657274EEF110F280959F
-:10E422009095F2CD02FF322F0AF217F29595879559
-:10E43200EBCD02FF322A13F21EF2880F991FE4CDB0
-:10E4420003FF616E64001AF226F20991199180238A
-:10E452009123DACD02FF6F7221F22FF20991199105
-:10E46200802B912BD1CD03FF786F72002BF239F202
-:10E472000991199180279127C7CD02FF312B34F2E0
-:10E4820042F20196C1CD02FF312D3EF248F20197D0
-:10E49200BBCD07FF3F6E65676174650044F201F012
-:10E4A20033F13FF055F25AF626F006FF6C736869B5
-:10E4B20066744AF25CF2FC018991999131971AF0E3
-:10E4C200880F991FFBCFA0CD06FF7273686966742F
-:10E4D20056F26BF2FC018991999131971AF0969557
-:10E4E2008795FBCF91CD02FF2B2165F278F2FC01DB
-:10E4F2008991999120813181820F931F8083918329
-:10E502008991999181CD03FF7270400074F289F272
-:10E512009A938A938DB79EB777CD03FF72702100CD
-:10E5220084F293F22FB7F8948DBF9EBF2FBF8991CB
-:10E5320099916ACD03FF737040008EF2A0F29A9314
-:10E542008A93CE0161CD03FF737021009BF2A9F281
-:10E55200EC018991999158CDAEF229913991E0E877
-:10E562003E0F821B930B3F932F939F938F9389911F
-:10E5720099914ACD01FF6900A4F2BFF29A938A935E
-:10E582008F919F91EF91FF91FF93EF939F938F93C1
-:10E592008E0F9F1F39CDCDF2EF91FF91E80FF91F3A
-:10E5A200899199911BF0FF93EF935FCD0F911F918A
-:10E5B20011962ACDDCF2EF91FF913196BBF3F3CFA6
-:10E5C20006FF756E6C6F6F70BBF2E7F21F910F91D1
-:10E5D2001F910F9119CD06FF636D6F76653EE1F2D3
-:10E5E200F2F2BF93AF93E991F991A991B991092FF1
-:10E5F200082B41F0E80FF91FA80FB91F1E911293C3
-:10E602000197E1F7AF91BF9189919991FDCC02FFFA
-:10E612003E3CECF20CF3092F982F802FF5CC03FF30
-:10E622007570400008F315F39A938A93C201ECCCFB
-:10E6320003FF7570210010F31EF32C01899199914B
-:10E64200E3CC03FF316D730019F327F3E0EAFFE037
-:10E652003197F1F7D9CC03FF323E720022F331F346
-:10E66200FC01899199919F938F93FF93EF938991E5
-:10E672009991CACC03FF32723E002CF340F39A9375
-:10E682008A93EF91FF918F919F919A938A93CF01F1
-:10E69200BBCC02FF21653BF34EF3FC0189919991BA
-:10E6A2002FB7F89428D000B5081709F00BD031968F
-:10E6B20022D000B5091711F0892F04D02FBF8991FC
-:10E6C2009991A2CCF999FECF07B700FDFDCFF2BD1B
-:10E6D200E1BD80BDFA9AF99A089502FF40654AF3B6
-:10E6E20072F32FB7F894FC0106D080B5319603D0AF
-:10E6F20090B52FBF89CCF999FECFF2BDE1BDF89A52
-:10E70200089502FF21696EF32EFC7800CFFBD9FB3E
-:10E7120009FF2821692D6E727777290082F391F320
-:10E722001FB71F93F8949C0189919991AF93BF935E
-:10E73200CF93DF9309D0DF91CF91BF91AF918991B0
-:10E7420099911F911FBF60CC10D0E094F0948E215C
-:10E752009F21982B19F0F90102E023D0F90104E07E
-:10E7620020D0F90100E11DD00895F901E078FF7F82
-:10E77200EF01A0E8B0E0FE015527EE0FFF1F551F85
-:10E782005BBF47915791FE01E217F30711F00A01AF
-:10E7920002C07A010C01002704D02196119759F783
-:10E7A2000895F999FECF17B710FDFDCF5527EE0F4B
-:10E7B200FF1F551F5BBF016007BFE895089502FF69
-:10E7C200406989F3E4F3FC015527EE0FFF1F551F43
-:10E7D2005BBF8791979118CC03FF6E3E7200E0F306
-:10E7E200F2F3FC01082F899199919F938F930A95D7
-:10E7F200D1F7EF93FF938991999106CC03FF6E7243
-:10E802003E00EDF304F49A938A93FF91EF910E2F59
-:10E812008F919F919A938A930A95D1F7CF01F4CB66
-:10E8220003FF64322A00FFF316F409911991000FD5
-:10E83200111F881F991F1A930A93E6CB03FF6432B4
-:10E842002F0011F424F40991199195958795179544
-:10E8520007951A930A93D8CB02FF642B1FF431F465
-:10E8620029913991E990F99049915991240F351FD5
-:10E872008E1D9F1D3A932A93C7CB02FF642D2DF460
-:10E8820042F429913991E990F99049915991421BA9
-:10E89200530BE80AF90A5A934A93C701B5CB07FF0B
-:10E8A20064696E76657274003EF457F409911991A9
-:10E8B20080959095009510951A930A93A5CB02FF27
-:10E8C200752E50F401F066F145F726F003FF752E20
-:10E8D200720060F401F066F1D6F04EF726F00DFFFB
-:10E8E20073686F772D776F72646C6973740067F465
-:10E8F20001F046F07FF4D6F072FC26F001F08DFCB8
-:10E90200BBF7FDF75DF126F005FF776F72647300C8
-:10E9120070F401F046F05E0071F379F426F004FF22
-:10E922002B696E7485F495F478946ECB04FF2D698F
-:10E932006E7490F49CF4F89467CB04FF696E7421B2
-:10E9420097F401F046F00000AFF14DF326F004FF1A
-:10E95200696E74409EF401F046F00000AFF171F36D
-:10E9620026F008FF696E742D74726170A8F4B9F410
-:10E97200B82E8991999148CB01F0ACF430F0C2F4F1
-:10E9820026F0C3F401D040CB189504FF7069636B85
-:10E99200B2F401F041F273F59FF2AFF18BF026F081
-:10E9A20002002E22C6F401F0DCF4D001BBF726F0FF
-:10E9B20002007322D1F401F046F02200A2F966F5BA
-:10E9C2008BF03FF0E5F4FC0126F004FF66696C6C05
-:10E9D200D9F401F0F3F0F3F0CBF03FF0F7F479FD66
-:10E9E200ADF2C3F0BEF29FF0DBF2F2F4EBF026F0F0
-:10E9F2000BFF656E7669726F6E6D656E7400E6F47C
-:10EA020054F0560009FF776F72646C697374730077
-:10EA1200000001F046F0080026F004FF2F70616448
-:10EA220003F501F09FF29FF5A5F126F005FF2F688F
-:10EA32006F6C64000EF501F09FF5DAF5A5F126F092
-:10EA42000AFF666F7274682D6E616D6517F501F0CD
-:10EA520088F70700616D666F7274680026F007FF21
-:10EA620076657273696F6E0021F501F046F0410020
-:10EA720026F003FF6370750030F501F046F049009F
-:10EA8200E7F726F008FF6D63752D696E666F3AF53C
-:10EA920001F046F0450026F005FF2F757365720000
-:10EAA20043F501F046F02C0026F005FF665F637027
-:10EAB2007500F9F401F046F0002446F0F40026F067
-:10EAC20005FF73746174650056F554F03D0104FF4F
-:10EAD2006261736561F567F00C0005FF63656C6C3C
-:10EAE200730068F51EF205FF63656C6C2B006EF512
-:10EAF2007AF5029689CA04FF3264757074F501F0E2
-:10EB0200E1F0E1F026F005FF3264726F70007CF5EF
-:10EB120001F0EBF0EBF026F004FF7475636B84F503
-:10EB220001F0D6F0E1F026F003FF3E696E008DF5AC
-:10EB320067F0180003FF7061640095F501F0DAF5E3
-:10EB420046F02800AFF126F004FF656D69749BF56D
-:10EB52002EFC0E00F7FB03FC05FF656D69743F0098
-:10EB6200A5F52EFC1000F7FB03FC03FF6B65790093
-:10EB7200ADF52EFC1200F7FB03FC04FF6B65793F39
-:10EB8200B6F52EFC1400F7FB03FC02FF6470BEF521
-:10EB920081F04800CFFBD9FB05FF6568657265000F
-:10EBA200C6F581F04C00CFFBD9FB04FF68657265A6
-:10EBB200CDF581F04A00CFFBD9FB05FF616C6C6F8C
-:10EBC2007400D6F501F0DAF5AFF1B4FBDBF526F00F
-:10EBD20003FF62696E00DEF501F0A6FD6CF593F0AD
-:10EBE20026F007FF646563696D616C00E9F501F069
-:10EBF20046F00A006CF593F026F003FF6865780092
-:10EC0200F2F501F046F010006CF593F026F002FFE9
-:10EC1200626CFEF554F0200007FF7475726E6B652E
-:10EC2200790008F62EFC5400CFFBD9FB04FF2F6DB0
-:10EC32006F640DF61CF69C0109911991412F43272F
-:10EC420017FF04C0109500950F5F1F4F37FF04C0D8
-:10EC5200309520952F5F3F4FEE24FF1851E1001FA2
-:10EC6200111F5A9539F447FF04C0109500950F5FA4
-:10EC72001F4F0BC0EE1CFF1CE21AF30A20F4E20E37
-:10EC8200F31E8894ECCF0894EACFFA92EA92C80174
-:10EC9200BBC905FF752F6D6F640017F601F011F106
-:10ECA20066F108F1D4F126F006FF6E6567617465BE
-:10ECB2004AF601F00FF241F226F001FF2F0055F65D
-:10ECC20001F01BF602F126F003FF6D6F64005EF6A1
-:10ECD20001F01BF6EBF026F003FF6162730065F6AC
-:10ECE20001F0C3F050F226F003FF6D696E006DF67D
-:10ECF20001F080F58AF13FF07FF6D6F0EBF026F0D6
-:10ED020003FF6D61780075F601F080F580F13FF048
-:10ED12008BF6D6F0EBF026F006FF77697468696E21
-:10ED220081F601F0E1F0A5F111F1A5F108F16EF122
-:10ED320026F007FF746F7570706572008DF601F032
-:10ED4200C3F046F0610046F07B0092F63FF0ACF66D
-:10ED520046F0DF0025F226F007FF746F6C6F7765CF
-:10ED620072009AF601F0C3F046F0410046F05B00F3
-:10ED720092F63FF0BFF646F020002EF226F003FF97
-:10ED8200686C6400ADF654F03F0104FF686F6C6478
-:10ED9200C0F601F0C4F6C3F08BF047F2C3F011F1F4
-:10EDA200D6F093F008F19FF026F002FF3C23C6F65E
-:10EDB20001F09FF5C4F693F026F001FF2300D6F68A
-:10EDC20001F06CF58BF05EF7F3F046F00900E1F02C
-:10EDD20080F13FF0EFF646F00700AFF146F0300069
-:10EDE200AFF1CAF626F002FF2373DEF601F0E1F678
-:10EDF20080F52EF22CF13FF0F8F626F002FF233ECA
-:10EE0200F4F601F089F5C4F68BF09FF5E1F0A5F177
-:10EE120026F004FF7369676EFFF601F033F13FF0ED
-:10EE220015F746F02D00CAF626F003FF642E720095
-:10EE32000AF701F011F191F5EFFCD9F6F7F6F3F0CC
-:10EE42000EF702F708F1E1F0A5F106F816F826F040
-:10EE520002FF2E7216F701F011F182FD08F11AF786
-:10EE620026F002FF642E29F701F066F11AF7FDF78A
-:10EE720026F001FF2E0032F701F082FD35F726F071
-:10EE820003FF75642E003AF701F066F14EF7FDF7C5
-:10EE920026F004FF75642E7241F701F011F1D9F6E4
-:10EEA200F7F602F708F1E1F0A5F106F816F826F0F8
-:10EEB20006FF75642F6D6F644AF701F011F166F178
-:10EEC2001AF1D4F108F1D6F011F1D4F108F126F0DB
-:10EED20006FF64696769743F59F701F0A0F6C3F051
-:10EEE20046F039008AF146F0000125F2AFF1C3F095
-:10EEF20046F040018AF146F0070125F2A5F146F0FD
-:10EF02003000A5F1C3F06CF58BF06EF126F001F044
-:10EF12001AF1E7F708F1E1F041F216F2AFF141F22E
-:10EF220011F126F002FF732C69F701F0C3F09AF792
-:10EF320026F001F0DB01C3F016F291F51DF2A5F106
-:10EF420011F166F19A023FF0ADF7ADF2C3F08BF02A
-:10EF5200DB0179F5DBF2A7F708F13AF13FF0B4F7FC
-:10EF6200C3F0AAF0DB01EBF026F005FF69747970BB
-:10EF7200650093F701F0C3F016F291F51DF2A5F1C9
-:10EF820011F166F19A023FF0CFF7ADF2C3F0E3F36D
-:10EF9200C3F0DCF7D8F741F2DBF2C7F708F13AF138
-:10EFA2003FF0D6F7C3F0E3F3DCF7EBF026F001F025
-:10EFB2000BF3DCF726F001F046F0FF0025F2A9F58D
-:10EFC20026F006FF69636F756E74B6F701F0C3F041
-:10EFD20041F2D6F0E3F326F002FF6372E2F701F0AA
-:10EFE20046F00D00A9F546F00A00A9F526F005FF46
-:10EFF200737061636500EDF701F00BF6A9F526F079
-:10F0020006FF737061636573F8F701F066F185F6C8
-:10F01200C3F03FF010F8FDF747F235F009F8EBF0D6
-:10F0220026F004FF7479706501F801F079FD9A0207
-:10F032003FF021F8ADF2BEF2AAF0A9F5DBF21CF81E
-:10F0420026F001FF270012F801F0CFF9E7FAF2FAF1
-:10F05200C3F065FB9AFDD6F0E3F346F09AFB9AFD06
-:10F062002EF23FF037F846F0F3FF5CF8EBF026F0B3
-:10F0720007FF68616E646C65720022F867F00A002F
-:10F0820005FF63617463680039F801F09FF211F1C2
-:10F092003FF88BF011F188F23FF893F030F008F16D
-:10F0A2003FF893F008F1EBF066F126F005FF746883
-:10F0B200726F770041F801F0C3F02CF13FF063F872
-:10F0C200EBF026F03FF88BF092F208F13FF893F064
-:10F0D20008F1D6F011F1A8F2EBF008F126F005FFE5
-:10F0E20063736B69700057F801F011F1C3F03FF0E0
-:10F0F20084F8E1F0AAF01AF19AFD3FF084F8A1FD3C
-:10F10200C0F935F077F808F1EBF026F005FF6373EC
-:10F1120063616E0070F801F011F1E1F0C3F0AAF042
-:10F122001AF19AFD2CF13FF0A1F8D6F047F2D6F091
-:10F13200E1F033F12CF13FF0A1F841F235F08FF814
-:10F1420002F1E1F0A5F108F1EBF026F006FF6163B0
-:10F152006365707487F801F0E1F0AFF147F2E1F016
-:10F16200BAF5C3F0EDF82CF13FF0DFF8C3F046F04A
-:10F1720008009AFD3FF0CFF8EBF0F3F080F58AF14A
-:10F1820011F1F3F0F3F008F13FF0CDF8E5F847F2B2
-:10F1920011F1E1F008F16D0135F0DDF8C3F00BF685
-:10F1A20080F13FF0D6F8EBF00BF6C3F0A9F5E1F0F1
-:10F1B2009FF041F2E1F0790135F0B1F8EBF002F1A4
-:10F1C200D6F0A5F1F0F726F001F046F00800C3F002
-:10F1D200A9F5FDF7A9F526F001F0C3F046F00D0000
-:10F1E2009AFDD6F046F00A009AFD2EF226F006FFAE
-:10F1F200726566696C6CA7F82EFC1A00F7FB03FCBB
-:10F2020004FF63686172F8F801F0CFF9EBF0AAF03D
-:10F2120026F006FF6E756D62657201F901F06CF5FC
-:10F222008BF011F153F911F166F953F908F12EF24D
-:10F2320011F1C3F02CF13FF026F989F508F1EBF05A
-:10F2420008F16CF593F066F126F030F366F166F1A1
-:10F252003FF384F9CBF03FF048F9A1FD9AFD3FF06E
-:10F262003FF9AAF046F02E009AFD3FF040F908F16E
-:10F272003FF03CF9FCFCA6FD35F04EF9EBF089F5C8
-:10F2820008F1EBF008F16CF593F066F126F089F5E0
-:10F2920008F13FF04DF95AF6A1FD08F16CF593F033
-:10F2A2005DF126F001F0E1F0AAF046F02D009AFDA2
-:10F2B200C3F011F13FF05FF9A1FDC0F908F126F0AA
-:10F2C20061F00A00100002000A0001F0E1F0AAF069
-:10F2D20046F02300A5F1C3F066F146F0040092F671
-:10F2E2003FF07CF961F9AFF1E3F36CF593F0A1FD26
-:10F2F200C0F935F07DF9EBF026F007FF3E6E756D33
-:10F30200626572000AF901F0C3F03FF09CF9E1F086
-:10F31200AAF06EF72CF13FF090F9EBF026F011F124
-:10F3220020FD6CF58BF05E0108F1560120FDA1FD78
-:10F33200C0F935F085F926F005FF7061727365003A
-:10F342007EF901F011F1B6F999F58BF0C0F908F1E7
-:10F352008CF8C3F041F299F577F2A1FDC0F926F0DD
-:10F3620006FF736F757263659DF92EFC1600F7FB3D
-:10F3720003FC07FF2F737472696E6700B1F901F025
-:10F38200F3F0E1F0AFF1F3F0F3F0A5F126F00AFFAC
-:10F3920070617273652D6E616D65BAF901F00BF6DD
-:10F3A200D3F926F001F011F1B6F999F58BF0C0F915
-:10F3B2001AF175F808F18CF880F5AFF1B6F9EBF0B7
-:10F3C200A5F199F593F026F007FF66696E642D7832
-:10F3D2007400C8F901F046F0F7F946F05C001B042E
-:10F3E2002CF13FF0F6F989F566F126F001F011F102
-:10F3F20080F508F140FCC3F03FF004FA11F102F18C
-:10F4020002F108F15DF126F001F088F70300206FA8
-:10F412006B00BBF726F003FF2E6F6B00E5F92EFCA5
-:10F422001C00F7FB03FC01F088F702003E20F0F716
-:10F43200BBF726F006FF2E72656164790CFA2EFC8A
-:10F442002000F7FB03FC01F088F70400203F3F2077
-:10F45200BBF76CF58BF011F1F8F53DF799F58BF0F0
-:10F462003DF708F16CF593F026F006FF2E657272F7
-:10F472006F721BFA2EFC1E00F7FB03FC04FF717572
-:10F48200697436FA01F0D002D70293F0A4FAA8F216
-:10F49200B1FA92F2650366F58BF02CF13FF052FA65
-:10F4A20020FAFDF83FF064FA46F0CAFA46F8CBF0CB
-:10F4B2003FF064FAC3F046F0FEFF80F13FF062FADB
-:10F4C2003BFA35F044FA10FA35F04CFA05FF706158
-:10F4D200757365003FFA2EFC4101E3FBEDFB04FF6F
-:10F4E200636F6C6467FA75FAA4B622243324BB24D2
-:10F4F20024BEE0E0F1E02192E030E9F7F134D9F7FF
-:10F50200E3E4F1E02F010FEF0DBF048310E41EBF0F
-:10F512001583CFEAC683D0E4D783A7E9BAEF0C9468
-:10F5220005F004FF7761726D70FA01F06BFD46F031
-:10F532009AFB46F06CFA0EFC650313F643FA03FFDE
-:10F542007370300092FA81F00600F7FB03FC02FFB1
-:10F552007370A0FA67F0080003FF72703000A8FA17
-:10F5620001F0B5FA8BF026F067F0040005FF646540
-:10F5720070746800ADFA01F0A4FA9FF2A5F116F2D8
-:10F5820047F226F009FF696E746572707265740045
-:10F59200B7FA01F0CFF9C3F03FF0DBFAE7FAF2FA7B
-:10F5A20066F58BF03FF0D6FAC6FBE3F330F072FB60
-:10F5B20035F0CBFA89F526F010FF666F7274682D6C
-:10F5C2007265636F676E697A6572C3FA81F0500083
-:10F5D200CFFBD9FB09FF7265636F676E697A6500BD
-:10F5E200DDFA01F046F0FDFAD6F01B042CF13FF0F3
-:10F5F200FCFA89F565FB26F001F0F3F0F3F080F5F3
-:10F6020030F3F3F030F03FF3F3F0C3F065FB9AFD13
-:10F612003FF00EFBEBF066F126F002F102F15DF134
-:10F6220026F006FF64743A6E756DEBFA61F09AFB90
-:10F63200F101F10107FF64743A646E756D0012FB0B
-:10F6420061F09AFB92FD92FD07FF7265633A6E7557
-:10F652006D001BFB01F00FF93FF037FBA1FD9AFD96
-:10F662003FF035FB17FB26F021FB26F065FB26F069
-:10F6720008FF7265633A66696E6425FB01F0EBF977
-:10F68200C3F02CF13FF048FBEBF065FB26F04FFB9B
-:10F6920026F005FF64743A78740039FB61F053FB7D
-:10F6A20057FB92FD01F0EBF030F026F001F033F160
-:10F6B2003FF05DFBDB0126F030F026F007FF6474BB
-:10F6C2003A6E756C6C004AFB61F069FB69FB69FB81
-:10F6D20001F046F0F3FF5CF806FF3F737461636B61
-:10F6E2005FFB01F0BCFA33F13FF07AFB46F0FCFF1E
-:10F6F2005CF826F003FF766572006DFB01F028F5D9
-:10F70200BBF7FDF76CF58BF036F5F8F582FDD9F60F
-:10F71200E1F646F02E00CAF6F7F602F716F86CF597
-:10F7220093F0FDF73EF5BBF726F004FF6E6F6F70A6
-:10F732007BFB01F026F006FF756E7573656496FB20
-:10F7420001F09FF2DAF5A5F126F00200746F9CFB3E
-:10F7520001F025F88BFD66F58BF03FF0BAFBD00186
-:10F76200B4FBDB0126F001F008F1C3F0C6FB11F196
-:10F77200E3F3C3F0C6FBC6FBE3F330F026F007FF6A
-:10F78200692D63656C6C2B00A6FB01F041F226F03B
-:10F7920007FF4564656665724000C0FB01F0E3F354
-:10F7A20071F326F007FF4564656665722100C9FBA7
-:10F7B20001F0E3F34DF326F007FF526465666572CC
-:10F7C2004000D3FB01F0E3F38BF026F007FF526415
-:10F7D200656665722100DDFB01F0E3F393F026F02C
-:10F7E20007FF5564656665724000E7FB01F0E3F3CD
-:10F7F20014F3AFF18BF026F007FF5564656665726E
-:10F802002100F1FB01F0E3F314F3AFF193F026F0E2
-:10F8120006FF646566657221FDFB01F08BFDC3F096
-:10F82200C6FBC6FBE3F330F026F006FF64656665AF
-:10F83200724009FC01F08BFDC3F0C6FBE3F330F02C
-:10F8420026F007FF286465666572290016FC01F040
-:10F85200AD010D03D0012EFC26F00E942603C3F059
-:10F86200C6FBE3F330F030F026F00FFF73656172F0
-:10F8720063682D776F72646C6973740022FC01F007
-:10F8820011F166F146F055FC08F172FCC3F02CF15F
-:10F892003FF04FFC89F5EBF066F126F0C3F099FCDE
-:10F8A200D6F09301810126F001F011F1EBF080F521
-:10F8B2001AF18DFCA3FC3FF063FC08F1EBF066F15A
-:10F8C2005DF126F089F508F166F126F011FF7472F8
-:10F8D2006176657273652D776F72646C69737400FB
-:10F8E20036FC01F071F3C3F03FF083FC80F530F396
-:10F8F200D6F030F03FF3F3F03FF083FC8A04E3F3F9
-:10F9020035F074FC89F526F00BFF6E616D653E7370
-:10F912007472696E670067FC01F0E7F746F0FF005A
-:10F9220025F226F007FF6E66613E6366610085FC84
-:10F9320001F08A0441F226F008FF69636F6D70617D
-:10F94200726593FC01F011F1E1F008F125F13FF04D
-:10F95200AEFC89F5EBF05DF126F0D6F066F19A0285
-:10F962003FF0D1FCADF2E1F08BF0E1F0E3F3C3F054
-:10F9720046F000016EF13FF0C2FCD6F046F0FF0007
-:10F9820025F225F13FF0C9FC89F55DF1E6F226F09A
-:10F9920041F2D6F079F5D6F046F00200CCF2B4FC92
-:10F9A20089F566F126F001FF2A009DFC01F0B8F10D
-:10F9B200EBF026F001FF6A00D4FC01F088F246F079
-:10F9C2000700AFF18BF088F246F00900AFF18BF03F
-:10F9D200AFF126F004FF64616273DBFC01F0C3F057
-:10F9E20033F13FF0F5FCFCFC26F007FF646E65671F
-:10F9F20061746500EBFC01F056F4A1FD66F130F490
-:10FA020026F005FF636D6F766500F6FC08FDBF9377
-:10FA1200AF93E991F991A991B991092F082B21F09E
-:10FA22001D9111930197E1F7AF91BF91899199913E
-:10FA32000C9405F005FF32737761700002FD01F04E
-:10FA4200F3F011F1F3F008F126F00AFF726566692E
-:10FA52006C6C2D7469621BFD01F049FD46F05A0081
-:10FA6200ACF84FFD93F066F199F593F05DF126F055
-:10FA72000AFF736F757263652D74696226FD01F06A
-:10FA820049FD4FFD8BF026F003FF7469620039FDDA
-:10FA920054F06F0104FF2374696245FD54F0C901FB
-:10FAA20006FF65653E72616D4BFD01F066F1ADF2D8
-:10FAB200E1F071F3E1F093F079F5D6F079F5D6F053
-:10FAC200DBF259FD89F526F008FF696E69742D7223
-:10FAD200616D51FD01F046F07C0014F346F0220006
-:10FAE20016F256FD26F006FF626F756E647365FDB1
-:10FAF20001F0E1F0AFF1D6F026F003FF733E6400AF
-:10FB020074FD01F0C3F033F126F005FF3E626F642D
-:10FB120079007EFD42F20800326C69746572616C94
-:10FB220086FD01F0D6F0F101F10126F001FF3D0062
-:10FB32008CFD01F0A5F12CF126F001FF310097FDBB
-:10FB420054F0010001FF32009EFD54F0020002FF5A
-:08FB52002D31A3FD54F0FFFF6B
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p1284-16.lst b/amforth-6.5/appl/eval-pollin/p1284-16.lst
deleted file mode 100644
index 00d54e8..0000000
--- a/amforth-6.5/appl/eval-pollin/p1284-16.lst
+++ /dev/null
@@ -1,10495 +0,0 @@
-
-AVRASM ver. 2.1.52 p1284-16.asm Sun Apr 30 20:10:15 2017
-
-p1284-16.asm(5): Including file '../../avr8\preamble.inc'
-../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm'
-../../avr8\macros.asm(6): Including file '../../avr8\user.inc'
-../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega1284p\device.asm'
-../../avr8/devices/atmega1284p\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m1284Pdef.inc'
-p1284-16.asm(14): Including file '../../avr8\drivers/usart_0.asm'
-../../avr8\drivers/usart_0.asm(32): Including file '../../avr8\drivers/usart_common.asm'
-../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm'
-../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm'
-../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm'
-../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm'
-p1284-16.asm(19): Including file '../../avr8\drivers/1wire.asm'
-p1284-16.asm(21): Including file '../../avr8\amforth.asm'
-../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm'
-../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc'
-../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm'
-../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm'
-../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm'
-../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm'
-../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm'
-../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm'
-../../avr8\dict/rww.inc(9): Including file '../../avr8\dict/appl_8k.inc'
-../../avr8\dict/appl_8k.inc(1): Including file '../../avr8\dict/compiler1.inc'
-../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm'
-../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm'
-../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm'
-../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm'
-../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm'
-../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm'
-../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm'
-../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm'
-../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm'
-../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm'
-../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm'
-../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm'
-../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm'
-../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm'
-../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm'
-../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm'
-../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm'
-../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm'
-../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm'
-../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm'
-../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm'
-../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm'
-../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm'
-../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm'
-../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm'
-../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm'
-../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm'
-../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm'
-../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm'
-../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm'
-../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm'
-../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm'
-../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm'
-../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm'
-../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm'
-../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm'
-../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm'
-../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm'
-../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm'
-../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm'
-../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm'
-../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm'
-../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm'
-../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm'
-../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm'
-../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm'
-../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm'
-../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm'
-../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm'
-../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm'
-../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm'
-../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm'
-../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm'
-../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm'
-../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm'
-../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm'
-../../avr8\dict/compiler1.inc(67): Including file '../../common\words/get-order.asm'
-../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-order.asm'
-../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm'
-../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm'
-../../avr8\amforth.asm(15): Including file 'dict_appl.inc'
-dict_appl.inc(3): Including file '../../common\words/dot-s.asm'
-dict_appl.inc(4): Including file '../../avr8\words/spirw.asm'
-dict_appl.inc(5): Including file '../../avr8\words/n-spi.asm'
-dict_appl.inc(6): Including file 'words/applturnkey.asm'
-dict_appl.inc(7): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm'
-../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm'
-../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm'
-../../avr8\dict/compiler2.inc(12): Including file '../../common\words/set-order.asm'
-../../avr8\dict/compiler2.inc(13): Including file '../../common\words/set-recognizer.asm'
-../../avr8\dict/compiler2.inc(14): Including file '../../common\words/get-recognizer.asm'
-../../avr8\dict/compiler2.inc(15): Including file '../../avr8\words/code.asm'
-../../avr8\dict/compiler2.inc(16): Including file '../../avr8\words/end-code.asm'
-../../avr8\dict/compiler2.inc(17): Including file '../../avr8\words/marker.asm'
-../../avr8\dict/compiler2.inc(18): Including file '../../common\words/postpone.asm'
-dict_appl.inc(8): Including file '../../avr8\words/2r_fetch.asm'
-../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm'
-../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc'
-../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm'
-../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm'
-../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm'
-../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm'
-../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm'
-../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm'
-../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm'
-../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm'
-../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm'
-../../avr8\dict/nrww.inc(15): Including file '../../avr8\words/fetch.asm'
-../../avr8\dict/nrww.inc(16): Including file '../../avr8\words/store.asm'
-../../avr8\dict/nrww.inc(17): Including file '../../avr8\words/cstore.asm'
-../../avr8\dict/nrww.inc(18): Including file '../../avr8\words/cfetch.asm'
-../../avr8\dict/nrww.inc(19): Including file '../../avr8\words/fetch-u.asm'
-../../avr8\dict/nrww.inc(20): Including file '../../avr8\words/store-u.asm'
-../../avr8\dict/nrww.inc(23): Including file '../../avr8\words/dup.asm'
-../../avr8\dict/nrww.inc(24): Including file '../../avr8\words/qdup.asm'
-../../avr8\dict/nrww.inc(25): Including file '../../avr8\words/swap.asm'
-../../avr8\dict/nrww.inc(26): Including file '../../avr8\words/over.asm'
-../../avr8\dict/nrww.inc(27): Including file '../../avr8\words/drop.asm'
-../../avr8\dict/nrww.inc(28): Including file '../../avr8\words/rot.asm'
-../../avr8\dict/nrww.inc(29): Including file '../../avr8\words/nip.asm'
-../../avr8\dict/nrww.inc(31): Including file '../../avr8\words/r_from.asm'
-../../avr8\dict/nrww.inc(32): Including file '../../avr8\words/to_r.asm'
-../../avr8\dict/nrww.inc(33): Including file '../../avr8\words/r_fetch.asm'
-../../avr8\dict/nrww.inc(36): Including file '../../common\words/not-equal.asm'
-../../avr8\dict/nrww.inc(37): Including file '../../avr8\words/equalzero.asm'
-../../avr8\dict/nrww.inc(38): Including file '../../avr8\words/lesszero.asm'
-../../avr8\dict/nrww.inc(39): Including file '../../avr8\words/greaterzero.asm'
-../../avr8\dict/nrww.inc(40): Including file '../../avr8\words/d-greaterzero.asm'
-../../avr8\dict/nrww.inc(41): Including file '../../avr8\words/d-lesszero.asm'
-../../avr8\dict/nrww.inc(43): Including file '../../avr8\words/true.asm'
-../../avr8\dict/nrww.inc(44): Including file '../../avr8\words/zero.asm'
-../../avr8\dict/nrww.inc(45): Including file '../../avr8\words/uless.asm'
-../../avr8\dict/nrww.inc(46): Including file '../../common\words/u-greater.asm'
-../../avr8\dict/nrww.inc(47): Including file '../../avr8\words/less.asm'
-../../avr8\dict/nrww.inc(48): Including file '../../avr8\words/greater.asm'
-../../avr8\dict/nrww.inc(50): Including file '../../avr8\words/log2.asm'
-../../avr8\dict/nrww.inc(51): Including file '../../avr8\words/minus.asm'
-../../avr8\dict/nrww.inc(52): Including file '../../avr8\words/plus.asm'
-../../avr8\dict/nrww.inc(53): Including file '../../avr8\words/mstar.asm'
-../../avr8\dict/nrww.inc(54): Including file '../../avr8\words/umslashmod.asm'
-../../avr8\dict/nrww.inc(55): Including file '../../avr8\words/umstar.asm'
-../../avr8\dict/nrww.inc(57): Including file '../../avr8\words/invert.asm'
-../../avr8\dict/nrww.inc(58): Including file '../../avr8\words/2slash.asm'
-../../avr8\dict/nrww.inc(59): Including file '../../avr8\words/2star.asm'
-../../avr8\dict/nrww.inc(60): Including file '../../avr8\words/and.asm'
-../../avr8\dict/nrww.inc(61): Including file '../../avr8\words/or.asm'
-../../avr8\dict/nrww.inc(62): Including file '../../avr8\words/xor.asm'
-../../avr8\dict/nrww.inc(64): Including file '../../avr8\words/1plus.asm'
-../../avr8\dict/nrww.inc(65): Including file '../../avr8\words/1minus.asm'
-../../avr8\dict/nrww.inc(66): Including file '../../common\words/q-negate.asm'
-../../avr8\dict/nrww.inc(67): Including file '../../avr8\words/lshift.asm'
-../../avr8\dict/nrww.inc(68): Including file '../../avr8\words/rshift.asm'
-../../avr8\dict/nrww.inc(69): Including file '../../avr8\words/plusstore.asm'
-../../avr8\dict/nrww.inc(71): Including file '../../avr8\words/rpfetch.asm'
-../../avr8\dict/nrww.inc(72): Including file '../../avr8\words/rpstore.asm'
-../../avr8\dict/nrww.inc(73): Including file '../../avr8\words/spfetch.asm'
-../../avr8\dict/nrww.inc(74): Including file '../../avr8\words/spstore.asm'
-../../avr8\dict/nrww.inc(76): Including file '../../avr8\words/dodo.asm'
-../../avr8\dict/nrww.inc(77): Including file '../../avr8\words/i.asm'
-../../avr8\dict/nrww.inc(78): Including file '../../avr8\words/doplusloop.asm'
-../../avr8\dict/nrww.inc(79): Including file '../../avr8\words/doloop.asm'
-../../avr8\dict/nrww.inc(80): Including file '../../avr8\words/unloop.asm'
-../../avr8\dict/nrww.inc(84): Including file '../../avr8\words/cmove_g.asm'
-../../avr8\dict/nrww.inc(85): Including file '../../avr8\words/byteswap.asm'
-../../avr8\dict/nrww.inc(86): Including file '../../avr8\words/up.asm'
-../../avr8\dict/nrww.inc(87): Including file '../../avr8\words/1ms.asm'
-../../avr8\dict/nrww.inc(88): Including file '../../avr8\words/2to_r.asm'
-../../avr8\dict/nrww.inc(89): Including file '../../avr8\words/2r_from.asm'
-../../avr8\dict/nrww.inc(91): Including file '../../avr8\words/store-e.asm'
-../../avr8\dict/nrww.inc(92): Including file '../../avr8\words/fetch-e.asm'
-../../avr8\dict/nrww.inc(93): Including file '../../avr8\words/store-i.asm'
-../../avr8\dict/nrww.inc(97): Including file '../../avr8\words/store-i_nrww.asm'
-../../avr8\dict/nrww.inc(99): Including file '../../avr8\words/fetch-i.asm'
-../../avr8\dict/nrww.inc(102): Including file '../../avr8\dict/core_8k.inc'
-../../avr8\dict/core_8k.inc(2): Including file '../../avr8\words/n_to_r.asm'
-../../avr8\dict/core_8k.inc(3): Including file '../../avr8\words/n_r_from.asm'
-../../avr8\dict/core_8k.inc(5): Including file '../../avr8\words/d-2star.asm'
-../../avr8\dict/core_8k.inc(6): Including file '../../avr8\words/d-2slash.asm'
-../../avr8\dict/core_8k.inc(7): Including file '../../avr8\words/d-plus.asm'
-../../avr8\dict/core_8k.inc(8): Including file '../../avr8\words/d-minus.asm'
-../../avr8\dict/core_8k.inc(9): Including file '../../avr8\words/d-invert.asm'
-../../avr8\dict/core_8k.inc(10): Including file '../../common\words/u-dot.asm'
-../../avr8\dict/core_8k.inc(11): Including file '../../common\words/u-dot-r.asm'
-../../avr8\dict/core_8k.inc(13): Including file '../../common\words/show-wordlist.asm'
-../../avr8\dict/core_8k.inc(14): Including file '../../common\words/words.asm'
-../../avr8\dict/core_8k.inc(15): Including file '../../avr8\dict/interrupt.inc'
-../../avr8\dict/interrupt.inc(8): Including file '../../avr8\words/int-on.asm'
-../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-off.asm'
-../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-store.asm'
-../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-fetch.asm'
-../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-trap.asm'
-../../avr8\dict/interrupt.inc(14): Including file '../../avr8\words/isr-exec.asm'
-../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-end.asm'
-../../avr8\dict/core_8k.inc(17): Including file '../../common\words/pick.asm'
-../../avr8\dict/core_8k.inc(18): Including file '../../common\words/dot-quote.asm'
-../../avr8\dict/core_8k.inc(19): Including file '../../common\words/squote.asm'
-../../avr8\dict/core_8k.inc(21): Including file '../../avr8\words/fill.asm'
-../../avr8\dict/core_8k.inc(23): Including file '../../avr8\words/environment.asm'
-../../avr8\dict/core_8k.inc(24): Including file '../../avr8\words/env-wordlists.asm'
-../../avr8\dict/core_8k.inc(25): Including file '../../avr8\words/env-slashpad.asm'
-../../avr8\dict/core_8k.inc(26): Including file '../../common\words/env-slashhold.asm'
-../../avr8\dict/core_8k.inc(27): Including file '../../common\words/env-forthname.asm'
-../../avr8\dict/core_8k.inc(28): Including file '../../common\words/env-forthversion.asm'
-../../avr8\dict/core_8k.inc(29): Including file '../../common\words/env-cpu.asm'
-../../avr8\dict/core_8k.inc(30): Including file '../../avr8\words/env-mcuinfo.asm'
-../../avr8\dict/core_8k.inc(31): Including file '../../common\words/env-usersize.asm'
-../../avr8\dict/core_8k.inc(33): Including file '../../common\words/f_cpu.asm'
-../../avr8\dict/core_8k.inc(34): Including file '../../avr8\words/state.asm'
-../../avr8\dict/core_8k.inc(35): Including file '../../common\words/base.asm'
-../../avr8\dict/core_8k.inc(37): Including file '../../avr8\words/cells.asm'
-../../avr8\dict/core_8k.inc(38): Including file '../../avr8\words/cellplus.asm'
-../../avr8\dict/core_8k.inc(40): Including file '../../common\words/2dup.asm'
-../../avr8\dict/core_8k.inc(41): Including file '../../common\words/2drop.asm'
-../../avr8\dict/core_8k.inc(43): Including file '../../common\words/tuck.asm'
-../../avr8\dict/core_8k.inc(45): Including file '../../common\words/to-in.asm'
-../../avr8\dict/core_8k.inc(46): Including file '../../common\words/pad.asm'
-../../avr8\dict/core_8k.inc(47): Including file '../../common\words/emit.asm'
-../../avr8\dict/core_8k.inc(48): Including file '../../common\words/emitq.asm'
-../../avr8\dict/core_8k.inc(49): Including file '../../common\words/key.asm'
-../../avr8\dict/core_8k.inc(50): Including file '../../common\words/keyq.asm'
-../../avr8\dict/core_8k.inc(52): Including file '../../avr8\words/dp.asm'
-../../avr8\dict/core_8k.inc(53): Including file '../../avr8\words/ehere.asm'
-../../avr8\dict/core_8k.inc(54): Including file '../../avr8\words/here.asm'
-../../avr8\dict/core_8k.inc(55): Including file '../../avr8\words/allot.asm'
-../../avr8\dict/core_8k.inc(57): Including file '../../common\words/bin.asm'
-../../avr8\dict/core_8k.inc(58): Including file '../../common\words/decimal.asm'
-../../avr8\dict/core_8k.inc(59): Including file '../../common\words/hex.asm'
-../../avr8\dict/core_8k.inc(60): Including file '../../common\words/bl.asm'
-../../avr8\dict/core_8k.inc(62): Including file '../../avr8\words/turnkey.asm'
-../../avr8\dict/core_8k.inc(64): Including file '../../avr8\words/slashmod.asm'
-../../avr8\dict/core_8k.inc(65): Including file '../../avr8\words/uslashmod.asm'
-../../avr8\dict/core_8k.inc(66): Including file '../../avr8\words/negate.asm'
-../../avr8\dict/core_8k.inc(67): Including file '../../common\words/slash.asm'
-../../avr8\dict/core_8k.inc(68): Including file '../../common\words/mod.asm'
-../../avr8\dict/core_8k.inc(69): Including file '../../common\words/abs.asm'
-../../avr8\dict/core_8k.inc(70): Including file '../../common\words/min.asm'
-../../avr8\dict/core_8k.inc(71): Including file '../../common\words/max.asm'
-../../avr8\dict/core_8k.inc(72): Including file '../../common\words/within.asm'
-../../avr8\dict/core_8k.inc(74): Including file '../../common\words/to-upper.asm'
-../../avr8\dict/core_8k.inc(75): Including file '../../common\words/to-lower.asm'
-../../avr8\dict/core_8k.inc(77): Including file '../../avr8\words/hld.asm'
-../../avr8\dict/core_8k.inc(78): Including file '../../common\words/hold.asm'
-../../avr8\dict/core_8k.inc(79): Including file '../../common\words/less-sharp.asm'
-../../avr8\dict/core_8k.inc(80): Including file '../../common\words/sharp.asm'
-../../avr8\dict/core_8k.inc(81): Including file '../../common\words/sharp-s.asm'
-../../avr8\dict/core_8k.inc(82): Including file '../../common\words/sharp-greater.asm'
-../../avr8\dict/core_8k.inc(83): Including file '../../common\words/sign.asm'
-../../avr8\dict/core_8k.inc(84): Including file '../../common\words/d-dot-r.asm'
-../../avr8\dict/core_8k.inc(85): Including file '../../common\words/dot-r.asm'
-../../avr8\dict/core_8k.inc(86): Including file '../../common\words/d-dot.asm'
-../../avr8\dict/core_8k.inc(87): Including file '../../common\words/dot.asm'
-../../avr8\dict/core_8k.inc(88): Including file '../../common\words/ud-dot.asm'
-../../avr8\dict/core_8k.inc(89): Including file '../../common\words/ud-dot-r.asm'
-../../avr8\dict/core_8k.inc(90): Including file '../../common\words/ud-slash-mod.asm'
-../../avr8\dict/core_8k.inc(91): Including file '../../common\words/digit-q.asm'
-../../avr8\dict/core_8k.inc(93): Including file '../../avr8\words/do-sliteral.asm'
-../../avr8\dict/core_8k.inc(94): Including file '../../avr8\words/scomma.asm'
-../../avr8\dict/core_8k.inc(95): Including file '../../avr8\words/itype.asm'
-../../avr8\dict/core_8k.inc(96): Including file '../../avr8\words/icount.asm'
-../../avr8\dict/core_8k.inc(97): Including file '../../common\words/cr.asm'
-../../avr8\dict/core_8k.inc(98): Including file '../../common\words/space.asm'
-../../avr8\dict/core_8k.inc(99): Including file '../../common\words/spaces.asm'
-../../avr8\dict/core_8k.inc(100): Including file '../../common\words/type.asm'
-../../avr8\dict/core_8k.inc(101): Including file '../../common\words/tick.asm'
-../../avr8\dict/core_8k.inc(103): Including file '../../common\words/handler.asm'
-../../avr8\dict/core_8k.inc(104): Including file '../../common\words/catch.asm'
-../../avr8\dict/core_8k.inc(105): Including file '../../common\words/throw.asm'
-../../avr8\dict/core_8k.inc(107): Including file '../../common\words/cskip.asm'
-../../avr8\dict/core_8k.inc(108): Including file '../../common\words/cscan.asm'
-../../avr8\dict/core_8k.inc(109): Including file '../../common\words/accept.asm'
-../../avr8\dict/core_8k.inc(110): Including file '../../common\words/refill.asm'
-../../avr8\dict/core_8k.inc(111): Including file '../../common\words/char.asm'
-../../avr8\dict/core_8k.inc(112): Including file '../../common\words/number.asm'
-../../avr8\dict/core_8k.inc(113): Including file '../../common\words/q-sign.asm'
-../../avr8\dict/core_8k.inc(114): Including file '../../common\words/set-base.asm'
-../../avr8\dict/core_8k.inc(115): Including file '../../common\words/to-number.asm'
-../../avr8\dict/core_8k.inc(116): Including file '../../common\words/parse.asm'
-../../avr8\dict/core_8k.inc(117): Including file '../../common\words/source.asm'
-../../avr8\dict/core_8k.inc(118): Including file '../../common\words/slash-string.asm'
-../../avr8\dict/core_8k.inc(119): Including file '../../common\words/parse-name.asm'
-../../avr8\dict/core_8k.inc(120): Including file '../../common\words/find-xt.asm'
-../../avr8\dict/core_8k.inc(122): Including file '../../common\words/prompt-ok.asm'
-../../avr8\dict/core_8k.inc(123): Including file '../../common\words/prompt-ready.asm'
-../../avr8\dict/core_8k.inc(124): Including file '../../common\words/prompt-error.asm'
-../../avr8\dict/core_8k.inc(126): Including file '../../common\words/quit.asm'
-../../avr8\dict/core_8k.inc(127): Including file '../../avr8\words/pause.asm'
-../../avr8\dict/core_8k.inc(128): Including file '../../avr8\words/cold.asm'
-../../avr8\dict/core_8k.inc(129): Including file '../../common\words/warm.asm'
-../../avr8\dict/core_8k.inc(131): Including file '../../avr8\words/sp0.asm'
-../../avr8\dict/core_8k.inc(132): Including file '../../avr8\words/rp0.asm'
-../../avr8\dict/core_8k.inc(133): Including file '../../common\words/depth.asm'
-../../avr8\dict/core_8k.inc(134): Including file '../../common\words/interpret.asm'
-../../avr8\dict/core_8k.inc(135): Including file '../../avr8\words/forth-recognizer.asm'
-../../avr8\dict/core_8k.inc(136): Including file '../../common\words/recognize.asm'
-../../avr8\dict/core_8k.inc(137): Including file '../../common\words/rec-intnum.asm'
-../../avr8\dict/core_8k.inc(138): Including file '../../common\words/rec-find.asm'
-../../avr8\dict/core_8k.inc(139): Including file '../../common\words/dt-null.asm'
-../../avr8\dict/core_8k.inc(141): Including file '../../common\words/q-stack.asm'
-../../avr8\dict/core_8k.inc(142): Including file '../../common\words/ver.asm'
-../../avr8\dict/core_8k.inc(144): Including file '../../common\words/noop.asm'
-../../avr8\dict/core_8k.inc(145): Including file '../../avr8\words/unused.asm'
-../../avr8\dict/core_8k.inc(147): Including file '../../common\words/to.asm'
-../../avr8\dict/core_8k.inc(148): Including file '../../avr8\words/i-cellplus.asm'
-../../avr8\dict/core_8k.inc(150): Including file '../../avr8\words/edefer-fetch.asm'
-../../avr8\dict/core_8k.inc(151): Including file '../../avr8\words/edefer-store.asm'
-../../avr8\dict/core_8k.inc(152): Including file '../../common\words/rdefer-fetch.asm'
-../../avr8\dict/core_8k.inc(153): Including file '../../common\words/rdefer-store.asm'
-../../avr8\dict/core_8k.inc(154): Including file '../../common\words/udefer-fetch.asm'
-../../avr8\dict/core_8k.inc(155): Including file '../../common\words/udefer-store.asm'
-../../avr8\dict/core_8k.inc(156): Including file '../../common\words/defer-store.asm'
-../../avr8\dict/core_8k.inc(157): Including file '../../common\words/defer-fetch.asm'
-../../avr8\dict/core_8k.inc(158): Including file '../../avr8\words/do-defer.asm'
-../../avr8\dict/core_8k.inc(160): Including file '../../common\words/search-wordlist.asm'
-../../avr8\dict/core_8k.inc(161): Including file '../../common\words/traverse-wordlist.asm'
-../../avr8\dict/core_8k.inc(162): Including file '../../common\words/name2string.asm'
-../../avr8\dict/core_8k.inc(163): Including file '../../avr8\words/nfa2cfa.asm'
-../../avr8\dict/core_8k.inc(164): Including file '../../avr8\words/icompare.asm'
-../../avr8\dict/core_8k.inc(166): Including file '../../common\words/star.asm'
-../../avr8\dict/core_8k.inc(167): Including file '../../avr8\words/j.asm'
-../../avr8\dict/core_8k.inc(169): Including file '../../avr8\words/dabs.asm'
-../../avr8\dict/core_8k.inc(170): Including file '../../avr8\words/dnegate.asm'
-../../avr8\dict/core_8k.inc(171): Including file '../../avr8\words/cmove.asm'
-../../avr8\dict/core_8k.inc(172): Including file '../../common\words/2swap.asm'
-../../avr8\dict/core_8k.inc(174): Including file '../../common\words/tib.asm'
-../../avr8\dict/core_8k.inc(176): Including file '../../avr8\words/init-ram.asm'
-../../avr8\dict/core_8k.inc(177): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/core_8k.inc(178): Including file '../../common\words/bounds.asm'
-../../avr8\dict/core_8k.inc(179): Including file '../../common\words/s-to-d.asm'
-../../avr8\dict/core_8k.inc(180): Including file '../../avr8\words/to-body.asm'
-../../avr8\dict/nrww.inc(112): Including file '../../common\words/2literal.asm'
-../../avr8\dict/nrww.inc(113): Including file '../../avr8\words/equal.asm'
-../../avr8\dict/nrww.inc(114): Including file '../../common\words/num-constants.asm'
-../../avr8\amforth.asm(25): Including file 'dict_appl_core.inc'
-../../avr8\amforth.asm(36): Including file '../../avr8\amforth-eeprom.inc'
-
-
- ; file see ../template/template.asm. You may want to
- ; copy that file to this one and edit it afterwards.
-
- .include "preamble.inc"
-
- .include "macros.asm"
-
- .set DICT_COMPILER2 = 0 ;
- .set cpu_msp430 = 0
- .set cpu_avr8 = 1
-
- .include "user.inc"
-
- ;
-
- ; used by the multitasker
- .set USER_STATE = 0
- .set USER_FOLLOWER = 2
-
- ; stackpointer, used by mulitasker
- .set USER_RP = 4
- .set USER_SP0 = 6
- .set USER_SP = 8
-
- ; excpection handling
- .set USER_HANDLER = 10
-
- ; numeric IO
- .set USER_BASE = 12
-
- ; character IO
- .set USER_EMIT = 14
- .set USER_EMITQ = 16
- .set USER_KEY = 18
- .set USER_KEYQ = 20
-
- .set USER_SOURCE = 22
- .set USER_TO_IN = 24
- .set USER_REFILL = 26
-
- .set USER_P_OK = 28
- .set USER_P_ERR = 30
- .set USER_P_RDY = 32
-
- .set SYSUSERSIZE = 34
- ;
-
- .def zerol = r2
- .def zeroh = r3
- .def upl = r4
- .def uph = r5
-
- .def al = r6
- .def ah = r7
- .def bl = r8
- .def bh = r9
-
- ; internal
- .def mcu_boot = r10
- .def isrflag = r11
-
- .def temp4 = r14
- .def temp5 = r15
-
- .def temp0 = r16
- .def temp1 = r17
- .def temp2 = r18
- .def temp3 = r19
-
- .def temp6 = r20
- .def temp7 = r21
-
- .def tosl = r24
- .def tosh = r25
-
- .def wl = r22
- .def wh = r23
-
- .macro loadtos
- ld tosl, Y+
- ld tosh, Y+
- .endmacro
-
- .macro savetos
- st -Y, tosh
- st -Y, tosl
- .endmacro
-
- .macro in_
- .if (@1 < $40)
- in @0,@1
- .else
- lds @0,@1
- .endif
- .endmacro
-
- .macro out_
- .if (@0 < $40)
- out @0,@1
- .else
- sts @0,@1
- .endif
- .endmacro
-
- .macro sbi_
- .if (@0 < $40)
- sbi @0,@1
- .else
- in_ @2,@0
- ori @2,exp2(@1)
- out_ @0,@2
- .endif
- .endmacro
-
- .macro cbi_
- .if (@0 < $40)
- cbi @0,@1
- .else
- in_ @2,@0
- andi @2,~(exp2(@1))
- out_ @0,@2
- .endif
- .endmacro
-
- .macro jmp_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- jmp @0
- .else
- rjmp @0
- .endif
- .else
- jmp @0
- .endif
- .endmacro
- .macro call_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- call @0
- .else
- rcall @0
- .endif
- .else
- call @0
- .endif
- .endmacro
-
- ; F_CPU
- ; µsec 16000000 14745600 8000000 1000000
- ; 1 16 14,74 8 1
- ; 10 160 147,45 80 10
- ; 100 1600 1474,56 800 100
- ; 1000 16000 14745,6 8000 1000
- ;
- ; cycles = µsec * f_cpu / 1e6
- ; n_loops=cycles/5
- ;
- ; cycles already used will be subtracted from the delay
- ; the waittime resolution is 1 cycle (delay from exact to +1 cycle)
- ; the maximum delay at 20MHz (50ns/clock) is 38350ns
- ; waitcount register must specify an immediate register
- ;
- ; busy waits a specfied amount of microseconds
- .macro delay
- .set cycles = ( ( @0 * F_CPU ) / 1000000 )
- .if (cycles > ( 256 * 255 * 4 + 2))
- .error "MACRO delay - too many cycles to burn"
- .else
- .if (cycles > 6)
- .set loop_cycles = (cycles / 4)
- ldi zl,low(loop_cycles)
- ldi zh,high(loop_cycles)
- sbiw Z, 1
- brne pc-1
- .set cycles = (cycles - (loop_cycles * 4))
- .endif
- .if (cycles > 0)
- .if (cycles & 4)
- rjmp pc+1
- rjmp pc+1
- .endif
- .if (cycles & 2)
- rjmp pc+1
- .endif
- .if (cycles & 1)
- nop
- .endif
- .endif
- .endif
- .endmacro
-
- ; portability macros, they come from the msp430 branches
-
- .macro DEST
- .dw @0
- .endm
-
- ; controller specific file selected via include
- ; directory definition when calling the assembler (-I)
- .include "device.asm"
-
- ; generated automatically, do not edit
-
- .list
-
- .equ ramstart = 256
- .equ CELLSIZE = 2
- .macro readflashcell
- clr temp7
- lsl zl
- rol zh
- rol temp7
- out_ RAMPZ, temp7
- elpm @0, Z+
- elpm @1, Z+
- .endmacro
- .macro writeflashcell
- clr temp7
- lsl zl
- rol zh
- rol temp7
- out_ RAMPZ, temp7
- .endmacro
- .set WANT_ANALOG_COMPARATOR = 0
- .set WANT_USART0 = 0
- .set WANT_PORTA = 0
- .set WANT_PORTB = 0
- .set WANT_PORTC = 0
- .set WANT_PORTD = 0
- .set WANT_TIMER_COUNTER_0 = 0
- .set WANT_TIMER_COUNTER_1 = 0
- .set WANT_TIMER_COUNTER_2 = 0
- .set WANT_TIMER_COUNTER_3 = 0
- .set WANT_BOOT_LOAD = 0
- .set WANT_EXTERNAL_INTERRUPT = 0
- .set WANT_AD_CONVERTER = 0
- .set WANT_JTAG = 0
- .set WANT_EEPROM = 0
- .set WANT_TWI = 0
- .set WANT_USART1 = 0
- .set WANT_SPI = 0
- .set WANT_WATCHDOG = 0
- .set WANT_CPU = 0
- .equ intvecsize = 2 ; please verify; flash size: 131072 bytes
- .equ pclen = 2 ; please verify
- .overlap
- .org 2
-000002 d139 rcall isr ; External Interrupt Request 0
- .org 4
-000004 d137 rcall isr ; External Interrupt Request 1
- .org 6
-000006 d135 rcall isr ; External Interrupt Request 2
- .org 8
-000008 d133 rcall isr ; Pin Change Interrupt Request 0
- .org 10
-00000a d131 rcall isr ; Pin Change Interrupt Request 1
- .org 12
-00000c d12f rcall isr ; Pin Change Interrupt Request 2
- .org 14
-00000e d12d rcall isr ; Pin Change Interrupt Request 3
- .org 16
-000010 d12b rcall isr ; Watchdog Time-out Interrupt
- .org 18
-000012 d129 rcall isr ; Timer/Counter2 Compare Match A
- .org 20
-000014 d127 rcall isr ; Timer/Counter2 Compare Match B
- .org 22
-000016 d125 rcall isr ; Timer/Counter2 Overflow
- .org 24
-000018 d123 rcall isr ; Timer/Counter1 Capture Event
- .org 26
-00001a d121 rcall isr ; Timer/Counter1 Compare Match A
- .org 28
-00001c d11f rcall isr ; Timer/Counter1 Compare Match B
- .org 30
-00001e d11d rcall isr ; Timer/Counter1 Overflow
- .org 32
-000020 d11b rcall isr ; Timer/Counter0 Compare Match A
- .org 34
-000022 d119 rcall isr ; Timer/Counter0 Compare Match B
- .org 36
-000024 d117 rcall isr ; Timer/Counter0 Overflow
- .org 38
-000026 d115 rcall isr ; SPI Serial Transfer Complete
- .org 40
-000028 d113 rcall isr ; USART0, Rx Complete
- .org 42
-00002a d111 rcall isr ; USART0 Data register Empty
- .org 44
-00002c d10f rcall isr ; USART0, Tx Complete
- .org 46
-00002e d10d rcall isr ; Analog Comparator
- .org 48
-000030 d10b rcall isr ; ADC Conversion Complete
- .org 50
-000032 d109 rcall isr ; EEPROM Ready
- .org 52
-000034 d107 rcall isr ; 2-wire Serial Interface
- .org 54
-000036 d105 rcall isr ; Store Program Memory Read
- .org 56
-000038 d103 rcall isr ; USART1 RX complete
- .org 58
-00003a d101 rcall isr ; USART1 Data Register Empty
- .org 60
-00003c d0ff rcall isr ; USART1 TX complete
- .org 62
-00003e d0fd rcall isr ; Timer/Counter3 Capture Event
- .org 64
-000040 d0fb rcall isr ; Timer/Counter3 Compare Match A
- .org 66
-000042 d0f9 rcall isr ; Timer/Counter3 Compare Match B
- .org 68
-000044 d0f7 rcall isr ; Timer/Counter3 Overflow
- .equ INTVECTORS = 35
- .nooverlap
-
- ; compatability layer (maybe empty)
-
- ; controller data area, environment query mcu-info
- mcu_info:
- mcu_ramsize:
-000045 4000 .dw 16384
- mcu_eepromsize:
-000046 1000 .dw 4096
- mcu_maxdp:
-000047 ffff .dw 65535
- mcu_numints:
-000048 0023 .dw 35
- mcu_name:
-000049 000b .dw 11
-00004a 5441
-00004b 656d
-00004c 6167
-00004d 3231
-00004e 3438
-00004f 0050 .db "ATmega1284P",0
- .set codestart=pc
-
- ; some defaults, change them in your application master file
- ; see template.asm for an example
-
- ; enabling Interrupts, disabling them affects
- ; other settings as well.
- .set WANT_INTERRUPTS = 1
-
- ; count the number of interrupts individually.
- ; requires a lot of RAM (one byte per interrupt)
- ; disabled by default.
- .set WANT_INTERRUPT_COUNTERS = 0
-
- ; receiving is asynchronously, so an interrupt queue is useful.
- .set WANT_ISR_RX = 1
-
- ; case insensitve dictionary lookup.
- .set WANT_IGNORECASE = 0
-
- ; map all memories to one address space. Details in the
- ; technical guide
- .set WANT_UNIFIED = 0
-
- ; terminal input buffer
- .set TIB_SIZE = 90 ; ANS94 needs at least 80 characters per line
-
- ; USER variables *in addition* to system ones
- .set APPUSERSIZE = 10 ; size of application specific user area in bytes
-
- ; addresses of various data segments
- .set rstackstart = RAMEND ; start address of return stack, grows downward
- .set stackstart = RAMEND - 80 ; start address of data stack, grows downward
- ; change only if you know what to you do
- .set NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8
- .set NUMRECOGNIZERS = 4 ; total number of recognizers, two are always used.
-
- ; 10 per mille (1 per cent) is ok.
- .set BAUD = 38400
- .set BAUD_MAXERROR = 10
-
- ; Dictionary setup
- .set VE_HEAD = $0000
- .set VE_ENVHEAD = $0000
-
- .set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
- ; cpu clock in hertz
- .equ F_CPU = 16000000
- .set BAUD_MAXERROR = 30
- .equ TIMER_INT = OVF2addr
-
- .include "drivers/usart_0.asm"
-
- .equ BAUDRATE_HIGH = UBRR0H
- .equ USART_C = UCSR0C
- .equ USART_B = UCSR0B
- .equ USART_A = UCSR0A
- .equ USART_DATA = UDR0
- .ifndef URXCaddr
- .equ URXCaddr = URXC0addr
- .equ UDREaddr = UDRE0addr
- .endif
-
- .equ bm_USART_RXRD = 1 << RXC0
- .equ bm_USART_TXRD = 1 << UDRE0
- .equ bm_ENABLE_TX = 1 << TXEN0
- .equ bm_ENABLE_RX = 1 << RXEN0
- .equ bm_ENABLE_INT_RX = 1<<RXCIE0
- .equ bm_ENABLE_INT_TX = 1<<UDRIE0
-
- .equ bm_USARTC_en = 0
- .equ bm_ASYNC = 0 << 6
- .equ bm_SYNC = 1 << 6
- .equ bm_NO_PARITY = 0 << 4
- .equ bm_EVEN_PARITY = 2 << 4
- .equ bm_ODD_PARITY = 3 << 4
- .equ bm_1STOPBIT = 0 << 3
- .equ bm_2STOPBIT = 1 << 3
- .equ bm_5BIT = 0 << 1
- .equ bm_6BIT = 1 << 1
- .equ bm_7BIT = 2 << 1
- .equ bm_8BIT = 3 << 1
-
- .include "drivers/usart_common.asm"
-
- .set USART_C_VALUE = bm_ASYNC | bm_NO_PARITY | bm_1STOPBIT | bm_8BIT
- .if WANT_INTERRUPTS == 0
- .if WANT_ISR_RX == 1
- .endif
- .endif
-
- .if WANT_ISR_RX == 1
- .set USART_B_VALUE = bm_ENABLE_TX | bm_ENABLE_RX | bm_ENABLE_INT_RX
- .include "drivers/usart-rx-buffer.asm"
-
-
- ; sizes have to be powers of 2!
- .equ usart_rx_size = $10
- .equ usart_rx_mask = usart_rx_size - 1
- .dseg
-000100 usart_rx_data: .byte usart_rx_size
-000110 usart_rx_in: .byte 1
-000111 usart_rx_out: .byte 1
- .cseg
-
- VE_TO_RXBUF:
-000050 ff07 .dw $ff07
-000051 723e
-000052 2d78
-000053 7562
-000054 0066 .db ">rx-buf",0
-000055 0000 .dw VE_HEAD
- .set VE_HEAD = VE_TO_RXBUF
- XT_TO_RXBUF:
-000056 0057 .dw PFA_rx_tobuf
- PFA_rx_tobuf:
-000057 2f08 mov temp0, tosl
-000058 9110 0110 lds temp1, usart_rx_in
-00005a e0e0 ldi zl, low(usart_rx_data)
-00005b e0f1 ldi zh, high(usart_rx_data)
-00005c 0fe1 add zl, temp1
-00005d 1df3 adc zh, zeroh
-00005e 8300 st Z, temp0
-00005f 9513 inc temp1
-000060 701f andi temp1,usart_rx_mask
-000061 9310 0110 sts usart_rx_in, temp1
-000063 9189
-000064 9199 loadtos
-000065 940c f005 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; setup with
- ; ' isr-rx URXCaddr int!
- VE_ISR_RX:
-000067 ff06 .dw $ff06
-000068 7369
-000069 2d72
-00006a 7872 .db "isr-rx"
-00006b 0050 .dw VE_HEAD
- .set VE_HEAD = VE_ISR_RX
- XT_ISR_RX:
-00006c f001 .dw DO_COLON
- usart_rx_isr:
-00006d f046 .dw XT_DOLITERAL
-00006e 00c6 .dw usart_data
-00006f f0aa .dw XT_CFETCH
-000070 f0c3 .dw XT_DUP
-000071 f046 .dw XT_DOLITERAL
-000072 0003 .dw 3
-000073 fd9a .dw XT_EQUAL
-000074 f03f .dw XT_DOCONDBRANCH
-000075 0077 .dw usart_rx_isr1
-000076 fa74 .dw XT_COLD
- usart_rx_isr1:
-000077 0056 .dw XT_TO_RXBUF
-000078 f026 .dw XT_EXIT
-
- ; ( -- ) Hardware Access
- ; R( --)
- ; initialize usart
- ;VE_USART_INIT_RXBUFFER:
- ; .dw $ff0x
- ; .db "+usart-buffer"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_USART_INIT_RXBUFFER
- XT_USART_INIT_RX_BUFFER:
-000079 f001 .dw DO_COLON
- PFA_USART_INIT_RX_BUFFER: ; ( -- )
-00007a f046
-00007b 006c .dw XT_DOLITERAL, XT_ISR_RX
-00007c f046
-00007d 0028 .dw XT_DOLITERAL, URXCaddr
-00007e f4a2 .dw XT_INTSTORE
-
-00007f f046 .dw XT_DOLITERAL
-000080 0100 .dw usart_rx_data
-000081 f046 .dw XT_DOLITERAL
-000082 0016 .dw usart_rx_size + 6
-000083 f166 .dw XT_ZERO
-000084 f4ea .dw XT_FILL
-000085 f026 .dw XT_EXIT
-
- ; ( -- c)
- ; MCU
- ; get 1 character from input queue, wait if needed using interrupt driver
- VE_RX_BUFFER:
-000086 ff06 .dw $ff06
-000087 7872
-000088 622d
-000089 6675 .db "rx-buf"
-00008a 0067 .dw VE_HEAD
- .set VE_HEAD = VE_RX_BUFFER
- XT_RX_BUFFER:
-00008b f001 .dw DO_COLON
- PFA_RX_BUFFER:
-00008c 00a6 .dw XT_RXQ_BUFFER
-00008d f03f .dw XT_DOCONDBRANCH
-00008e 008c .dw PFA_RX_BUFFER
-00008f f046 .dw XT_DOLITERAL
-000090 0111 .dw usart_rx_out
-000091 f0aa .dw XT_CFETCH
-000092 f0c3 .dw XT_DUP
-000093 f046 .dw XT_DOLITERAL
-000094 0100 .dw usart_rx_data
-000095 f1af .dw XT_PLUS
-000096 f0aa .dw XT_CFETCH
-000097 f0d6 .dw XT_SWAP
-000098 f241 .dw XT_1PLUS
-000099 f046 .dw XT_DOLITERAL
-00009a 000f .dw usart_rx_mask
-00009b f225 .dw XT_AND
-00009c f046 .dw XT_DOLITERAL
-00009d 0111 .dw usart_rx_out
-00009e f09f .dw XT_CSTORE
-00009f f026 .dw XT_EXIT
-
- ; ( -- f)
- ; MCU
- ; check if unread characters are in the input queue
- VE_RXQ_BUFFER:
-0000a0 ff07 .dw $ff07
-0000a1 7872
-0000a2 2d3f
-0000a3 7562
-0000a4 0066 .db "rx?-buf",0
-0000a5 0086 .dw VE_HEAD
- .set VE_HEAD = VE_RXQ_BUFFER
- XT_RXQ_BUFFER:
-0000a6 f001 .dw DO_COLON
- PFA_RXQ_BUFFER:
-0000a7 fa6c .dw XT_PAUSE
-0000a8 f046 .dw XT_DOLITERAL
-0000a9 0111 .dw usart_rx_out
-0000aa f0aa .dw XT_CFETCH
-0000ab f046 .dw XT_DOLITERAL
-0000ac 0110 .dw usart_rx_in
-0000ad f0aa .dw XT_CFETCH
-0000ae f125 .dw XT_NOTEQUAL
-0000af f026 .dw XT_EXIT
- ; .include "drivers/timer-usart-isr.asm"
- .set XT_RX = XT_RX_BUFFER
- .set XT_RXQ = XT_RXQ_BUFFER
- .set XT_USART_INIT_RX = XT_USART_INIT_RX_BUFFER
- .else
- .endif
-
- .include "words/usart-tx-poll.asm"
-
- ; MCU
- ; check availability and send one character to the terminal using register poll
- VE_TX_POLL:
-0000b0 ff07 .dw $ff07
-0000b1 7874
-0000b2 702d
-0000b3 6c6f
-0000b4 006c .db "tx-poll",0
-0000b5 00a0 .dw VE_HEAD
- .set VE_HEAD = VE_TX_POLL
- XT_TX_POLL:
-0000b6 f001 .dw DO_COLON
- PFA_TX_POLL:
- ; wait for data ready
-0000b7 00c4 .dw XT_TXQ_POLL
-0000b8 f03f .dw XT_DOCONDBRANCH
-0000b9 00b7 .dw PFA_TX_POLL
- ; send to usart
-0000ba f046 .dw XT_DOLITERAL
-0000bb 00c6 .dw USART_DATA
-0000bc f09f .dw XT_CSTORE
-0000bd f026 .dw XT_EXIT
-
- ; ( -- f) MCU
- ; MCU
- ; check if a character can be send using register poll
- VE_TXQ_POLL:
-0000be ff08 .dw $ff08
-0000bf 7874
-0000c0 2d3f
-0000c1 6f70
-0000c2 6c6c .db "tx?-poll"
-0000c3 00b0 .dw VE_HEAD
- .set VE_HEAD = VE_TXQ_POLL
- XT_TXQ_POLL:
-0000c4 f001 .dw DO_COLON
- PFA_TXQ_POLL:
-0000c5 fa6c .dw XT_PAUSE
-0000c6 f046 .dw XT_DOLITERAL
-0000c7 00c0 .dw USART_A
-0000c8 f0aa .dw XT_CFETCH
-0000c9 f046 .dw XT_DOLITERAL
-0000ca 0020 .dw bm_USART_TXRD
-0000cb f225 .dw XT_AND
-0000cc f026 .dw XT_EXIT
- .set XT_TX = XT_TX_POLL
- .set XT_TXQ = XT_TXQ_POLL
- .set XT_USART_INIT_TX = 0
-
- .include "words/ubrr.asm"
-
- ; MCU
- ; returns usart UBRR settings
- VE_UBRR:
-0000cd ff04 .dw $ff04
-0000ce 6275
-0000cf 7272 .db "ubrr"
-0000d0 00be .dw VE_HEAD
- .set VE_HEAD = VE_UBRR
- XT_UBRR:
-0000d1 f081 .dw PFA_DOVALUE1
- PFA_UBRR: ; ( -- )
-0000d2 009e .dw EE_UBRRVAL
-0000d3 fbcf .dw XT_EDEFERFETCH
-0000d4 fbd9 .dw XT_EDEFERSTORE
- .include "words/usart.asm"
-
- ; MCU
- ; initialize usart
- VE_USART:
-0000d5 ff06 .dw $ff06
-0000d6 752b
-0000d7 6173
-0000d8 7472 .db "+usart"
-0000d9 00cd .dw VE_HEAD
- .set VE_HEAD = VE_USART
- XT_USART:
-0000da f001 .dw DO_COLON
- PFA_USART: ; ( -- )
-
-0000db f046 .dw XT_DOLITERAL
-0000dc 0098 .dw USART_B_VALUE
-0000dd f046 .dw XT_DOLITERAL
-0000de 00c1 .dw USART_B
-0000df f09f .dw XT_CSTORE
-
-0000e0 f046 .dw XT_DOLITERAL
-0000e1 0006 .dw USART_C_VALUE
-0000e2 f046 .dw XT_DOLITERAL
-0000e3 00c2 .dw USART_C | bm_USARTC_en
-0000e4 f09f .dw XT_CSTORE
-
-0000e5 00d1 .dw XT_UBRR
-0000e6 f0c3 .dw XT_DUP
-0000e7 f30b .dw XT_BYTESWAP
-0000e8 f046 .dw XT_DOLITERAL
-0000e9 00c5 .dw BAUDRATE_HIGH
-0000ea f09f .dw XT_CSTORE
-0000eb f046 .dw XT_DOLITERAL
-0000ec 00c4 .dw BAUDRATE_LOW
-0000ed f09f .dw XT_CSTORE
- .if XT_USART_INIT_RX!=0
-0000ee 0079 .dw XT_USART_INIT_RX
- .endif
- .if XT_USART_INIT_TX!=0
- .endif
-
-0000ef f026 .dw XT_EXIT
-
- ; settings for 1wire interface
- .equ OW_PORT=PORTB
- .EQU OW_BIT=4
- .include "drivers/1wire.asm"
-
- ; B. J. Rodriguez (MSP 430)
- ; Matthias Trute (AVR Atmega)
- ; COPYRIGHT
- ; (c) 2012 Bradford J. Rodriguez for the 430 code and API
-
- ; adapted 430 assembly code to AVR
- ; wishlist:
- ; use a configurable pin at runtime, compatible with bitnames.frt
- ; no external pull up, no external power supply for devices
- ; ???
- ;
- ;.EQU OW_BIT=4
- ;.equ OW_PORT=PORTE
- .set OW_DDR=(OW_PORT-1)
- .set OW_PIN=(OW_DDR-1)
-
- ;****f* 1W.RESET
- ; NAME
- ; 1W.RESET
- ; SYNOPSIS
- ; 1W.RESET ( -- f ) Initialize 1-wire devices; return true if present
- ; DESCRIPTION
- ; This configures the port pin used by the 1-wire interface, and then
- ; sends an "initialize" sequence to the 1-wire devices. If any device
- ; is present, it will be detected.
- ;
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" (drive output low) for >480 usec.
- ; b) Output "1" (let output float).
- ; c) After 15 to 60 usec, device will drive pin low for 60 to 240 usec.
- ; So, wait 75 usec and sample input.
- ; d) Leave output high (floating) for at least 480 usec.
- ;******
- ; ( -- f )
- ; Hardware
- ; Initialize 1-wire devices; return true if present
- VE_OW_RESET:
-0000f0 ff08 .dw $ff08
-0000f1 7731
-0000f2 722e
-0000f3 7365
-0000f4 7465 .db "1w.reset"
-0000f5 00d5 .dw VE_HEAD
- .set VE_HEAD = VE_OW_RESET
- XT_OW_RESET:
-0000f6 00f7 .dw PFA_OW_RESET
- PFA_OW_RESET:
-0000f7 939a
-0000f8 938a savetos
- ; setup to output
-0000f9 9a24 sbi OW_DDR, OW_BIT
- ; Pull output low
-0000fa 982c cbi OW_PORT, OW_BIT
- ; Delay >480 usec
-0000fb e8e0
-0000fc e0f7
-0000fd 9731
-0000fe f7f1 DELAY 480
- ; Critical timing period, disable interrupts.
-0000ff b71f in temp1, SREG
-000100 94f8 cli
- ; Pull output high
-000101 9a2c sbi OW_PORT, OW_BIT
- ; make pin input, sends "1"
-000102 9824 cbi OW_DDR, OW_BIT
-000103 e0e0
-000104 e0f1
-000105 9731
-000106 f7f1 DELAY 64 ; delayB
- ; Sample input pin, set TOS if input is zero
-000107 b183 in tosl, OW_PIN
-000108 ff84 sbrs tosl, OW_BIT
-000109 ef9f ser tosh
- ; End critical timing period, enable interrupts
-00010a bf1f out SREG, temp1
- ; release bus
-00010b 9824 cbi OW_DDR, OW_BIT
-00010c 982c cbi OW_PORT, OW_BIT
-
- ; Delay rest of 480 usec
-00010d e8e0
-00010e e0f6
-00010f 9731
-000110 f7f1 DELAY 416
- ; we now have the result flag in TOS
-000111 2f89 mov tosl, tosh
-000112 940c f005 jmp_ DO_NEXT
-
- ;****f* 1W.SLOT
- ; NAME
- ; 1W.SLOT
- ; SYNOPSIS
- ; 1W.SLOT ( c -- c' ) Write and read one bit to/from 1-wire.
- ; DESCRIPTION
- ; The "touch byte" function is described in Dallas App Note 74.
- ; It outputs a byte to the 1-wire pin, LSB first, and reads back
- ; the state of the 1-wire pin after a suitable delay.
- ; To read a byte, output $FF and read the reply data.
- ; To write a byte, output that byte and discard the reply.
- ;
- ; This function performs one bit of the "touch" operation --
- ; one read/write "slot" in Dallas jargon. Perform this eight
- ; times in a row to get the "touch byte" function.
- ;
- ; PARAMETERS
- ; The input parameter is xxxxxxxxbbbbbbbo where
- ; 'xxxxxxxx' are don't cares,
- ; 'bbbbbbb' are bits to be shifted down, and
- ; 'o' is the bit to be output in the slot. This must be 1
- ; to create a read slot.
- ;
- ; The returned value is xxxxxxxxibbbbbbb where
- ; 'xxxxxxxx' are not known (the input shifted down 1 position),
- ; 'i' is the bit read during the slot. This has no meaning
- ; if it was a write slot.
- ; 'bbbbbbb' are the 7 input bits, shifted down one position.
- ;
- ; This peculiar parameter usage allows OWTOUCH to be written as
- ; OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT
- ;
- ; NOTES
- ; Interrupts are disabled during each bit.
-
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" for start period. (> 1 us, < 15 us, typ. 6 us*)
- ; b) Output data bit (0 or 1), open drain
- ; c) After MS from start of cycle, sample input (15 to 60 us, typ. 25 us*)
- ; d) After write-0 period from start of cycle, output "1" (>60 us)
- ; e) After recovery period, loop or return. (> 1 us)
- ; For writes, DS18B20 samples input 15 to 60 usec from start of cycle.
- ; * "Typical" values are per App Note 132 for a 300m cable length.
-
- ; --------- -------------------------------
- ; \ / /
- ; -------------------------------
- ; a b c d e
- ; | 6us | 19us | 35us | 2us |
- ;******
- ; ( c -- c' )
- ; Hardware
- ; Write and read one bit to/from 1-wire.
- VE_OW_SLOT:
-000114 ff07 .dw $ff07
-000115 7731
-000116 732e
-000117 6f6c
-000118 0074 .db "1w.slot",0
-000119 00f0 .dw VE_HEAD
- .set VE_HEAD = VE_OW_SLOT
- XT_OW_SLOT:
-00011a 011b .dw PFA_OW_SLOT
- PFA_OW_SLOT:
- ; pull low
-00011b 982c cbi OW_PORT, OW_BIT
-00011c 9a24 sbi OW_DDR, OW_BIT
- ; disable interrupts
-00011d b71f in temp1, SREG
-00011e 94f8 cli
-00011f e1e8
-000120 e0f0
-000121 9731
-000122 f7f1 DELAY 6 ; DELAY A
- ; check bit
-000123 9488 clc
-000124 9587 ror tosl
-000125 f410 brcc PFA_OW_SLOT0 ; a 0 keeps the bus low
- ; release bus, a 1 is written
-000126 9a2c sbi OW_PORT, OW_BIT
-000127 9824 cbi OW_DDR, OW_BIT
- PFA_OW_SLOT0:
- ; sample the input (no action required if zero)
-000128 e2e4
-000129 e0f0
-00012a 9731
-00012b f7f1 DELAY 9 ; wait DELAY E to sample
-00012c b103 in temp0, OW_PIN
-00012d fd04 sbrc temp0, OW_BIT
-00012e 6880 ori tosl, $80
-
-00012f ecec
-000130 e0f0
-000131 9731
-000132 f7f1 DELAY 51 ; DELAY B
-000133 9a2c sbi OW_PORT, OW_BIT ; release bus
-000134 9824 cbi OW_DDR, OW_BIT
-000135 e0e8
-000136 e0f0
-000137 9731
-000138 f7f1 delay 2
- ; re-enable interrupts
-000139 bf1f out SREG, temp1
-00013a 940c f005 jmp_ DO_NEXT
-
- .include "amforth.asm"
-
- ;;;;
- ;;;; GPL V2 (only)
-
- .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2
-
- .set corepc = pc
- .org $0000
-000000 940c fa75 jmp_ PFA_COLD
-
- .org corepc
- .include "drivers/generic-isr.asm"
-
- .eseg
-000000 intvec: .byte INTVECTORS * CELLSIZE
- .dseg
-000112 intcnt: .byte INTVECTORS
- .cseg
-
- ; interrupt routine gets called (again) by rcall! This gives the
- ; address of the int-vector on the stack.
- isr:
-00013c 920a st -Y, r0
-00013d b60f in r0, SREG
-00013e 920a st -Y, r0
- .if (pclen==3)
- .endif
-00013f 900f pop r0
-000140 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall)
-000141 940a dec r0
- .if intvecsize == 1 ;
- .endif
-000142 2cb0 mov isrflag, r0
-000143 93ff push zh
-000144 93ef push zl
-000145 e1e2 ldi zl, low(intcnt)
-000146 e0f1 ldi zh, high(intcnt)
-000147 9406 lsr r0 ; we use byte addresses in the counter array, not words
-000148 0de0 add zl, r0
-000149 1df3 adc zh, zeroh
-00014a 8000 ld r0, Z
-00014b 9403 inc r0
-00014c 8200 st Z, r0
-00014d 91ef pop zl
-00014e 91ff pop zh
-
-00014f 9009 ld r0, Y+
-000150 be0f out SREG, r0
-000151 9009 ld r0, Y+
-000152 9508 ret ; returns the interrupt, the rcall stack frame is removed!
- ; no reti here, see words/isr-end.asm
- ; lower part of the dictionary
- .include "dict/rww.inc"
-
-
- ; Arithmetics
- ; add a number to a double cell
- VE_MPLUS:
-000153 ff02 .dw $ff02
-000154 2b6d .db "m+"
-000155 0114 .dw VE_HEAD
- .set VE_HEAD = VE_MPLUS
- XT_MPLUS:
-000156 f001 .dw DO_COLON
- PFA_MPLUS:
-000157 fd82 .dw XT_S2D
-000158 f430 .dw XT_DPLUS
-000159 f026 .dw XT_EXIT
- .include "words/ud-star.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSTAR:
-00015a ff03 .dw $ff03
-00015b 6475
-../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte
-00015c 002a .db "ud*"
-00015d 0153 .dw VE_HEAD
- .set VE_HEAD = VE_UDSTAR
- XT_UDSTAR:
-00015e f001 .dw DO_COLON
- PFA_UDSTAR:
-
- .endif
- ;Z UD* ud1 d2 -- ud3 32*16->32 multiply
- ; XT_DUP >R UM* DROP XT_SWAP R> UM* ROT + ;
-
-00015f f0c3
-000160 f111
-000161 f1f2
-000162 f0eb .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP
-000163 f0d6
-000164 f108
-000165 f1f2
-000166 f0f3
-000167 f1af
-000168 f026 .DW XT_SWAP,XT_R_FROM,XT_UMSTAR,XT_ROT,XT_PLUS,XT_EXIT
- .include "words/umax.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMAX:
-000169 ff04 .dw $ff04
-00016a 6d75
-00016b 7861 .db "umax"
-00016c 015a .dw VE_HEAD
- .set VE_HEAD = VE_UMAX
- XT_UMAX:
-00016d f001 .dw DO_COLON
- PFA_UMAX:
- .endif
-
-00016e f580
-00016f f16e .DW XT_2DUP,XT_ULESS
-000170 f03f .dw XT_DOCONDBRANCH
-000171 0173 DEST(UMAX1)
-000172 f0d6 .DW XT_SWAP
-000173 f0eb UMAX1: .DW XT_DROP
-000174 f026 .dw XT_EXIT
- .include "words/umin.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMIN:
-000175 ff04 .dw $ff04
-000176 6d75
-000177 6e69 .db "umin"
-000178 0169 .dw VE_HEAD
- .set VE_HEAD = VE_UMIN
- XT_UMIN:
-000179 f001 .dw DO_COLON
- PFA_UMIN:
- .endif
-00017a f580
-00017b f179 .DW XT_2DUP,XT_UGREATER
-00017c f03f .dw XT_DOCONDBRANCH
-00017d 017f DEST(UMIN1)
-00017e f0d6 .DW XT_SWAP
-00017f f0eb UMIN1: .DW XT_DROP
-000180 f026 .dw XT_EXIT
- .include "words/immediate-q.asm"
-
- ; Tools
- ; return +1 if immediate, -1 otherwise, flag from name>flags
- ;VE_IMMEDIATEQ:
- ; .dw $ff06
- ; .db "immediate?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_IMMEDIATEQ
- XT_IMMEDIATEQ:
-000181 f001 .dw DO_COLON
- PFA_IMMEDIATEQ:
-000182 f046 .dw XT_DOLITERAL
-000183 8000 .dw $8000
-000184 f225 .dw XT_AND
-000185 f12c .dw XT_ZEROEQUAL
-000186 f03f .dw XT_DOCONDBRANCH
-000187 018a DEST(IMMEDIATEQ1)
-000188 fda1 .dw XT_ONE
-000189 f026 .dw XT_EXIT
- IMMEDIATEQ1:
- ; not immediate
-00018a f15d .dw XT_TRUE
-00018b f026 .dw XT_EXIT
- .include "words/name2flags.asm"
-
- ; Tools
- ; get the flags from a name token
- VE_NAME2FLAGS:
-00018c ff0a .dw $ff0a
-00018d 616e
-00018e 656d
-00018f 663e
-000190 616c
-000191 7367 .db "name>flags"
-000192 0175 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2FLAGS
- XT_NAME2FLAGS:
-000193 f001 .dw DO_COLON
- PFA_NAME2FLAGS:
-000194 f3e3 .dw XT_FETCHI ; skip to link field
-000195 f046 .dw XT_DOLITERAL
-000196 ff00 .dw $ff00
-000197 f225 .dw XT_AND
-000198 f026 .dw XT_EXIT
-
- .if AMFORTH_NRWW_SIZE > 8000
- .include "dict/appl_8k.inc"
-
-
- .include "words/newest.asm"
-
- ; System Variable
- ; system state
- VE_NEWEST:
-000199 ff06 .dw $ff06
-00019a 656e
-00019b 6577
-00019c 7473 .db "newest"
-00019d 018c .dw VE_HEAD
- .set VE_HEAD = VE_NEWEST
- XT_NEWEST:
-00019e f054 .dw PFA_DOVARIABLE
- PFA_NEWEST:
-00019f 0135 .dw ram_newest
-
- .dseg
-000135 ram_newest: .byte 4
- .include "words/latest.asm"
-
- ; System Variable
- ; system state
- VE_LATEST:
-0001a0 ff06 .dw $ff06
-0001a1 616c
-0001a2 6574
-0001a3 7473 .db "latest"
-0001a4 0199 .dw VE_HEAD
- .set VE_HEAD = VE_LATEST
- XT_LATEST:
-0001a5 f054 .dw PFA_DOVARIABLE
- PFA_LATEST:
-0001a6 0139 .dw ram_latest
-
- .dseg
-000139 ram_latest: .byte 2
- .include "words/do-create.asm"
-
- ; Compiler
- ; parse the input and create an empty vocabulary entry without XT and data field (PF)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOCREATE:
-0001a7 ff08 .dw $ff08
-0001a8 6328
-0001a9 6572
-0001aa 7461
-0001ab 2965 .db "(create)"
-0001ac 01a0 .dw VE_HEAD
- .set VE_HEAD = VE_DOCREATE
- XT_DOCREATE:
-0001ad f001 .dw DO_COLON
- PFA_DOCREATE:
- .endif
-0001ae f9cf
-0001af 0304 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid)
-0001b0 f0c3
-0001b1 019e
-0001b2 f579
-0001b3 f093 .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid
-0001b4 02e9
-0001b5 019e
-0001b6 f093 .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt
-0001b7 f026 .DW XT_EXIT
- .include "words/backslash.asm"
-
- ; Compiler
- ; everything up to the end of the current line is a comment
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BACKSLASH:
-0001b8 0001 .dw $0001
-0001b9 005c .db $5c,0
-0001ba 01a7 .dw VE_HEAD
- .set VE_HEAD = VE_BACKSLASH
- XT_BACKSLASH:
-0001bb f001 .dw DO_COLON
- PFA_BACKSLASH:
- .endif
-0001bc f9b6 .dw XT_SOURCE
-0001bd f102 .dw XT_NIP
-0001be f599 .dw XT_TO_IN
-0001bf f093 .dw XT_STORE
-0001c0 f026 .dw XT_EXIT
- .include "words/l-paren.asm"
-
- ; Compiler
- ; skip everything up to the closing bracket on the same line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LPAREN:
-0001c1 0001 .dw $0001
-0001c2 0028 .db "(" ,0
-0001c3 01b8 .dw VE_HEAD
- .set VE_HEAD = VE_LPAREN
- XT_LPAREN:
-0001c4 f001 .dw DO_COLON
- PFA_LPAREN:
- .endif
-0001c5 f046 .dw XT_DOLITERAL
-0001c6 0029 .dw ')'
-0001c7 f9a2 .dw XT_PARSE
-0001c8 f589 .dw XT_2DROP
-0001c9 f026 .dw XT_EXIT
-
- .include "words/compile.asm"
-
- ; Dictionary
- ; read the following cell from the dictionary and append it to the current dictionary position.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COMPILE:
-0001ca ff07 .dw $ff07
-0001cb 6f63
-0001cc 706d
-0001cd 6c69
-0001ce 0065 .db "compile",0
-0001cf 01c1 .dw VE_HEAD
- .set VE_HEAD = VE_COMPILE
- XT_COMPILE:
-0001d0 f001 .dw DO_COLON
- PFA_COMPILE:
- .endif
-0001d1 f108 .dw XT_R_FROM
-0001d2 f0c3 .dw XT_DUP
-0001d3 fbc6 .dw XT_ICELLPLUS
-0001d4 f111 .dw XT_TO_R
-0001d5 f3e3 .dw XT_FETCHI
-0001d6 01db .dw XT_COMMA
-0001d7 f026 .dw XT_EXIT
- .include "words/comma.asm"
-
- ; Dictionary
- ; compile 16 bit into flash at DP
- VE_COMMA:
-0001d8 ff01 .dw $ff01
-0001d9 002c .db ',',0 ; ,
-0001da 01ca .dw VE_HEAD
- .set VE_HEAD = VE_COMMA
- XT_COMMA:
-0001db f001 .dw DO_COLON
- PFA_COMMA:
-0001dc f5c9 .dw XT_DP
-0001dd f385 .dw XT_STOREI
-0001de f5c9 .dw XT_DP
-0001df f241 .dw XT_1PLUS
-0001e0 fbb4 .dw XT_DOTO
-0001e1 f5ca .dw PFA_DP
-0001e2 f026 .dw XT_EXIT
- .include "words/brackettick.asm"
-
- ; Compiler
- ; what ' does in the interpreter mode, do in colon definitions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETTICK:
-0001e3 0003 .dw $0003
-0001e4 275b
-0001e5 005d .db "[']",0
-0001e6 01d8 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETTICK
- XT_BRACKETTICK:
-0001e7 f001 .dw DO_COLON
- PFA_BRACKETTICK:
- .endif
-0001e8 f825 .dw XT_TICK
-0001e9 01f1 .dw XT_LITERAL
-0001ea f026 .dw XT_EXIT
-
-
- .include "words/literal.asm"
-
- ; Compiler
- ; compile a literal in colon defintions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LITERAL:
-0001eb 0007 .dw $0007
-0001ec 696c
-0001ed 6574
-0001ee 6172
-0001ef 006c .db "literal",0
-0001f0 01e3 .dw VE_HEAD
- .set VE_HEAD = VE_LITERAL
- XT_LITERAL:
-0001f1 f001 .dw DO_COLON
- PFA_LITERAL:
- .endif
-0001f2 01d0 .DW XT_COMPILE
-0001f3 f046 .DW XT_DOLITERAL
-0001f4 01db .DW XT_COMMA
-0001f5 f026 .DW XT_EXIT
- .include "words/sliteral.asm"
-
- ; String
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLITERAL:
-0001f6 0008 .dw $0008
-0001f7 6c73
-0001f8 7469
-0001f9 7265
-0001fa 6c61 .db "sliteral"
-0001fb 01eb .dw VE_HEAD
- .set VE_HEAD = VE_SLITERAL
- XT_SLITERAL:
-0001fc f001 .dw DO_COLON
- PFA_SLITERAL:
- .endif
-0001fd 01d0 .dw XT_COMPILE
-0001fe f788 .dw XT_DOSLITERAL ; ( -- addr n)
-0001ff f796 .dw XT_SCOMMA
-000200 f026 .dw XT_EXIT
- .include "words/g-mark.asm"
-
- ; Compiler
- ; places current dictionary position for backward resolves
- ;VE_GMARK:
- ; .dw $ff05
- ; .db ">mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GMARK
- XT_GMARK:
-000201 f001 .dw DO_COLON
- PFA_GMARK:
-000202 f5c9 .dw XT_DP
-000203 01d0 .dw XT_COMPILE
-000204 ffff .dw -1 ; ffff does not erase flash
-000205 f026 .dw XT_EXIT
- .include "words/g-resolve.asm"
-
- ; Compiler
- ; resolve backward jumps
- ;VE_GRESOLVE:
- ; .dw $ff08
- ; .db ">resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GRESOLVE
- XT_GRESOLVE:
-000206 f001 .dw DO_COLON
- PFA_GRESOLVE:
-000207 fb72 .dw XT_QSTACK
-000208 f5c9 .dw XT_DP
-000209 f0d6 .dw XT_SWAP
-00020a f385 .dw XT_STOREI
-00020b f026 .dw XT_EXIT
- .include "words/l_mark.asm"
-
- ; Compiler
- ; place destination for backward branch
- ;VE_LMARK:
- ; .dw $ff05
- ; .db "<mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LMARK
- XT_LMARK:
-00020c f001 .dw DO_COLON
- PFA_LMARK:
-00020d f5c9 .dw XT_DP
-00020e f026 .dw XT_EXIT
- .include "words/l_resolve.asm"
-
- ; Compiler
- ; resolve backward branch
- ;VE_LRESOLVE:
- ; .dw $ff08
- ; .db "<resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LRESOLVE
- XT_LRESOLVE:
-00020f f001 .dw DO_COLON
- PFA_LRESOLVE:
-000210 fb72 .dw XT_QSTACK
-000211 01db .dw XT_COMMA
-000212 f026 .dw XT_EXIT
-
- .include "words/ahead.asm"
-
- ; Compiler
- ; do a unconditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AHEAD:
-000213 0005 .dw $0005
-000214 6861
-000215 6165
-000216 0064 .db "ahead",0
-000217 01f6 .dw VE_HEAD
- .set VE_HEAD = VE_AHEAD
- XT_AHEAD:
-000218 f001 .dw DO_COLON
- PFA_AHEAD:
- .endif
-000219 01d0 .dw XT_COMPILE
-00021a f035 .dw XT_DOBRANCH
-00021b 0201 .dw XT_GMARK
-00021c f026 .dw XT_EXIT
- .include "words/if.asm"
-
- ; Compiler
- ; start conditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_IF:
-00021d 0002 .dw $0002
-00021e 6669 .db "if"
-00021f 0213 .dw VE_HEAD
- .set VE_HEAD = VE_IF
- XT_IF:
-000220 f001 .dw DO_COLON
- PFA_IF:
- .endif
-000221 01d0 .dw XT_COMPILE
-000222 f03f .dw XT_DOCONDBRANCH
-000223 0201 .dw XT_GMARK
-000224 f026 .dw XT_EXIT
- .include "words/else.asm"
-
- ; Compiler
- ; resolve the forward reference and place a new unresolved forward reference
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ELSE:
-000225 0004 .dw $0004
-000226 6c65
-000227 6573 .db "else"
-000228 021d .dw VE_HEAD
- .set VE_HEAD = VE_ELSE
- XT_ELSE:
-000229 f001 .dw DO_COLON
- PFA_ELSE:
- .endif
-00022a 01d0 .dw XT_COMPILE
-00022b f035 .dw XT_DOBRANCH
-00022c 0201 .dw XT_GMARK
-00022d f0d6 .dw XT_SWAP
-00022e 0206 .dw XT_GRESOLVE
-00022f f026 .dw XT_EXIT
- .include "words/then.asm"
-
- ; Compiler
- ; finish if
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THEN:
-000230 0004 .dw $0004
-000231 6874
-000232 6e65 .db "then"
-000233 0225 .dw VE_HEAD
- .set VE_HEAD = VE_THEN
- XT_THEN:
-000234 f001 .dw DO_COLON
- PFA_THEN:
- .endif
-000235 0206 .dw XT_GRESOLVE
-000236 f026 .dw XT_EXIT
- .include "words/begin.asm"
-
- ; Compiler
- ; put the next location for a transfer of control onto the control flow stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BEGIN:
-000237 0005 .dw $0005
-000238 6562
-000239 6967
-00023a 006e .db "begin",0
-00023b 0230 .dw VE_HEAD
- .set VE_HEAD = VE_BEGIN
- XT_BEGIN:
-00023c f001 .dw DO_COLON
- PFA_BEGIN:
- .endif
-00023d 020c .dw XT_LMARK
-00023e f026 .dw XT_EXIT
- .include "words/while.asm"
-
- ; Compiler
- ; at runtime skip until repeat if non-true
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WHILE:
-00023f 0005 .dw $0005
-000240 6877
-000241 6c69
-000242 0065 .db "while",0
-000243 0237 .dw VE_HEAD
- .set VE_HEAD = VE_WHILE
- XT_WHILE:
-000244 f001 .dw DO_COLON
- PFA_WHILE:
- .endif
-000245 0220 .dw XT_IF
-000246 f0d6 .dw XT_SWAP
-000247 f026 .dw XT_EXIT
- .include "words/repeat.asm"
-
- ; Compiler
- ; continue execution at dest, resolve orig
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REPEAT:
-000248 0006 .dw $0006
-000249 6572
-00024a 6570
-00024b 7461 .db "repeat"
-00024c 023f .dw VE_HEAD
- .set VE_HEAD = VE_REPEAT
- XT_REPEAT:
-00024d f001 .dw DO_COLON
- PFA_REPEAT:
- .endif
-00024e 0261 .dw XT_AGAIN
-00024f 0234 .dw XT_THEN
-000250 f026 .dw XT_EXIT
- .include "words/until.asm"
-
- ; Compiler
- ; finish begin with conditional branch, leaves the loop if true flag at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UNTIL:
-000251 0005 .dw $0005
-000252 6e75
-000253 6974
-000254 006c .db "until",0
-000255 0248 .dw VE_HEAD
- .set VE_HEAD = VE_UNTIL
- XT_UNTIL:
-000256 f001 .dw DO_COLON
- PFA_UNTIL:
- .endif
-000257 f046 .dw XT_DOLITERAL
-000258 f03f .dw XT_DOCONDBRANCH
-000259 01db .dw XT_COMMA
-
-00025a 020f .dw XT_LRESOLVE
-00025b f026 .dw XT_EXIT
- .include "words/again.asm"
-
- ; Compiler
- ; compile a jump back to dest
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AGAIN:
-00025c 0005 .dw $0005
-00025d 6761
-00025e 6961
-00025f 006e .db "again",0
-000260 0251 .dw VE_HEAD
- .set VE_HEAD = VE_AGAIN
- XT_AGAIN:
-000261 f001 .dw DO_COLON
- PFA_AGAIN:
- .endif
-000262 01d0 .dw XT_COMPILE
-000263 f035 .dw XT_DOBRANCH
-000264 020f .dw XT_LRESOLVE
-000265 f026 .dw XT_EXIT
- .include "words/do.asm"
-
- ; Compiler
- ; start do .. [+]loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DO:
-000266 0002 .dw $0002
-000267 6f64 .db "do"
-000268 025c .dw VE_HEAD
- .set VE_HEAD = VE_DO
- XT_DO:
-000269 f001 .dw DO_COLON
- PFA_DO:
-
- .endif
-00026a 01d0 .dw XT_COMPILE
-00026b f2ad .dw XT_DODO
-00026c 020c .dw XT_LMARK
-00026d f166 .dw XT_ZERO
-00026e 02c4 .dw XT_TO_L
-00026f f026 .dw XT_EXIT
- .include "words/loop.asm"
-
- ; Compiler
- ; compile (loop) and resolve the backward branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LOOP:
-000270 0004 .dw $0004
-000271 6f6c
-000272 706f .db "loop"
-000273 0266 .dw VE_HEAD
- .set VE_HEAD = VE_LOOP
- XT_LOOP:
-000274 f001 .dw DO_COLON
- PFA_LOOP:
- .endif
-000275 01d0 .dw XT_COMPILE
-000276 f2db .dw XT_DOLOOP
-000277 02ab .dw XT_ENDLOOP
-000278 f026 .dw XT_EXIT
- .include "words/plusloop.asm"
-
- ; Compiler
- ; compile (+loop) and resolve branches
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PLUSLOOP:
-000279 0005 .dw $0005
-00027a 6c2b
-00027b 6f6f
-00027c 0070 .db "+loop",0
-00027d 0270 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSLOOP
- XT_PLUSLOOP:
-00027e f001 .dw DO_COLON
- PFA_PLUSLOOP:
- .endif
-00027f 01d0 .dw XT_COMPILE
-000280 f2cc .dw XT_DOPLUSLOOP
-000281 02ab .dw XT_ENDLOOP
-000282 f026 .dw XT_EXIT
- .include "words/leave.asm"
-
- ; Compiler
- ; immediatly leave the current DO..LOOP
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LEAVE:
-000283 0005 .dw $0005
-000284 656c
-000285 7661
-000286 0065 .db "leave",0
-000287 0279 .dw VE_HEAD
- .set VE_HEAD = VE_LEAVE
- XT_LEAVE:
-000288 f001 .dw DO_COLON
- PFA_LEAVE:
- .endif
-000289 01d0
-00028a f2e6 .DW XT_COMPILE,XT_UNLOOP
-00028b 0218
-00028c 02c4
-00028d f026 .DW XT_AHEAD,XT_TO_L,XT_EXIT
- .include "words/qdo.asm"
-
- ; Compiler
- ; start a ?do .. [+]loop control structure
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_QDO:
-00028e 0003 .dw $0003
-00028f 643f
-000290 006f .db "?do",0
-000291 0283 .dw VE_HEAD
- .set VE_HEAD = VE_QDO
- XT_QDO:
-000292 f001 .dw DO_COLON
- PFA_QDO:
- .endif
-000293 01d0 .dw XT_COMPILE
-000294 029a .dw XT_QDOCHECK
-000295 0220 .dw XT_IF
-000296 0269 .dw XT_DO
-000297 f0d6 .dw XT_SWAP ; DO sets a 0 marker on the leave stack
-000298 02c4 .dw XT_TO_L ; then follows at the end.
-000299 f026 .dw XT_EXIT
-
- ; there is no special runtime for ?do, the do runtime
- ; gets wrapped with the sequence
- ; ... ?do-check if do ..... loop then
- ; with
- ; : ?do-check ( n1 n2 -- n1 n2 true | false )
- ; 2dup = dup >r if 2drop then r> invert ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QDOCHECK:
-00029a f001 .dw DO_COLON
- PFA_QDOCHECK:
- .endif
-00029b f580 .dw XT_2DUP
-00029c fd9a .dw XT_EQUAL
-00029d f0c3 .dw XT_DUP
-00029e f111 .dw XT_TO_R
-00029f f03f .dw XT_DOCONDBRANCH
-0002a0 02a2 DEST(PFA_QDOCHECK1)
-0002a1 f589 .dw XT_2DROP
- PFA_QDOCHECK1:
-0002a2 f108 .dw XT_R_FROM
-0002a3 f20f .dw XT_INVERT
-0002a4 f026 .dw XT_EXIT
- .include "words/endloop.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENDLOOP:
-0002a5 ff07 .dw $ff07
-0002a6 6e65
-0002a7 6c64
-0002a8 6f6f
-0002a9 0070 .db "endloop",0
-0002aa 028e .dw VE_HEAD
- .set VE_HEAD = VE_ENDLOOP
- XT_ENDLOOP:
-0002ab f001 .dw DO_COLON
- PFA_ENDLOOP:
- .endif
- ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN --
- ; <resolve backward loop
- ; BEGIN L> ?DUP WHILE POSTPONE THEN REPEAT ;
- ; resolve LEAVEs
- ; This is a common factor of LOOP and +LOOP.
-
-0002ac 020f .DW XT_LRESOLVE
-0002ad 02b8
-0002ae f0cb
-0002af f03f LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH
-0002b0 02b4 DEST(LOOP2)
-0002b1 0234 .DW XT_THEN
-0002b2 f035 .dw XT_DOBRANCH
-0002b3 02ad DEST(LOOP1)
-0002b4 f026 LOOP2: .DW XT_EXIT
- ; leave address stack
- .include "words/l-from.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_FROM:
-0002b5 ff02 .dw $ff02
-0002b6 3e6c .db "l>"
-0002b7 02a5 .dw VE_HEAD
- .set VE_HEAD = VE_L_FROM
- XT_L_FROM:
-0002b8 f001 .dw DO_COLON
- PFA_L_FROM:
-
- .endif
- ;Z L> -- x L: x -- move from leave stack
- ; LP @ @ -2 LP +! ;
-
-0002b9 02d7 .dw XT_LP
-0002ba f08b .dw XT_FETCH
-0002bb f08b .dw XT_FETCH
-0002bc f046 .dw XT_DOLITERAL
-0002bd fffe .dw -2
-0002be 02d7 .dw XT_LP
-0002bf f277 .dw XT_PLUSSTORE
-0002c0 f026 .dw XT_EXIT
- .include "words/to-l.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_L:
-0002c1 ff02 .dw $ff02
-0002c2 6c3e .db ">l"
-0002c3 02b5 .dw VE_HEAD
- .set VE_HEAD = VE_TO_L
- XT_TO_L:
-0002c4 f001 .dw DO_COLON
- PFA_TO_L:
- .endif
- ;Z >L x -- L: -- x move to leave stack
- ; CELL LP +! LP @ ! ; (L stack grows up)
-
-0002c5 fda6 .dw XT_TWO
-0002c6 02d7 .dw XT_LP
-0002c7 f277 .dw XT_PLUSSTORE
-0002c8 02d7 .dw XT_LP
-0002c9 f08b .dw XT_FETCH
-0002ca f093 .dw XT_STORE
-0002cb f026 .dw XT_EXIT
- .include "words/lp0.asm"
-
- ; Stack
- ; start address of leave stack
- VE_LP0:
-0002cc ff03 .dw $ff03
-0002cd 706c
-0002ce 0030 .db "lp0",0
-0002cf 02c1 .dw VE_HEAD
- .set VE_HEAD = VE_LP0
- XT_LP0:
-0002d0 f081 .dw PFA_DOVALUE1
- PFA_LP0:
-0002d1 0052 .dw CFG_LP0
-0002d2 fbcf .dw XT_EDEFERFETCH
-0002d3 fbd9 .dw XT_EDEFERSTORE
- .include "words/lp.asm"
-
- ; System Variable
- ; leave stack pointer
- VE_LP:
-0002d4 ff02 .dw $ff02
-0002d5 706c .db "lp"
-0002d6 02cc .dw VE_HEAD
- .set VE_HEAD = VE_LP
- XT_LP:
-0002d7 f054 .dw PFA_DOVARIABLE
- PFA_LP:
-0002d8 013b .dw ram_lp
-
- .dseg
-00013b ram_lp: .byte 2
- .cseg
-
-
- .include "words/create.asm"
-
- ; Dictionary
- ; create a dictionary header. XT is (constant), with the address of the data field of name
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CREATE:
-0002d9 ff06 .dw $ff06
-0002da 7263
-0002db 6165
-0002dc 6574 .db "create"
-0002dd 02d4 .dw VE_HEAD
- .set VE_HEAD = VE_CREATE
- XT_CREATE:
-0002de f001 .dw DO_COLON
- PFA_CREATE:
- .endif
-0002df 01ad .dw XT_DOCREATE
-0002e0 030d .dw XT_REVEAL
-0002e1 01d0 .dw XT_COMPILE
-0002e2 f061 .dw PFA_DOCONSTANT
-0002e3 f026 .dw XT_EXIT
- .include "words/header.asm"
-
- ; Compiler
- ; creates the vocabulary header without XT and data field (PF) in the wordlist wid
- VE_HEADER:
-0002e4 ff06 .dw $ff06
-0002e5 6568
-0002e6 6461
-0002e7 7265 .db "header"
-0002e8 02d9 .dw VE_HEAD
- .set VE_HEAD = VE_HEADER
- XT_HEADER:
-0002e9 f001 .dw DO_COLON
- PFA_HEADER:
-0002ea f5c9 .dw XT_DP ; the new Name Field
-0002eb f111 .dw XT_TO_R
-0002ec f111 .dw XT_TO_R ; ( R: NFA WID )
-0002ed f0c3 .dw XT_DUP
-0002ee f13a .dw XT_GREATERZERO
-0002ef f03f .dw XT_DOCONDBRANCH
-0002f0 02fb .dw PFA_HEADER1
-0002f1 f0c3 .dw XT_DUP
-0002f2 f046 .dw XT_DOLITERAL
-0002f3 ff00 .dw $ff00 ; all flags are off (e.g. immediate)
-0002f4 f22e .dw XT_OR
-0002f5 f79a .dw XT_DOSCOMMA
- ; make the link to the previous entry in this wordlist
-0002f6 f108 .dw XT_R_FROM
-0002f7 f371 .dw XT_FETCHE
-0002f8 01db .dw XT_COMMA
-0002f9 f108 .dw XT_R_FROM
-0002fa f026 .dw XT_EXIT
-
- PFA_HEADER1:
- ; -16: attempt to use zero length string as a name
-0002fb f046 .dw XT_DOLITERAL
-0002fc fff0 .dw -16
-0002fd f85c .dw XT_THROW
-
- .include "words/wlscope.asm"
-
- ; Compiler
- ; dynamically place a word in a wordlist. The word name may be changed.
- VE_WLSCOPE:
-0002fe ff07 .dw $ff07
-0002ff 6c77
-000300 6373
-000301 706f
-000302 0065 .db "wlscope",0
-000303 02e4 .dw VE_HEAD
- .set VE_HEAD = VE_WLSCOPE
- XT_WLSCOPE:
-000304 fc2e .dw PFA_DODEFER1
- PFA_WLSCOPE:
-000305 004e .dw CFG_WLSCOPE
-000306 fbcf .dw XT_EDEFERFETCH
-000307 fbd9 .dw XT_EDEFERSTORE
-
- ; wlscope, "wordlist scope" ( addr len -- addr' len' wid ), is a deferred word
- ; which enables the AmForth application to choose the wordlist ( wid ) for the
- ; new voc entry based on the input ( addr len ) string. The name of the new voc
- ; entry ( addr' len' ) may be different from the input string. Note that all
- ; created voc entry types pass through the wlscope mechanism. The default
- ; wlscope action passes the input string to the output without modification and
- ; uses get-current to select the wid.
- .include "words/reveal.asm"
-
- ; Dictionary
- ; makes an entry in a wordlist visible, if not already done.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REVEAL:
-000308 ff06 .dw $ff06
-000309 6572
-00030a 6576
-00030b 6c61 .db "reveal"
-00030c 02fe .dw VE_HEAD
- .set VE_HEAD = VE_REVEAL
- XT_REVEAL:
-00030d f001 .dw DO_COLON
- PFA_REVEAL:
- .endif
-00030e 019e
-00030f f579
-000310 f08b .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use
-000311 f0cb
-000312 f03f .DW XT_QDUP,XT_DOCONDBRANCH
-000313 0318 DEST(REVEAL1)
-000314 019e
-000315 f08b
-000316 f0d6
-000317 f34d .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE
- ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry
- REVEAL1:
-000318 f026 .DW XT_EXIT
- .include "words/does.asm"
-
- ; Compiler
- ; organize the XT replacement to call other colon code
- VE_DOES:
-000319 0005 .dw $0005
-00031a 6f64
-00031b 7365
-00031c 003e .db "does>",0
-00031d 0308 .dw VE_HEAD
- .set VE_HEAD = VE_DOES
- XT_DOES:
-00031e f001 .dw DO_COLON
- PFA_DOES:
-00031f 01d0 .dw XT_COMPILE
-000320 0331 .dw XT_DODOES
-000321 01d0 .dw XT_COMPILE ; create a code snippet to be used in an embedded XT
-000322 940e .dw $940e ; the address of this compiled
-000323 01d0 .dw XT_COMPILE ; code will replace the XT of the
-000324 0326 .dw DO_DODOES ; word that CREATE created
-000325 f026 .dw XT_EXIT ;
-
- DO_DODOES: ; ( -- PFA )
-000326 939a
-000327 938a savetos
-000328 01cb movw tosl, wl
-000329 9601 adiw tosl, 1
- ; the following takes the address from a real uC-call
- .if (pclen==3)
- .endif
-00032a 917f pop wh
-00032b 916f pop wl
-
-00032c 93bf push XH
-00032d 93af push XL
-00032e 01db movw XL, wl
-00032f 940c f005 jmp_ DO_NEXT
-
- ; ( -- )
- ; System
- ; replace the XT written by CREATE to call the code that follows does>
- ;VE_DODOES:
- ; .dw $ff07
- ; .db "(does>)"
- ; .set VE_HEAD = VE_DODOES
- XT_DODOES:
-000331 f001 .dw DO_COLON
- PFA_DODOES:
-000332 f108 .dw XT_R_FROM
-000333 019e .dw XT_NEWEST
-000334 f579 .dw XT_CELLPLUS
-000335 f08b .dw XT_FETCH
-000336 f371 .dw XT_FETCHE
-000337 fc99 .dw XT_NFA2CFA
-000338 f385 .dw XT_STOREI
-000339 f026 .dw XT_EXIT
- .include "words/colon.asm"
-
- ; Compiler
- ; create a named entry in the dictionary, XT is DO_COLON
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COLON:
-00033a ff01 .dw $ff01
-00033b 003a .db ":",0
-00033c 0319 .dw VE_HEAD
- .set VE_HEAD = VE_COLON
- XT_COLON:
-00033d f001 .dw DO_COLON
- PFA_COLON:
- .endif
-00033e 01ad .dw XT_DOCREATE
-00033f 0348 .dw XT_COLONNONAME
-000340 f0eb .dw XT_DROP
-000341 f026 .dw XT_EXIT
- .include "words/colon-noname.asm"
-
- ; Compiler
- ; create an unnamed entry in the dictionary, XT is DO_COLON
- VE_COLONNONAME:
-000342 ff07 .dw $ff07
-000343 6e3a
-000344 6e6f
-000345 6d61
-000346 0065 .db ":noname",0
-000347 033a .dw VE_HEAD
- .set VE_HEAD = VE_COLONNONAME
- XT_COLONNONAME:
-000348 f001 .dw DO_COLON
- PFA_COLONNONAME:
-000349 f5c9 .dw XT_DP
-00034a f0c3 .dw XT_DUP
-00034b 01a5 .dw XT_LATEST
-00034c f093 .dw XT_STORE
-
-00034d 01d0 .dw XT_COMPILE
-00034e f001 .dw DO_COLON
-
-00034f 035d .dw XT_RBRACKET
-000350 f026 .dw XT_EXIT
- .include "words/semicolon.asm"
-
- ; Compiler
- ; finish colon defintion, compiles (exit) and returns to interpret state
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SEMICOLON:
-000351 0001 .dw $0001
-000352 003b .db $3b,0
-000353 0342 .dw VE_HEAD
- .set VE_HEAD = VE_SEMICOLON
- XT_SEMICOLON:
-000354 f001 .dw DO_COLON
- PFA_SEMICOLON:
- .endif
-000355 01d0 .dw XT_COMPILE
-000356 f026 .dw XT_EXIT
-000357 0365 .dw XT_LBRACKET
-000358 030d .dw XT_REVEAL
-000359 f026 .dw XT_EXIT
- .include "words/right-bracket.asm"
-
- ; Compiler
- ; enter compiler mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RBRACKET:
-00035a ff01 .dw $ff01
-00035b 005d .db "]",0
-00035c 0351 .dw VE_HEAD
- .set VE_HEAD = VE_RBRACKET
- XT_RBRACKET:
-00035d f001 .dw DO_COLON
- PFA_RBRACKET:
- .endif
-00035e fda1 .dw XT_ONE
-00035f f566 .dw XT_STATE
-000360 f093 .dw XT_STORE
-000361 f026 .dw XT_EXIT
- .include "words/left-bracket.asm"
-
- ; Compiler
- ; enter interpreter mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LBRACKET:
-000362 0001 .dw $0001
-000363 005b .db "[",0
-000364 035a .dw VE_HEAD
- .set VE_HEAD = VE_LBRACKET
- XT_LBRACKET:
-000365 f001 .dw DO_COLON
- PFA_LBRACKET:
- .endif
-000366 f166 .dw XT_ZERO
-000367 f566 .dw XT_STATE
-000368 f093 .dw XT_STORE
-000369 f026 .dw XT_EXIT
- .include "words/variable.asm"
-
- ; Compiler
- ; create a dictionary entry for a variable and allocate 1 cell RAM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_VARIABLE:
-00036a ff08 .dw $ff08
-00036b 6176
-00036c 6972
-00036d 6261
-00036e 656c .db "variable"
-00036f 0362 .dw VE_HEAD
- .set VE_HEAD = VE_VARIABLE
- XT_VARIABLE:
-000370 f001 .dw DO_COLON
- PFA_VARIABLE:
- .endif
-000371 f5da .dw XT_HERE
-000372 037c .dw XT_CONSTANT
-000373 fda6 .dw XT_TWO
-000374 f5e3 .dw XT_ALLOT
-000375 f026 .dw XT_EXIT
- .include "words/constant.asm"
-
- ; Compiler
- ; create a constant in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_CONSTANT:
-000376 ff08 .dw $ff08
-000377 6f63
-000378 736e
-000379 6174
-00037a 746e .db "constant"
-00037b 036a .dw VE_HEAD
- .set VE_HEAD = VE_CONSTANT
- XT_CONSTANT:
-00037c f001 .dw DO_COLON
- PFA_CONSTANT:
- .endif
-00037d 01ad .dw XT_DOCREATE
-00037e 030d .dw XT_REVEAL
-00037f 01d0 .dw XT_COMPILE
-000380 f054 .dw PFA_DOVARIABLE
-000381 01db .dw XT_COMMA
-000382 f026 .dw XT_EXIT
- .include "words/user.asm"
-
- ; Compiler
- ; create a dictionary entry for a user variable at offset n
- VE_USER:
-000383 ff04 .dw $ff04
-000384 7375
-000385 7265 .db "user"
-000386 0376 .dw VE_HEAD
- .set VE_HEAD = VE_USER
- XT_USER:
-000387 f001 .dw DO_COLON
- PFA_USER:
-000388 01ad .dw XT_DOCREATE
-000389 030d .dw XT_REVEAL
-
-00038a 01d0 .dw XT_COMPILE
-00038b f067 .dw PFA_DOUSER
-00038c 01db .dw XT_COMMA
-00038d f026 .dw XT_EXIT
-
- .include "words/recurse.asm"
-
- ; Compiler
- ; compile the XT of the word currently being defined into the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECURSE:
-00038e 0007 .dw $0007
-00038f 6572
-000390 7563
-000391 7372
-000392 0065 .db "recurse",0
-000393 0383 .dw VE_HEAD
- .set VE_HEAD = VE_RECURSE
- XT_RECURSE:
-000394 f001 .dw DO_COLON
- PFA_RECURSE:
- .endif
-000395 01a5 .dw XT_LATEST
-000396 f08b .dw XT_FETCH
-000397 01db .dw XT_COMMA
-000398 f026 .dw XT_EXIT
- .include "words/immediate.asm"
-
- ; Compiler
- ; set immediate flag for the most recent word definition
- VE_IMMEDIATE:
-000399 ff09 .dw $ff09
-00039a 6d69
-00039b 656d
-00039c 6964
-00039d 7461
-00039e 0065 .db "immediate",0
-00039f 038e .dw VE_HEAD
- .set VE_HEAD = VE_IMMEDIATE
- XT_IMMEDIATE:
-0003a0 f001 .dw DO_COLON
- PFA_IMMEDIATE:
-0003a1 0442 .dw XT_GET_CURRENT
-0003a2 f371 .dw XT_FETCHE
-0003a3 f0c3 .dw XT_DUP
-0003a4 f3e3 .dw XT_FETCHI
-0003a5 f046 .dw XT_DOLITERAL
-0003a6 7fff .dw $7fff
-0003a7 f225 .dw XT_AND
-0003a8 f0d6 .dw XT_SWAP
-0003a9 f385 .dw XT_STOREI
-0003aa f026 .dw XT_EXIT
-
- .include "words/bracketchar.asm"
-
- ; Tools
- ; skip leading space delimites, place the first character of the word on the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETCHAR:
-0003ab 0006 .dw $0006
-0003ac 635b
-0003ad 6168
-0003ae 5d72 .db "[char]"
-0003af 0399 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETCHAR
- XT_BRACKETCHAR:
-0003b0 f001 .dw DO_COLON
- PFA_BRACKETCHAR:
- .endif
-0003b1 01d0 .dw XT_COMPILE
-0003b2 f046 .dw XT_DOLITERAL
-0003b3 f905 .dw XT_CHAR
-0003b4 01db .dw XT_COMMA
-0003b5 f026 .dw XT_EXIT
- .include "words/abort-string.asm"
-
- ;C i*x x1 -- R: j*x -- x1<>0
- ; POSTPONE IS" POSTPONE ?ABORT ; IMMEDIATE
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORTQUOTE:
-0003b6 0006 .dw $0006
-0003b7 6261
-0003b8 726f
-0003b9 2274 .db "abort",'"'
-0003ba 03ab .dw VE_HEAD
- .set VE_HEAD = VE_ABORTQUOTE
- XT_ABORTQUOTE:
-0003bb f001 .dw DO_COLON
- PFA_ABORTQUOTE:
- .endif
-0003bc f4dc .dw XT_SQUOTE
-0003bd 01d0 .dw XT_COMPILE
-0003be 03cd .dw XT_QABORT
-0003bf f026 .DW XT_EXIT
- .include "words/abort.asm"
-
- ; Exceptions
- ; send an exception -1
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORT:
-0003c0 ff05 .dw $ff05
-0003c1 6261
-0003c2 726f
-0003c3 0074 .db "abort",0
-0003c4 03b6 .dw VE_HEAD
- .set VE_HEAD = VE_ABORT
- XT_ABORT:
-0003c5 f001 .dw DO_COLON
- PFA_ABORT:
- .endif
-0003c6 f15d .dw XT_TRUE
-0003c7 f85c .dw XT_THROW
- .include "words/q-abort.asm"
-
- ; ROT IF ITYPE ABORT THEN 2DROP ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QABORT:
-0003c8 ff06 .dw $ff06
-0003c9 613f
-0003ca 6f62
-0003cb 7472 .db "?abort"
-0003cc 03c0 .dw VE_HEAD
- .set VE_HEAD = VE_QABORT
- XT_QABORT:
-0003cd f001 .dw DO_COLON
- PFA_QABORT:
-
- .endif
-0003ce f0f3
-0003cf f03f .DW XT_ROT,XT_DOCONDBRANCH
-0003d0 03d3 DEST(QABO1)
-0003d1 f7bb
-0003d2 03c5 .DW XT_ITYPE,XT_ABORT
-0003d3 f589
-0003d4 f026 QABO1: .DW XT_2DROP,XT_EXIT
-
- .include "words/get-stack.asm"
-
- ; Tools
- ; Get a stack from EEPROM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_STACK:
-0003d5 ff09 .dw $ff09
-0003d6 6567
-0003d7 2d74
-0003d8 7473
-0003d9 6361
-0003da 006b .db "get-stack",0
-0003db 03c8 .dw VE_HEAD
- .set VE_HEAD = VE_GET_STACK
- XT_GET_STACK:
-0003dc f001 .dw DO_COLON
- .endif
-0003dd f0c3 .dw XT_DUP
-0003de f579 .dw XT_CELLPLUS
-0003df f0d6 .dw XT_SWAP
-0003e0 f371 .dw XT_FETCHE
-0003e1 f0c3 .dw XT_DUP
-0003e2 f111 .dw XT_TO_R
-0003e3 f166 .dw XT_ZERO
-0003e4 f0d6 .dw XT_SWAP ; go from bigger to smaller addresses
-0003e5 029a .dw XT_QDOCHECK
-0003e6 f03f .dw XT_DOCONDBRANCH
-0003e7 03f3 DEST(PFA_N_FETCH_E2)
-0003e8 f2ad .dw XT_DODO
- PFA_N_FETCH_E1:
- ; ( ee-addr )
-0003e9 f2be .dw XT_I
-0003ea f247 .dw XT_1MINUS
-0003eb f573 .dw XT_CELLS ; ( -- ee-addr i*2 )
-0003ec f0e1 .dw XT_OVER ; ( -- ee-addr i*2 ee-addr )
-0003ed f1af .dw XT_PLUS ; ( -- ee-addr ee-addr+i
-0003ee f371 .dw XT_FETCHE ;( -- ee-addr item_i )
-0003ef f0d6 .dw XT_SWAP ;( -- item_i ee-addr )
-0003f0 f15d .dw XT_TRUE ; shortcut for -1
-0003f1 f2cc .dw XT_DOPLUSLOOP
-0003f2 03e9 DEST(PFA_N_FETCH_E1)
- PFA_N_FETCH_E2:
-0003f3 f589 .dw XT_2DROP
-0003f4 f108 .dw XT_R_FROM
-0003f5 f026 .dw XT_EXIT
-
- .include "words/set-stack.asm"
-
- ; Tools
- ; Write a stack to EEPROM
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_STACK:
-0003f6 ff09 .dw $ff09
-0003f7 6573
-0003f8 2d74
-0003f9 7473
-0003fa 6361
-0003fb 006b .db "set-stack",0
-0003fc 03d5 .dw VE_HEAD
- .set VE_HEAD = VE_SET_STACK
- XT_SET_STACK:
-0003fd f001 .dw DO_COLON
- PFA_SET_STACK:
- .endif
-0003fe f0e1 .dw XT_OVER
-0003ff f133 .dw XT_ZEROLESS
-000400 f03f .dw XT_DOCONDBRANCH
-000401 0405 DEST(PFA_SET_STACK0)
-000402 f046 .dw XT_DOLITERAL
-000403 fffc .dw -4
-000404 f85c .dw XT_THROW
- PFA_SET_STACK0:
-000405 f580 .dw XT_2DUP
-000406 f34d .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr )
-000407 f0d6 .dw XT_SWAP
-000408 f166 .dw XT_ZERO
-000409 029a .dw XT_QDOCHECK
-00040a f03f .dw XT_DOCONDBRANCH
-00040b 0412 DEST(PFA_SET_STACK2)
-00040c f2ad .dw XT_DODO
- PFA_SET_STACK1:
-00040d f579 .dw XT_CELLPLUS ; ( -- i_x e-addr )
-00040e f591 .dw XT_TUCK ; ( -- e-addr i_x e-addr
-00040f f34d .dw XT_STOREE
-000410 f2db .dw XT_DOLOOP
-000411 040d DEST(PFA_SET_STACK1)
- PFA_SET_STACK2:
-000412 f0eb .dw XT_DROP
-000413 f026 .dw XT_EXIT
-
- .include "words/map-stack.asm"
-
- ; Tools
- ; Iterate over a stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAPSTACK:
-000414 ff09 .dw $ff09
-000415 616d
-000416 2d70
-000417 7473
-000418 6361
-000419 006b .db "map-stack",0
-00041a 03f6 .dw VE_HEAD
- .set VE_HEAD = VE_MAPSTACK
- XT_MAPSTACK:
-00041b f001 .dw DO_COLON
- PFA_MAPSTACK:
- .endif
-00041c f0c3 .dw XT_DUP
-00041d f579 .dw XT_CELLPLUS
-00041e f0d6 .dw XT_SWAP
-00041f f371 .dw XT_FETCHE
-000420 f573 .dw XT_CELLS
-000421 fd79 .dw XT_BOUNDS
-000422 029a .dw XT_QDOCHECK
-000423 f03f .dw XT_DOCONDBRANCH
-000424 0437 DEST(PFA_MAPSTACK3)
-000425 f2ad .dw XT_DODO
- PFA_MAPSTACK1:
-000426 f2be .dw XT_I
-000427 f371 .dw XT_FETCHE ; -- i*x XT id
-000428 f0d6 .dw XT_SWAP
-000429 f111 .dw XT_TO_R
-00042a f11a .dw XT_R_FETCH
-00042b f030 .dw XT_EXECUTE ; i*x id -- j*y true | i*x false
-00042c f0cb .dw XT_QDUP
-00042d f03f .dw XT_DOCONDBRANCH
-00042e 0433 DEST(PFA_MAPSTACK2)
-00042f f108 .dw XT_R_FROM
-000430 f0eb .dw XT_DROP
-000431 f2e6 .dw XT_UNLOOP
-000432 f026 .dw XT_EXIT
- PFA_MAPSTACK2:
-000433 f108 .dw XT_R_FROM
-000434 fda6 .dw XT_TWO
-000435 f2cc .dw XT_DOPLUSLOOP
-000436 0426 DEST(PFA_MAPSTACK1)
- PFA_MAPSTACK3:
-000437 f0eb .dw XT_DROP
-000438 f166 .dw XT_ZERO
-000439 f026 .dw XT_EXIT
-
- ;
- ; : map-stack ( i*x XT e-addr -- j*y )
- ; dup cell+ swap @e cells bounds ?do
- ; ( -- i*x XT )
- ; i @e swap >r r@ execute
- ; ?dup if r> drop unloop exit then
- ; r>
- ; 2 +loop drop 0
- ; ;
- .include "words/get-current.asm"
-
- ; Search Order
- ; get the wid of the current compilation word list
- VE_GET_CURRENT:
-00043a ff0b .dw $ff0b
-00043b 6567
-00043c 2d74
-00043d 7563
-00043e 7272
-00043f 6e65
-000440 0074 .db "get-current",0
-000441 0414 .dw VE_HEAD
- .set VE_HEAD = VE_GET_CURRENT
- XT_GET_CURRENT:
-000442 f001 .dw DO_COLON
- PFA_GET_CURRENT:
-000443 f046 .dw XT_DOLITERAL
-000444 0058 .dw CFG_CURRENT
-000445 f371 .dw XT_FETCHE
-000446 f026 .dw XT_EXIT
- .include "words/get-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_ORDER:
-000447 ff09 .dw $ff09
-000448 6567
-000449 2d74
-00044a 726f
-00044b 6564
-00044c 0072 .db "get-order",0
-00044d 043a .dw VE_HEAD
- .set VE_HEAD = VE_GET_ORDER
- XT_GET_ORDER:
-00044e f001 .dw DO_COLON
- PFA_GET_ORDER:
- .endif
-00044f f046 .dw XT_DOLITERAL
-000450 005c .dw CFG_ORDERLISTLEN
-000451 03dc .dw XT_GET_STACK
-000452 f026 .dw XT_EXIT
- .include "words/cfg-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CFG_ORDER:
-000453 ff09 .dw $ff09
-000454 6663
-000455 2d67
-000456 726f
-000457 6564
-000458 0072 .db "cfg-order",0
-000459 0447 .dw VE_HEAD
- .set VE_HEAD = VE_CFG_ORDER
- XT_CFG_ORDER:
-00045a f054 .dw PFA_DOVARIABLE
- PFA_CFG_ORDER:
- .endif
-00045b 005c .dw CFG_ORDERLISTLEN
- .include "words/compare.asm"
-
- ; String
- ; compares two strings in RAM
- VE_COMPARE:
-00045c ff07 .dw $ff07
-00045d 6f63
-00045e 706d
-00045f 7261
-000460 0065 .db "compare",0
-000461 0453 .dw VE_HEAD
- .set VE_HEAD = VE_COMPARE
- XT_COMPARE:
-000462 0463 .dw PFA_COMPARE
- PFA_COMPARE:
-000463 93bf push xh
-000464 93af push xl
-000465 018c movw temp0, tosl
-000466 9189
-000467 9199 loadtos
-000468 01dc movw xl, tosl
-000469 9189
-00046a 9199 loadtos
-00046b 019c movw temp2, tosl
-00046c 9189
-00046d 9199 loadtos
-00046e 01fc movw zl, tosl
- PFA_COMPARE_LOOP:
-00046f 90ed ld temp4, X+
-000470 90f1 ld temp5, Z+
-000471 14ef cp temp4, temp5
-000472 f451 brne PFA_COMPARE_NOTEQUAL
-000473 950a dec temp0
-000474 f019 breq PFA_COMPARE_ENDREACHED2
-000475 952a dec temp2
-000476 f7c1 brne PFA_COMPARE_LOOP
-000477 c001 rjmp PFA_COMPARE_ENDREACHED
- PFA_COMPARE_ENDREACHED2:
-000478 952a dec temp2
- PFA_COMPARE_ENDREACHED:
-000479 2b02 or temp0, temp2
-00047a f411 brne PFA_COMPARE_CHECKLASTCHAR
-00047b 2788 clr tosl
-00047c c002 rjmp PFA_COMPARE_DONE
- PFA_COMPARE_CHECKLASTCHAR:
- PFA_COMPARE_NOTEQUAL:
-00047d ef8f ser tosl
-00047e c000 rjmp PFA_COMPARE_DONE
-
- PFA_COMPARE_DONE:
-00047f 2f98 mov tosh, tosl
-000480 91af pop xl
-000481 91bf pop xh
-000482 940c f005 jmp_ DO_NEXT
- .include "words/nfa2lfa.asm"
-
- ; System
- ; get the link field address from the name field address
- VE_NFA2LFA:
-000484 ff07 .dw $ff07
-000485 666e
-000486 3e61
-000487 666c
-000488 0061 .db "nfa>lfa",0
-000489 045c .dw VE_HEAD
- .set VE_HEAD = VE_NFA2LFA
- XT_NFA2LFA:
-00048a f001 .dw DO_COLON
- PFA_NFA2LFA:
-00048b fc8d .dw XT_NAME2STRING
-00048c f241 .dw XT_1PLUS
-00048d f216 .dw XT_2SLASH
-00048e f1af .dw XT_PLUS
-00048f f026 .dw XT_EXIT
- .elif AMFORTH_NRWW_SIZE > 4000
- .elif AMFORTH_NRWW_SIZE > 2000
- .else
- .endif
- .include "dict_appl.inc"
-
- ; they may be moved to the core dictionary if needed
- .include "words/dot-s.asm"
-
- ; Tools
- ; stack dump
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTS:
-000490 ff02 .dw $ff02
-000491 732e .db ".s"
-000492 0484 .dw VE_HEAD
- .set VE_HEAD = VE_DOTS
- XT_DOTS:
-000493 f001 .dw DO_COLON
- PFA_DOTS:
- .endif
-000494 fabc .dw XT_DEPTH
-000495 f463 .dw XT_UDOT
-000496 f7fd .dw XT_SPACE
-000497 fabc .dw XT_DEPTH
-000498 f166 .dw XT_ZERO
-000499 029a .dw XT_QDOCHECK
-00049a f03f .dw XT_DOCONDBRANCH
-00049b 04a2 DEST(PFA_DOTS2)
-00049c f2ad .dw XT_DODO
- PFA_DOTS1:
-00049d f2be .dw XT_I
-00049e f4ca .dw XT_PICK
-00049f f463 .dw XT_UDOT
-0004a0 f2db .dw XT_DOLOOP
-0004a1 049d DEST(PFA_DOTS1)
- PFA_DOTS2:
-0004a2 f026 .dw XT_EXIT
- .include "words/spirw.asm"
-
- ; MCU
- ; SPI exchange of 1 byte
- VE_SPIRW:
-0004a3 ff06 .dw $ff06
-0004a4 2163
-0004a5 7340
-0004a6 6970 .db "c!@spi"
-0004a7 0490 .dw VE_HEAD
- .set VE_HEAD = VE_SPIRW
- XT_SPIRW:
-0004a8 04a9 .dw PFA_SPIRW
- PFA_SPIRW:
-0004a9 d003 rcall do_spirw
-0004aa 2799 clr tosh
-0004ab 940c f005 jmp_ DO_NEXT
-
- do_spirw:
-0004ad bd8e out_ SPDR, tosl
- do_spirw1:
-0004ae b50d in_ temp0, SPSR
-0004af 7f08 cbr temp0,7
-0004b0 bd0d out_ SPSR, temp0
-0004b1 b50d in_ temp0, SPSR
-0004b2 ff07 sbrs temp0, 7
-0004b3 cffa rjmp do_spirw1 ; wait until complete
-0004b4 b58e in_ tosl, SPDR
-0004b5 9508 ret
- .include "words/n-spi.asm"
-
- ; MCU
- ; read len bytes from SPI to addr
- VE_N_SPIR:
-0004b6 ff05 .dw $ff05
-0004b7 406e
-0004b8 7073
-0004b9 0069 .db "n@spi",0
-0004ba 04a3 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIR
- XT_N_SPIR:
-0004bb 04bc .dw PFA_N_SPIR
- PFA_N_SPIR:
-0004bc 018c movw temp0, tosl
-0004bd 9189
-0004be 9199 loadtos
-0004bf 01fc movw zl, tosl
-0004c0 01c8 movw tosl, temp0
- PFA_N_SPIR_LOOP:
-0004c1 bc2e out_ SPDR, zerol
- PFA_N_SPIR_LOOP1:
-0004c2 b52d in_ temp2, SPSR
-0004c3 ff27 sbrs temp2, SPIF
-0004c4 cffd rjmp PFA_N_SPIR_LOOP1
-0004c5 b52e in_ temp2, SPDR
-0004c6 9321 st Z+, temp2
-0004c7 9701 sbiw tosl, 1
-0004c8 f7c1 brne PFA_N_SPIR_LOOP
-0004c9 9189
-0004ca 9199 loadtos
-0004cb 940c f005 jmp_ DO_NEXT
-
- ; ( addr len -- )
- ; MCU
- ; write len bytes to SPI from addr
- VE_N_SPIW:
-0004cd ff05 .dw $ff05
-0004ce 216e
-0004cf 7073
-0004d0 0069 .db "n!spi",0
-0004d1 04b6 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIW
- XT_N_SPIW:
-0004d2 04d3 .dw PFA_N_SPIW
- PFA_N_SPIW:
-0004d3 018c movw temp0, tosl
-0004d4 9189
-0004d5 9199 loadtos
-0004d6 01fc movw zl, tosl
-0004d7 01c8 movw tosl, temp0
- PFA_N_SPIW_LOOP:
-0004d8 9121 ld temp2, Z+
-0004d9 bd2e out_ SPDR, temp2
- PFA_N_SPIW_LOOP1:
-0004da b52d in_ temp2, SPSR
-0004db ff27 sbrs temp2, SPIF
-0004dc cffd rjmp PFA_N_SPIW_LOOP1
-0004dd b52e in_ temp2, SPDR ; ignore the data
-0004de 9701 sbiw tosl, 1
-0004df f7c1 brne PFA_N_SPIW_LOOP
-0004e0 9189
-0004e1 9199 loadtos
-0004e2 940c f005 jmp_ DO_NEXT
- .include "words/applturnkey.asm"
-
- ; R( -- )
- ; application specific turnkey action
- VE_APPLTURNKEY:
-0004e4 ff0b .dw $ff0b
-0004e5 7061
-0004e6 6c70
-0004e7 7574
-0004e8 6e72
-0004e9 656b
-0004ea 0079 .db "applturnkey",0
-0004eb 04cd .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
- XT_APPLTURNKEY:
-0004ec f001 .dw DO_COLON
- PFA_APPLTURNKEY:
-0004ed 00da .dw XT_USART
-
- .if WANT_INTERRUPTS == 1
-0004ee f494 .dw XT_INTON
- .endif
-0004ef fb7f .dw XT_DOT_VER
-0004f0 f7fd .dw XT_SPACE
-0004f1 f55b .dw XT_F_CPU
-0004f2 f046 .dw XT_DOLITERAL
-0004f3 03e8 .dw 1000
-0004f4 f1d4 .dw XT_UMSLASHMOD
-0004f5 f102 .dw XT_NIP
-0004f6 f5f8 .dw XT_DECIMAL
-0004f7 f73d .dw XT_DOT
-0004f8 f788 .dw XT_DOSLITERAL
-0004f9 0004 .dw 4
-0004fa 486b
-0004fb 207a .db "kHz "
-0004fc f7bb .dw XT_ITYPE
-0004fd f026 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .set DICT_COMPILER2 = 1
-
- .include "words/set-current.asm"
-
- ; Search Order
- ; set current word list to the given word list wid
- VE_SET_CURRENT:
-0004fe ff0b .dw $ff0b
-0004ff 6573
-000500 2d74
-000501 7563
-000502 7272
-000503 6e65
-000504 0074 .db "set-current",0
-000505 04e4 .dw VE_HEAD
- .set VE_HEAD = VE_SET_CURRENT
- XT_SET_CURRENT:
-000506 f001 .dw DO_COLON
- PFA_SET_CURRENT:
-000507 f046 .dw XT_DOLITERAL
-000508 0058 .dw CFG_CURRENT
-000509 f34d .dw XT_STOREE
-00050a f026 .dw XT_EXIT
- .include "words/wordlist.asm"
-
- ; Search Order
- ; create a new, empty wordlist
- VE_WORDLIST:
-00050b ff08 .dw $ff08
-00050c 6f77
-00050d 6472
-00050e 696c
-00050f 7473 .db "wordlist"
-000510 04fe .dw VE_HEAD
- .set VE_HEAD = VE_WORDLIST
- XT_WORDLIST:
-000511 f001 .dw DO_COLON
- PFA_WORDLIST:
-000512 f5d2 .dw XT_EHERE
-000513 f166 .dw XT_ZERO
-000514 f0e1 .dw XT_OVER
-000515 f34d .dw XT_STOREE
-000516 f0c3 .dw XT_DUP
-000517 f579 .dw XT_CELLPLUS
-000518 fbb4 .dw XT_DOTO
-000519 f5d3 .dw PFA_EHERE
-00051a f026 .dw XT_EXIT
-
- .include "words/forth-wordlist.asm"
-
- ; Search Order
- ; get the system default word list
- VE_FORTHWORDLIST:
-00051b ff0e .dw $ff0e
-00051c 6f66
-00051d 7472
-00051e 2d68
-00051f 6f77
-000520 6472
-000521 696c
-000522 7473 .db "forth-wordlist"
-000523 050b .dw VE_HEAD
- .set VE_HEAD = VE_FORTHWORDLIST
- XT_FORTHWORDLIST:
-000524 f054 .dw PFA_DOVARIABLE
- PFA_FORTHWORDLIST:
-000525 005a .dw CFG_FORTHWORDLIST
- .include "words/set-order.asm"
-
- ; Search Order
- ; replace the search order list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_ORDER:
-000526 ff09 .dw $ff09
-000527 6573
-000528 2d74
-000529 726f
-00052a 6564
-00052b 0072 .db "set-order",0
-00052c 051b .dw VE_HEAD
- .set VE_HEAD = VE_SET_ORDER
- XT_SET_ORDER:
-00052d f001 .dw DO_COLON
- PFA_SET_ORDER:
- .endif
-00052e f046 .dw XT_DOLITERAL
-00052f 005c .dw CFG_ORDERLISTLEN
-000530 03fd .dw XT_SET_STACK
-000531 f026 .dw XT_EXIT
-
- .include "words/set-recognizer.asm"
-
- ; Interpreter
- ; replace the recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_RECOGNIZERS:
-000532 ff0f .dw $ff0f
-000533 6573
-000534 2d74
-000535 6572
-000536 6f63
-000537 6e67
-000538 7a69
-000539 7265
-00053a 0073 .db "set-recognizers",0
-00053b 0526 .dw VE_HEAD
- .set VE_HEAD = VE_SET_RECOGNIZERS
- XT_SET_RECOGNIZERS:
-00053c f001 .dw DO_COLON
- PFA_SET_RECOGNIZERS:
- .endif
-00053d f046 .dw XT_DOLITERAL
-00053e 006e .dw CFG_RECOGNIZERLISTLEN
-00053f 03fd .dw XT_SET_STACK
-000540 f026 .dw XT_EXIT
-
- .include "words/get-recognizer.asm"
-
- ; Interpreter
- ; Get the current recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_RECOGNIZERS:
-000541 ff0f .dw $ff0f
-000542 6567
-000543 2d74
-000544 6572
-000545 6f63
-000546 6e67
-000547 7a69
-000548 7265
-000549 0073 .db "get-recognizers",0
-00054a 0532 .dw VE_HEAD
- .set VE_HEAD = VE_GET_RECOGNIZERS
- XT_GET_RECOGNIZERS:
-00054b f001 .dw DO_COLON
- PFA_GET_RECOGNIZERS:
- .endif
-00054c f046 .dw XT_DOLITERAL
-00054d 006e .dw CFG_RECOGNIZERLISTLEN
-00054e 03dc .dw XT_GET_STACK
-00054f f026 .dw XT_EXIT
- .include "words/code.asm"
-
- ; Compiler
- ; create named entry in the dictionary, XT is the data field
- VE_CODE:
-000550 ff04 .dw $ff04
-000551 6f63
-000552 6564 .db "code"
-000553 0541 .dw VE_HEAD
- .set VE_HEAD = VE_CODE
- XT_CODE:
-000554 f001 .dw DO_COLON
- PFA_CODE:
-000555 01ad .dw XT_DOCREATE
-000556 030d .dw XT_REVEAL
-000557 f5c9 .dw XT_DP
-000558 fbc6 .dw XT_ICELLPLUS
-000559 01db .dw XT_COMMA
-00055a f026 .dw XT_EXIT
- .include "words/end-code.asm"
-
- ; Compiler
- ; finish a code definition
- VE_ENDCODE:
-00055b ff08 .dw $ff08
-00055c 6e65
-00055d 2d64
-00055e 6f63
-00055f 6564 .db "end-code"
-000560 0550 .dw VE_HEAD
- .set VE_HEAD = VE_ENDCODE
- XT_ENDCODE:
-000561 f001 .dw DO_COLON
- PFA_ENDCODE:
-000562 01d0 .dw XT_COMPILE
-000563 940c .dw $940c
-000564 01d0 .dw XT_COMPILE
-000565 f005 .dw DO_NEXT
-000566 f026 .dw XT_EXIT
- .include "words/marker.asm"
-
- ; System Value
- ; The eeprom address until which MARKER saves and restores the eeprom data.
- VE_MARKER:
-000567 ff08 .dw $ff08
-000568 6d28
-000569 7261
-00056a 656b
-00056b 2972 .db "(marker)"
-00056c 055b .dw VE_HEAD
- .set VE_HEAD = VE_MARKER
- XT_MARKER:
-00056d f081 .dw PFA_DOVALUE1
- PFA_MARKER:
-00056e 007a .dw EE_MARKER
-00056f fbcf .dw XT_EDEFERFETCH
-000570 fbd9 .dw XT_EDEFERSTORE
- .include "words/postpone.asm"
-
- ; Compiler
- ; Append the compilation semantics of "name" to the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_POSTPONE:
-000571 0008 .dw $0008
-000572 6f70
-000573 7473
-000574 6f70
-000575 656e .db "postpone"
-000576 0567 .dw VE_HEAD
- .set VE_HEAD = VE_POSTPONE
- XT_POSTPONE:
-000577 f001 .dw DO_COLON
- PFA_POSTPONE:
- .endif
-000578 f9cf .dw XT_PARSENAME
-000579 fae7 .dw XT_FORTHRECOGNIZER
-00057a faf2 .dw XT_RECOGNIZE
-00057b f0c3 .dw XT_DUP
-00057c f111 .dw XT_TO_R
-00057d fbc6 .dw XT_ICELLPLUS
-00057e fbc6 .dw XT_ICELLPLUS
-00057f f3e3 .dw XT_FETCHI
-000580 f030 .dw XT_EXECUTE
-000581 f108 .dw XT_R_FROM
-000582 fbc6 .dw XT_ICELLPLUS
-000583 f3e3 .dw XT_FETCHI
-000584 01db .dw XT_COMMA
-000585 f026 .dw XT_EXIT
- .endif
- .include "words/2r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_2R_FETCH:
-000586 ff03 .dw $ff03
-000587 7232
-000588 0040 .db "2r@",0
-000589 0571 .dw VE_HEAD
- .set VE_HEAD = VE_2R_FETCH
- XT_2R_FETCH:
-00058a 058b .dw PFA_2R_FETCH
- PFA_2R_FETCH:
-00058b 939a
-00058c 938a savetos
-00058d 91ef pop zl
-00058e 91ff pop zh
-00058f 918f pop tosl
-000590 919f pop tosh
-000591 939f push tosh
-000592 938f push tosl
-000593 93ff push zh
-000594 93ef push zl
-000595 939a
-000596 938a savetos
-000597 01cf movw tosl, zl
-000598 940c f005 jmp_ DO_NEXT
-
- .set DPSTART = pc
- .if(pc>AMFORTH_RO_SEG)
- .endif
-
- .org AMFORTH_RO_SEG
- .include "amforth-interpreter.asm"
-
-
- DO_COLON:
-00f001 93bf push XH
-00f002 93af push XL ; PUSH IP
-00f003 01db movw XL, wl
-00f004 9611 adiw xl, 1
- DO_NEXT:
- .if WANT_INTERRUPTS == 1
-00f005 14b2 cp isrflag, zerol
-00f006 f499 brne DO_INTERRUPT
- .endif
-00f007 01fd movw zl, XL ; READ IP
-00f008 2755
-00f009 0fee
-00f00a 1fff
-00f00b 1f55
-00f00c bf5b
-00f00d 9167
-00f00e 9177 readflashcell wl, wh
-00f00f 9611 adiw XL, 1 ; INC IP
-
- DO_EXECUTE:
-00f010 01fb movw zl, wl
-00f011 2755
-00f012 0fee
-00f013 1fff
-00f014 1f55
-00f015 bf5b
-00f016 9107
-00f017 9117 readflashcell temp0,temp1
-00f018 01f8 movw zl, temp0
-00f019 9409 ijmp
-
- .if WANT_INTERRUPTS == 1
- DO_INTERRUPT:
- ; here we deal with interrupts the forth way
-00f01a 939a
-00f01b 938a savetos
-00f01c 2d8b mov tosl, isrflag
-00f01d 2799 clr tosh
-00f01e 24bb clr isrflag
-00f01f eb6d ldi wl, LOW(XT_ISREXEC)
-00f020 ef74 ldi wh, HIGH(XT_ISREXEC)
-00f021 cfee rjmp DO_EXECUTE
- .include "dict/nrww.inc"
-
- ; section together with the forth inner interpreter
-
- .include "words/exit.asm"
-
- ; Compiler
- ; end of current colon word
- VE_EXIT:
-00f022 ff04 .dw $ff04
-00f023 7865
-00f024 7469 .db "exit"
-00f025 0586 .dw VE_HEAD
- .set VE_HEAD = VE_EXIT
- XT_EXIT:
-00f026 f027 .dw PFA_EXIT
- PFA_EXIT:
-00f027 91af pop XL
-00f028 91bf pop XH
-00f029 cfdb jmp_ DO_NEXT
- .include "words/execute.asm"
-
- ; System
- ; execute XT
- VE_EXECUTE:
-00f02a ff07 .dw $ff07
-00f02b 7865
-00f02c 6365
-00f02d 7475
-00f02e 0065 .db "execute",0
-00f02f f022 .dw VE_HEAD
- .set VE_HEAD = VE_EXECUTE
- XT_EXECUTE:
-00f030 f031 .dw PFA_EXECUTE
- PFA_EXECUTE:
-00f031 01bc movw wl, tosl
-00f032 9189
-00f033 9199 loadtos
-00f034 cfdb jmp_ DO_EXECUTE
- .include "words/dobranch.asm"
-
- ; System
- ; runtime of branch
- ;VE_DOBRANCH:
- ; .dw $ff08
- ; .db "(branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOBRANCH
- XT_DOBRANCH:
-00f035 f036 .dw PFA_DOBRANCH
- PFA_DOBRANCH:
-00f036 01fd movw zl, XL
-00f037 2755
-00f038 0fee
-00f039 1fff
-00f03a 1f55
-00f03b bf5b
-00f03c 91a7
-00f03d 91b7 readflashcell XL,XH
-00f03e cfc6 jmp_ DO_NEXT
- .include "words/docondbranch.asm"
-
- ; System
- ; runtime of ?branch
- ;VE_DOCONDBRANCH:
- ; .dw $ff09
- ; .db "(?branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONDBRANCH
- XT_DOCONDBRANCH:
-00f03f f040 .dw PFA_DOCONDBRANCH
- PFA_DOCONDBRANCH:
-00f040 2b98 or tosh, tosl
-00f041 9189
-00f042 9199 loadtos
-00f043 f391 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch
-00f044 9611 adiw XL, 1
-00f045 cfbf jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/doliteral.asm"
-
- ; System
- ; runtime of literal
- ;VE_DOLITERAL:
- ; .dw $ff09
- ; .db "(literal)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLITERAL
- XT_DOLITERAL:
-00f046 f047 .dw PFA_DOLITERAL
- PFA_DOLITERAL:
-00f047 939a
-00f048 938a savetos
-00f049 01fd movw zl, xl
-00f04a 2755
-00f04b 0fee
-00f04c 1fff
-00f04d 1f55
-00f04e bf5b
-00f04f 9187
-00f050 9197 readflashcell tosl,tosh
-00f051 9611 adiw xl, 1
-00f052 cfb2 jmp_ DO_NEXT
-
- .include "words/dovariable.asm"
-
- ; System
- ; puts content of parameter field (1 cell) to TOS
- ;VE_DOVARIABLE:
- ; .dw $ff0a
- ; .db "(variable)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOVARIABLE
- XT_DOVARIABLE:
-00f053 f054 .dw PFA_DOVARIABLE
- PFA_DOVARIABLE:
-00f054 939a
-00f055 938a savetos
-00f056 01fb movw zl, wl
-00f057 9631 adiw zl,1
-00f058 2755
-00f059 0fee
-00f05a 1fff
-00f05b 1f55
-00f05c bf5b
-00f05d 9187
-00f05e 9197 readflashcell tosl,tosh
-00f05f cfa5 jmp_ DO_NEXT
- .include "words/doconstant.asm"
-
- ; System
- ; place data field address on TOS
- ;VE_DOCONSTANT:
- ; .dw $ff0a
- ; .db "(constant)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONSTANT
- XT_DOCONSTANT:
-00f060 f061 .dw PFA_DOCONSTANT
- PFA_DOCONSTANT:
-00f061 939a
-00f062 938a savetos
-00f063 01cb movw tosl, wl
-00f064 9601 adiw tosl, 1
-00f065 cf9f jmp_ DO_NEXT
- .include "words/douser.asm"
-
- ; System
- ; runtime part of user
- ;VE_DOUSER:
- ; .dw $ff06
- ; .db "(user)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOUSER
- XT_DOUSER:
-00f066 f067 .dw PFA_DOUSER
- PFA_DOUSER:
-00f067 939a
-00f068 938a savetos
-00f069 01fb movw zl, wl
-00f06a 9631 adiw zl, 1
-00f06b 2755
-00f06c 0fee
-00f06d 1fff
-00f06e 1f55
-00f06f bf5b
-00f070 9187
-00f071 9197 readflashcell tosl,tosh
-00f072 0d84 add tosl, upl
-00f073 1d95 adc tosh, uph
-00f074 cf90 jmp_ DO_NEXT
- .include "words/do-value.asm"
-
- ; System
- ; runtime of value
- VE_DOVALUE:
-00f075 ff07 .dw $ff07
-00f076 7628
-00f077 6c61
-00f078 6575
-00f079 0029 .db "(value)", 0
-00f07a f02a .dw VE_HEAD
- .set VE_HEAD = VE_DOVALUE
- XT_DOVALUE:
-00f07b f001 .dw DO_COLON
- PFA_DOVALUE:
-00f07c 01ad .dw XT_DOCREATE
-00f07d 030d .dw XT_REVEAL
-00f07e 01d0 .dw XT_COMPILE
-00f07f f081 .dw PFA_DOVALUE1
-00f080 f026 .dw XT_EXIT
- PFA_DOVALUE1:
-00f081 940e 0326 call_ DO_DODOES
-00f083 f0c3 .dw XT_DUP
-00f084 fbc6 .dw XT_ICELLPLUS
-00f085 f3e3 .dw XT_FETCHI
-00f086 f030 .dw XT_EXECUTE
-00f087 f026 .dw XT_EXIT
-
- ; : (value) <builds does> dup icell+ @i execute ;
- .include "words/fetch.asm"
-
- ; Memory
- ; read 1 cell from RAM address
- VE_FETCH:
-00f088 ff01 .dw $ff01
-00f089 0040 .db "@",0
-00f08a f075 .dw VE_HEAD
- .set VE_HEAD = VE_FETCH
- XT_FETCH:
-00f08b f08c .dw PFA_FETCH
- PFA_FETCH:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHRAM:
-00f08c 01fc movw zl, tosl
- ; low byte is read before the high byte
-00f08d 9181 ld tosl, z+
-00f08e 9191 ld tosh, z+
-00f08f cf75 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store.asm"
-
- ; Memory
- ; write n to RAM memory at addr, low byte first
- VE_STORE:
-00f090 ff01 .dw $ff01
-00f091 0021 .db "!",0
-00f092 f088 .dw VE_HEAD
- .set VE_HEAD = VE_STORE
- XT_STORE:
-00f093 f094 .dw PFA_STORE
- PFA_STORE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STORERAM:
-00f094 01fc movw zl, tosl
-00f095 9189
-00f096 9199 loadtos
- ; the high byte is written before the low byte
-00f097 8391 std Z+1, tosh
-00f098 8380 std Z+0, tosl
-00f099 9189
-00f09a 9199 loadtos
-00f09b cf69 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/cstore.asm"
-
- ; Memory
- ; store a single byte to RAM address
- VE_CSTORE:
-00f09c ff02 .dw $ff02
-00f09d 2163 .db "c!"
-00f09e f090 .dw VE_HEAD
- .set VE_HEAD = VE_CSTORE
- XT_CSTORE:
-00f09f f0a0 .dw PFA_CSTORE
- PFA_CSTORE:
-00f0a0 01fc movw zl, tosl
-00f0a1 9189
-00f0a2 9199 loadtos
-00f0a3 8380 st Z, tosl
-00f0a4 9189
-00f0a5 9199 loadtos
-00f0a6 cf5e jmp_ DO_NEXT
- .include "words/cfetch.asm"
-
- ; Memory
- ; fetch a single byte from memory mapped locations
- VE_CFETCH:
-00f0a7 ff02 .dw $ff02
-00f0a8 4063 .db "c@"
-00f0a9 f09c .dw VE_HEAD
- .set VE_HEAD = VE_CFETCH
- XT_CFETCH:
-00f0aa f0ab .dw PFA_CFETCH
- PFA_CFETCH:
-00f0ab 01fc movw zl, tosl
-00f0ac 2799 clr tosh
-00f0ad 8180 ld tosl, Z
-00f0ae cf56 jmp_ DO_NEXT
- .include "words/fetch-u.asm"
-
- ; Memory
- ; read 1 cell from USER area
- VE_FETCHU:
-00f0af ff02 .dw $ff02
-00f0b0 7540 .db "@u"
-00f0b1 f0a7 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHU
- XT_FETCHU:
-00f0b2 f001 .dw DO_COLON
- PFA_FETCHU:
-00f0b3 f314 .dw XT_UP_FETCH
-00f0b4 f1af .dw XT_PLUS
-00f0b5 f08b .dw XT_FETCH
-00f0b6 f026 .dw XT_EXIT
- .include "words/store-u.asm"
-
- ; Memory
- ; write n to USER area at offset
- VE_STOREU:
-00f0b7 ff02 .dw $ff02
-00f0b8 7521 .db "!u"
-00f0b9 f0af .dw VE_HEAD
- .set VE_HEAD = VE_STOREU
- XT_STOREU:
-00f0ba f001 .dw DO_COLON
- PFA_STOREU:
-00f0bb f314 .dw XT_UP_FETCH
-00f0bc f1af .dw XT_PLUS
-00f0bd f093 .dw XT_STORE
-00f0be f026 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/dup.asm"
-
- ; Stack
- ; duplicate TOS
- VE_DUP:
-00f0bf ff03 .dw $ff03
-00f0c0 7564
-00f0c1 0070 .db "dup",0
-00f0c2 f0b7 .dw VE_HEAD
- .set VE_HEAD = VE_DUP
- XT_DUP:
-00f0c3 f0c4 .dw PFA_DUP
- PFA_DUP:
-00f0c4 939a
-00f0c5 938a savetos
-00f0c6 cf3e jmp_ DO_NEXT
- .include "words/qdup.asm"
-
- ; Stack
- ; duplicate TOS if non-zero
- VE_QDUP:
-00f0c7 ff04 .dw $ff04
-00f0c8 643f
-00f0c9 7075 .db "?dup"
-00f0ca f0bf .dw VE_HEAD
- .set VE_HEAD = VE_QDUP
- XT_QDUP:
-00f0cb f0cc .dw PFA_QDUP
- PFA_QDUP:
-00f0cc 2f08 mov temp0, tosl
-00f0cd 2b09 or temp0, tosh
-00f0ce f011 breq PFA_QDUP1
-00f0cf 939a
-00f0d0 938a savetos
- PFA_QDUP1:
-00f0d1 cf33 jmp_ DO_NEXT
- .include "words/swap.asm"
-
- ; Stack
- ; swaps the two top level stack cells
- VE_SWAP:
-00f0d2 ff04 .dw $ff04
-00f0d3 7773
-00f0d4 7061 .db "swap"
-00f0d5 f0c7 .dw VE_HEAD
- .set VE_HEAD = VE_SWAP
- XT_SWAP:
-00f0d6 f0d7 .dw PFA_SWAP
- PFA_SWAP:
-00f0d7 018c movw temp0, tosl
-00f0d8 9189
-00f0d9 9199 loadtos
-00f0da 931a st -Y, temp1
-00f0db 930a st -Y, temp0
-00f0dc cf28 jmp_ DO_NEXT
- .include "words/over.asm"
-
- ; Stack
- ; Place a copy of x1 on top of the stack
- VE_OVER:
-00f0dd ff04 .dw $ff04
-00f0de 766f
-00f0df 7265 .db "over"
-00f0e0 f0d2 .dw VE_HEAD
- .set VE_HEAD = VE_OVER
- XT_OVER:
-00f0e1 f0e2 .dw PFA_OVER
- PFA_OVER:
-00f0e2 939a
-00f0e3 938a savetos
-00f0e4 818a ldd tosl, Y+2
-00f0e5 819b ldd tosh, Y+3
-
-00f0e6 cf1e jmp_ DO_NEXT
- .include "words/drop.asm"
-
- ; Stack
- ; drop TOS
- VE_DROP:
-00f0e7 ff04 .dw $ff04
-00f0e8 7264
-00f0e9 706f .db "drop"
-00f0ea f0dd .dw VE_HEAD
- .set VE_HEAD = VE_DROP
- XT_DROP:
-00f0eb f0ec .dw PFA_DROP
- PFA_DROP:
-00f0ec 9189
-00f0ed 9199 loadtos
-00f0ee cf16 jmp_ DO_NEXT
- .include "words/rot.asm"
-
- ; Stack
- ; rotate the three top level cells
- VE_ROT:
-00f0ef ff03 .dw $ff03
-00f0f0 6f72
-00f0f1 0074 .db "rot",0
-00f0f2 f0e7 .dw VE_HEAD
- .set VE_HEAD = VE_ROT
- XT_ROT:
-00f0f3 f0f4 .dw PFA_ROT
- PFA_ROT:
-00f0f4 018c movw temp0, tosl
-00f0f5 9129 ld temp2, Y+
-00f0f6 9139 ld temp3, Y+
-00f0f7 9189
-00f0f8 9199 loadtos
-
-00f0f9 933a st -Y, temp3
-00f0fa 932a st -Y, temp2
-00f0fb 931a st -Y, temp1
-00f0fc 930a st -Y, temp0
-
-00f0fd cf07 jmp_ DO_NEXT
- .include "words/nip.asm"
-
- ; Stack
- ; Remove Second of Stack
- VE_NIP:
-00f0fe ff03 .dw $ff03
-00f0ff 696e
-00f100 0070 .db "nip",0
-00f101 f0ef .dw VE_HEAD
- .set VE_HEAD = VE_NIP
- XT_NIP:
-00f102 f103 .dw PFA_NIP
- PFA_NIP:
-00f103 9622 adiw yl, 2
-00f104 cf00 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/r_from.asm"
-
- ; Stack
- ; move TOR to TOS
- VE_R_FROM:
-00f105 ff02 .dw $ff02
-00f106 3e72 .db "r>"
-00f107 f0fe .dw VE_HEAD
- .set VE_HEAD = VE_R_FROM
- XT_R_FROM:
-00f108 f109 .dw PFA_R_FROM
- PFA_R_FROM:
-00f109 939a
-00f10a 938a savetos
-00f10b 918f pop tosl
-00f10c 919f pop tosh
-00f10d cef7 jmp_ DO_NEXT
- .include "words/to_r.asm"
-
- ; Stack
- ; move TOS to TOR
- VE_TO_R:
-00f10e ff02 .dw $ff02
-00f10f 723e .db ">r"
-00f110 f105 .dw VE_HEAD
- .set VE_HEAD = VE_TO_R
- XT_TO_R:
-00f111 f112 .dw PFA_TO_R
- PFA_TO_R:
-00f112 939f push tosh
-00f113 938f push tosl
-00f114 9189
-00f115 9199 loadtos
-00f116 ceee jmp_ DO_NEXT
- .include "words/r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_R_FETCH:
-00f117 ff02 .dw $ff02
-00f118 4072 .db "r@"
-00f119 f10e .dw VE_HEAD
- .set VE_HEAD = VE_R_FETCH
- XT_R_FETCH:
-00f11a f11b .dw PFA_R_FETCH
- PFA_R_FETCH:
-00f11b 939a
-00f11c 938a savetos
-00f11d 918f pop tosl
-00f11e 919f pop tosh
-00f11f 939f push tosh
-00f120 938f push tosl
-00f121 cee3 jmp_ DO_NEXT
-
-
- .include "words/not-equal.asm"
-
- ; Compare
- ; true if n1 is not equal to n2
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOTEQUAL:
-00f122 ff02 .dw $ff02
-00f123 3e3c .db "<>"
-00f124 f117 .dw VE_HEAD
- .set VE_HEAD = VE_NOTEQUAL
- XT_NOTEQUAL:
-00f125 f001 .dw DO_COLON
- PFA_NOTEQUAL:
- .endif
-
-00f126 fd9a
-00f127 f12c
-00f128 f026 .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT
- .include "words/equalzero.asm"
-
- ; Compare
- ; compare with 0 (zero)
- VE_ZEROEQUAL:
-00f129 ff02 .dw $ff02
-00f12a 3d30 .db "0="
-00f12b f122 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROEQUAL
- XT_ZEROEQUAL:
-00f12c f12d .dw PFA_ZEROEQUAL
- PFA_ZEROEQUAL:
-00f12d 2b98 or tosh, tosl
-00f12e f5d1 brne PFA_ZERO1
-00f12f c030 rjmp PFA_TRUE1
- .include "words/lesszero.asm"
-
- ; Compare
- ; compare with zero
- VE_ZEROLESS:
-00f130 ff02 .dw $ff02
-00f131 3c30 .db "0<"
-00f132 f129 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROLESS
- XT_ZEROLESS:
-00f133 f134 .dw PFA_ZEROLESS
- PFA_ZEROLESS:
-00f134 fd97 sbrc tosh,7
-00f135 c02a rjmp PFA_TRUE1
-00f136 c032 rjmp PFA_ZERO1
- .include "words/greaterzero.asm"
-
- ; Compare
- ; true if n1 is greater than 0
- VE_GREATERZERO:
-00f137 ff02 .dw $ff02
-00f138 3e30 .db "0>"
-00f139 f130 .dw VE_HEAD
- .set VE_HEAD = VE_GREATERZERO
- XT_GREATERZERO:
-00f13a f13b .dw PFA_GREATERZERO
- PFA_GREATERZERO:
-00f13b 1582 cp tosl, zerol
-00f13c 0593 cpc tosh, zeroh
-00f13d f15c brlt PFA_ZERO1
-00f13e f151 brbs 1, PFA_ZERO1
-00f13f c020 rjmp PFA_TRUE1
- .include "words/d-greaterzero.asm"
-
- ; Compare
- ; compares if a double double cell number is greater 0
- VE_DGREATERZERO:
-00f140 ff03 .dw $ff03
-00f141 3064
-00f142 003e .db "d0>",0
-00f143 f137 .dw VE_HEAD
- .set VE_HEAD = VE_DGREATERZERO
- XT_DGREATERZERO:
-00f144 f145 .dw PFA_DGREATERZERO
- PFA_DGREATERZERO:
-00f145 1582 cp tosl, zerol
-00f146 0593 cpc tosh, zeroh
-00f147 9189
-00f148 9199 loadtos
-00f149 0582 cpc tosl, zerol
-00f14a 0593 cpc tosh, zeroh
-00f14b f0ec brlt PFA_ZERO1
-00f14c f0e1 brbs 1, PFA_ZERO1
-00f14d c012 rjmp PFA_TRUE1
- .include "words/d-lesszero.asm"
-
- ; Compare
- ; compares if a double double cell number is less than 0
- VE_DXT_ZEROLESS:
-00f14e ff03 .dw $ff03
-00f14f 3064
-00f150 003c .db "d0<",0
-00f151 f140 .dw VE_HEAD
- .set VE_HEAD = VE_DXT_ZEROLESS
- XT_DXT_ZEROLESS:
-00f152 f153 .dw PFA_DXT_ZEROLESS
- PFA_DXT_ZEROLESS:
-00f153 9622 adiw Y,2
-00f154 fd97 sbrc tosh,7
-00f155 940c f160 jmp PFA_TRUE1
-00f157 940c f169 jmp PFA_ZERO1
-
- .include "words/true.asm"
-
- ; Arithmetics
- ; leaves the value -1 (true) on TOS
- VE_TRUE:
-00f159 ff04 .dw $ff04
-00f15a 7274
-00f15b 6575 .db "true"
-00f15c f14e .dw VE_HEAD
- .set VE_HEAD = VE_TRUE
- XT_TRUE:
-00f15d f15e .dw PFA_TRUE
- PFA_TRUE:
-00f15e 939a
-00f15f 938a savetos
- PFA_TRUE1:
-00f160 ef8f ser tosl
-00f161 ef9f ser tosh
-00f162 cea2 jmp_ DO_NEXT
- .include "words/zero.asm"
-
- ; Arithmetics
- ; place a value 0 on TOS
- VE_ZERO:
-00f163 ff01 .dw $ff01
-00f164 0030 .db "0",0
-00f165 f159 .dw VE_HEAD
- .set VE_HEAD = VE_ZERO
- XT_ZERO:
-00f166 f167 .dw PFA_ZERO
- PFA_ZERO:
-00f167 939a
-00f168 938a savetos
- PFA_ZERO1:
-00f169 01c1 movw tosl, zerol
-00f16a ce9a jmp_ DO_NEXT
- .include "words/uless.asm"
-
- ; Compare
- ; true if u1 < u2 (unsigned)
- VE_ULESS:
-00f16b ff02 .dw $ff02
-00f16c 3c75 .db "u<"
-00f16d f163 .dw VE_HEAD
- .set VE_HEAD = VE_ULESS
- XT_ULESS:
-00f16e f16f .dw PFA_ULESS
- PFA_ULESS:
-00f16f 9129 ld temp2, Y+
-00f170 9139 ld temp3, Y+
-00f171 1782 cp tosl, temp2
-00f172 0793 cpc tosh, temp3
-00f173 f3a8 brlo PFA_ZERO1
-00f174 f3a1 brbs 1, PFA_ZERO1
-00f175 cfea jmp_ PFA_TRUE1
- .include "words/u-greater.asm"
-
- ; Compare
- ; true if u1 > u2 (unsigned)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UGREATER:
-00f176 ff02 .dw $ff02
-00f177 3e75 .db "u>"
-00f178 f16b .dw VE_HEAD
- .set VE_HEAD = VE_UGREATER
- XT_UGREATER:
-00f179 f001 .dw DO_COLON
- PFA_UGREATER:
- .endif
-00f17a f0d6 .DW XT_SWAP
-00f17b f16e .dw XT_ULESS
-00f17c f026 .dw XT_EXIT
- .include "words/less.asm"
-
- ; Compare
- ; true if n1 is less than n2
- VE_LESS:
-00f17d ff01 .dw $ff01
-00f17e 003c .db "<",0
-00f17f f176 .dw VE_HEAD
- .set VE_HEAD = VE_LESS
- XT_LESS:
-00f180 f181 .dw PFA_LESS
- PFA_LESS:
-00f181 9129 ld temp2, Y+
-00f182 9139 ld temp3, Y+
-00f183 1728 cp temp2, tosl
-00f184 0739 cpc temp3, tosh
- PFA_LESSDONE:
-00f185 f71c brge PFA_ZERO1
-00f186 cfd9 rjmp PFA_TRUE1
- .include "words/greater.asm"
-
- ; Compare
- ; flag is true if n1 is greater than n2
- VE_GREATER:
-00f187 ff01 .dw $ff01
-00f188 003e .db ">",0
-00f189 f17d .dw VE_HEAD
- .set VE_HEAD = VE_GREATER
- XT_GREATER:
-00f18a f18b .dw PFA_GREATER
- PFA_GREATER:
-00f18b 9129 ld temp2, Y+
-00f18c 9139 ld temp3, Y+
-00f18d 1728 cp temp2, tosl
-00f18e 0739 cpc temp3, tosh
- PFA_GREATERDONE:
-00f18f f2cc brlt PFA_ZERO1
-00f190 f2c1 brbs 1, PFA_ZERO1
-00f191 cfce rjmp PFA_TRUE1
-
- .include "words/log2.asm"
-
- ; Arithmetics
- ; logarithm to base 2 or highest set bitnumber
- VE_LOG2:
-00f192 ff04 .dw $ff04
-00f193 6f6c
-00f194 3267 .db "log2"
-00f195 f187 .dw VE_HEAD
- .set VE_HEAD = VE_LOG2
- XT_LOG2:
-00f196 f197 .dw PFA_LOG2
- PFA_LOG2:
-00f197 01fc movw zl, tosl
-00f198 2799 clr tosh
-00f199 e180 ldi tosl, 16
- PFA_LOG2_1:
-00f19a 958a dec tosl
-00f19b f022 brmi PFA_LOG2_2 ; wrong data
-00f19c 0fee lsl zl
-00f19d 1fff rol zh
-00f19e f7d8 brcc PFA_LOG2_1
-00f19f ce65 jmp_ DO_NEXT
-
- PFA_LOG2_2:
-00f1a0 959a dec tosh
-00f1a1 ce63 jmp_ DO_NEXT
- .include "words/minus.asm"
-
- ; Arithmetics
- ; subtract n2 from n1
- VE_MINUS:
-00f1a2 ff01 .dw $ff01
-00f1a3 002d .db "-",0
-00f1a4 f192 .dw VE_HEAD
- .set VE_HEAD = VE_MINUS
- XT_MINUS:
-00f1a5 f1a6 .dw PFA_MINUS
- PFA_MINUS:
-00f1a6 9109 ld temp0, Y+
-00f1a7 9119 ld temp1, Y+
-00f1a8 1b08 sub temp0, tosl
-00f1a9 0b19 sbc temp1, tosh
-00f1aa 01c8 movw tosl, temp0
-00f1ab ce59 jmp_ DO_NEXT
- .include "words/plus.asm"
-
- ; Arithmetics
- ; add n1 and n2
- VE_PLUS:
-00f1ac ff01 .dw $ff01
-00f1ad 002b .db "+",0
-00f1ae f1a2 .dw VE_HEAD
- .set VE_HEAD = VE_PLUS
- XT_PLUS:
-00f1af f1b0 .dw PFA_PLUS
- PFA_PLUS:
-00f1b0 9109 ld temp0, Y+
-00f1b1 9119 ld temp1, Y+
-00f1b2 0f80 add tosl, temp0
-00f1b3 1f91 adc tosh, temp1
-00f1b4 ce50 jmp_ DO_NEXT
- .include "words/mstar.asm"
-
- ; Arithmetics
- ; multiply 2 cells to a double cell
- VE_MSTAR:
-00f1b5 ff02 .dw $ff02
-00f1b6 2a6d .db "m*"
-00f1b7 f1ac .dw VE_HEAD
- .set VE_HEAD = VE_MSTAR
- XT_MSTAR:
-00f1b8 f1b9 .dw PFA_MSTAR
- PFA_MSTAR:
-00f1b9 018c movw temp0, tosl
-00f1ba 9189
-00f1bb 9199 loadtos
-00f1bc 019c movw temp2, tosl
- ; high cell ah*bh
-00f1bd 0231 muls temp3, temp1
-00f1be 0170 movw temp4, r0
- ; low cell al*bl
-00f1bf 9f20 mul temp2, temp0
-00f1c0 01c0 movw tosl, r0
- ; signed ah*bl
-00f1c1 0330 mulsu temp3, temp0
-00f1c2 08f3 sbc temp5, zeroh
-00f1c3 0d90 add tosh, r0
-00f1c4 1ce1 adc temp4, r1
-00f1c5 1cf3 adc temp5, zeroh
-
- ; signed al*bh
-00f1c6 0312 mulsu temp1, temp2
-00f1c7 08f3 sbc temp5, zeroh
-00f1c8 0d90 add tosh, r0
-00f1c9 1ce1 adc temp4, r1
-00f1ca 1cf3 adc temp5, zeroh
-
-00f1cb 939a
-00f1cc 938a savetos
-00f1cd 01c7 movw tosl, temp4
-00f1ce ce36 jmp_ DO_NEXT
- .include "words/umslashmod.asm"
-
- ; Arithmetics
- ; unsigned division ud / u2 with remainder
- VE_UMSLASHMOD:
-00f1cf ff06 .dw $ff06
-00f1d0 6d75
-00f1d1 6d2f
-00f1d2 646f .db "um/mod"
-00f1d3 f1b5 .dw VE_HEAD
- .set VE_HEAD = VE_UMSLASHMOD
- XT_UMSLASHMOD:
-00f1d4 f1d5 .dw PFA_UMSLASHMOD
- PFA_UMSLASHMOD:
-00f1d5 017c movw temp4, tosl
-
-00f1d6 9129 ld temp2, Y+
-00f1d7 9139 ld temp3, Y+
-
-00f1d8 9109 ld temp0, Y+
-00f1d9 9119 ld temp1, Y+
-
- ;; unsigned 32/16 -> 16r16 divide
-
- PFA_UMSLASHMODmod:
-
- ; set loop counter
-00f1da e140 ldi temp6,$10
-
- PFA_UMSLASHMODmod_loop:
- ; shift left, saving high bit
-00f1db 2755 clr temp7
-00f1dc 0f00 lsl temp0
-00f1dd 1f11 rol temp1
-00f1de 1f22 rol temp2
-00f1df 1f33 rol temp3
-00f1e0 1f55 rol temp7
-
- ; try subtracting divisor
-00f1e1 152e cp temp2, temp4
-00f1e2 053f cpc temp3, temp5
-00f1e3 0552 cpc temp7,zerol
-
-00f1e4 f018 brcs PFA_UMSLASHMODmod_loop_control
-
- PFA_UMSLASHMODmod_subtract:
- ; dividend is large enough
- ; do the subtraction for real
- ; and set lowest bit
-00f1e5 9503 inc temp0
-00f1e6 192e sub temp2, temp4
-00f1e7 093f sbc temp3, temp5
-
- PFA_UMSLASHMODmod_loop_control:
-00f1e8 954a dec temp6
-00f1e9 f789 brne PFA_UMSLASHMODmod_loop
-
- PFA_UMSLASHMODmod_done:
- ; put remainder on stack
-00f1ea 933a st -Y,temp3
-00f1eb 932a st -Y,temp2
-
- ; put quotient on stack
-00f1ec 01c8 movw tosl, temp0
-00f1ed ce17 jmp_ DO_NEXT
- .include "words/umstar.asm"
-
- ; Arithmetics
- ; multiply 2 unsigned cells to a double cell
- VE_UMSTAR:
-00f1ee ff03 .dw $ff03
-00f1ef 6d75
-00f1f0 002a .db "um*",0
-00f1f1 f1cf .dw VE_HEAD
- .set VE_HEAD = VE_UMSTAR
- XT_UMSTAR:
-00f1f2 f1f3 .dw PFA_UMSTAR
- PFA_UMSTAR:
-00f1f3 018c movw temp0, tosl
-00f1f4 9189
-00f1f5 9199 loadtos
- ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
- ; low bytes
-00f1f6 9f80 mul tosl,temp0
-00f1f7 01f0 movw zl, r0
-00f1f8 2722 clr temp2
-00f1f9 2733 clr temp3
- ; middle bytes
-00f1fa 9f90 mul tosh, temp0
-00f1fb 0df0 add zh, r0
-00f1fc 1d21 adc temp2, r1
-00f1fd 1d33 adc temp3, zeroh
-
-00f1fe 9f81 mul tosl, temp1
-00f1ff 0df0 add zh, r0
-00f200 1d21 adc temp2, r1
-00f201 1d33 adc temp3, zeroh
-
-00f202 9f91 mul tosh, temp1
-00f203 0d20 add temp2, r0
-00f204 1d31 adc temp3, r1
-00f205 01cf movw tosl, zl
-00f206 939a
-00f207 938a savetos
-00f208 01c9 movw tosl, temp2
-00f209 cdfb jmp_ DO_NEXT
-
- .include "words/invert.asm"
-
- ; Arithmetics
- ; 1-complement of TOS
- VE_INVERT:
-00f20a ff06 .dw $ff06
-00f20b 6e69
-00f20c 6576
-00f20d 7472 .db "invert"
-00f20e f1ee .dw VE_HEAD
- .set VE_HEAD = VE_INVERT
- XT_INVERT:
-00f20f f210 .dw PFA_INVERT
- PFA_INVERT:
-00f210 9580 com tosl
-00f211 9590 com tosh
-00f212 cdf2 jmp_ DO_NEXT
- .include "words/2slash.asm"
-
- ; Arithmetics
- ; arithmetic shift right
- VE_2SLASH:
-00f213 ff02 .dw $ff02
-00f214 2f32 .db "2/"
-00f215 f20a .dw VE_HEAD
- .set VE_HEAD = VE_2SLASH
- XT_2SLASH:
-00f216 f217 .dw PFA_2SLASH
- PFA_2SLASH:
-00f217 9595 asr tosh
-00f218 9587 ror tosl
-00f219 cdeb jmp_ DO_NEXT
- .include "words/2star.asm"
-
- ; Arithmetics
- ; arithmetic shift left, filling with zero
- VE_2STAR:
-00f21a ff02 .dw $ff02
-00f21b 2a32 .db "2*"
-00f21c f213 .dw VE_HEAD
- .set VE_HEAD = VE_2STAR
- XT_2STAR:
-00f21d f21e .dw PFA_2STAR
- PFA_2STAR:
-00f21e 0f88 lsl tosl
-00f21f 1f99 rol tosh
-00f220 cde4 jmp_ DO_NEXT
- .include "words/and.asm"
-
- ; Logic
- ; bitwise and
- VE_AND:
-00f221 ff03 .dw $ff03
-00f222 6e61
-00f223 0064 .db "and",0
-00f224 f21a .dw VE_HEAD
- .set VE_HEAD = VE_AND
- XT_AND:
-00f225 f226 .dw PFA_AND
- PFA_AND:
-00f226 9109 ld temp0, Y+
-00f227 9119 ld temp1, Y+
-00f228 2380 and tosl, temp0
-00f229 2391 and tosh, temp1
-00f22a cdda jmp_ DO_NEXT
- .include "words/or.asm"
-
- ; Logic
- ; logical or
- VE_OR:
-00f22b ff02 .dw $ff02
-00f22c 726f .db "or"
-00f22d f221 .dw VE_HEAD
- .set VE_HEAD = VE_OR
- XT_OR:
-00f22e f22f .dw PFA_OR
- PFA_OR:
-00f22f 9109 ld temp0, Y+
-00f230 9119 ld temp1, Y+
-00f231 2b80 or tosl, temp0
-00f232 2b91 or tosh, temp1
-00f233 cdd1 jmp_ DO_NEXT
-
- .include "words/xor.asm"
-
- ; Logic
- ; exclusive or
- VE_XOR:
-00f234 ff03 .dw $ff03
-00f235 6f78
-00f236 0072 .db "xor",0
-00f237 f22b .dw VE_HEAD
- .set VE_HEAD = VE_XOR
- XT_XOR:
-00f238 f239 .dw PFA_XOR
- PFA_XOR:
-00f239 9109 ld temp0, Y+
-00f23a 9119 ld temp1, Y+
-00f23b 2780 eor tosl, temp0
-00f23c 2791 eor tosh, temp1
-00f23d cdc7 jmp_ DO_NEXT
-
- .include "words/1plus.asm"
-
- ; Arithmetics
- ; optimized increment
- VE_1PLUS:
-00f23e ff02 .dw $ff02
-00f23f 2b31 .db "1+"
-00f240 f234 .dw VE_HEAD
- .set VE_HEAD = VE_1PLUS
- XT_1PLUS:
-00f241 f242 .dw PFA_1PLUS
- PFA_1PLUS:
-00f242 9601 adiw tosl,1
-00f243 cdc1 jmp_ DO_NEXT
- .include "words/1minus.asm"
-
- ; Arithmetics
- ; optimized decrement
- VE_1MINUS:
-00f244 ff02 .dw $ff02
-00f245 2d31 .db "1-"
-00f246 f23e .dw VE_HEAD
- .set VE_HEAD = VE_1MINUS
- XT_1MINUS:
-00f247 f248 .dw PFA_1MINUS
- PFA_1MINUS:
-00f248 9701 sbiw tosl, 1
-00f249 cdbb jmp_ DO_NEXT
- .include "words/q-negate.asm"
-
- ; 0< IF NEGATE THEN ; ...a common factor
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QNEGATE:
-00f24a ff07 .dw $ff07
-00f24b 6e3f
-00f24c 6765
-00f24d 7461
-../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte
-00f24e 0065 .db "?negate"
-00f24f f244 .dw VE_HEAD
- .set VE_HEAD = VE_QNEGATE
- XT_QNEGATE:
-00f250 f001 .dw DO_COLON
- PFA_QNEGATE:
-
- .endif
-00f251 f133
-00f252 f03f .DW XT_ZEROLESS,XT_DOCONDBRANCH
-00f253 f255 DEST(QNEG1)
-00f254 f65a .DW XT_NEGATE
-00f255 f026 QNEG1: .DW XT_EXIT
- .include "words/lshift.asm"
-
- ; Arithmetics
- ; logically shift n1 left n2 times
- VE_LSHIFT:
-00f256 ff06 .dw $ff06
-00f257 736c
-00f258 6968
-00f259 7466 .db "lshift"
-00f25a f24a .dw VE_HEAD
- .set VE_HEAD = VE_LSHIFT
- XT_LSHIFT:
-00f25b f25c .dw PFA_LSHIFT
- PFA_LSHIFT:
-00f25c 01fc movw zl, tosl
-00f25d 9189
-00f25e 9199 loadtos
- PFA_LSHIFT1:
-00f25f 9731 sbiw zl, 1
-00f260 f01a brmi PFA_LSHIFT2
-00f261 0f88 lsl tosl
-00f262 1f99 rol tosh
-00f263 cffb rjmp PFA_LSHIFT1
- PFA_LSHIFT2:
-00f264 cda0 jmp_ DO_NEXT
-
- .include "words/rshift.asm"
-
- ; Arithmetics
- ; shift n1 n2-times logically right
- VE_RSHIFT:
-00f265 ff06 .dw $ff06
-00f266 7372
-00f267 6968
-00f268 7466 .db "rshift"
-00f269 f256 .dw VE_HEAD
- .set VE_HEAD = VE_RSHIFT
- XT_RSHIFT:
-00f26a f26b .dw PFA_RSHIFT
- PFA_RSHIFT:
-00f26b 01fc movw zl, tosl
-00f26c 9189
-00f26d 9199 loadtos
- PFA_RSHIFT1:
-00f26e 9731 sbiw zl, 1
-00f26f f01a brmi PFA_RSHIFT2
-00f270 9596 lsr tosh
-00f271 9587 ror tosl
-00f272 cffb rjmp PFA_RSHIFT1
- PFA_RSHIFT2:
-00f273 cd91 jmp_ DO_NEXT
-
- .include "words/plusstore.asm"
-
- ; Arithmetics
- ; add n to content of RAM address a-addr
- VE_PLUSSTORE:
-00f274 ff02 .dw $ff02
-00f275 212b .db "+!"
-00f276 f265 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSSTORE
- XT_PLUSSTORE:
-00f277 f278 .dw PFA_PLUSSTORE
- PFA_PLUSSTORE:
-00f278 01fc movw zl, tosl
-00f279 9189
-00f27a 9199 loadtos
-00f27b 8120 ldd temp2, Z+0
-00f27c 8131 ldd temp3, Z+1
-00f27d 0f82 add tosl, temp2
-00f27e 1f93 adc tosh, temp3
-00f27f 8380 std Z+0, tosl
-00f280 8391 std Z+1, tosh
-00f281 9189
-00f282 9199 loadtos
-00f283 cd81 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/rpfetch.asm"
-
- ; Stack
- ; current return stack pointer address
- VE_RP_FETCH:
-00f284 ff03 .dw $ff03
-00f285 7072
-00f286 0040 .db "rp@",0
-00f287 f274 .dw VE_HEAD
- .set VE_HEAD = VE_RP_FETCH
- XT_RP_FETCH:
-00f288 f289 .dw PFA_RP_FETCH
- PFA_RP_FETCH:
-00f289 939a
-00f28a 938a savetos
-00f28b b78d in tosl, SPL
-00f28c b79e in tosh, SPH
-00f28d cd77 jmp_ DO_NEXT
- .include "words/rpstore.asm"
-
- ; Stack
- ; set return stack pointer
- VE_RP_STORE:
-00f28e ff03 .dw $ff03
-00f28f 7072
-00f290 0021 .db "rp!",0
-00f291 f284 .dw VE_HEAD
- .set VE_HEAD = VE_RP_STORE
- XT_RP_STORE:
-00f292 f293 .dw PFA_RP_STORE
- PFA_RP_STORE:
-00f293 b72f in temp2, SREG
-00f294 94f8 cli
-00f295 bf8d out SPL, tosl
-00f296 bf9e out SPH, tosh
-00f297 bf2f out SREG, temp2
-00f298 9189
-00f299 9199 loadtos
-00f29a cd6a jmp_ DO_NEXT
- .include "words/spfetch.asm"
-
- ; Stack
- ; current data stack pointer
- VE_SP_FETCH:
-00f29b ff03 .dw $ff03
-00f29c 7073
-00f29d 0040 .db "sp@",0
-00f29e f28e .dw VE_HEAD
- .set VE_HEAD = VE_SP_FETCH
- XT_SP_FETCH:
-00f29f f2a0 .dw PFA_SP_FETCH
- PFA_SP_FETCH:
-00f2a0 939a
-00f2a1 938a savetos
-00f2a2 01ce movw tosl, yl
-00f2a3 cd61 jmp_ DO_NEXT
- .include "words/spstore.asm"
-
- ; Stack
- ; set data stack pointer to addr
- VE_SP_STORE:
-00f2a4 ff03 .dw $ff03
-00f2a5 7073
-00f2a6 0021 .db "sp!",0
-00f2a7 f29b .dw VE_HEAD
- .set VE_HEAD = VE_SP_STORE
- XT_SP_STORE:
-00f2a8 f2a9 .dw PFA_SP_STORE
- PFA_SP_STORE:
-00f2a9 01ec movw yl, tosl
-00f2aa 9189
-00f2ab 9199 loadtos
-00f2ac cd58 jmp_ DO_NEXT
-
- .include "words/dodo.asm"
-
- ; System
- ; runtime of do
- ;VE_DODO:
- ; .dw $ff04
- ; .db "(do)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DODO
- XT_DODO:
-00f2ad f2ae .dw PFA_DODO
- PFA_DODO:
-00f2ae 9129 ld temp2, Y+
-00f2af 9139 ld temp3, Y+ ; limit
- PFA_DODO1:
-00f2b0 e8e0 ldi zl, $80
-00f2b1 0f3e add temp3, zl
-00f2b2 1b82 sub tosl, temp2
-00f2b3 0b93 sbc tosh, temp3
-
-00f2b4 933f push temp3
-00f2b5 932f push temp2 ; limit ( --> limit + $8000)
-00f2b6 939f push tosh
-00f2b7 938f push tosl ; start -> index ( --> index - (limit - $8000)
-00f2b8 9189
-00f2b9 9199 loadtos
-00f2ba cd4a jmp_ DO_NEXT
- .include "words/i.asm"
-
- ; Compiler
- ; current loop counter
- VE_I:
-00f2bb ff01 .dw $FF01
-00f2bc 0069 .db "i",0
-00f2bd f2a4 .dw VE_HEAD
- .set VE_HEAD = VE_I
- XT_I:
-00f2be f2bf .dw PFA_I
- PFA_I:
-00f2bf 939a
-00f2c0 938a savetos
-00f2c1 918f pop tosl
-00f2c2 919f pop tosh ; index
-00f2c3 91ef pop zl
-00f2c4 91ff pop zh ; limit
-00f2c5 93ff push zh
-00f2c6 93ef push zl
-00f2c7 939f push tosh
-00f2c8 938f push tosl
-00f2c9 0f8e add tosl, zl
-00f2ca 1f9f adc tosh, zh
-00f2cb cd39 jmp_ DO_NEXT
- .include "words/doplusloop.asm"
-
- ; System
- ; runtime of +loop
- ;VE_DOPLUSLOOP:
- ; .dw $ff07
- ; .db "(+loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOPLUSLOOP
- XT_DOPLUSLOOP:
-00f2cc f2cd .dw PFA_DOPLUSLOOP
- PFA_DOPLUSLOOP:
-00f2cd 91ef pop zl
-00f2ce 91ff pop zh
-00f2cf 0fe8 add zl, tosl
-00f2d0 1ff9 adc zh, tosh
-00f2d1 9189
-00f2d2 9199 loadtos
-00f2d3 f01b brvs PFA_DOPLUSLOOP_LEAVE
- ; next cycle
- PFA_DOPLUSLOOP_NEXT:
- ; next iteration
-00f2d4 93ff push zh
-00f2d5 93ef push zl
-00f2d6 cd5f rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
- PFA_DOPLUSLOOP_LEAVE:
-00f2d7 910f pop temp0
-00f2d8 911f pop temp1 ; remove limit
-00f2d9 9611 adiw xl, 1 ; skip branch-back address
-00f2da cd2a jmp_ DO_NEXT
- .include "words/doloop.asm"
-
- ; System
- ; runtime of loop
- ;VE_DOLOOP:
- ; .dw $ff06
- ; .db "(loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLOOP
- XT_DOLOOP:
-00f2db f2dc .dw PFA_DOLOOP
- PFA_DOLOOP:
-00f2dc 91ef pop zl
-00f2dd 91ff pop zh
-00f2de 9631 adiw zl,1
-00f2df f3bb brvs PFA_DOPLUSLOOP_LEAVE
-00f2e0 cff3 jmp_ PFA_DOPLUSLOOP_NEXT
- .include "words/unloop.asm"
-
- ; Compiler
- ; remove loop-sys, exit the loop and continue execution after it
- VE_UNLOOP:
-00f2e1 ff06 .dw $ff06
-00f2e2 6e75
-00f2e3 6f6c
-00f2e4 706f .db "unloop"
-00f2e5 f2bb .dw VE_HEAD
- .set VE_HEAD = VE_UNLOOP
- XT_UNLOOP:
-00f2e6 f2e7 .dw PFA_UNLOOP
- PFA_UNLOOP:
-00f2e7 911f pop temp1
-00f2e8 910f pop temp0
-00f2e9 911f pop temp1
-00f2ea 910f pop temp0
-00f2eb cd19 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .include "words/cmove_g.asm"
-
- ; Memory
- ; copy data in RAM from higher to lower addresses.
- VE_CMOVE_G:
-00f2ec ff06 .dw $ff06
-00f2ed 6d63
-00f2ee 766f
-00f2ef 3e65 .db "cmove>"
-00f2f0 f2e1 .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE_G
- XT_CMOVE_G:
-00f2f1 f2f2 .dw PFA_CMOVE_G
- PFA_CMOVE_G:
-00f2f2 93bf push xh
-00f2f3 93af push xl
-00f2f4 91e9 ld zl, Y+
-00f2f5 91f9 ld zh, Y+ ; addr-to
-00f2f6 91a9 ld xl, Y+
-00f2f7 91b9 ld xh, Y+ ; addr-from
-00f2f8 2f09 mov temp0, tosh
-00f2f9 2b08 or temp0, tosl
-00f2fa f041 brbs 1, PFA_CMOVE_G1
-00f2fb 0fe8 add zl, tosl
-00f2fc 1ff9 adc zh, tosh
-00f2fd 0fa8 add xl, tosl
-00f2fe 1fb9 adc xh, tosh
- PFA_CMOVE_G2:
-00f2ff 911e ld temp1, -X
-00f300 9312 st -Z, temp1
-00f301 9701 sbiw tosl, 1
-00f302 f7e1 brbc 1, PFA_CMOVE_G2
- PFA_CMOVE_G1:
-00f303 91af pop xl
-00f304 91bf pop xh
-00f305 9189
-00f306 9199 loadtos
-00f307 ccfd jmp_ DO_NEXT
- .include "words/byteswap.asm"
-
- ; Arithmetics
- ; exchange the bytes of the TOS
- VE_BYTESWAP:
-00f308 ff02 .dw $ff02
-00f309 3c3e .db "><"
-00f30a f2ec .dw VE_HEAD
- .set VE_HEAD = VE_BYTESWAP
- XT_BYTESWAP:
-00f30b f30c .dw PFA_BYTESWAP
- PFA_BYTESWAP:
-00f30c 2f09 mov temp0, tosh
-00f30d 2f98 mov tosh, tosl
-00f30e 2f80 mov tosl, temp0
-00f30f ccf5 jmp_ DO_NEXT
- .include "words/up.asm"
-
- ; System Variable
- ; get user area pointer
- VE_UP_FETCH:
-00f310 ff03 .dw $ff03
-00f311 7075
-00f312 0040 .db "up@",0
-00f313 f308 .dw VE_HEAD
- .set VE_HEAD = VE_UP_FETCH
- XT_UP_FETCH:
-00f314 f315 .dw PFA_UP_FETCH
- PFA_UP_FETCH:
-00f315 939a
-00f316 938a savetos
-00f317 01c2 movw tosl, upl
-00f318 ccec jmp_ DO_NEXT
-
- ; ( addr -- )
- ; System Variable
- ; set user area pointer
- VE_UP_STORE:
-00f319 ff03 .dw $ff03
-00f31a 7075
-00f31b 0021 .db "up!",0
-00f31c f310 .dw VE_HEAD
- .set VE_HEAD = VE_UP_STORE
- XT_UP_STORE:
-00f31d f31e .dw PFA_UP_STORE
- PFA_UP_STORE:
-00f31e 012c movw upl, tosl
-00f31f 9189
-00f320 9199 loadtos
-00f321 cce3 jmp_ DO_NEXT
- .include "words/1ms.asm"
-
- ; Time
- ; busy waits (almost) exactly 1 millisecond
- VE_1MS:
-00f322 ff03 .dw $ff03
-00f323 6d31
-00f324 0073 .db "1ms",0
-00f325 f319 .dw VE_HEAD
- .set VE_HEAD = VE_1MS
- XT_1MS:
-00f326 f327 .dw PFA_1MS
- PFA_1MS:
-00f327 eae0
-00f328 e0ff
-00f329 9731
-00f32a f7f1 delay 1000
-00f32b ccd9 jmp_ DO_NEXT
- .include "words/2to_r.asm"
-
- ; Stack
- ; move DTOS to TOR
- VE_2TO_R:
-00f32c ff03 .dw $ff03
-00f32d 3e32
-00f32e 0072 .db "2>r",0
-00f32f f322 .dw VE_HEAD
- .set VE_HEAD = VE_2TO_R
- XT_2TO_R:
-00f330 f331 .dw PFA_2TO_R
- PFA_2TO_R:
-00f331 01fc movw zl, tosl
-00f332 9189
-00f333 9199 loadtos
-00f334 939f push tosh
-00f335 938f push tosl
-00f336 93ff push zh
-00f337 93ef push zl
-00f338 9189
-00f339 9199 loadtos
-00f33a ccca jmp_ DO_NEXT
- .include "words/2r_from.asm"
-
- ; Stack
- ; move DTOR to TOS
- VE_2R_FROM:
-00f33b ff03 .dw $ff03
-00f33c 7232
-00f33d 003e .db "2r>",0
-00f33e f32c .dw VE_HEAD
- .set VE_HEAD = VE_2R_FROM
- XT_2R_FROM:
-00f33f f340 .dw PFA_2R_FROM
- PFA_2R_FROM:
-00f340 939a
-00f341 938a savetos
-00f342 91ef pop zl
-00f343 91ff pop zh
-00f344 918f pop tosl
-00f345 919f pop tosh
-00f346 939a
-00f347 938a savetos
-00f348 01cf movw tosl, zl
-00f349 ccbb jmp_ DO_NEXT
-
- .include "words/store-e.asm"
-
- ; Memory
- ; write n (2bytes) to eeprom address
- VE_STOREE:
-00f34a ff02 .dw $ff02
-00f34b 6521 .db "!e"
-00f34c f33b .dw VE_HEAD
- .set VE_HEAD = VE_STOREE
- XT_STOREE:
-00f34d f34e .dw PFA_STOREE
- PFA_STOREE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STOREE0:
-00f34e 01fc movw zl, tosl
-00f34f 9189
-00f350 9199 loadtos
-00f351 b72f in_ temp2, SREG
-00f352 94f8 cli
-00f353 d028 rcall PFA_FETCHE2
-00f354 b500 in_ temp0, EEDR
-00f355 1708 cp temp0,tosl
-00f356 f009 breq PFA_STOREE3
-00f357 d00b rcall PFA_STOREE1
- PFA_STOREE3:
-00f358 9631 adiw zl,1
-00f359 d022 rcall PFA_FETCHE2
-00f35a b500 in_ temp0, EEDR
-00f35b 1709 cp temp0,tosh
-00f35c f011 breq PFA_STOREE4
-00f35d 2f89 mov tosl, tosh
-00f35e d004 rcall PFA_STOREE1
- PFA_STOREE4:
-00f35f bf2f out_ SREG, temp2
-00f360 9189
-00f361 9199 loadtos
-00f362 cca2 jmp_ DO_NEXT
-
- PFA_STOREE1:
-00f363 99f9 sbic EECR, EEPE
-00f364 cffe rjmp PFA_STOREE1
-
- PFA_STOREE2: ; estore_wait_low_spm:
-00f365 b707 in_ temp0, SPMCSR
-00f366 fd00 sbrc temp0,SPMEN
-00f367 cffd rjmp PFA_STOREE2
-
-00f368 bdf2 out_ EEARH,zh
-00f369 bde1 out_ EEARL,zl
-00f36a bd80 out_ EEDR, tosl
-00f36b 9afa sbi EECR,EEMPE
-00f36c 9af9 sbi EECR,EEPE
-
-00f36d 9508 ret
- .if WANT_UNIFIED == 1
- .endif
- .include "words/fetch-e.asm"
-
- ; Memory
- ; read 1 cell from eeprom
- VE_FETCHE:
-00f36e ff02 .dw $ff02
-00f36f 6540 .db "@e"
-00f370 f34a .dw VE_HEAD
- .set VE_HEAD = VE_FETCHE
- XT_FETCHE:
-00f371 f372 .dw PFA_FETCHE
- PFA_FETCHE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHE1:
-00f372 b72f in_ temp2, SREG
-00f373 94f8 cli
-00f374 01fc movw zl, tosl
-00f375 d006 rcall PFA_FETCHE2
-00f376 b580 in_ tosl, EEDR
-
-00f377 9631 adiw zl,1
-
-00f378 d003 rcall PFA_FETCHE2
-00f379 b590 in_ tosh, EEDR
-00f37a bf2f out_ SREG, temp2
-00f37b cc89 jmp_ DO_NEXT
-
- PFA_FETCHE2:
-00f37c 99f9 sbic EECR, EEPE
-00f37d cffe rjmp PFA_FETCHE2
-
-00f37e bdf2 out_ EEARH,zh
-00f37f bde1 out_ EEARL,zl
-
-00f380 9af8 sbi EECR,EERE
-00f381 9508 ret
-
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store-i.asm"
-
- ; System Value
- ; Deferred action to write a single 16bit cell to flash
- VE_STOREI:
-00f382 ff02 .dw $ff02
-00f383 6921 .db "!i"
-00f384 f36e .dw VE_HEAD
- .set VE_HEAD = VE_STOREI
- XT_STOREI:
-00f385 fc2e .dw PFA_DODEFER1
- PFA_STOREI:
-00f386 0078 .dw EE_STOREI
-00f387 fbcf .dw XT_EDEFERFETCH
-00f388 fbd9 .dw XT_EDEFERSTORE
- .if FLASHEND > $10000
- .else
- .include "words/store-i_nrww.asm"
-
- ; Memory
- ; writes n to flash memory using assembly code (code to be placed in boot loader section)
- VE_DO_STOREI_NRWW:
-00f389 ff09 .dw $ff09
-00f38a 2128
-00f38b 2d69
-00f38c 726e
-00f38d 7777
-00f38e 0029 .db "(!i-nrww)",0
-00f38f f382 .dw VE_HEAD
- .set VE_HEAD = VE_DO_STOREI_NRWW
- XT_DO_STOREI:
-00f390 f391 .dw PFA_DO_STOREI_NRWW
- PFA_DO_STOREI_NRWW:
- ; store status register
-00f391 b71f in temp1,SREG
-00f392 931f push temp1
-00f393 94f8 cli
-
-00f394 019c movw temp2, tosl ; save the (word) address
-00f395 9189
-00f396 9199 loadtos ; get the new value for the flash cell
-00f397 93af push xl
-00f398 93bf push xh
-00f399 93cf push yl
-00f39a 93df push yh
-00f39b d009 rcall DO_STOREI_atmega
-00f39c 91df pop yh
-00f39d 91cf pop yl
-00f39e 91bf pop xh
-00f39f 91af pop xl
- ; finally clear the stack
-00f3a0 9189
-00f3a1 9199 loadtos
-00f3a2 911f pop temp1
- ; restore status register (and interrupt enable flag)
-00f3a3 bf1f out SREG,temp1
-
-00f3a4 cc60 jmp_ DO_NEXT
-
- ;
- DO_STOREI_atmega:
- ; write data to temp page buffer
- ; use the values in tosl/tosh at the
- ; appropiate place
-00f3a5 d010 rcall pageload
-
- ; erase page if needed
- ; it is needed if a bit goes from 0 to 1
-00f3a6 94e0 com temp4
-00f3a7 94f0 com temp5
-00f3a8 218e and tosl, temp4
-00f3a9 219f and tosh, temp5
-00f3aa 2b98 or tosh, tosl
-00f3ab f019 breq DO_STOREI_writepage
-00f3ac 01f9 movw zl, temp2
-00f3ad e002 ldi temp0,(1<<PGERS)
-00f3ae d023 rcall dospm
-
- DO_STOREI_writepage:
- ; write page
-00f3af 01f9 movw zl, temp2
-00f3b0 e004 ldi temp0,(1<<PGWRT)
-00f3b1 d020 rcall dospm
-
- ; reenable RWW section
-00f3b2 01f9 movw zl, temp2
-00f3b3 e100 ldi temp0,(1<<RWWSRE)
-00f3b4 d01d rcall dospm
-00f3b5 9508 ret
-
- ; load the desired page
- .equ pagemask = ~ ( PAGESIZE - 1 )
- pageload:
-00f3b6 01f9 movw zl, temp2
- ; get the beginning of page
-00f3b7 78e0 andi zl,low(pagemask)
-00f3b8 7fff andi zh,high(pagemask)
-00f3b9 01ef movw y, z
- ; loop counter (in words)
-00f3ba e8a0 ldi xl,low(pagesize)
-00f3bb e0b0 ldi xh,high(pagesize)
- pageload_loop:
- ; we need the current flash value anyways
-00f3bc 01fe movw z, y
-00f3bd 2755
-00f3be 0fee
-00f3bf 1fff
-00f3c0 1f55
-00f3c1 bf5b
-00f3c2 9147
-00f3c3 9157 readflashcell temp6, temp7 ; destroys Z
- ; now check: if Z points to the same cell as temp2/3, we want the new data
-00f3c4 01fe movw z, y
-00f3c5 17e2 cp zl, temp2
-00f3c6 07f3 cpc zh, temp3
-00f3c7 f011 breq pageload_newdata
-00f3c8 010a movw r0, temp6
-00f3c9 c002 rjmp pageload_cont
- pageload_newdata:
-00f3ca 017a movw temp4, temp6
-00f3cb 010c movw r0, tosl
- pageload_cont:
-00f3cc 2700 clr temp0
-00f3cd d004 rcall dospm
-00f3ce 9621 adiw y, 1
-00f3cf 9711 sbiw x, 1
-00f3d0 f759 brne pageload_loop
-
- pageload_done:
-00f3d1 9508 ret
-
-
- ;; dospm
- ;;
- ;; execute spm instruction
- ;; temp0 holds the value for SPMCR
-
- dospm:
- dospm_wait_ee:
-00f3d2 99f9 sbic EECR, EEPE
-00f3d3 cffe rjmp dospm_wait_ee
- dospm_wait_spm:
-00f3d4 b717 in_ temp1, SPMCSR
-00f3d5 fd10 sbrc temp1, SPMEN
-00f3d6 cffd rjmp dospm_wait_spm
-
- ; turn the word addres into a byte address
-00f3d7 2755
-00f3d8 0fee
-00f3d9 1fff
-00f3da 1f55
-00f3db bf5b writeflashcell
- ; execute spm
-00f3dc 6001 ori temp0, (1<<SPMEN)
-00f3dd bf07 out_ SPMCSR,temp0
-00f3de 95e8 spm
-00f3df 9508 ret
- .endif
- .include "words/fetch-i.asm"
-
- ; Memory
- ; read 1 cell from flash
- VE_FETCHI:
-00f3e0 ff02 .dw $ff02
-00f3e1 6940 .db "@i"
-00f3e2 f389 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHI
- XT_FETCHI:
-00f3e3 f3e4 .dw PFA_FETCHI
- PFA_FETCHI:
-00f3e4 01fc movw zl, tosl
-00f3e5 2755
-00f3e6 0fee
-00f3e7 1fff
-00f3e8 1f55
-00f3e9 bf5b
-00f3ea 9187
-00f3eb 9197 readflashcell tosl,tosh
-00f3ec cc18 jmp_ DO_NEXT
-
- .if AMFORTH_NRWW_SIZE>8000
- .include "dict/core_8k.inc"
-
- .include "words/n_to_r.asm"
-
- ; Stack
- ; move n items from data stack to return stack
- VE_N_TO_R:
-00f3ed ff03 .dw $ff03
-00f3ee 3e6e
-00f3ef 0072 .db "n>r",0
-00f3f0 f3e0 .dw VE_HEAD
- .set VE_HEAD = VE_N_TO_R
- XT_N_TO_R:
-00f3f1 f3f2 .dw PFA_N_TO_R
- PFA_N_TO_R:
-00f3f2 01fc movw zl, tosl
-00f3f3 2f08 mov temp0, tosl
- PFA_N_TO_R1:
-00f3f4 9189
-00f3f5 9199 loadtos
-00f3f6 939f push tosh
-00f3f7 938f push tosl
-00f3f8 950a dec temp0
-00f3f9 f7d1 brne PFA_N_TO_R1
-00f3fa 93ef push zl
-00f3fb 93ff push zh
-00f3fc 9189
-00f3fd 9199 loadtos
-00f3fe cc06 jmp_ DO_NEXT
- .include "words/n_r_from.asm"
-
- ; Stack
- ; move n items from return stack to data stack
- VE_N_R_FROM:
-00f3ff ff03 .dw $ff03
-00f400 726e
-00f401 003e .db "nr>",0
-00f402 f3ed .dw VE_HEAD
- .set VE_HEAD = VE_N_R_FROM
- XT_N_R_FROM:
-00f403 f404 .dw PFA_N_R_FROM
- PFA_N_R_FROM:
-00f404 939a
-00f405 938a savetos
-00f406 91ff pop zh
-00f407 91ef pop zl
-00f408 2f0e mov temp0, zl
- PFA_N_R_FROM1:
-00f409 918f pop tosl
-00f40a 919f pop tosh
-00f40b 939a
-00f40c 938a savetos
-00f40d 950a dec temp0
-00f40e f7d1 brne PFA_N_R_FROM1
-00f40f 01cf movw tosl, zl
-00f410 cbf4 jmp_ DO_NEXT
-
- .include "words/d-2star.asm"
-
- ; Arithmetics
- ; shift a double cell left
- VE_D2STAR:
-00f411 ff03 .dw $ff03
-00f412 3264
-00f413 002a .db "d2*",0
-00f414 f3ff .dw VE_HEAD
- .set VE_HEAD = VE_D2STAR
- XT_D2STAR:
-00f415 f416 .dw PFA_D2STAR
- PFA_D2STAR:
-00f416 9109 ld temp0, Y+
-00f417 9119 ld temp1, Y+
-00f418 0f00 lsl temp0
-00f419 1f11 rol temp1
-00f41a 1f88 rol tosl
-00f41b 1f99 rol tosh
-00f41c 931a st -Y, temp1
-00f41d 930a st -Y, temp0
-00f41e cbe6 jmp_ DO_NEXT
- .include "words/d-2slash.asm"
-
- ; Arithmetics
- ; shift a double cell value right
- VE_D2SLASH:
-00f41f ff03 .dw $ff03
-00f420 3264
-00f421 002f .db "d2/",0
-00f422 f411 .dw VE_HEAD
- .set VE_HEAD = VE_D2SLASH
- XT_D2SLASH:
-00f423 f424 .dw PFA_D2SLASH
- PFA_D2SLASH:
-00f424 9109 ld temp0, Y+
-00f425 9119 ld temp1, Y+
-00f426 9595 asr tosh
-00f427 9587 ror tosl
-00f428 9517 ror temp1
-00f429 9507 ror temp0
-00f42a 931a st -Y, temp1
-00f42b 930a st -Y, temp0
-00f42c cbd8 jmp_ DO_NEXT
- .include "words/d-plus.asm"
-
- ; Arithmetics
- ; add 2 double cell values
- VE_DPLUS:
-00f42d ff02 .dw $ff02
-00f42e 2b64 .db "d+"
-00f42f f41f .dw VE_HEAD
- .set VE_HEAD = VE_DPLUS
- XT_DPLUS:
-00f430 f431 .dw PFA_DPLUS
- PFA_DPLUS:
-00f431 9129 ld temp2, Y+
-00f432 9139 ld temp3, Y+
-
-00f433 90e9 ld temp4, Y+
-00f434 90f9 ld temp5, Y+
-00f435 9149 ld temp6, Y+
-00f436 9159 ld temp7, Y+
-
-00f437 0f24 add temp2, temp6
-00f438 1f35 adc temp3, temp7
-00f439 1d8e adc tosl, temp4
-00f43a 1d9f adc tosh, temp5
-
-00f43b 933a st -Y, temp3
-00f43c 932a st -Y, temp2
-00f43d cbc7 jmp_ DO_NEXT
- .include "words/d-minus.asm"
-
- ; Arithmetics
- ; subtract d2 from d1
- VE_DMINUS:
-00f43e ff02 .dw $ff02
-00f43f 2d64 .db "d-"
-00f440 f42d .dw VE_HEAD
- .set VE_HEAD = VE_DMINUS
- XT_DMINUS:
-00f441 f442 .dw PFA_DMINUS
- PFA_DMINUS:
-00f442 9129 ld temp2, Y+
-00f443 9139 ld temp3, Y+
-
-00f444 90e9 ld temp4, Y+
-00f445 90f9 ld temp5, Y+
-00f446 9149 ld temp6, Y+
-00f447 9159 ld temp7, Y+
-
-00f448 1b42 sub temp6, temp2
-00f449 0b53 sbc temp7, temp3
-00f44a 0ae8 sbc temp4, tosl
-00f44b 0af9 sbc temp5, tosh
-
-00f44c 935a st -Y, temp7
-00f44d 934a st -Y, temp6
-00f44e 01c7 movw tosl, temp4
-00f44f cbb5 jmp_ DO_NEXT
- .include "words/d-invert.asm"
-
- ; Arithmetics
- ; invert all bits in the double cell value
- VE_DINVERT:
-00f450 ff07 .dw $ff07
-00f451 6964
-00f452 766e
-00f453 7265
-00f454 0074 .db "dinvert",0
-00f455 f43e .dw VE_HEAD
- .set VE_HEAD = VE_DINVERT
- XT_DINVERT:
-00f456 f457 .dw PFA_DINVERT
- PFA_DINVERT:
-00f457 9109 ld temp0, Y+
-00f458 9119 ld temp1, Y+
-00f459 9580 com tosl
-00f45a 9590 com tosh
-00f45b 9500 com temp0
-00f45c 9510 com temp1
-00f45d 931a st -Y, temp1
-00f45e 930a st -Y, temp0
-00f45f cba5 jmp_ DO_NEXT
- .include "words/u-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDOT:
-00f460 ff02 .dw $ff02
-00f461 2e75 .db "u."
-00f462 f450 .dw VE_HEAD
- .set VE_HEAD = VE_UDOT
- XT_UDOT:
-00f463 f001 .dw DO_COLON
- PFA_UDOT:
- .endif
-00f464 f166 .dw XT_ZERO
-00f465 f745 .dw XT_UDDOT
-00f466 f026 .dw XT_EXIT
- ; : u. ( us -- ) 0 ud. ;
- .include "words/u-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cells numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDOTR:
-00f467 ff03 .dw $ff03
-00f468 2e75
-00f469 0072 .db "u.r",0
-00f46a f460 .dw VE_HEAD
- .set VE_HEAD = VE_UDOTR
- XT_UDOTR:
-00f46b f001 .dw DO_COLON
- PFA_UDOTR:
- .endif
-00f46c f166 .dw XT_ZERO
-00f46d f0d6 .dw XT_SWAP
-00f46e f74e .dw XT_UDDOTR
-00f46f f026 .dw XT_EXIT
- ; : u.r ( s n -- ) 0 swap ud.r ;
-
- .include "words/show-wordlist.asm"
-
- ; Tools
- ; prints the name of the words in a wordlist
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHOWWORDLIST:
-00f470 ff0d .dw $ff0d
-00f471 6873
-00f472 776f
-00f473 772d
-00f474 726f
-00f475 6c64
-00f476 7369
-00f477 0074 .db "show-wordlist",0
-00f478 f467 .dw VE_HEAD
- .set VE_HEAD = VE_SHOWWORDLIST
- XT_SHOWWORDLIST:
-00f479 f001 .dw DO_COLON
- PFA_SHOWWORDLIST:
- .endif
-00f47a f046 .dw XT_DOLITERAL
-00f47b f47f .dw XT_SHOWWORD
-00f47c f0d6 .dw XT_SWAP
-00f47d fc72 .dw XT_TRAVERSEWORDLIST
-00f47e f026 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SHOWWORD:
-00f47f f001 .dw DO_COLON
- PFA_SHOWWORD:
- .endif
-00f480 fc8d .dw XT_NAME2STRING
-00f481 f7bb .dw XT_ITYPE
-00f482 f7fd .dw XT_SPACE ; ( -- addr n)
-00f483 f15d .dw XT_TRUE
-00f484 f026 .dw XT_EXIT
- .include "words/words.asm"
-
- ; Tools
- ; prints a list of all (visible) words in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_WORDS:
-00f485 ff05 .dw $ff05
-00f486 6f77
-00f487 6472
-00f488 0073 .db "words",0
-00f489 f470 .dw VE_HEAD
- .set VE_HEAD = VE_WORDS
- XT_WORDS:
-00f48a f001 .dw DO_COLON
- PFA_WORDS:
- .endif
-00f48b f046 .dw XT_DOLITERAL
-00f48c 005e .dw CFG_ORDERLISTLEN+2
-00f48d f371 .dw XT_FETCHE
-00f48e f479 .dw XT_SHOWWORDLIST
-00f48f f026 .dw XT_EXIT
- .include "dict/interrupt.inc"
-
- .if WANT_INTERRUPTS == 1
-
- .if WANT_INTERRUPT_COUNTERS == 1
- .endif
-
- .include "words/int-on.asm"
-
- ; Interrupt
- ; turns on all interrupts
- VE_INTON:
-00f490 ff04 .dw $ff04
-00f491 692b
-00f492 746e .db "+int"
-00f493 f485 .dw VE_HEAD
- .set VE_HEAD = VE_INTON
- XT_INTON:
-00f494 f495 .dw PFA_INTON
- PFA_INTON:
-00f495 9478 sei
-00f496 cb6e jmp_ DO_NEXT
- .include "words/int-off.asm"
-
- ; Interrupt
- ; turns off all interrupts
- VE_INTOFF:
-00f497 ff04 .dw $ff04
-00f498 692d
-00f499 746e .db "-int"
-00f49a f490 .dw VE_HEAD
- .set VE_HEAD = VE_INTOFF
- XT_INTOFF:
-00f49b f49c .dw PFA_INTOFF
- PFA_INTOFF:
-00f49c 94f8 cli
-00f49d cb67 jmp_ DO_NEXT
- .include "words/int-store.asm"
-
- ; Interrupt
- ; stores XT as interrupt vector i
- VE_INTSTORE:
-00f49e ff04 .dw $ff04
-00f49f 6e69
-00f4a0 2174 .db "int!"
-00f4a1 f497 .dw VE_HEAD
- .set VE_HEAD = VE_INTSTORE
- XT_INTSTORE:
-00f4a2 f001 .dw DO_COLON
- PFA_INTSTORE:
-00f4a3 f046 .dw XT_DOLITERAL
-00f4a4 0000 .dw intvec
-00f4a5 f1af .dw XT_PLUS
-00f4a6 f34d .dw XT_STOREE
-00f4a7 f026 .dw XT_EXIT
- .include "words/int-fetch.asm"
-
- ; Interrupt
- ; fetches XT from interrupt vector i
- VE_INTFETCH:
-00f4a8 ff04 .dw $ff04
-00f4a9 6e69
-00f4aa 4074 .db "int@"
-00f4ab f49e .dw VE_HEAD
- .set VE_HEAD = VE_INTFETCH
- XT_INTFETCH:
-00f4ac f001 .dw DO_COLON
- PFA_INTFETCH:
-00f4ad f046 .dw XT_DOLITERAL
-00f4ae 0000 .dw intvec
-00f4af f1af .dw XT_PLUS
-00f4b0 f371 .dw XT_FETCHE
-00f4b1 f026 .dw XT_EXIT
- .include "words/int-trap.asm"
-
- ; Interrupt
- ; trigger an interrupt
- VE_INTTRAP:
-00f4b2 ff08 .dw $ff08
-00f4b3 6e69
-00f4b4 2d74
-00f4b5 7274
-00f4b6 7061 .db "int-trap"
-00f4b7 f4a8 .dw VE_HEAD
- .set VE_HEAD = VE_INTTRAP
- XT_INTTRAP:
-00f4b8 f4b9 .dw PFA_INTTRAP
- PFA_INTTRAP:
-00f4b9 2eb8 mov isrflag, tosl
-00f4ba 9189
-00f4bb 9199 loadtos
-00f4bc cb48 jmp_ DO_NEXT
-
- .include "words/isr-exec.asm"
-
- ; Interrupt
- ; executes an interrupt service routine
- ;VE_ISREXEC:
- ; .dw $ff08
- ; .db "isr-exec"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREXEC
- XT_ISREXEC:
-00f4bd f001 .dw DO_COLON
- PFA_ISREXEC:
-00f4be f4ac .dw XT_INTFETCH
-00f4bf f030 .dw XT_EXECUTE
-00f4c0 f4c2 .dw XT_ISREND
-00f4c1 f026 .dw XT_EXIT
- .include "words/isr-end.asm"
-
- ; Interrupt
- ; re-enables interrupts in an ISR
- ;VE_ISREND:
- ; .dw $ff07
- ; .db "isr-end",0
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREND
- XT_ISREND:
-00f4c2 f4c3 .dw PFA_ISREND
- PFA_ISREND:
-00f4c3 d001 rcall PFA_ISREND1 ; clear the interrupt flag for the controller
-00f4c4 cb40 jmp_ DO_NEXT
- PFA_ISREND1:
-00f4c5 9518 reti
- .endif
-
- .include "words/pick.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PICK:
-00f4c6 ff04 .dw $ff04
-00f4c7 6970
-00f4c8 6b63 .db "pick"
-00f4c9 f4b2 .dw VE_HEAD
- .set VE_HEAD = VE_PICK
- XT_PICK:
-00f4ca f001 .dw DO_COLON
- PFA_PICK:
- .endif
-00f4cb f241 .dw XT_1PLUS
-00f4cc f573 .dw XT_CELLS
-00f4cd f29f .dw XT_SP_FETCH
-00f4ce f1af .dw XT_PLUS
-00f4cf f08b .dw XT_FETCH
-00f4d0 f026 .dw XT_EXIT
- .include "words/dot-quote.asm"
-
- ; Compiler
- ; compiles string into dictionary to be printed at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOTSTRING:
-00f4d1 0002 .dw $0002
-00f4d2 222e .db ".",$22
-00f4d3 f4c6 .dw VE_HEAD
- .set VE_HEAD = VE_DOTSTRING
- XT_DOTSTRING:
-00f4d4 f001 .dw DO_COLON
- PFA_DOTSTRING:
- .endif
-00f4d5 f4dc .dw XT_SQUOTE
-00f4d6 01d0 .dw XT_COMPILE
-00f4d7 f7bb .dw XT_ITYPE
-00f4d8 f026 .dw XT_EXIT
- .include "words/squote.asm"
-
- ; Compiler
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SQUOTE:
-00f4d9 0002 .dw $0002
-00f4da 2273 .db "s",$22
-00f4db f4d1 .dw VE_HEAD
- .set VE_HEAD = VE_SQUOTE
- XT_SQUOTE:
-00f4dc f001 .dw DO_COLON
- PFA_SQUOTE:
- .endif
-00f4dd f046 .dw XT_DOLITERAL
-00f4de 0022 .dw 34 ; 0x22
-00f4df f9a2 .dw XT_PARSE ; ( -- addr n)
-00f4e0 f566 .dw XT_STATE
-00f4e1 f08b .dw XT_FETCH
-00f4e2 f03f .dw XT_DOCONDBRANCH
-00f4e3 f4e5 DEST(PFA_SQUOTE1)
-00f4e4 01fc .dw XT_SLITERAL
- PFA_SQUOTE1:
-00f4e5 f026 .dw XT_EXIT
-
- .include "words/fill.asm"
-
- ; Memory
- ; fill u bytes memory beginning at a-addr with character c
- VE_FILL:
-00f4e6 ff04 .dw $ff04
-00f4e7 6966
-00f4e8 6c6c .db "fill"
-00f4e9 f4d9 .dw VE_HEAD
- .set VE_HEAD = VE_FILL
- XT_FILL:
-00f4ea f001 .dw DO_COLON
- PFA_FILL:
-00f4eb f0f3 .dw XT_ROT
-00f4ec f0f3 .dw XT_ROT
-00f4ed f0cb
-00f4ee f03f .dw XT_QDUP,XT_DOCONDBRANCH
-00f4ef f4f7 DEST(PFA_FILL2)
-00f4f0 fd79 .dw XT_BOUNDS
-00f4f1 f2ad .dw XT_DODO
- PFA_FILL1:
-00f4f2 f0c3 .dw XT_DUP
-00f4f3 f2be .dw XT_I
-00f4f4 f09f .dw XT_CSTORE ; ( -- c c-addr)
-00f4f5 f2db .dw XT_DOLOOP
-00f4f6 f4f2 .dw PFA_FILL1
- PFA_FILL2:
-00f4f7 f0eb .dw XT_DROP
-00f4f8 f026 .dw XT_EXIT
-
- .include "words/environment.asm"
-
- ; System Value
- ; word list identifier of the environmental search list
- VE_ENVIRONMENT:
-00f4f9 ff0b .dw $ff0b
-00f4fa 6e65
-00f4fb 6976
-00f4fc 6f72
-00f4fd 6d6e
-00f4fe 6e65
-00f4ff 0074 .db "environment",0
-00f500 f4e6 .dw VE_HEAD
- .set VE_HEAD = VE_ENVIRONMENT
- XT_ENVIRONMENT:
-00f501 f054 .dw PFA_DOVARIABLE
- PFA_ENVIRONMENT:
-00f502 0056 .dw CFG_ENVIRONMENT
- .include "words/env-wordlists.asm"
-
- ; Environment
- ; maximum number of wordlists in the dictionary search order
- VE_ENVWORDLISTS:
-00f503 ff09 .dw $ff09
-00f504 6f77
-00f505 6472
-00f506 696c
-00f507 7473
-00f508 0073 .db "wordlists",0
-00f509 0000 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVWORDLISTS
- XT_ENVWORDLISTS:
-00f50a f001 .dw DO_COLON
- PFA_ENVWORDLISTS:
-00f50b f046 .dw XT_DOLITERAL
-00f50c 0008 .dw NUMWORDLISTS
-00f50d f026 .dw XT_EXIT
- .include "words/env-slashpad.asm"
-
- ; Environment
- ; Size of the PAD buffer in bytes
- VE_ENVSLASHPAD:
-00f50e ff04 .dw $ff04
-00f50f 702f
-00f510 6461 .db "/pad"
-00f511 f503 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHPAD
- XT_ENVSLASHPAD:
-00f512 f001 .dw DO_COLON
- PFA_ENVSLASHPAD:
-00f513 f29f .dw XT_SP_FETCH
-00f514 f59f .dw XT_PAD
-00f515 f1a5 .dw XT_MINUS
-00f516 f026 .dw XT_EXIT
- .include "words/env-slashhold.asm"
-
- ; Environment
- ; size of the pictured numeric output buffer in bytes
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENVSLASHHOLD:
-00f517 ff05 .dw $ff05
-00f518 682f
-00f519 6c6f
-00f51a 0064 .db "/hold",0
-00f51b f50e .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHHOLD
- XT_ENVSLASHHOLD:
-00f51c f001 .dw DO_COLON
- PFA_ENVSLASHHOLD:
- .endif
-00f51d f59f .dw XT_PAD
-00f51e f5da .dw XT_HERE
-00f51f f1a5 .dw XT_MINUS
-00f520 f026 .dw XT_EXIT
- .include "words/env-forthname.asm"
-
- ; Environment
- ; flash address of the amforth name string
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHNAME:
-00f521 ff0a .dw $ff0a
-00f522 6f66
-00f523 7472
-00f524 2d68
-00f525 616e
-00f526 656d .db "forth-name"
-00f527 f517 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHNAME
- XT_ENV_FORTHNAME:
-00f528 f001 .dw DO_COLON
- PFA_EN_FORTHNAME:
-00f529 f788 .dw XT_DOSLITERAL
-00f52a 0007 .dw 7
- .endif
-00f52b 6d61
-00f52c 6f66
-00f52d 7472
-../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte
-00f52e 0068 .db "amforth"
- .if cpu_msp430==1
- .endif
-00f52f f026 .dw XT_EXIT
- .include "words/env-forthversion.asm"
-
- ; Environment
- ; version number of amforth
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHVERSION:
-00f530 ff07 .dw $ff07
-00f531 6576
-00f532 7372
-00f533 6f69
-00f534 006e .db "version",0
-00f535 f521 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHVERSION
- XT_ENV_FORTHVERSION:
-00f536 f001 .dw DO_COLON
- PFA_EN_FORTHVERSION:
- .endif
-00f537 f046 .dw XT_DOLITERAL
-00f538 0041 .dw 65
-00f539 f026 .dw XT_EXIT
- .include "words/env-cpu.asm"
-
- ; Environment
- ; flash address of the CPU identification string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_CPU:
-00f53a ff03 .dw $ff03
-00f53b 7063
-00f53c 0075 .db "cpu",0
-00f53d f530 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_CPU
- XT_ENV_CPU:
-00f53e f001 .dw DO_COLON
- PFA_EN_CPU:
- .endif
-00f53f f046 .dw XT_DOLITERAL
-00f540 0049 .dw mcu_name
-00f541 f7e7 .dw XT_ICOUNT
-00f542 f026 .dw XT_EXIT
- .include "words/env-mcuinfo.asm"
-
- ; Environment
- ; flash address of some CPU specific parameters
- VE_ENV_MCUINFO:
-00f543 ff08 .dw $ff08
-00f544 636d
-00f545 2d75
-00f546 6e69
-00f547 6f66 .db "mcu-info"
-00f548 f53a .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_MCUINFO
- XT_ENV_MCUINFO:
-00f549 f001 .dw DO_COLON
- PFA_EN_MCUINFO:
-00f54a f046 .dw XT_DOLITERAL
-00f54b 0045 .dw mcu_info
-00f54c f026 .dw XT_EXIT
- .include "words/env-usersize.asm"
-
- ; Environment
- ; size of the USER area in bytes
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_ENVUSERSIZE:
-00f54d ff05 .dw $ff05
-00f54e 752f
-00f54f 6573
-00f550 0072 .db "/user",0
-00f551 f543 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVUSERSIZE
- XT_ENVUSERSIZE:
-00f552 f001 .dw DO_COLON
- PFA_ENVUSERSIZE:
- .endif
-00f553 f046 .dw XT_DOLITERAL
-00f554 002c .dw SYSUSERSIZE + APPUSERSIZE
-00f555 f026 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/f_cpu.asm"
-
- ; System
- ; put the cpu frequency in Hz on stack
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_F_CPU:
-00f556 ff05 .dw $ff05
-00f557 5f66
-00f558 7063
-00f559 0075 .db "f_cpu",0
-00f55a f4f9 .dw VE_HEAD
- .set VE_HEAD = VE_F_CPU
- XT_F_CPU:
-00f55b f001 .dw DO_COLON
- PFA_F_CPU:
- .endif
-00f55c f046 .dw XT_DOLITERAL
-00f55d 2400 .dw (F_CPU % 65536)
-00f55e f046 .dw XT_DOLITERAL
-00f55f 00f4 .dw (F_CPU / 65536)
-00f560 f026 .dw XT_EXIT
- .include "words/state.asm"
-
- ; System Variable
- ; system state
- VE_STATE:
-00f561 ff05 .dw $ff05
-00f562 7473
-00f563 7461
-00f564 0065 .db "state",0
-00f565 f556 .dw VE_HEAD
- .set VE_HEAD = VE_STATE
- XT_STATE:
-00f566 f054 .dw PFA_DOVARIABLE
- PFA_STATE:
-00f567 013d .dw ram_state
-
- .dseg
-00013d ram_state: .byte 2
- .include "words/base.asm"
-
- ; Numeric IO
- ; location of the cell containing the number conversion radix
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BASE:
-00f568 ff04 .dw $ff04
-00f569 6162
-00f56a 6573 .db "base"
-00f56b f561 .dw VE_HEAD
- .set VE_HEAD = VE_BASE
- XT_BASE:
-00f56c f067 .dw PFA_DOUSER
- PFA_BASE:
- .endif
-00f56d 000c .dw USER_BASE
-
- .include "words/cells.asm"
-
- ; Arithmetics
- ; n2 is the size in address units of n1 cells
- VE_CELLS:
-00f56e ff05 .dw $ff05
-00f56f 6563
-00f570 6c6c
-00f571 0073 .db "cells",0
-00f572 f568 .dw VE_HEAD
- .set VE_HEAD = VE_CELLS
- XT_CELLS:
-00f573 f21e .dw PFA_2STAR
- .include "words/cellplus.asm"
-
- ; Arithmetics
- ; add the size of an address-unit to a-addr1
- VE_CELLPLUS:
-00f574 ff05 .dw $ff05
-00f575 6563
-00f576 6c6c
-00f577 002b .db "cell+",0
-00f578 f56e .dw VE_HEAD
- .set VE_HEAD = VE_CELLPLUS
- XT_CELLPLUS:
-00f579 f57a .dw PFA_CELLPLUS
- PFA_CELLPLUS:
-00f57a 9602 adiw tosl, CELLSIZE
-00f57b ca89 jmp_ DO_NEXT
-
- .include "words/2dup.asm"
-
- ; Stack
- ; Duplicate the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DUP:
-00f57c ff04 .dw $ff04
-00f57d 6432
-00f57e 7075 .db "2dup"
-00f57f f574 .dw VE_HEAD
- .set VE_HEAD = VE_2DUP
- XT_2DUP:
-00f580 f001 .dw DO_COLON
- PFA_2DUP:
- .endif
-
-00f581 f0e1 .dw XT_OVER
-00f582 f0e1 .dw XT_OVER
-00f583 f026 .dw XT_EXIT
- .include "words/2drop.asm"
-
- ; Stack
- ; Remove the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DROP:
-00f584 ff05 .dw $ff05
-00f585 6432
-00f586 6f72
-00f587 0070 .db "2drop",0
-00f588 f57c .dw VE_HEAD
- .set VE_HEAD = VE_2DROP
- XT_2DROP:
-00f589 f001 .dw DO_COLON
- PFA_2DROP:
- .endif
-00f58a f0eb .dw XT_DROP
-00f58b f0eb .dw XT_DROP
-00f58c f026 .dw XT_EXIT
-
- .include "words/tuck.asm"
-
- ; Stack
- ; Copy the first (top) stack item below the second stack item.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TUCK:
-00f58d ff04 .dw $ff04
-00f58e 7574
-00f58f 6b63 .db "tuck"
-00f590 f584 .dw VE_HEAD
- .set VE_HEAD = VE_TUCK
- XT_TUCK:
-00f591 f001 .dw DO_COLON
- PFA_TUCK:
- .endif
-00f592 f0d6 .dw XT_SWAP
-00f593 f0e1 .dw XT_OVER
-00f594 f026 .dw XT_EXIT
-
- .include "words/to-in.asm"
-
- ; System Variable
- ; pointer to current read position in input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_IN:
-00f595 ff03 .dw $ff03
-00f596 693e
-00f597 006e .db ">in",0
-00f598 f58d .dw VE_HEAD
- .set VE_HEAD = VE_TO_IN
- XT_TO_IN:
-00f599 f067 .dw PFA_DOUSER
- PFA_TO_IN:
- .endif
-00f59a 0018 .dw USER_TO_IN
- .include "words/pad.asm"
-
- ; System Variable
- ; Address of the temporary scratch buffer.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PAD:
-00f59b ff03 .dw $ff03
-00f59c 6170
-00f59d 0064 .db "pad",0
-00f59e f595 .dw VE_HEAD
- .set VE_HEAD = VE_PAD
- XT_PAD:
-00f59f f001 .dw DO_COLON
- PFA_PAD:
- .endif
-00f5a0 f5da .dw XT_HERE
-00f5a1 f046 .dw XT_DOLITERAL
-00f5a2 0028 .dw 40
-00f5a3 f1af .dw XT_PLUS
-00f5a4 f026 .dw XT_EXIT
- .include "words/emit.asm"
-
- ; Character IO
- ; fetch the emit vector and execute it. should emit a character from TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMIT:
-00f5a5 ff04 .dw $ff04
-00f5a6 6d65
-00f5a7 7469 .db "emit"
-00f5a8 f59b .dw VE_HEAD
- .set VE_HEAD = VE_EMIT
- XT_EMIT:
-00f5a9 fc2e .dw PFA_DODEFER1
- PFA_EMIT:
- .endif
-00f5aa 000e .dw USER_EMIT
-00f5ab fbf7 .dw XT_UDEFERFETCH
-00f5ac fc03 .dw XT_UDEFERSTORE
- .include "words/emitq.asm"
-
- ; Character IO
- ; fetch emit? vector and execute it. should return the ready-to-send condition
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMITQ:
-00f5ad ff05 .dw $ff05
-00f5ae 6d65
-00f5af 7469
-00f5b0 003f .db "emit?",0
-00f5b1 f5a5 .dw VE_HEAD
- .set VE_HEAD = VE_EMITQ
- XT_EMITQ:
-00f5b2 fc2e .dw PFA_DODEFER1
- PFA_EMITQ:
- .endif
-00f5b3 0010 .dw USER_EMITQ
-00f5b4 fbf7 .dw XT_UDEFERFETCH
-00f5b5 fc03 .dw XT_UDEFERSTORE
- .include "words/key.asm"
-
- ; Character IO
- ; fetch key vector and execute it, should leave a single character on TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEY:
-00f5b6 ff03 .dw $ff03
-00f5b7 656b
-00f5b8 0079 .db "key",0
-00f5b9 f5ad .dw VE_HEAD
- .set VE_HEAD = VE_KEY
- XT_KEY:
-00f5ba fc2e .dw PFA_DODEFER1
- PFA_KEY:
- .endif
-00f5bb 0012 .dw USER_KEY
-00f5bc fbf7 .dw XT_UDEFERFETCH
-00f5bd fc03 .dw XT_UDEFERSTORE
- .include "words/keyq.asm"
-
- ; Character IO
- ; fetch key? vector and execute it. should turn on key sender, if it is disabled/stopped
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEYQ:
-00f5be ff04 .dw $ff04
-00f5bf 656b
-00f5c0 3f79 .db "key?"
-00f5c1 f5b6 .dw VE_HEAD
- .set VE_HEAD = VE_KEYQ
- XT_KEYQ:
-00f5c2 fc2e .dw PFA_DODEFER1
- PFA_KEYQ:
- .endif
-00f5c3 0014 .dw USER_KEYQ
-00f5c4 fbf7 .dw XT_UDEFERFETCH
-00f5c5 fc03 .dw XT_UDEFERSTORE
-
- .include "words/dp.asm"
-
- ; System Value
- ; address of the next free dictionary cell
- VE_DP:
-00f5c6 ff02 .dw $ff02
-00f5c7 7064 .db "dp"
-00f5c8 f5be .dw VE_HEAD
- .set VE_HEAD = VE_DP
- XT_DP:
-00f5c9 f081 .dw PFA_DOVALUE1
- PFA_DP:
-00f5ca 0048 .dw CFG_DP
-00f5cb fbcf .dw XT_EDEFERFETCH
-00f5cc fbd9 .dw XT_EDEFERSTORE
- .include "words/ehere.asm"
-
- ; System Value
- ; address of the next free address in eeprom
- VE_EHERE:
-00f5cd ff05 .dw $ff05
-00f5ce 6865
-00f5cf 7265
-00f5d0 0065 .db "ehere",0
-00f5d1 f5c6 .dw VE_HEAD
- .set VE_HEAD = VE_EHERE
- XT_EHERE:
-00f5d2 f081 .dw PFA_DOVALUE1
- PFA_EHERE:
-00f5d3 004c .dw EE_EHERE
-00f5d4 fbcf .dw XT_EDEFERFETCH
-00f5d5 fbd9 .dw XT_EDEFERSTORE
- .include "words/here.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_HERE:
-00f5d6 ff04 .dw $ff04
-00f5d7 6568
-00f5d8 6572 .db "here"
-00f5d9 f5cd .dw VE_HEAD
- .set VE_HEAD = VE_HERE
- XT_HERE:
-00f5da f081 .dw PFA_DOVALUE1
- PFA_HERE:
-00f5db 004a .dw EE_HERE
-00f5dc fbcf .dw XT_EDEFERFETCH
-00f5dd fbd9 .dw XT_EDEFERSTORE
- .include "words/allot.asm"
-
- ; System
- ; allocate or release memory in RAM
- VE_ALLOT:
-00f5de ff05 .dw $ff05
-00f5df 6c61
-00f5e0 6f6c
-00f5e1 0074 .db "allot",0
-00f5e2 f5d6 .dw VE_HEAD
- .set VE_HEAD = VE_ALLOT
- XT_ALLOT:
-00f5e3 f001 .dw DO_COLON
- PFA_ALLOT:
-00f5e4 f5da .dw XT_HERE
-00f5e5 f1af .dw XT_PLUS
-00f5e6 fbb4 .dw XT_DOTO
-00f5e7 f5db .dw PFA_HERE
-00f5e8 f026 .dw XT_EXIT
-
- .include "words/bin.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BIN:
-00f5e9 ff03 .dw $ff03
-00f5ea 6962
-00f5eb 006e .db "bin",0
-00f5ec f5de .dw VE_HEAD
- .set VE_HEAD = VE_BIN
- XT_BIN:
-00f5ed f001 .dw DO_COLON
- PFA_BIN:
- .endif
-00f5ee fda6 .dw XT_TWO
-00f5ef f56c .dw XT_BASE
-00f5f0 f093 .dw XT_STORE
-00f5f1 f026 .dw XT_EXIT
- .include "words/decimal.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DECIMAL:
-00f5f2 ff07 .dw $ff07
-00f5f3 6564
-00f5f4 6963
-00f5f5 616d
-00f5f6 006c .db "decimal",0
-00f5f7 f5e9 .dw VE_HEAD
- .set VE_HEAD = VE_DECIMAL
- XT_DECIMAL:
-00f5f8 f001 .dw DO_COLON
- PFA_DECIMAL:
- .endif
-00f5f9 f046 .dw XT_DOLITERAL
-00f5fa 000a .dw 10
-00f5fb f56c .dw XT_BASE
-00f5fc f093 .dw XT_STORE
-00f5fd f026 .dw XT_EXIT
- .include "words/hex.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HEX:
-00f5fe ff03 .dw $ff03
-00f5ff 6568
-00f600 0078 .db "hex",0
-00f601 f5f2 .dw VE_HEAD
- .set VE_HEAD = VE_HEX
- XT_HEX:
-00f602 f001 .dw DO_COLON
- PFA_HEX:
- .endif
-00f603 f046 .dw XT_DOLITERAL
-00f604 0010 .dw 16
-00f605 f56c .dw XT_BASE
-00f606 f093 .dw XT_STORE
-00f607 f026 .dw XT_EXIT
- .include "words/bl.asm"
-
- ; Character IO
- ; put ascii code of the blank to the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BL:
-00f608 ff02 .dw $ff02
-00f609 6c62 .db "bl"
-00f60a f5fe .dw VE_HEAD
- .set VE_HEAD = VE_BL
- XT_BL:
-00f60b f054 .dw PFA_DOVARIABLE
- PFA_BL:
- .endif
-00f60c 0020 .dw 32
-
- .include "words/turnkey.asm"
-
- ; System Value
- ; Deferred action during startup/reset
- VE_TURNKEY:
-00f60d ff07 .dw $ff07
-00f60e 7574
-00f60f 6e72
-00f610 656b
-00f611 0079 .db "turnkey",0
-00f612 f608 .dw VE_HEAD
- .set VE_HEAD = VE_TURNKEY
- XT_TURNKEY:
-00f613 fc2e .dw PFA_DODEFER1
- PFA_TURNKEY:
-00f614 0054 .dw CFG_TURNKEY
-00f615 fbcf .dw XT_EDEFERFETCH
-00f616 fbd9 .dw XT_EDEFERSTORE
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/slashmod.asm"
-
- ; Arithmetics
- ; signed division n1/n2 with remainder and quotient
- VE_SLASHMOD:
-00f617 ff04 .dw $ff04
-00f618 6d2f
-00f619 646f .db "/mod"
-00f61a f60d .dw VE_HEAD
- .set VE_HEAD = VE_SLASHMOD
- XT_SLASHMOD:
-00f61b f61c .dw PFA_SLASHMOD
- PFA_SLASHMOD:
-00f61c 019c movw temp2, tosl
-
-00f61d 9109 ld temp0, Y+
-00f61e 9119 ld temp1, Y+
-
-00f61f 2f41 mov temp6,temp1 ;move dividend High to sign register
-00f620 2743 eor temp6,temp3 ;xor divisor High with sign register
-00f621 ff17 sbrs temp1,7 ;if MSB in dividend set
-00f622 c004 rjmp PFA_SLASHMOD_1
-00f623 9510 com temp1 ; change sign of dividend
-00f624 9500 com temp0
-00f625 5f0f subi temp0,low(-1)
-00f626 4f1f sbci temp1,high(-1)
- PFA_SLASHMOD_1:
-00f627 ff37 sbrs temp3,7 ;if MSB in divisor set
-00f628 c004 rjmp PFA_SLASHMOD_2
-00f629 9530 com temp3 ; change sign of divisor
-00f62a 9520 com temp2
-00f62b 5f2f subi temp2,low(-1)
-00f62c 4f3f sbci temp3,high(-1)
-00f62d 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte
-00f62e 18ff sub temp5,temp5;clear remainder High byte and carry
-00f62f e151 ldi temp7,17 ;init loop counter
-
-00f630 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend
-00f631 1f11 rol temp1
-00f632 955a dec temp7 ;decrement counter
-00f633 f439 brne PFA_SLASHMOD_5 ;if done
-00f634 ff47 sbrs temp6,7 ; if MSB in sign register set
-00f635 c004 rjmp PFA_SLASHMOD_4
-00f636 9510 com temp1 ; change sign of result
-00f637 9500 com temp0
-00f638 5f0f subi temp0,low(-1)
-00f639 4f1f sbci temp1,high(-1)
-00f63a c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return
-00f63b 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder
-00f63c 1cff rol temp5
-00f63d 1ae2 sub temp4,temp2 ;remainder = remainder - divisor
-00f63e 0af3 sbc temp5,temp3 ;
-00f63f f420 brcc PFA_SLASHMOD_6 ;if result negative
-00f640 0ee2 add temp4,temp2 ; restore remainder
-00f641 1ef3 adc temp5,temp3
-00f642 9488 clc ; clear carry to be shifted into result
-00f643 cfec rjmp PFA_SLASHMOD_3 ;else
-00f644 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result
-00f645 cfea rjmp PFA_SLASHMOD_3
-
- PFA_SLASHMODmod_done:
- ; put remainder on stack
-00f646 92fa st -Y,temp5
-00f647 92ea st -Y,temp4
-
- ; put quotient on stack
-00f648 01c8 movw tosl, temp0
-00f649 c9bb jmp_ DO_NEXT
- .include "words/uslashmod.asm"
-
- ; Arithmetics
- ; unsigned division with remainder
- VE_USLASHMOD:
-00f64a ff05 .dw $ff05
-00f64b 2f75
-00f64c 6f6d
-00f64d 0064 .db "u/mod",0
-00f64e f617 .dw VE_HEAD
- .set VE_HEAD = VE_USLASHMOD
- XT_USLASHMOD:
-00f64f f001 .dw DO_COLON
- PFA_USLASHMOD:
-00f650 f111 .dw XT_TO_R
-00f651 f166 .dw XT_ZERO
-00f652 f108 .dw XT_R_FROM
-00f653 f1d4 .dw XT_UMSLASHMOD
-00f654 f026 .dw XT_EXIT
- .include "words/negate.asm"
-
- ; Logic
- ; 2-complement
- VE_NEGATE:
-00f655 ff06 .dw $ff06
-00f656 656e
-00f657 6167
-00f658 6574 .db "negate"
-00f659 f64a .dw VE_HEAD
- .set VE_HEAD = VE_NEGATE
- XT_NEGATE:
-00f65a f001 .dw DO_COLON
- PFA_NEGATE:
-00f65b f20f .dw XT_INVERT
-00f65c f241 .dw XT_1PLUS
-00f65d f026 .dw XT_EXIT
- .include "words/slash.asm"
-
- ; Arithmetics
- ; divide n1 by n2. giving the quotient
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SLASH:
-00f65e ff01 .dw $ff01
-00f65f 002f .db "/",0
-00f660 f655 .dw VE_HEAD
- .set VE_HEAD = VE_SLASH
- XT_SLASH:
-00f661 f001 .dw DO_COLON
- PFA_SLASH:
- .endif
-00f662 f61b .dw XT_SLASHMOD
-00f663 f102 .dw XT_NIP
-00f664 f026 .dw XT_EXIT
-
- .include "words/mod.asm"
-
- ; Arithmetics
- ; divide n1 by n2 giving the remainder n3
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MOD:
-00f665 ff03 .dw $ff03
-00f666 6f6d
-00f667 0064 .db "mod",0
-00f668 f65e .dw VE_HEAD
- .set VE_HEAD = VE_MOD
- XT_MOD:
-00f669 f001 .dw DO_COLON
- PFA_MOD:
- .endif
-00f66a f61b .dw XT_SLASHMOD
-00f66b f0eb .dw XT_DROP
-00f66c f026 .dw XT_EXIT
- .include "words/abs.asm"
-
- ; DUP ?NEGATE ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABS:
-00f66d ff03 .dw $ff03
-00f66e 6261
-00f66f 0073 .db "abs",0
-00f670 f665 .dw VE_HEAD
- .set VE_HEAD = VE_ABS
- XT_ABS:
-00f671 f001 .dw DO_COLON
- PFA_ABS:
-
- .endif
-
-00f672 f0c3
-00f673 f250
-00f674 f026 .DW XT_DUP,XT_QNEGATE,XT_EXIT
- .include "words/min.asm"
-
- ; Compare
- ; compare two values leave the smaller one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MIN:
-00f675 ff03 .dw $ff03
-00f676 696d
-00f677 006e .db "min",0
-00f678 f66d .dw VE_HEAD
- .set VE_HEAD = VE_MIN
- XT_MIN:
-00f679 f001 .dw DO_COLON
- PFA_MIN:
- .endif
-00f67a f580 .dw XT_2DUP
-00f67b f18a .dw XT_GREATER
-00f67c f03f .dw XT_DOCONDBRANCH
-00f67d f67f DEST(PFA_MIN1)
-00f67e f0d6 .dw XT_SWAP
- PFA_MIN1:
-00f67f f0eb .dw XT_DROP
-00f680 f026 .dw XT_EXIT
- .include "words/max.asm"
-
- ; Compare
- ; compare two values, leave the bigger one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAX:
-00f681 ff03 .dw $ff03
-00f682 616d
-00f683 0078 .db "max",0
-00f684 f675 .dw VE_HEAD
- .set VE_HEAD = VE_MAX
- XT_MAX:
-00f685 f001 .dw DO_COLON
- PFA_MAX:
-
- .endif
-00f686 f580 .dw XT_2DUP
-00f687 f180 .dw XT_LESS
-00f688 f03f .dw XT_DOCONDBRANCH
-00f689 f68b DEST(PFA_MAX1)
-00f68a f0d6 .dw XT_SWAP
- PFA_MAX1:
-00f68b f0eb .dw XT_DROP
-00f68c f026 .dw XT_EXIT
- .include "words/within.asm"
-
- ; Compare
- ; check if n is within min..max
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WITHIN:
-00f68d ff06 .dw $ff06
-00f68e 6977
-00f68f 6874
-00f690 6e69 .db "within"
-00f691 f681 .dw VE_HEAD
- .set VE_HEAD = VE_WITHIN
- XT_WITHIN:
-00f692 f001 .dw DO_COLON
- PFA_WITHIN:
- .endif
-00f693 f0e1 .dw XT_OVER
-00f694 f1a5 .dw XT_MINUS
-00f695 f111 .dw XT_TO_R
-00f696 f1a5 .dw XT_MINUS
-00f697 f108 .dw XT_R_FROM
-00f698 f16e .dw XT_ULESS
-00f699 f026 .dw XT_EXIT
-
- .include "words/to-upper.asm"
-
- ; String
- ; if c is a lowercase letter convert it to uppercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TOUPPER:
-00f69a ff07 .dw $ff07
-00f69b 6f74
-00f69c 7075
-00f69d 6570
-00f69e 0072 .db "toupper",0
-00f69f f68d .dw VE_HEAD
- .set VE_HEAD = VE_TOUPPER
- XT_TOUPPER:
-00f6a0 f001 .dw DO_COLON
- PFA_TOUPPER:
- .endif
-00f6a1 f0c3 .dw XT_DUP
-00f6a2 f046 .dw XT_DOLITERAL
-00f6a3 0061 .dw 'a'
-00f6a4 f046 .dw XT_DOLITERAL
-00f6a5 007b .dw 'z'+1
-00f6a6 f692 .dw XT_WITHIN
-00f6a7 f03f .dw XT_DOCONDBRANCH
-00f6a8 f6ac DEST(PFA_TOUPPER0)
-00f6a9 f046 .dw XT_DOLITERAL
-00f6aa 00df .dw 223 ; inverse of 0x20: 0xdf
-00f6ab f225 .dw XT_AND
- PFA_TOUPPER0:
-00f6ac f026 .dw XT_EXIT
- .include "words/to-lower.asm"
-
- ; String
- ; if C is an uppercase letter convert it to lowercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_TOLOWER:
-00f6ad ff07 .dw $ff07
-00f6ae 6f74
-00f6af 6f6c
-00f6b0 6577
-00f6b1 0072 .db "tolower",0
-00f6b2 f69a .dw VE_HEAD
- .set VE_HEAD = VE_TOLOWER
- XT_TOLOWER:
-00f6b3 f001 .dw DO_COLON
- PFA_TOLOWER:
- .endif
-00f6b4 f0c3 .dw XT_DUP
-00f6b5 f046 .dw XT_DOLITERAL
-00f6b6 0041 .dw 'A'
-00f6b7 f046 .dw XT_DOLITERAL
-00f6b8 005b .dw 'Z'+1
-00f6b9 f692 .dw XT_WITHIN
-00f6ba f03f .dw XT_DOCONDBRANCH
-00f6bb f6bf DEST(PFA_TOLOWER0)
-00f6bc f046 .dw XT_DOLITERAL
-00f6bd 0020 .dw 32
-00f6be f22e .dw XT_OR
- PFA_TOLOWER0:
-00f6bf f026 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;
- .include "words/hld.asm"
-
- ; Numeric IO
- ; pointer to current write position in the Pictured Numeric Output buffer
- VE_HLD:
-00f6c0 ff03 .dw $ff03
-00f6c1 6c68
-00f6c2 0064 .db "hld",0
-00f6c3 f6ad .dw VE_HEAD
- .set VE_HEAD = VE_HLD
- XT_HLD:
-00f6c4 f054 .dw PFA_DOVARIABLE
- PFA_HLD:
-00f6c5 013f .dw ram_hld
-
- .dseg
-00013f ram_hld: .byte 2
- .cseg
- .include "words/hold.asm"
-
- ; Numeric IO
- ; prepend character to pictured numeric output buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HOLD:
-00f6c6 ff04 .dw $ff04
-00f6c7 6f68
-00f6c8 646c .db "hold"
-00f6c9 f6c0 .dw VE_HEAD
- .set VE_HEAD = VE_HOLD
- XT_HOLD:
-00f6ca f001 .dw DO_COLON
- PFA_HOLD:
- .endif
-00f6cb f6c4 .dw XT_HLD
-00f6cc f0c3 .dw XT_DUP
-00f6cd f08b .dw XT_FETCH
-00f6ce f247 .dw XT_1MINUS
-00f6cf f0c3 .dw XT_DUP
-00f6d0 f111 .dw XT_TO_R
-00f6d1 f0d6 .dw XT_SWAP
-00f6d2 f093 .dw XT_STORE
-00f6d3 f108 .dw XT_R_FROM
-00f6d4 f09f .dw XT_CSTORE
-00f6d5 f026 .dw XT_EXIT
- .include "words/less-sharp.asm" ; <#
-
- ; Numeric IO
- ; initialize the pictured numeric output conversion process
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_SHARP:
-00f6d6 ff02 .dw $ff02
-00f6d7 233c .db "<#"
-00f6d8 f6c6 .dw VE_HEAD
- .set VE_HEAD = VE_L_SHARP
- XT_L_SHARP:
-00f6d9 f001 .dw DO_COLON
- PFA_L_SHARP:
- .endif
-00f6da f59f .dw XT_PAD
-00f6db f6c4 .dw XT_HLD
-00f6dc f093 .dw XT_STORE
-00f6dd f026 .dw XT_EXIT
- .include "words/sharp.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert one digit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SHARP:
-00f6de ff01 .dw $ff01
-00f6df 0023 .db "#",0
-00f6e0 f6d6 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP
- XT_SHARP:
-00f6e1 f001 .dw DO_COLON
- PFA_SHARP:
- .endif
-00f6e2 f56c .dw XT_BASE
-00f6e3 f08b .dw XT_FETCH
-00f6e4 f75e .dw XT_UDSLASHMOD
-00f6e5 f0f3 .dw XT_ROT
-00f6e6 f046 .dw XT_DOLITERAL
-00f6e7 0009 .dw 9
-00f6e8 f0e1 .dw XT_OVER
-00f6e9 f180 .dw XT_LESS
-00f6ea f03f .dw XT_DOCONDBRANCH
-00f6eb f6ef DEST(PFA_SHARP1)
-00f6ec f046 .dw XT_DOLITERAL
-00f6ed 0007 .dw 7
-00f6ee f1af .dw XT_PLUS
- PFA_SHARP1:
-00f6ef f046 .dw XT_DOLITERAL
-00f6f0 0030 .dw 48 ; ASCII 0
-00f6f1 f1af .dw XT_PLUS
-00f6f2 f6ca .dw XT_HOLD
-00f6f3 f026 .dw XT_EXIT
- ; : # ( ud1 -- ud2 )
- ; base @ ud/mod rot 9 over < if 7 + then 30 + hold ;
- .include "words/sharp-s.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert all digits until 0 (zero) is reached
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_S:
-00f6f4 ff02 .dw $ff02
-00f6f5 7323 .db "#s"
-00f6f6 f6de .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_S
- XT_SHARP_S:
-00f6f7 f001 .dw DO_COLON
- PFA_SHARP_S:
- .endif
- NUMS1:
-00f6f8 f6e1 .dw XT_SHARP
-00f6f9 f580 .dw XT_2DUP
-00f6fa f22e .dw XT_OR
-00f6fb f12c .dw XT_ZEROEQUAL
-00f6fc f03f .dw XT_DOCONDBRANCH
-00f6fd f6f8 DEST(NUMS1) ; PFA_SHARP_S
-00f6fe f026 .dw XT_EXIT
- .include "words/sharp-greater.asm" ; #>
-
- ; Numeric IO
- ; Pictured Numeric Output: convert PNO buffer into an string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_G:
-00f6ff ff02 .dw $ff02
-00f700 3e23 .db "#>"
-00f701 f6f4 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_G
- XT_SHARP_G:
-00f702 f001 .dw DO_COLON
- PFA_SHARP_G:
- .endif
-00f703 f589 .dw XT_2DROP
-00f704 f6c4 .dw XT_HLD
-00f705 f08b .dw XT_FETCH
-00f706 f59f .dw XT_PAD
-00f707 f0e1 .dw XT_OVER
-00f708 f1a5 .dw XT_MINUS
-00f709 f026 .dw XT_EXIT
- .include "words/sign.asm"
-
- ; Numeric IO
- ; place a - in HLD if n is negative
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SIGN:
-00f70a ff04 .dw $ff04
-00f70b 6973
-00f70c 6e67 .db "sign"
-00f70d f6ff .dw VE_HEAD
- .set VE_HEAD = VE_SIGN
- XT_SIGN:
-00f70e f001 .dw DO_COLON
- PFA_SIGN:
- .endif
-00f70f f133 .dw XT_ZEROLESS
-00f710 f03f .dw XT_DOCONDBRANCH
-00f711 f715 DEST(PFA_SIGN1)
-00f712 f046 .dw XT_DOLITERAL
-00f713 002d .dw 45 ; ascii -
-00f714 f6ca .dw XT_HOLD
- PFA_SIGN1:
-00f715 f026 .dw XT_EXIT
- .include "words/d-dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOTR:
-00f716 ff03 .dw $ff03
-00f717 2e64
-00f718 0072 .db "d.r",0
-00f719 f70a .dw VE_HEAD
- .set VE_HEAD = VE_DDOTR
- XT_DDOTR:
-00f71a f001 .dw DO_COLON
- PFA_DDOTR:
-
- .endif
-00f71b f111 .dw XT_TO_R
-00f71c f591 .dw XT_TUCK
-00f71d fcef .dw XT_DABS
-00f71e f6d9 .dw XT_L_SHARP
-00f71f f6f7 .dw XT_SHARP_S
-00f720 f0f3 .dw XT_ROT
-00f721 f70e .dw XT_SIGN
-00f722 f702 .dw XT_SHARP_G
-00f723 f108 .dw XT_R_FROM
-00f724 f0e1 .dw XT_OVER
-00f725 f1a5 .dw XT_MINUS
-00f726 f806 .dw XT_SPACES
-00f727 f816 .dw XT_TYPE
-00f728 f026 .dw XT_EXIT
- ; : d.r ( d n -- )
- ; >r swap over dabs <# #s rot sign #> r> over - spaces type ;
- .include "words/dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTR:
-00f729 ff02 .dw $ff02
-00f72a 722e .db ".r"
-00f72b f716 .dw VE_HEAD
- .set VE_HEAD = VE_DOTR
- XT_DOTR:
-00f72c f001 .dw DO_COLON
- PFA_DOTR:
-
- .endif
-00f72d f111 .dw XT_TO_R
-00f72e fd82 .dw XT_S2D
-00f72f f108 .dw XT_R_FROM
-00f730 f71a .dw XT_DDOTR
-00f731 f026 .dw XT_EXIT
- ; : .r ( s n -- ) >r s>d r> d.r ;
- .include "words/d-dot.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOT:
-00f732 ff02 .dw $ff02
-00f733 2e64 .db "d."
-00f734 f729 .dw VE_HEAD
- .set VE_HEAD = VE_DDOT
- XT_DDOT:
-00f735 f001 .dw DO_COLON
- PFA_DDOT:
-
- .endif
-00f736 f166 .dw XT_ZERO
-00f737 f71a .dw XT_DDOTR
-00f738 f7fd .dw XT_SPACE
-00f739 f026 .dw XT_EXIT
- ; : d. ( d -- ) 0 d.r space ;
- .include "words/dot.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOT:
-00f73a ff01 .dw $ff01
-00f73b 002e .db ".",0
-00f73c f732 .dw VE_HEAD
- .set VE_HEAD = VE_DOT
- XT_DOT:
-00f73d f001 .dw DO_COLON
- PFA_DOT:
- .endif
-00f73e fd82 .dw XT_S2D
-00f73f f735 .dw XT_DDOT
-00f740 f026 .dw XT_EXIT
- ; : . ( s -- ) s>d d. ;
- .include "words/ud-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDDOT:
-00f741 ff03 .dw $ff03
-00f742 6475
-00f743 002e .db "ud.",0
-00f744 f73a .dw VE_HEAD
- .set VE_HEAD = VE_UDDOT
- XT_UDDOT:
-00f745 f001 .dw DO_COLON
- PFA_UDDOT:
- .endif
-00f746 f166 .dw XT_ZERO
-00f747 f74e .dw XT_UDDOTR
-00f748 f7fd .dw XT_SPACE
-00f749 f026 .dw XT_EXIT
- .include "words/ud-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDDOTR:
-00f74a ff04 .dw $ff04
-00f74b 6475
-00f74c 722e .db "ud.r"
-00f74d f741 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOTR
- XT_UDDOTR:
-00f74e f001 .dw DO_COLON
- PFA_UDDOTR:
- .endif
-00f74f f111 .dw XT_TO_R
-00f750 f6d9 .dw XT_L_SHARP
-00f751 f6f7 .dw XT_SHARP_S
-00f752 f702 .dw XT_SHARP_G
-00f753 f108 .dw XT_R_FROM
-00f754 f0e1 .dw XT_OVER
-00f755 f1a5 .dw XT_MINUS
-00f756 f806 .dw XT_SPACES
-00f757 f816 .dw XT_TYPE
-00f758 f026 .dw XT_EXIT
- .include "words/ud-slash-mod.asm"
-
- ; Arithmetics
- ; unsigned double cell division with remainder
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSLASHMOD:
-00f759 ff06 .dw $ff06
-00f75a 6475
-00f75b 6d2f
-00f75c 646f .db "ud/mod"
-00f75d f74a .dw VE_HEAD
- .set VE_HEAD = VE_UDSLASHMOD
- XT_UDSLASHMOD:
-00f75e f001 .dw DO_COLON
- PFA_UDSLASHMOD:
- .endif
-00f75f f111 .dw XT_TO_R
-00f760 f166 .dw XT_ZERO
-00f761 f11a .dw XT_R_FETCH
-00f762 f1d4 .dw XT_UMSLASHMOD
-00f763 f108 .dw XT_R_FROM
-00f764 f0d6 .dw XT_SWAP
-00f765 f111 .dw XT_TO_R
-00f766 f1d4 .dw XT_UMSLASHMOD
-00f767 f108 .dw XT_R_FROM
-00f768 f026 .dw XT_EXIT
- .include "words/digit-q.asm"
-
- ; Numeric IO
- ; tries to convert a character to a number, set flag accordingly
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DIGITQ:
-00f769 ff06 .dw $ff06
-00f76a 6964
-00f76b 6967
-00f76c 3f74 .db "digit?"
-00f76d f759 .dw VE_HEAD
- .set VE_HEAD = VE_DIGITQ
- XT_DIGITQ:
-00f76e f001 .dw DO_COLON
- PFA_DIGITQ:
- .endif
-00f76f f6a0 .dw XT_TOUPPER
-00f770 f0c3
-00f771 f046
-00f772 0039
-00f773 f18a
-00f774 f046
-00f775 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256
-00f776 f225
-00f777 f1af
-00f778 f0c3
-00f779 f046
-00f77a 0140
-00f77b f18a .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER
-00f77c f046
-00f77d 0107
-00f77e f225
-00f77f f1a5
-00f780 f046
-00f781 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48
-00f782 f1a5
-00f783 f0c3
-00f784 f56c
-00f785 f08b
-00f786 f16e .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS
-00f787 f026 .DW XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/do-sliteral.asm"
-
- ; String
- ; runtime portion of sliteral
- ;VE_DOSLITERAL:
- ; .dw $ff0a
- ; .db "(sliteral)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSLITERAL
- XT_DOSLITERAL:
-00f788 f001 .dw DO_COLON
- PFA_DOSLITERAL:
-00f789 f11a .dw XT_R_FETCH ; ( -- addr )
-00f78a f7e7 .dw XT_ICOUNT
-00f78b f108 .dw XT_R_FROM
-00f78c f0e1 .dw XT_OVER ; ( -- addr' n addr n)
-00f78d f241 .dw XT_1PLUS
-00f78e f216 .dw XT_2SLASH ; ( -- addr' n addr k )
-00f78f f1af .dw XT_PLUS ; ( -- addr' n addr'' )
-00f790 f241 .dw XT_1PLUS
-00f791 f111 .dw XT_TO_R ; ( -- )
-00f792 f026 .dw XT_EXIT
- .include "words/scomma.asm"
-
- ; Compiler
- ; compiles a string from RAM to Flash
- VE_SCOMMA:
-00f793 ff02 .dw $ff02
-00f794 2c73 .db "s",$2c
-00f795 f769 .dw VE_HEAD
- .set VE_HEAD = VE_SCOMMA
- XT_SCOMMA:
-00f796 f001 .dw DO_COLON
- PFA_SCOMMA:
-00f797 f0c3 .dw XT_DUP
-00f798 f79a .dw XT_DOSCOMMA
-00f799 f026 .dw XT_EXIT
-
- ; ( addr len len' -- )
- ; Compiler
- ; compiles a string from RAM to Flash
- ;VE_DOSCOMMA:
- ; .dw $ff04
- ; .db "(s",$2c,")"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSCOMMA
- XT_DOSCOMMA:
-00f79a f001 .dw DO_COLON
- PFA_DOSCOMMA:
-00f79b 01db .dw XT_COMMA
-00f79c f0c3 .dw XT_DUP ; ( --addr len len)
-00f79d f216 .dw XT_2SLASH ; ( -- addr len len/2
-00f79e f591 .dw XT_TUCK ; ( -- addr len/2 len len/2
-00f79f f21d .dw XT_2STAR ; ( -- addr len/2 len len'
-00f7a0 f1a5 .dw XT_MINUS ; ( -- addr len/2 rem
-00f7a1 f111 .dw XT_TO_R
-00f7a2 f166 .dw XT_ZERO
-00f7a3 029a .dw XT_QDOCHECK
-00f7a4 f03f .dw XT_DOCONDBRANCH
-00f7a5 f7ad .dw PFA_SCOMMA2
-00f7a6 f2ad .dw XT_DODO
- PFA_SCOMMA1:
-00f7a7 f0c3 .dw XT_DUP ; ( -- addr addr )
-00f7a8 f08b .dw XT_FETCH ; ( -- addr c1c2 )
-00f7a9 01db .dw XT_COMMA ; ( -- addr )
-00f7aa f579 .dw XT_CELLPLUS ; ( -- addr+cell )
-00f7ab f2db .dw XT_DOLOOP
-00f7ac f7a7 .dw PFA_SCOMMA1
- PFA_SCOMMA2:
-00f7ad f108 .dw XT_R_FROM
-00f7ae f13a .dw XT_GREATERZERO
-00f7af f03f .dw XT_DOCONDBRANCH
-00f7b0 f7b4 .dw PFA_SCOMMA3
-00f7b1 f0c3 .dw XT_DUP ; well, tricky
-00f7b2 f0aa .dw XT_CFETCH
-00f7b3 01db .dw XT_COMMA
- PFA_SCOMMA3:
-00f7b4 f0eb .dw XT_DROP ; ( -- )
-00f7b5 f026 .dw XT_EXIT
- .include "words/itype.asm"
-
- ; Tools
- ; reads string from flash and prints it
- VE_ITYPE:
-00f7b6 ff05 .dw $ff05
-00f7b7 7469
-00f7b8 7079
-00f7b9 0065 .db "itype",0
-00f7ba f793 .dw VE_HEAD
- .set VE_HEAD = VE_ITYPE
- XT_ITYPE:
-00f7bb f001 .dw DO_COLON
- PFA_ITYPE:
-00f7bc f0c3 .dw XT_DUP ; ( --addr len len)
-00f7bd f216 .dw XT_2SLASH ; ( -- addr len len/2
-00f7be f591 .dw XT_TUCK ; ( -- addr len/2 len len/2
-00f7bf f21d .dw XT_2STAR ; ( -- addr len/2 len len'
-00f7c0 f1a5 .dw XT_MINUS ; ( -- addr len/2 rem
-00f7c1 f111 .dw XT_TO_R
-00f7c2 f166 .dw XT_ZERO
-00f7c3 029a .dw XT_QDOCHECK
-00f7c4 f03f .dw XT_DOCONDBRANCH
-00f7c5 f7cf .dw PFA_ITYPE2
-00f7c6 f2ad .dw XT_DODO
- PFA_ITYPE1:
-00f7c7 f0c3 .dw XT_DUP ; ( -- addr addr )
-00f7c8 f3e3 .dw XT_FETCHI ; ( -- addr c1c2 )
-00f7c9 f0c3 .dw XT_DUP
-00f7ca f7dc .dw XT_LOWEMIT
-00f7cb f7d8 .dw XT_HIEMIT
-00f7cc f241 .dw XT_1PLUS ; ( -- addr+cell )
-00f7cd f2db .dw XT_DOLOOP
-00f7ce f7c7 .dw PFA_ITYPE1
- PFA_ITYPE2:
-00f7cf f108 .dw XT_R_FROM
-00f7d0 f13a .dw XT_GREATERZERO
-00f7d1 f03f .dw XT_DOCONDBRANCH
-00f7d2 f7d6 .dw PFA_ITYPE3
-00f7d3 f0c3 .dw XT_DUP ; make sure the drop below has always something to do
-00f7d4 f3e3 .dw XT_FETCHI
-00f7d5 f7dc .dw XT_LOWEMIT
- PFA_ITYPE3:
-00f7d6 f0eb .dw XT_DROP
-00f7d7 f026 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_HIEMIT:
- ; .dw $ff06
- ; .db "hiemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_HIEMIT
- XT_HIEMIT:
-00f7d8 f001 .dw DO_COLON
- PFA_HIEMIT:
-00f7d9 f30b .dw XT_BYTESWAP
-00f7da f7dc .dw XT_LOWEMIT
-00f7db f026 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_LOWEMIT:
- ; .dw $ff07
- ; .db "lowemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LOWEMIT
- XT_LOWEMIT:
-00f7dc f001 .dw DO_COLON
- PFA_LOWEMIT:
-00f7dd f046 .dw XT_DOLITERAL
-00f7de 00ff .dw $00ff
-00f7df f225 .dw XT_AND
-00f7e0 f5a9 .dw XT_EMIT
-00f7e1 f026 .dw XT_EXIT
- .include "words/icount.asm"
-
- ; Tools
- ; get count information out of a counted string in flash
- VE_ICOUNT:
-00f7e2 ff06 .dw $ff06
-00f7e3 6369
-00f7e4 756f
-00f7e5 746e .db "icount"
-00f7e6 f7b6 .dw VE_HEAD
- .set VE_HEAD = VE_ICOUNT
- XT_ICOUNT:
-00f7e7 f001 .dw DO_COLON
- PFA_ICOUNT:
-00f7e8 f0c3 .dw XT_DUP
-00f7e9 f241 .dw XT_1PLUS
-00f7ea f0d6 .dw XT_SWAP
-00f7eb f3e3 .dw XT_FETCHI
-00f7ec f026 .dw XT_EXIT
- .include "words/cr.asm"
-
- ; Character IO
- ; cause subsequent output appear at the beginning of the next line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CR:
-00f7ed ff02 .dw 0xff02
-00f7ee 7263 .db "cr"
-00f7ef f7e2 .dw VE_HEAD
- .set VE_HEAD = VE_CR
- XT_CR:
-00f7f0 f001 .dw DO_COLON
- PFA_CR:
- .endif
-
-00f7f1 f046 .dw XT_DOLITERAL
-00f7f2 000d .dw 13
-00f7f3 f5a9 .dw XT_EMIT
-00f7f4 f046 .dw XT_DOLITERAL
-00f7f5 000a .dw 10
-00f7f6 f5a9 .dw XT_EMIT
-00f7f7 f026 .dw XT_EXIT
- .include "words/space.asm"
-
- ; Character IO
- ; emits a space (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACE:
-00f7f8 ff05 .dw $ff05
-00f7f9 7073
-00f7fa 6361
-00f7fb 0065 .db "space",0
-00f7fc f7ed .dw VE_HEAD
- .set VE_HEAD = VE_SPACE
- XT_SPACE:
-00f7fd f001 .dw DO_COLON
- PFA_SPACE:
- .endif
-00f7fe f60b .dw XT_BL
-00f7ff f5a9 .dw XT_EMIT
-00f800 f026 .dw XT_EXIT
- .include "words/spaces.asm"
-
- ; Character IO
- ; emits n space(s) (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACES:
-00f801 ff06 .dw $ff06
-00f802 7073
-00f803 6361
-00f804 7365 .db "spaces"
-00f805 f7f8 .dw VE_HEAD
- .set VE_HEAD = VE_SPACES
- XT_SPACES:
-00f806 f001 .dw DO_COLON
- PFA_SPACES:
-
- .endif
- ;C SPACES n -- output n spaces
- ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ;
-00f807 f166
-00f808 f685 .DW XT_ZERO, XT_MAX
-00f809 f0c3
-00f80a f03f SPCS1: .DW XT_DUP,XT_DOCONDBRANCH
-00f80b f810 DEST(SPCS2)
-00f80c f7fd
-00f80d f247
-00f80e f035 .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH
-00f80f f809 DEST(SPCS1)
-00f810 f0eb
-00f811 f026 SPCS2: .DW XT_DROP,XT_EXIT
- .include "words/type.asm"
-
- ; Character IO
- ; print a RAM based string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TYPE:
-00f812 ff04 .dw $ff04
-00f813 7974
-00f814 6570 .db "type"
-00f815 f801 .dw VE_HEAD
- .set VE_HEAD = VE_TYPE
- XT_TYPE:
-00f816 f001 .dw DO_COLON
- PFA_TYPE:
-
- .endif
-00f817 fd79 .dw XT_BOUNDS
-00f818 029a .dw XT_QDOCHECK
-00f819 f03f .dw XT_DOCONDBRANCH
-00f81a f821 DEST(PFA_TYPE2)
-00f81b f2ad .dw XT_DODO
- PFA_TYPE1:
-00f81c f2be .dw XT_I
-00f81d f0aa .dw XT_CFETCH
-00f81e f5a9 .dw XT_EMIT
-00f81f f2db .dw XT_DOLOOP
-00f820 f81c DEST(PFA_TYPE1)
- PFA_TYPE2:
-00f821 f026 .dw XT_EXIT
- .include "words/tick.asm"
-
- ; Dictionary
- ; search dictionary for name, return XT or throw an exception -13
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TICK:
-00f822 ff01 .dw $ff01
-00f823 0027 .db "'",0
-00f824 f812 .dw VE_HEAD
- .set VE_HEAD = VE_TICK
- XT_TICK:
-00f825 f001 .dw DO_COLON
- PFA_TICK:
- .endif
-00f826 f9cf .dw XT_PARSENAME
-00f827 fae7 .dw XT_FORTHRECOGNIZER
-00f828 faf2 .dw XT_RECOGNIZE
- ; a word is tickable unless DT:TOKEN is DT:NULL or
- ; the interpret action is a NOOP
-00f829 f0c3 .dw XT_DUP
-00f82a fb65 .dw XT_DT_NULL
-00f82b fd9a .dw XT_EQUAL
-00f82c f0d6 .dw XT_SWAP
-00f82d f3e3 .dw XT_FETCHI
-00f82e f046 .dw XT_DOLITERAL
-00f82f fb9a .dw XT_NOOP
-00f830 fd9a .dw XT_EQUAL
-00f831 f22e .dw XT_OR
-00f832 f03f .dw XT_DOCONDBRANCH
-00f833 f837 DEST(PFA_TICK1)
-00f834 f046 .dw XT_DOLITERAL
-00f835 fff3 .dw -13
-00f836 f85c .dw XT_THROW
- PFA_TICK1:
-00f837 f0eb .dw XT_DROP
-00f838 f026 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/handler.asm"
-
- ; Exceptions
- ; USER variable used by catch/throw
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HANDLER:
-00f839 ff07 .dw $ff07
-00f83a 6168
-00f83b 646e
-00f83c 656c
-00f83d 0072 .db "handler",0
-00f83e f822 .dw VE_HEAD
- .set VE_HEAD = VE_HANDLER
- XT_HANDLER:
-00f83f f067 .dw PFA_DOUSER
- PFA_HANDLER:
- .endif
-00f840 000a .dw USER_HANDLER
- .include "words/catch.asm"
-
- ; Exceptions
- ; execute XT and check for exceptions.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CATCH:
-00f841 ff05 .dw $ff05
-00f842 6163
-00f843 6374
-00f844 0068 .db "catch",0
-00f845 f839 .dw VE_HEAD
- .set VE_HEAD = VE_CATCH
- XT_CATCH:
-00f846 f001 .dw DO_COLON
- PFA_CATCH:
- .endif
-
- ; sp@ >r
-00f847 f29f .dw XT_SP_FETCH
-00f848 f111 .dw XT_TO_R
- ; handler @ >r
-00f849 f83f .dw XT_HANDLER
-00f84a f08b .dw XT_FETCH
-00f84b f111 .dw XT_TO_R
- ; rp@ handler !
-00f84c f288 .dw XT_RP_FETCH
-00f84d f83f .dw XT_HANDLER
-00f84e f093 .dw XT_STORE
-00f84f f030 .dw XT_EXECUTE
- ; r> handler !
-00f850 f108 .dw XT_R_FROM
-00f851 f83f .dw XT_HANDLER
-00f852 f093 .dw XT_STORE
-00f853 f108 .dw XT_R_FROM
-00f854 f0eb .dw XT_DROP
-00f855 f166 .dw XT_ZERO
-00f856 f026 .dw XT_EXIT
- .include "words/throw.asm"
-
- ; Exceptions
- ; throw an exception
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THROW:
-00f857 ff05 .dw $ff05
-00f858 6874
-00f859 6f72
-00f85a 0077 .db "throw",0
-00f85b f841 .dw VE_HEAD
- .set VE_HEAD = VE_THROW
- XT_THROW:
-00f85c f001 .dw DO_COLON
- PFA_THROW:
- .endif
-00f85d f0c3 .dw XT_DUP
-00f85e f12c .dw XT_ZEROEQUAL
-00f85f f03f .dw XT_DOCONDBRANCH
-00f860 f863 DEST(PFA_THROW1)
-00f861 f0eb .dw XT_DROP
-00f862 f026 .dw XT_EXIT
- PFA_THROW1:
-00f863 f83f .dw XT_HANDLER
-00f864 f08b .dw XT_FETCH
-00f865 f292 .dw XT_RP_STORE
-00f866 f108 .dw XT_R_FROM
-00f867 f83f .dw XT_HANDLER
-00f868 f093 .dw XT_STORE
-00f869 f108 .dw XT_R_FROM
-00f86a f0d6 .dw XT_SWAP
-00f86b f111 .dw XT_TO_R
-00f86c f2a8 .dw XT_SP_STORE
-00f86d f0eb .dw XT_DROP
-00f86e f108 .dw XT_R_FROM
-00f86f f026 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/cskip.asm"
-
- ; String
- ; skips leading occurancies in string at addr1/n1 leaving addr2/n2 pointing to the 1st non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSKIP:
-00f870 ff05 .dw $ff05
-00f871 7363
-00f872 696b
-00f873 0070 .db "cskip",0
-00f874 f857 .dw VE_HEAD
- .set VE_HEAD = VE_CSKIP
- XT_CSKIP:
-00f875 f001 .dw DO_COLON
- PFA_CSKIP:
- .endif
-00f876 f111 .dw XT_TO_R ; ( -- addr1 n1 )
- PFA_CSKIP1:
-00f877 f0c3 .dw XT_DUP ; ( -- addr' n' n' )
-00f878 f03f .dw XT_DOCONDBRANCH ; ( -- addr' n')
-00f879 f884 DEST(PFA_CSKIP2)
-00f87a f0e1 .dw XT_OVER ; ( -- addr' n' addr' )
-00f87b f0aa .dw XT_CFETCH ; ( -- addr' n' c' )
-00f87c f11a .dw XT_R_FETCH ; ( -- addr' n' c' c )
-00f87d fd9a .dw XT_EQUAL ; ( -- addr' n' f )
-00f87e f03f .dw XT_DOCONDBRANCH ; ( -- addr' n')
-00f87f f884 DEST(PFA_CSKIP2)
-00f880 fda1 .dw XT_ONE
-00f881 f9c0 .dw XT_SLASHSTRING
-00f882 f035 .dw XT_DOBRANCH
-00f883 f877 DEST(PFA_CSKIP1)
- PFA_CSKIP2:
-00f884 f108 .dw XT_R_FROM
-00f885 f0eb .dw XT_DROP ; ( -- addr2 n2)
-00f886 f026 .dw XT_EXIT
- .include "words/cscan.asm"
-
- ; String
- ; Scan string at addr1/n1 for the first occurance of c, leaving addr1/n2, char at n2 is first non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSCAN:
-00f887 ff05 .dw $ff05
-00f888 7363
-00f889 6163
-../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte
-00f88a 006e .db "cscan"
-00f88b f870 .dw VE_HEAD
- .set VE_HEAD = VE_CSCAN
- XT_CSCAN:
-00f88c f001 .dw DO_COLON
- PFA_CSCAN:
- .endif
-00f88d f111 .dw XT_TO_R
-00f88e f0e1 .dw XT_OVER
- PFA_CSCAN1:
-00f88f f0c3 .dw XT_DUP
-00f890 f0aa .dw XT_CFETCH
-00f891 f11a .dw XT_R_FETCH
-00f892 fd9a .dw XT_EQUAL
-00f893 f12c .dw XT_ZEROEQUAL
-00f894 f03f .dw XT_DOCONDBRANCH
-00f895 f8a1 DEST(PFA_CSCAN2)
-00f896 f0d6 .dw XT_SWAP
-00f897 f247 .dw XT_1MINUS
-00f898 f0d6 .dw XT_SWAP
-00f899 f0e1 .dw XT_OVER
-00f89a f133 .dw XT_ZEROLESS ; not negative
-00f89b f12c .dw XT_ZEROEQUAL
-00f89c f03f .dw XT_DOCONDBRANCH
-00f89d f8a1 DEST(PFA_CSCAN2)
-00f89e f241 .dw XT_1PLUS
-00f89f f035 .dw XT_DOBRANCH
-00f8a0 f88f DEST(PFA_CSCAN1)
- PFA_CSCAN2:
-00f8a1 f102 .dw XT_NIP
-00f8a2 f0e1 .dw XT_OVER
-00f8a3 f1a5 .dw XT_MINUS
-00f8a4 f108 .dw XT_R_FROM
-00f8a5 f0eb .dw XT_DROP
-00f8a6 f026 .dw XT_EXIT
-
- ; : my-cscan ( addr len c -- addr len' )
- ; >r over ( -- addr len addr )
- ; begin
- ; dup c@ r@ <> while
- ; swap 1- swap over 0 >= while
- ; 1+
- ; repeat then
- ; nip over - r> drop
- ; ;
- .include "words/accept.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ACCEPT:
-00f8a7 ff06 .dw $ff06
-00f8a8 6361
-00f8a9 6563
-00f8aa 7470 .db "accept"
-00f8ab f887 .dw VE_HEAD
- .set VE_HEAD = VE_ACCEPT
- XT_ACCEPT:
-00f8ac f001 .dw DO_COLON
- PFA_ACCEPT:
-
- .endif
-00f8ad f0e1
-00f8ae f1af
-00f8af f247
-00f8b0 f0e1 .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER
-00f8b1 f5ba
-00f8b2 f0c3
-00f8b3 f8ed
-00f8b4 f12c
-00f8b5 f03f ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH
-00f8b6 f8df DEST(ACC5)
-00f8b7 f0c3
-00f8b8 f046
-00f8b9 0008
-00f8ba fd9a
-00f8bb f03f .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH
-00f8bc f8cf DEST(ACC3)
-00f8bd f0eb
-00f8be f0f3
-00f8bf f580
-00f8c0 f18a
-00f8c1 f111
-00f8c2 f0f3
-00f8c3 f0f3
-00f8c4 f108
-00f8c5 f03f .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH
-00f8c6 f8cd DEST(ACC6)
-00f8c7 f8e5
-00f8c8 f247
-00f8c9 f111
-00f8ca f0e1
-00f8cb f108
-00f8cc 016d .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX
-00f8cd f035 ACC6: .DW XT_DOBRANCH
-00f8ce f8dd DEST(ACC4)
-
-
- ACC3: ; check for remaining control characters, replace them with blank
-00f8cf f0c3 .dw XT_DUP ; ( -- addr k k )
-00f8d0 f60b .dw XT_BL
-00f8d1 f180 .dw XT_LESS
-00f8d2 f03f .dw XT_DOCONDBRANCH
-00f8d3 f8d6 DEST(PFA_ACCEPT6)
-00f8d4 f0eb .dw XT_DROP
-00f8d5 f60b .dw XT_BL
- PFA_ACCEPT6:
-00f8d6 f0c3
-00f8d7 f5a9
-00f8d8 f0e1
-00f8d9 f09f
-00f8da f241
-00f8db f0e1
-00f8dc 0179 .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN
-00f8dd f035 ACC4: .DW XT_DOBRANCH
-00f8de f8b1 DEST(ACC1)
-00f8df f0eb
-00f8e0 f102
-00f8e1 f0d6
-00f8e2 f1a5
-00f8e3 f7f0
-00f8e4 f026 ACC5: .DW XT_DROP,XT_NIP,XT_SWAP,XT_MINUS,XT_CR,XT_EXIT
-
-
- ; ( -- )
- ; System
- ; send a backspace character to overwrite the current char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- ;VE_BS:
- ; .dw $ff02
- ; .db "bs"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_BS
- XT_BS:
-00f8e5 f001 .dw DO_COLON
- .endif
-00f8e6 f046 .dw XT_DOLITERAL
-00f8e7 0008 .dw 8
-00f8e8 f0c3 .dw XT_DUP
-00f8e9 f5a9 .dw XT_EMIT
-00f8ea f7fd .dw XT_SPACE
-00f8eb f5a9 .dw XT_EMIT
-00f8ec f026 .dw XT_EXIT
-
-
- ; ( c -- f )
- ; System
- ; is the character a line end character?
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_CRLFQ:
- ; .dw $ff02
- ; .db "crlf?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_CRLFQ
- XT_CRLFQ:
-00f8ed f001 .dw DO_COLON
- .endif
-00f8ee f0c3 .dw XT_DUP
-00f8ef f046 .dw XT_DOLITERAL
-00f8f0 000d .dw 13
-00f8f1 fd9a .dw XT_EQUAL
-00f8f2 f0d6 .dw XT_SWAP
-00f8f3 f046 .dw XT_DOLITERAL
-00f8f4 000a .dw 10
-00f8f5 fd9a .dw XT_EQUAL
-00f8f6 f22e .dw XT_OR
-00f8f7 f026 .dw XT_EXIT
- .include "words/refill.asm"
-
- ; System
- ; refills the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILL:
-00f8f8 ff06 .dw $ff06
-00f8f9 6572
-00f8fa 6966
-00f8fb 6c6c .db "refill"
-00f8fc f8a7 .dw VE_HEAD
- .set VE_HEAD = VE_REFILL
- XT_REFILL:
-00f8fd fc2e .dw PFA_DODEFER1
- PFA_REFILL:
- .endif
-00f8fe 001a .dw USER_REFILL
-00f8ff fbf7 .dw XT_UDEFERFETCH
-00f900 fc03 .dw XT_UDEFERSTORE
- .include "words/char.asm"
-
- ; Tools
- ; copy the first character of the next word onto the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CHAR:
-00f901 ff04 .dw $ff04
-00f902 6863
-00f903 7261 .db "char"
-00f904 f8f8 .dw VE_HEAD
- .set VE_HEAD = VE_CHAR
- XT_CHAR:
-00f905 f001 .dw DO_COLON
- PFA_CHAR:
- .endif
-00f906 f9cf .dw XT_PARSENAME
-00f907 f0eb .dw XT_DROP
-00f908 f0aa .dw XT_CFETCH
-00f909 f026 .dw XT_EXIT
- .include "words/number.asm"
-
- ; Numeric IO
- ; convert a string at addr to a number
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBER:
-00f90a ff06 .dw $ff06
-00f90b 756e
-00f90c 626d
-00f90d 7265 .db "number"
-00f90e f901 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBER
- XT_NUMBER:
-00f90f f001 .dw DO_COLON
- PFA_NUMBER:
- .endif
-00f910 f56c .dw XT_BASE
-00f911 f08b .dw XT_FETCH
-00f912 f111 .dw XT_TO_R
-00f913 f953 .dw XT_QSIGN
-00f914 f111 .dw XT_TO_R
-00f915 f966 .dw XT_SET_BASE
-00f916 f953 .dw XT_QSIGN
-00f917 f108 .dw XT_R_FROM
-00f918 f22e .dw XT_OR
-00f919 f111 .dw XT_TO_R
- ; check whether something is left
-00f91a f0c3 .dw XT_DUP
-00f91b f12c .dw XT_ZEROEQUAL
-00f91c f03f .dw XT_DOCONDBRANCH
-00f91d f926 DEST(PFA_NUMBER0)
- ; nothing is left. It cannot be a number at all
-00f91e f589 .dw XT_2DROP
-00f91f f108 .dw XT_R_FROM
-00f920 f0eb .dw XT_DROP
-00f921 f108 .dw XT_R_FROM
-00f922 f56c .dw XT_BASE
-00f923 f093 .dw XT_STORE
-00f924 f166 .dw XT_ZERO
-00f925 f026 .dw XT_EXIT
- PFA_NUMBER0:
-00f926 f330 .dw XT_2TO_R
-00f927 f166 .dw XT_ZERO ; starting value
-00f928 f166 .dw XT_ZERO
-00f929 f33f .dw XT_2R_FROM
-00f92a f984 .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len'
- ; check length of the remaining string.
- ; if zero: a single cell number is entered
-00f92b f0cb .dw XT_QDUP
-00f92c f03f .dw XT_DOCONDBRANCH
-00f92d f948 DEST(PFA_NUMBER1)
- ; if equal 1: mayba a trailing dot? --> double cell number
-00f92e fda1 .dw XT_ONE
-00f92f fd9a .dw XT_EQUAL
-00f930 f03f .dw XT_DOCONDBRANCH
-00f931 f93f DEST(PFA_NUMBER2)
- ; excatly one character is left
-00f932 f0aa .dw XT_CFETCH
-00f933 f046 .dw XT_DOLITERAL
-00f934 002e .dw 46 ; .
-00f935 fd9a .dw XT_EQUAL
-00f936 f03f .dw XT_DOCONDBRANCH
-00f937 f940 DEST(PFA_NUMBER6)
- ; its a double cell number
- ; incorporate sign into number
-00f938 f108 .dw XT_R_FROM
-00f939 f03f .dw XT_DOCONDBRANCH
-00f93a f93c DEST(PFA_NUMBER3)
-00f93b fcfc .dw XT_DNEGATE
- PFA_NUMBER3:
-00f93c fda6 .dw XT_TWO
-00f93d f035 .dw XT_DOBRANCH
-00f93e f94e DEST(PFA_NUMBER5)
- PFA_NUMBER2:
-00f93f f0eb .dw XT_DROP
- PFA_NUMBER6:
-00f940 f589 .dw XT_2DROP
-00f941 f108 .dw XT_R_FROM
-00f942 f0eb .dw XT_DROP
-00f943 f108 .dw XT_R_FROM
-00f944 f56c .dw XT_BASE
-00f945 f093 .dw XT_STORE
-00f946 f166 .dw XT_ZERO
-00f947 f026 .dw XT_EXIT
- PFA_NUMBER1:
-00f948 f589 .dw XT_2DROP ; remove the address
- ; incorporate sign into number
-00f949 f108 .dw XT_R_FROM
-00f94a f03f .dw XT_DOCONDBRANCH
-00f94b f94d DEST(PFA_NUMBER4)
-00f94c f65a .dw XT_NEGATE
- PFA_NUMBER4:
-00f94d fda1 .dw XT_ONE
- PFA_NUMBER5:
-00f94e f108 .dw XT_R_FROM
-00f94f f56c .dw XT_BASE
-00f950 f093 .dw XT_STORE
-00f951 f15d .dw XT_TRUE
-00f952 f026 .dw XT_EXIT
- .include "words/q-sign.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QSIGN:
-00f953 f001 .dw DO_COLON
- PFA_QSIGN: ; ( c -- )
- .endif
-00f954 f0e1 .dw XT_OVER ; ( -- addr len addr )
-00f955 f0aa .dw XT_CFETCH
-00f956 f046 .dw XT_DOLITERAL
-00f957 002d .dw '-'
-00f958 fd9a .dw XT_EQUAL ; ( -- addr len flag )
-00f959 f0c3 .dw XT_DUP
-00f95a f111 .dw XT_TO_R
-00f95b f03f .dw XT_DOCONDBRANCH
-00f95c f95f DEST(PFA_NUMBERSIGN_DONE)
-00f95d fda1 .dw XT_ONE ; skip sign character
-00f95e f9c0 .dw XT_SLASHSTRING
- PFA_NUMBERSIGN_DONE:
-00f95f f108 .dw XT_R_FROM
-00f960 f026 .dw XT_EXIT
- .include "words/set-base.asm"
-
- ; Numeric IO
- ; skip a numeric prefix character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_BASES:
-00f961 f061 .dw PFA_DOCONSTANT
- .endif
-00f962 000a
-00f963 0010
-00f964 0002
-00f965 000a .dw 10,16,2,10 ; last one could a 8 instead.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SET_BASE:
-00f966 f001 .dw DO_COLON
- PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 )
- .endif
-00f967 f0e1 .dw XT_OVER
-00f968 f0aa .dw XT_CFETCH
-00f969 f046 .dw XT_DOLITERAL
-00f96a 0023 .dw 35
-00f96b f1a5 .dw XT_MINUS
-00f96c f0c3 .dw XT_DUP
-00f96d f166 .dw XT_ZERO
-00f96e f046 .dw XT_DOLITERAL
-00f96f 0004 .dw 4
-00f970 f692 .dw XT_WITHIN
-00f971 f03f .dw XT_DOCONDBRANCH
-00f972 f97c DEST(SET_BASE1)
- .if cpu_msp430==1
- .endif
-00f973 f961 .dw XT_BASES
-00f974 f1af .dw XT_PLUS
-00f975 f3e3 .dw XT_FETCHI
-00f976 f56c .dw XT_BASE
-00f977 f093 .dw XT_STORE
-00f978 fda1 .dw XT_ONE
-00f979 f9c0 .dw XT_SLASHSTRING
-00f97a f035 .dw XT_DOBRANCH
-00f97b f97d DEST(SET_BASE2)
- SET_BASE1:
-00f97c f0eb .dw XT_DROP
- SET_BASE2:
-00f97d f026 .dw XT_EXIT
-
- ; create bases 10 , 16 , 2 , 8 ,
- ; : set-base 35 - dup 0 4 within if
- ; bases + @i base ! 1 /string
- ; else
- ; drop
- ; then ;
- .include "words/to-number.asm"
-
- ; Numeric IO
- ; convert a string to a number c-addr2/u2 is the unconverted string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_NUMBER:
-00f97e ff07 .dw $ff07
-00f97f 6e3e
-00f980 6d75
-00f981 6562
-00f982 0072 .db ">number",0
-00f983 f90a .dw VE_HEAD
- .set VE_HEAD = VE_TO_NUMBER
- XT_TO_NUMBER:
-00f984 f001 .dw DO_COLON
-
- .endif
-
-00f985 f0c3
-00f986 f03f TONUM1: .DW XT_DUP,XT_DOCONDBRANCH
-00f987 f99c DEST(TONUM3)
-00f988 f0e1
-00f989 f0aa
-00f98a f76e .DW XT_OVER,XT_CFETCH,XT_DIGITQ
-00f98b f12c
-00f98c f03f .DW XT_ZEROEQUAL,XT_DOCONDBRANCH
-00f98d f990 DEST(TONUM2)
-00f98e f0eb
-00f98f f026 .DW XT_DROP,XT_EXIT
-00f990 f111
-00f991 fd20
-00f992 f56c
-00f993 f08b
-00f994 015e TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR
-00f995 f108
-00f996 0156
-00f997 fd20 .DW XT_R_FROM,XT_MPLUS,XT_2SWAP
-00f998 fda1
-00f999 f9c0
-00f99a f035 .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH
-00f99b f985 DEST(TONUM1)
-00f99c f026 TONUM3: .DW XT_EXIT
-
- ;C >NUMBER ud adr u -- ud' adr' u'
- ;C convert string to number
- ; BEGIN
- ; DUP WHILE
- ; OVER C@ DIGIT?
- ; 0= IF DROP EXIT THEN
- ; >R 2SWAP BASE @ UD*
- ; R> M+ 2SWAP
- ; 1 /STRING
- ; REPEAT ;
- .include "words/parse.asm"
-
- ; String
- ; in input buffer parse ccc delimited string by the delimiter char.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PARSE:
-00f99d ff05 .dw $ff05
-00f99e 6170
-00f99f 7372
-00f9a0 0065 .db "parse",0
-00f9a1 f97e .dw VE_HEAD
- .set VE_HEAD = VE_PARSE
- XT_PARSE:
-00f9a2 f001 .dw DO_COLON
- PFA_PARSE:
- .endif
-00f9a3 f111 .dw XT_TO_R ; ( -- )
-00f9a4 f9b6 .dw XT_SOURCE ; ( -- addr len)
-00f9a5 f599 .dw XT_TO_IN ; ( -- addr len >in)
-00f9a6 f08b .dw XT_FETCH
-00f9a7 f9c0 .dw XT_SLASHSTRING ; ( -- addr' len' )
-
-00f9a8 f108 .dw XT_R_FROM ; ( -- addr' len' c)
-00f9a9 f88c .dw XT_CSCAN ; ( -- addr' len'')
-00f9aa f0c3 .dw XT_DUP ; ( -- addr' len'' len'')
-00f9ab f241 .dw XT_1PLUS
-00f9ac f599 .dw XT_TO_IN ; ( -- addr' len'' len'' >in)
-00f9ad f277 .dw XT_PLUSSTORE ; ( -- addr' len')
-00f9ae fda1 .dw XT_ONE
-00f9af f9c0 .dw XT_SLASHSTRING
-00f9b0 f026 .dw XT_EXIT
- .include "words/source.asm"
-
- ; System
- ; address and current length of the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCE:
-00f9b1 ff06 .dw $FF06
-00f9b2 6f73
-00f9b3 7275
-00f9b4 6563 .db "source"
-00f9b5 f99d .dw VE_HEAD
- .set VE_HEAD = VE_SOURCE
- XT_SOURCE:
-00f9b6 fc2e .dw PFA_DODEFER1
- PFA_SOURCE:
- .endif
-00f9b7 0016 .dw USER_SOURCE
-00f9b8 fbf7 .dw XT_UDEFERFETCH
-00f9b9 fc03 .dw XT_UDEFERSTORE
-
-
- .include "words/slash-string.asm"
-
- ; String
- ; adjust string from addr1 to addr1+n, reduce length from u1 to u2 by n
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLASHSTRING:
-00f9ba ff07 .dw $ff07
-00f9bb 732f
-00f9bc 7274
-00f9bd 6e69
-00f9be 0067 .db "/string",0
-00f9bf f9b1 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHSTRING
- XT_SLASHSTRING:
-00f9c0 f001 .dw DO_COLON
- PFA_SLASHSTRING:
- .endif
-00f9c1 f0f3 .dw XT_ROT
-00f9c2 f0e1 .dw XT_OVER
-00f9c3 f1af .dw XT_PLUS
-00f9c4 f0f3 .dw XT_ROT
-00f9c5 f0f3 .dw XT_ROT
-00f9c6 f1a5 .dw XT_MINUS
-00f9c7 f026 .dw XT_EXIT
-
- .include "words/parse-name.asm"
-
- ; String
- ; In the SOURCE buffer parse whitespace delimited string. Returns string address within SOURCE.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_PARSENAME:
-00f9c8 ff0a .dw $FF0A
-00f9c9 6170
-00f9ca 7372
-00f9cb 2d65
-00f9cc 616e
-00f9cd 656d .db "parse-name"
-00f9ce f9ba .dw VE_HEAD
- .set VE_HEAD = VE_PARSENAME
- XT_PARSENAME:
-00f9cf f001 .dw DO_COLON
- PFA_PARSENAME:
- .endif
-00f9d0 f60b .dw XT_BL
-00f9d1 f9d3 .dw XT_SKIPSCANCHAR
-00f9d2 f026 .dw XT_EXIT
-
- ; ( c -- addr2 len2 )
- ; String
- ; skips char and scan what's left in source for char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_SKIPSCANCHAR:
- ; .dw $FF0A
- ; .db "skipscanchar"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_SKIPSCANCHAR
- XT_SKIPSCANCHAR:
-00f9d3 f001 .dw DO_COLON
- PFA_SKIPSCANCHAR:
- .endif
-00f9d4 f111 .dw XT_TO_R
-00f9d5 f9b6 .dw XT_SOURCE
-00f9d6 f599 .dw XT_TO_IN
-00f9d7 f08b .dw XT_FETCH
-00f9d8 f9c0 .dw XT_SLASHSTRING
-
-00f9d9 f11a .dw XT_R_FETCH
-00f9da f875 .dw XT_CSKIP
-00f9db f108 .dw XT_R_FROM
-00f9dc f88c .dw XT_CSCAN
-
- ; adjust >IN
-00f9dd f580 .dw XT_2DUP
-00f9de f1af .dw XT_PLUS
-00f9df f9b6 .dw XT_SOURCE
-00f9e0 f0eb .dw XT_DROP
-00f9e1 f1a5 .dw XT_MINUS
-00f9e2 f599 .dw XT_TO_IN
-00f9e3 f093 .dw XT_STORE
-00f9e4 f026 .dw XT_EXIT
- .include "words/find-xt.asm"
-
- ; Tools
- ; search wordlists for an entry with the xt from c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_FINDXT:
-00f9e5 ff07 .dw $ff07
-00f9e6 6966
-00f9e7 646e
-00f9e8 782d
-00f9e9 0074 .db "find-xt",0
-00f9ea f9c8 .dw VE_HEAD
- .set VE_HEAD = VE_FINDXT
- XT_FINDXT:
-00f9eb f001 .dw DO_COLON
- PFA_FINDXT:
- .endif
-00f9ec f046 .dw XT_DOLITERAL
-00f9ed f9f7 .dw XT_FINDXTA
-00f9ee f046 .dw XT_DOLITERAL
-00f9ef 005c .dw CFG_ORDERLISTLEN
-00f9f0 041b .dw XT_MAPSTACK
-00f9f1 f12c .dw XT_ZEROEQUAL
-00f9f2 f03f .dw XT_DOCONDBRANCH
-00f9f3 f9f6 DEST(PFA_FINDXT1)
-00f9f4 f589 .dw XT_2DROP
-00f9f5 f166 .dw XT_ZERO
- PFA_FINDXT1:
-00f9f6 f026 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_FINDXTA:
-00f9f7 f001 .dw DO_COLON
- PFA_FINDXTA:
- .endif
-00f9f8 f111 .dw XT_TO_R
-00f9f9 f580 .dw XT_2DUP
-00f9fa f108 .dw XT_R_FROM
-00f9fb fc40 .dw XT_SEARCH_WORDLIST
-00f9fc f0c3 .dw XT_DUP
-00f9fd f03f .dw XT_DOCONDBRANCH
-00f9fe fa04 DEST(PFA_FINDXTA1)
-00f9ff f111 .dw XT_TO_R
-00fa00 f102 .dw XT_NIP
-00fa01 f102 .dw XT_NIP
-00fa02 f108 .dw XT_R_FROM
-00fa03 f15d .dw XT_TRUE
- PFA_FINDXTA1:
-00fa04 f026 .dw XT_EXIT
-
- .include "words/prompt-ok.asm"
-
- ; System
- ; send the READY prompt to the command line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTOK:
- ; .dw $ff02
- ; .db "ok"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTOK
- XT_DEFAULT_PROMPTOK:
-00fa05 f001 .dw DO_COLON
- PFA_DEFAULT_PROMPTOK:
-00fa06 f788 .dw XT_DOSLITERAL
-00fa07 0003 .dw 3
-00fa08 6f20
-00fa09 006b .db " ok",0
- .endif
-00fa0a f7bb .dw XT_ITYPE
-00fa0b f026 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTOK:
-00fa0c ff03 .dw $FF03
-00fa0d 6f2e
-../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte
-00fa0e 006b .db ".ok"
-00fa0f f9e5 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTOK
- XT_PROMPTOK:
-00fa10 fc2e .dw PFA_DODEFER1
- PFA_PROMPTOK:
- .endif
-00fa11 001c .dw USER_P_OK
-00fa12 fbf7 .dw XT_UDEFERFETCH
-00fa13 fc03 .dw XT_UDEFERSTORE
- .include "words/prompt-ready.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTRDY:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTRDY
- XT_DEFAULT_PROMPTREADY:
-00fa14 f001 .dw DO_COLON
- PFA_DEFAULT_PROMPTREADY:
-00fa15 f788 .dw XT_DOSLITERAL
-00fa16 0002 .dw 2
-00fa17 203e .db "> "
- .endif
-00fa18 f7f0 .dw XT_CR
-00fa19 f7bb .dw XT_ITYPE
-00fa1a f026 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTREADY:
-00fa1b ff06 .dw $FF06
-00fa1c 722e
-00fa1d 6165
-00fa1e 7964 .db ".ready"
-00fa1f fa0c .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTREADY
- XT_PROMPTREADY:
-00fa20 fc2e .dw PFA_DODEFER1
- PFA_PROMPTREADY:
- .endif
-00fa21 0020 .dw USER_P_RDY
-00fa22 fbf7 .dw XT_UDEFERFETCH
-00fa23 fc03 .dw XT_UDEFERSTORE
- .include "words/prompt-error.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTERROR:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTERROR
- XT_DEFAULT_PROMPTERROR:
-00fa24 f001 .dw DO_COLON
- PFA_DEFAULT_PROMPTERROR:
-00fa25 f788 .dw XT_DOSLITERAL
-00fa26 0004 .dw 4
-00fa27 3f20
-00fa28 203f .db " ?? "
- .endif
-00fa29 f7bb .dw XT_ITYPE
-00fa2a f56c .dw XT_BASE
-00fa2b f08b .dw XT_FETCH
-00fa2c f111 .dw XT_TO_R
-00fa2d f5f8 .dw XT_DECIMAL
-00fa2e f73d .dw XT_DOT
-00fa2f f599 .dw XT_TO_IN
-00fa30 f08b .dw XT_FETCH
-00fa31 f73d .dw XT_DOT
-00fa32 f108 .dw XT_R_FROM
-00fa33 f56c .dw XT_BASE
-00fa34 f093 .dw XT_STORE
-00fa35 f026 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTERROR:
-00fa36 ff06 .dw $FF06
-00fa37 652e
-00fa38 7272
-00fa39 726f .db ".error"
-00fa3a fa1b .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTERROR
- XT_PROMPTERROR:
-00fa3b fc2e .dw PFA_DODEFER1
- PFA_PROMPTERROR:
- .endif
-00fa3c 001e .dw USER_P_ERR
-00fa3d fbf7 .dw XT_UDEFERFETCH
-00fa3e fc03 .dw XT_UDEFERSTORE
-
- .include "words/quit.asm"
-
- ; System
- ; main loop of amforth. accept - interpret in an endless loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QUIT:
-00fa3f ff04 .dw $ff04
-00fa40 7571
-00fa41 7469 .db "quit"
-00fa42 fa36 .dw VE_HEAD
- .set VE_HEAD = VE_QUIT
- XT_QUIT:
-00fa43 f001 .dw DO_COLON
- .endif
- PFA_QUIT:
-00fa44 02d0
-00fa45 02d7
-00fa46 f093 .dw XT_LP0,XT_LP,XT_STORE
-00fa47 faa4 .dw XT_SP0
-00fa48 f2a8 .dw XT_SP_STORE
-00fa49 fab1 .dw XT_RP0
-00fa4a f292 .dw XT_RP_STORE
-00fa4b 0365 .dw XT_LBRACKET
-
- PFA_QUIT2:
-00fa4c f566 .dw XT_STATE
-00fa4d f08b .dw XT_FETCH
-00fa4e f12c .dw XT_ZEROEQUAL
-00fa4f f03f .dw XT_DOCONDBRANCH
-00fa50 fa52 DEST(PFA_QUIT4)
-00fa51 fa20 .dw XT_PROMPTREADY
- PFA_QUIT4:
-00fa52 f8fd .dw XT_REFILL
-00fa53 f03f .dw XT_DOCONDBRANCH
-00fa54 fa64 DEST(PFA_QUIT3)
-00fa55 f046 .dw XT_DOLITERAL
-00fa56 faca .dw XT_INTERPRET
-00fa57 f846 .dw XT_CATCH
-00fa58 f0cb .dw XT_QDUP
-00fa59 f03f .dw XT_DOCONDBRANCH
-00fa5a fa64 DEST(PFA_QUIT3)
-00fa5b f0c3 .dw XT_DUP
-00fa5c f046 .dw XT_DOLITERAL
-00fa5d fffe .dw -2
-00fa5e f180 .dw XT_LESS
-00fa5f f03f .dw XT_DOCONDBRANCH
-00fa60 fa62 DEST(PFA_QUIT5)
-00fa61 fa3b .dw XT_PROMPTERROR
- PFA_QUIT5:
-00fa62 f035 .dw XT_DOBRANCH
-00fa63 fa44 DEST(PFA_QUIT)
- PFA_QUIT3:
-00fa64 fa10 .dw XT_PROMPTOK
-00fa65 f035 .dw XT_DOBRANCH
-00fa66 fa4c DEST(PFA_QUIT2)
- ; .dw XT_EXIT ; never reached
-
- .include "words/pause.asm"
-
- ; Multitasking
- ; Fetch pause vector and execute it. may make a context/task switch
- VE_PAUSE:
-00fa67 ff05 .dw $ff05
-00fa68 6170
-00fa69 7375
-00fa6a 0065 .db "pause",0
-00fa6b fa3f .dw VE_HEAD
- .set VE_HEAD = VE_PAUSE
- XT_PAUSE:
-00fa6c fc2e .dw PFA_DODEFER1
- PFA_PAUSE:
-00fa6d 0141 .dw ram_pause
-00fa6e fbe3 .dw XT_RDEFERFETCH
-00fa6f fbed .dw XT_RDEFERSTORE
-
- .dseg
-000141 ram_pause: .byte 2
- .cseg
- .include "words/cold.asm"
-
- ; System
- ; start up amforth.
- VE_COLD:
-00fa70 ff04 .dw $ff04
-00fa71 6f63
-00fa72 646c .db "cold"
-00fa73 fa67 .dw VE_HEAD
- .set VE_HEAD = VE_COLD
- XT_COLD:
-00fa74 fa75 .dw PFA_COLD
- PFA_COLD:
-00fa75 b6a4 in_ mcu_boot, MCUSR
-00fa76 2422 clr zerol
-00fa77 2433 clr zeroh
-00fa78 24bb clr isrflag
-00fa79 be24 out_ MCUSR, zerol
- ; clear RAM
-00fa7a e0e0 ldi zl, low(ramstart)
-00fa7b e0f1 ldi zh, high(ramstart)
- clearloop:
-00fa7c 9221 st Z+, zerol
-00fa7d 30e0 cpi zl, low(sram_size+ramstart)
-00fa7e f7e9 brne clearloop
-00fa7f 34f1 cpi zh, high(sram_size+ramstart)
-00fa80 f7d9 brne clearloop
- ; init first user data area
- ; allocate space for User Area
- .dseg
-000143 ram_user1: .byte SYSUSERSIZE + APPUSERSIZE
- .cseg
-00fa81 e4e3 ldi zl, low(ram_user1)
-00fa82 e0f1 ldi zh, high(ram_user1)
-00fa83 012f movw upl, zl
- ; init return stack pointer
-00fa84 ef0f ldi temp0,low(rstackstart)
-00fa85 bf0d out_ SPL,temp0
-00fa86 8304 std Z+4, temp0
-00fa87 e410 ldi temp1,high(rstackstart)
-00fa88 bf1e out_ SPH,temp1
-00fa89 8315 std Z+5, temp1
-
- ; init parameter stack pointer
-00fa8a eacf ldi yl,low(stackstart)
-00fa8b 83c6 std Z+6, yl
-00fa8c e4d0 ldi yh,high(stackstart)
-00fa8d 83d7 std Z+7, yh
-
- ; load Forth IP with starting word
-00fa8e e9a7 ldi XL, low(PFA_WARM)
-00fa8f efba ldi XH, high(PFA_WARM)
- ; its a far jump...
-00fa90 940c f005 jmp_ DO_NEXT
- .include "words/warm.asm"
-
- ; System
- ; initialize amforth further. executes turnkey operation and go to quit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WARM:
-00fa92 ff04 .dw $ff04
-00fa93 6177
-00fa94 6d72 .db "warm"
-00fa95 fa70 .dw VE_HEAD
- .set VE_HEAD = VE_WARM
- XT_WARM:
-00fa96 f001 .dw DO_COLON
- PFA_WARM:
- .endif
-00fa97 fd6b .dw XT_INIT_RAM
-00fa98 f046 .dw XT_DOLITERAL
-00fa99 fb9a .dw XT_NOOP
-00fa9a f046 .dw XT_DOLITERAL
-00fa9b fa6c .dw XT_PAUSE
-00fa9c fc0e .dw XT_DEFERSTORE
-00fa9d 0365 .dw XT_LBRACKET
-00fa9e f613 .dw XT_TURNKEY
-00fa9f fa43 .dw XT_QUIT ; never returns
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/sp0.asm"
-
- ; Stack
- ; start address of the data stack
- VE_SP0:
-00faa0 ff03 .dw $ff03
-00faa1 7073
-00faa2 0030 .db "sp0",0
-00faa3 fa92 .dw VE_HEAD
- .set VE_HEAD = VE_SP0
- XT_SP0:
-00faa4 f081 .dw PFA_DOVALUE1
- PFA_SP0:
-00faa5 0006 .dw USER_SP0
-00faa6 fbf7 .dw XT_UDEFERFETCH
-00faa7 fc03 .dw XT_UDEFERSTORE
-
- ; ( -- addr)
- ; Stack
- ; address of user variable to store top-of-stack for inactive tasks
- VE_SP:
-00faa8 ff02 .dw $ff02
-00faa9 7073 .db "sp"
-00faaa faa0 .dw VE_HEAD
- .set VE_HEAD = VE_SP
- XT_SP:
-00faab f067 .dw PFA_DOUSER
- PFA_SP:
-00faac 0008 .dw USER_SP
- .include "words/rp0.asm"
-
- ; Stack
- ; start address of return stack
- VE_RP0:
-00faad ff03 .dw $ff03
-00faae 7072
-00faaf 0030 .db "rp0",0
-00fab0 faa8 .dw VE_HEAD
- .set VE_HEAD = VE_RP0
- XT_RP0:
-00fab1 f001 .dw DO_COLON
- PFA_RP0:
-00fab2 fab5 .dw XT_DORP0
-00fab3 f08b .dw XT_FETCH
-00fab4 f026 .dw XT_EXIT
-
- ; ( -- addr)
- ; Stack
- ; user variable of the address of the initial return stack
- ;VE_DORP0:
- ; .dw $ff05
- ; .db "(rp0)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DORP0
- XT_DORP0:
-00fab5 f067 .dw PFA_DOUSER
- PFA_DORP0:
-00fab6 0004 .dw USER_RP
- .include "words/depth.asm"
-
- ; Stack
- ; number of single-cell values contained in the data stack before n was placed on the stack.
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEPTH:
-00fab7 ff05 .dw $ff05
-00fab8 6564
-00fab9 7470
-00faba 0068 .db "depth",0
-00fabb faad .dw VE_HEAD
- .set VE_HEAD = VE_DEPTH
- XT_DEPTH:
-00fabc f001 .dw DO_COLON
- PFA_DEPTH:
- .endif
-00fabd faa4 .dw XT_SP0
-00fabe f29f .dw XT_SP_FETCH
-00fabf f1a5 .dw XT_MINUS
-00fac0 f216 .dw XT_2SLASH
-00fac1 f247 .dw XT_1MINUS
-00fac2 f026 .dw XT_EXIT
- .include "words/interpret.asm"
-
- ; System
- ; Interpret SOURCE word by word.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_INTERPRET:
-00fac3 ff09 .dw $ff09
-00fac4 6e69
-00fac5 6574
-00fac6 7072
-00fac7 6572
-00fac8 0074 .db "interpret",0
-00fac9 fab7 .dw VE_HEAD
- .set VE_HEAD = VE_INTERPRET
- XT_INTERPRET:
-00faca f001 .dw DO_COLON
- .endif
- PFA_INTERPRET:
-00facb f9cf .dw XT_PARSENAME ; ( -- addr len )
-00facc f0c3 .dw XT_DUP ; ( -- addr len flag)
-00facd f03f .dw XT_DOCONDBRANCH
-00face fadb DEST(PFA_INTERPRET2)
-00facf fae7 .dw XT_FORTHRECOGNIZER
-00fad0 faf2 .dw XT_RECOGNIZE
-00fad1 f566 .dw XT_STATE
-00fad2 f08b .dw XT_FETCH
-00fad3 f03f .dw XT_DOCONDBRANCH
-00fad4 fad6 DEST(PFA_INTERPRET1)
-00fad5 fbc6 .dw XT_ICELLPLUS ; we need the compile action
- PFA_INTERPRET1:
-00fad6 f3e3 .dw XT_FETCHI
-00fad7 f030 .dw XT_EXECUTE
-00fad8 fb72 .dw XT_QSTACK
-00fad9 f035 .dw XT_DOBRANCH
-00fada facb DEST(PFA_INTERPRET)
- PFA_INTERPRET2:
-00fadb f589 .dw XT_2DROP
-00fadc f026 .dw XT_EXIT
- .include "words/forth-recognizer.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_FORTHRECOGNIZER:
-00fadd ff10 .dw $ff10
-00fade 6f66
-00fadf 7472
-00fae0 2d68
-00fae1 6572
-00fae2 6f63
-00fae3 6e67
-00fae4 7a69
-00fae5 7265 .db "forth-recognizer"
-00fae6 fac3 .dw VE_HEAD
- .set VE_HEAD = VE_FORTHRECOGNIZER
- XT_FORTHRECOGNIZER:
-00fae7 f081 .dw PFA_DOVALUE1
- PFA_FORTHRECOGNIZER:
-00fae8 0050 .dw CFG_FORTHRECOGNIZER
-00fae9 fbcf .dw XT_EDEFERFETCH
-00faea fbd9 .dw XT_EDEFERSTORE
- .include "words/recognize.asm"
-
- ; System
- ; walk the recognizer stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECOGNIZE:
-00faeb ff09 .dw $ff09
-00faec 6572
-00faed 6f63
-00faee 6e67
-00faef 7a69
-00faf0 0065 .db "recognize",0
-00faf1 fadd .dw VE_HEAD
- .set VE_HEAD = VE_RECOGNIZE
- XT_RECOGNIZE:
-00faf2 f001 .dw DO_COLON
- PFA_RECOGNIZE:
- .endif
-00faf3 f046 .dw XT_DOLITERAL
-00faf4 fafd .dw XT_RECOGNIZE_A
-00faf5 f0d6 .dw XT_SWAP
-00faf6 041b .dw XT_MAPSTACK
-00faf7 f12c .dw XT_ZEROEQUAL
-00faf8 f03f .dw XT_DOCONDBRANCH
-00faf9 fafc DEST(PFA_RECOGNIZE1)
-00fafa f589 .dw XT_2DROP
-00fafb fb65 .dw XT_DT_NULL
- PFA_RECOGNIZE1:
-00fafc f026 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] )
- XT_RECOGNIZE_A:
-00fafd f001 .dw DO_COLON
- PFA_RECOGNIZE_A:
- .endif
-00fafe f0f3 .dw XT_ROT ; -- len xt addr
-00faff f0f3 .dw XT_ROT ; -- xt addr len
-00fb00 f580 .dw XT_2DUP
-00fb01 f330 .dw XT_2TO_R
-00fb02 f0f3 .dw XT_ROT ; -- addr len xt
-00fb03 f030 .dw XT_EXECUTE ; -- i*x dt:* | dt:null
-00fb04 f33f .dw XT_2R_FROM
-00fb05 f0f3 .dw XT_ROT
-00fb06 f0c3 .dw XT_DUP
-00fb07 fb65 .dw XT_DT_NULL
-00fb08 fd9a .dw XT_EQUAL
-00fb09 f03f .dw XT_DOCONDBRANCH
-00fb0a fb0e DEST(PFA_RECOGNIZE_A1)
-00fb0b f0eb .dw XT_DROP
-00fb0c f166 .dw XT_ZERO
-00fb0d f026 .dw XT_EXIT
- PFA_RECOGNIZE_A1:
-00fb0e f102 .dw XT_NIP
-00fb0f f102 .dw XT_NIP
-00fb10 f15d .dw XT_TRUE
-00fb11 f026 .dw XT_EXIT
-
- ; : recognize ( addr len stack-id -- i*x dt:* | dt:null )
- ; [: ( addr len -- addr len 0 | i*x dt:* -1 )
- ; rot rot 2dup 2>r rot execute 2r> rot
- ; dup dt:null = ( -- addr len dt:* f )
- ; if drop 0 else nip nip -1 then
- ; ;]
- ; map-stack ( -- i*x addr len dt:* f )
- ; 0= if \ a recognizer did the job, remove addr/len
- ; 2drop dt:null
- ; then ;
- ;
- .include "words/rec-intnum.asm"
-
- ; Interpreter
- ; Method table for single cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NUM:
-00fb12 ff06 .dw $ff06
-00fb13 7464
-00fb14 6e3a
-00fb15 6d75 .db "dt:num"
-00fb16 faeb .dw VE_HEAD
- .set VE_HEAD = VE_DT_NUM
- XT_DT_NUM:
-00fb17 f061 .dw PFA_DOCONSTANT
- PFA_DT_NUM:
- .endif
-00fb18 fb9a .dw XT_NOOP ; interpret
-00fb19 01f1 .dw XT_LITERAL ; compile
-00fb1a 01f1 .dw XT_LITERAL ; postpone
-
- ; ( -- addr )
- ; Interpreter
- ; Method table for double cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_DNUM:
-00fb1b ff07 .dw $ff07
-00fb1c 7464
-00fb1d 643a
-00fb1e 756e
-00fb1f 006d .db "dt:dnum",0
-00fb20 fb12 .dw VE_HEAD
- .set VE_HEAD = VE_DT_DNUM
- XT_DT_DNUM:
-00fb21 f061 .dw PFA_DOCONSTANT
- PFA_DT_DNUM:
- .endif
-00fb22 fb9a .dw XT_NOOP ; interpret
-00fb23 fd92 .dw XT_2LITERAL ; compile
-00fb24 fd92 .dw XT_2LITERAL ; postpone
-
- ; ( addr len -- f )
- ; Interpreter
- ; recognizer for integer numbers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_REC_NUM:
-00fb25 ff07 .dw $ff07
-00fb26 6572
-00fb27 3a63
-00fb28 756e
-00fb29 006d .db "rec:num",0
-00fb2a fb1b .dw VE_HEAD
- .set VE_HEAD = VE_REC_NUM
- XT_REC_NUM:
-00fb2b f001 .dw DO_COLON
- PFA_REC_NUM:
- .endif
- ; try converting to a number
-00fb2c f90f .dw XT_NUMBER
-00fb2d f03f .dw XT_DOCONDBRANCH
-00fb2e fb37 DEST(PFA_REC_NONUMBER)
-00fb2f fda1 .dw XT_ONE
-00fb30 fd9a .dw XT_EQUAL
-00fb31 f03f .dw XT_DOCONDBRANCH
-00fb32 fb35 DEST(PFA_REC_INTNUM2)
-00fb33 fb17 .dw XT_DT_NUM
-00fb34 f026 .dw XT_EXIT
- PFA_REC_INTNUM2:
-00fb35 fb21 .dw XT_DT_DNUM
-00fb36 f026 .dw XT_EXIT
- PFA_REC_NONUMBER:
-00fb37 fb65 .dw XT_DT_NULL
-00fb38 f026 .dw XT_EXIT
- .include "words/rec-find.asm"
-
- ; Interpreter
- ; search for a word
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- VE_REC_FIND:
-00fb39 ff08 .dw $ff08
-00fb3a 6572
-00fb3b 3a63
-00fb3c 6966
-00fb3d 646e .db "rec:find"
-00fb3e fb25 .dw VE_HEAD
- .set VE_HEAD = VE_REC_FIND
- XT_REC_FIND:
-00fb3f f001 .dw DO_COLON
- PFA_REC_FIND:
- .endif
-00fb40 f9eb .DW XT_FINDXT
-00fb41 f0c3 .dw XT_DUP
-00fb42 f12c .dw XT_ZEROEQUAL
-00fb43 f03f .dw XT_DOCONDBRANCH
-00fb44 fb48 DEST(PFA_REC_WORD_FOUND)
-00fb45 f0eb .dw XT_DROP
-00fb46 fb65 .dw XT_DT_NULL
-00fb47 f026 .dw XT_EXIT
- PFA_REC_WORD_FOUND:
-00fb48 fb4f .dw XT_DT_XT
-
-00fb49 f026 .dw XT_EXIT
-
- ; ( -- addr )
- ; Interpreter
- ; actions to handle execution tokens and their flags
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_XT:
-00fb4a ff05 .dw $ff05
-00fb4b 7464
-00fb4c 783a
-00fb4d 0074 .db "dt:xt",0
-00fb4e fb39 .dw VE_HEAD
- .set VE_HEAD = VE_DT_XT
- XT_DT_XT:
-00fb4f f061 .dw PFA_DOCONSTANT
- PFA_DT_XT:
- .endif
-00fb50 fb53 .dw XT_R_WORD_INTERPRET
-00fb51 fb57 .dw XT_R_WORD_COMPILE
-00fb52 fd92 .dw XT_2LITERAL
-
- ; ( XT flags -- )
- ; Interpreter
- ; interpret method for WORD recognizer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_R_WORD_INTERPRET:
-00fb53 f001 .dw DO_COLON
- PFA_R_WORD_INTERPRET:
- .endif
-00fb54 f0eb .dw XT_DROP ; the flags are in the way
-00fb55 f030 .dw XT_EXECUTE
-00fb56 f026 .dw XT_EXIT
-
- ; ( XT flags -- )
- ; Interpreter
- ; Compile method for WORD recognizer
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- XT_R_WORD_COMPILE:
-00fb57 f001 .dw DO_COLON
- PFA_R_WORD_COMPILE:
- .endif
-00fb58 f133 .dw XT_ZEROLESS
-00fb59 f03f .dw XT_DOCONDBRANCH
-00fb5a fb5d DEST(PFA_R_WORD_COMPILE1)
-00fb5b 01db .dw XT_COMMA
-00fb5c f026 .dw XT_EXIT
- PFA_R_WORD_COMPILE1:
-00fb5d f030 .dw XT_EXECUTE
-00fb5e f026 .dw XT_EXIT
- .include "words/dt-null.asm"
-
- ; Interpreter
- ; there is no parser for this recognizer, this is the default and failsafe part
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NULL:
-00fb5f ff07 .dw $ff07
-00fb60 7464
-00fb61 6e3a
-00fb62 6c75
-../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte
-00fb63 006c .db "dt:null"
-00fb64 fb4a .dw VE_HEAD
- .set VE_HEAD = VE_DT_NULL
- XT_DT_NULL:
-00fb65 f061 .dw PFA_DOCONSTANT
- PFA_DT_NULL:
- .endif
-00fb66 fb69 .dw XT_FAIL ; interpret
-00fb67 fb69 .dw XT_FAIL ; compile
-00fb68 fb69 .dw XT_FAIL ; postpone
-
- ; ( addr len -- )
- ; Interpreter
- ; default failure action: throw exception -13.
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- ;VE_FAIL:
- ; .dw $ff04
- ; .db "fail"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_FAIL
- XT_FAIL:
-00fb69 f001 .dw DO_COLON
- PFA_FAIL:
- .endif
-00fb6a f046 .dw XT_DOLITERAL
-00fb6b fff3 .dw -13
-00fb6c f85c .dw XT_THROW
-
- .include "words/q-stack.asm"
-
- ; Tools
- ; check data stack depth and exit to quit if underrun
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QSTACK:
-00fb6d ff06 .dw $ff06
-00fb6e 733f
-00fb6f 6174
-00fb70 6b63 .db "?stack"
-00fb71 fb5f .dw VE_HEAD
- .set VE_HEAD = VE_QSTACK
- XT_QSTACK:
-00fb72 f001 .dw DO_COLON
- PFA_QSTACK:
- .endif
-00fb73 fabc .dw XT_DEPTH
-00fb74 f133 .dw XT_ZEROLESS
-00fb75 f03f .dw XT_DOCONDBRANCH
-00fb76 fb7a DEST(PFA_QSTACK1)
-00fb77 f046 .dw XT_DOLITERAL
-00fb78 fffc .dw -4
-00fb79 f85c .dw XT_THROW
- PFA_QSTACK1:
-00fb7a f026 .dw XT_EXIT
- .include "words/ver.asm"
-
- ; Tools
- ; print the version string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOT_VER:
-00fb7b ff03 .dw $ff03
-00fb7c 6576
-../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte
-00fb7d 0072 .db "ver"
-00fb7e fb6d .dw VE_HEAD
- .set VE_HEAD = VE_DOT_VER
- XT_DOT_VER:
-00fb7f f001 .dw DO_COLON
- PFA_DOT_VER:
- .endif
-00fb80 f528 .dw XT_ENV_FORTHNAME
-00fb81 f7bb .dw XT_ITYPE
-00fb82 f7fd .dw XT_SPACE
-00fb83 f56c .dw XT_BASE
-00fb84 f08b .dw XT_FETCH
-
-00fb85 f536 .dw XT_ENV_FORTHVERSION
-00fb86 f5f8 .dw XT_DECIMAL
-00fb87 fd82 .dw XT_S2D
-00fb88 f6d9 .dw XT_L_SHARP
-00fb89 f6e1 .dw XT_SHARP
-00fb8a f046 .dw XT_DOLITERAL
-00fb8b 002e .dw '.'
-00fb8c f6ca .dw XT_HOLD
-00fb8d f6f7 .dw XT_SHARP_S
-00fb8e f702 .dw XT_SHARP_G
-00fb8f f816 .dw XT_TYPE
-00fb90 f56c .dw XT_BASE
-00fb91 f093 .dw XT_STORE
-00fb92 f7fd .dw XT_SPACE
-00fb93 f53e .dw XT_ENV_CPU
-00fb94 f7bb .dw XT_ITYPE
-
-00fb95 f026 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/noop.asm"
-
- ; Tools
- ; do nothing
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOOP:
-00fb96 ff04 .dw $ff04
-00fb97 6f6e
-00fb98 706f .db "noop"
-00fb99 fb7b .dw VE_HEAD
- .set VE_HEAD = VE_NOOP
- XT_NOOP:
-00fb9a f001 .dw DO_COLON
- PFA_NOOP:
- .endif
-00fb9b f026 .DW XT_EXIT
- .include "words/unused.asm"
-
- ; Tools
- ; Amount of available RAM (incl. PAD)
- VE_UNUSED:
-00fb9c ff06 .dw $ff06
-00fb9d 6e75
-00fb9e 7375
-00fb9f 6465 .db "unused"
-00fba0 fb96 .dw VE_HEAD
- .set VE_HEAD = VE_UNUSED
- XT_UNUSED:
-00fba1 f001 .dw DO_COLON
- PFA_UNUSED:
-00fba2 f29f .dw XT_SP_FETCH
-00fba3 f5da .dw XT_HERE
-00fba4 f1a5 .dw XT_MINUS
-00fba5 f026 .dw XT_EXIT
-
- .include "words/to.asm"
-
- ; Tools
- ; store the TOS to the named value (eeprom cell)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO:
-00fba6 0002 .dw $0002
-00fba7 6f74 .db "to"
-00fba8 fb9c .dw VE_HEAD
- .set VE_HEAD = VE_TO
- XT_TO:
-00fba9 f001 .dw DO_COLON
- PFA_TO:
- .endif
-00fbaa f825 .dw XT_TICK
-00fbab fd8b .dw XT_TO_BODY
-00fbac f566 .dw XT_STATE
-00fbad f08b .dw XT_FETCH
-00fbae f03f .dw XT_DOCONDBRANCH
-00fbaf fbba DEST(PFA_TO1)
-00fbb0 01d0 .dw XT_COMPILE
-00fbb1 fbb4 .dw XT_DOTO
-00fbb2 01db .dw XT_COMMA
-00fbb3 f026 .dw XT_EXIT
-
- ; ( n -- ) (R: IP -- IP+1)
- ; Tools
- ; runtime portion of to
- ;VE_DOTO:
- ; .dw $ff04
- ; .db "(to)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOTO
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_DOTO:
-00fbb4 f001 .dw DO_COLON
- PFA_DOTO:
- .endif
-00fbb5 f108 .dw XT_R_FROM
-00fbb6 f0c3 .dw XT_DUP
-00fbb7 fbc6 .dw XT_ICELLPLUS
-00fbb8 f111 .dw XT_TO_R
-00fbb9 f3e3 .dw XT_FETCHI
- PFA_TO1:
-00fbba f0c3 .dw XT_DUP
-00fbbb fbc6 .dw XT_ICELLPLUS
-00fbbc fbc6 .dw XT_ICELLPLUS
-00fbbd f3e3 .dw XT_FETCHI
-00fbbe f030 .dw XT_EXECUTE
-00fbbf f026 .dw XT_EXIT
- .include "words/i-cellplus.asm"
-
- ; Compiler
- ; skip to the next cell in flash
- VE_ICELLPLUS:
-00fbc0 ff07 .dw $FF07
-00fbc1 2d69
-00fbc2 6563
-00fbc3 6c6c
-00fbc4 002b .db "i-cell+",0
-00fbc5 fba6 .dw VE_HEAD
- .set VE_HEAD = VE_ICELLPLUS
- XT_ICELLPLUS:
-00fbc6 f001 .dw DO_COLON
- PFA_ICELLPLUS:
-00fbc7 f241 .dw XT_1PLUS
-00fbc8 f026 .dw XT_EXIT
-
- .include "words/edefer-fetch.asm"
-
- ; System
- ; does the real defer@ for eeprom defers
- VE_EDEFERFETCH:
-00fbc9 ff07 .dw $ff07
-00fbca 6445
-00fbcb 6665
-00fbcc 7265
-00fbcd 0040 .db "Edefer@",0
-00fbce fbc0 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERFETCH
- XT_EDEFERFETCH:
-00fbcf f001 .dw DO_COLON
- PFA_EDEFERFETCH:
-00fbd0 f3e3 .dw XT_FETCHI
-00fbd1 f371 .dw XT_FETCHE
-00fbd2 f026 .dw XT_EXIT
- .include "words/edefer-store.asm"
-
- ; System
- ; does the real defer! for eeprom defers
- VE_EDEFERSTORE:
-00fbd3 ff07 .dw $ff07
-00fbd4 6445
-00fbd5 6665
-00fbd6 7265
-00fbd7 0021 .db "Edefer!",0
-00fbd8 fbc9 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERSTORE
- XT_EDEFERSTORE:
-00fbd9 f001 .dw DO_COLON
- PFA_EDEFERSTORE:
-00fbda f3e3 .dw XT_FETCHI
-00fbdb f34d .dw XT_STOREE
-00fbdc f026 .dw XT_EXIT
- .include "words/rdefer-fetch.asm"
-
- ; System
- ; The defer@ for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERFETCH:
-00fbdd ff07 .dw $ff07
-00fbde 6452
-00fbdf 6665
-00fbe0 7265
-00fbe1 0040 .db "Rdefer@",0
-00fbe2 fbd3 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERFETCH
- XT_RDEFERFETCH:
-00fbe3 f001 .dw DO_COLON
- PFA_RDEFERFETCH:
- .endif
-00fbe4 f3e3 .dw XT_FETCHI
-00fbe5 f08b .dw XT_FETCH
-00fbe6 f026 .dw XT_EXIT
- .include "words/rdefer-store.asm"
-
- ; System
- ; The defer! for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERSTORE:
-00fbe7 ff07 .dw $ff07
-00fbe8 6452
-00fbe9 6665
-00fbea 7265
-00fbeb 0021 .db "Rdefer!",0
-00fbec fbdd .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERSTORE
- XT_RDEFERSTORE:
-00fbed f001 .dw DO_COLON
- PFA_RDEFERSTORE:
- .endif
-00fbee f3e3 .dw XT_FETCHI
-00fbef f093 .dw XT_STORE
-00fbf0 f026 .dw XT_EXIT
-
- .include "words/udefer-fetch.asm"
-
- ; System
- ; does the real defer@ for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERFETCH:
-00fbf1 ff07 .dw $ff07
-00fbf2 6455
-00fbf3 6665
-00fbf4 7265
-00fbf5 0040 .db "Udefer@",0
-00fbf6 fbe7 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERFETCH
- XT_UDEFERFETCH:
-00fbf7 f001 .dw DO_COLON
- PFA_UDEFERFETCH:
- .endif
-00fbf8 f3e3 .dw XT_FETCHI
-00fbf9 f314 .dw XT_UP_FETCH
-00fbfa f1af .dw XT_PLUS
-00fbfb f08b .dw XT_FETCH
-00fbfc f026 .dw XT_EXIT
- .include "words/udefer-store.asm"
-
- ; System
- ; does the real defer! for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERSTORE:
-00fbfd ff07 .dw $ff07
-00fbfe 6455
-00fbff 6665
-00fc00 7265
-00fc01 0021 .db "Udefer!",0
-00fc02 fbf1 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERSTORE
- XT_UDEFERSTORE:
-00fc03 f001 .dw DO_COLON
- PFA_UDEFERSTORE:
- .endif
-
-00fc04 f3e3 .dw XT_FETCHI
-00fc05 f314 .dw XT_UP_FETCH
-00fc06 f1af .dw XT_PLUS
-00fc07 f093 .dw XT_STORE
-00fc08 f026 .dw XT_EXIT
-
- .include "words/defer-store.asm"
-
- ; System
- ; stores xt1 as the xt to be executed when xt2 is called
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERSTORE:
-00fc09 ff06 .dw $ff06
-00fc0a 6564
-00fc0b 6566
-00fc0c 2172 .db "defer!"
-00fc0d fbfd .dw VE_HEAD
- .set VE_HEAD = VE_DEFERSTORE
- XT_DEFERSTORE:
-00fc0e f001 .dw DO_COLON
- PFA_DEFERSTORE:
- .endif
-00fc0f fd8b .dw XT_TO_BODY
-00fc10 f0c3 .dw XT_DUP
-00fc11 fbc6 .dw XT_ICELLPLUS
-00fc12 fbc6 .dw XT_ICELLPLUS
-00fc13 f3e3 .dw XT_FETCHI
-00fc14 f030 .dw XT_EXECUTE
-00fc15 f026 .dw XT_EXIT
-
- .include "words/defer-fetch.asm"
-
- ; System
- ; returns the XT associated with the given XT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERFETCH:
-00fc16 ff06 .dw $ff06
-00fc17 6564
-00fc18 6566
-00fc19 4072 .db "defer@"
-00fc1a fc09 .dw VE_HEAD
- .set VE_HEAD = VE_DEFERFETCH
- XT_DEFERFETCH:
-00fc1b f001 .dw DO_COLON
- PFA_DEFERFETCH:
- .endif
-00fc1c fd8b .dw XT_TO_BODY
-00fc1d f0c3 .dw XT_DUP
-00fc1e fbc6 .dw XT_ICELLPLUS
-00fc1f f3e3 .dw XT_FETCHI
-00fc20 f030 .dw XT_EXECUTE
-00fc21 f026 .dw XT_EXIT
- .include "words/do-defer.asm"
-
- ; System
- ; runtime of defer
- VE_DODEFER:
-00fc22 ff07 .dw $ff07
-00fc23 6428
-00fc24 6665
-00fc25 7265
-00fc26 0029 .db "(defer)", 0
-00fc27 fc16 .dw VE_HEAD
- .set VE_HEAD = VE_DODEFER
- XT_DODEFER:
-00fc28 f001 .dw DO_COLON
- PFA_DODEFER:
-00fc29 01ad .dw XT_DOCREATE
-00fc2a 030d .dw XT_REVEAL
-00fc2b 01d0 .dw XT_COMPILE
-00fc2c fc2e .dw PFA_DODEFER1
-00fc2d f026 .dw XT_EXIT
- PFA_DODEFER1:
-00fc2e 940e 0326 call_ DO_DODOES
-00fc30 f0c3 .dw XT_DUP
-00fc31 fbc6 .dw XT_ICELLPLUS
-00fc32 f3e3 .dw XT_FETCHI
-00fc33 f030 .dw XT_EXECUTE
-00fc34 f030 .dw XT_EXECUTE
-00fc35 f026 .dw XT_EXIT
-
- ; : (defer) <builds does> dup i-cell+ @i execute execute ;
-
-
- .include "words/search-wordlist.asm"
-
- ; Search Order
- ; searches the word list wid for the word at c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SEARCH_WORDLIST:
-00fc36 ff0f .dw $ff0f
-00fc37 6573
-00fc38 7261
-00fc39 6863
-00fc3a 772d
-00fc3b 726f
-00fc3c 6c64
-00fc3d 7369
-00fc3e 0074 .db "search-wordlist",0
-00fc3f fc22 .dw VE_HEAD
- .set VE_HEAD = VE_SEARCH_WORDLIST
- XT_SEARCH_WORDLIST:
-00fc40 f001 .dw DO_COLON
- PFA_SEARCH_WORDLIST:
- .endif
-00fc41 f111 .dw XT_TO_R
-00fc42 f166 .dw XT_ZERO
-00fc43 f046 .dw XT_DOLITERAL
-00fc44 fc55 .dw XT_ISWORD
-00fc45 f108 .dw XT_R_FROM
-00fc46 fc72 .dw XT_TRAVERSEWORDLIST
-00fc47 f0c3 .dw XT_DUP
-00fc48 f12c .dw XT_ZEROEQUAL
-00fc49 f03f .dw XT_DOCONDBRANCH
-00fc4a fc4f DEST(PFA_SEARCH_WORDLIST1)
-00fc4b f589 .dw XT_2DROP
-00fc4c f0eb .dw XT_DROP
-00fc4d f166 .dw XT_ZERO
-00fc4e f026 .dw XT_EXIT
- PFA_SEARCH_WORDLIST1:
- ; ... get the XT ...
-00fc4f f0c3 .dw XT_DUP
-00fc50 fc99 .dw XT_NFA2CFA
- ; .. and get the header flag
-00fc51 f0d6 .dw XT_SWAP
-00fc52 0193 .dw XT_NAME2FLAGS
-00fc53 0181 .dw XT_IMMEDIATEQ
-00fc54 f026 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_ISWORD:
-00fc55 f001 .dw DO_COLON
- PFA_ISWORD:
- .endif
- ; ( c-addr len 0 nt -- c-addr len 0 true| nt false )
-00fc56 f111 .dw XT_TO_R
-00fc57 f0eb .dw XT_DROP
-00fc58 f580 .dw XT_2DUP
-00fc59 f11a .dw XT_R_FETCH ; -- addr len addr len nt
-00fc5a fc8d .dw XT_NAME2STRING
-00fc5b fca3 .dw XT_ICOMPARE ; (-- addr len f )
-00fc5c f03f .dw XT_DOCONDBRANCH
-00fc5d fc63 DEST(PFA_ISWORD3)
- ; not now
-00fc5e f108 .dw XT_R_FROM
-00fc5f f0eb .dw XT_DROP
-00fc60 f166 .dw XT_ZERO
-00fc61 f15d .dw XT_TRUE ; maybe next word
-00fc62 f026 .dw XT_EXIT
- PFA_ISWORD3:
- ; we found the word, now clean up iteration data ...
-00fc63 f589 .dw XT_2DROP
-00fc64 f108 .dw XT_R_FROM
-00fc65 f166 .dw XT_ZERO ; finish traverse-wordlist
-00fc66 f026 .dw XT_EXIT
- .include "words/traverse-wordlist.asm"
-
- ; Tools Ext (2012)
- ; call the xt for every member of the wordlist wid until xt returns false
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TRAVERSEWORDLIST:
-00fc67 ff11 .dw $ff11
-00fc68 7274
-00fc69 7661
-00fc6a 7265
-00fc6b 6573
-00fc6c 772d
-00fc6d 726f
-00fc6e 6c64
-00fc6f 7369
-00fc70 0074 .db "traverse-wordlist",0
-00fc71 fc36 .dw VE_HEAD
- .set VE_HEAD = VE_TRAVERSEWORDLIST
- XT_TRAVERSEWORDLIST:
-00fc72 f001 .dw DO_COLON
- PFA_TRAVERSEWORDLIST:
-
- .endif
-00fc73 f371 .dw XT_FETCHE
- PFA_TRAVERSEWORDLIST1:
-00fc74 f0c3 .dw XT_DUP ; ( -- xt nt nt )
-00fc75 f03f .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string
-00fc76 fc83 DEST(PFA_TRAVERSEWORDLIST2)
-00fc77 f580 .dw XT_2DUP
-00fc78 f330 .dw XT_2TO_R
-00fc79 f0d6 .dw XT_SWAP
-00fc7a f030 .dw XT_EXECUTE
-00fc7b f33f .dw XT_2R_FROM
-00fc7c f0f3 .dw XT_ROT
-00fc7d f03f .dw XT_DOCONDBRANCH
-00fc7e fc83 DEST(PFA_TRAVERSEWORDLIST2)
-00fc7f 048a .dw XT_NFA2LFA
-00fc80 f3e3 .dw XT_FETCHI
-00fc81 f035 .dw XT_DOBRANCH ; ( -- addr )
-00fc82 fc74 DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr )
- PFA_TRAVERSEWORDLIST2:
-00fc83 f589 .dw XT_2DROP
-00fc84 f026 .dw XT_EXIT
-
- ; : traverse-wordlist ( i*x xt wid -- i*x' )
- ; begin @ dup
- ; while
- ; 2dup 2>r
- ; swap execute ( i*x nt -- i*x' f )
- ; 2r> rot
- ; while
- ; nfa>lfa @i
- ; repeat then 2drop ;
- .include "words/name2string.asm"
-
- ; Tools Ext (2012)
- ; get a (flash) string from a name token nt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NAME2STRING:
-00fc85 ff0b .dw $ff0b
-00fc86 616e
-00fc87 656d
-00fc88 733e
-00fc89 7274
-00fc8a 6e69
-00fc8b 0067 .db "name>string",0
-00fc8c fc67 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2STRING
- XT_NAME2STRING:
-00fc8d f001 .dw DO_COLON
- PFA_NAME2STRING:
-
- .endif
-00fc8e f7e7 .dw XT_ICOUNT ; ( -- addr n )
-00fc8f f046 .dw XT_DOLITERAL
-00fc90 00ff .dw 255
-00fc91 f225 .dw XT_AND ; mask immediate bit
-00fc92 f026 .dw XT_EXIT
- .include "words/nfa2cfa.asm"
-
- ; Tools
- ; get the XT from a name token
- VE_NFA2CFA:
-00fc93 ff07 .dw $ff07
-00fc94 666e
-00fc95 3e61
-00fc96 6663
-../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte
-00fc97 0061 .db "nfa>cfa"
-00fc98 fc85 .dw VE_HEAD
- .set VE_HEAD = VE_NFA2CFA
- XT_NFA2CFA:
-00fc99 f001 .dw DO_COLON
- PFA_NFA2CFA:
-00fc9a 048a .dw XT_NFA2LFA ; skip to link field
-00fc9b f241 .dw XT_1PLUS ; next is the execution token
-00fc9c f026 .dw XT_EXIT
- .include "words/icompare.asm"
-
- ; Tools
- ; compares string in RAM with string in flash. f is zero if equal like COMPARE
- VE_ICOMPARE:
-00fc9d ff08 .dw $ff08
-00fc9e 6369
-00fc9f 6d6f
-00fca0 6170
-00fca1 6572 .db "icompare"
-00fca2 fc93 .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
- XT_ICOMPARE:
-00fca3 f001 .dw DO_COLON
- PFA_ICOMPARE:
-00fca4 f111 .dw XT_TO_R ; ( -- r-addr r-len f-addr)
-00fca5 f0e1 .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
-00fca6 f108 .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
-00fca7 f125 .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
-00fca8 f03f .dw XT_DOCONDBRANCH
-00fca9 fcae .dw PFA_ICOMPARE_SAMELEN
-00fcaa f589 .dw XT_2DROP
-00fcab f0eb .dw XT_DROP
-00fcac f15d .dw XT_TRUE
-00fcad f026 .dw XT_EXIT
- PFA_ICOMPARE_SAMELEN:
-00fcae f0d6 .dw XT_SWAP ; ( -- r-addr f-addr len )
-00fcaf f166 .dw XT_ZERO
-00fcb0 029a .dw XT_QDOCHECK
-00fcb1 f03f .dw XT_DOCONDBRANCH
-00fcb2 fcd1 .dw PFA_ICOMPARE_DONE
-00fcb3 f2ad .dw XT_DODO
- PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
-00fcb4 f0e1 .dw XT_OVER
-00fcb5 f08b .dw XT_FETCH
- .if WANT_IGNORECASE == 1
- .endif
-00fcb6 f0e1 .dw XT_OVER
-00fcb7 f3e3 .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
- .if WANT_IGNORECASE == 1
- .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
-00fcb8 f0c3 .dw XT_DUP
- ;.dw XT_BYTESWAP
-00fcb9 f046 .dw XT_DOLITERAL
-00fcba 0100 .dw $100
-00fcbb f16e .dw XT_ULESS
-00fcbc f03f .dw XT_DOCONDBRANCH
-00fcbd fcc2 .dw PFA_ICOMPARE_LASTCELL
-00fcbe f0d6 .dw XT_SWAP
-00fcbf f046 .dw XT_DOLITERAL
-00fcc0 00ff .dw $00FF
-00fcc1 f225 .dw XT_AND ; the final swap can be omitted
- PFA_ICOMPARE_LASTCELL:
-00fcc2 f125 .dw XT_NOTEQUAL
-00fcc3 f03f .dw XT_DOCONDBRANCH
-00fcc4 fcc9 .dw PFA_ICOMPARE_NEXTLOOP
-00fcc5 f589 .dw XT_2DROP
-00fcc6 f15d .dw XT_TRUE
-00fcc7 f2e6 .dw XT_UNLOOP
-00fcc8 f026 .dw XT_EXIT
- PFA_ICOMPARE_NEXTLOOP:
-00fcc9 f241 .dw XT_1PLUS
-00fcca f0d6 .dw XT_SWAP
-00fccb f579 .dw XT_CELLPLUS
-00fccc f0d6 .dw XT_SWAP
-00fccd f046 .dw XT_DOLITERAL
-00fcce 0002 .dw 2
-00fccf f2cc .dw XT_DOPLUSLOOP
-00fcd0 fcb4 .dw PFA_ICOMPARE_LOOP
- PFA_ICOMPARE_DONE:
-00fcd1 f589 .dw XT_2DROP
-00fcd2 f166 .dw XT_ZERO
-00fcd3 f026 .dw XT_EXIT
-
- .if WANT_IGNORECASE == 1
- .endif
-
- .include "words/star.asm"
-
- ; Arithmetics
- ; multiply routine
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_STAR:
-00fcd4 ff01 .dw $ff01
-00fcd5 002a .db "*",0
-00fcd6 fc9d .dw VE_HEAD
- .set VE_HEAD = VE_STAR
- XT_STAR:
-00fcd7 f001 .dw DO_COLON
- PFA_STAR:
- .endif
-
-00fcd8 f1b8 .dw XT_MSTAR
-00fcd9 f0eb .dw XT_DROP
-00fcda f026 .dw XT_EXIT
- .include "words/j.asm"
-
- ; Compiler
- ; loop counter of outer loop
- VE_J:
-00fcdb ff01 .dw $FF01
-00fcdc 006a .db "j",0
-00fcdd fcd4 .dw VE_HEAD
- .set VE_HEAD = VE_J
- XT_J:
-00fcde f001 .dw DO_COLON
- PFA_J:
-00fcdf f288 .dw XT_RP_FETCH
-00fce0 f046 .dw XT_DOLITERAL
-00fce1 0007 .dw 7
-00fce2 f1af .dw XT_PLUS
-00fce3 f08b .dw XT_FETCH
-00fce4 f288 .dw XT_RP_FETCH
-00fce5 f046 .dw XT_DOLITERAL
-00fce6 0009 .dw 9
-00fce7 f1af .dw XT_PLUS
-00fce8 f08b .dw XT_FETCH
-00fce9 f1af .dw XT_PLUS
-00fcea f026 .dw XT_EXIT
-
- .include "words/dabs.asm"
-
- ; Arithmetics
- ; double cell absolute value
- VE_DABS:
-00fceb ff04 .dw $ff04
-00fcec 6164
-00fced 7362 .db "dabs"
-00fcee fcdb .dw VE_HEAD
- .set VE_HEAD = VE_DABS
- XT_DABS:
-00fcef f001 .dw DO_COLON
- PFA_DABS:
-00fcf0 f0c3 .dw XT_DUP
-00fcf1 f133 .dw XT_ZEROLESS
-00fcf2 f03f .dw XT_DOCONDBRANCH
-00fcf3 fcf5 .dw PFA_DABS1
-00fcf4 fcfc .dw XT_DNEGATE
- PFA_DABS1:
-00fcf5 f026 .dw XT_EXIT
- ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ;
- .include "words/dnegate.asm"
-
- ; Arithmetics
- ; double cell negation
- VE_DNEGATE:
-00fcf6 ff07 .dw $ff07
-00fcf7 6e64
-00fcf8 6765
-00fcf9 7461
-00fcfa 0065 .db "dnegate",0
-00fcfb fceb .dw VE_HEAD
- .set VE_HEAD = VE_DNEGATE
- XT_DNEGATE:
-00fcfc f001 .dw DO_COLON
- PFA_DNEGATE:
-00fcfd f456 .dw XT_DINVERT
-00fcfe fda1 .dw XT_ONE
-00fcff f166 .dw XT_ZERO
-00fd00 f430 .dw XT_DPLUS
-00fd01 f026 .dw XT_EXIT
- ; : dnegate ( ud1 -- ud2 ) dinvert 1. d+ ;
- .include "words/cmove.asm"
-
- ; Memory
- ; copy data in RAM, from lower to higher addresses
- VE_CMOVE:
-00fd02 ff05 .dw $ff05
-00fd03 6d63
-00fd04 766f
-00fd05 0065 .db "cmove",0
-00fd06 fcf6 .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE
- XT_CMOVE:
-00fd07 fd08 .dw PFA_CMOVE
- PFA_CMOVE:
-00fd08 93bf push xh
-00fd09 93af push xl
-00fd0a 91e9 ld zl, Y+
-00fd0b 91f9 ld zh, Y+ ; addr-to
-00fd0c 91a9 ld xl, Y+
-00fd0d 91b9 ld xh, Y+ ; addr-from
-00fd0e 2f09 mov temp0, tosh
-00fd0f 2b08 or temp0, tosl
-00fd10 f021 brbs 1, PFA_CMOVE1
- PFA_CMOVE2:
-00fd11 911d ld temp1, X+
-00fd12 9311 st Z+, temp1
-00fd13 9701 sbiw tosl, 1
-00fd14 f7e1 brbc 1, PFA_CMOVE2
- PFA_CMOVE1:
-00fd15 91af pop xl
-00fd16 91bf pop xh
-00fd17 9189
-00fd18 9199 loadtos
-00fd19 940c f005 jmp_ DO_NEXT
- .include "words/2swap.asm"
-
- ; Stack
- ; Exchange the two top cell pairs
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2SWAP:
-00fd1b ff05 .dw $ff05
-00fd1c 7332
-00fd1d 6177
-00fd1e 0070 .db "2swap",0
-00fd1f fd02 .dw VE_HEAD
- .set VE_HEAD = VE_2SWAP
- XT_2SWAP:
-00fd20 f001 .dw DO_COLON
- PFA_2SWAP:
-
- .endif
-00fd21 f0f3 .dw XT_ROT
-00fd22 f111 .dw XT_TO_R
-00fd23 f0f3 .dw XT_ROT
-00fd24 f108 .dw XT_R_FROM
-00fd25 f026 .dw XT_EXIT
-
- .include "words/tib.asm"
-
- ; System
- ; refills the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILLTIB:
-00fd26 ff0a .dw $ff0a
-00fd27 6572
-00fd28 6966
-00fd29 6c6c
-00fd2a 742d
-00fd2b 6269 .db "refill-tib"
-00fd2c fd1b .dw VE_HEAD
- .set VE_HEAD = VE_REFILLTIB
- XT_REFILLTIB:
-00fd2d f001 .dw DO_COLON
- PFA_REFILLTIB:
- .endif
-00fd2e fd49 .dw XT_TIB
-00fd2f f046 .dw XT_DOLITERAL
-00fd30 005a .dw TIB_SIZE
-00fd31 f8ac .dw XT_ACCEPT
-00fd32 fd4f .dw XT_NUMBERTIB
-00fd33 f093 .dw XT_STORE
-00fd34 f166 .dw XT_ZERO
-00fd35 f599 .dw XT_TO_IN
-00fd36 f093 .dw XT_STORE
-00fd37 f15d .dw XT_TRUE ; -1
-00fd38 f026 .dw XT_EXIT
-
- ; ( -- addr n )
- ; System
- ; address and current length of the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCETIB:
-00fd39 ff0a .dw $FF0A
-00fd3a 6f73
-00fd3b 7275
-00fd3c 6563
-00fd3d 742d
-00fd3e 6269 .db "source-tib"
-00fd3f fd26 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCETIB
- XT_SOURCETIB:
-00fd40 f001 .dw DO_COLON
- PFA_SOURCETIB:
- .endif
-00fd41 fd49 .dw XT_TIB
-00fd42 fd4f .dw XT_NUMBERTIB
-00fd43 f08b .dw XT_FETCH
-00fd44 f026 .dw XT_EXIT
-
- ; ( -- addr )
- ; System Variable
- ; terminal input buffer address
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TIB:
-00fd45 ff03 .dw $ff03
-00fd46 6974
-00fd47 0062 .db "tib",0
-00fd48 fd39 .dw VE_HEAD
- .set VE_HEAD = VE_TIB
- XT_TIB:
-00fd49 f054 .dw PFA_DOVARIABLE
- PFA_TIB:
-00fd4a 016f .dw ram_tib
- .dseg
-00016f ram_tib: .byte TIB_SIZE
- .cseg
- .endif
-
- ; ( -- addr )
- ; System Variable
- ; variable holding the number of characters in TIB
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBERTIB:
-00fd4b ff04 .dw $ff04
-00fd4c 7423
-00fd4d 6269 .db "#tib"
-00fd4e fd45 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBERTIB
- XT_NUMBERTIB:
-00fd4f f054 .dw PFA_DOVARIABLE
- PFA_NUMBERTIB:
-00fd50 01c9 .dw ram_sharptib
- .dseg
-0001c9 ram_sharptib: .byte 2
- .cseg
- .endif
-
- .include "words/init-ram.asm"
-
- ; Tools
- ; copy len cells from eeprom to ram
- VE_EE2RAM:
-00fd51 ff06 .dw $ff06
-00fd52 6565
-00fd53 723e
-00fd54 6d61 .db "ee>ram"
-00fd55 fd4b .dw VE_HEAD
- .set VE_HEAD = VE_EE2RAM
- XT_EE2RAM:
-00fd56 f001 .dw DO_COLON
- PFA_EE2RAM: ; ( -- )
-00fd57 f166 .dw XT_ZERO
-00fd58 f2ad .dw XT_DODO
- PFA_EE2RAM_1:
- ; ( -- e-addr r-addr )
-00fd59 f0e1 .dw XT_OVER
-00fd5a f371 .dw XT_FETCHE
-00fd5b f0e1 .dw XT_OVER
-00fd5c f093 .dw XT_STORE
-00fd5d f579 .dw XT_CELLPLUS
-00fd5e f0d6 .dw XT_SWAP
-00fd5f f579 .dw XT_CELLPLUS
-00fd60 f0d6 .dw XT_SWAP
-00fd61 f2db .dw XT_DOLOOP
-00fd62 fd59 .dw PFA_EE2RAM_1
- PFA_EE2RAM_2:
-00fd63 f589 .dw XT_2DROP
-00fd64 f026 .dw XT_EXIT
-
- ; ( -- )
- ; Tools
- ; setup the default user area from eeprom
- VE_INIT_RAM:
-00fd65 ff08 .dw $ff08
-00fd66 6e69
-00fd67 7469
-00fd68 722d
-00fd69 6d61 .db "init-ram"
-00fd6a fd51 .dw VE_HEAD
- .set VE_HEAD = VE_INIT_RAM
- XT_INIT_RAM:
-00fd6b f001 .dw DO_COLON
- PFA_INI_RAM: ; ( -- )
-00fd6c f046 .dw XT_DOLITERAL
-00fd6d 007c .dw EE_INITUSER
-00fd6e f314 .dw XT_UP_FETCH
-00fd6f f046 .dw XT_DOLITERAL
-00fd70 0022 .dw SYSUSERSIZE
-00fd71 f216 .dw XT_2SLASH
-00fd72 fd56 .dw XT_EE2RAM
-00fd73 f026 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .endif
- .include "words/bounds.asm"
-
- ; Tools
- ; convert a string to an address range
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BOUNDS:
-00fd74 ff06 .dw $ff06
-00fd75 6f62
-00fd76 6e75
-00fd77 7364 .db "bounds"
-00fd78 fd65 .dw VE_HEAD
- .set VE_HEAD = VE_BOUNDS
- XT_BOUNDS:
-00fd79 f001 .dw DO_COLON
- PFA_BOUNDS:
- .endif
-00fd7a f0e1 .dw XT_OVER
-00fd7b f1af .dw XT_PLUS
-00fd7c f0d6 .dw XT_SWAP
-00fd7d f026 .dw XT_EXIT
- .include "words/s-to-d.asm"
-
- ; Conversion
- ; extend (signed) single cell value to double cell
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_S2D:
-00fd7e ff03 .dw $ff03
-00fd7f 3e73
-00fd80 0064 .db "s>d",0
-00fd81 fd74 .dw VE_HEAD
- .set VE_HEAD = VE_S2D
- XT_S2D:
-00fd82 f001 .dw DO_COLON
- PFA_S2D:
- .endif
-00fd83 f0c3 .dw XT_DUP
-00fd84 f133 .dw XT_ZEROLESS
-00fd85 f026 .dw XT_EXIT
- .include "words/to-body.asm"
-
- ; Core
- ; get body from XT
- VE_TO_BODY:
-00fd86 ff05 .dw $ff05
-00fd87 623e
-00fd88 646f
-00fd89 0079 .db ">body",0
-00fd8a fd7e .dw VE_HEAD
- .set VE_HEAD = VE_TO_BODY
- XT_TO_BODY:
-00fd8b f242 .dw PFA_1PLUS
- .elif AMFORTH_NRWW_SIZE>4000
- .elif AMFORTH_NRWW_SIZE>2000
- .else
- .endif
- ; now colon words
- ;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/2literal.asm"
-
- ; Compiler
- ; compile a cell pair literal in colon definitions
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2LITERAL:
-00fd8c 0008 .dw $0008
-00fd8d 6c32
-00fd8e 7469
-00fd8f 7265
-00fd90 6c61 .db "2literal"
-00fd91 fd86 .dw VE_HEAD
- .set VE_HEAD = VE_2LITERAL
- XT_2LITERAL:
-00fd92 f001 .dw DO_COLON
- PFA_2LITERAL:
- .endif
-00fd93 f0d6 .dw XT_SWAP
-00fd94 01f1 .dw XT_LITERAL
-00fd95 01f1 .dw XT_LITERAL
-00fd96 f026 .dw XT_EXIT
- .include "words/equal.asm"
-
- ; Compare
- ; compares two values for equality
- VE_EQUAL:
-00fd97 ff01 .dw $ff01
-00fd98 003d .db "=",0
-00fd99 fd8c .dw VE_HEAD
- .set VE_HEAD = VE_EQUAL
- XT_EQUAL:
-00fd9a f001 .dw DO_COLON
- PFA_EQUAL:
-00fd9b f1a5 .dw XT_MINUS
-00fd9c f12c .dw XT_ZEROEQUAL
-00fd9d f026 .dw XT_EXIT
- .include "words/num-constants.asm"
-
- .endif
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ONE:
-00fd9e ff01 .dw $ff01
-00fd9f 0031 .db "1",0
-00fda0 fd97 .dw VE_HEAD
- .set VE_HEAD = VE_ONE
- XT_ONE:
-00fda1 f054 .dw PFA_DOVARIABLE
- PFA_ONE:
- .endif
-00fda2 0001 .DW 1
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TWO:
-00fda3 ff01 .dw $ff01
-00fda4 0032 .db "2",0
-00fda5 fd9e .dw VE_HEAD
- .set VE_HEAD = VE_TWO
- XT_TWO:
-00fda6 f054 .dw PFA_DOVARIABLE
- PFA_TWO:
- .endif
-00fda7 0002 .DW 2
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MINUSONE:
-00fda8 ff02 .dw $ff02
-00fda9 312d .db "-1"
-00fdaa fda3 .dw VE_HEAD
- .set VE_HEAD = VE_MINUSONE
- XT_MINUSONE:
-00fdab f054 .dw PFA_DOVARIABLE
- PFA_MINUSONE:
- .endif
-00fdac ffff .DW -1
- .include "dict_appl_core.inc"
-
- ; do not delete it!
-
- .set flashlast = pc
- .if (pc>FLASHEND)
- .endif
-
- .dseg
- ; define a label for the 1st free ram address
- HERESTART:
- .eseg
- .include "amforth-eeprom.inc"
-000046 ff ff
- ; some configs
-000048 9a 05 CFG_DP: .dw DPSTART ; Dictionary Pointer
-00004a cb 01 EE_HERE: .dw HERESTART ; Memory Allocation
-00004c a0 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation
-00004e 42 04 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope
-000050 6e 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set
- ; LEAVE stack is between data stack and return stack.
-000052 b0 40 CFG_LP0: .dw stackstart+1
-000054 ec 04 CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY
-000056 4d f5 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries
-000058 5a 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist
-00005a a8 fd CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist
- CFG_ORDERLISTLEN:
-00005c 01 00 .dw 1
- CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries
-00005e 5a 00 .dw CFG_FORTHWORDLIST ; get/set-order
-000060 .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used
- CFG_RECOGNIZERLISTLEN:
-00006e 02 00 .dw 2
- CFG_RECOGNIZERLIST:
-000070 3f fb .dw XT_REC_FIND
-000072 2b fb .dw XT_REC_NUM
-000074 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used
-
- EE_STOREI:
-000078 90 f3 .dw XT_DO_STOREI ; Store a cell into flash
-
- ; MARKER saves everything up to here. Nothing beyond gets saved
- EE_MARKER:
-00007a 7a 00 .dw EE_MARKER
-
- ; default user area
- EE_INITUSER:
-00007c 00 00 .dw 0 ; USER_STATE
-00007e 00 00 .dw 0 ; USER_FOLLOWER
-000080 ff 40 .dw rstackstart ; USER_RP
-000082 af 40 .dw stackstart ; USER_SP0
-000084 af 40 .dw stackstart ; USER_SP
-
-000086 00 00 .dw 0 ; USER_HANDLER
-000088 0a 00 .dw 10 ; USER_BASE
-
-00008a b6 00 .dw XT_TX ; USER_EMIT
-00008c c4 00 .dw XT_TXQ ; USER_EMITQ
-00008e 8b 00 .dw XT_RX ; USER_KEY
-000090 a6 00 .dw XT_RXQ ; USER_KEYQ
-000092 40 fd .dw XT_SOURCETIB ; USER_SOURCE
-000094 00 00 .dw 0 ; USER_G_IN
-000096 2d fd .dw XT_REFILLTIB ; USER_REFILL
-000098 05 fa .dw XT_DEFAULT_PROMPTOK
-00009a 24 fa .dw XT_DEFAULT_PROMPTERROR
-00009c 14 fa .dw XT_DEFAULT_PROMPTREADY
-
- ; calculate baud rate error
- .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; smart round
- .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; effective baud rate
- .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; error in pro mille
-
- .if ((BAUD_ERROR>BAUD_MAXERROR) || (BAUD_ERROR<-BAUD_MAXERROR))
- .endif
- EE_UBRRVAL:
-00009e 19 00 .dw UBRR_VAL ; BAUDRATE
- ; 1st free address in EEPROM.
- EHERESTART:
- .cseg
-
-
-RESOURCE USE INFORMATION
-------------------------
-
-Notice:
-The register and instruction counts are symbol table hit counts,
-and hence implicitly used resources are not counted, eg, the
-'lpm' instruction without operands implicitly uses r0 and z,
-none of which are counted.
-
-x,y,z are separate entities in the symbol table and are
-counted separately from r26..r31 here.
-
-.dseg memory usage only counts static data declared with .byte
-
-"ATmega1284P" register use summary:
-r0 : 25 r1 : 5 r2 : 10 r3 : 12 r4 : 4 r5 : 1 r6 : 0 r7 : 0
-r8 : 0 r9 : 0 r10: 1 r11: 6 r12: 0 r13: 0 r14: 22 r15: 20
-r16: 89 r17: 61 r18: 61 r19: 37 r20: 13 r21: 38 r22: 11 r23: 3
-r24: 212 r25: 145 r26: 28 r27: 17 r28: 7 r29: 4 r30: 90 r31: 49
-x : 4 y : 217 z : 50
-Registers used: 29 out of 35 (82.9%)
-
-"ATmega1284P" instruction use summary:
-.lds : 0 .sts : 0 adc : 22 add : 17 adiw : 17 and : 4
-andi : 3 asr : 2 bclr : 0 bld : 0 brbc : 2 brbs : 7
-brcc : 3 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0
-brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3
-brne : 22 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
-brvs : 2 bset : 0 bst : 0 call : 2 cbi : 7 cbr : 1
-clc : 2 clh : 0 cli : 7 cln : 0 clr : 23 cls : 0
-clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10
-cpi : 2 cpse : 0 dec : 10 elpm : 16 eor : 3 fmul : 0
-fmuls : 0 fmulsu: 0 icall : 0 ijmp : 1 in : 25 inc : 3
-jmp : 14 ld : 145 ldd : 4 ldi : 41 lds : 1 lpm : 0
-lsl : 14 lsr : 2 mov : 16 movw : 72 mul : 5 muls : 1
-mulsu : 2 neg : 0 nop : 0 or : 9 ori : 2 out : 31
-pop : 49 push : 43 rcall : 48 ret : 7 reti : 1 rjmp : 105
-rol : 32 ror : 6 sbc : 9 sbci : 3 sbi : 8 sbic : 3
-sbis : 0 sbiw : 16 sbr : 0 sbrc : 5 sbrs : 7 sec : 1
-seh : 0 sei : 1 sen : 0 ser : 4 ses : 0 set : 0
-sev : 0 sez : 0 sleep : 0 spm : 2 st : 81 std : 8
-sts : 1 sub : 6 subi : 3 swap : 0 tst : 0 wdr : 0
-
-Instructions used: 72 out of 114 (63.2%)
-
-"ATmega1284P" memory use summary [bytes]:
-Segment Begin End Code Data Used Size Use%
----------------------------------------------------------------
-[.cseg] 0x000000 0x01fb5a 2156 14646 16802 131072 12.8%
-[.dseg] 0x000100 0x0001cb 0 203 203 16384 1.2%
-[.eseg] 0x000000 0x0000a0 0 160 160 4096 3.9%
-
-Assembly complete, 0 errors, 8 warnings
diff --git a/amforth-6.5/appl/eval-pollin/p1284-16.map b/amforth-6.5/appl/eval-pollin/p1284-16.map
deleted file mode 100644
index 81938c3..0000000
--- a/amforth-6.5/appl/eval-pollin/p1284-16.map
+++ /dev/null
@@ -1,2253 +0,0 @@
-
-AVRASM ver. 2.1.52 p1284-16.asm Sun Apr 30 20:10:15 2017
-
-
-SET DICT_COMPILER2 00000001
-SET cpu_msp430 00000000
-SET cpu_avr8 00000001
-SET USER_STATE 00000000
-SET USER_FOLLOWER 00000002
-SET USER_RP 00000004
-SET USER_SP0 00000006
-SET USER_SP 00000008
-SET USER_HANDLER 0000000a
-SET USER_BASE 0000000c
-SET USER_EMIT 0000000e
-SET USER_EMITQ 00000010
-SET USER_KEY 00000012
-SET USER_KEYQ 00000014
-SET USER_SOURCE 00000016
-SET USER_TO_IN 00000018
-SET USER_REFILL 0000001a
-SET USER_P_OK 0000001c
-SET USER_P_ERR 0000001e
-SET USER_P_RDY 00000020
-SET SYSUSERSIZE 00000022
-DEF zerol r2
-DEF zeroh r3
-DEF upl r4
-DEF uph r5
-DEF al r6
-DEF ah r7
-DEF bl r8
-DEF bh r9
-DEF mcu_boot r10
-DEF isrflag r11
-DEF temp4 r14
-DEF temp5 r15
-DEF temp0 r16
-DEF temp1 r17
-DEF temp2 r18
-DEF temp3 r19
-DEF temp6 r20
-DEF temp7 r21
-DEF tosl r24
-DEF tosh r25
-DEF wl r22
-DEF wh r23
-EQU SIGNATURE_000 0000001e
-EQU SIGNATURE_001 00000097
-EQU SIGNATURE_002 00000005
-EQU UDR1 000000ce
-EQU UBRR1L 000000cc
-EQU UBRR1H 000000cd
-EQU UCSR1C 000000ca
-EQU UCSR1B 000000c9
-EQU UCSR1A 000000c8
-EQU UDR0 000000c6
-EQU UBRR0L 000000c4
-EQU UBRR0H 000000c5
-EQU UCSR0C 000000c2
-EQU UCSR0B 000000c1
-EQU UCSR0A 000000c0
-EQU TWAMR 000000bd
-EQU TWCR 000000bc
-EQU TWDR 000000bb
-EQU TWAR 000000ba
-EQU TWSR 000000b9
-EQU TWBR 000000b8
-EQU ASSR 000000b6
-EQU OCR2B 000000b4
-EQU OCR2A 000000b3
-EQU TCNT2 000000b2
-EQU TCCR2B 000000b1
-EQU TCCR2A 000000b0
-EQU OCR3BL 0000009a
-EQU OCR3BH 0000009b
-EQU OCR3AL 00000098
-EQU OCR3AH 00000099
-EQU ICR3L 00000096
-EQU ICR3H 00000097
-EQU TCNT3L 00000094
-EQU TCNT3H 00000095
-EQU TCCR3C 00000092
-EQU TCCR3B 00000091
-EQU TCCR3A 00000090
-EQU OCR1BL 0000008a
-EQU OCR1BH 0000008b
-EQU OCR1AL 00000088
-EQU OCR1AH 00000089
-EQU ICR1L 00000086
-EQU ICR1H 00000087
-EQU TCNT1L 00000084
-EQU TCNT1H 00000085
-EQU TCCR1C 00000082
-EQU TCCR1B 00000081
-EQU TCCR1A 00000080
-EQU DIDR1 0000007f
-EQU DIDR0 0000007e
-EQU ADMUX 0000007c
-EQU ADCSRB 0000007b
-EQU ADCSRA 0000007a
-EQU ADCH 00000079
-EQU ADCL 00000078
-EQU PCMSK3 00000073
-EQU TIMSK3 00000071
-EQU TIMSK2 00000070
-EQU TIMSK1 0000006f
-EQU TIMSK0 0000006e
-EQU PCMSK2 0000006d
-EQU PCMSK1 0000006c
-EQU PCMSK0 0000006b
-EQU EICRA 00000069
-EQU PCICR 00000068
-EQU OSCCAL 00000066
-EQU PRR1 00000065
-EQU PRR0 00000064
-EQU CLKPR 00000061
-EQU WDTCSR 00000060
-EQU SREG 0000003f
-EQU SPL 0000003d
-EQU SPH 0000003e
-EQU RAMPZ 0000003b
-EQU SPMCSR 00000037
-EQU MCUCR 00000035
-EQU MCUSR 00000034
-EQU SMCR 00000033
-EQU OCDR 00000031
-EQU ACSR 00000030
-EQU SPDR 0000002e
-EQU SPSR 0000002d
-EQU SPCR 0000002c
-EQU GPIOR2 0000002b
-EQU GPIOR1 0000002a
-EQU OCR0B 00000028
-EQU OCR0A 00000027
-EQU TCNT0 00000026
-EQU TCCR0B 00000025
-EQU TCCR0A 00000024
-EQU GTCCR 00000023
-EQU EEARH 00000022
-EQU EEARL 00000021
-EQU EEDR 00000020
-EQU EECR 0000001f
-EQU GPIOR0 0000001e
-EQU EIMSK 0000001d
-EQU EIFR 0000001c
-EQU PCIFR 0000001b
-EQU TIFR3 00000018
-EQU TIFR2 00000017
-EQU TIFR1 00000016
-EQU TIFR0 00000015
-EQU PORTD 0000000b
-EQU DDRD 0000000a
-EQU PIND 00000009
-EQU PORTC 00000008
-EQU DDRC 00000007
-EQU PINC 00000006
-EQU PORTB 00000005
-EQU DDRB 00000004
-EQU PINB 00000003
-EQU PORTA 00000002
-EQU DDRA 00000001
-EQU PINA 00000000
-EQU ACME 00000006
-EQU ACIS0 00000000
-EQU ACIS1 00000001
-EQU ACIC 00000002
-EQU ACIE 00000003
-EQU ACI 00000004
-EQU ACO 00000005
-EQU ACBG 00000006
-EQU ACD 00000007
-EQU AIN0D 00000000
-EQU AIN1D 00000001
-EQU UDR0_0 00000000
-EQU UDR0_1 00000001
-EQU UDR0_2 00000002
-EQU UDR0_3 00000003
-EQU UDR0_4 00000004
-EQU UDR0_5 00000005
-EQU UDR0_6 00000006
-EQU UDR0_7 00000007
-EQU MPCM0 00000000
-EQU U2X0 00000001
-EQU UPE0 00000002
-EQU DOR0 00000003
-EQU FE0 00000004
-EQU UDRE0 00000005
-EQU TXC0 00000006
-EQU RXC0 00000007
-EQU TXB80 00000000
-EQU RXB80 00000001
-EQU UCSZ02 00000002
-EQU TXEN0 00000003
-EQU RXEN0 00000004
-EQU UDRIE0 00000005
-EQU TXCIE0 00000006
-EQU RXCIE0 00000007
-EQU UCPOL0 00000000
-EQU UCSZ00 00000001
-EQU UCPHA0 00000001
-EQU UCSZ01 00000002
-EQU UDORD0 00000002
-EQU USBS0 00000003
-EQU UPM00 00000004
-EQU UPM01 00000005
-EQU UMSEL00 00000006
-EQU UMSEL0 00000006
-EQU UMSEL01 00000007
-EQU UMSEL1 00000007
-EQU UBRR8 00000000
-EQU UBRR9 00000001
-EQU UBRR10 00000002
-EQU UBRR11 00000003
-EQU _UBRR0 00000000
-EQU _UBRR1 00000001
-EQU UBRR2 00000002
-EQU UBRR3 00000003
-EQU UBRR4 00000004
-EQU UBRR5 00000005
-EQU UBRR6 00000006
-EQU UBRR7 00000007
-EQU PORTA0 00000000
-EQU PA0 00000000
-EQU PORTA1 00000001
-EQU PA1 00000001
-EQU PORTA2 00000002
-EQU PA2 00000002
-EQU PORTA3 00000003
-EQU PA3 00000003
-EQU PORTA4 00000004
-EQU PA4 00000004
-EQU PORTA5 00000005
-EQU PA5 00000005
-EQU PORTA6 00000006
-EQU PA6 00000006
-EQU PORTA7 00000007
-EQU PA7 00000007
-EQU DDA0 00000000
-EQU DDA1 00000001
-EQU DDA2 00000002
-EQU DDA3 00000003
-EQU DDA4 00000004
-EQU DDA5 00000005
-EQU DDA6 00000006
-EQU DDA7 00000007
-EQU PINA0 00000000
-EQU PINA1 00000001
-EQU PINA2 00000002
-EQU PINA3 00000003
-EQU PINA4 00000004
-EQU PINA5 00000005
-EQU PINA6 00000006
-EQU PINA7 00000007
-EQU PORTB0 00000000
-EQU PB0 00000000
-EQU PORTB1 00000001
-EQU PB1 00000001
-EQU PORTB2 00000002
-EQU PB2 00000002
-EQU PORTB3 00000003
-EQU PB3 00000003
-EQU PORTB4 00000004
-EQU PB4 00000004
-EQU PORTB5 00000005
-EQU PB5 00000005
-EQU PORTB6 00000006
-EQU PB6 00000006
-EQU PORTB7 00000007
-EQU PB7 00000007
-EQU DDB0 00000000
-EQU DDB1 00000001
-EQU DDB2 00000002
-EQU DDB3 00000003
-EQU DDB4 00000004
-EQU DDB5 00000005
-EQU DDB6 00000006
-EQU DDB7 00000007
-EQU PINB0 00000000
-EQU PINB1 00000001
-EQU PINB2 00000002
-EQU PINB3 00000003
-EQU PINB4 00000004
-EQU PINB5 00000005
-EQU PINB6 00000006
-EQU PINB7 00000007
-EQU PORTC0 00000000
-EQU PC0 00000000
-EQU PORTC1 00000001
-EQU PC1 00000001
-EQU PORTC2 00000002
-EQU PC2 00000002
-EQU PORTC3 00000003
-EQU PC3 00000003
-EQU PORTC4 00000004
-EQU PC4 00000004
-EQU PORTC5 00000005
-EQU PC5 00000005
-EQU PORTC6 00000006
-EQU PC6 00000006
-EQU PORTC7 00000007
-EQU PC7 00000007
-EQU DDC0 00000000
-EQU DDC1 00000001
-EQU DDC2 00000002
-EQU DDC3 00000003
-EQU DDC4 00000004
-EQU DDC5 00000005
-EQU DDC6 00000006
-EQU DDC7 00000007
-EQU PINC0 00000000
-EQU PINC1 00000001
-EQU PINC2 00000002
-EQU PINC3 00000003
-EQU PINC4 00000004
-EQU PINC5 00000005
-EQU PINC6 00000006
-EQU PINC7 00000007
-EQU PORTD0 00000000
-EQU PD0 00000000
-EQU PORTD1 00000001
-EQU PD1 00000001
-EQU PORTD2 00000002
-EQU PD2 00000002
-EQU PORTD3 00000003
-EQU PD3 00000003
-EQU PORTD4 00000004
-EQU PD4 00000004
-EQU PORTD5 00000005
-EQU PD5 00000005
-EQU PORTD6 00000006
-EQU PD6 00000006
-EQU PORTD7 00000007
-EQU PD7 00000007
-EQU DDD0 00000000
-EQU DDD1 00000001
-EQU DDD2 00000002
-EQU DDD3 00000003
-EQU DDD4 00000004
-EQU DDD5 00000005
-EQU DDD6 00000006
-EQU DDD7 00000007
-EQU PIND0 00000000
-EQU PIND1 00000001
-EQU PIND2 00000002
-EQU PIND3 00000003
-EQU PIND4 00000004
-EQU PIND5 00000005
-EQU PIND6 00000006
-EQU PIND7 00000007
-EQU TOIE0 00000000
-EQU OCIE0A 00000001
-EQU OCIE0B 00000002
-EQU TOV0 00000000
-EQU OCF0A 00000001
-EQU OCF0B 00000002
-EQU WGM00 00000000
-EQU WGM01 00000001
-EQU COM0B0 00000004
-EQU COM0B1 00000005
-EQU COM0A0 00000006
-EQU COM0A1 00000007
-EQU CS00 00000000
-EQU CS01 00000001
-EQU CS02 00000002
-EQU WGM02 00000003
-EQU FOC0B 00000006
-EQU FOC0A 00000007
-EQU TCNT0_0 00000000
-EQU TCNT0_1 00000001
-EQU TCNT0_2 00000002
-EQU TCNT0_3 00000003
-EQU TCNT0_4 00000004
-EQU TCNT0_5 00000005
-EQU TCNT0_6 00000006
-EQU TCNT0_7 00000007
-EQU OCR0A_0 00000000
-EQU OCR0A_1 00000001
-EQU OCR0A_2 00000002
-EQU OCR0A_3 00000003
-EQU OCR0A_4 00000004
-EQU OCR0A_5 00000005
-EQU OCR0A_6 00000006
-EQU OCR0A_7 00000007
-EQU OCR0B_0 00000000
-EQU OCR0B_1 00000001
-EQU OCR0B_2 00000002
-EQU OCR0B_3 00000003
-EQU OCR0B_4 00000004
-EQU OCR0B_5 00000005
-EQU OCR0B_6 00000006
-EQU OCR0B_7 00000007
-EQU PSRSYNC 00000000
-EQU PSR10 00000000
-EQU TSM 00000007
-EQU TOIE1 00000000
-EQU OCIE1A 00000001
-EQU OCIE1B 00000002
-EQU ICIE1 00000005
-EQU TOV1 00000000
-EQU OCF1A 00000001
-EQU OCF1B 00000002
-EQU ICF1 00000005
-EQU WGM10 00000000
-EQU PWM10 00000000
-EQU WGM11 00000001
-EQU PWM11 00000001
-EQU COM1B0 00000004
-EQU COM1B1 00000005
-EQU COM1A0 00000006
-EQU COM1A1 00000007
-EQU CS10 00000000
-EQU CS11 00000001
-EQU CS12 00000002
-EQU WGM12 00000003
-EQU CTC1 00000003
-EQU WGM13 00000004
-EQU ICES1 00000006
-EQU ICNC1 00000007
-EQU FOC1B 00000006
-EQU FOC1A 00000007
-EQU TOIE2 00000000
-EQU TOIE2A 00000000
-EQU OCIE2A 00000001
-EQU OCIE2B 00000002
-EQU TOV2 00000000
-EQU OCF2A 00000001
-EQU OCF2B 00000002
-EQU WGM20 00000000
-EQU WGM21 00000001
-EQU COM2B0 00000004
-EQU COM2B1 00000005
-EQU COM2A0 00000006
-EQU COM2A1 00000007
-EQU CS20 00000000
-EQU CS21 00000001
-EQU CS22 00000002
-EQU WGM22 00000003
-EQU FOC2B 00000006
-EQU FOC2A 00000007
-EQU TCNT2_0 00000000
-EQU TCNT2_1 00000001
-EQU TCNT2_2 00000002
-EQU TCNT2_3 00000003
-EQU TCNT2_4 00000004
-EQU TCNT2_5 00000005
-EQU TCNT2_6 00000006
-EQU TCNT2_7 00000007
-EQU OCR2A_0 00000000
-EQU OCR2A_1 00000001
-EQU OCR2A_2 00000002
-EQU OCR2A_3 00000003
-EQU OCR2A_4 00000004
-EQU OCR2A_5 00000005
-EQU OCR2A_6 00000006
-EQU OCR2A_7 00000007
-EQU OCR2B_0 00000000
-EQU OCR2B_1 00000001
-EQU OCR2B_2 00000002
-EQU OCR2B_3 00000003
-EQU OCR2B_4 00000004
-EQU OCR2B_5 00000005
-EQU OCR2B_6 00000006
-EQU OCR2B_7 00000007
-EQU TCR2BUB 00000000
-EQU TCR2AUB 00000001
-EQU OCR2BUB 00000002
-EQU OCR2AUB 00000003
-EQU TCN2UB 00000004
-EQU AS2 00000005
-EQU EXCLK 00000006
-EQU PSRASY 00000001
-EQU PSR2 00000001
-EQU TOIE3 00000000
-EQU OCIE3A 00000001
-EQU OCIE3B 00000002
-EQU ICIE3 00000005
-EQU TOV3 00000000
-EQU OCF3A 00000001
-EQU OCF3B 00000002
-EQU ICF3 00000005
-EQU WGM30 00000000
-EQU WGM31 00000001
-EQU COM3B0 00000004
-EQU COM3B1 00000005
-EQU COM3A0 00000006
-EQU COM3A1 00000007
-EQU CS30 00000000
-EQU CS31 00000001
-EQU CS32 00000002
-EQU WGM32 00000003
-EQU WGM33 00000004
-EQU ICES3 00000006
-EQU ICNC3 00000007
-EQU FOC3B 00000006
-EQU FOC3A 00000007
-EQU OCR3AH0 00000000
-EQU OCR3AH1 00000001
-EQU OCR3AH2 00000002
-EQU OCR3AH3 00000003
-EQU OCR3AH4 00000004
-EQU OCR3AH5 00000005
-EQU OCR3AH6 00000006
-EQU OCR3AH7 00000007
-EQU OCR3AL0 00000000
-EQU OCR3AL1 00000001
-EQU OCR3AL2 00000002
-EQU OCR3AL3 00000003
-EQU OCR3AL4 00000004
-EQU OCR3AL5 00000005
-EQU OCR3AL6 00000006
-EQU OCR3AL7 00000007
-EQU SPMEN 00000000
-EQU PGERS 00000001
-EQU PGWRT 00000002
-EQU BLBSET 00000003
-EQU RWWSRE 00000004
-EQU SIGRD 00000005
-EQU RWWSB 00000006
-EQU SPMIE 00000007
-EQU ISC00 00000000
-EQU ISC01 00000001
-EQU ISC10 00000002
-EQU ISC11 00000003
-EQU ISC20 00000004
-EQU ISC21 00000005
-EQU INT0 00000000
-EQU INT1 00000001
-EQU INT2 00000002
-EQU INTF0 00000000
-EQU INTF1 00000001
-EQU INTF2 00000002
-EQU PCIE0 00000000
-EQU PCIE1 00000001
-EQU PCIE2 00000002
-EQU PCIE3 00000003
-EQU PCIF0 00000000
-EQU PCIF1 00000001
-EQU PCIF2 00000002
-EQU PCIF3 00000003
-EQU PCINT24 00000000
-EQU PCINT25 00000001
-EQU PCINT26 00000002
-EQU PCINT27 00000003
-EQU PCINT28 00000004
-EQU PCINT29 00000005
-EQU PCINT30 00000006
-EQU PCINT31 00000007
-EQU PCINT16 00000000
-EQU PCINT17 00000001
-EQU PCINT18 00000002
-EQU PCINT19 00000003
-EQU PCINT20 00000004
-EQU PCINT21 00000005
-EQU PCINT22 00000006
-EQU PCINT23 00000007
-EQU PCINT8 00000000
-EQU PCINT9 00000001
-EQU PCINT10 00000002
-EQU PCINT11 00000003
-EQU PCINT12 00000004
-EQU PCINT13 00000005
-EQU PCINT14 00000006
-EQU PCINT15 00000007
-EQU PCINT0 00000000
-EQU PCINT1 00000001
-EQU PCINT2 00000002
-EQU PCINT3 00000003
-EQU PCINT4 00000004
-EQU PCINT5 00000005
-EQU PCINT6 00000006
-EQU PCINT7 00000007
-EQU MUX0 00000000
-EQU MUX1 00000001
-EQU MUX2 00000002
-EQU MUX3 00000003
-EQU MUX4 00000004
-EQU ADLAR 00000005
-EQU REFS0 00000006
-EQU REFS1 00000007
-EQU ADPS0 00000000
-EQU ADPS1 00000001
-EQU ADPS2 00000002
-EQU ADIE 00000003
-EQU ADIF 00000004
-EQU ADATE 00000005
-EQU ADSC 00000006
-EQU ADEN 00000007
-EQU ADTS0 00000000
-EQU ADTS1 00000001
-EQU ADTS2 00000002
-EQU ADCH0 00000000
-EQU ADCH1 00000001
-EQU ADCH2 00000002
-EQU ADCH3 00000003
-EQU ADCH4 00000004
-EQU ADCH5 00000005
-EQU ADCH6 00000006
-EQU ADCH7 00000007
-EQU ADCL0 00000000
-EQU ADCL1 00000001
-EQU ADCL2 00000002
-EQU ADCL3 00000003
-EQU ADCL4 00000004
-EQU ADCL5 00000005
-EQU ADCL6 00000006
-EQU ADCL7 00000007
-EQU ADC0D 00000000
-EQU ADC1D 00000001
-EQU ADC2D 00000002
-EQU ADC3D 00000003
-EQU ADC4D 00000004
-EQU ADC5D 00000005
-EQU ADC6D 00000006
-EQU ADC7D 00000007
-EQU OCDR0 00000000
-EQU OCDR1 00000001
-EQU OCDR2 00000002
-EQU OCDR3 00000003
-EQU OCDR4 00000004
-EQU OCDR5 00000005
-EQU OCDR6 00000006
-EQU OCDR7 00000007
-EQU IDRD 00000007
-EQU JTD 00000007
-EQU JTRF 00000004
-EQU EEAR8 00000000
-EQU EEAR9 00000001
-EQU EEAR10 00000002
-EQU EEAR11 00000003
-EQU EEAR0 00000000
-EQU EEAR1 00000001
-EQU EEAR2 00000002
-EQU EEAR3 00000003
-EQU EEAR4 00000004
-EQU EEAR5 00000005
-EQU EEAR6 00000006
-EQU EEAR7 00000007
-EQU EEDR0 00000000
-EQU EEDR1 00000001
-EQU EEDR2 00000002
-EQU EEDR3 00000003
-EQU EEDR4 00000004
-EQU EEDR5 00000005
-EQU EEDR6 00000006
-EQU EEDR7 00000007
-EQU EERE 00000000
-EQU EEPE 00000001
-EQU EEMPE 00000002
-EQU EERIE 00000003
-EQU EEPM0 00000004
-EQU EEPM1 00000005
-EQU TWAM0 00000001
-EQU TWAMR0 00000001
-EQU TWAM1 00000002
-EQU TWAMR1 00000002
-EQU TWAM2 00000003
-EQU TWAMR2 00000003
-EQU TWAM3 00000004
-EQU TWAMR3 00000004
-EQU TWAM4 00000005
-EQU TWAMR4 00000005
-EQU TWAM5 00000006
-EQU TWAMR5 00000006
-EQU TWAM6 00000007
-EQU TWAMR6 00000007
-EQU TWBR0 00000000
-EQU TWBR1 00000001
-EQU TWBR2 00000002
-EQU TWBR3 00000003
-EQU TWBR4 00000004
-EQU TWBR5 00000005
-EQU TWBR6 00000006
-EQU TWBR7 00000007
-EQU TWIE 00000000
-EQU TWEN 00000002
-EQU TWWC 00000003
-EQU TWSTO 00000004
-EQU TWSTA 00000005
-EQU TWEA 00000006
-EQU TWINT 00000007
-EQU TWPS0 00000000
-EQU TWPS1 00000001
-EQU TWS3 00000003
-EQU TWS4 00000004
-EQU TWS5 00000005
-EQU TWS6 00000006
-EQU TWS7 00000007
-EQU TWD0 00000000
-EQU TWD1 00000001
-EQU TWD2 00000002
-EQU TWD3 00000003
-EQU TWD4 00000004
-EQU TWD5 00000005
-EQU TWD6 00000006
-EQU TWD7 00000007
-EQU TWGCE 00000000
-EQU TWA0 00000001
-EQU TWA1 00000002
-EQU TWA2 00000003
-EQU TWA3 00000004
-EQU TWA4 00000005
-EQU TWA5 00000006
-EQU TWA6 00000007
-EQU UDR1_0 00000000
-EQU UDR1_1 00000001
-EQU UDR1_2 00000002
-EQU UDR1_3 00000003
-EQU UDR1_4 00000004
-EQU UDR1_5 00000005
-EQU UDR1_6 00000006
-EQU UDR1_7 00000007
-EQU MPCM1 00000000
-EQU U2X1 00000001
-EQU UPE1 00000002
-EQU DOR1 00000003
-EQU FE1 00000004
-EQU UDRE1 00000005
-EQU TXC1 00000006
-EQU RXC1 00000007
-EQU TXB81 00000000
-EQU RXB81 00000001
-EQU UCSZ12 00000002
-EQU TXEN1 00000003
-EQU RXEN1 00000004
-EQU UDRIE1 00000005
-EQU TXCIE1 00000006
-EQU RXCIE1 00000007
-EQU UCPOL1 00000000
-EQU UCSZ10 00000001
-EQU UCPHA1 00000001
-EQU UCSZ11 00000002
-EQU UDORD1 00000002
-EQU USBS1 00000003
-EQU UPM10 00000004
-EQU UPM11 00000005
-EQU UMSEL10 00000006
-EQU UMSEL11 00000007
-EQU UBRR_8 00000000
-EQU UBRR_9 00000001
-EQU UBRR_10 00000002
-EQU UBRR_11 00000003
-EQU UBRR_0 00000000
-EQU UBRR_1 00000001
-EQU UBRR_2 00000002
-EQU UBRR_3 00000003
-EQU UBRR_4 00000004
-EQU UBRR_5 00000005
-EQU UBRR_6 00000006
-EQU UBRR_7 00000007
-EQU SPDR0 00000000
-EQU SPDR1 00000001
-EQU SPDR2 00000002
-EQU SPDR3 00000003
-EQU SPDR4 00000004
-EQU SPDR5 00000005
-EQU SPDR6 00000006
-EQU SPDR7 00000007
-EQU SPI2X 00000000
-EQU WCOL 00000006
-EQU SPIF 00000007
-EQU SPR0 00000000
-EQU SPR1 00000001
-EQU CPHA 00000002
-EQU CPOL 00000003
-EQU MSTR 00000004
-EQU DORD 00000005
-EQU SPE 00000006
-EQU SPIE 00000007
-EQU WDP0 00000000
-EQU WDP1 00000001
-EQU WDP2 00000002
-EQU WDE 00000003
-EQU WDCE 00000004
-EQU WDP3 00000005
-EQU WDIE 00000006
-EQU WDIF 00000007
-EQU SREG_C 00000000
-EQU SREG_Z 00000001
-EQU SREG_N 00000002
-EQU SREG_V 00000003
-EQU SREG_S 00000004
-EQU SREG_H 00000005
-EQU SREG_T 00000006
-EQU SREG_I 00000007
-EQU IVCE 00000000
-EQU IVSEL 00000001
-EQU PUD 00000004
-EQU BODSE 00000005
-EQU BODS 00000006
-EQU PORF 00000000
-EQU EXTRF 00000001
-EQU BORF 00000002
-EQU WDRF 00000003
-EQU CAL0 00000000
-EQU CAL1 00000001
-EQU CAL2 00000002
-EQU CAL3 00000003
-EQU CAL4 00000004
-EQU CAL5 00000005
-EQU CAL6 00000006
-EQU CAL7 00000007
-EQU CLKPS0 00000000
-EQU CLKPS1 00000001
-EQU CLKPS2 00000002
-EQU CLKPS3 00000003
-EQU CLKPCE 00000007
-EQU SE 00000000
-EQU SM0 00000001
-EQU SM1 00000002
-EQU SM2 00000003
-EQU RAMPZ0 00000000
-EQU GPIOR20 00000000
-EQU GPIOR21 00000001
-EQU GPIOR22 00000002
-EQU GPIOR23 00000003
-EQU GPIOR24 00000004
-EQU GPIOR25 00000005
-EQU GPIOR26 00000006
-EQU GPIOR27 00000007
-EQU GPIOR10 00000000
-EQU GPIOR11 00000001
-EQU GPIOR12 00000002
-EQU GPIOR13 00000003
-EQU GPIOR14 00000004
-EQU GPIOR15 00000005
-EQU GPIOR16 00000006
-EQU GPIOR17 00000007
-EQU GPIOR00 00000000
-EQU GPIOR01 00000001
-EQU GPIOR02 00000002
-EQU GPIOR03 00000003
-EQU GPIOR04 00000004
-EQU GPIOR05 00000005
-EQU GPIOR06 00000006
-EQU GPIOR07 00000007
-EQU PRADC 00000000
-EQU PRUSART0 00000001
-EQU PRSPI 00000002
-EQU PRTIM1 00000003
-EQU PRUSART1 00000004
-EQU PRTIM0 00000005
-EQU PRTIM2 00000006
-EQU PRTWI 00000007
-EQU PRTIM3 00000000
-EQU LB1 00000000
-EQU LB2 00000001
-EQU BLB01 00000002
-EQU BLB02 00000003
-EQU BLB11 00000004
-EQU BLB12 00000005
-EQU CKSEL0 00000000
-EQU CKSEL1 00000001
-EQU CKSEL2 00000002
-EQU CKSEL3 00000003
-EQU SUT0 00000004
-EQU SUT1 00000005
-EQU CKOUT 00000006
-EQU CKDIV8 00000007
-EQU BOOTRST 00000000
-EQU BOOTSZ0 00000001
-EQU BOOTSZ1 00000002
-EQU EESAVE 00000003
-EQU WDTON 00000004
-EQU SPIEN 00000005
-EQU JTAGEN 00000006
-EQU OCDEN 00000007
-EQU BODLEVEL0 00000000
-EQU BODLEVEL1 00000001
-EQU BODLEVEL2 00000002
-DEF XH r27
-DEF XL r26
-DEF YH r29
-DEF YL r28
-DEF ZH r31
-DEF ZL r30
-EQU FLASHEND 0000ffff
-EQU IOEND 000000ff
-EQU SRAM_START 00000100
-EQU SRAM_SIZE 00004000
-EQU RAMEND 000040ff
-EQU XRAMEND 00000000
-EQU E2END 00000fff
-EQU EEPROMEND 00000fff
-EQU EEADRBITS 0000000c
-EQU NRWW_START_ADDR 0000f000
-EQU NRWW_STOP_ADDR 0000ffff
-EQU RWW_START_ADDR 00000000
-EQU RWW_STOP_ADDR 0000efff
-EQU PAGESIZE 00000080
-EQU FIRSTBOOTSTART 0000fe00
-EQU SECONDBOOTSTART 0000fc00
-EQU THIRDBOOTSTART 0000f800
-EQU FOURTHBOOTSTART 0000f000
-EQU SMALLBOOTSTART 0000fe00
-EQU LARGEBOOTSTART 0000f000
-EQU INT0addr 00000002
-EQU INT1addr 00000004
-EQU INT2addr 00000006
-EQU PCI0addr 00000008
-EQU PCI1addr 0000000a
-EQU PCI2addr 0000000c
-EQU PCI3addr 0000000e
-EQU WDTaddr 00000010
-EQU OC2Aaddr 00000012
-EQU OC2Baddr 00000014
-EQU OVF2addr 00000016
-EQU ICP1addr 00000018
-EQU OC1Aaddr 0000001a
-EQU OC1Baddr 0000001c
-EQU OVF1addr 0000001e
-EQU OC0Aaddr 00000020
-EQU OC0Baddr 00000022
-EQU OVF0addr 00000024
-EQU SPIaddr 00000026
-EQU URXC0addr 00000028
-EQU UDRE0addr 0000002a
-EQU UTXC0addr 0000002c
-EQU ACIaddr 0000002e
-EQU ADCCaddr 00000030
-EQU ERDYaddr 00000032
-EQU TWIaddr 00000034
-EQU SPMRaddr 00000036
-EQU URXC1addr 00000038
-EQU UDRE1addr 0000003a
-EQU UTXC1addr 0000003c
-EQU ICP3addr 0000003e
-EQU OC3Aaddr 00000040
-EQU OC3Baddr 00000042
-EQU OVF3addr 00000044
-EQU INT_VECTORS_SIZE 00000046
-EQU ramstart 00000100
-EQU CELLSIZE 00000002
-SET WANT_ANALOG_COMPARATOR 00000000
-SET WANT_USART0 00000000
-SET WANT_PORTA 00000000
-SET WANT_PORTB 00000000
-SET WANT_PORTC 00000000
-SET WANT_PORTD 00000000
-SET WANT_TIMER_COUNTER_0 00000000
-SET WANT_TIMER_COUNTER_1 00000000
-SET WANT_TIMER_COUNTER_2 00000000
-SET WANT_TIMER_COUNTER_3 00000000
-SET WANT_BOOT_LOAD 00000000
-SET WANT_EXTERNAL_INTERRUPT 00000000
-SET WANT_AD_CONVERTER 00000000
-SET WANT_JTAG 00000000
-SET WANT_EEPROM 00000000
-SET WANT_TWI 00000000
-SET WANT_USART1 00000000
-SET WANT_SPI 00000000
-SET WANT_WATCHDOG 00000000
-SET WANT_CPU 00000000
-EQU intvecsize 00000002
-EQU pclen 00000002
-CSEG isr 0000013c
-EQU INTVECTORS 00000023
-CSEG mcu_info 00000045
-CSEG mcu_ramsize 00000045
-CSEG mcu_eepromsize 00000046
-CSEG mcu_maxdp 00000047
-CSEG mcu_numints 00000048
-CSEG mcu_name 00000049
-SET codestart 00000050
-SET WANT_INTERRUPTS 00000001
-SET WANT_INTERRUPT_COUNTERS 00000000
-SET WANT_ISR_RX 00000001
-SET WANT_IGNORECASE 00000000
-SET WANT_UNIFIED 00000000
-SET TIB_SIZE 0000005a
-SET APPUSERSIZE 0000000a
-SET rstackstart 000040ff
-SET stackstart 000040af
-SET NUMWORDLISTS 00000008
-SET NUMRECOGNIZERS 00000004
-SET BAUD 00009600
-SET BAUD_MAXERROR 0000001e
-SET VE_HEAD 0000fda8
-SET VE_ENVHEAD 0000f54d
-SET AMFORTH_RO_SEG 0000f001
-EQU F_CPU 00f42400
-EQU TIMER_INT 00000016
-EQU BAUDRATE_LOW 000000c4
-EQU BAUDRATE_HIGH 000000c5
-EQU USART_C 000000c2
-EQU USART_B 000000c1
-EQU USART_A 000000c0
-EQU USART_DATA 000000c6
-EQU URXCaddr 00000028
-EQU UDREaddr 0000002a
-EQU bm_USART_RXRD 00000080
-EQU bm_USART_TXRD 00000020
-EQU bm_ENABLE_TX 00000008
-EQU bm_ENABLE_RX 00000010
-EQU bm_ENABLE_INT_RX 00000080
-EQU bm_ENABLE_INT_TX 00000020
-EQU bm_USARTC_en 00000000
-EQU bm_ASYNC 00000000
-EQU bm_SYNC 00000040
-EQU bm_NO_PARITY 00000000
-EQU bm_EVEN_PARITY 00000020
-EQU bm_ODD_PARITY 00000030
-EQU bm_1STOPBIT 00000000
-EQU bm_2STOPBIT 00000008
-EQU bm_5BIT 00000000
-EQU bm_6BIT 00000002
-EQU bm_7BIT 00000004
-EQU bm_8BIT 00000006
-SET USART_C_VALUE 00000006
-SET USART_B_VALUE 00000098
-EQU usart_rx_size 00000010
-EQU usart_rx_mask 0000000f
-DSEG usart_rx_data 00000100
-DSEG usart_rx_in 00000110
-DSEG usart_rx_out 00000111
-CSEG VE_TO_RXBUF 00000050
-CSEG XT_TO_RXBUF 00000056
-CSEG PFA_rx_tobuf 00000057
-CSEG DO_NEXT 0000f005
-CSEG VE_ISR_RX 00000067
-CSEG XT_ISR_RX 0000006c
-CSEG DO_COLON 0000f001
-CSEG usart_rx_isr 0000006d
-CSEG XT_DOLITERAL 0000f046
-CSEG XT_CFETCH 0000f0aa
-CSEG XT_DUP 0000f0c3
-CSEG XT_EQUAL 0000fd9a
-CSEG XT_DOCONDBRANCH 0000f03f
-CSEG usart_rx_isr1 00000077
-CSEG XT_COLD 0000fa74
-CSEG XT_EXIT 0000f026
-CSEG XT_USART_INIT_RX_BUFFER 00000079
-CSEG PFA_USART_INIT_RX_BUFFER 0000007a
-CSEG XT_INTSTORE 0000f4a2
-CSEG XT_ZERO 0000f166
-CSEG XT_FILL 0000f4ea
-CSEG VE_RX_BUFFER 00000086
-CSEG XT_RX_BUFFER 0000008b
-CSEG PFA_RX_BUFFER 0000008c
-CSEG XT_RXQ_BUFFER 000000a6
-CSEG XT_PLUS 0000f1af
-CSEG XT_SWAP 0000f0d6
-CSEG XT_1PLUS 0000f241
-CSEG XT_AND 0000f225
-CSEG XT_CSTORE 0000f09f
-CSEG VE_RXQ_BUFFER 000000a0
-CSEG PFA_RXQ_BUFFER 000000a7
-CSEG XT_PAUSE 0000fa6c
-CSEG XT_NOTEQUAL 0000f125
-SET XT_RX 0000008b
-SET XT_RXQ 000000a6
-SET XT_USART_INIT_RX 00000079
-CSEG VE_TX_POLL 000000b0
-CSEG XT_TX_POLL 000000b6
-CSEG PFA_TX_POLL 000000b7
-CSEG XT_TXQ_POLL 000000c4
-CSEG VE_TXQ_POLL 000000be
-CSEG PFA_TXQ_POLL 000000c5
-SET XT_TX 000000b6
-SET XT_TXQ 000000c4
-SET XT_USART_INIT_TX 00000000
-CSEG VE_UBRR 000000cd
-CSEG XT_UBRR 000000d1
-CSEG PFA_DOVALUE1 0000f081
-CSEG PFA_UBRR 000000d2
-ESEG EE_UBRRVAL 0000009e
-CSEG XT_EDEFERFETCH 0000fbcf
-CSEG XT_EDEFERSTORE 0000fbd9
-CSEG VE_USART 000000d5
-CSEG XT_USART 000000da
-CSEG PFA_USART 000000db
-CSEG XT_BYTESWAP 0000f30b
-EQU OW_PORT 00000005
-EQU OW_BIT 00000004
-SET OW_DDR 00000004
-SET OW_PIN 00000003
-CSEG VE_OW_RESET 000000f0
-CSEG XT_OW_RESET 000000f6
-CSEG PFA_OW_RESET 000000f7
-SET cycles 00000000
-SET loop_cycles 00000fa0
-CSEG VE_OW_SLOT 00000114
-CSEG XT_OW_SLOT 0000011a
-CSEG PFA_OW_SLOT 0000011b
-CSEG PFA_OW_SLOT0 00000128
-SET AMFORTH_NRWW_SIZE 00001ffc
-SET corepc 0000013c
-CSEG PFA_COLD 0000fa75
-ESEG intvec 00000000
-DSEG intcnt 00000112
-CSEG VE_MPLUS 00000153
-CSEG XT_MPLUS 00000156
-CSEG PFA_MPLUS 00000157
-CSEG XT_S2D 0000fd82
-CSEG XT_DPLUS 0000f430
-CSEG VE_UDSTAR 0000015a
-CSEG XT_UDSTAR 0000015e
-CSEG PFA_UDSTAR 0000015f
-CSEG XT_TO_R 0000f111
-CSEG XT_UMSTAR 0000f1f2
-CSEG XT_DROP 0000f0eb
-CSEG XT_R_FROM 0000f108
-CSEG XT_ROT 0000f0f3
-CSEG VE_UMAX 00000169
-CSEG XT_UMAX 0000016d
-CSEG PFA_UMAX 0000016e
-CSEG XT_2DUP 0000f580
-CSEG XT_ULESS 0000f16e
-CSEG UMAX1 00000173
-CSEG VE_UMIN 00000175
-CSEG XT_UMIN 00000179
-CSEG PFA_UMIN 0000017a
-CSEG XT_UGREATER 0000f179
-CSEG UMIN1 0000017f
-CSEG XT_IMMEDIATEQ 00000181
-CSEG PFA_IMMEDIATEQ 00000182
-CSEG XT_ZEROEQUAL 0000f12c
-CSEG IMMEDIATEQ1 0000018a
-CSEG XT_ONE 0000fda1
-CSEG XT_TRUE 0000f15d
-CSEG VE_NAME2FLAGS 0000018c
-CSEG XT_NAME2FLAGS 00000193
-CSEG PFA_NAME2FLAGS 00000194
-CSEG XT_FETCHI 0000f3e3
-CSEG VE_NEWEST 00000199
-CSEG XT_NEWEST 0000019e
-CSEG PFA_DOVARIABLE 0000f054
-CSEG PFA_NEWEST 0000019f
-DSEG ram_newest 00000135
-CSEG VE_LATEST 000001a0
-CSEG XT_LATEST 000001a5
-CSEG PFA_LATEST 000001a6
-DSEG ram_latest 00000139
-CSEG VE_DOCREATE 000001a7
-CSEG XT_DOCREATE 000001ad
-CSEG PFA_DOCREATE 000001ae
-CSEG XT_PARSENAME 0000f9cf
-CSEG XT_WLSCOPE 00000304
-CSEG XT_CELLPLUS 0000f579
-CSEG XT_STORE 0000f093
-CSEG XT_HEADER 000002e9
-CSEG VE_BACKSLASH 000001b8
-CSEG XT_BACKSLASH 000001bb
-CSEG PFA_BACKSLASH 000001bc
-CSEG XT_SOURCE 0000f9b6
-CSEG XT_NIP 0000f102
-CSEG XT_TO_IN 0000f599
-CSEG VE_LPAREN 000001c1
-CSEG XT_LPAREN 000001c4
-CSEG PFA_LPAREN 000001c5
-CSEG XT_PARSE 0000f9a2
-CSEG XT_2DROP 0000f589
-CSEG VE_COMPILE 000001ca
-CSEG XT_COMPILE 000001d0
-CSEG PFA_COMPILE 000001d1
-CSEG XT_ICELLPLUS 0000fbc6
-CSEG XT_COMMA 000001db
-CSEG VE_COMMA 000001d8
-CSEG PFA_COMMA 000001dc
-CSEG XT_DP 0000f5c9
-CSEG XT_STOREI 0000f385
-CSEG XT_DOTO 0000fbb4
-CSEG PFA_DP 0000f5ca
-CSEG VE_BRACKETTICK 000001e3
-CSEG XT_BRACKETTICK 000001e7
-CSEG PFA_BRACKETTICK 000001e8
-CSEG XT_TICK 0000f825
-CSEG XT_LITERAL 000001f1
-CSEG VE_LITERAL 000001eb
-CSEG PFA_LITERAL 000001f2
-CSEG VE_SLITERAL 000001f6
-CSEG XT_SLITERAL 000001fc
-CSEG PFA_SLITERAL 000001fd
-CSEG XT_DOSLITERAL 0000f788
-CSEG XT_SCOMMA 0000f796
-CSEG XT_GMARK 00000201
-CSEG PFA_GMARK 00000202
-CSEG XT_GRESOLVE 00000206
-CSEG PFA_GRESOLVE 00000207
-CSEG XT_QSTACK 0000fb72
-CSEG XT_LMARK 0000020c
-CSEG PFA_LMARK 0000020d
-CSEG XT_LRESOLVE 0000020f
-CSEG PFA_LRESOLVE 00000210
-CSEG VE_AHEAD 00000213
-CSEG XT_AHEAD 00000218
-CSEG PFA_AHEAD 00000219
-CSEG XT_DOBRANCH 0000f035
-CSEG VE_IF 0000021d
-CSEG XT_IF 00000220
-CSEG PFA_IF 00000221
-CSEG VE_ELSE 00000225
-CSEG XT_ELSE 00000229
-CSEG PFA_ELSE 0000022a
-CSEG VE_THEN 00000230
-CSEG XT_THEN 00000234
-CSEG PFA_THEN 00000235
-CSEG VE_BEGIN 00000237
-CSEG XT_BEGIN 0000023c
-CSEG PFA_BEGIN 0000023d
-CSEG VE_WHILE 0000023f
-CSEG XT_WHILE 00000244
-CSEG PFA_WHILE 00000245
-CSEG VE_REPEAT 00000248
-CSEG XT_REPEAT 0000024d
-CSEG PFA_REPEAT 0000024e
-CSEG XT_AGAIN 00000261
-CSEG VE_UNTIL 00000251
-CSEG XT_UNTIL 00000256
-CSEG PFA_UNTIL 00000257
-CSEG VE_AGAIN 0000025c
-CSEG PFA_AGAIN 00000262
-CSEG VE_DO 00000266
-CSEG XT_DO 00000269
-CSEG PFA_DO 0000026a
-CSEG XT_DODO 0000f2ad
-CSEG XT_TO_L 000002c4
-CSEG VE_LOOP 00000270
-CSEG XT_LOOP 00000274
-CSEG PFA_LOOP 00000275
-CSEG XT_DOLOOP 0000f2db
-CSEG XT_ENDLOOP 000002ab
-CSEG VE_PLUSLOOP 00000279
-CSEG XT_PLUSLOOP 0000027e
-CSEG PFA_PLUSLOOP 0000027f
-CSEG XT_DOPLUSLOOP 0000f2cc
-CSEG VE_LEAVE 00000283
-CSEG XT_LEAVE 00000288
-CSEG PFA_LEAVE 00000289
-CSEG XT_UNLOOP 0000f2e6
-CSEG VE_QDO 0000028e
-CSEG XT_QDO 00000292
-CSEG PFA_QDO 00000293
-CSEG XT_QDOCHECK 0000029a
-CSEG PFA_QDOCHECK 0000029b
-CSEG PFA_QDOCHECK1 000002a2
-CSEG XT_INVERT 0000f20f
-CSEG VE_ENDLOOP 000002a5
-CSEG PFA_ENDLOOP 000002ac
-CSEG LOOP1 000002ad
-CSEG XT_L_FROM 000002b8
-CSEG XT_QDUP 0000f0cb
-CSEG LOOP2 000002b4
-CSEG VE_L_FROM 000002b5
-CSEG PFA_L_FROM 000002b9
-CSEG XT_LP 000002d7
-CSEG XT_FETCH 0000f08b
-CSEG XT_PLUSSTORE 0000f277
-CSEG VE_TO_L 000002c1
-CSEG PFA_TO_L 000002c5
-CSEG XT_TWO 0000fda6
-CSEG VE_LP0 000002cc
-CSEG XT_LP0 000002d0
-CSEG PFA_LP0 000002d1
-ESEG CFG_LP0 00000052
-CSEG VE_LP 000002d4
-CSEG PFA_LP 000002d8
-DSEG ram_lp 0000013b
-CSEG VE_CREATE 000002d9
-CSEG XT_CREATE 000002de
-CSEG PFA_CREATE 000002df
-CSEG XT_REVEAL 0000030d
-CSEG PFA_DOCONSTANT 0000f061
-CSEG VE_HEADER 000002e4
-CSEG PFA_HEADER 000002ea
-CSEG XT_GREATERZERO 0000f13a
-CSEG PFA_HEADER1 000002fb
-CSEG XT_OR 0000f22e
-CSEG XT_DOSCOMMA 0000f79a
-CSEG XT_FETCHE 0000f371
-CSEG XT_THROW 0000f85c
-CSEG VE_WLSCOPE 000002fe
-CSEG PFA_DODEFER1 0000fc2e
-CSEG PFA_WLSCOPE 00000305
-ESEG CFG_WLSCOPE 0000004e
-CSEG VE_REVEAL 00000308
-CSEG PFA_REVEAL 0000030e
-CSEG REVEAL1 00000318
-CSEG XT_STOREE 0000f34d
-CSEG VE_DOES 00000319
-CSEG XT_DOES 0000031e
-CSEG PFA_DOES 0000031f
-CSEG XT_DODOES 00000331
-CSEG DO_DODOES 00000326
-CSEG PFA_DODOES 00000332
-CSEG XT_NFA2CFA 0000fc99
-CSEG VE_COLON 0000033a
-CSEG XT_COLON 0000033d
-CSEG PFA_COLON 0000033e
-CSEG XT_COLONNONAME 00000348
-CSEG VE_COLONNONAME 00000342
-CSEG PFA_COLONNONAME 00000349
-CSEG XT_RBRACKET 0000035d
-CSEG VE_SEMICOLON 00000351
-CSEG XT_SEMICOLON 00000354
-CSEG PFA_SEMICOLON 00000355
-CSEG XT_LBRACKET 00000365
-CSEG VE_RBRACKET 0000035a
-CSEG PFA_RBRACKET 0000035e
-CSEG XT_STATE 0000f566
-CSEG VE_LBRACKET 00000362
-CSEG PFA_LBRACKET 00000366
-CSEG VE_VARIABLE 0000036a
-CSEG XT_VARIABLE 00000370
-CSEG PFA_VARIABLE 00000371
-CSEG XT_HERE 0000f5da
-CSEG XT_CONSTANT 0000037c
-CSEG XT_ALLOT 0000f5e3
-CSEG VE_CONSTANT 00000376
-CSEG PFA_CONSTANT 0000037d
-CSEG VE_USER 00000383
-CSEG XT_USER 00000387
-CSEG PFA_USER 00000388
-CSEG PFA_DOUSER 0000f067
-CSEG VE_RECURSE 0000038e
-CSEG XT_RECURSE 00000394
-CSEG PFA_RECURSE 00000395
-CSEG VE_IMMEDIATE 00000399
-CSEG XT_IMMEDIATE 000003a0
-CSEG PFA_IMMEDIATE 000003a1
-CSEG XT_GET_CURRENT 00000442
-CSEG VE_BRACKETCHAR 000003ab
-CSEG XT_BRACKETCHAR 000003b0
-CSEG PFA_BRACKETCHAR 000003b1
-CSEG XT_CHAR 0000f905
-CSEG VE_ABORTQUOTE 000003b6
-CSEG XT_ABORTQUOTE 000003bb
-CSEG PFA_ABORTQUOTE 000003bc
-CSEG XT_SQUOTE 0000f4dc
-CSEG XT_QABORT 000003cd
-CSEG VE_ABORT 000003c0
-CSEG XT_ABORT 000003c5
-CSEG PFA_ABORT 000003c6
-CSEG VE_QABORT 000003c8
-CSEG PFA_QABORT 000003ce
-CSEG QABO1 000003d3
-CSEG XT_ITYPE 0000f7bb
-CSEG VE_GET_STACK 000003d5
-CSEG XT_GET_STACK 000003dc
-CSEG PFA_N_FETCH_E2 000003f3
-CSEG PFA_N_FETCH_E1 000003e9
-CSEG XT_I 0000f2be
-CSEG XT_1MINUS 0000f247
-CSEG XT_CELLS 0000f573
-CSEG XT_OVER 0000f0e1
-CSEG VE_SET_STACK 000003f6
-CSEG XT_SET_STACK 000003fd
-CSEG PFA_SET_STACK 000003fe
-CSEG XT_ZEROLESS 0000f133
-CSEG PFA_SET_STACK0 00000405
-CSEG PFA_SET_STACK2 00000412
-CSEG PFA_SET_STACK1 0000040d
-CSEG XT_TUCK 0000f591
-CSEG VE_MAPSTACK 00000414
-CSEG XT_MAPSTACK 0000041b
-CSEG PFA_MAPSTACK 0000041c
-CSEG XT_BOUNDS 0000fd79
-CSEG PFA_MAPSTACK3 00000437
-CSEG PFA_MAPSTACK1 00000426
-CSEG XT_R_FETCH 0000f11a
-CSEG XT_EXECUTE 0000f030
-CSEG PFA_MAPSTACK2 00000433
-CSEG VE_GET_CURRENT 0000043a
-CSEG PFA_GET_CURRENT 00000443
-ESEG CFG_CURRENT 00000058
-CSEG VE_GET_ORDER 00000447
-CSEG XT_GET_ORDER 0000044e
-CSEG PFA_GET_ORDER 0000044f
-ESEG CFG_ORDERLISTLEN 0000005c
-CSEG VE_CFG_ORDER 00000453
-CSEG XT_CFG_ORDER 0000045a
-CSEG PFA_CFG_ORDER 0000045b
-CSEG VE_COMPARE 0000045c
-CSEG XT_COMPARE 00000462
-CSEG PFA_COMPARE 00000463
-CSEG PFA_COMPARE_LOOP 0000046f
-CSEG PFA_COMPARE_NOTEQUAL 0000047d
-CSEG PFA_COMPARE_ENDREACHED2 00000478
-CSEG PFA_COMPARE_ENDREACHED 00000479
-CSEG PFA_COMPARE_CHECKLASTCHAR 0000047d
-CSEG PFA_COMPARE_DONE 0000047f
-CSEG VE_NFA2LFA 00000484
-CSEG XT_NFA2LFA 0000048a
-CSEG PFA_NFA2LFA 0000048b
-CSEG XT_NAME2STRING 0000fc8d
-CSEG XT_2SLASH 0000f216
-CSEG VE_DOTS 00000490
-CSEG XT_DOTS 00000493
-CSEG PFA_DOTS 00000494
-CSEG XT_DEPTH 0000fabc
-CSEG XT_UDOT 0000f463
-CSEG XT_SPACE 0000f7fd
-CSEG PFA_DOTS2 000004a2
-CSEG PFA_DOTS1 0000049d
-CSEG XT_PICK 0000f4ca
-CSEG VE_SPIRW 000004a3
-CSEG XT_SPIRW 000004a8
-CSEG PFA_SPIRW 000004a9
-CSEG do_spirw 000004ad
-CSEG do_spirw1 000004ae
-CSEG VE_N_SPIR 000004b6
-CSEG XT_N_SPIR 000004bb
-CSEG PFA_N_SPIR 000004bc
-CSEG PFA_N_SPIR_LOOP 000004c1
-CSEG PFA_N_SPIR_LOOP1 000004c2
-CSEG VE_N_SPIW 000004cd
-CSEG XT_N_SPIW 000004d2
-CSEG PFA_N_SPIW 000004d3
-CSEG PFA_N_SPIW_LOOP 000004d8
-CSEG PFA_N_SPIW_LOOP1 000004da
-CSEG VE_APPLTURNKEY 000004e4
-CSEG XT_APPLTURNKEY 000004ec
-CSEG PFA_APPLTURNKEY 000004ed
-CSEG XT_INTON 0000f494
-CSEG XT_DOT_VER 0000fb7f
-CSEG XT_F_CPU 0000f55b
-CSEG XT_UMSLASHMOD 0000f1d4
-CSEG XT_DECIMAL 0000f5f8
-CSEG XT_DOT 0000f73d
-CSEG VE_SET_CURRENT 000004fe
-CSEG XT_SET_CURRENT 00000506
-CSEG PFA_SET_CURRENT 00000507
-CSEG VE_WORDLIST 0000050b
-CSEG XT_WORDLIST 00000511
-CSEG PFA_WORDLIST 00000512
-CSEG XT_EHERE 0000f5d2
-CSEG PFA_EHERE 0000f5d3
-CSEG VE_FORTHWORDLIST 0000051b
-CSEG XT_FORTHWORDLIST 00000524
-CSEG PFA_FORTHWORDLIST 00000525
-ESEG CFG_FORTHWORDLIST 0000005a
-CSEG VE_SET_ORDER 00000526
-CSEG XT_SET_ORDER 0000052d
-CSEG PFA_SET_ORDER 0000052e
-CSEG VE_SET_RECOGNIZERS 00000532
-CSEG XT_SET_RECOGNIZERS 0000053c
-CSEG PFA_SET_RECOGNIZERS 0000053d
-ESEG CFG_RECOGNIZERLISTLEN 0000006e
-CSEG VE_GET_RECOGNIZERS 00000541
-CSEG XT_GET_RECOGNIZERS 0000054b
-CSEG PFA_GET_RECOGNIZERS 0000054c
-CSEG VE_CODE 00000550
-CSEG XT_CODE 00000554
-CSEG PFA_CODE 00000555
-CSEG VE_ENDCODE 0000055b
-CSEG XT_ENDCODE 00000561
-CSEG PFA_ENDCODE 00000562
-CSEG VE_MARKER 00000567
-CSEG XT_MARKER 0000056d
-CSEG PFA_MARKER 0000056e
-ESEG EE_MARKER 0000007a
-CSEG VE_POSTPONE 00000571
-CSEG XT_POSTPONE 00000577
-CSEG PFA_POSTPONE 00000578
-CSEG XT_FORTHRECOGNIZER 0000fae7
-CSEG XT_RECOGNIZE 0000faf2
-CSEG VE_2R_FETCH 00000586
-CSEG XT_2R_FETCH 0000058a
-CSEG PFA_2R_FETCH 0000058b
-SET DPSTART 0000059a
-CSEG DO_INTERRUPT 0000f01a
-CSEG DO_EXECUTE 0000f010
-CSEG XT_ISREXEC 0000f4bd
-CSEG VE_EXIT 0000f022
-CSEG PFA_EXIT 0000f027
-CSEG VE_EXECUTE 0000f02a
-CSEG PFA_EXECUTE 0000f031
-CSEG PFA_DOBRANCH 0000f036
-CSEG PFA_DOCONDBRANCH 0000f040
-CSEG PFA_DOLITERAL 0000f047
-CSEG XT_DOVARIABLE 0000f053
-CSEG XT_DOCONSTANT 0000f060
-CSEG XT_DOUSER 0000f066
-CSEG VE_DOVALUE 0000f075
-CSEG XT_DOVALUE 0000f07b
-CSEG PFA_DOVALUE 0000f07c
-CSEG VE_FETCH 0000f088
-CSEG PFA_FETCH 0000f08c
-CSEG PFA_FETCHRAM 0000f08c
-CSEG VE_STORE 0000f090
-CSEG PFA_STORE 0000f094
-CSEG PFA_STORERAM 0000f094
-CSEG VE_CSTORE 0000f09c
-CSEG PFA_CSTORE 0000f0a0
-CSEG VE_CFETCH 0000f0a7
-CSEG PFA_CFETCH 0000f0ab
-CSEG VE_FETCHU 0000f0af
-CSEG XT_FETCHU 0000f0b2
-CSEG PFA_FETCHU 0000f0b3
-CSEG XT_UP_FETCH 0000f314
-CSEG VE_STOREU 0000f0b7
-CSEG XT_STOREU 0000f0ba
-CSEG PFA_STOREU 0000f0bb
-CSEG VE_DUP 0000f0bf
-CSEG PFA_DUP 0000f0c4
-CSEG VE_QDUP 0000f0c7
-CSEG PFA_QDUP 0000f0cc
-CSEG PFA_QDUP1 0000f0d1
-CSEG VE_SWAP 0000f0d2
-CSEG PFA_SWAP 0000f0d7
-CSEG VE_OVER 0000f0dd
-CSEG PFA_OVER 0000f0e2
-CSEG VE_DROP 0000f0e7
-CSEG PFA_DROP 0000f0ec
-CSEG VE_ROT 0000f0ef
-CSEG PFA_ROT 0000f0f4
-CSEG VE_NIP 0000f0fe
-CSEG PFA_NIP 0000f103
-CSEG VE_R_FROM 0000f105
-CSEG PFA_R_FROM 0000f109
-CSEG VE_TO_R 0000f10e
-CSEG PFA_TO_R 0000f112
-CSEG VE_R_FETCH 0000f117
-CSEG PFA_R_FETCH 0000f11b
-CSEG VE_NOTEQUAL 0000f122
-CSEG PFA_NOTEQUAL 0000f126
-CSEG VE_ZEROEQUAL 0000f129
-CSEG PFA_ZEROEQUAL 0000f12d
-CSEG PFA_ZERO1 0000f169
-CSEG PFA_TRUE1 0000f160
-CSEG VE_ZEROLESS 0000f130
-CSEG PFA_ZEROLESS 0000f134
-CSEG VE_GREATERZERO 0000f137
-CSEG PFA_GREATERZERO 0000f13b
-CSEG VE_DGREATERZERO 0000f140
-CSEG XT_DGREATERZERO 0000f144
-CSEG PFA_DGREATERZERO 0000f145
-CSEG VE_DXT_ZEROLESS 0000f14e
-CSEG XT_DXT_ZEROLESS 0000f152
-CSEG PFA_DXT_ZEROLESS 0000f153
-CSEG VE_TRUE 0000f159
-CSEG PFA_TRUE 0000f15e
-CSEG VE_ZERO 0000f163
-CSEG PFA_ZERO 0000f167
-CSEG VE_ULESS 0000f16b
-CSEG PFA_ULESS 0000f16f
-CSEG VE_UGREATER 0000f176
-CSEG PFA_UGREATER 0000f17a
-CSEG VE_LESS 0000f17d
-CSEG XT_LESS 0000f180
-CSEG PFA_LESS 0000f181
-CSEG PFA_LESSDONE 0000f185
-CSEG VE_GREATER 0000f187
-CSEG XT_GREATER 0000f18a
-CSEG PFA_GREATER 0000f18b
-CSEG PFA_GREATERDONE 0000f18f
-CSEG VE_LOG2 0000f192
-CSEG XT_LOG2 0000f196
-CSEG PFA_LOG2 0000f197
-CSEG PFA_LOG2_1 0000f19a
-CSEG PFA_LOG2_2 0000f1a0
-CSEG VE_MINUS 0000f1a2
-CSEG XT_MINUS 0000f1a5
-CSEG PFA_MINUS 0000f1a6
-CSEG VE_PLUS 0000f1ac
-CSEG PFA_PLUS 0000f1b0
-CSEG VE_MSTAR 0000f1b5
-CSEG XT_MSTAR 0000f1b8
-CSEG PFA_MSTAR 0000f1b9
-CSEG VE_UMSLASHMOD 0000f1cf
-CSEG PFA_UMSLASHMOD 0000f1d5
-CSEG PFA_UMSLASHMODmod 0000f1da
-CSEG PFA_UMSLASHMODmod_loop 0000f1db
-CSEG PFA_UMSLASHMODmod_loop_control 0000f1e8
-CSEG PFA_UMSLASHMODmod_subtract 0000f1e5
-CSEG PFA_UMSLASHMODmod_done 0000f1ea
-CSEG VE_UMSTAR 0000f1ee
-CSEG PFA_UMSTAR 0000f1f3
-CSEG VE_INVERT 0000f20a
-CSEG PFA_INVERT 0000f210
-CSEG VE_2SLASH 0000f213
-CSEG PFA_2SLASH 0000f217
-CSEG VE_2STAR 0000f21a
-CSEG XT_2STAR 0000f21d
-CSEG PFA_2STAR 0000f21e
-CSEG VE_AND 0000f221
-CSEG PFA_AND 0000f226
-CSEG VE_OR 0000f22b
-CSEG PFA_OR 0000f22f
-CSEG VE_XOR 0000f234
-CSEG XT_XOR 0000f238
-CSEG PFA_XOR 0000f239
-CSEG VE_1PLUS 0000f23e
-CSEG PFA_1PLUS 0000f242
-CSEG VE_1MINUS 0000f244
-CSEG PFA_1MINUS 0000f248
-CSEG VE_QNEGATE 0000f24a
-CSEG XT_QNEGATE 0000f250
-CSEG PFA_QNEGATE 0000f251
-CSEG QNEG1 0000f255
-CSEG XT_NEGATE 0000f65a
-CSEG VE_LSHIFT 0000f256
-CSEG XT_LSHIFT 0000f25b
-CSEG PFA_LSHIFT 0000f25c
-CSEG PFA_LSHIFT1 0000f25f
-CSEG PFA_LSHIFT2 0000f264
-CSEG VE_RSHIFT 0000f265
-CSEG XT_RSHIFT 0000f26a
-CSEG PFA_RSHIFT 0000f26b
-CSEG PFA_RSHIFT1 0000f26e
-CSEG PFA_RSHIFT2 0000f273
-CSEG VE_PLUSSTORE 0000f274
-CSEG PFA_PLUSSTORE 0000f278
-CSEG VE_RP_FETCH 0000f284
-CSEG XT_RP_FETCH 0000f288
-CSEG PFA_RP_FETCH 0000f289
-CSEG VE_RP_STORE 0000f28e
-CSEG XT_RP_STORE 0000f292
-CSEG PFA_RP_STORE 0000f293
-CSEG VE_SP_FETCH 0000f29b
-CSEG XT_SP_FETCH 0000f29f
-CSEG PFA_SP_FETCH 0000f2a0
-CSEG VE_SP_STORE 0000f2a4
-CSEG XT_SP_STORE 0000f2a8
-CSEG PFA_SP_STORE 0000f2a9
-CSEG PFA_DODO 0000f2ae
-CSEG PFA_DODO1 0000f2b0
-CSEG VE_I 0000f2bb
-CSEG PFA_I 0000f2bf
-CSEG PFA_DOPLUSLOOP 0000f2cd
-CSEG PFA_DOPLUSLOOP_LEAVE 0000f2d7
-CSEG PFA_DOPLUSLOOP_NEXT 0000f2d4
-CSEG PFA_DOLOOP 0000f2dc
-CSEG VE_UNLOOP 0000f2e1
-CSEG PFA_UNLOOP 0000f2e7
-CSEG VE_CMOVE_G 0000f2ec
-CSEG XT_CMOVE_G 0000f2f1
-CSEG PFA_CMOVE_G 0000f2f2
-CSEG PFA_CMOVE_G1 0000f303
-CSEG PFA_CMOVE_G2 0000f2ff
-CSEG VE_BYTESWAP 0000f308
-CSEG PFA_BYTESWAP 0000f30c
-CSEG VE_UP_FETCH 0000f310
-CSEG PFA_UP_FETCH 0000f315
-CSEG VE_UP_STORE 0000f319
-CSEG XT_UP_STORE 0000f31d
-CSEG PFA_UP_STORE 0000f31e
-CSEG VE_1MS 0000f322
-CSEG XT_1MS 0000f326
-CSEG PFA_1MS 0000f327
-CSEG VE_2TO_R 0000f32c
-CSEG XT_2TO_R 0000f330
-CSEG PFA_2TO_R 0000f331
-CSEG VE_2R_FROM 0000f33b
-CSEG XT_2R_FROM 0000f33f
-CSEG PFA_2R_FROM 0000f340
-CSEG VE_STOREE 0000f34a
-CSEG PFA_STOREE 0000f34e
-CSEG PFA_STOREE0 0000f34e
-CSEG PFA_FETCHE2 0000f37c
-CSEG PFA_STOREE3 0000f358
-CSEG PFA_STOREE1 0000f363
-CSEG PFA_STOREE4 0000f35f
-CSEG PFA_STOREE2 0000f365
-CSEG VE_FETCHE 0000f36e
-CSEG PFA_FETCHE 0000f372
-CSEG PFA_FETCHE1 0000f372
-CSEG VE_STOREI 0000f382
-CSEG PFA_STOREI 0000f386
-ESEG EE_STOREI 00000078
-CSEG VE_DO_STOREI_NRWW 0000f389
-CSEG XT_DO_STOREI 0000f390
-CSEG PFA_DO_STOREI_NRWW 0000f391
-CSEG DO_STOREI_atmega 0000f3a5
-CSEG pageload 0000f3b6
-CSEG DO_STOREI_writepage 0000f3af
-CSEG dospm 0000f3d2
-EQU pagemask ffffff80
-CSEG pageload_loop 0000f3bc
-CSEG pageload_newdata 0000f3ca
-CSEG pageload_cont 0000f3cc
-CSEG pageload_done 0000f3d1
-CSEG dospm_wait_ee 0000f3d2
-CSEG dospm_wait_spm 0000f3d4
-CSEG VE_FETCHI 0000f3e0
-CSEG PFA_FETCHI 0000f3e4
-CSEG VE_N_TO_R 0000f3ed
-CSEG XT_N_TO_R 0000f3f1
-CSEG PFA_N_TO_R 0000f3f2
-CSEG PFA_N_TO_R1 0000f3f4
-CSEG VE_N_R_FROM 0000f3ff
-CSEG XT_N_R_FROM 0000f403
-CSEG PFA_N_R_FROM 0000f404
-CSEG PFA_N_R_FROM1 0000f409
-CSEG VE_D2STAR 0000f411
-CSEG XT_D2STAR 0000f415
-CSEG PFA_D2STAR 0000f416
-CSEG VE_D2SLASH 0000f41f
-CSEG XT_D2SLASH 0000f423
-CSEG PFA_D2SLASH 0000f424
-CSEG VE_DPLUS 0000f42d
-CSEG PFA_DPLUS 0000f431
-CSEG VE_DMINUS 0000f43e
-CSEG XT_DMINUS 0000f441
-CSEG PFA_DMINUS 0000f442
-CSEG VE_DINVERT 0000f450
-CSEG XT_DINVERT 0000f456
-CSEG PFA_DINVERT 0000f457
-CSEG VE_UDOT 0000f460
-CSEG PFA_UDOT 0000f464
-CSEG XT_UDDOT 0000f745
-CSEG VE_UDOTR 0000f467
-CSEG XT_UDOTR 0000f46b
-CSEG PFA_UDOTR 0000f46c
-CSEG XT_UDDOTR 0000f74e
-CSEG VE_SHOWWORDLIST 0000f470
-CSEG XT_SHOWWORDLIST 0000f479
-CSEG PFA_SHOWWORDLIST 0000f47a
-CSEG XT_SHOWWORD 0000f47f
-CSEG XT_TRAVERSEWORDLIST 0000fc72
-CSEG PFA_SHOWWORD 0000f480
-CSEG VE_WORDS 0000f485
-CSEG XT_WORDS 0000f48a
-CSEG PFA_WORDS 0000f48b
-CSEG VE_INTON 0000f490
-CSEG PFA_INTON 0000f495
-CSEG VE_INTOFF 0000f497
-CSEG XT_INTOFF 0000f49b
-CSEG PFA_INTOFF 0000f49c
-CSEG VE_INTSTORE 0000f49e
-CSEG PFA_INTSTORE 0000f4a3
-CSEG VE_INTFETCH 0000f4a8
-CSEG XT_INTFETCH 0000f4ac
-CSEG PFA_INTFETCH 0000f4ad
-CSEG VE_INTTRAP 0000f4b2
-CSEG XT_INTTRAP 0000f4b8
-CSEG PFA_INTTRAP 0000f4b9
-CSEG PFA_ISREXEC 0000f4be
-CSEG XT_ISREND 0000f4c2
-CSEG PFA_ISREND 0000f4c3
-CSEG PFA_ISREND1 0000f4c5
-CSEG VE_PICK 0000f4c6
-CSEG PFA_PICK 0000f4cb
-CSEG VE_DOTSTRING 0000f4d1
-CSEG XT_DOTSTRING 0000f4d4
-CSEG PFA_DOTSTRING 0000f4d5
-CSEG VE_SQUOTE 0000f4d9
-CSEG PFA_SQUOTE 0000f4dd
-CSEG PFA_SQUOTE1 0000f4e5
-CSEG VE_FILL 0000f4e6
-CSEG PFA_FILL 0000f4eb
-CSEG PFA_FILL2 0000f4f7
-CSEG PFA_FILL1 0000f4f2
-CSEG VE_ENVIRONMENT 0000f4f9
-CSEG XT_ENVIRONMENT 0000f501
-CSEG PFA_ENVIRONMENT 0000f502
-ESEG CFG_ENVIRONMENT 00000056
-CSEG VE_ENVWORDLISTS 0000f503
-CSEG XT_ENVWORDLISTS 0000f50a
-CSEG PFA_ENVWORDLISTS 0000f50b
-CSEG VE_ENVSLASHPAD 0000f50e
-CSEG XT_ENVSLASHPAD 0000f512
-CSEG PFA_ENVSLASHPAD 0000f513
-CSEG XT_PAD 0000f59f
-CSEG VE_ENVSLASHHOLD 0000f517
-CSEG XT_ENVSLASHHOLD 0000f51c
-CSEG PFA_ENVSLASHHOLD 0000f51d
-CSEG VE_ENV_FORTHNAME 0000f521
-CSEG XT_ENV_FORTHNAME 0000f528
-CSEG PFA_EN_FORTHNAME 0000f529
-CSEG VE_ENV_FORTHVERSION 0000f530
-CSEG XT_ENV_FORTHVERSION 0000f536
-CSEG PFA_EN_FORTHVERSION 0000f537
-CSEG VE_ENV_CPU 0000f53a
-CSEG XT_ENV_CPU 0000f53e
-CSEG PFA_EN_CPU 0000f53f
-CSEG XT_ICOUNT 0000f7e7
-CSEG VE_ENV_MCUINFO 0000f543
-CSEG XT_ENV_MCUINFO 0000f549
-CSEG PFA_EN_MCUINFO 0000f54a
-CSEG VE_ENVUSERSIZE 0000f54d
-CSEG XT_ENVUSERSIZE 0000f552
-CSEG PFA_ENVUSERSIZE 0000f553
-CSEG VE_F_CPU 0000f556
-CSEG PFA_F_CPU 0000f55c
-CSEG VE_STATE 0000f561
-CSEG PFA_STATE 0000f567
-DSEG ram_state 0000013d
-CSEG VE_BASE 0000f568
-CSEG XT_BASE 0000f56c
-CSEG PFA_BASE 0000f56d
-CSEG VE_CELLS 0000f56e
-CSEG VE_CELLPLUS 0000f574
-CSEG PFA_CELLPLUS 0000f57a
-CSEG VE_2DUP 0000f57c
-CSEG PFA_2DUP 0000f581
-CSEG VE_2DROP 0000f584
-CSEG PFA_2DROP 0000f58a
-CSEG VE_TUCK 0000f58d
-CSEG PFA_TUCK 0000f592
-CSEG VE_TO_IN 0000f595
-CSEG PFA_TO_IN 0000f59a
-CSEG VE_PAD 0000f59b
-CSEG PFA_PAD 0000f5a0
-CSEG VE_EMIT 0000f5a5
-CSEG XT_EMIT 0000f5a9
-CSEG PFA_EMIT 0000f5aa
-CSEG XT_UDEFERFETCH 0000fbf7
-CSEG XT_UDEFERSTORE 0000fc03
-CSEG VE_EMITQ 0000f5ad
-CSEG XT_EMITQ 0000f5b2
-CSEG PFA_EMITQ 0000f5b3
-CSEG VE_KEY 0000f5b6
-CSEG XT_KEY 0000f5ba
-CSEG PFA_KEY 0000f5bb
-CSEG VE_KEYQ 0000f5be
-CSEG XT_KEYQ 0000f5c2
-CSEG PFA_KEYQ 0000f5c3
-CSEG VE_DP 0000f5c6
-ESEG CFG_DP 00000048
-CSEG VE_EHERE 0000f5cd
-ESEG EE_EHERE 0000004c
-CSEG VE_HERE 0000f5d6
-CSEG PFA_HERE 0000f5db
-ESEG EE_HERE 0000004a
-CSEG VE_ALLOT 0000f5de
-CSEG PFA_ALLOT 0000f5e4
-CSEG VE_BIN 0000f5e9
-CSEG XT_BIN 0000f5ed
-CSEG PFA_BIN 0000f5ee
-CSEG VE_DECIMAL 0000f5f2
-CSEG PFA_DECIMAL 0000f5f9
-CSEG VE_HEX 0000f5fe
-CSEG XT_HEX 0000f602
-CSEG PFA_HEX 0000f603
-CSEG VE_BL 0000f608
-CSEG XT_BL 0000f60b
-CSEG PFA_BL 0000f60c
-CSEG VE_TURNKEY 0000f60d
-CSEG XT_TURNKEY 0000f613
-CSEG PFA_TURNKEY 0000f614
-ESEG CFG_TURNKEY 00000054
-CSEG VE_SLASHMOD 0000f617
-CSEG XT_SLASHMOD 0000f61b
-CSEG PFA_SLASHMOD 0000f61c
-CSEG PFA_SLASHMOD_1 0000f627
-CSEG PFA_SLASHMOD_2 0000f62d
-CSEG PFA_SLASHMOD_3 0000f630
-CSEG PFA_SLASHMOD_5 0000f63b
-CSEG PFA_SLASHMOD_4 0000f63a
-CSEG PFA_SLASHMODmod_done 0000f646
-CSEG PFA_SLASHMOD_6 0000f644
-CSEG VE_USLASHMOD 0000f64a
-CSEG XT_USLASHMOD 0000f64f
-CSEG PFA_USLASHMOD 0000f650
-CSEG VE_NEGATE 0000f655
-CSEG PFA_NEGATE 0000f65b
-CSEG VE_SLASH 0000f65e
-CSEG XT_SLASH 0000f661
-CSEG PFA_SLASH 0000f662
-CSEG VE_MOD 0000f665
-CSEG XT_MOD 0000f669
-CSEG PFA_MOD 0000f66a
-CSEG VE_ABS 0000f66d
-CSEG XT_ABS 0000f671
-CSEG PFA_ABS 0000f672
-CSEG VE_MIN 0000f675
-CSEG XT_MIN 0000f679
-CSEG PFA_MIN 0000f67a
-CSEG PFA_MIN1 0000f67f
-CSEG VE_MAX 0000f681
-CSEG XT_MAX 0000f685
-CSEG PFA_MAX 0000f686
-CSEG PFA_MAX1 0000f68b
-CSEG VE_WITHIN 0000f68d
-CSEG XT_WITHIN 0000f692
-CSEG PFA_WITHIN 0000f693
-CSEG VE_TOUPPER 0000f69a
-CSEG XT_TOUPPER 0000f6a0
-CSEG PFA_TOUPPER 0000f6a1
-CSEG PFA_TOUPPER0 0000f6ac
-CSEG VE_TOLOWER 0000f6ad
-CSEG XT_TOLOWER 0000f6b3
-CSEG PFA_TOLOWER 0000f6b4
-CSEG PFA_TOLOWER0 0000f6bf
-CSEG VE_HLD 0000f6c0
-CSEG XT_HLD 0000f6c4
-CSEG PFA_HLD 0000f6c5
-DSEG ram_hld 0000013f
-CSEG VE_HOLD 0000f6c6
-CSEG XT_HOLD 0000f6ca
-CSEG PFA_HOLD 0000f6cb
-CSEG VE_L_SHARP 0000f6d6
-CSEG XT_L_SHARP 0000f6d9
-CSEG PFA_L_SHARP 0000f6da
-CSEG VE_SHARP 0000f6de
-CSEG XT_SHARP 0000f6e1
-CSEG PFA_SHARP 0000f6e2
-CSEG XT_UDSLASHMOD 0000f75e
-CSEG PFA_SHARP1 0000f6ef
-CSEG VE_SHARP_S 0000f6f4
-CSEG XT_SHARP_S 0000f6f7
-CSEG PFA_SHARP_S 0000f6f8
-CSEG NUMS1 0000f6f8
-CSEG VE_SHARP_G 0000f6ff
-CSEG XT_SHARP_G 0000f702
-CSEG PFA_SHARP_G 0000f703
-CSEG VE_SIGN 0000f70a
-CSEG XT_SIGN 0000f70e
-CSEG PFA_SIGN 0000f70f
-CSEG PFA_SIGN1 0000f715
-CSEG VE_DDOTR 0000f716
-CSEG XT_DDOTR 0000f71a
-CSEG PFA_DDOTR 0000f71b
-CSEG XT_DABS 0000fcef
-CSEG XT_SPACES 0000f806
-CSEG XT_TYPE 0000f816
-CSEG VE_DOTR 0000f729
-CSEG XT_DOTR 0000f72c
-CSEG PFA_DOTR 0000f72d
-CSEG VE_DDOT 0000f732
-CSEG XT_DDOT 0000f735
-CSEG PFA_DDOT 0000f736
-CSEG VE_DOT 0000f73a
-CSEG PFA_DOT 0000f73e
-CSEG VE_UDDOT 0000f741
-CSEG PFA_UDDOT 0000f746
-CSEG VE_UDDOTR 0000f74a
-CSEG PFA_UDDOTR 0000f74f
-CSEG VE_UDSLASHMOD 0000f759
-CSEG PFA_UDSLASHMOD 0000f75f
-CSEG VE_DIGITQ 0000f769
-CSEG XT_DIGITQ 0000f76e
-CSEG PFA_DIGITQ 0000f76f
-CSEG PFA_DOSLITERAL 0000f789
-CSEG VE_SCOMMA 0000f793
-CSEG PFA_SCOMMA 0000f797
-CSEG PFA_DOSCOMMA 0000f79b
-CSEG PFA_SCOMMA2 0000f7ad
-CSEG PFA_SCOMMA1 0000f7a7
-CSEG PFA_SCOMMA3 0000f7b4
-CSEG VE_ITYPE 0000f7b6
-CSEG PFA_ITYPE 0000f7bc
-CSEG PFA_ITYPE2 0000f7cf
-CSEG PFA_ITYPE1 0000f7c7
-CSEG XT_LOWEMIT 0000f7dc
-CSEG XT_HIEMIT 0000f7d8
-CSEG PFA_ITYPE3 0000f7d6
-CSEG PFA_HIEMIT 0000f7d9
-CSEG PFA_LOWEMIT 0000f7dd
-CSEG VE_ICOUNT 0000f7e2
-CSEG PFA_ICOUNT 0000f7e8
-CSEG VE_CR 0000f7ed
-CSEG XT_CR 0000f7f0
-CSEG PFA_CR 0000f7f1
-CSEG VE_SPACE 0000f7f8
-CSEG PFA_SPACE 0000f7fe
-CSEG VE_SPACES 0000f801
-CSEG PFA_SPACES 0000f807
-CSEG SPCS1 0000f809
-CSEG SPCS2 0000f810
-CSEG VE_TYPE 0000f812
-CSEG PFA_TYPE 0000f817
-CSEG PFA_TYPE2 0000f821
-CSEG PFA_TYPE1 0000f81c
-CSEG VE_TICK 0000f822
-CSEG PFA_TICK 0000f826
-CSEG XT_DT_NULL 0000fb65
-CSEG XT_NOOP 0000fb9a
-CSEG PFA_TICK1 0000f837
-CSEG VE_HANDLER 0000f839
-CSEG XT_HANDLER 0000f83f
-CSEG PFA_HANDLER 0000f840
-CSEG VE_CATCH 0000f841
-CSEG XT_CATCH 0000f846
-CSEG PFA_CATCH 0000f847
-CSEG VE_THROW 0000f857
-CSEG PFA_THROW 0000f85d
-CSEG PFA_THROW1 0000f863
-CSEG VE_CSKIP 0000f870
-CSEG XT_CSKIP 0000f875
-CSEG PFA_CSKIP 0000f876
-CSEG PFA_CSKIP1 0000f877
-CSEG PFA_CSKIP2 0000f884
-CSEG XT_SLASHSTRING 0000f9c0
-CSEG VE_CSCAN 0000f887
-CSEG XT_CSCAN 0000f88c
-CSEG PFA_CSCAN 0000f88d
-CSEG PFA_CSCAN1 0000f88f
-CSEG PFA_CSCAN2 0000f8a1
-CSEG VE_ACCEPT 0000f8a7
-CSEG XT_ACCEPT 0000f8ac
-CSEG PFA_ACCEPT 0000f8ad
-CSEG ACC1 0000f8b1
-CSEG XT_CRLFQ 0000f8ed
-CSEG ACC5 0000f8df
-CSEG ACC3 0000f8cf
-CSEG ACC6 0000f8cd
-CSEG XT_BS 0000f8e5
-CSEG ACC4 0000f8dd
-CSEG PFA_ACCEPT6 0000f8d6
-CSEG VE_REFILL 0000f8f8
-CSEG XT_REFILL 0000f8fd
-CSEG PFA_REFILL 0000f8fe
-CSEG VE_CHAR 0000f901
-CSEG PFA_CHAR 0000f906
-CSEG VE_NUMBER 0000f90a
-CSEG XT_NUMBER 0000f90f
-CSEG PFA_NUMBER 0000f910
-CSEG XT_QSIGN 0000f953
-CSEG XT_SET_BASE 0000f966
-CSEG PFA_NUMBER0 0000f926
-CSEG XT_TO_NUMBER 0000f984
-CSEG PFA_NUMBER1 0000f948
-CSEG PFA_NUMBER2 0000f93f
-CSEG PFA_NUMBER6 0000f940
-CSEG PFA_NUMBER3 0000f93c
-CSEG XT_DNEGATE 0000fcfc
-CSEG PFA_NUMBER5 0000f94e
-CSEG PFA_NUMBER4 0000f94d
-CSEG PFA_QSIGN 0000f954
-CSEG PFA_NUMBERSIGN_DONE 0000f95f
-CSEG XT_BASES 0000f961
-CSEG PFA_SET_BASE 0000f967
-CSEG SET_BASE1 0000f97c
-CSEG SET_BASE2 0000f97d
-CSEG VE_TO_NUMBER 0000f97e
-CSEG TONUM1 0000f985
-CSEG TONUM3 0000f99c
-CSEG TONUM2 0000f990
-CSEG XT_2SWAP 0000fd20
-CSEG VE_PARSE 0000f99d
-CSEG PFA_PARSE 0000f9a3
-CSEG VE_SOURCE 0000f9b1
-CSEG PFA_SOURCE 0000f9b7
-CSEG VE_SLASHSTRING 0000f9ba
-CSEG PFA_SLASHSTRING 0000f9c1
-CSEG VE_PARSENAME 0000f9c8
-CSEG PFA_PARSENAME 0000f9d0
-CSEG XT_SKIPSCANCHAR 0000f9d3
-CSEG PFA_SKIPSCANCHAR 0000f9d4
-CSEG VE_FINDXT 0000f9e5
-CSEG XT_FINDXT 0000f9eb
-CSEG PFA_FINDXT 0000f9ec
-CSEG XT_FINDXTA 0000f9f7
-CSEG PFA_FINDXT1 0000f9f6
-CSEG PFA_FINDXTA 0000f9f8
-CSEG XT_SEARCH_WORDLIST 0000fc40
-CSEG PFA_FINDXTA1 0000fa04
-CSEG XT_DEFAULT_PROMPTOK 0000fa05
-CSEG PFA_DEFAULT_PROMPTOK 0000fa06
-CSEG VE_PROMPTOK 0000fa0c
-CSEG XT_PROMPTOK 0000fa10
-CSEG PFA_PROMPTOK 0000fa11
-CSEG XT_DEFAULT_PROMPTREADY 0000fa14
-CSEG PFA_DEFAULT_PROMPTREADY 0000fa15
-CSEG VE_PROMPTREADY 0000fa1b
-CSEG XT_PROMPTREADY 0000fa20
-CSEG PFA_PROMPTREADY 0000fa21
-CSEG XT_DEFAULT_PROMPTERROR 0000fa24
-CSEG PFA_DEFAULT_PROMPTERROR 0000fa25
-CSEG VE_PROMPTERROR 0000fa36
-CSEG XT_PROMPTERROR 0000fa3b
-CSEG PFA_PROMPTERROR 0000fa3c
-CSEG VE_QUIT 0000fa3f
-CSEG XT_QUIT 0000fa43
-CSEG PFA_QUIT 0000fa44
-CSEG XT_SP0 0000faa4
-CSEG XT_RP0 0000fab1
-CSEG PFA_QUIT2 0000fa4c
-CSEG PFA_QUIT4 0000fa52
-CSEG PFA_QUIT3 0000fa64
-CSEG XT_INTERPRET 0000faca
-CSEG PFA_QUIT5 0000fa62
-CSEG VE_PAUSE 0000fa67
-CSEG PFA_PAUSE 0000fa6d
-DSEG ram_pause 00000141
-CSEG XT_RDEFERFETCH 0000fbe3
-CSEG XT_RDEFERSTORE 0000fbed
-CSEG VE_COLD 0000fa70
-CSEG clearloop 0000fa7c
-DSEG ram_user1 00000143
-CSEG PFA_WARM 0000fa97
-CSEG VE_WARM 0000fa92
-CSEG XT_WARM 0000fa96
-CSEG XT_INIT_RAM 0000fd6b
-CSEG XT_DEFERSTORE 0000fc0e
-CSEG VE_SP0 0000faa0
-CSEG PFA_SP0 0000faa5
-CSEG VE_SP 0000faa8
-CSEG XT_SP 0000faab
-CSEG PFA_SP 0000faac
-CSEG VE_RP0 0000faad
-CSEG PFA_RP0 0000fab2
-CSEG XT_DORP0 0000fab5
-CSEG PFA_DORP0 0000fab6
-CSEG VE_DEPTH 0000fab7
-CSEG PFA_DEPTH 0000fabd
-CSEG VE_INTERPRET 0000fac3
-CSEG PFA_INTERPRET 0000facb
-CSEG PFA_INTERPRET2 0000fadb
-CSEG PFA_INTERPRET1 0000fad6
-CSEG VE_FORTHRECOGNIZER 0000fadd
-CSEG PFA_FORTHRECOGNIZER 0000fae8
-ESEG CFG_FORTHRECOGNIZER 00000050
-CSEG VE_RECOGNIZE 0000faeb
-CSEG PFA_RECOGNIZE 0000faf3
-CSEG XT_RECOGNIZE_A 0000fafd
-CSEG PFA_RECOGNIZE1 0000fafc
-CSEG PFA_RECOGNIZE_A 0000fafe
-CSEG PFA_RECOGNIZE_A1 0000fb0e
-CSEG VE_DT_NUM 0000fb12
-CSEG XT_DT_NUM 0000fb17
-CSEG PFA_DT_NUM 0000fb18
-CSEG VE_DT_DNUM 0000fb1b
-CSEG XT_DT_DNUM 0000fb21
-CSEG PFA_DT_DNUM 0000fb22
-CSEG XT_2LITERAL 0000fd92
-CSEG VE_REC_NUM 0000fb25
-CSEG XT_REC_NUM 0000fb2b
-CSEG PFA_REC_NUM 0000fb2c
-CSEG PFA_REC_NONUMBER 0000fb37
-CSEG PFA_REC_INTNUM2 0000fb35
-CSEG VE_REC_FIND 0000fb39
-CSEG XT_REC_FIND 0000fb3f
-CSEG PFA_REC_FIND 0000fb40
-CSEG PFA_REC_WORD_FOUND 0000fb48
-CSEG XT_DT_XT 0000fb4f
-CSEG VE_DT_XT 0000fb4a
-CSEG PFA_DT_XT 0000fb50
-CSEG XT_R_WORD_INTERPRET 0000fb53
-CSEG XT_R_WORD_COMPILE 0000fb57
-CSEG PFA_R_WORD_INTERPRET 0000fb54
-CSEG PFA_R_WORD_COMPILE 0000fb58
-CSEG PFA_R_WORD_COMPILE1 0000fb5d
-CSEG VE_DT_NULL 0000fb5f
-CSEG PFA_DT_NULL 0000fb66
-CSEG XT_FAIL 0000fb69
-CSEG PFA_FAIL 0000fb6a
-CSEG VE_QSTACK 0000fb6d
-CSEG PFA_QSTACK 0000fb73
-CSEG PFA_QSTACK1 0000fb7a
-CSEG VE_DOT_VER 0000fb7b
-CSEG PFA_DOT_VER 0000fb80
-CSEG VE_NOOP 0000fb96
-CSEG PFA_NOOP 0000fb9b
-CSEG VE_UNUSED 0000fb9c
-CSEG XT_UNUSED 0000fba1
-CSEG PFA_UNUSED 0000fba2
-CSEG VE_TO 0000fba6
-CSEG XT_TO 0000fba9
-CSEG PFA_TO 0000fbaa
-CSEG XT_TO_BODY 0000fd8b
-CSEG PFA_TO1 0000fbba
-CSEG PFA_DOTO 0000fbb5
-CSEG VE_ICELLPLUS 0000fbc0
-CSEG PFA_ICELLPLUS 0000fbc7
-CSEG VE_EDEFERFETCH 0000fbc9
-CSEG PFA_EDEFERFETCH 0000fbd0
-CSEG VE_EDEFERSTORE 0000fbd3
-CSEG PFA_EDEFERSTORE 0000fbda
-CSEG VE_RDEFERFETCH 0000fbdd
-CSEG PFA_RDEFERFETCH 0000fbe4
-CSEG VE_RDEFERSTORE 0000fbe7
-CSEG PFA_RDEFERSTORE 0000fbee
-CSEG VE_UDEFERFETCH 0000fbf1
-CSEG PFA_UDEFERFETCH 0000fbf8
-CSEG VE_UDEFERSTORE 0000fbfd
-CSEG PFA_UDEFERSTORE 0000fc04
-CSEG VE_DEFERSTORE 0000fc09
-CSEG PFA_DEFERSTORE 0000fc0f
-CSEG VE_DEFERFETCH 0000fc16
-CSEG XT_DEFERFETCH 0000fc1b
-CSEG PFA_DEFERFETCH 0000fc1c
-CSEG VE_DODEFER 0000fc22
-CSEG XT_DODEFER 0000fc28
-CSEG PFA_DODEFER 0000fc29
-CSEG VE_SEARCH_WORDLIST 0000fc36
-CSEG PFA_SEARCH_WORDLIST 0000fc41
-CSEG XT_ISWORD 0000fc55
-CSEG PFA_SEARCH_WORDLIST1 0000fc4f
-CSEG PFA_ISWORD 0000fc56
-CSEG XT_ICOMPARE 0000fca3
-CSEG PFA_ISWORD3 0000fc63
-CSEG VE_TRAVERSEWORDLIST 0000fc67
-CSEG PFA_TRAVERSEWORDLIST 0000fc73
-CSEG PFA_TRAVERSEWORDLIST1 0000fc74
-CSEG PFA_TRAVERSEWORDLIST2 0000fc83
-CSEG VE_NAME2STRING 0000fc85
-CSEG PFA_NAME2STRING 0000fc8e
-CSEG VE_NFA2CFA 0000fc93
-CSEG PFA_NFA2CFA 0000fc9a
-CSEG VE_ICOMPARE 0000fc9d
-CSEG PFA_ICOMPARE 0000fca4
-CSEG PFA_ICOMPARE_SAMELEN 0000fcae
-CSEG PFA_ICOMPARE_DONE 0000fcd1
-CSEG PFA_ICOMPARE_LOOP 0000fcb4
-CSEG PFA_ICOMPARE_LASTCELL 0000fcc2
-CSEG PFA_ICOMPARE_NEXTLOOP 0000fcc9
-CSEG VE_STAR 0000fcd4
-CSEG XT_STAR 0000fcd7
-CSEG PFA_STAR 0000fcd8
-CSEG VE_J 0000fcdb
-CSEG XT_J 0000fcde
-CSEG PFA_J 0000fcdf
-CSEG VE_DABS 0000fceb
-CSEG PFA_DABS 0000fcf0
-CSEG PFA_DABS1 0000fcf5
-CSEG VE_DNEGATE 0000fcf6
-CSEG PFA_DNEGATE 0000fcfd
-CSEG VE_CMOVE 0000fd02
-CSEG XT_CMOVE 0000fd07
-CSEG PFA_CMOVE 0000fd08
-CSEG PFA_CMOVE1 0000fd15
-CSEG PFA_CMOVE2 0000fd11
-CSEG VE_2SWAP 0000fd1b
-CSEG PFA_2SWAP 0000fd21
-CSEG VE_REFILLTIB 0000fd26
-CSEG XT_REFILLTIB 0000fd2d
-CSEG PFA_REFILLTIB 0000fd2e
-CSEG XT_TIB 0000fd49
-CSEG XT_NUMBERTIB 0000fd4f
-CSEG VE_SOURCETIB 0000fd39
-CSEG XT_SOURCETIB 0000fd40
-CSEG PFA_SOURCETIB 0000fd41
-CSEG VE_TIB 0000fd45
-CSEG PFA_TIB 0000fd4a
-DSEG ram_tib 0000016f
-CSEG VE_NUMBERTIB 0000fd4b
-CSEG PFA_NUMBERTIB 0000fd50
-DSEG ram_sharptib 000001c9
-CSEG VE_EE2RAM 0000fd51
-CSEG XT_EE2RAM 0000fd56
-CSEG PFA_EE2RAM 0000fd57
-CSEG PFA_EE2RAM_1 0000fd59
-CSEG PFA_EE2RAM_2 0000fd63
-CSEG VE_INIT_RAM 0000fd65
-CSEG PFA_INI_RAM 0000fd6c
-ESEG EE_INITUSER 0000007c
-CSEG VE_BOUNDS 0000fd74
-CSEG PFA_BOUNDS 0000fd7a
-CSEG VE_S2D 0000fd7e
-CSEG PFA_S2D 0000fd83
-CSEG VE_TO_BODY 0000fd86
-CSEG VE_2LITERAL 0000fd8c
-CSEG PFA_2LITERAL 0000fd93
-CSEG VE_EQUAL 0000fd97
-CSEG PFA_EQUAL 0000fd9b
-CSEG VE_ONE 0000fd9e
-CSEG PFA_ONE 0000fda2
-CSEG VE_TWO 0000fda3
-CSEG PFA_TWO 0000fda7
-CSEG VE_MINUSONE 0000fda8
-CSEG XT_MINUSONE 0000fdab
-CSEG PFA_MINUSONE 0000fdac
-SET flashlast 0000fdad
-DSEG HERESTART 000001cb
-ESEG EHERESTART 000000a0
-ESEG CFG_ORDERLIST 0000005e
-ESEG CFG_RECOGNIZERLIST 00000070
-EQU UBRR_VAL 00000019
-EQU BAUD_REAL 0000963d
-EQU BAUD_ERROR 00000001
diff --git a/amforth-6.5/appl/eval-pollin/p1284-16.xml b/amforth-6.5/appl/eval-pollin/p1284-16.xml
deleted file mode 100644
index b712290..0000000
--- a/amforth-6.5/appl/eval-pollin/p1284-16.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<project name="pollins-1284-16" basedir="." default="Help">
- <target name="p1284-16.asm">
- <copy tofile="p1284-16.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="16000000"/>
- <filter token="USART" value="_0"/>
- </filterset>
- </copy>
- </target>
-
- <target name="p1284-16.hex" depends="p1284-16.asm" description="Hexfiles for p1284-16">
- <avrasm2 projectname="p1284-16" mcu="atmega1284p"/>
- <delete file="p1284-16.asm"/>
- </target>
-
- <target name="p1284-16" depends="p1284-16.hex" description="Atmega1284 @ 16 MHz">
- <echo>Uploading Hexfiles for p1284 - 16</echo>
- <avrdude
- type="stk200"
- mcu="atmega1284p"
- flashfile="p1284-16.hex"
- eepromfile="p1284-16.eep.hex"
- />
- </target>
- <target name="p1284-16.fuses" description="Set fuses for P16-8">
- <echo>Writing fuses</echo>
- <avrdude-3fuses
- type="${programmer}"
- mcu="${mcu}"
- efuse="0xff"
- hfuse="0x99"
- lfuse="0xc6"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p16-8.eep.hex b/amforth-6.5/appl/eval-pollin/p16-8.eep.hex
deleted file mode 100644
index c6b7ad6..0000000
--- a/amforth-6.5/appl/eval-pollin/p16-8.eep.hex
+++ /dev/null
@@ -1,7 +0,0 @@
-:10002A00FFFF020F1D018400150552001004540E33
-:0A003A00B7053E00EE1F01003E0076
-:060052000200AB0B970B4E
-:10005C007E1F5E00000000005F040F040F04000010
-:10006C000A009800A6006D008800AC0D0000990DE8
-:08007C00990AB80AA80A0C0059
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p16-8.hex b/amforth-6.5/appl/eval-pollin/p16-8.hex
deleted file mode 100644
index c9756f7..0000000
--- a/amforth-6.5/appl/eval-pollin/p16-8.hex
+++ /dev/null
@@ -1,625 +0,0 @@
-:020000020000FC
-:020004001BD10E
-:0200080019D10C
-:02000C0017D10A
-:0200100015D108
-:0200140013D106
-:0200180011D104
-:02001C000FD102
-:020020000DD100
-:020024000BD1FE
-:0200280009D1FC
-:02002C0007D1FA
-:0200300005D1F8
-:0200340003D1F6
-:0200380001D1F4
-:02003C00FFD0F3
-:02004000FDD0F1
-:02004400FBD0EF
-:02004800F9D0ED
-:02004C00F7D0EB
-:10005000F5D00004000200381500080041546D6519
-:100060006761313607FF3E72782D627566000000C9
-:100070003900082F10917000E0E6F0E0E10FF31D69
-:10008000008313951F7010937000899199910C94BF
-:10009000051C06FF6973722D72783200011C3D1C2D
-:1000A0002C00981CB11C3D1C0300E01F361C59009D
-:1000B000E00A3800201C011C3D1C4E003D1C1600AF
-:1000C00013023D1C60003D1C1600541D5D02201CE7
-:1000D00006FF72782D6275664900011C8800361C87
-:1000E0006E003D1C7100981CB11C3D1C60009D1DE4
-:1000F000981CC41C2F1E3D1C0F00131E3D1C7100BC
-:100100008D1C201C07FF72783F2D62756600680009
-:10011000011CD80A3D1C7100981C3D1C7000981CE5
-:10012000131D201C07FF74782D706F6C6C0082000B
-:10013000011CA600361C99003D1C2C008D1C201CA7
-:1001400008FF74783F2D706F6C6C9200011CD80A08
-:100150003D1C2B00981C3D1C2000131E201C04FF7E
-:1001600075627272A0006F1C82003B0C450C06FF8A
-:100170002B7573617274AF00011C3D1C98003D1C0F
-:100180002A008D1C3D1C06003D1CC0008D1CB300C8
-:10019000B11CF91E3D1C40008D1C3D1C29008D1C0E
-:1001A0005B00201C08FF31772E7265736574B70001
-:1001B000D9009A938A93BC9AC498E0ECF3E0319703
-:1001C000F1F71FB7F894C49ABC98E0E8F0E03197D3
-:1001D000F1F786B384FF9FEF1FBFBC98C498E0E49B
-:1001E000F3E03197F1F7892F0C94051C07FF317765
-:1001F0002E736C6F7400D200FD00C498BC9A1FB7B8
-:10020000F894ECE0F0E03197F1F78894879510F4DA
-:10021000C49ABC98E2E1F0E03197F1F706B304FD2F
-:100220008068E6E6F0E03197F1F7C49ABC98E4E024
-:0C023000F0E03197F1F71FBF0C94051CA3
-:040000000C94E10A71
-:10023C000A920FB60A920F900F900A94B02CFF936B
-:10024C00EF93E2E7F0E00694E00DF31D00800394D9
-:10025C000082EF91FF9109900FBE0990089502FF63
-:10026C006D2BF600011CEE0D9C01201C03FF756428
-:10027C002A003501011CB11CFF1CE01DD91CC41C3B
-:10028C00F61CE01DE11C9D1D201C04FF756D6178A2
-:10029C003C01011CEB055C1D361C5501C41CD91C12
-:1002AC00201C04FF756D696E4B01011CEB05671D6D
-:1002BC00361C6101C41CD91C201C011C3D1C008077
-:1002CC00131E1A1D361C6C01E71F201C4B1D201C15
-:1002DC000AFF6E616D653E666C6167735701011CA8
-:1002EC00CB1F3D1C00FF131E201C03FF64322A0091
-:1002FC006E01800109911991000F111F881F991F20
-:10030C001A930A930C94051C03FF64322F007B0193
-:10031C008F010991199195958795179507951A93C2
-:10032C000A930C94051C02FF642B8A019D012991F0
-:10033C003991E990F99049915991240F351F8E1DEF
-:10034C009F1D3A932A930C94051C02FF642D99016E
-:10035C00AF0129913991E990F99049915991421B3A
-:10036C00530BE80AF90A5A934A93C7010C94051CDB
-:10037C0007FF64696E7665727400AB01C501099163
-:10038C00199180959095009510951A930A930C9459
-:10039C00051C02FF752EBE01011C541DB107201C4B
-:1003AC0003FF752E7200CF01011C541DC41CBA072B
-:1003BC00201C0DFF73686F772D776F72646C6973F7
-:1003CC007400D601011C3D1CEE01C41CDE0C201C6B
-:1003DC00011CF90C270869084B1D201C05FF776FC1
-:1003EC0072647300DF01011C3D1C42005F1FE801B9
-:1003FC00201C04FF2B696E74F401040278940C9495
-:10040C00051C04FF2D696E74FF010C02F8940C940A
-:10041C00051C04FF696E74210702011C3D1C0000C1
-:10042C009D1D3B1F201C04FF696E74400F02011CB4
-:10043C003D1C00009D1D5F1F201C08FF696E742D64
-:10044C007472617019022A02B82E899199910C94D8
-:10045C00051C011C1D022A1C3402201C350202D072
-:10046C000C94051C189504FF7069636B2302011C26
-:10047C002F1EDD058D1E9D1D791C201C02002E22B9
-:10048C003902011C4F02A3022708201C0200732210
-:10049C004402011C3D1C22000E0AD005791C361C9E
-:1004AC005802CF02201C04FF66696C6C4C02011CC4
-:1004BC00E11CE11CB91C361C6A02E50D9B1EB11C2B
-:1004CC00AC1E8D1CC91E6502D91C201C06FF6E6556
-:1004DC00776573745902481C870006FF6C6174655C
-:1004EC0073746C02481C8B0008FF2863726561747E
-:1004FC0065297302011C3B0AD703B11C7102E30589
-:10050C00811CBC037102811C201C01005C007A025E
-:10051C00011C220AF01C0406811C201C010028006E
-:10052C008B02011C3D1C29000E0AF405201C07FF40
-:10053C00636F6D70696C65009402011CF61CB11C34
-:10054C00320CFF1CCB1FAE02201C01FF2C009D02A5
-:10055C00011C3406731F34062F1E200C3506201C7C
-:10056C0003005B275D00AB02011C9108C402201C38
-:10057C0007006C69746572616C00B602011CA30201
-:10058C003D1CAE02201C0800736C69746572616CB2
-:10059C00BE02011CA302F4070208201C011C340635
-:1005AC00A302FFFF201C011CDE0B3406C41C731FAE
-:1005BC00201C011C3406201C011CDE0BAE02201C6E
-:1005CC000500616865616400C902011CA3022F1C4F
-:1005DC00D402201C02006966E602011CA302361C30
-:1005EC00D402201C0400656C7365F002011CA3028C
-:1005FC002F1CD402C41CD902201C04007468656E24
-:10060C00F802011CD902201C0500626567696E00A6
-:10061C000303011CDF02201C05007768696C650070
-:10062C000A03011CF302C41C201C060072657065D1
-:10063C0061741203011C34030703201C0500756E42
-:10064C0074696C001B03011C3D1C361CAE02E202DB
-:10065C00201C0500616761696E002403011CA30264
-:10066C002F1CE202201C0200646F2F03011CA3024A
-:10067C009B1EDF02541D9703201C04006C6F6F70CF
-:10068C003903011CA302C91E7E03201C05002B6C20
-:10069C006F6F70004303011CA302BA1E7E03201C63
-:1006AC0005006C65617665004C03011CA302D41E29
-:1006BC00EB029703201C03003F646F005603011CE0
-:1006CC00A3026D03F3023C03C41C9703201C011C02
-:1006DC00EB05E01FB11CFF1C361C7503F405F61C62
-:1006EC00FD1D201C07FF656E646C6F6F700061034D
-:1006FC00011CE2028B03B91C361C870307032F1C59
-:10070C008003201C02FF6C3E7803011CAA03791C99
-:10071C00791C3D1CFEFFAA03651E201C02FF3E6CCB
-:10072C008803011CEC1FAA03651EAA03791C811CFB
-:10073C00201C03FF6C70300094036F1C36003B0CC4
-:10074C00450C02FF6C709F03481C8D0006FF637202
-:10075C0065617465A703011C8002E003A302521CAF
-:10076C00201C06FF686561646572AC03011C3406CD
-:10077C00FF1CFF1CB11C281D361CCE03B11C3D1CDC
-:10078C0000FF1C1E0608F61C5F1FAE02F61C201C88
-:10079C003D1CF0FFC80807FF776C73636F70650032
-:1007AC00B7039A0C32003B0C450C06FF726576655C
-:1007BC00616CD103011C7102E305791CB91C361C58
-:1007CC00EB037102791CC41C3B1F201C0500646FD9
-:1007DC0065733E00DB03011CA3020404A3020E9408
-:1007EC00A302F903201C9A938A93CB0101967F9163
-:1007FC006F91BF93AF93DB010C94051C011CF61C8D
-:10080C007102E305791C5F1F050D731F201C01FF8E
-:10081C003A00EC03011C80021B04D91C201C07FFAE
-:10082C003A6E6F6E616D65000D04011C3406B11CCF
-:10083C007802811CA302011C3004201C01003B0027
-:10084C001504011CA302201C3804E003201C01FF2A
-:10085C005D002404011CE71FD005811C201C010035
-:10086C005B002D04011C541DD005811C201C08FFAD
-:10087C007661726961626C653504011C45064F0432
-:10088C00EC1F4E06201C08FF636F6E7374616E7450
-:10089C003D04011C8002E003A302481CAE02201C94
-:1008AC0004FF757365724904011C8002E003A30206
-:1008BC00581CAE02201C07007265637572736500CC
-:1008CC005604011C7802791CAE02201C09FF696DCC
-:1008DC006D656469617465006104011C15055F1F19
-:1008EC00B11CCB1F3D1CFF7F131EC41C731F201C8F
-:1008FC0006005B636861725D6C04011CA3023D1C05
-:10090C007109AE02201C060061626F7274227E04B3
-:10091C00011C4F02A302A004201C05FF61626F7230
-:10092C0074008904011C4B1DC80806FF3F61626FEF
-:10093C0072749304011CE11C361CA604270898044D
-:10094C00F405201C09FF6765742D737461636B00DB
-:10095C009B04011CB11CE305C41C5F1FB11CFF1CD4
-:10096C00541DC41C6D03361CC6049B1EAC1E351EC8
-:10097C00DD05CF1C9D1D5F1FC41C4B1DBA1EBC0486
-:10098C00F405F61C201C09FF7365742D73746163E8
-:10099C006B00A804011CCF1C211D361CD8043D1C67
-:1009AC00FCFFC808EB053B1FC41C541D6D03361C13
-:1009BC00E5049B1EE305FC053B1FC91EE004D91C86
-:1009CC00201C09FF6D61702D737461636B00C90489
-:1009DC00011CB11CE305C41C5F1FDD05E50D6D0397
-:1009EC00361C0A059B1EAC1E5F1FC41CFF1C081D79
-:1009FC002A1CB91C361C0605F61CD91CD41E201C3E
-:100A0C00F61CEC1FBA1EF904D91C541D201C0BFF3C
-:100A1C006765742D63757272656E7400E704011C52
-:100A2C003D1C3C005F1F201C09FF6765742D6F7215
-:100A3C00646572000D05011C3D1C4000AF04201CB8
-:100A4C0009FF6366672D6F72646572001A05481C96
-:100A5C00400007FF636F6D706172650026053605F7
-:100A6C00BF93AF938C0189919991DC0189919991F4
-:100A7C009C0189919991FC01ED90F190EF1451F446
-:100A8C000A9519F02A95C1F701C02A95022B11F489
-:100A9C00882702C08FEF00C0982FAF91BF910C94A4
-:100AAC00051C07FF6E66613E6C6661002F05011C1C
-:100ABC00F90C2F1E041E9D1D201C0BFF656E766904
-:100ACC00726F6E6D656E74005705481C3A0009FF15
-:100ADC00776F72646C69737473000000011C3D1CA9
-:100AEC000800201C04FF2F7061646D05011C8D1E15
-:100AFC000A06931D201C05FF2F686F6C6400780597
-:100B0C00011C0A064506931D201C0AFF666F7274B1
-:100B1C00682D6E616D658105011CF4070700616D20
-:100B2C00666F72746800201C07FF76657273696FBC
-:100B3C006E008B05011C3D1C4100201C03FF6370E3
-:100B4C0075009A05011C3D1C2D005308201C08FF44
-:100B5C006D63752D696E666FA405011C3D1C290023
-:100B6C00201C05FF2F7573657200AD05011C3D1C23
-:100B7C002C00201C05FF665F637075006305011C6B
-:100B8C003D1C00123D1C7A00201C05FF737461741F
-:100B9C006500C005481C8F0004FF62617365CB05BE
-:100BAC00581C0C0005FF63656C6C7300D2050C1EA1
-:100BBC0005FF63656C6C2B00D805E40502960C945C
-:100BCC00051C04FF32647570DE05011CCF1CCF1CA4
-:100BDC00201C05FF3264726F7000E705011CD91CE4
-:100BEC00D91C201C04FF7475636BEF05011CC41C1D
-:100BFC00CF1C201C03FF3E696E00F805581C180022
-:100C0C0003FF706164000006011C45063D1C2800B2
-:100C1C009D1D201C04FF656D697406069A0C0E0060
-:100C2C00630C6F0C05FF656D69743F0010069A0C20
-:100C3C001000630C6F0C03FF6B65790018069A0C9F
-:100C4C001200630C6F0C04FF6B65793F21069A0C44
-:100C5C001400630C6F0C02FF647029066F1C2C00CF
-:100C6C003B0C450C05FF65686572650031066F1C11
-:100C7C0030003B0C450C04FF6865726538066F1C30
-:100C8C002E003B0C450C05FF616C6C6F740041062B
-:100C9C00011C45069D1D200C4606201C03FF6269A5
-:100CAC006E004906011CEC1FD605811C201C07FF99
-:100CBC00646563696D616C005406011C3D1C0A007F
-:100CCC00D605811C201C03FF686578005D06011C9D
-:100CDC003D1C1000D605811C201C02FF626C6906AD
-:100CEC00481C200007FF7475726E6B6579007306E3
-:100CFC009A0C38003B0C450C04FF2F6D6F64780682
-:100D0C0087069C0109911991412F432717FF04C0B5
-:100D1C00109500950F5F1F4F37FF04C0309520953D
-:100D2C002F5F3F4FEE24FF1851E1001F111F5A9502
-:100D3C0039F447FF04C0109500950F5F1F4F0BC08F
-:100D4C00EE1CFF1CE21AF30A20F4E20EF31E889448
-:100D5C00ECCF0894EACFFA92EA92C8010C94051CE5
-:100D6C0005FF752F6D6F64008206011CFF1C541D5E
-:100D7C00F61CC21D201C06FF6E6567617465B60605
-:100D8C00011CFD1D2F1E201C01FF2F00C106011C84
-:100D9C008606F01C201C03FF6D6F6400CA06011C44
-:100DAC008606D91C201C03FF61627300D106011C4E
-:100DBC00B11C3E1E201C03FF6D696E00D906011C80
-:100DCC00EB05781D361CEB06C41CD91C201C03FF3C
-:100DDC006D617800E106011CEB056E1D361CF706F3
-:100DEC00C41CD91C201C06FF77697468696EED065B
-:100DFC00011CCF1C931DFF1C931DF61C5C1D201C9D
-:100E0C0007FF746F757070657200F906011CB11CD8
-:100E1C003D1C61003D1C7B00FE06361C18073D1C6A
-:100E2C00DF00131E201C07FF746F6C6F7765720058
-:100E3C000607011CB11C3D1C41003D1C5B00FE065D
-:100E4C00361C2B073D1C20001C1E201C03FF686C4D
-:100E5C0064001907481C910004FF686F6C642C0730
-:100E6C00011C3007B11C791C351EB11CFF1CC41CA5
-:100E7C00811CF61C8D1C201C02FF3C233207011C1C
-:100E8C000A063007811C201C01FF23004207011CAD
-:100E9C00D605791CCA07E11C3D1C0900CF1C6E1D30
-:100EAC00361C5B073D1C07009D1D3D1C30009D1D25
-:100EBC003607201C02FF23734A07011C4D07EB0564
-:100ECC001C1E1A1D361C6407201C02FF233E6007E3
-:100EDC00011CF4053007791C0A06CF1C931D201C3D
-:100EEC0004FF7369676E6B07011C211D361C81079B
-:100EFC003D1C2D003607201C03FF642E7200760764
-:100F0C00011CFF1CFC055B0D45076307E11C7A0700
-:100F1C006E07F61CCF1C931D72088208201C02FF62
-:100F2C002E728207011CFF1CEE0DF61C8607201C7E
-:100F3C0002FF642E9507011C541D86076908201CAE
-:100F4C0001FF2E009E07011CEE0DA107201C03FFC4
-:100F5C0075642E00A607011C541DBA076908201CD5
-:100F6C0004FF75642E72AD07011CFF1C4507630757
-:100F7C006E07F61CCF1C931D72088208201C06FFFE
-:100F8C0075642F6D6F64B607011CFF1C541D081D82
-:100F9C00C21DF61CC41CFF1CC21DF61C201C06FF27
-:100FAC0064696769743FC507011C0C07B11C3D1CC3
-:100FBC003900781D3D1C0001131E9D1DB11C3D1CEC
-:100FCC004001781D3D1C0701131E931D3D1C300074
-:100FDC00931DB11CD605791C5C1D201C011C081D21
-:100FEC005308F61CCF1C2F1E041E9D1D2F1EFF1C0C
-:100FFC00201C02FF732CD507011CB11C0608201CF9
-:10100C00011CAE02B11C041EFC050B1E931DFF1C23
-:10101C00541D6D03361C19089B1EB11C791CAE02A5
-:10102C00E305C91E1308F61C281D361C2008B11C2C
-:10103C00981CAE02D91C201C05FF697479706500E0
-:10104C00FF07011CB11C041EFC050B1E931DFF1C8D
-:10105C00541D6D03361C3B089B1EB11CCB1FB11CD1
-:10106C00480844082F1EC91E3308F61C281D361CC0
-:10107C004208B11CCB1F4808D91C201C011CF91EAE
-:10108C004808201C011C3D1CFF00131E1406201CCC
-:10109C0006FF69636F756E742208011CB11C2F1E4C
-:1010AC00C41CCB1F201C02FF63724E08011C3D1C8C
-:1010BC000D0014063D1C0A001406201C05FF73705D
-:1010CC00616365005908011C76061406201C06FF96
-:1010DC007370616365736408011C541DF106B11CC7
-:1010EC00361C7C086908351E2F1C7508D91C201C61
-:1010FC0004FF747970656D08011CE50D6D03361CD9
-:10110C008D089B1EAC1E981C1406C91E8808201C3A
-:10111C0001FF27007E08011C3B0A600B360BB11C3B
-:10112C00D10BE01FC41CCB1F3D1C060CE01F1C1E6A
-:10113C00361CA3083D1CF3FFC808D91C201C07FF54
-:10114C0068616E646C6572008E08581C0A0005FF9D
-:10115C00636174636800A508011C8D1EFF1CAB083D
-:10116C00791CFF1C761EAB08811C2A1CF61CAB08D4
-:10117C00811CF61CD91C541D201C05FF7468726F51
-:10118C007700AD08011CB11C1A1D361CCF08D91CE8
-:10119C00201CAB08791C801EF61CAB08811CF61CAD
-:1011AC00C41CFF1C961ED91CF61C201C05FF637367
-:1011BC006B697000C308011CFF1CB11C361CF008C5
-:1011CC00CF1C981C081DE01F361CF008E71F2C0ACA
-:1011DC002F1CE308F61CD91C201C05FF63736361EC
-:1011EC006E00DC08011CFF1CCF1CB11C981C081DD8
-:1011FC00E01F1A1D361C0D09C41C351EC41CCF1C47
-:10120C00211D1A1D361C0D092F1E2F1CFB08F01C4E
-:10121C00CF1C931DF61CD91C201C06FF6163636553
-:10122C007074F308011CCF1C9D1D351ECF1C2506A8
-:10123C00B11C59091A1D361C4B09B11C3D1C080068
-:10124C00E01F361C3B09D91CE11CEB05781DFF1C6B
-:10125C00E11CE11CF61C361C39095109351EFF1C1A
-:10126C00CF1CF61C4F012F1C4909B11C76066E1DB4
-:10127C00361C4209D91C7606B11C1406CF1C8D1CD9
-:10128C002F1ECF1C5B012F1C1D09D91CF01CC41C6C
-:10129C00931D5C08201C011C3D1C0800B11C14068D
-:1012AC0069081406201C011CB11C3D1C0D00E01F1C
-:1012BC00C41C3D1C0A00E01F1C1E201C06FF72658E
-:1012CC0066696C6C13099A0C1A00630C6F0C04FFA2
-:1012DC00636861726409011C3B0AD91C981C201CB0
-:1012EC0006FF6E756D6265726D09011CD605791C61
-:1012FC00FF1CBF09FF1CD209BF09F61C1C1EFF1CDA
-:10130C00B11C1A1D361C9209F405F61CD91CF61CCE
-:10131C00D605811C541D201C1E1F541D541D2D1F31
-:10132C00F009B91C361CB409E71FE01F361CAB09C9
-:10133C00981C3D1C2E00E01F361CAC09F61C361CFC
-:10134C00A809680DEC1F2F1CBA09D91CF405F61C52
-:10135C00D91CF61CD605811C541D201CF405F61C4A
-:10136C00361CB909C606E71FF61CD605811C4B1D99
-:10137C00201C011CCF1C981C3D1C2D00E01FB11C17
-:10138C00FF1C361CCB09E71F2C0AF61C201C521C18
-:10139C000A00100002000A00011CCF1C981C3D1C06
-:1013AC002300931DB11C541D3D1C0400FE06361C6D
-:1013BC00E809CD099D1DCB1FD605811CE71F2C0A02
-:1013CC002F1CE909D91C201C07FF3E6E756D626548
-:1013DC0072007609011CB11C361C080ACF1C981C23
-:1013EC00DA071A1D361CFC09D91C201CFF1C8C0D9D
-:1013FC00D605791C4001F61C38018C0DE71F2C0A10
-:10140C002F1CF109201C05FF706172736500EA093D
-:10141C00011CFF1C220A0406791C2C0AF61CF80875
-:10142C00B11C2F1E0406651EE71F2C0A201C06FF8C
-:10143C00736F75726365090A9A0C1600630C6F0C56
-:10144C0007FF2F737472696E67001D0A011CE11C83
-:10145C00CF1C9D1DE11CE11C931D201C0AFF70611B
-:10146C007273652D6E616D65260A011C76063F0A46
-:10147C00201C011CFF1C220A0406791C2C0A081DC6
-:10148C00E108F61CF808EB059D1D220AD91C931DDA
-:10149C000406811C201C07FF66696E642D7874009D
-:1014AC00340A011C3D1C630A3D1C4000EE041A1D4D
-:1014BC00361C620AF405541D201C011CFF1CEB0594
-:1014CC00F61CAC0CB11C361C700AFF1CF01CF01C7A
-:1014DC00F61C4B1D201C04FF71756974510A011C0C
-:1014EC00A303AA03811C100B961E1D0B801E38042F
-:1014FC00D005791C1A1D361C840AB40A6909361CDD
-:10150C00960A3D1C6B0BB208B91C361C960AB11C12
-:10151C003D1CFEFF6E1D361C940ACF0A2F1C760A4A
-:10152C00A40A2F1C7E0A011CF4070300206F6B0019
-:10153C002708201C03FF2E6F6B00710A9A0C1C00ED
-:10154C00630C6F0C011CF40702003E205C0827089A
-:10155C00201C06FF2E7265616479A00A9A0C20008B
-:10156C00630C6F0C011CF4070400203F3F2027087C
-:10157C00D605791CFF1C6306A9070406791CA9076C
-:10158C00F61CD605811C201C06FF2E6572726F722C
-:10159C00AF0A9A0C1E00630C6F0C05FF706175731B
-:1015AC006500CA0A9A0C93004F0C590C04FF636F28
-:1015BC006C64D30AE10AA4B622243324BB2424BECF
-:1015CC00E0E6F0E02192E036E9F7F430D9F7E5E90E
-:1015DC00F0E02F010FE50DBF048314E01EBF15834F
-:1015EC00CFE0C683D4E0D783A3E0BBE00C94051C0A
-:1015FC0004FF7761726DDC0A011CD70D3D1C060CD3
-:10160C003D1CD80A7A0C38047E06750A03FF7370E9
-:10161C003000FE0A6F1C0600630C6F0C02FF737027
-:10162C000C0B581C080003FF72703000140B011CCB
-:10163C00210B791C201C581C040005FF6465707478
-:10164C006800190B011C100B8D1E931D041E351EFA
-:10165C00201C09FF7265636F676E697A6500230B46
-:10166C00011C3D1C410BC41CEE041A1D361C400B06
-:10167C00F405D10B201C011CE11CE11CEB051E1F09
-:10168C00E11C2A1C2D1FE11CB11CD10BE01F361CC8
-:10169C00520BD91C541D201CF01CF01C4B1D201C83
-:1016AC0010FF666F7274682D7265636F676E697A6E
-:1016BC0065722F0B6F1C34003B0C450C09FF696ED7
-:1016CC007465727072657400560B011C3B0AB11C78
-:1016DC00361C7C0B600B360BD005791C361C770B3B
-:1016EC00320CCB1F2A1CDE0B2F1C6C0BF405201CA0
-:1016FC0006FF64743A6E756D640B521C060CC402C2
-:10170C00C40207FF64743A646E756D007E0B521C44
-:10171C00060CD81FD81F07FF7265633A6E756D00F3
-:10172C00870B011C7B09361CA30BE71FE01F361C23
-:10173C00A10B830B201C8D0B201CD10B201C08FF34
-:10174C007265633A66696E64910B011C570AB11C91
-:10175C001A1D361CB40BD91CD10B201CBB0B201C26
-:10176C0005FF64743A787400A50B521CBF0BC30BB5
-:10177C00D81F011CD91C2A1C201C011C211D361C25
-:10178C00C90BAE02201C2A1C201C07FF64743A6E85
-:10179C00756C6C00B60B521CD50BD50BD50B011C04
-:1017AC003D1CF3FFC80806FF3F737461636BCB0BE2
-:1017BC00011C280B211D361CE60B3D1CFCFFC80828
-:1017CC00201C03FF76657200D90B011C92052708BB
-:1017DC006908D605791CA0056306EE0D45074D0773
-:1017EC003D1C2E00360763076E078208D605811C48
-:1017FC006908A8052708201C04FF6E6F6F70E70BA3
-:10180C00011C201C06FF756E75736564020C011CAF
-:10181C008D1E4506931D201C0200746F080C011CC4
-:10182C009108F70DD005791C361C260CA302200C50
-:10183C00AE02201C011CF61CB11C320CFF1CCB1F71
-:10184C00B11C320C320CCB1F2A1C201C07FF692D3B
-:10185C0063656C6C2B00120C011C2F1E201C07FFE7
-:10186C0045646566657240002C0C011CCB1F5F1F24
-:10187C00201C07FF4564656665722100350C011C50
-:10188C00CB1F3B1F201C07FF52646566657240002E
-:10189C003F0C011CCB1F791C201C07FF5264656692
-:1018AC0065722100490C011CCB1F811C201C07FFF9
-:1018BC005564656665724000530C011CCB1F021FFA
-:1018CC009D1D791C201C07FF5564656665722100FF
-:1018DC005D0C011CCB1F021F9D1D811C201C06FFD3
-:1018EC00646566657221690C011CF70DB11C320C24
-:1018FC00320CCB1F2A1C201C06FF646566657240E7
-:10190C00750C011CF70DB11C320CCB1F2A1C201CB2
-:10191C0007FF2864656665722900820C011C800231
-:10192C00E003A3029A0C201C0E94F903B11C320C98
-:10193C00CB1F2A1C2A1C201C0FFF73656172636865
-:10194C002D776F72646C697374008E0C011CFF1C14
-:10195C00541D3D1CC10CF61CDE0CB11C1A1D361C92
-:10196C00BB0CF405D91C541D201CB11C050DC41C4A
-:10197C0075016301201C011CFF1CD91CEB05081D03
-:10198C00F90C0F0D361CCF0CF61CD91C541D4B1D1D
-:10199C00201CF405F61C541D201C11FF747261767A
-:1019AC00657273652D776F72646C69737400A20C29
-:1019BC00011C5F1FB11C361CEF0CEB051E1FC41C59
-:1019CC002A1C2D1FE11C361CEF0C5D05CB1F2F1C98
-:1019DC00E00CF405201C0BFF6E616D653E73747298
-:1019EC00696E6700D30C011C53083D1CFF00131ECD
-:1019FC00201C07FF6E66613E63666100F10C011CE2
-:101A0C005D052F1E201C08FF69636F6D7061726588
-:101A1C00FF0C011CFF1CCF1CF61C131D361C1A0DD1
-:101A2C00F405D91C4B1D201CC41C541D6D03361C05
-:101A3C003D0D9B1ECF1C791CCF1CCB1FB11C3D1C1C
-:101A4C0000015C1D361C2E0DC41C3D1CFF00131E1A
-:101A5C00131D361C350DF4054B1DD41E201C2F1EDA
-:101A6C00C41CE305C41C3D1C0200BA1E200DF40569
-:101A7C00541D201C01FF2A00090D011CA61DD91C98
-:101A8C00201C01FF6A00400D011C761E3D1C070046
-:101A9C009D1D791C761E3D1C09009D1D791C9D1DEC
-:101AAC00201C04FF64616273470D011CB11C211DD5
-:101ABC00361C610D680D201C07FF646E6567617430
-:101ACC006500570D011CC401E71F541D9C01201C0F
-:101ADC0005FF636D6F766500620D740DBF93AF9358
-:101AEC00E991F991A991B991092F082B21F01D9138
-:101AFC0011930197E1F7AF91BF91899199910C9452
-:101B0C00051C05FF3273776170006E0D011CE11C22
-:101B1C00FF1CE11CF61C201C0AFF726566696C6CCC
-:101B2C002D746962870D011CB50D3D1C5A001809F6
-:101B3C00BB0D811C541D0406811C4B1D201C0AFF6F
-:101B4C00736F757263652D746962920D011CB50D0E
-:101B5C00BB0D791C201C03FF74696200A50D481C89
-:101B6C00C10004FF23746962B10D481C1B0106FF00
-:101B7C0065653E72616DB70D011C541D9B1ECF1C1B
-:101B8C005F1FCF1C811CE305C41CE305C41CC91ECC
-:101B9C00C50DF405201C08FF696E69742D72616D0A
-:101BAC00BD0D011C3D1C6000021F3D1C2200041ECB
-:101BBC00C20D201C06FF626F756E6473D10D011C83
-:101BCC00CF1C9D1DC41C201C03FF733E6400E00D44
-:101BDC00011CB11C211D201C05FF3E626F647900A5
-:101BEC00EA0D301E02FF2E73F20D011C280BD201E0
-:101BFC006908280B541D6D03361C0A0E9B1EAC1E67
-:101C0C003D02D201C91E050E201C06FF6321407344
-:101C1C007069F80D110E03D099270C94051C8FB91F
-:101C2C000EB1087F0EB90EB107FFFACF8FB1089530
-:101C3C0005FF6E40737069000B0E240E8C018991A8
-:101C4C009991FC01C8012FB82EB127FFFDCF2FB100
-:101C5C0021930197C1F7899199910C94051C05FF6B
-:101C6C006E21737069001E0E3B0E8C018991999147
-:101C7C00FC01C80121912FB92EB127FFFDCF2FB147
-:101C8C000197C1F7899199910C94051C0BFF617018
-:101C9C00706C7475726E6B657900350E011CBC002E
-:101CAC000302EB0B6908C5053D1CE803C21DF01CC3
-:101CBC006306A907F40704006B487A202708201C48
-:101CCC000BFF7365742D63757272656E74004C0E28
-:101CDC00011C3D1C3C003B1F201C08FF776F7264ED
-:101CEC006C697374660E011C3D06541DCF1C3B1FA2
-:101CFC00B11CE305200C3E06201C0EFF666F7274AF
-:101D0C00682D776F72646C697374730E481C3E0097
-:101D1C0009FF7365742D6F7264657200830E011C6C
-:101D2C003D1C4000D004201C0FFF7365742D7265A0
-:101D3C00636F676E697A657273008E0E011C3D1CB1
-:101D4C005200D004201C0FFF6765742D7265636F01
-:101D5C00676E697A657273009A0E011C3D1C520005
-:101D6C00AF04201C04FF636F6465A90E011C800284
-:101D7C00E0033406320CAE02201C08FF656E642DA5
-:101D8C00636F6465B80E011CA3020C94A302051CBE
-:101D9C00201C08FF286D61726B657229C30E6F1CC5
-:101DAC005E003B0C450C0800706F7374706F6E65B1
-:101DBC00CF0E011C3B0A600B360BB11CFF1C320C06
-:101DCC00320CCB1F2A1CF61C320CCB1FAE02201C73
-:101DDC0003FF32724000D90EF30E9A938A93EF915F
-:101DEC00FF918F919F919F938F93FF93EF939A9372
-:081DFC008A93CF010C94051C31
-:10380200BF93AF93DB011196B21469F4FD01EE0F81
-:10381200FF1F659175911196FB01EE0FFF1F059138
-:103822001591F80109949A938A938B2D9927BB24B9
-:103832006FE272E0F1CF04FF65786974EE0E211C2D
-:10384200AF91BF91E1CF07FF65786563757465003D
-:103852001C1C2B1CBC0189919991DECF301CFD01EF
-:10386200EE0FFF1FA591B591CFCF371C982B8991F1
-:103872009991A9F31196C8CF3E1C9A938A93FD01A0
-:10388200EE0FFF1F859195911196BECF481C9A931A
-:103892008A93FB013196EE0FFF1F85919591B4CF6C
-:1038A200521C9A938A93CB010196AECF581C9A93DD
-:1038B2008A93FB013196EE0FFF1F85919591840D3E
-:1038C200951DA2CF07FF2876616C75652900241C1F
-:1038D200011C8002E003A3026F1C201C0E94F9035A
-:1038E200B11C320CCB1F2A1C201C01FF4000631CA0
-:1038F2007A1CFC018191919187CF01FF2100761CF6
-:10390200821CFC018991999191838083899199917B
-:103912007BCF02FF63217E1C8E1CFC018991999151
-:1039220080838991999170CF02FF63408A1C991C10
-:10393200FC019927808168CF02FF4075951C011C0C
-:10394200021F9D1D791C201C02FF21759D1C011C5C
-:10395200021F9D1D811C201C03FF64757000A51CA5
-:10396200B21C9A938A9350CF04FF3F647570AD1CCA
-:10397200BA1C082F092B11F09A938A9345CF04FFA2
-:1039820073776170B51CC51C8C01899199911A934A
-:103992000A933ACF04FF6F766572C01CD01C9A93CB
-:1039A2008A938A819B8130CF04FF64726F70CB1C33
-:1039B200DA1C8991999128CF03FF726F7400D51C8C
-:1039C200E21C8C0129913991899199913A932A9318
-:1039D2001A930A9319CF03FF6E697000DD1CF11C64
-:1039E200229612CF02FF723EEC1CF71C9A938A9326
-:1039F2008F919F9109CF02FF3E72F31C001D9F938E
-:103A02008F938991999100CF02FF7240FC1C091D8E
-:103A12009A938A938F919F919F938F93F5CE02FFF2
-:103A22003C3E051D011CE01F1A1D201C02FF303DFB
-:103A3200101D1B1D982BD1F530C002FF303C171D05
-:103A4200221D97FD2AC032C002FF303E1E1D291DD5
-:103A5200821593055CF151F120C003FF64303E00F2
-:103A6200251D331D82159305899199918205930530
-:103A7200ECF0E1F012C003FF64303C002E1D411D4A
-:103A8200229697FD0C944E1D0C94571D04FF7472E0
-:103A920075653C1D4C1D9A938A938FEF9FEFB4CEB0
-:103AA20001FF3000471D551D9A938A93C101ACCE88
-:103AB20002FF753C511D5D1D2991399182179307B3
-:103AC200A8F3A1F3EACF02FF753E591D011CC41CE5
-:103AD2005C1D201C01FF3C00641D6F1D2991399162
-:103AE200281739071CF7D9CF01FF3E006B1D791D3E
-:103AF2002991399128173907CCF2C1F2CECF04FFB0
-:103B02006C6F6732751D851DFC01992780E18A95CE
-:103B120022F0EE0FFF1FD8F777CE9A9575CE01FFF0
-:103B22002D00801D941D09911991081B190BC801C4
-:103B32006BCE01FF2B00901D9E1D09911991800FE4
-:103B4200911F62CE02FF6D2A9A1DA71D8C018991D9
-:103B520099919C0131027001209FC0013003F3084A
-:103B6200900DE11CF31C1203F308900DE11CF31CF1
-:103B72009A938A93C70148CE06FF756D2F6D6F64C5
-:103B8200A31DC31D7C01299139910991199140E12D
-:103B92005527000F111F221F331F551F2E153F05DA
-:103BA200520518F003952E193F094A9589F73A9361
-:103BB2002A93C80129CE03FF756D2A00BD1DE11DA0
-:103BC2008C0189919991809FF00122273327909F40
-:103BD200F00D211D331D819FF00D211D331D919F7D
-:103BE200200D311DCF019A938A93C9010DCE06FF94
-:103BF200696E76657274DC1DFE1D8095909504CE0B
-:103C020002FF322FF81D051E95958795FDCD02FF07
-:103C1200322A011E0C1E880F991FF6CD03FF616E1A
-:103C22006400081E141E0991199180239123ECCD82
-:103C320002FF6F720F1E1D1E09911991802B912B8D
-:103C4200E3CD03FF786F7200191E271E09911991A7
-:103C520080279127D9CD02FF312B221E301E0196DB
-:103C6200D3CD02FF312D2C1E361E0197CDCD07FF7D
-:103C72003F6E656761746500321E011C211D361C92
-:103C8200431EC606201C06FF6C7368696674381EE4
-:103C92004A1EFC018991999131971AF0880F991F58
-:103CA200FBCFB2CD06FF727368696674441E591E5B
-:103CB200FC018991999131971AF096958795FBCFDE
-:103CC200A3CD02FF2B21531E661EFC0189919991FF
-:103CD20020813181820F931F8083918389919991F1
-:103CE20093CD03FF72704000621E771E9A938A93EF
-:103CF2008DB79EB789CD03FF72702100721E811E9F
-:103D02002FB7F8948DBF9EBF2FBF899199917CCD1B
-:103D120003FF737040007C1E8E1E9A938A93CE011D
-:103D220073CD03FF73702100891E971EEC018991E8
-:103D320099916ACD9C1E29913991E0E83E0F821B30
-:103D4200930B3F932F939F938F93899199915CCD7E
-:103D520001FF6900921EAD1E9A938A938F919F91E3
-:103D6200EF91FF91FF93EF939F938F938E0F9F1F7E
-:103D72004BCDBB1EEF91FF91E80FF91F89919991ED
-:103D82001BF0FF93EF936BCD0F911F9111963CCDDA
-:103D9200CA1EEF91FF913196BBF3F3CF06FF756E0A
-:103DA2006C6F6F70A91ED51E1F910F911F910F91FD
-:103DB2002BCD06FF636D6F76653ECF1EE01EBF936F
-:103DC200AF93E991F991A991B991092F082B41F08B
-:103DD200E80FF91FA80FB91F1E9112930197E1F77F
-:103DE200AF91BF91899199910FCD02FF3E3CDA1EAE
-:103DF200FA1E092F982F802F07CD03FF7570400000
-:103E0200F61E031F9A938A93C201FECC03FF7570BC
-:103E12002100FE1E0C1F2C0189919991F5CC03FF04
-:103E2200316D7300071F151FE0EDF7E03197F1F7D1
-:103E3200EBCC03FF323E7200101F1F1FFC01899161
-:103E420099919F938F93FF93EF9389919991DCCCF2
-:103E520003FF32723E001A1F2E1F9A938A93EF912C
-:103E6200FF918F919F919A938A93CF01CDCC02FFBC
-:103E72002165291F3C1FFC01899199912FB7F89464
-:103E820028D00DB3081709F00BD0319622D00DB30C
-:103E9200091711F0892F04D02FBF89919991B4CCC1
-:103EA200E199FECF07B700FDFDCFFFBBEEBB8DBB97
-:103EB200E29AE19A089502FF4065381F601F2FB70A
-:103EC200F894FC0106D08DB3319603D09DB32FBF79
-:103ED2009BCCE199FECFFFBBEEBBE09A089502FFB7
-:103EE20021695C1F9A0C5C003B0C450C09FF2821E0
-:103EF200692D6E7277772900701F7F1F1FB71F937E
-:103F0200F8949C0189919991AF93BF93CF93DF93DA
-:103F120009D0DF91CF91BF91AF91899199911F9172
-:103F22001FBF72CC10D0E094F0948E219F21982B69
-:103F320019F0F90102E020D0F90104E01DD0F901E5
-:103F420000E11AD00895F901E07CFF7FEF01A0E4BF
-:103F5200B0E0FE01EE0FFF1F45915591FE01E21701
-:103F6200F30711F00A0102C07A010C01002704D004
-:103F72002196119771F70895E199FECF17B710FDB9
-:103F8200FDCFEE0FFF1F016007BFE895089502FF06
-:103F92004069771FCC1FFC01EE0FFF1F85919591A1
-:103FA20033CC0800326C69746572616CC81F011CE5
-:103FB200C41CC402C402201C01FF3D00D21F011C0C
-:103FC200931D1A1D201C01FF3100DD1F481C01003A
-:103FD20001FF3200E41F481C020002FF2D31E91FDD
-:043FE200481CFFFF79
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p16-8.lst b/amforth-6.5/appl/eval-pollin/p16-8.lst
deleted file mode 100644
index 4cb21fb..0000000
--- a/amforth-6.5/appl/eval-pollin/p16-8.lst
+++ /dev/null
@@ -1,10363 +0,0 @@
-
-AVRASM ver. 2.1.52 p16-8.asm Sun Apr 30 20:10:14 2017
-
-p16-8.asm(5): Including file '../../avr8\preamble.inc'
-../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm'
-../../avr8\macros.asm(6): Including file '../../avr8\user.inc'
-../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega16\device.asm'
-../../avr8/devices/atmega16\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m16def.inc'
-p16-8.asm(14): Including file '../../avr8\drivers/usart.asm'
-../../avr8\drivers/usart.asm(30): Including file '../../avr8\drivers/usart_common.asm'
-../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm'
-../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm'
-../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm'
-../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm'
-p16-8.asm(19): Including file '../../avr8\drivers/1wire.asm'
-p16-8.asm(21): Including file '../../avr8\amforth.asm'
-../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm'
-../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc'
-../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm'
-../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm'
-../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm'
-../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm'
-../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm'
-../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm'
-../../avr8\dict/rww.inc(13): Including file '../../avr8\dict/appl_2k.inc'
-../../avr8\dict/appl_2k.inc(1): Including file '../../avr8\words/d-2star.asm'
-../../avr8\dict/appl_2k.inc(2): Including file '../../avr8\words/d-2slash.asm'
-../../avr8\dict/appl_2k.inc(3): Including file '../../avr8\words/d-plus.asm'
-../../avr8\dict/appl_2k.inc(4): Including file '../../avr8\words/d-minus.asm'
-../../avr8\dict/appl_2k.inc(5): Including file '../../avr8\words/d-invert.asm'
-../../avr8\dict/appl_2k.inc(6): Including file '../../common\words/u-dot.asm'
-../../avr8\dict/appl_2k.inc(7): Including file '../../common\words/u-dot-r.asm'
-../../avr8\dict/appl_2k.inc(9): Including file '../../common\words/show-wordlist.asm'
-../../avr8\dict/appl_2k.inc(10): Including file '../../common\words/words.asm'
-../../avr8\dict/appl_2k.inc(11): Including file '../../avr8\dict/interrupt.inc'
-../../avr8\dict/interrupt.inc(8): Including file '../../avr8\words/int-on.asm'
-../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-off.asm'
-../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-store.asm'
-../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-fetch.asm'
-../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-trap.asm'
-../../avr8\dict/interrupt.inc(14): Including file '../../avr8\words/isr-exec.asm'
-../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-end.asm'
-../../avr8\dict/appl_2k.inc(13): Including file '../../common\words/pick.asm'
-../../avr8\dict/appl_2k.inc(14): Including file '../../common\words/dot-quote.asm'
-../../avr8\dict/appl_2k.inc(15): Including file '../../common\words/squote.asm'
-../../avr8\dict/appl_2k.inc(17): Including file '../../avr8\words/fill.asm'
-../../avr8\dict/appl_2k.inc(18): Including file '../../avr8\dict/compiler1.inc'
-../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm'
-../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm'
-../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm'
-../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm'
-../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm'
-../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm'
-../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm'
-../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm'
-../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm'
-../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm'
-../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm'
-../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm'
-../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm'
-../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm'
-../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm'
-../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm'
-../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm'
-../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm'
-../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm'
-../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm'
-../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm'
-../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm'
-../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm'
-../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm'
-../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm'
-../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm'
-../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm'
-../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm'
-../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm'
-../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm'
-../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm'
-../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm'
-../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm'
-../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm'
-../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm'
-../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm'
-../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm'
-../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm'
-../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm'
-../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm'
-../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm'
-../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm'
-../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm'
-../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm'
-../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm'
-../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm'
-../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm'
-../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm'
-../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm'
-../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm'
-../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm'
-../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm'
-../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm'
-../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm'
-../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm'
-../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm'
-../../avr8\dict/compiler1.inc(67): Including file '../../common\words/get-order.asm'
-../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-order.asm'
-../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm'
-../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm'
-../../avr8\dict/appl_2k.inc(20): Including file '../../avr8\words/environment.asm'
-../../avr8\dict/appl_2k.inc(21): Including file '../../avr8\words/env-wordlists.asm'
-../../avr8\dict/appl_2k.inc(22): Including file '../../avr8\words/env-slashpad.asm'
-../../avr8\dict/appl_2k.inc(23): Including file '../../common\words/env-slashhold.asm'
-../../avr8\dict/appl_2k.inc(24): Including file '../../common\words/env-forthname.asm'
-../../avr8\dict/appl_2k.inc(25): Including file '../../common\words/env-forthversion.asm'
-../../avr8\dict/appl_2k.inc(26): Including file '../../common\words/env-cpu.asm'
-../../avr8\dict/appl_2k.inc(27): Including file '../../avr8\words/env-mcuinfo.asm'
-../../avr8\dict/appl_2k.inc(28): Including file '../../common\words/env-usersize.asm'
-../../avr8\dict/appl_2k.inc(30): Including file '../../common\words/f_cpu.asm'
-../../avr8\dict/appl_2k.inc(31): Including file '../../avr8\words/state.asm'
-../../avr8\dict/appl_2k.inc(32): Including file '../../common\words/base.asm'
-../../avr8\dict/appl_2k.inc(34): Including file '../../avr8\words/cells.asm'
-../../avr8\dict/appl_2k.inc(35): Including file '../../avr8\words/cellplus.asm'
-../../avr8\dict/appl_2k.inc(37): Including file '../../common\words/2dup.asm'
-../../avr8\dict/appl_2k.inc(38): Including file '../../common\words/2drop.asm'
-../../avr8\dict/appl_2k.inc(40): Including file '../../common\words/tuck.asm'
-../../avr8\dict/appl_2k.inc(42): Including file '../../common\words/to-in.asm'
-../../avr8\dict/appl_2k.inc(43): Including file '../../common\words/pad.asm'
-../../avr8\dict/appl_2k.inc(44): Including file '../../common\words/emit.asm'
-../../avr8\dict/appl_2k.inc(45): Including file '../../common\words/emitq.asm'
-../../avr8\dict/appl_2k.inc(46): Including file '../../common\words/key.asm'
-../../avr8\dict/appl_2k.inc(47): Including file '../../common\words/keyq.asm'
-../../avr8\dict/appl_2k.inc(49): Including file '../../avr8\words/dp.asm'
-../../avr8\dict/appl_2k.inc(50): Including file '../../avr8\words/ehere.asm'
-../../avr8\dict/appl_2k.inc(51): Including file '../../avr8\words/here.asm'
-../../avr8\dict/appl_2k.inc(52): Including file '../../avr8\words/allot.asm'
-../../avr8\dict/appl_2k.inc(54): Including file '../../common\words/bin.asm'
-../../avr8\dict/appl_2k.inc(55): Including file '../../common\words/decimal.asm'
-../../avr8\dict/appl_2k.inc(56): Including file '../../common\words/hex.asm'
-../../avr8\dict/appl_2k.inc(57): Including file '../../common\words/bl.asm'
-../../avr8\dict/appl_2k.inc(59): Including file '../../avr8\words/turnkey.asm'
-../../avr8\dict/appl_2k.inc(61): Including file '../../avr8\words/slashmod.asm'
-../../avr8\dict/appl_2k.inc(62): Including file '../../avr8\words/uslashmod.asm'
-../../avr8\dict/appl_2k.inc(63): Including file '../../avr8\words/negate.asm'
-../../avr8\dict/appl_2k.inc(64): Including file '../../common\words/slash.asm'
-../../avr8\dict/appl_2k.inc(65): Including file '../../common\words/mod.asm'
-../../avr8\dict/appl_2k.inc(66): Including file '../../common\words/abs.asm'
-../../avr8\dict/appl_2k.inc(67): Including file '../../common\words/min.asm'
-../../avr8\dict/appl_2k.inc(68): Including file '../../common\words/max.asm'
-../../avr8\dict/appl_2k.inc(69): Including file '../../common\words/within.asm'
-../../avr8\dict/appl_2k.inc(71): Including file '../../common\words/to-upper.asm'
-../../avr8\dict/appl_2k.inc(72): Including file '../../common\words/to-lower.asm'
-../../avr8\dict/appl_2k.inc(74): Including file '../../avr8\words/hld.asm'
-../../avr8\dict/appl_2k.inc(75): Including file '../../common\words/hold.asm'
-../../avr8\dict/appl_2k.inc(76): Including file '../../common\words/less-sharp.asm'
-../../avr8\dict/appl_2k.inc(77): Including file '../../common\words/sharp.asm'
-../../avr8\dict/appl_2k.inc(78): Including file '../../common\words/sharp-s.asm'
-../../avr8\dict/appl_2k.inc(79): Including file '../../common\words/sharp-greater.asm'
-../../avr8\dict/appl_2k.inc(80): Including file '../../common\words/sign.asm'
-../../avr8\dict/appl_2k.inc(81): Including file '../../common\words/d-dot-r.asm'
-../../avr8\dict/appl_2k.inc(82): Including file '../../common\words/dot-r.asm'
-../../avr8\dict/appl_2k.inc(83): Including file '../../common\words/d-dot.asm'
-../../avr8\dict/appl_2k.inc(84): Including file '../../common\words/dot.asm'
-../../avr8\dict/appl_2k.inc(85): Including file '../../common\words/ud-dot.asm'
-../../avr8\dict/appl_2k.inc(86): Including file '../../common\words/ud-dot-r.asm'
-../../avr8\dict/appl_2k.inc(87): Including file '../../common\words/ud-slash-mod.asm'
-../../avr8\dict/appl_2k.inc(88): Including file '../../common\words/digit-q.asm'
-../../avr8\dict/appl_2k.inc(90): Including file '../../avr8\words/do-sliteral.asm'
-../../avr8\dict/appl_2k.inc(91): Including file '../../avr8\words/scomma.asm'
-../../avr8\dict/appl_2k.inc(92): Including file '../../avr8\words/itype.asm'
-../../avr8\dict/appl_2k.inc(93): Including file '../../avr8\words/icount.asm'
-../../avr8\dict/appl_2k.inc(94): Including file '../../common\words/cr.asm'
-../../avr8\dict/appl_2k.inc(95): Including file '../../common\words/space.asm'
-../../avr8\dict/appl_2k.inc(96): Including file '../../common\words/spaces.asm'
-../../avr8\dict/appl_2k.inc(97): Including file '../../common\words/type.asm'
-../../avr8\dict/appl_2k.inc(98): Including file '../../common\words/tick.asm'
-../../avr8\dict/appl_2k.inc(100): Including file '../../common\words/handler.asm'
-../../avr8\dict/appl_2k.inc(101): Including file '../../common\words/catch.asm'
-../../avr8\dict/appl_2k.inc(102): Including file '../../common\words/throw.asm'
-../../avr8\dict/appl_2k.inc(104): Including file '../../common\words/cskip.asm'
-../../avr8\dict/appl_2k.inc(105): Including file '../../common\words/cscan.asm'
-../../avr8\dict/appl_2k.inc(106): Including file '../../common\words/accept.asm'
-../../avr8\dict/appl_2k.inc(107): Including file '../../common\words/refill.asm'
-../../avr8\dict/appl_2k.inc(108): Including file '../../common\words/char.asm'
-../../avr8\dict/appl_2k.inc(109): Including file '../../common\words/number.asm'
-../../avr8\dict/appl_2k.inc(110): Including file '../../common\words/q-sign.asm'
-../../avr8\dict/appl_2k.inc(111): Including file '../../common\words/set-base.asm'
-../../avr8\dict/appl_2k.inc(112): Including file '../../common\words/to-number.asm'
-../../avr8\dict/appl_2k.inc(113): Including file '../../common\words/parse.asm'
-../../avr8\dict/appl_2k.inc(114): Including file '../../common\words/source.asm'
-../../avr8\dict/appl_2k.inc(115): Including file '../../common\words/slash-string.asm'
-../../avr8\dict/appl_2k.inc(116): Including file '../../common\words/parse-name.asm'
-../../avr8\dict/appl_2k.inc(117): Including file '../../common\words/find-xt.asm'
-../../avr8\dict/appl_2k.inc(119): Including file '../../common\words/quit.asm'
-../../avr8\dict/appl_2k.inc(120): Including file '../../common\words/prompt-ok.asm'
-../../avr8\dict/appl_2k.inc(121): Including file '../../common\words/prompt-ready.asm'
-../../avr8\dict/appl_2k.inc(122): Including file '../../common\words/prompt-error.asm'
-../../avr8\dict/appl_2k.inc(123): Including file '../../avr8\words/pause.asm'
-../../avr8\dict/appl_2k.inc(124): Including file '../../avr8\words/cold.asm'
-../../avr8\dict/appl_2k.inc(125): Including file '../../common\words/warm.asm'
-../../avr8\dict/appl_2k.inc(127): Including file '../../avr8\words/sp0.asm'
-../../avr8\dict/appl_2k.inc(128): Including file '../../avr8\words/rp0.asm'
-../../avr8\dict/appl_2k.inc(129): Including file '../../common\words/depth.asm'
-../../avr8\dict/appl_2k.inc(130): Including file '../../common\words/recognize.asm'
-../../avr8\dict/appl_2k.inc(131): Including file '../../avr8\words/forth-recognizer.asm'
-../../avr8\dict/appl_2k.inc(132): Including file '../../common\words/interpret.asm'
-../../avr8\dict/appl_2k.inc(133): Including file '../../common\words/rec-intnum.asm'
-../../avr8\dict/appl_2k.inc(134): Including file '../../common\words/rec-find.asm'
-../../avr8\dict/appl_2k.inc(135): Including file '../../common\words/dt-null.asm'
-../../avr8\dict/appl_2k.inc(137): Including file '../../common\words/q-stack.asm'
-../../avr8\dict/appl_2k.inc(138): Including file '../../common\words/ver.asm'
-../../avr8\dict/appl_2k.inc(140): Including file '../../common\words/noop.asm'
-../../avr8\dict/appl_2k.inc(141): Including file '../../avr8\words/unused.asm'
-../../avr8\dict/appl_2k.inc(143): Including file '../../common\words/to.asm'
-../../avr8\dict/appl_2k.inc(144): Including file '../../avr8\words/i-cellplus.asm'
-../../avr8\dict/appl_2k.inc(146): Including file '../../avr8\words/edefer-fetch.asm'
-../../avr8\dict/appl_2k.inc(147): Including file '../../avr8\words/edefer-store.asm'
-../../avr8\dict/appl_2k.inc(148): Including file '../../common\words/rdefer-fetch.asm'
-../../avr8\dict/appl_2k.inc(149): Including file '../../common\words/rdefer-store.asm'
-../../avr8\dict/appl_2k.inc(150): Including file '../../common\words/udefer-fetch.asm'
-../../avr8\dict/appl_2k.inc(151): Including file '../../common\words/udefer-store.asm'
-../../avr8\dict/appl_2k.inc(152): Including file '../../common\words/defer-store.asm'
-../../avr8\dict/appl_2k.inc(153): Including file '../../common\words/defer-fetch.asm'
-../../avr8\dict/appl_2k.inc(154): Including file '../../avr8\words/do-defer.asm'
-../../avr8\dict/appl_2k.inc(156): Including file '../../common\words/search-wordlist.asm'
-../../avr8\dict/appl_2k.inc(157): Including file '../../common\words/traverse-wordlist.asm'
-../../avr8\dict/appl_2k.inc(158): Including file '../../common\words/name2string.asm'
-../../avr8\dict/appl_2k.inc(159): Including file '../../avr8\words/nfa2cfa.asm'
-../../avr8\dict/appl_2k.inc(160): Including file '../../avr8\words/icompare.asm'
-../../avr8\dict/appl_2k.inc(162): Including file '../../common\words/star.asm'
-../../avr8\dict/appl_2k.inc(163): Including file '../../avr8\words/j.asm'
-../../avr8\dict/appl_2k.inc(165): Including file '../../avr8\words/dabs.asm'
-../../avr8\dict/appl_2k.inc(166): Including file '../../avr8\words/dnegate.asm'
-../../avr8\dict/appl_2k.inc(167): Including file '../../avr8\words/cmove.asm'
-../../avr8\dict/appl_2k.inc(168): Including file '../../common\words/2swap.asm'
-../../avr8\dict/appl_2k.inc(170): Including file '../../common\words/tib.asm'
-../../avr8\dict/appl_2k.inc(172): Including file '../../avr8\words/init-ram.asm'
-../../avr8\dict/appl_2k.inc(173): Including file '../../common\words/bounds.asm'
-../../avr8\dict/appl_2k.inc(174): Including file '../../common\words/s-to-d.asm'
-../../avr8\dict/appl_2k.inc(175): Including file '../../avr8\words/to-body.asm'
-../../avr8\amforth.asm(15): Including file 'dict_appl.inc'
-dict_appl.inc(3): Including file '../../common\words/dot-s.asm'
-dict_appl.inc(4): Including file '../../avr8\words/spirw.asm'
-dict_appl.inc(5): Including file '../../avr8\words/n-spi.asm'
-dict_appl.inc(6): Including file 'words/applturnkey.asm'
-dict_appl.inc(7): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm'
-../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm'
-../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm'
-../../avr8\dict/compiler2.inc(12): Including file '../../common\words/set-order.asm'
-../../avr8\dict/compiler2.inc(13): Including file '../../common\words/set-recognizer.asm'
-../../avr8\dict/compiler2.inc(14): Including file '../../common\words/get-recognizer.asm'
-../../avr8\dict/compiler2.inc(15): Including file '../../avr8\words/code.asm'
-../../avr8\dict/compiler2.inc(16): Including file '../../avr8\words/end-code.asm'
-../../avr8\dict/compiler2.inc(17): Including file '../../avr8\words/marker.asm'
-../../avr8\dict/compiler2.inc(18): Including file '../../common\words/postpone.asm'
-dict_appl.inc(8): Including file '../../avr8\words/2r_fetch.asm'
-../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm'
-../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc'
-../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm'
-../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm'
-../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm'
-../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm'
-../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm'
-../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm'
-../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm'
-../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm'
-../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm'
-../../avr8\dict/nrww.inc(15): Including file '../../avr8\words/fetch.asm'
-../../avr8\dict/nrww.inc(16): Including file '../../avr8\words/store.asm'
-../../avr8\dict/nrww.inc(17): Including file '../../avr8\words/cstore.asm'
-../../avr8\dict/nrww.inc(18): Including file '../../avr8\words/cfetch.asm'
-../../avr8\dict/nrww.inc(19): Including file '../../avr8\words/fetch-u.asm'
-../../avr8\dict/nrww.inc(20): Including file '../../avr8\words/store-u.asm'
-../../avr8\dict/nrww.inc(23): Including file '../../avr8\words/dup.asm'
-../../avr8\dict/nrww.inc(24): Including file '../../avr8\words/qdup.asm'
-../../avr8\dict/nrww.inc(25): Including file '../../avr8\words/swap.asm'
-../../avr8\dict/nrww.inc(26): Including file '../../avr8\words/over.asm'
-../../avr8\dict/nrww.inc(27): Including file '../../avr8\words/drop.asm'
-../../avr8\dict/nrww.inc(28): Including file '../../avr8\words/rot.asm'
-../../avr8\dict/nrww.inc(29): Including file '../../avr8\words/nip.asm'
-../../avr8\dict/nrww.inc(31): Including file '../../avr8\words/r_from.asm'
-../../avr8\dict/nrww.inc(32): Including file '../../avr8\words/to_r.asm'
-../../avr8\dict/nrww.inc(33): Including file '../../avr8\words/r_fetch.asm'
-../../avr8\dict/nrww.inc(36): Including file '../../common\words/not-equal.asm'
-../../avr8\dict/nrww.inc(37): Including file '../../avr8\words/equalzero.asm'
-../../avr8\dict/nrww.inc(38): Including file '../../avr8\words/lesszero.asm'
-../../avr8\dict/nrww.inc(39): Including file '../../avr8\words/greaterzero.asm'
-../../avr8\dict/nrww.inc(40): Including file '../../avr8\words/d-greaterzero.asm'
-../../avr8\dict/nrww.inc(41): Including file '../../avr8\words/d-lesszero.asm'
-../../avr8\dict/nrww.inc(43): Including file '../../avr8\words/true.asm'
-../../avr8\dict/nrww.inc(44): Including file '../../avr8\words/zero.asm'
-../../avr8\dict/nrww.inc(45): Including file '../../avr8\words/uless.asm'
-../../avr8\dict/nrww.inc(46): Including file '../../common\words/u-greater.asm'
-../../avr8\dict/nrww.inc(47): Including file '../../avr8\words/less.asm'
-../../avr8\dict/nrww.inc(48): Including file '../../avr8\words/greater.asm'
-../../avr8\dict/nrww.inc(50): Including file '../../avr8\words/log2.asm'
-../../avr8\dict/nrww.inc(51): Including file '../../avr8\words/minus.asm'
-../../avr8\dict/nrww.inc(52): Including file '../../avr8\words/plus.asm'
-../../avr8\dict/nrww.inc(53): Including file '../../avr8\words/mstar.asm'
-../../avr8\dict/nrww.inc(54): Including file '../../avr8\words/umslashmod.asm'
-../../avr8\dict/nrww.inc(55): Including file '../../avr8\words/umstar.asm'
-../../avr8\dict/nrww.inc(57): Including file '../../avr8\words/invert.asm'
-../../avr8\dict/nrww.inc(58): Including file '../../avr8\words/2slash.asm'
-../../avr8\dict/nrww.inc(59): Including file '../../avr8\words/2star.asm'
-../../avr8\dict/nrww.inc(60): Including file '../../avr8\words/and.asm'
-../../avr8\dict/nrww.inc(61): Including file '../../avr8\words/or.asm'
-../../avr8\dict/nrww.inc(62): Including file '../../avr8\words/xor.asm'
-../../avr8\dict/nrww.inc(64): Including file '../../avr8\words/1plus.asm'
-../../avr8\dict/nrww.inc(65): Including file '../../avr8\words/1minus.asm'
-../../avr8\dict/nrww.inc(66): Including file '../../common\words/q-negate.asm'
-../../avr8\dict/nrww.inc(67): Including file '../../avr8\words/lshift.asm'
-../../avr8\dict/nrww.inc(68): Including file '../../avr8\words/rshift.asm'
-../../avr8\dict/nrww.inc(69): Including file '../../avr8\words/plusstore.asm'
-../../avr8\dict/nrww.inc(71): Including file '../../avr8\words/rpfetch.asm'
-../../avr8\dict/nrww.inc(72): Including file '../../avr8\words/rpstore.asm'
-../../avr8\dict/nrww.inc(73): Including file '../../avr8\words/spfetch.asm'
-../../avr8\dict/nrww.inc(74): Including file '../../avr8\words/spstore.asm'
-../../avr8\dict/nrww.inc(76): Including file '../../avr8\words/dodo.asm'
-../../avr8\dict/nrww.inc(77): Including file '../../avr8\words/i.asm'
-../../avr8\dict/nrww.inc(78): Including file '../../avr8\words/doplusloop.asm'
-../../avr8\dict/nrww.inc(79): Including file '../../avr8\words/doloop.asm'
-../../avr8\dict/nrww.inc(80): Including file '../../avr8\words/unloop.asm'
-../../avr8\dict/nrww.inc(84): Including file '../../avr8\words/cmove_g.asm'
-../../avr8\dict/nrww.inc(85): Including file '../../avr8\words/byteswap.asm'
-../../avr8\dict/nrww.inc(86): Including file '../../avr8\words/up.asm'
-../../avr8\dict/nrww.inc(87): Including file '../../avr8\words/1ms.asm'
-../../avr8\dict/nrww.inc(88): Including file '../../avr8\words/2to_r.asm'
-../../avr8\dict/nrww.inc(89): Including file '../../avr8\words/2r_from.asm'
-../../avr8\dict/nrww.inc(91): Including file '../../avr8\words/store-e.asm'
-../../avr8\dict/nrww.inc(92): Including file '../../avr8\words/fetch-e.asm'
-../../avr8\dict/nrww.inc(93): Including file '../../avr8\words/store-i.asm'
-../../avr8\dict/nrww.inc(97): Including file '../../avr8\words/store-i_nrww.asm'
-../../avr8\dict/nrww.inc(99): Including file '../../avr8\words/fetch-i.asm'
-../../avr8\dict/nrww.inc(106): Including file '../../avr8\dict/core_2k.inc'
-../../avr8\dict/nrww.inc(112): Including file '../../common\words/2literal.asm'
-../../avr8\dict/nrww.inc(113): Including file '../../avr8\words/equal.asm'
-../../avr8\dict/nrww.inc(114): Including file '../../common\words/num-constants.asm'
-../../avr8\amforth.asm(25): Including file 'dict_appl_core.inc'
-../../avr8\amforth.asm(36): Including file '../../avr8\amforth-eeprom.inc'
-
-
- ; file see ../template/template.asm. You may want to
- ; copy that file to this one and edit it afterwards.
-
- .include "preamble.inc"
-
- .include "macros.asm"
-
- .set DICT_COMPILER2 = 0 ;
- .set cpu_msp430 = 0
- .set cpu_avr8 = 1
-
- .include "user.inc"
-
- ;
-
- ; used by the multitasker
- .set USER_STATE = 0
- .set USER_FOLLOWER = 2
-
- ; stackpointer, used by mulitasker
- .set USER_RP = 4
- .set USER_SP0 = 6
- .set USER_SP = 8
-
- ; excpection handling
- .set USER_HANDLER = 10
-
- ; numeric IO
- .set USER_BASE = 12
-
- ; character IO
- .set USER_EMIT = 14
- .set USER_EMITQ = 16
- .set USER_KEY = 18
- .set USER_KEYQ = 20
-
- .set USER_SOURCE = 22
- .set USER_TO_IN = 24
- .set USER_REFILL = 26
-
- .set USER_P_OK = 28
- .set USER_P_ERR = 30
- .set USER_P_RDY = 32
-
- .set SYSUSERSIZE = 34
- ;
-
- .def zerol = r2
- .def zeroh = r3
- .def upl = r4
- .def uph = r5
-
- .def al = r6
- .def ah = r7
- .def bl = r8
- .def bh = r9
-
- ; internal
- .def mcu_boot = r10
- .def isrflag = r11
-
- .def temp4 = r14
- .def temp5 = r15
-
- .def temp0 = r16
- .def temp1 = r17
- .def temp2 = r18
- .def temp3 = r19
-
- .def temp6 = r20
- .def temp7 = r21
-
- .def tosl = r24
- .def tosh = r25
-
- .def wl = r22
- .def wh = r23
-
- .macro loadtos
- ld tosl, Y+
- ld tosh, Y+
- .endmacro
-
- .macro savetos
- st -Y, tosh
- st -Y, tosl
- .endmacro
-
- .macro in_
- .if (@1 < $40)
- in @0,@1
- .else
- lds @0,@1
- .endif
- .endmacro
-
- .macro out_
- .if (@0 < $40)
- out @0,@1
- .else
- sts @0,@1
- .endif
- .endmacro
-
- .macro sbi_
- .if (@0 < $40)
- sbi @0,@1
- .else
- in_ @2,@0
- ori @2,exp2(@1)
- out_ @0,@2
- .endif
- .endmacro
-
- .macro cbi_
- .if (@0 < $40)
- cbi @0,@1
- .else
- in_ @2,@0
- andi @2,~(exp2(@1))
- out_ @0,@2
- .endif
- .endmacro
-
- .macro jmp_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- jmp @0
- .else
- rjmp @0
- .endif
- .else
- jmp @0
- .endif
- .endmacro
- .macro call_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- call @0
- .else
- rcall @0
- .endif
- .else
- call @0
- .endif
- .endmacro
-
- ; F_CPU
- ; µsec 16000000 14745600 8000000 1000000
- ; 1 16 14,74 8 1
- ; 10 160 147,45 80 10
- ; 100 1600 1474,56 800 100
- ; 1000 16000 14745,6 8000 1000
- ;
- ; cycles = µsec * f_cpu / 1e6
- ; n_loops=cycles/5
- ;
- ; cycles already used will be subtracted from the delay
- ; the waittime resolution is 1 cycle (delay from exact to +1 cycle)
- ; the maximum delay at 20MHz (50ns/clock) is 38350ns
- ; waitcount register must specify an immediate register
- ;
- ; busy waits a specfied amount of microseconds
- .macro delay
- .set cycles = ( ( @0 * F_CPU ) / 1000000 )
- .if (cycles > ( 256 * 255 * 4 + 2))
- .error "MACRO delay - too many cycles to burn"
- .else
- .if (cycles > 6)
- .set loop_cycles = (cycles / 4)
- ldi zl,low(loop_cycles)
- ldi zh,high(loop_cycles)
- sbiw Z, 1
- brne pc-1
- .set cycles = (cycles - (loop_cycles * 4))
- .endif
- .if (cycles > 0)
- .if (cycles & 4)
- rjmp pc+1
- rjmp pc+1
- .endif
- .if (cycles & 2)
- rjmp pc+1
- .endif
- .if (cycles & 1)
- nop
- .endif
- .endif
- .endif
- .endmacro
-
- ; portability macros, they come from the msp430 branches
-
- .macro DEST
- .dw @0
- .endm
-
- ; controller specific file selected via include
- ; directory definition when calling the assembler (-I)
- .include "device.asm"
-
- ; generated automatically, do not edit
-
- .list
-
- .equ ramstart = 96
- .equ CELLSIZE = 2
- .macro readflashcell
- lsl zl
- rol zh
- lpm @0, Z+
- lpm @1, Z+
- .endmacro
- .macro writeflashcell
- lsl zl
- rol zh
- .endmacro
- .set WANT_TIMER_COUNTER_0 = 0
- .set WANT_TIMER_COUNTER_1 = 0
- .set WANT_EXTERNAL_INTERRUPT = 0
- .set WANT_EEPROM = 0
- .set WANT_CPU = 0
- .set WANT_TIMER_COUNTER_2 = 0
- .set WANT_SPI = 0
- .set WANT_USART = 0
- .set WANT_TWI = 0
- .set WANT_ANALOG_COMPARATOR = 0
- .set WANT_AD_CONVERTER = 0
- .set WANT_JTAG = 0
- .set WANT_BOOT_LOAD = 0
- .set WANT_PORTA = 0
- .set WANT_PORTB = 0
- .set WANT_PORTC = 0
- .set WANT_PORTD = 0
- .set WANT_WATCHDOG = 0
- .equ intvecsize = 2 ; please verify; flash size: 16384 bytes
- .equ pclen = 2 ; please verify
- .overlap
- .org 2
-000002 d11b rcall isr ; External Interrupt Request 0
- .org 4
-000004 d119 rcall isr ; External Interrupt Request 1
- .org 6
-000006 d117 rcall isr ; Timer/Counter2 Compare Match
- .org 8
-000008 d115 rcall isr ; Timer/Counter2 Overflow
- .org 10
-00000a d113 rcall isr ; Timer/Counter1 Capture Event
- .org 12
-00000c d111 rcall isr ; Timer/Counter1 Compare Match A
- .org 14
-00000e d10f rcall isr ; Timer/Counter1 Compare Match B
- .org 16
-000010 d10d rcall isr ; Timer/Counter1 Overflow
- .org 18
-000012 d10b rcall isr ; Timer/Counter0 Overflow
- .org 20
-000014 d109 rcall isr ; Serial Transfer Complete
- .org 22
-000016 d107 rcall isr ; USART, Rx Complete
- .org 24
-000018 d105 rcall isr ; USART Data Register Empty
- .org 26
-00001a d103 rcall isr ; USART, Tx Complete
- .org 28
-00001c d101 rcall isr ; ADC Conversion Complete
- .org 30
-00001e d0ff rcall isr ; EEPROM Ready
- .org 32
-000020 d0fd rcall isr ; Analog Comparator
- .org 34
-000022 d0fb rcall isr ; 2-wire Serial Interface
- .org 36
-000024 d0f9 rcall isr ; External Interrupt Request 2
- .org 38
-000026 d0f7 rcall isr ; Timer/Counter0 Compare Match
- .org 40
-000028 d0f5 rcall isr ; Store Program Memory Ready
- .equ INTVECTORS = 21
- .nooverlap
-
- ; compatability layer (maybe empty)
- .equ EEPE = EEWE
- .equ EEMPE = EEMWE
-
- ; controller data area, environment query mcu-info
- mcu_info:
- mcu_ramsize:
-000029 0400 .dw 1024
- mcu_eepromsize:
-00002a 0200 .dw 512
- mcu_maxdp:
-00002b 3800 .dw 14336
- mcu_numints:
-00002c 0015 .dw 21
- mcu_name:
-00002d 0008 .dw 8
-00002e 5441
-00002f 656d
-000030 6167
-000031 3631 .db "ATmega16"
- .set codestart=pc
-
- ; some defaults, change them in your application master file
- ; see template.asm for an example
-
- ; enabling Interrupts, disabling them affects
- ; other settings as well.
- .set WANT_INTERRUPTS = 1
-
- ; count the number of interrupts individually.
- ; requires a lot of RAM (one byte per interrupt)
- ; disabled by default.
- .set WANT_INTERRUPT_COUNTERS = 0
-
- ; receiving is asynchronously, so an interrupt queue is useful.
- .set WANT_ISR_RX = 1
-
- ; case insensitve dictionary lookup.
- .set WANT_IGNORECASE = 0
-
- ; map all memories to one address space. Details in the
- ; technical guide
- .set WANT_UNIFIED = 0
-
- ; terminal input buffer
- .set TIB_SIZE = 90 ; ANS94 needs at least 80 characters per line
-
- ; USER variables *in addition* to system ones
- .set APPUSERSIZE = 10 ; size of application specific user area in bytes
-
- ; addresses of various data segments
- .set rstackstart = RAMEND ; start address of return stack, grows downward
- .set stackstart = RAMEND - 80 ; start address of data stack, grows downward
- ; change only if you know what to you do
- .set NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8
- .set NUMRECOGNIZERS = 4 ; total number of recognizers, two are always used.
-
- ; 10 per mille (1 per cent) is ok.
- .set BAUD = 38400
- .set BAUD_MAXERROR = 10
-
- ; Dictionary setup
- .set VE_HEAD = $0000
- .set VE_ENVHEAD = $0000
-
- .set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
- ; cpu clock in hertz
- .equ F_CPU = 8000000
- .set BAUD_MAXERROR = 30
- .equ TIMER_INT = OVF2addr
-
- .include "drivers/usart.asm"
-
- .equ BAUDRATE_LOW = UBRRL+$20
- .equ BAUDRATE_HIGH = UBRRH+$20
- .equ USART_C = UCSRC+$20
- .equ USART_B = UCSRB+$20
- .equ USART_A = UCSRA+$20
- .equ USART_DATA = UDR+$20
- .equ bm_USARTC_en = 1 << 7
-
- ; some generic constants
- .equ bm_USART_RXRD = 1 << RXC
- .equ bm_USART_TXRD = 1 << UDRE
- .equ bm_ENABLE_TX = 1 << TXEN
- .equ bm_ENABLE_RX = 1 << RXEN
- .equ bm_ENABLE_INT_RX = 1<<RXCIE
- .equ bm_ENABLE_INT_TX = 1<<UDRE
-
- .equ bm_ASYNC = 0 << 6
- .equ bm_SYNC = 1 << 6
- .equ bm_NO_PARITY = 0 << 4
- .equ bm_EVEN_PARITY = 2 << 4
- .equ bm_ODD_PARITY = 3 << 4
- .equ bm_1STOPBIT = 0 << 3
- .equ bm_2STOPBIT = 1 << 3
- .equ bm_5BIT = 0 << 1
- .equ bm_6BIT = 1 << 1
- .equ bm_7BIT = 2 << 1
- .equ bm_8BIT = 3 << 1
-
- .include "drivers/usart_common.asm"
-
- .set USART_C_VALUE = bm_ASYNC | bm_NO_PARITY | bm_1STOPBIT | bm_8BIT
- .if WANT_INTERRUPTS == 0
- .if WANT_ISR_RX == 1
- .endif
- .endif
-
- .if WANT_ISR_RX == 1
- .set USART_B_VALUE = bm_ENABLE_TX | bm_ENABLE_RX | bm_ENABLE_INT_RX
- .include "drivers/usart-rx-buffer.asm"
-
-
- ; sizes have to be powers of 2!
- .equ usart_rx_size = $10
- .equ usart_rx_mask = usart_rx_size - 1
- .dseg
-000060 usart_rx_data: .byte usart_rx_size
-000070 usart_rx_in: .byte 1
-000071 usart_rx_out: .byte 1
- .cseg
-
- VE_TO_RXBUF:
-000032 ff07 .dw $ff07
-000033 723e
-000034 2d78
-000035 7562
-000036 0066 .db ">rx-buf",0
-000037 0000 .dw VE_HEAD
- .set VE_HEAD = VE_TO_RXBUF
- XT_TO_RXBUF:
-000038 0039 .dw PFA_rx_tobuf
- PFA_rx_tobuf:
-000039 2f08 mov temp0, tosl
-00003a 9110 0070 lds temp1, usart_rx_in
-00003c e6e0 ldi zl, low(usart_rx_data)
-00003d e0f0 ldi zh, high(usart_rx_data)
-00003e 0fe1 add zl, temp1
-00003f 1df3 adc zh, zeroh
-000040 8300 st Z, temp0
-000041 9513 inc temp1
-000042 701f andi temp1,usart_rx_mask
-000043 9310 0070 sts usart_rx_in, temp1
-000045 9189
-000046 9199 loadtos
-000047 940c 1c05 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; setup with
- ; ' isr-rx URXCaddr int!
- VE_ISR_RX:
-000049 ff06 .dw $ff06
-00004a 7369
-00004b 2d72
-00004c 7872 .db "isr-rx"
-00004d 0032 .dw VE_HEAD
- .set VE_HEAD = VE_ISR_RX
- XT_ISR_RX:
-00004e 1c01 .dw DO_COLON
- usart_rx_isr:
-00004f 1c3d .dw XT_DOLITERAL
-000050 002c .dw usart_data
-000051 1c98 .dw XT_CFETCH
-000052 1cb1 .dw XT_DUP
-000053 1c3d .dw XT_DOLITERAL
-000054 0003 .dw 3
-000055 1fe0 .dw XT_EQUAL
-000056 1c36 .dw XT_DOCONDBRANCH
-000057 0059 .dw usart_rx_isr1
-000058 0ae0 .dw XT_COLD
- usart_rx_isr1:
-000059 0038 .dw XT_TO_RXBUF
-00005a 1c20 .dw XT_EXIT
-
- ; ( -- ) Hardware Access
- ; R( --)
- ; initialize usart
- ;VE_USART_INIT_RXBUFFER:
- ; .dw $ff0x
- ; .db "+usart-buffer"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_USART_INIT_RXBUFFER
- XT_USART_INIT_RX_BUFFER:
-00005b 1c01 .dw DO_COLON
- PFA_USART_INIT_RX_BUFFER: ; ( -- )
-00005c 1c3d
-00005d 004e .dw XT_DOLITERAL, XT_ISR_RX
-00005e 1c3d
-00005f 0016 .dw XT_DOLITERAL, URXCaddr
-000060 0213 .dw XT_INTSTORE
-
-000061 1c3d .dw XT_DOLITERAL
-000062 0060 .dw usart_rx_data
-000063 1c3d .dw XT_DOLITERAL
-000064 0016 .dw usart_rx_size + 6
-000065 1d54 .dw XT_ZERO
-000066 025d .dw XT_FILL
-000067 1c20 .dw XT_EXIT
-
- ; ( -- c)
- ; MCU
- ; get 1 character from input queue, wait if needed using interrupt driver
- VE_RX_BUFFER:
-000068 ff06 .dw $ff06
-000069 7872
-00006a 622d
-00006b 6675 .db "rx-buf"
-00006c 0049 .dw VE_HEAD
- .set VE_HEAD = VE_RX_BUFFER
- XT_RX_BUFFER:
-00006d 1c01 .dw DO_COLON
- PFA_RX_BUFFER:
-00006e 0088 .dw XT_RXQ_BUFFER
-00006f 1c36 .dw XT_DOCONDBRANCH
-000070 006e .dw PFA_RX_BUFFER
-000071 1c3d .dw XT_DOLITERAL
-000072 0071 .dw usart_rx_out
-000073 1c98 .dw XT_CFETCH
-000074 1cb1 .dw XT_DUP
-000075 1c3d .dw XT_DOLITERAL
-000076 0060 .dw usart_rx_data
-000077 1d9d .dw XT_PLUS
-000078 1c98 .dw XT_CFETCH
-000079 1cc4 .dw XT_SWAP
-00007a 1e2f .dw XT_1PLUS
-00007b 1c3d .dw XT_DOLITERAL
-00007c 000f .dw usart_rx_mask
-00007d 1e13 .dw XT_AND
-00007e 1c3d .dw XT_DOLITERAL
-00007f 0071 .dw usart_rx_out
-000080 1c8d .dw XT_CSTORE
-000081 1c20 .dw XT_EXIT
-
- ; ( -- f)
- ; MCU
- ; check if unread characters are in the input queue
- VE_RXQ_BUFFER:
-000082 ff07 .dw $ff07
-000083 7872
-000084 2d3f
-000085 7562
-000086 0066 .db "rx?-buf",0
-000087 0068 .dw VE_HEAD
- .set VE_HEAD = VE_RXQ_BUFFER
- XT_RXQ_BUFFER:
-000088 1c01 .dw DO_COLON
- PFA_RXQ_BUFFER:
-000089 0ad8 .dw XT_PAUSE
-00008a 1c3d .dw XT_DOLITERAL
-00008b 0071 .dw usart_rx_out
-00008c 1c98 .dw XT_CFETCH
-00008d 1c3d .dw XT_DOLITERAL
-00008e 0070 .dw usart_rx_in
-00008f 1c98 .dw XT_CFETCH
-000090 1d13 .dw XT_NOTEQUAL
-000091 1c20 .dw XT_EXIT
- ; .include "drivers/timer-usart-isr.asm"
- .set XT_RX = XT_RX_BUFFER
- .set XT_RXQ = XT_RXQ_BUFFER
- .set XT_USART_INIT_RX = XT_USART_INIT_RX_BUFFER
- .else
- .endif
-
- .include "words/usart-tx-poll.asm"
-
- ; MCU
- ; check availability and send one character to the terminal using register poll
- VE_TX_POLL:
-000092 ff07 .dw $ff07
-000093 7874
-000094 702d
-000095 6c6f
-000096 006c .db "tx-poll",0
-000097 0082 .dw VE_HEAD
- .set VE_HEAD = VE_TX_POLL
- XT_TX_POLL:
-000098 1c01 .dw DO_COLON
- PFA_TX_POLL:
- ; wait for data ready
-000099 00a6 .dw XT_TXQ_POLL
-00009a 1c36 .dw XT_DOCONDBRANCH
-00009b 0099 .dw PFA_TX_POLL
- ; send to usart
-00009c 1c3d .dw XT_DOLITERAL
-00009d 002c .dw USART_DATA
-00009e 1c8d .dw XT_CSTORE
-00009f 1c20 .dw XT_EXIT
-
- ; ( -- f) MCU
- ; MCU
- ; check if a character can be send using register poll
- VE_TXQ_POLL:
-0000a0 ff08 .dw $ff08
-0000a1 7874
-0000a2 2d3f
-0000a3 6f70
-0000a4 6c6c .db "tx?-poll"
-0000a5 0092 .dw VE_HEAD
- .set VE_HEAD = VE_TXQ_POLL
- XT_TXQ_POLL:
-0000a6 1c01 .dw DO_COLON
- PFA_TXQ_POLL:
-0000a7 0ad8 .dw XT_PAUSE
-0000a8 1c3d .dw XT_DOLITERAL
-0000a9 002b .dw USART_A
-0000aa 1c98 .dw XT_CFETCH
-0000ab 1c3d .dw XT_DOLITERAL
-0000ac 0020 .dw bm_USART_TXRD
-0000ad 1e13 .dw XT_AND
-0000ae 1c20 .dw XT_EXIT
- .set XT_TX = XT_TX_POLL
- .set XT_TXQ = XT_TXQ_POLL
- .set XT_USART_INIT_TX = 0
-
- .include "words/ubrr.asm"
-
- ; MCU
- ; returns usart UBRR settings
- VE_UBRR:
-0000af ff04 .dw $ff04
-0000b0 6275
-0000b1 7272 .db "ubrr"
-0000b2 00a0 .dw VE_HEAD
- .set VE_HEAD = VE_UBRR
- XT_UBRR:
-0000b3 1c6f .dw PFA_DOVALUE1
- PFA_UBRR: ; ( -- )
-0000b4 0082 .dw EE_UBRRVAL
-0000b5 0c3b .dw XT_EDEFERFETCH
-0000b6 0c45 .dw XT_EDEFERSTORE
- .include "words/usart.asm"
-
- ; MCU
- ; initialize usart
- VE_USART:
-0000b7 ff06 .dw $ff06
-0000b8 752b
-0000b9 6173
-0000ba 7472 .db "+usart"
-0000bb 00af .dw VE_HEAD
- .set VE_HEAD = VE_USART
- XT_USART:
-0000bc 1c01 .dw DO_COLON
- PFA_USART: ; ( -- )
-
-0000bd 1c3d .dw XT_DOLITERAL
-0000be 0098 .dw USART_B_VALUE
-0000bf 1c3d .dw XT_DOLITERAL
-0000c0 002a .dw USART_B
-0000c1 1c8d .dw XT_CSTORE
-
-0000c2 1c3d .dw XT_DOLITERAL
-0000c3 0006 .dw USART_C_VALUE
-0000c4 1c3d .dw XT_DOLITERAL
-0000c5 00c0 .dw USART_C | bm_USARTC_en
-0000c6 1c8d .dw XT_CSTORE
-
-0000c7 00b3 .dw XT_UBRR
-0000c8 1cb1 .dw XT_DUP
-0000c9 1ef9 .dw XT_BYTESWAP
-0000ca 1c3d .dw XT_DOLITERAL
-0000cb 0040 .dw BAUDRATE_HIGH
-0000cc 1c8d .dw XT_CSTORE
-0000cd 1c3d .dw XT_DOLITERAL
-0000ce 0029 .dw BAUDRATE_LOW
-0000cf 1c8d .dw XT_CSTORE
- .if XT_USART_INIT_RX!=0
-0000d0 005b .dw XT_USART_INIT_RX
- .endif
- .if XT_USART_INIT_TX!=0
- .endif
-
-0000d1 1c20 .dw XT_EXIT
-
- ; settings for 1wire interface
- .equ OW_PORT=PORTB
- .EQU OW_BIT=4
- .include "drivers/1wire.asm"
-
- ; B. J. Rodriguez (MSP 430)
- ; Matthias Trute (AVR Atmega)
- ; COPYRIGHT
- ; (c) 2012 Bradford J. Rodriguez for the 430 code and API
-
- ; adapted 430 assembly code to AVR
- ; wishlist:
- ; use a configurable pin at runtime, compatible with bitnames.frt
- ; no external pull up, no external power supply for devices
- ; ???
- ;
- ;.EQU OW_BIT=4
- ;.equ OW_PORT=PORTE
- .set OW_DDR=(OW_PORT-1)
- .set OW_PIN=(OW_DDR-1)
-
- ;****f* 1W.RESET
- ; NAME
- ; 1W.RESET
- ; SYNOPSIS
- ; 1W.RESET ( -- f ) Initialize 1-wire devices; return true if present
- ; DESCRIPTION
- ; This configures the port pin used by the 1-wire interface, and then
- ; sends an "initialize" sequence to the 1-wire devices. If any device
- ; is present, it will be detected.
- ;
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" (drive output low) for >480 usec.
- ; b) Output "1" (let output float).
- ; c) After 15 to 60 usec, device will drive pin low for 60 to 240 usec.
- ; So, wait 75 usec and sample input.
- ; d) Leave output high (floating) for at least 480 usec.
- ;******
- ; ( -- f )
- ; Hardware
- ; Initialize 1-wire devices; return true if present
- VE_OW_RESET:
-0000d2 ff08 .dw $ff08
-0000d3 7731
-0000d4 722e
-0000d5 7365
-0000d6 7465 .db "1w.reset"
-0000d7 00b7 .dw VE_HEAD
- .set VE_HEAD = VE_OW_RESET
- XT_OW_RESET:
-0000d8 00d9 .dw PFA_OW_RESET
- PFA_OW_RESET:
-0000d9 939a
-0000da 938a savetos
- ; setup to output
-0000db 9abc sbi OW_DDR, OW_BIT
- ; Pull output low
-0000dc 98c4 cbi OW_PORT, OW_BIT
- ; Delay >480 usec
-0000dd ece0
-0000de e0f3
-0000df 9731
-0000e0 f7f1 DELAY 480
- ; Critical timing period, disable interrupts.
-0000e1 b71f in temp1, SREG
-0000e2 94f8 cli
- ; Pull output high
-0000e3 9ac4 sbi OW_PORT, OW_BIT
- ; make pin input, sends "1"
-0000e4 98bc cbi OW_DDR, OW_BIT
-0000e5 e8e0
-0000e6 e0f0
-0000e7 9731
-0000e8 f7f1 DELAY 64 ; delayB
- ; Sample input pin, set TOS if input is zero
-0000e9 b386 in tosl, OW_PIN
-0000ea ff84 sbrs tosl, OW_BIT
-0000eb ef9f ser tosh
- ; End critical timing period, enable interrupts
-0000ec bf1f out SREG, temp1
- ; release bus
-0000ed 98bc cbi OW_DDR, OW_BIT
-0000ee 98c4 cbi OW_PORT, OW_BIT
-
- ; Delay rest of 480 usec
-0000ef e4e0
-0000f0 e0f3
-0000f1 9731
-0000f2 f7f1 DELAY 416
- ; we now have the result flag in TOS
-0000f3 2f89 mov tosl, tosh
-0000f4 940c 1c05 jmp_ DO_NEXT
-
- ;****f* 1W.SLOT
- ; NAME
- ; 1W.SLOT
- ; SYNOPSIS
- ; 1W.SLOT ( c -- c' ) Write and read one bit to/from 1-wire.
- ; DESCRIPTION
- ; The "touch byte" function is described in Dallas App Note 74.
- ; It outputs a byte to the 1-wire pin, LSB first, and reads back
- ; the state of the 1-wire pin after a suitable delay.
- ; To read a byte, output $FF and read the reply data.
- ; To write a byte, output that byte and discard the reply.
- ;
- ; This function performs one bit of the "touch" operation --
- ; one read/write "slot" in Dallas jargon. Perform this eight
- ; times in a row to get the "touch byte" function.
- ;
- ; PARAMETERS
- ; The input parameter is xxxxxxxxbbbbbbbo where
- ; 'xxxxxxxx' are don't cares,
- ; 'bbbbbbb' are bits to be shifted down, and
- ; 'o' is the bit to be output in the slot. This must be 1
- ; to create a read slot.
- ;
- ; The returned value is xxxxxxxxibbbbbbb where
- ; 'xxxxxxxx' are not known (the input shifted down 1 position),
- ; 'i' is the bit read during the slot. This has no meaning
- ; if it was a write slot.
- ; 'bbbbbbb' are the 7 input bits, shifted down one position.
- ;
- ; This peculiar parameter usage allows OWTOUCH to be written as
- ; OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT
- ;
- ; NOTES
- ; Interrupts are disabled during each bit.
-
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" for start period. (> 1 us, < 15 us, typ. 6 us*)
- ; b) Output data bit (0 or 1), open drain
- ; c) After MS from start of cycle, sample input (15 to 60 us, typ. 25 us*)
- ; d) After write-0 period from start of cycle, output "1" (>60 us)
- ; e) After recovery period, loop or return. (> 1 us)
- ; For writes, DS18B20 samples input 15 to 60 usec from start of cycle.
- ; * "Typical" values are per App Note 132 for a 300m cable length.
-
- ; --------- -------------------------------
- ; \ / /
- ; -------------------------------
- ; a b c d e
- ; | 6us | 19us | 35us | 2us |
- ;******
- ; ( c -- c' )
- ; Hardware
- ; Write and read one bit to/from 1-wire.
- VE_OW_SLOT:
-0000f6 ff07 .dw $ff07
-0000f7 7731
-0000f8 732e
-0000f9 6f6c
-0000fa 0074 .db "1w.slot",0
-0000fb 00d2 .dw VE_HEAD
- .set VE_HEAD = VE_OW_SLOT
- XT_OW_SLOT:
-0000fc 00fd .dw PFA_OW_SLOT
- PFA_OW_SLOT:
- ; pull low
-0000fd 98c4 cbi OW_PORT, OW_BIT
-0000fe 9abc sbi OW_DDR, OW_BIT
- ; disable interrupts
-0000ff b71f in temp1, SREG
-000100 94f8 cli
-000101 e0ec
-000102 e0f0
-000103 9731
-000104 f7f1 DELAY 6 ; DELAY A
- ; check bit
-000105 9488 clc
-000106 9587 ror tosl
-000107 f410 brcc PFA_OW_SLOT0 ; a 0 keeps the bus low
- ; release bus, a 1 is written
-000108 9ac4 sbi OW_PORT, OW_BIT
-000109 98bc cbi OW_DDR, OW_BIT
- PFA_OW_SLOT0:
- ; sample the input (no action required if zero)
-00010a e1e2
-00010b e0f0
-00010c 9731
-00010d f7f1 DELAY 9 ; wait DELAY E to sample
-00010e b306 in temp0, OW_PIN
-00010f fd04 sbrc temp0, OW_BIT
-000110 6880 ori tosl, $80
-
-000111 e6e6
-000112 e0f0
-000113 9731
-000114 f7f1 DELAY 51 ; DELAY B
-000115 9ac4 sbi OW_PORT, OW_BIT ; release bus
-000116 98bc cbi OW_DDR, OW_BIT
-000117 e0e4
-000118 e0f0
-000119 9731
-00011a f7f1 delay 2
- ; re-enable interrupts
-00011b bf1f out SREG, temp1
-00011c 940c 1c05 jmp_ DO_NEXT
-
- .include "amforth.asm"
-
- ;;;;
- ;;;; GPL V2 (only)
-
- .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2
-
- .set corepc = pc
- .org $0000
-000000 940c 0ae1 jmp_ PFA_COLD
-
- .org corepc
- .include "drivers/generic-isr.asm"
-
- .eseg
-000000 intvec: .byte INTVECTORS * CELLSIZE
- .dseg
-000072 intcnt: .byte INTVECTORS
- .cseg
-
- ; interrupt routine gets called (again) by rcall! This gives the
- ; address of the int-vector on the stack.
- isr:
-00011e 920a st -Y, r0
-00011f b60f in r0, SREG
-000120 920a st -Y, r0
- .if (pclen==3)
- .endif
-000121 900f pop r0
-000122 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall)
-000123 940a dec r0
- .if intvecsize == 1 ;
- .endif
-000124 2cb0 mov isrflag, r0
-000125 93ff push zh
-000126 93ef push zl
-000127 e7e2 ldi zl, low(intcnt)
-000128 e0f0 ldi zh, high(intcnt)
-000129 9406 lsr r0 ; we use byte addresses in the counter array, not words
-00012a 0de0 add zl, r0
-00012b 1df3 adc zh, zeroh
-00012c 8000 ld r0, Z
-00012d 9403 inc r0
-00012e 8200 st Z, r0
-00012f 91ef pop zl
-000130 91ff pop zh
-
-000131 9009 ld r0, Y+
-000132 be0f out SREG, r0
-000133 9009 ld r0, Y+
-000134 9508 ret ; returns the interrupt, the rcall stack frame is removed!
- ; no reti here, see words/isr-end.asm
- ; lower part of the dictionary
- .include "dict/rww.inc"
-
-
- ; Arithmetics
- ; add a number to a double cell
- VE_MPLUS:
-000135 ff02 .dw $ff02
-000136 2b6d .db "m+"
-000137 00f6 .dw VE_HEAD
- .set VE_HEAD = VE_MPLUS
- XT_MPLUS:
-000138 1c01 .dw DO_COLON
- PFA_MPLUS:
-000139 0dee .dw XT_S2D
-00013a 019c .dw XT_DPLUS
-00013b 1c20 .dw XT_EXIT
- .include "words/ud-star.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSTAR:
-00013c ff03 .dw $ff03
-00013d 6475
-../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte
-00013e 002a .db "ud*"
-00013f 0135 .dw VE_HEAD
- .set VE_HEAD = VE_UDSTAR
- XT_UDSTAR:
-000140 1c01 .dw DO_COLON
- PFA_UDSTAR:
-
- .endif
- ;Z UD* ud1 d2 -- ud3 32*16->32 multiply
- ; XT_DUP >R UM* DROP XT_SWAP R> UM* ROT + ;
-
-000141 1cb1
-000142 1cff
-000143 1de0
-000144 1cd9 .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP
-000145 1cc4
-000146 1cf6
-000147 1de0
-000148 1ce1
-000149 1d9d
-00014a 1c20 .DW XT_SWAP,XT_R_FROM,XT_UMSTAR,XT_ROT,XT_PLUS,XT_EXIT
- .include "words/umax.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMAX:
-00014b ff04 .dw $ff04
-00014c 6d75
-00014d 7861 .db "umax"
-00014e 013c .dw VE_HEAD
- .set VE_HEAD = VE_UMAX
- XT_UMAX:
-00014f 1c01 .dw DO_COLON
- PFA_UMAX:
- .endif
-
-000150 05eb
-000151 1d5c .DW XT_2DUP,XT_ULESS
-000152 1c36 .dw XT_DOCONDBRANCH
-000153 0155 DEST(UMAX1)
-000154 1cc4 .DW XT_SWAP
-000155 1cd9 UMAX1: .DW XT_DROP
-000156 1c20 .dw XT_EXIT
- .include "words/umin.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMIN:
-000157 ff04 .dw $ff04
-000158 6d75
-000159 6e69 .db "umin"
-00015a 014b .dw VE_HEAD
- .set VE_HEAD = VE_UMIN
- XT_UMIN:
-00015b 1c01 .dw DO_COLON
- PFA_UMIN:
- .endif
-00015c 05eb
-00015d 1d67 .DW XT_2DUP,XT_UGREATER
-00015e 1c36 .dw XT_DOCONDBRANCH
-00015f 0161 DEST(UMIN1)
-000160 1cc4 .DW XT_SWAP
-000161 1cd9 UMIN1: .DW XT_DROP
-000162 1c20 .dw XT_EXIT
- .include "words/immediate-q.asm"
-
- ; Tools
- ; return +1 if immediate, -1 otherwise, flag from name>flags
- ;VE_IMMEDIATEQ:
- ; .dw $ff06
- ; .db "immediate?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_IMMEDIATEQ
- XT_IMMEDIATEQ:
-000163 1c01 .dw DO_COLON
- PFA_IMMEDIATEQ:
-000164 1c3d .dw XT_DOLITERAL
-000165 8000 .dw $8000
-000166 1e13 .dw XT_AND
-000167 1d1a .dw XT_ZEROEQUAL
-000168 1c36 .dw XT_DOCONDBRANCH
-000169 016c DEST(IMMEDIATEQ1)
-00016a 1fe7 .dw XT_ONE
-00016b 1c20 .dw XT_EXIT
- IMMEDIATEQ1:
- ; not immediate
-00016c 1d4b .dw XT_TRUE
-00016d 1c20 .dw XT_EXIT
- .include "words/name2flags.asm"
-
- ; Tools
- ; get the flags from a name token
- VE_NAME2FLAGS:
-00016e ff0a .dw $ff0a
-00016f 616e
-000170 656d
-000171 663e
-000172 616c
-000173 7367 .db "name>flags"
-000174 0157 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2FLAGS
- XT_NAME2FLAGS:
-000175 1c01 .dw DO_COLON
- PFA_NAME2FLAGS:
-000176 1fcb .dw XT_FETCHI ; skip to link field
-000177 1c3d .dw XT_DOLITERAL
-000178 ff00 .dw $ff00
-000179 1e13 .dw XT_AND
-00017a 1c20 .dw XT_EXIT
-
- .if AMFORTH_NRWW_SIZE > 8000
- .elif AMFORTH_NRWW_SIZE > 4000
- .elif AMFORTH_NRWW_SIZE > 2000
- .include "dict/appl_2k.inc"
-
-
- ; Arithmetics
- ; shift a double cell left
- VE_D2STAR:
-00017b ff03 .dw $ff03
-00017c 3264
-00017d 002a .db "d2*",0
-00017e 016e .dw VE_HEAD
- .set VE_HEAD = VE_D2STAR
- XT_D2STAR:
-00017f 0180 .dw PFA_D2STAR
- PFA_D2STAR:
-000180 9109 ld temp0, Y+
-000181 9119 ld temp1, Y+
-000182 0f00 lsl temp0
-000183 1f11 rol temp1
-000184 1f88 rol tosl
-000185 1f99 rol tosh
-000186 931a st -Y, temp1
-000187 930a st -Y, temp0
-000188 940c 1c05 jmp_ DO_NEXT
- .include "words/d-2slash.asm"
-
- ; Arithmetics
- ; shift a double cell value right
- VE_D2SLASH:
-00018a ff03 .dw $ff03
-00018b 3264
-00018c 002f .db "d2/",0
-00018d 017b .dw VE_HEAD
- .set VE_HEAD = VE_D2SLASH
- XT_D2SLASH:
-00018e 018f .dw PFA_D2SLASH
- PFA_D2SLASH:
-00018f 9109 ld temp0, Y+
-000190 9119 ld temp1, Y+
-000191 9595 asr tosh
-000192 9587 ror tosl
-000193 9517 ror temp1
-000194 9507 ror temp0
-000195 931a st -Y, temp1
-000196 930a st -Y, temp0
-000197 940c 1c05 jmp_ DO_NEXT
- .include "words/d-plus.asm"
-
- ; Arithmetics
- ; add 2 double cell values
- VE_DPLUS:
-000199 ff02 .dw $ff02
-00019a 2b64 .db "d+"
-00019b 018a .dw VE_HEAD
- .set VE_HEAD = VE_DPLUS
- XT_DPLUS:
-00019c 019d .dw PFA_DPLUS
- PFA_DPLUS:
-00019d 9129 ld temp2, Y+
-00019e 9139 ld temp3, Y+
-
-00019f 90e9 ld temp4, Y+
-0001a0 90f9 ld temp5, Y+
-0001a1 9149 ld temp6, Y+
-0001a2 9159 ld temp7, Y+
-
-0001a3 0f24 add temp2, temp6
-0001a4 1f35 adc temp3, temp7
-0001a5 1d8e adc tosl, temp4
-0001a6 1d9f adc tosh, temp5
-
-0001a7 933a st -Y, temp3
-0001a8 932a st -Y, temp2
-0001a9 940c 1c05 jmp_ DO_NEXT
- .include "words/d-minus.asm"
-
- ; Arithmetics
- ; subtract d2 from d1
- VE_DMINUS:
-0001ab ff02 .dw $ff02
-0001ac 2d64 .db "d-"
-0001ad 0199 .dw VE_HEAD
- .set VE_HEAD = VE_DMINUS
- XT_DMINUS:
-0001ae 01af .dw PFA_DMINUS
- PFA_DMINUS:
-0001af 9129 ld temp2, Y+
-0001b0 9139 ld temp3, Y+
-
-0001b1 90e9 ld temp4, Y+
-0001b2 90f9 ld temp5, Y+
-0001b3 9149 ld temp6, Y+
-0001b4 9159 ld temp7, Y+
-
-0001b5 1b42 sub temp6, temp2
-0001b6 0b53 sbc temp7, temp3
-0001b7 0ae8 sbc temp4, tosl
-0001b8 0af9 sbc temp5, tosh
-
-0001b9 935a st -Y, temp7
-0001ba 934a st -Y, temp6
-0001bb 01c7 movw tosl, temp4
-0001bc 940c 1c05 jmp_ DO_NEXT
- .include "words/d-invert.asm"
-
- ; Arithmetics
- ; invert all bits in the double cell value
- VE_DINVERT:
-0001be ff07 .dw $ff07
-0001bf 6964
-0001c0 766e
-0001c1 7265
-0001c2 0074 .db "dinvert",0
-0001c3 01ab .dw VE_HEAD
- .set VE_HEAD = VE_DINVERT
- XT_DINVERT:
-0001c4 01c5 .dw PFA_DINVERT
- PFA_DINVERT:
-0001c5 9109 ld temp0, Y+
-0001c6 9119 ld temp1, Y+
-0001c7 9580 com tosl
-0001c8 9590 com tosh
-0001c9 9500 com temp0
-0001ca 9510 com temp1
-0001cb 931a st -Y, temp1
-0001cc 930a st -Y, temp0
-0001cd 940c 1c05 jmp_ DO_NEXT
- .include "words/u-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDOT:
-0001cf ff02 .dw $ff02
-0001d0 2e75 .db "u."
-0001d1 01be .dw VE_HEAD
- .set VE_HEAD = VE_UDOT
- XT_UDOT:
-0001d2 1c01 .dw DO_COLON
- PFA_UDOT:
- .endif
-0001d3 1d54 .dw XT_ZERO
-0001d4 07b1 .dw XT_UDDOT
-0001d5 1c20 .dw XT_EXIT
- ; : u. ( us -- ) 0 ud. ;
- .include "words/u-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cells numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDOTR:
-0001d6 ff03 .dw $ff03
-0001d7 2e75
-0001d8 0072 .db "u.r",0
-0001d9 01cf .dw VE_HEAD
- .set VE_HEAD = VE_UDOTR
- XT_UDOTR:
-0001da 1c01 .dw DO_COLON
- PFA_UDOTR:
- .endif
-0001db 1d54 .dw XT_ZERO
-0001dc 1cc4 .dw XT_SWAP
-0001dd 07ba .dw XT_UDDOTR
-0001de 1c20 .dw XT_EXIT
- ; : u.r ( s n -- ) 0 swap ud.r ;
-
- .include "words/show-wordlist.asm"
-
- ; Tools
- ; prints the name of the words in a wordlist
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHOWWORDLIST:
-0001df ff0d .dw $ff0d
-0001e0 6873
-0001e1 776f
-0001e2 772d
-0001e3 726f
-0001e4 6c64
-0001e5 7369
-0001e6 0074 .db "show-wordlist",0
-0001e7 01d6 .dw VE_HEAD
- .set VE_HEAD = VE_SHOWWORDLIST
- XT_SHOWWORDLIST:
-0001e8 1c01 .dw DO_COLON
- PFA_SHOWWORDLIST:
- .endif
-0001e9 1c3d .dw XT_DOLITERAL
-0001ea 01ee .dw XT_SHOWWORD
-0001eb 1cc4 .dw XT_SWAP
-0001ec 0cde .dw XT_TRAVERSEWORDLIST
-0001ed 1c20 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SHOWWORD:
-0001ee 1c01 .dw DO_COLON
- PFA_SHOWWORD:
- .endif
-0001ef 0cf9 .dw XT_NAME2STRING
-0001f0 0827 .dw XT_ITYPE
-0001f1 0869 .dw XT_SPACE ; ( -- addr n)
-0001f2 1d4b .dw XT_TRUE
-0001f3 1c20 .dw XT_EXIT
- .include "words/words.asm"
-
- ; Tools
- ; prints a list of all (visible) words in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_WORDS:
-0001f4 ff05 .dw $ff05
-0001f5 6f77
-0001f6 6472
-0001f7 0073 .db "words",0
-0001f8 01df .dw VE_HEAD
- .set VE_HEAD = VE_WORDS
- XT_WORDS:
-0001f9 1c01 .dw DO_COLON
- PFA_WORDS:
- .endif
-0001fa 1c3d .dw XT_DOLITERAL
-0001fb 0042 .dw CFG_ORDERLISTLEN+2
-0001fc 1f5f .dw XT_FETCHE
-0001fd 01e8 .dw XT_SHOWWORDLIST
-0001fe 1c20 .dw XT_EXIT
- .include "dict/interrupt.inc"
-
- .if WANT_INTERRUPTS == 1
-
- .if WANT_INTERRUPT_COUNTERS == 1
- .endif
-
- .include "words/int-on.asm"
-
- ; Interrupt
- ; turns on all interrupts
- VE_INTON:
-0001ff ff04 .dw $ff04
-000200 692b
-000201 746e .db "+int"
-000202 01f4 .dw VE_HEAD
- .set VE_HEAD = VE_INTON
- XT_INTON:
-000203 0204 .dw PFA_INTON
- PFA_INTON:
-000204 9478 sei
-000205 940c 1c05 jmp_ DO_NEXT
- .include "words/int-off.asm"
-
- ; Interrupt
- ; turns off all interrupts
- VE_INTOFF:
-000207 ff04 .dw $ff04
-000208 692d
-000209 746e .db "-int"
-00020a 01ff .dw VE_HEAD
- .set VE_HEAD = VE_INTOFF
- XT_INTOFF:
-00020b 020c .dw PFA_INTOFF
- PFA_INTOFF:
-00020c 94f8 cli
-00020d 940c 1c05 jmp_ DO_NEXT
- .include "words/int-store.asm"
-
- ; Interrupt
- ; stores XT as interrupt vector i
- VE_INTSTORE:
-00020f ff04 .dw $ff04
-000210 6e69
-000211 2174 .db "int!"
-000212 0207 .dw VE_HEAD
- .set VE_HEAD = VE_INTSTORE
- XT_INTSTORE:
-000213 1c01 .dw DO_COLON
- PFA_INTSTORE:
-000214 1c3d .dw XT_DOLITERAL
-000215 0000 .dw intvec
-000216 1d9d .dw XT_PLUS
-000217 1f3b .dw XT_STOREE
-000218 1c20 .dw XT_EXIT
- .include "words/int-fetch.asm"
-
- ; Interrupt
- ; fetches XT from interrupt vector i
- VE_INTFETCH:
-000219 ff04 .dw $ff04
-00021a 6e69
-00021b 4074 .db "int@"
-00021c 020f .dw VE_HEAD
- .set VE_HEAD = VE_INTFETCH
- XT_INTFETCH:
-00021d 1c01 .dw DO_COLON
- PFA_INTFETCH:
-00021e 1c3d .dw XT_DOLITERAL
-00021f 0000 .dw intvec
-000220 1d9d .dw XT_PLUS
-000221 1f5f .dw XT_FETCHE
-000222 1c20 .dw XT_EXIT
- .include "words/int-trap.asm"
-
- ; Interrupt
- ; trigger an interrupt
- VE_INTTRAP:
-000223 ff08 .dw $ff08
-000224 6e69
-000225 2d74
-000226 7274
-000227 7061 .db "int-trap"
-000228 0219 .dw VE_HEAD
- .set VE_HEAD = VE_INTTRAP
- XT_INTTRAP:
-000229 022a .dw PFA_INTTRAP
- PFA_INTTRAP:
-00022a 2eb8 mov isrflag, tosl
-00022b 9189
-00022c 9199 loadtos
-00022d 940c 1c05 jmp_ DO_NEXT
-
- .include "words/isr-exec.asm"
-
- ; Interrupt
- ; executes an interrupt service routine
- ;VE_ISREXEC:
- ; .dw $ff08
- ; .db "isr-exec"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREXEC
- XT_ISREXEC:
-00022f 1c01 .dw DO_COLON
- PFA_ISREXEC:
-000230 021d .dw XT_INTFETCH
-000231 1c2a .dw XT_EXECUTE
-000232 0234 .dw XT_ISREND
-000233 1c20 .dw XT_EXIT
- .include "words/isr-end.asm"
-
- ; Interrupt
- ; re-enables interrupts in an ISR
- ;VE_ISREND:
- ; .dw $ff07
- ; .db "isr-end",0
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREND
- XT_ISREND:
-000234 0235 .dw PFA_ISREND
- PFA_ISREND:
-000235 d002 rcall PFA_ISREND1 ; clear the interrupt flag for the controller
-000236 940c 1c05 jmp_ DO_NEXT
- PFA_ISREND1:
-000238 9518 reti
- .endif
-
- .include "words/pick.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PICK:
-000239 ff04 .dw $ff04
-00023a 6970
-00023b 6b63 .db "pick"
-00023c 0223 .dw VE_HEAD
- .set VE_HEAD = VE_PICK
- XT_PICK:
-00023d 1c01 .dw DO_COLON
- PFA_PICK:
- .endif
-00023e 1e2f .dw XT_1PLUS
-00023f 05dd .dw XT_CELLS
-000240 1e8d .dw XT_SP_FETCH
-000241 1d9d .dw XT_PLUS
-000242 1c79 .dw XT_FETCH
-000243 1c20 .dw XT_EXIT
- .include "words/dot-quote.asm"
-
- ; Compiler
- ; compiles string into dictionary to be printed at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOTSTRING:
-000244 0002 .dw $0002
-000245 222e .db ".",$22
-000246 0239 .dw VE_HEAD
- .set VE_HEAD = VE_DOTSTRING
- XT_DOTSTRING:
-000247 1c01 .dw DO_COLON
- PFA_DOTSTRING:
- .endif
-000248 024f .dw XT_SQUOTE
-000249 02a3 .dw XT_COMPILE
-00024a 0827 .dw XT_ITYPE
-00024b 1c20 .dw XT_EXIT
- .include "words/squote.asm"
-
- ; Compiler
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SQUOTE:
-00024c 0002 .dw $0002
-00024d 2273 .db "s",$22
-00024e 0244 .dw VE_HEAD
- .set VE_HEAD = VE_SQUOTE
- XT_SQUOTE:
-00024f 1c01 .dw DO_COLON
- PFA_SQUOTE:
- .endif
-000250 1c3d .dw XT_DOLITERAL
-000251 0022 .dw 34 ; 0x22
-000252 0a0e .dw XT_PARSE ; ( -- addr n)
-000253 05d0 .dw XT_STATE
-000254 1c79 .dw XT_FETCH
-000255 1c36 .dw XT_DOCONDBRANCH
-000256 0258 DEST(PFA_SQUOTE1)
-000257 02cf .dw XT_SLITERAL
- PFA_SQUOTE1:
-000258 1c20 .dw XT_EXIT
-
- .include "words/fill.asm"
-
- ; Memory
- ; fill u bytes memory beginning at a-addr with character c
- VE_FILL:
-000259 ff04 .dw $ff04
-00025a 6966
-00025b 6c6c .db "fill"
-00025c 024c .dw VE_HEAD
- .set VE_HEAD = VE_FILL
- XT_FILL:
-00025d 1c01 .dw DO_COLON
- PFA_FILL:
-00025e 1ce1 .dw XT_ROT
-00025f 1ce1 .dw XT_ROT
-000260 1cb9
-000261 1c36 .dw XT_QDUP,XT_DOCONDBRANCH
-000262 026a DEST(PFA_FILL2)
-000263 0de5 .dw XT_BOUNDS
-000264 1e9b .dw XT_DODO
- PFA_FILL1:
-000265 1cb1 .dw XT_DUP
-000266 1eac .dw XT_I
-000267 1c8d .dw XT_CSTORE ; ( -- c c-addr)
-000268 1ec9 .dw XT_DOLOOP
-000269 0265 .dw PFA_FILL1
- PFA_FILL2:
-00026a 1cd9 .dw XT_DROP
-00026b 1c20 .dw XT_EXIT
- .include "dict/compiler1.inc"
-
- .include "words/newest.asm"
-
- ; System Variable
- ; system state
- VE_NEWEST:
-00026c ff06 .dw $ff06
-00026d 656e
-00026e 6577
-00026f 7473 .db "newest"
-000270 0259 .dw VE_HEAD
- .set VE_HEAD = VE_NEWEST
- XT_NEWEST:
-000271 1c48 .dw PFA_DOVARIABLE
- PFA_NEWEST:
-000272 0087 .dw ram_newest
-
- .dseg
-000087 ram_newest: .byte 4
- .include "words/latest.asm"
-
- ; System Variable
- ; system state
- VE_LATEST:
-000273 ff06 .dw $ff06
-000274 616c
-000275 6574
-000276 7473 .db "latest"
-000277 026c .dw VE_HEAD
- .set VE_HEAD = VE_LATEST
- XT_LATEST:
-000278 1c48 .dw PFA_DOVARIABLE
- PFA_LATEST:
-000279 008b .dw ram_latest
-
- .dseg
-00008b ram_latest: .byte 2
- .include "words/do-create.asm"
-
- ; Compiler
- ; parse the input and create an empty vocabulary entry without XT and data field (PF)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOCREATE:
-00027a ff08 .dw $ff08
-00027b 6328
-00027c 6572
-00027d 7461
-00027e 2965 .db "(create)"
-00027f 0273 .dw VE_HEAD
- .set VE_HEAD = VE_DOCREATE
- XT_DOCREATE:
-000280 1c01 .dw DO_COLON
- PFA_DOCREATE:
- .endif
-000281 0a3b
-000282 03d7 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid)
-000283 1cb1
-000284 0271
-000285 05e3
-000286 1c81 .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid
-000287 03bc
-000288 0271
-000289 1c81 .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt
-00028a 1c20 .DW XT_EXIT
- .include "words/backslash.asm"
-
- ; Compiler
- ; everything up to the end of the current line is a comment
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BACKSLASH:
-00028b 0001 .dw $0001
-00028c 005c .db $5c,0
-00028d 027a .dw VE_HEAD
- .set VE_HEAD = VE_BACKSLASH
- XT_BACKSLASH:
-00028e 1c01 .dw DO_COLON
- PFA_BACKSLASH:
- .endif
-00028f 0a22 .dw XT_SOURCE
-000290 1cf0 .dw XT_NIP
-000291 0604 .dw XT_TO_IN
-000292 1c81 .dw XT_STORE
-000293 1c20 .dw XT_EXIT
- .include "words/l-paren.asm"
-
- ; Compiler
- ; skip everything up to the closing bracket on the same line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LPAREN:
-000294 0001 .dw $0001
-000295 0028 .db "(" ,0
-000296 028b .dw VE_HEAD
- .set VE_HEAD = VE_LPAREN
- XT_LPAREN:
-000297 1c01 .dw DO_COLON
- PFA_LPAREN:
- .endif
-000298 1c3d .dw XT_DOLITERAL
-000299 0029 .dw ')'
-00029a 0a0e .dw XT_PARSE
-00029b 05f4 .dw XT_2DROP
-00029c 1c20 .dw XT_EXIT
-
- .include "words/compile.asm"
-
- ; Dictionary
- ; read the following cell from the dictionary and append it to the current dictionary position.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COMPILE:
-00029d ff07 .dw $ff07
-00029e 6f63
-00029f 706d
-0002a0 6c69
-0002a1 0065 .db "compile",0
-0002a2 0294 .dw VE_HEAD
- .set VE_HEAD = VE_COMPILE
- XT_COMPILE:
-0002a3 1c01 .dw DO_COLON
- PFA_COMPILE:
- .endif
-0002a4 1cf6 .dw XT_R_FROM
-0002a5 1cb1 .dw XT_DUP
-0002a6 0c32 .dw XT_ICELLPLUS
-0002a7 1cff .dw XT_TO_R
-0002a8 1fcb .dw XT_FETCHI
-0002a9 02ae .dw XT_COMMA
-0002aa 1c20 .dw XT_EXIT
- .include "words/comma.asm"
-
- ; Dictionary
- ; compile 16 bit into flash at DP
- VE_COMMA:
-0002ab ff01 .dw $ff01
-0002ac 002c .db ',',0 ; ,
-0002ad 029d .dw VE_HEAD
- .set VE_HEAD = VE_COMMA
- XT_COMMA:
-0002ae 1c01 .dw DO_COLON
- PFA_COMMA:
-0002af 0634 .dw XT_DP
-0002b0 1f73 .dw XT_STOREI
-0002b1 0634 .dw XT_DP
-0002b2 1e2f .dw XT_1PLUS
-0002b3 0c20 .dw XT_DOTO
-0002b4 0635 .dw PFA_DP
-0002b5 1c20 .dw XT_EXIT
- .include "words/brackettick.asm"
-
- ; Compiler
- ; what ' does in the interpreter mode, do in colon definitions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETTICK:
-0002b6 0003 .dw $0003
-0002b7 275b
-0002b8 005d .db "[']",0
-0002b9 02ab .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETTICK
- XT_BRACKETTICK:
-0002ba 1c01 .dw DO_COLON
- PFA_BRACKETTICK:
- .endif
-0002bb 0891 .dw XT_TICK
-0002bc 02c4 .dw XT_LITERAL
-0002bd 1c20 .dw XT_EXIT
-
-
- .include "words/literal.asm"
-
- ; Compiler
- ; compile a literal in colon defintions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LITERAL:
-0002be 0007 .dw $0007
-0002bf 696c
-0002c0 6574
-0002c1 6172
-0002c2 006c .db "literal",0
-0002c3 02b6 .dw VE_HEAD
- .set VE_HEAD = VE_LITERAL
- XT_LITERAL:
-0002c4 1c01 .dw DO_COLON
- PFA_LITERAL:
- .endif
-0002c5 02a3 .DW XT_COMPILE
-0002c6 1c3d .DW XT_DOLITERAL
-0002c7 02ae .DW XT_COMMA
-0002c8 1c20 .DW XT_EXIT
- .include "words/sliteral.asm"
-
- ; String
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLITERAL:
-0002c9 0008 .dw $0008
-0002ca 6c73
-0002cb 7469
-0002cc 7265
-0002cd 6c61 .db "sliteral"
-0002ce 02be .dw VE_HEAD
- .set VE_HEAD = VE_SLITERAL
- XT_SLITERAL:
-0002cf 1c01 .dw DO_COLON
- PFA_SLITERAL:
- .endif
-0002d0 02a3 .dw XT_COMPILE
-0002d1 07f4 .dw XT_DOSLITERAL ; ( -- addr n)
-0002d2 0802 .dw XT_SCOMMA
-0002d3 1c20 .dw XT_EXIT
- .include "words/g-mark.asm"
-
- ; Compiler
- ; places current dictionary position for backward resolves
- ;VE_GMARK:
- ; .dw $ff05
- ; .db ">mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GMARK
- XT_GMARK:
-0002d4 1c01 .dw DO_COLON
- PFA_GMARK:
-0002d5 0634 .dw XT_DP
-0002d6 02a3 .dw XT_COMPILE
-0002d7 ffff .dw -1 ; ffff does not erase flash
-0002d8 1c20 .dw XT_EXIT
- .include "words/g-resolve.asm"
-
- ; Compiler
- ; resolve backward jumps
- ;VE_GRESOLVE:
- ; .dw $ff08
- ; .db ">resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GRESOLVE
- XT_GRESOLVE:
-0002d9 1c01 .dw DO_COLON
- PFA_GRESOLVE:
-0002da 0bde .dw XT_QSTACK
-0002db 0634 .dw XT_DP
-0002dc 1cc4 .dw XT_SWAP
-0002dd 1f73 .dw XT_STOREI
-0002de 1c20 .dw XT_EXIT
- .include "words/l_mark.asm"
-
- ; Compiler
- ; place destination for backward branch
- ;VE_LMARK:
- ; .dw $ff05
- ; .db "<mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LMARK
- XT_LMARK:
-0002df 1c01 .dw DO_COLON
- PFA_LMARK:
-0002e0 0634 .dw XT_DP
-0002e1 1c20 .dw XT_EXIT
- .include "words/l_resolve.asm"
-
- ; Compiler
- ; resolve backward branch
- ;VE_LRESOLVE:
- ; .dw $ff08
- ; .db "<resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LRESOLVE
- XT_LRESOLVE:
-0002e2 1c01 .dw DO_COLON
- PFA_LRESOLVE:
-0002e3 0bde .dw XT_QSTACK
-0002e4 02ae .dw XT_COMMA
-0002e5 1c20 .dw XT_EXIT
-
- .include "words/ahead.asm"
-
- ; Compiler
- ; do a unconditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AHEAD:
-0002e6 0005 .dw $0005
-0002e7 6861
-0002e8 6165
-0002e9 0064 .db "ahead",0
-0002ea 02c9 .dw VE_HEAD
- .set VE_HEAD = VE_AHEAD
- XT_AHEAD:
-0002eb 1c01 .dw DO_COLON
- PFA_AHEAD:
- .endif
-0002ec 02a3 .dw XT_COMPILE
-0002ed 1c2f .dw XT_DOBRANCH
-0002ee 02d4 .dw XT_GMARK
-0002ef 1c20 .dw XT_EXIT
- .include "words/if.asm"
-
- ; Compiler
- ; start conditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_IF:
-0002f0 0002 .dw $0002
-0002f1 6669 .db "if"
-0002f2 02e6 .dw VE_HEAD
- .set VE_HEAD = VE_IF
- XT_IF:
-0002f3 1c01 .dw DO_COLON
- PFA_IF:
- .endif
-0002f4 02a3 .dw XT_COMPILE
-0002f5 1c36 .dw XT_DOCONDBRANCH
-0002f6 02d4 .dw XT_GMARK
-0002f7 1c20 .dw XT_EXIT
- .include "words/else.asm"
-
- ; Compiler
- ; resolve the forward reference and place a new unresolved forward reference
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ELSE:
-0002f8 0004 .dw $0004
-0002f9 6c65
-0002fa 6573 .db "else"
-0002fb 02f0 .dw VE_HEAD
- .set VE_HEAD = VE_ELSE
- XT_ELSE:
-0002fc 1c01 .dw DO_COLON
- PFA_ELSE:
- .endif
-0002fd 02a3 .dw XT_COMPILE
-0002fe 1c2f .dw XT_DOBRANCH
-0002ff 02d4 .dw XT_GMARK
-000300 1cc4 .dw XT_SWAP
-000301 02d9 .dw XT_GRESOLVE
-000302 1c20 .dw XT_EXIT
- .include "words/then.asm"
-
- ; Compiler
- ; finish if
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THEN:
-000303 0004 .dw $0004
-000304 6874
-000305 6e65 .db "then"
-000306 02f8 .dw VE_HEAD
- .set VE_HEAD = VE_THEN
- XT_THEN:
-000307 1c01 .dw DO_COLON
- PFA_THEN:
- .endif
-000308 02d9 .dw XT_GRESOLVE
-000309 1c20 .dw XT_EXIT
- .include "words/begin.asm"
-
- ; Compiler
- ; put the next location for a transfer of control onto the control flow stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BEGIN:
-00030a 0005 .dw $0005
-00030b 6562
-00030c 6967
-00030d 006e .db "begin",0
-00030e 0303 .dw VE_HEAD
- .set VE_HEAD = VE_BEGIN
- XT_BEGIN:
-00030f 1c01 .dw DO_COLON
- PFA_BEGIN:
- .endif
-000310 02df .dw XT_LMARK
-000311 1c20 .dw XT_EXIT
- .include "words/while.asm"
-
- ; Compiler
- ; at runtime skip until repeat if non-true
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WHILE:
-000312 0005 .dw $0005
-000313 6877
-000314 6c69
-000315 0065 .db "while",0
-000316 030a .dw VE_HEAD
- .set VE_HEAD = VE_WHILE
- XT_WHILE:
-000317 1c01 .dw DO_COLON
- PFA_WHILE:
- .endif
-000318 02f3 .dw XT_IF
-000319 1cc4 .dw XT_SWAP
-00031a 1c20 .dw XT_EXIT
- .include "words/repeat.asm"
-
- ; Compiler
- ; continue execution at dest, resolve orig
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REPEAT:
-00031b 0006 .dw $0006
-00031c 6572
-00031d 6570
-00031e 7461 .db "repeat"
-00031f 0312 .dw VE_HEAD
- .set VE_HEAD = VE_REPEAT
- XT_REPEAT:
-000320 1c01 .dw DO_COLON
- PFA_REPEAT:
- .endif
-000321 0334 .dw XT_AGAIN
-000322 0307 .dw XT_THEN
-000323 1c20 .dw XT_EXIT
- .include "words/until.asm"
-
- ; Compiler
- ; finish begin with conditional branch, leaves the loop if true flag at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UNTIL:
-000324 0005 .dw $0005
-000325 6e75
-000326 6974
-000327 006c .db "until",0
-000328 031b .dw VE_HEAD
- .set VE_HEAD = VE_UNTIL
- XT_UNTIL:
-000329 1c01 .dw DO_COLON
- PFA_UNTIL:
- .endif
-00032a 1c3d .dw XT_DOLITERAL
-00032b 1c36 .dw XT_DOCONDBRANCH
-00032c 02ae .dw XT_COMMA
-
-00032d 02e2 .dw XT_LRESOLVE
-00032e 1c20 .dw XT_EXIT
- .include "words/again.asm"
-
- ; Compiler
- ; compile a jump back to dest
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AGAIN:
-00032f 0005 .dw $0005
-000330 6761
-000331 6961
-000332 006e .db "again",0
-000333 0324 .dw VE_HEAD
- .set VE_HEAD = VE_AGAIN
- XT_AGAIN:
-000334 1c01 .dw DO_COLON
- PFA_AGAIN:
- .endif
-000335 02a3 .dw XT_COMPILE
-000336 1c2f .dw XT_DOBRANCH
-000337 02e2 .dw XT_LRESOLVE
-000338 1c20 .dw XT_EXIT
- .include "words/do.asm"
-
- ; Compiler
- ; start do .. [+]loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DO:
-000339 0002 .dw $0002
-00033a 6f64 .db "do"
-00033b 032f .dw VE_HEAD
- .set VE_HEAD = VE_DO
- XT_DO:
-00033c 1c01 .dw DO_COLON
- PFA_DO:
-
- .endif
-00033d 02a3 .dw XT_COMPILE
-00033e 1e9b .dw XT_DODO
-00033f 02df .dw XT_LMARK
-000340 1d54 .dw XT_ZERO
-000341 0397 .dw XT_TO_L
-000342 1c20 .dw XT_EXIT
- .include "words/loop.asm"
-
- ; Compiler
- ; compile (loop) and resolve the backward branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LOOP:
-000343 0004 .dw $0004
-000344 6f6c
-000345 706f .db "loop"
-000346 0339 .dw VE_HEAD
- .set VE_HEAD = VE_LOOP
- XT_LOOP:
-000347 1c01 .dw DO_COLON
- PFA_LOOP:
- .endif
-000348 02a3 .dw XT_COMPILE
-000349 1ec9 .dw XT_DOLOOP
-00034a 037e .dw XT_ENDLOOP
-00034b 1c20 .dw XT_EXIT
- .include "words/plusloop.asm"
-
- ; Compiler
- ; compile (+loop) and resolve branches
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PLUSLOOP:
-00034c 0005 .dw $0005
-00034d 6c2b
-00034e 6f6f
-00034f 0070 .db "+loop",0
-000350 0343 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSLOOP
- XT_PLUSLOOP:
-000351 1c01 .dw DO_COLON
- PFA_PLUSLOOP:
- .endif
-000352 02a3 .dw XT_COMPILE
-000353 1eba .dw XT_DOPLUSLOOP
-000354 037e .dw XT_ENDLOOP
-000355 1c20 .dw XT_EXIT
- .include "words/leave.asm"
-
- ; Compiler
- ; immediatly leave the current DO..LOOP
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LEAVE:
-000356 0005 .dw $0005
-000357 656c
-000358 7661
-000359 0065 .db "leave",0
-00035a 034c .dw VE_HEAD
- .set VE_HEAD = VE_LEAVE
- XT_LEAVE:
-00035b 1c01 .dw DO_COLON
- PFA_LEAVE:
- .endif
-00035c 02a3
-00035d 1ed4 .DW XT_COMPILE,XT_UNLOOP
-00035e 02eb
-00035f 0397
-000360 1c20 .DW XT_AHEAD,XT_TO_L,XT_EXIT
- .include "words/qdo.asm"
-
- ; Compiler
- ; start a ?do .. [+]loop control structure
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_QDO:
-000361 0003 .dw $0003
-000362 643f
-000363 006f .db "?do",0
-000364 0356 .dw VE_HEAD
- .set VE_HEAD = VE_QDO
- XT_QDO:
-000365 1c01 .dw DO_COLON
- PFA_QDO:
- .endif
-000366 02a3 .dw XT_COMPILE
-000367 036d .dw XT_QDOCHECK
-000368 02f3 .dw XT_IF
-000369 033c .dw XT_DO
-00036a 1cc4 .dw XT_SWAP ; DO sets a 0 marker on the leave stack
-00036b 0397 .dw XT_TO_L ; then follows at the end.
-00036c 1c20 .dw XT_EXIT
-
- ; there is no special runtime for ?do, the do runtime
- ; gets wrapped with the sequence
- ; ... ?do-check if do ..... loop then
- ; with
- ; : ?do-check ( n1 n2 -- n1 n2 true | false )
- ; 2dup = dup >r if 2drop then r> invert ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QDOCHECK:
-00036d 1c01 .dw DO_COLON
- PFA_QDOCHECK:
- .endif
-00036e 05eb .dw XT_2DUP
-00036f 1fe0 .dw XT_EQUAL
-000370 1cb1 .dw XT_DUP
-000371 1cff .dw XT_TO_R
-000372 1c36 .dw XT_DOCONDBRANCH
-000373 0375 DEST(PFA_QDOCHECK1)
-000374 05f4 .dw XT_2DROP
- PFA_QDOCHECK1:
-000375 1cf6 .dw XT_R_FROM
-000376 1dfd .dw XT_INVERT
-000377 1c20 .dw XT_EXIT
- .include "words/endloop.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENDLOOP:
-000378 ff07 .dw $ff07
-000379 6e65
-00037a 6c64
-00037b 6f6f
-00037c 0070 .db "endloop",0
-00037d 0361 .dw VE_HEAD
- .set VE_HEAD = VE_ENDLOOP
- XT_ENDLOOP:
-00037e 1c01 .dw DO_COLON
- PFA_ENDLOOP:
- .endif
- ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN --
- ; <resolve backward loop
- ; BEGIN L> ?DUP WHILE POSTPONE THEN REPEAT ;
- ; resolve LEAVEs
- ; This is a common factor of LOOP and +LOOP.
-
-00037f 02e2 .DW XT_LRESOLVE
-000380 038b
-000381 1cb9
-000382 1c36 LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH
-000383 0387 DEST(LOOP2)
-000384 0307 .DW XT_THEN
-000385 1c2f .dw XT_DOBRANCH
-000386 0380 DEST(LOOP1)
-000387 1c20 LOOP2: .DW XT_EXIT
- ; leave address stack
- .include "words/l-from.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_FROM:
-000388 ff02 .dw $ff02
-000389 3e6c .db "l>"
-00038a 0378 .dw VE_HEAD
- .set VE_HEAD = VE_L_FROM
- XT_L_FROM:
-00038b 1c01 .dw DO_COLON
- PFA_L_FROM:
-
- .endif
- ;Z L> -- x L: x -- move from leave stack
- ; LP @ @ -2 LP +! ;
-
-00038c 03aa .dw XT_LP
-00038d 1c79 .dw XT_FETCH
-00038e 1c79 .dw XT_FETCH
-00038f 1c3d .dw XT_DOLITERAL
-000390 fffe .dw -2
-000391 03aa .dw XT_LP
-000392 1e65 .dw XT_PLUSSTORE
-000393 1c20 .dw XT_EXIT
- .include "words/to-l.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_L:
-000394 ff02 .dw $ff02
-000395 6c3e .db ">l"
-000396 0388 .dw VE_HEAD
- .set VE_HEAD = VE_TO_L
- XT_TO_L:
-000397 1c01 .dw DO_COLON
- PFA_TO_L:
- .endif
- ;Z >L x -- L: -- x move to leave stack
- ; CELL LP +! LP @ ! ; (L stack grows up)
-
-000398 1fec .dw XT_TWO
-000399 03aa .dw XT_LP
-00039a 1e65 .dw XT_PLUSSTORE
-00039b 03aa .dw XT_LP
-00039c 1c79 .dw XT_FETCH
-00039d 1c81 .dw XT_STORE
-00039e 1c20 .dw XT_EXIT
- .include "words/lp0.asm"
-
- ; Stack
- ; start address of leave stack
- VE_LP0:
-00039f ff03 .dw $ff03
-0003a0 706c
-0003a1 0030 .db "lp0",0
-0003a2 0394 .dw VE_HEAD
- .set VE_HEAD = VE_LP0
- XT_LP0:
-0003a3 1c6f .dw PFA_DOVALUE1
- PFA_LP0:
-0003a4 0036 .dw CFG_LP0
-0003a5 0c3b .dw XT_EDEFERFETCH
-0003a6 0c45 .dw XT_EDEFERSTORE
- .include "words/lp.asm"
-
- ; System Variable
- ; leave stack pointer
- VE_LP:
-0003a7 ff02 .dw $ff02
-0003a8 706c .db "lp"
-0003a9 039f .dw VE_HEAD
- .set VE_HEAD = VE_LP
- XT_LP:
-0003aa 1c48 .dw PFA_DOVARIABLE
- PFA_LP:
-0003ab 008d .dw ram_lp
-
- .dseg
-00008d ram_lp: .byte 2
- .cseg
-
-
- .include "words/create.asm"
-
- ; Dictionary
- ; create a dictionary header. XT is (constant), with the address of the data field of name
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CREATE:
-0003ac ff06 .dw $ff06
-0003ad 7263
-0003ae 6165
-0003af 6574 .db "create"
-0003b0 03a7 .dw VE_HEAD
- .set VE_HEAD = VE_CREATE
- XT_CREATE:
-0003b1 1c01 .dw DO_COLON
- PFA_CREATE:
- .endif
-0003b2 0280 .dw XT_DOCREATE
-0003b3 03e0 .dw XT_REVEAL
-0003b4 02a3 .dw XT_COMPILE
-0003b5 1c52 .dw PFA_DOCONSTANT
-0003b6 1c20 .dw XT_EXIT
- .include "words/header.asm"
-
- ; Compiler
- ; creates the vocabulary header without XT and data field (PF) in the wordlist wid
- VE_HEADER:
-0003b7 ff06 .dw $ff06
-0003b8 6568
-0003b9 6461
-0003ba 7265 .db "header"
-0003bb 03ac .dw VE_HEAD
- .set VE_HEAD = VE_HEADER
- XT_HEADER:
-0003bc 1c01 .dw DO_COLON
- PFA_HEADER:
-0003bd 0634 .dw XT_DP ; the new Name Field
-0003be 1cff .dw XT_TO_R
-0003bf 1cff .dw XT_TO_R ; ( R: NFA WID )
-0003c0 1cb1 .dw XT_DUP
-0003c1 1d28 .dw XT_GREATERZERO
-0003c2 1c36 .dw XT_DOCONDBRANCH
-0003c3 03ce .dw PFA_HEADER1
-0003c4 1cb1 .dw XT_DUP
-0003c5 1c3d .dw XT_DOLITERAL
-0003c6 ff00 .dw $ff00 ; all flags are off (e.g. immediate)
-0003c7 1e1c .dw XT_OR
-0003c8 0806 .dw XT_DOSCOMMA
- ; make the link to the previous entry in this wordlist
-0003c9 1cf6 .dw XT_R_FROM
-0003ca 1f5f .dw XT_FETCHE
-0003cb 02ae .dw XT_COMMA
-0003cc 1cf6 .dw XT_R_FROM
-0003cd 1c20 .dw XT_EXIT
-
- PFA_HEADER1:
- ; -16: attempt to use zero length string as a name
-0003ce 1c3d .dw XT_DOLITERAL
-0003cf fff0 .dw -16
-0003d0 08c8 .dw XT_THROW
-
- .include "words/wlscope.asm"
-
- ; Compiler
- ; dynamically place a word in a wordlist. The word name may be changed.
- VE_WLSCOPE:
-0003d1 ff07 .dw $ff07
-0003d2 6c77
-0003d3 6373
-0003d4 706f
-0003d5 0065 .db "wlscope",0
-0003d6 03b7 .dw VE_HEAD
- .set VE_HEAD = VE_WLSCOPE
- XT_WLSCOPE:
-0003d7 0c9a .dw PFA_DODEFER1
- PFA_WLSCOPE:
-0003d8 0032 .dw CFG_WLSCOPE
-0003d9 0c3b .dw XT_EDEFERFETCH
-0003da 0c45 .dw XT_EDEFERSTORE
-
- ; wlscope, "wordlist scope" ( addr len -- addr' len' wid ), is a deferred word
- ; which enables the AmForth application to choose the wordlist ( wid ) for the
- ; new voc entry based on the input ( addr len ) string. The name of the new voc
- ; entry ( addr' len' ) may be different from the input string. Note that all
- ; created voc entry types pass through the wlscope mechanism. The default
- ; wlscope action passes the input string to the output without modification and
- ; uses get-current to select the wid.
- .include "words/reveal.asm"
-
- ; Dictionary
- ; makes an entry in a wordlist visible, if not already done.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REVEAL:
-0003db ff06 .dw $ff06
-0003dc 6572
-0003dd 6576
-0003de 6c61 .db "reveal"
-0003df 03d1 .dw VE_HEAD
- .set VE_HEAD = VE_REVEAL
- XT_REVEAL:
-0003e0 1c01 .dw DO_COLON
- PFA_REVEAL:
- .endif
-0003e1 0271
-0003e2 05e3
-0003e3 1c79 .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use
-0003e4 1cb9
-0003e5 1c36 .DW XT_QDUP,XT_DOCONDBRANCH
-0003e6 03eb DEST(REVEAL1)
-0003e7 0271
-0003e8 1c79
-0003e9 1cc4
-0003ea 1f3b .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE
- ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry
- REVEAL1:
-0003eb 1c20 .DW XT_EXIT
- .include "words/does.asm"
-
- ; Compiler
- ; organize the XT replacement to call other colon code
- VE_DOES:
-0003ec 0005 .dw $0005
-0003ed 6f64
-0003ee 7365
-0003ef 003e .db "does>",0
-0003f0 03db .dw VE_HEAD
- .set VE_HEAD = VE_DOES
- XT_DOES:
-0003f1 1c01 .dw DO_COLON
- PFA_DOES:
-0003f2 02a3 .dw XT_COMPILE
-0003f3 0404 .dw XT_DODOES
-0003f4 02a3 .dw XT_COMPILE ; create a code snippet to be used in an embedded XT
-0003f5 940e .dw $940e ; the address of this compiled
-0003f6 02a3 .dw XT_COMPILE ; code will replace the XT of the
-0003f7 03f9 .dw DO_DODOES ; word that CREATE created
-0003f8 1c20 .dw XT_EXIT ;
-
- DO_DODOES: ; ( -- PFA )
-0003f9 939a
-0003fa 938a savetos
-0003fb 01cb movw tosl, wl
-0003fc 9601 adiw tosl, 1
- ; the following takes the address from a real uC-call
- .if (pclen==3)
- .endif
-0003fd 917f pop wh
-0003fe 916f pop wl
-
-0003ff 93bf push XH
-000400 93af push XL
-000401 01db movw XL, wl
-000402 940c 1c05 jmp_ DO_NEXT
-
- ; ( -- )
- ; System
- ; replace the XT written by CREATE to call the code that follows does>
- ;VE_DODOES:
- ; .dw $ff07
- ; .db "(does>)"
- ; .set VE_HEAD = VE_DODOES
- XT_DODOES:
-000404 1c01 .dw DO_COLON
- PFA_DODOES:
-000405 1cf6 .dw XT_R_FROM
-000406 0271 .dw XT_NEWEST
-000407 05e3 .dw XT_CELLPLUS
-000408 1c79 .dw XT_FETCH
-000409 1f5f .dw XT_FETCHE
-00040a 0d05 .dw XT_NFA2CFA
-00040b 1f73 .dw XT_STOREI
-00040c 1c20 .dw XT_EXIT
- .include "words/colon.asm"
-
- ; Compiler
- ; create a named entry in the dictionary, XT is DO_COLON
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COLON:
-00040d ff01 .dw $ff01
-00040e 003a .db ":",0
-00040f 03ec .dw VE_HEAD
- .set VE_HEAD = VE_COLON
- XT_COLON:
-000410 1c01 .dw DO_COLON
- PFA_COLON:
- .endif
-000411 0280 .dw XT_DOCREATE
-000412 041b .dw XT_COLONNONAME
-000413 1cd9 .dw XT_DROP
-000414 1c20 .dw XT_EXIT
- .include "words/colon-noname.asm"
-
- ; Compiler
- ; create an unnamed entry in the dictionary, XT is DO_COLON
- VE_COLONNONAME:
-000415 ff07 .dw $ff07
-000416 6e3a
-000417 6e6f
-000418 6d61
-000419 0065 .db ":noname",0
-00041a 040d .dw VE_HEAD
- .set VE_HEAD = VE_COLONNONAME
- XT_COLONNONAME:
-00041b 1c01 .dw DO_COLON
- PFA_COLONNONAME:
-00041c 0634 .dw XT_DP
-00041d 1cb1 .dw XT_DUP
-00041e 0278 .dw XT_LATEST
-00041f 1c81 .dw XT_STORE
-
-000420 02a3 .dw XT_COMPILE
-000421 1c01 .dw DO_COLON
-
-000422 0430 .dw XT_RBRACKET
-000423 1c20 .dw XT_EXIT
- .include "words/semicolon.asm"
-
- ; Compiler
- ; finish colon defintion, compiles (exit) and returns to interpret state
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SEMICOLON:
-000424 0001 .dw $0001
-000425 003b .db $3b,0
-000426 0415 .dw VE_HEAD
- .set VE_HEAD = VE_SEMICOLON
- XT_SEMICOLON:
-000427 1c01 .dw DO_COLON
- PFA_SEMICOLON:
- .endif
-000428 02a3 .dw XT_COMPILE
-000429 1c20 .dw XT_EXIT
-00042a 0438 .dw XT_LBRACKET
-00042b 03e0 .dw XT_REVEAL
-00042c 1c20 .dw XT_EXIT
- .include "words/right-bracket.asm"
-
- ; Compiler
- ; enter compiler mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RBRACKET:
-00042d ff01 .dw $ff01
-00042e 005d .db "]",0
-00042f 0424 .dw VE_HEAD
- .set VE_HEAD = VE_RBRACKET
- XT_RBRACKET:
-000430 1c01 .dw DO_COLON
- PFA_RBRACKET:
- .endif
-000431 1fe7 .dw XT_ONE
-000432 05d0 .dw XT_STATE
-000433 1c81 .dw XT_STORE
-000434 1c20 .dw XT_EXIT
- .include "words/left-bracket.asm"
-
- ; Compiler
- ; enter interpreter mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LBRACKET:
-000435 0001 .dw $0001
-000436 005b .db "[",0
-000437 042d .dw VE_HEAD
- .set VE_HEAD = VE_LBRACKET
- XT_LBRACKET:
-000438 1c01 .dw DO_COLON
- PFA_LBRACKET:
- .endif
-000439 1d54 .dw XT_ZERO
-00043a 05d0 .dw XT_STATE
-00043b 1c81 .dw XT_STORE
-00043c 1c20 .dw XT_EXIT
- .include "words/variable.asm"
-
- ; Compiler
- ; create a dictionary entry for a variable and allocate 1 cell RAM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_VARIABLE:
-00043d ff08 .dw $ff08
-00043e 6176
-00043f 6972
-000440 6261
-000441 656c .db "variable"
-000442 0435 .dw VE_HEAD
- .set VE_HEAD = VE_VARIABLE
- XT_VARIABLE:
-000443 1c01 .dw DO_COLON
- PFA_VARIABLE:
- .endif
-000444 0645 .dw XT_HERE
-000445 044f .dw XT_CONSTANT
-000446 1fec .dw XT_TWO
-000447 064e .dw XT_ALLOT
-000448 1c20 .dw XT_EXIT
- .include "words/constant.asm"
-
- ; Compiler
- ; create a constant in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_CONSTANT:
-000449 ff08 .dw $ff08
-00044a 6f63
-00044b 736e
-00044c 6174
-00044d 746e .db "constant"
-00044e 043d .dw VE_HEAD
- .set VE_HEAD = VE_CONSTANT
- XT_CONSTANT:
-00044f 1c01 .dw DO_COLON
- PFA_CONSTANT:
- .endif
-000450 0280 .dw XT_DOCREATE
-000451 03e0 .dw XT_REVEAL
-000452 02a3 .dw XT_COMPILE
-000453 1c48 .dw PFA_DOVARIABLE
-000454 02ae .dw XT_COMMA
-000455 1c20 .dw XT_EXIT
- .include "words/user.asm"
-
- ; Compiler
- ; create a dictionary entry for a user variable at offset n
- VE_USER:
-000456 ff04 .dw $ff04
-000457 7375
-000458 7265 .db "user"
-000459 0449 .dw VE_HEAD
- .set VE_HEAD = VE_USER
- XT_USER:
-00045a 1c01 .dw DO_COLON
- PFA_USER:
-00045b 0280 .dw XT_DOCREATE
-00045c 03e0 .dw XT_REVEAL
-
-00045d 02a3 .dw XT_COMPILE
-00045e 1c58 .dw PFA_DOUSER
-00045f 02ae .dw XT_COMMA
-000460 1c20 .dw XT_EXIT
-
- .include "words/recurse.asm"
-
- ; Compiler
- ; compile the XT of the word currently being defined into the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECURSE:
-000461 0007 .dw $0007
-000462 6572
-000463 7563
-000464 7372
-000465 0065 .db "recurse",0
-000466 0456 .dw VE_HEAD
- .set VE_HEAD = VE_RECURSE
- XT_RECURSE:
-000467 1c01 .dw DO_COLON
- PFA_RECURSE:
- .endif
-000468 0278 .dw XT_LATEST
-000469 1c79 .dw XT_FETCH
-00046a 02ae .dw XT_COMMA
-00046b 1c20 .dw XT_EXIT
- .include "words/immediate.asm"
-
- ; Compiler
- ; set immediate flag for the most recent word definition
- VE_IMMEDIATE:
-00046c ff09 .dw $ff09
-00046d 6d69
-00046e 656d
-00046f 6964
-000470 7461
-000471 0065 .db "immediate",0
-000472 0461 .dw VE_HEAD
- .set VE_HEAD = VE_IMMEDIATE
- XT_IMMEDIATE:
-000473 1c01 .dw DO_COLON
- PFA_IMMEDIATE:
-000474 0515 .dw XT_GET_CURRENT
-000475 1f5f .dw XT_FETCHE
-000476 1cb1 .dw XT_DUP
-000477 1fcb .dw XT_FETCHI
-000478 1c3d .dw XT_DOLITERAL
-000479 7fff .dw $7fff
-00047a 1e13 .dw XT_AND
-00047b 1cc4 .dw XT_SWAP
-00047c 1f73 .dw XT_STOREI
-00047d 1c20 .dw XT_EXIT
-
- .include "words/bracketchar.asm"
-
- ; Tools
- ; skip leading space delimites, place the first character of the word on the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETCHAR:
-00047e 0006 .dw $0006
-00047f 635b
-000480 6168
-000481 5d72 .db "[char]"
-000482 046c .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETCHAR
- XT_BRACKETCHAR:
-000483 1c01 .dw DO_COLON
- PFA_BRACKETCHAR:
- .endif
-000484 02a3 .dw XT_COMPILE
-000485 1c3d .dw XT_DOLITERAL
-000486 0971 .dw XT_CHAR
-000487 02ae .dw XT_COMMA
-000488 1c20 .dw XT_EXIT
- .include "words/abort-string.asm"
-
- ;C i*x x1 -- R: j*x -- x1<>0
- ; POSTPONE IS" POSTPONE ?ABORT ; IMMEDIATE
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORTQUOTE:
-000489 0006 .dw $0006
-00048a 6261
-00048b 726f
-00048c 2274 .db "abort",'"'
-00048d 047e .dw VE_HEAD
- .set VE_HEAD = VE_ABORTQUOTE
- XT_ABORTQUOTE:
-00048e 1c01 .dw DO_COLON
- PFA_ABORTQUOTE:
- .endif
-00048f 024f .dw XT_SQUOTE
-000490 02a3 .dw XT_COMPILE
-000491 04a0 .dw XT_QABORT
-000492 1c20 .DW XT_EXIT
- .include "words/abort.asm"
-
- ; Exceptions
- ; send an exception -1
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORT:
-000493 ff05 .dw $ff05
-000494 6261
-000495 726f
-000496 0074 .db "abort",0
-000497 0489 .dw VE_HEAD
- .set VE_HEAD = VE_ABORT
- XT_ABORT:
-000498 1c01 .dw DO_COLON
- PFA_ABORT:
- .endif
-000499 1d4b .dw XT_TRUE
-00049a 08c8 .dw XT_THROW
- .include "words/q-abort.asm"
-
- ; ROT IF ITYPE ABORT THEN 2DROP ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QABORT:
-00049b ff06 .dw $ff06
-00049c 613f
-00049d 6f62
-00049e 7472 .db "?abort"
-00049f 0493 .dw VE_HEAD
- .set VE_HEAD = VE_QABORT
- XT_QABORT:
-0004a0 1c01 .dw DO_COLON
- PFA_QABORT:
-
- .endif
-0004a1 1ce1
-0004a2 1c36 .DW XT_ROT,XT_DOCONDBRANCH
-0004a3 04a6 DEST(QABO1)
-0004a4 0827
-0004a5 0498 .DW XT_ITYPE,XT_ABORT
-0004a6 05f4
-0004a7 1c20 QABO1: .DW XT_2DROP,XT_EXIT
-
- .include "words/get-stack.asm"
-
- ; Tools
- ; Get a stack from EEPROM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_STACK:
-0004a8 ff09 .dw $ff09
-0004a9 6567
-0004aa 2d74
-0004ab 7473
-0004ac 6361
-0004ad 006b .db "get-stack",0
-0004ae 049b .dw VE_HEAD
- .set VE_HEAD = VE_GET_STACK
- XT_GET_STACK:
-0004af 1c01 .dw DO_COLON
- .endif
-0004b0 1cb1 .dw XT_DUP
-0004b1 05e3 .dw XT_CELLPLUS
-0004b2 1cc4 .dw XT_SWAP
-0004b3 1f5f .dw XT_FETCHE
-0004b4 1cb1 .dw XT_DUP
-0004b5 1cff .dw XT_TO_R
-0004b6 1d54 .dw XT_ZERO
-0004b7 1cc4 .dw XT_SWAP ; go from bigger to smaller addresses
-0004b8 036d .dw XT_QDOCHECK
-0004b9 1c36 .dw XT_DOCONDBRANCH
-0004ba 04c6 DEST(PFA_N_FETCH_E2)
-0004bb 1e9b .dw XT_DODO
- PFA_N_FETCH_E1:
- ; ( ee-addr )
-0004bc 1eac .dw XT_I
-0004bd 1e35 .dw XT_1MINUS
-0004be 05dd .dw XT_CELLS ; ( -- ee-addr i*2 )
-0004bf 1ccf .dw XT_OVER ; ( -- ee-addr i*2 ee-addr )
-0004c0 1d9d .dw XT_PLUS ; ( -- ee-addr ee-addr+i
-0004c1 1f5f .dw XT_FETCHE ;( -- ee-addr item_i )
-0004c2 1cc4 .dw XT_SWAP ;( -- item_i ee-addr )
-0004c3 1d4b .dw XT_TRUE ; shortcut for -1
-0004c4 1eba .dw XT_DOPLUSLOOP
-0004c5 04bc DEST(PFA_N_FETCH_E1)
- PFA_N_FETCH_E2:
-0004c6 05f4 .dw XT_2DROP
-0004c7 1cf6 .dw XT_R_FROM
-0004c8 1c20 .dw XT_EXIT
-
- .include "words/set-stack.asm"
-
- ; Tools
- ; Write a stack to EEPROM
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_STACK:
-0004c9 ff09 .dw $ff09
-0004ca 6573
-0004cb 2d74
-0004cc 7473
-0004cd 6361
-0004ce 006b .db "set-stack",0
-0004cf 04a8 .dw VE_HEAD
- .set VE_HEAD = VE_SET_STACK
- XT_SET_STACK:
-0004d0 1c01 .dw DO_COLON
- PFA_SET_STACK:
- .endif
-0004d1 1ccf .dw XT_OVER
-0004d2 1d21 .dw XT_ZEROLESS
-0004d3 1c36 .dw XT_DOCONDBRANCH
-0004d4 04d8 DEST(PFA_SET_STACK0)
-0004d5 1c3d .dw XT_DOLITERAL
-0004d6 fffc .dw -4
-0004d7 08c8 .dw XT_THROW
- PFA_SET_STACK0:
-0004d8 05eb .dw XT_2DUP
-0004d9 1f3b .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr )
-0004da 1cc4 .dw XT_SWAP
-0004db 1d54 .dw XT_ZERO
-0004dc 036d .dw XT_QDOCHECK
-0004dd 1c36 .dw XT_DOCONDBRANCH
-0004de 04e5 DEST(PFA_SET_STACK2)
-0004df 1e9b .dw XT_DODO
- PFA_SET_STACK1:
-0004e0 05e3 .dw XT_CELLPLUS ; ( -- i_x e-addr )
-0004e1 05fc .dw XT_TUCK ; ( -- e-addr i_x e-addr
-0004e2 1f3b .dw XT_STOREE
-0004e3 1ec9 .dw XT_DOLOOP
-0004e4 04e0 DEST(PFA_SET_STACK1)
- PFA_SET_STACK2:
-0004e5 1cd9 .dw XT_DROP
-0004e6 1c20 .dw XT_EXIT
-
- .include "words/map-stack.asm"
-
- ; Tools
- ; Iterate over a stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAPSTACK:
-0004e7 ff09 .dw $ff09
-0004e8 616d
-0004e9 2d70
-0004ea 7473
-0004eb 6361
-0004ec 006b .db "map-stack",0
-0004ed 04c9 .dw VE_HEAD
- .set VE_HEAD = VE_MAPSTACK
- XT_MAPSTACK:
-0004ee 1c01 .dw DO_COLON
- PFA_MAPSTACK:
- .endif
-0004ef 1cb1 .dw XT_DUP
-0004f0 05e3 .dw XT_CELLPLUS
-0004f1 1cc4 .dw XT_SWAP
-0004f2 1f5f .dw XT_FETCHE
-0004f3 05dd .dw XT_CELLS
-0004f4 0de5 .dw XT_BOUNDS
-0004f5 036d .dw XT_QDOCHECK
-0004f6 1c36 .dw XT_DOCONDBRANCH
-0004f7 050a DEST(PFA_MAPSTACK3)
-0004f8 1e9b .dw XT_DODO
- PFA_MAPSTACK1:
-0004f9 1eac .dw XT_I
-0004fa 1f5f .dw XT_FETCHE ; -- i*x XT id
-0004fb 1cc4 .dw XT_SWAP
-0004fc 1cff .dw XT_TO_R
-0004fd 1d08 .dw XT_R_FETCH
-0004fe 1c2a .dw XT_EXECUTE ; i*x id -- j*y true | i*x false
-0004ff 1cb9 .dw XT_QDUP
-000500 1c36 .dw XT_DOCONDBRANCH
-000501 0506 DEST(PFA_MAPSTACK2)
-000502 1cf6 .dw XT_R_FROM
-000503 1cd9 .dw XT_DROP
-000504 1ed4 .dw XT_UNLOOP
-000505 1c20 .dw XT_EXIT
- PFA_MAPSTACK2:
-000506 1cf6 .dw XT_R_FROM
-000507 1fec .dw XT_TWO
-000508 1eba .dw XT_DOPLUSLOOP
-000509 04f9 DEST(PFA_MAPSTACK1)
- PFA_MAPSTACK3:
-00050a 1cd9 .dw XT_DROP
-00050b 1d54 .dw XT_ZERO
-00050c 1c20 .dw XT_EXIT
-
- ;
- ; : map-stack ( i*x XT e-addr -- j*y )
- ; dup cell+ swap @e cells bounds ?do
- ; ( -- i*x XT )
- ; i @e swap >r r@ execute
- ; ?dup if r> drop unloop exit then
- ; r>
- ; 2 +loop drop 0
- ; ;
- .include "words/get-current.asm"
-
- ; Search Order
- ; get the wid of the current compilation word list
- VE_GET_CURRENT:
-00050d ff0b .dw $ff0b
-00050e 6567
-00050f 2d74
-000510 7563
-000511 7272
-000512 6e65
-000513 0074 .db "get-current",0
-000514 04e7 .dw VE_HEAD
- .set VE_HEAD = VE_GET_CURRENT
- XT_GET_CURRENT:
-000515 1c01 .dw DO_COLON
- PFA_GET_CURRENT:
-000516 1c3d .dw XT_DOLITERAL
-000517 003c .dw CFG_CURRENT
-000518 1f5f .dw XT_FETCHE
-000519 1c20 .dw XT_EXIT
- .include "words/get-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_ORDER:
-00051a ff09 .dw $ff09
-00051b 6567
-00051c 2d74
-00051d 726f
-00051e 6564
-00051f 0072 .db "get-order",0
-000520 050d .dw VE_HEAD
- .set VE_HEAD = VE_GET_ORDER
- XT_GET_ORDER:
-000521 1c01 .dw DO_COLON
- PFA_GET_ORDER:
- .endif
-000522 1c3d .dw XT_DOLITERAL
-000523 0040 .dw CFG_ORDERLISTLEN
-000524 04af .dw XT_GET_STACK
-000525 1c20 .dw XT_EXIT
- .include "words/cfg-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CFG_ORDER:
-000526 ff09 .dw $ff09
-000527 6663
-000528 2d67
-000529 726f
-00052a 6564
-00052b 0072 .db "cfg-order",0
-00052c 051a .dw VE_HEAD
- .set VE_HEAD = VE_CFG_ORDER
- XT_CFG_ORDER:
-00052d 1c48 .dw PFA_DOVARIABLE
- PFA_CFG_ORDER:
- .endif
-00052e 0040 .dw CFG_ORDERLISTLEN
- .include "words/compare.asm"
-
- ; String
- ; compares two strings in RAM
- VE_COMPARE:
-00052f ff07 .dw $ff07
-000530 6f63
-000531 706d
-000532 7261
-000533 0065 .db "compare",0
-000534 0526 .dw VE_HEAD
- .set VE_HEAD = VE_COMPARE
- XT_COMPARE:
-000535 0536 .dw PFA_COMPARE
- PFA_COMPARE:
-000536 93bf push xh
-000537 93af push xl
-000538 018c movw temp0, tosl
-000539 9189
-00053a 9199 loadtos
-00053b 01dc movw xl, tosl
-00053c 9189
-00053d 9199 loadtos
-00053e 019c movw temp2, tosl
-00053f 9189
-000540 9199 loadtos
-000541 01fc movw zl, tosl
- PFA_COMPARE_LOOP:
-000542 90ed ld temp4, X+
-000543 90f1 ld temp5, Z+
-000544 14ef cp temp4, temp5
-000545 f451 brne PFA_COMPARE_NOTEQUAL
-000546 950a dec temp0
-000547 f019 breq PFA_COMPARE_ENDREACHED2
-000548 952a dec temp2
-000549 f7c1 brne PFA_COMPARE_LOOP
-00054a c001 rjmp PFA_COMPARE_ENDREACHED
- PFA_COMPARE_ENDREACHED2:
-00054b 952a dec temp2
- PFA_COMPARE_ENDREACHED:
-00054c 2b02 or temp0, temp2
-00054d f411 brne PFA_COMPARE_CHECKLASTCHAR
-00054e 2788 clr tosl
-00054f c002 rjmp PFA_COMPARE_DONE
- PFA_COMPARE_CHECKLASTCHAR:
- PFA_COMPARE_NOTEQUAL:
-000550 ef8f ser tosl
-000551 c000 rjmp PFA_COMPARE_DONE
-
- PFA_COMPARE_DONE:
-000552 2f98 mov tosh, tosl
-000553 91af pop xl
-000554 91bf pop xh
-000555 940c 1c05 jmp_ DO_NEXT
- .include "words/nfa2lfa.asm"
-
- ; System
- ; get the link field address from the name field address
- VE_NFA2LFA:
-000557 ff07 .dw $ff07
-000558 666e
-000559 3e61
-00055a 666c
-00055b 0061 .db "nfa>lfa",0
-00055c 052f .dw VE_HEAD
- .set VE_HEAD = VE_NFA2LFA
- XT_NFA2LFA:
-00055d 1c01 .dw DO_COLON
- PFA_NFA2LFA:
-00055e 0cf9 .dw XT_NAME2STRING
-00055f 1e2f .dw XT_1PLUS
-000560 1e04 .dw XT_2SLASH
-000561 1d9d .dw XT_PLUS
-000562 1c20 .dw XT_EXIT
-
- .include "words/environment.asm"
-
- ; System Value
- ; word list identifier of the environmental search list
- VE_ENVIRONMENT:
-000563 ff0b .dw $ff0b
-000564 6e65
-000565 6976
-000566 6f72
-000567 6d6e
-000568 6e65
-000569 0074 .db "environment",0
-00056a 0557 .dw VE_HEAD
- .set VE_HEAD = VE_ENVIRONMENT
- XT_ENVIRONMENT:
-00056b 1c48 .dw PFA_DOVARIABLE
- PFA_ENVIRONMENT:
-00056c 003a .dw CFG_ENVIRONMENT
- .include "words/env-wordlists.asm"
-
- ; Environment
- ; maximum number of wordlists in the dictionary search order
- VE_ENVWORDLISTS:
-00056d ff09 .dw $ff09
-00056e 6f77
-00056f 6472
-000570 696c
-000571 7473
-000572 0073 .db "wordlists",0
-000573 0000 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVWORDLISTS
- XT_ENVWORDLISTS:
-000574 1c01 .dw DO_COLON
- PFA_ENVWORDLISTS:
-000575 1c3d .dw XT_DOLITERAL
-000576 0008 .dw NUMWORDLISTS
-000577 1c20 .dw XT_EXIT
- .include "words/env-slashpad.asm"
-
- ; Environment
- ; Size of the PAD buffer in bytes
- VE_ENVSLASHPAD:
-000578 ff04 .dw $ff04
-000579 702f
-00057a 6461 .db "/pad"
-00057b 056d .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHPAD
- XT_ENVSLASHPAD:
-00057c 1c01 .dw DO_COLON
- PFA_ENVSLASHPAD:
-00057d 1e8d .dw XT_SP_FETCH
-00057e 060a .dw XT_PAD
-00057f 1d93 .dw XT_MINUS
-000580 1c20 .dw XT_EXIT
- .include "words/env-slashhold.asm"
-
- ; Environment
- ; size of the pictured numeric output buffer in bytes
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENVSLASHHOLD:
-000581 ff05 .dw $ff05
-000582 682f
-000583 6c6f
-000584 0064 .db "/hold",0
-000585 0578 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHHOLD
- XT_ENVSLASHHOLD:
-000586 1c01 .dw DO_COLON
- PFA_ENVSLASHHOLD:
- .endif
-000587 060a .dw XT_PAD
-000588 0645 .dw XT_HERE
-000589 1d93 .dw XT_MINUS
-00058a 1c20 .dw XT_EXIT
- .include "words/env-forthname.asm"
-
- ; Environment
- ; flash address of the amforth name string
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHNAME:
-00058b ff0a .dw $ff0a
-00058c 6f66
-00058d 7472
-00058e 2d68
-00058f 616e
-000590 656d .db "forth-name"
-000591 0581 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHNAME
- XT_ENV_FORTHNAME:
-000592 1c01 .dw DO_COLON
- PFA_EN_FORTHNAME:
-000593 07f4 .dw XT_DOSLITERAL
-000594 0007 .dw 7
- .endif
-000595 6d61
-000596 6f66
-000597 7472
-../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte
-000598 0068 .db "amforth"
- .if cpu_msp430==1
- .endif
-000599 1c20 .dw XT_EXIT
- .include "words/env-forthversion.asm"
-
- ; Environment
- ; version number of amforth
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHVERSION:
-00059a ff07 .dw $ff07
-00059b 6576
-00059c 7372
-00059d 6f69
-00059e 006e .db "version",0
-00059f 058b .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHVERSION
- XT_ENV_FORTHVERSION:
-0005a0 1c01 .dw DO_COLON
- PFA_EN_FORTHVERSION:
- .endif
-0005a1 1c3d .dw XT_DOLITERAL
-0005a2 0041 .dw 65
-0005a3 1c20 .dw XT_EXIT
- .include "words/env-cpu.asm"
-
- ; Environment
- ; flash address of the CPU identification string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_CPU:
-0005a4 ff03 .dw $ff03
-0005a5 7063
-0005a6 0075 .db "cpu",0
-0005a7 059a .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_CPU
- XT_ENV_CPU:
-0005a8 1c01 .dw DO_COLON
- PFA_EN_CPU:
- .endif
-0005a9 1c3d .dw XT_DOLITERAL
-0005aa 002d .dw mcu_name
-0005ab 0853 .dw XT_ICOUNT
-0005ac 1c20 .dw XT_EXIT
- .include "words/env-mcuinfo.asm"
-
- ; Environment
- ; flash address of some CPU specific parameters
- VE_ENV_MCUINFO:
-0005ad ff08 .dw $ff08
-0005ae 636d
-0005af 2d75
-0005b0 6e69
-0005b1 6f66 .db "mcu-info"
-0005b2 05a4 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_MCUINFO
- XT_ENV_MCUINFO:
-0005b3 1c01 .dw DO_COLON
- PFA_EN_MCUINFO:
-0005b4 1c3d .dw XT_DOLITERAL
-0005b5 0029 .dw mcu_info
-0005b6 1c20 .dw XT_EXIT
- .include "words/env-usersize.asm"
-
- ; Environment
- ; size of the USER area in bytes
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_ENVUSERSIZE:
-0005b7 ff05 .dw $ff05
-0005b8 752f
-0005b9 6573
-0005ba 0072 .db "/user",0
-0005bb 05ad .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVUSERSIZE
- XT_ENVUSERSIZE:
-0005bc 1c01 .dw DO_COLON
- PFA_ENVUSERSIZE:
- .endif
-0005bd 1c3d .dw XT_DOLITERAL
-0005be 002c .dw SYSUSERSIZE + APPUSERSIZE
-0005bf 1c20 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/f_cpu.asm"
-
- ; System
- ; put the cpu frequency in Hz on stack
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_F_CPU:
-0005c0 ff05 .dw $ff05
-0005c1 5f66
-0005c2 7063
-0005c3 0075 .db "f_cpu",0
-0005c4 0563 .dw VE_HEAD
- .set VE_HEAD = VE_F_CPU
- XT_F_CPU:
-0005c5 1c01 .dw DO_COLON
- PFA_F_CPU:
- .endif
-0005c6 1c3d .dw XT_DOLITERAL
-0005c7 1200 .dw (F_CPU % 65536)
-0005c8 1c3d .dw XT_DOLITERAL
-0005c9 007a .dw (F_CPU / 65536)
-0005ca 1c20 .dw XT_EXIT
- .include "words/state.asm"
-
- ; System Variable
- ; system state
- VE_STATE:
-0005cb ff05 .dw $ff05
-0005cc 7473
-0005cd 7461
-0005ce 0065 .db "state",0
-0005cf 05c0 .dw VE_HEAD
- .set VE_HEAD = VE_STATE
- XT_STATE:
-0005d0 1c48 .dw PFA_DOVARIABLE
- PFA_STATE:
-0005d1 008f .dw ram_state
-
- .dseg
-00008f ram_state: .byte 2
- .include "words/base.asm"
-
- ; Numeric IO
- ; location of the cell containing the number conversion radix
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BASE:
-0005d2 ff04 .dw $ff04
-0005d3 6162
-0005d4 6573 .db "base"
-0005d5 05cb .dw VE_HEAD
- .set VE_HEAD = VE_BASE
- XT_BASE:
-0005d6 1c58 .dw PFA_DOUSER
- PFA_BASE:
- .endif
-0005d7 000c .dw USER_BASE
-
- .include "words/cells.asm"
-
- ; Arithmetics
- ; n2 is the size in address units of n1 cells
- VE_CELLS:
-0005d8 ff05 .dw $ff05
-0005d9 6563
-0005da 6c6c
-0005db 0073 .db "cells",0
-0005dc 05d2 .dw VE_HEAD
- .set VE_HEAD = VE_CELLS
- XT_CELLS:
-0005dd 1e0c .dw PFA_2STAR
- .include "words/cellplus.asm"
-
- ; Arithmetics
- ; add the size of an address-unit to a-addr1
- VE_CELLPLUS:
-0005de ff05 .dw $ff05
-0005df 6563
-0005e0 6c6c
-0005e1 002b .db "cell+",0
-0005e2 05d8 .dw VE_HEAD
- .set VE_HEAD = VE_CELLPLUS
- XT_CELLPLUS:
-0005e3 05e4 .dw PFA_CELLPLUS
- PFA_CELLPLUS:
-0005e4 9602 adiw tosl, CELLSIZE
-0005e5 940c 1c05 jmp_ DO_NEXT
-
- .include "words/2dup.asm"
-
- ; Stack
- ; Duplicate the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DUP:
-0005e7 ff04 .dw $ff04
-0005e8 6432
-0005e9 7075 .db "2dup"
-0005ea 05de .dw VE_HEAD
- .set VE_HEAD = VE_2DUP
- XT_2DUP:
-0005eb 1c01 .dw DO_COLON
- PFA_2DUP:
- .endif
-
-0005ec 1ccf .dw XT_OVER
-0005ed 1ccf .dw XT_OVER
-0005ee 1c20 .dw XT_EXIT
- .include "words/2drop.asm"
-
- ; Stack
- ; Remove the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DROP:
-0005ef ff05 .dw $ff05
-0005f0 6432
-0005f1 6f72
-0005f2 0070 .db "2drop",0
-0005f3 05e7 .dw VE_HEAD
- .set VE_HEAD = VE_2DROP
- XT_2DROP:
-0005f4 1c01 .dw DO_COLON
- PFA_2DROP:
- .endif
-0005f5 1cd9 .dw XT_DROP
-0005f6 1cd9 .dw XT_DROP
-0005f7 1c20 .dw XT_EXIT
-
- .include "words/tuck.asm"
-
- ; Stack
- ; Copy the first (top) stack item below the second stack item.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TUCK:
-0005f8 ff04 .dw $ff04
-0005f9 7574
-0005fa 6b63 .db "tuck"
-0005fb 05ef .dw VE_HEAD
- .set VE_HEAD = VE_TUCK
- XT_TUCK:
-0005fc 1c01 .dw DO_COLON
- PFA_TUCK:
- .endif
-0005fd 1cc4 .dw XT_SWAP
-0005fe 1ccf .dw XT_OVER
-0005ff 1c20 .dw XT_EXIT
-
- .include "words/to-in.asm"
-
- ; System Variable
- ; pointer to current read position in input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_IN:
-000600 ff03 .dw $ff03
-000601 693e
-000602 006e .db ">in",0
-000603 05f8 .dw VE_HEAD
- .set VE_HEAD = VE_TO_IN
- XT_TO_IN:
-000604 1c58 .dw PFA_DOUSER
- PFA_TO_IN:
- .endif
-000605 0018 .dw USER_TO_IN
- .include "words/pad.asm"
-
- ; System Variable
- ; Address of the temporary scratch buffer.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PAD:
-000606 ff03 .dw $ff03
-000607 6170
-000608 0064 .db "pad",0
-000609 0600 .dw VE_HEAD
- .set VE_HEAD = VE_PAD
- XT_PAD:
-00060a 1c01 .dw DO_COLON
- PFA_PAD:
- .endif
-00060b 0645 .dw XT_HERE
-00060c 1c3d .dw XT_DOLITERAL
-00060d 0028 .dw 40
-00060e 1d9d .dw XT_PLUS
-00060f 1c20 .dw XT_EXIT
- .include "words/emit.asm"
-
- ; Character IO
- ; fetch the emit vector and execute it. should emit a character from TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMIT:
-000610 ff04 .dw $ff04
-000611 6d65
-000612 7469 .db "emit"
-000613 0606 .dw VE_HEAD
- .set VE_HEAD = VE_EMIT
- XT_EMIT:
-000614 0c9a .dw PFA_DODEFER1
- PFA_EMIT:
- .endif
-000615 000e .dw USER_EMIT
-000616 0c63 .dw XT_UDEFERFETCH
-000617 0c6f .dw XT_UDEFERSTORE
- .include "words/emitq.asm"
-
- ; Character IO
- ; fetch emit? vector and execute it. should return the ready-to-send condition
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMITQ:
-000618 ff05 .dw $ff05
-000619 6d65
-00061a 7469
-00061b 003f .db "emit?",0
-00061c 0610 .dw VE_HEAD
- .set VE_HEAD = VE_EMITQ
- XT_EMITQ:
-00061d 0c9a .dw PFA_DODEFER1
- PFA_EMITQ:
- .endif
-00061e 0010 .dw USER_EMITQ
-00061f 0c63 .dw XT_UDEFERFETCH
-000620 0c6f .dw XT_UDEFERSTORE
- .include "words/key.asm"
-
- ; Character IO
- ; fetch key vector and execute it, should leave a single character on TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEY:
-000621 ff03 .dw $ff03
-000622 656b
-000623 0079 .db "key",0
-000624 0618 .dw VE_HEAD
- .set VE_HEAD = VE_KEY
- XT_KEY:
-000625 0c9a .dw PFA_DODEFER1
- PFA_KEY:
- .endif
-000626 0012 .dw USER_KEY
-000627 0c63 .dw XT_UDEFERFETCH
-000628 0c6f .dw XT_UDEFERSTORE
- .include "words/keyq.asm"
-
- ; Character IO
- ; fetch key? vector and execute it. should turn on key sender, if it is disabled/stopped
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEYQ:
-000629 ff04 .dw $ff04
-00062a 656b
-00062b 3f79 .db "key?"
-00062c 0621 .dw VE_HEAD
- .set VE_HEAD = VE_KEYQ
- XT_KEYQ:
-00062d 0c9a .dw PFA_DODEFER1
- PFA_KEYQ:
- .endif
-00062e 0014 .dw USER_KEYQ
-00062f 0c63 .dw XT_UDEFERFETCH
-000630 0c6f .dw XT_UDEFERSTORE
-
- .include "words/dp.asm"
-
- ; System Value
- ; address of the next free dictionary cell
- VE_DP:
-000631 ff02 .dw $ff02
-000632 7064 .db "dp"
-000633 0629 .dw VE_HEAD
- .set VE_HEAD = VE_DP
- XT_DP:
-000634 1c6f .dw PFA_DOVALUE1
- PFA_DP:
-000635 002c .dw CFG_DP
-000636 0c3b .dw XT_EDEFERFETCH
-000637 0c45 .dw XT_EDEFERSTORE
- .include "words/ehere.asm"
-
- ; System Value
- ; address of the next free address in eeprom
- VE_EHERE:
-000638 ff05 .dw $ff05
-000639 6865
-00063a 7265
-00063b 0065 .db "ehere",0
-00063c 0631 .dw VE_HEAD
- .set VE_HEAD = VE_EHERE
- XT_EHERE:
-00063d 1c6f .dw PFA_DOVALUE1
- PFA_EHERE:
-00063e 0030 .dw EE_EHERE
-00063f 0c3b .dw XT_EDEFERFETCH
-000640 0c45 .dw XT_EDEFERSTORE
- .include "words/here.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_HERE:
-000641 ff04 .dw $ff04
-000642 6568
-000643 6572 .db "here"
-000644 0638 .dw VE_HEAD
- .set VE_HEAD = VE_HERE
- XT_HERE:
-000645 1c6f .dw PFA_DOVALUE1
- PFA_HERE:
-000646 002e .dw EE_HERE
-000647 0c3b .dw XT_EDEFERFETCH
-000648 0c45 .dw XT_EDEFERSTORE
- .include "words/allot.asm"
-
- ; System
- ; allocate or release memory in RAM
- VE_ALLOT:
-000649 ff05 .dw $ff05
-00064a 6c61
-00064b 6f6c
-00064c 0074 .db "allot",0
-00064d 0641 .dw VE_HEAD
- .set VE_HEAD = VE_ALLOT
- XT_ALLOT:
-00064e 1c01 .dw DO_COLON
- PFA_ALLOT:
-00064f 0645 .dw XT_HERE
-000650 1d9d .dw XT_PLUS
-000651 0c20 .dw XT_DOTO
-000652 0646 .dw PFA_HERE
-000653 1c20 .dw XT_EXIT
-
- .include "words/bin.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BIN:
-000654 ff03 .dw $ff03
-000655 6962
-000656 006e .db "bin",0
-000657 0649 .dw VE_HEAD
- .set VE_HEAD = VE_BIN
- XT_BIN:
-000658 1c01 .dw DO_COLON
- PFA_BIN:
- .endif
-000659 1fec .dw XT_TWO
-00065a 05d6 .dw XT_BASE
-00065b 1c81 .dw XT_STORE
-00065c 1c20 .dw XT_EXIT
- .include "words/decimal.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DECIMAL:
-00065d ff07 .dw $ff07
-00065e 6564
-00065f 6963
-000660 616d
-000661 006c .db "decimal",0
-000662 0654 .dw VE_HEAD
- .set VE_HEAD = VE_DECIMAL
- XT_DECIMAL:
-000663 1c01 .dw DO_COLON
- PFA_DECIMAL:
- .endif
-000664 1c3d .dw XT_DOLITERAL
-000665 000a .dw 10
-000666 05d6 .dw XT_BASE
-000667 1c81 .dw XT_STORE
-000668 1c20 .dw XT_EXIT
- .include "words/hex.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HEX:
-000669 ff03 .dw $ff03
-00066a 6568
-00066b 0078 .db "hex",0
-00066c 065d .dw VE_HEAD
- .set VE_HEAD = VE_HEX
- XT_HEX:
-00066d 1c01 .dw DO_COLON
- PFA_HEX:
- .endif
-00066e 1c3d .dw XT_DOLITERAL
-00066f 0010 .dw 16
-000670 05d6 .dw XT_BASE
-000671 1c81 .dw XT_STORE
-000672 1c20 .dw XT_EXIT
- .include "words/bl.asm"
-
- ; Character IO
- ; put ascii code of the blank to the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BL:
-000673 ff02 .dw $ff02
-000674 6c62 .db "bl"
-000675 0669 .dw VE_HEAD
- .set VE_HEAD = VE_BL
- XT_BL:
-000676 1c48 .dw PFA_DOVARIABLE
- PFA_BL:
- .endif
-000677 0020 .dw 32
-
- .include "words/turnkey.asm"
-
- ; System Value
- ; Deferred action during startup/reset
- VE_TURNKEY:
-000678 ff07 .dw $ff07
-000679 7574
-00067a 6e72
-00067b 656b
-00067c 0079 .db "turnkey",0
-00067d 0673 .dw VE_HEAD
- .set VE_HEAD = VE_TURNKEY
- XT_TURNKEY:
-00067e 0c9a .dw PFA_DODEFER1
- PFA_TURNKEY:
-00067f 0038 .dw CFG_TURNKEY
-000680 0c3b .dw XT_EDEFERFETCH
-000681 0c45 .dw XT_EDEFERSTORE
-
- .include "words/slashmod.asm"
-
- ; Arithmetics
- ; signed division n1/n2 with remainder and quotient
- VE_SLASHMOD:
-000682 ff04 .dw $ff04
-000683 6d2f
-000684 646f .db "/mod"
-000685 0678 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHMOD
- XT_SLASHMOD:
-000686 0687 .dw PFA_SLASHMOD
- PFA_SLASHMOD:
-000687 019c movw temp2, tosl
-
-000688 9109 ld temp0, Y+
-000689 9119 ld temp1, Y+
-
-00068a 2f41 mov temp6,temp1 ;move dividend High to sign register
-00068b 2743 eor temp6,temp3 ;xor divisor High with sign register
-00068c ff17 sbrs temp1,7 ;if MSB in dividend set
-00068d c004 rjmp PFA_SLASHMOD_1
-00068e 9510 com temp1 ; change sign of dividend
-00068f 9500 com temp0
-000690 5f0f subi temp0,low(-1)
-000691 4f1f sbci temp1,high(-1)
- PFA_SLASHMOD_1:
-000692 ff37 sbrs temp3,7 ;if MSB in divisor set
-000693 c004 rjmp PFA_SLASHMOD_2
-000694 9530 com temp3 ; change sign of divisor
-000695 9520 com temp2
-000696 5f2f subi temp2,low(-1)
-000697 4f3f sbci temp3,high(-1)
-000698 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte
-000699 18ff sub temp5,temp5;clear remainder High byte and carry
-00069a e151 ldi temp7,17 ;init loop counter
-
-00069b 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend
-00069c 1f11 rol temp1
-00069d 955a dec temp7 ;decrement counter
-00069e f439 brne PFA_SLASHMOD_5 ;if done
-00069f ff47 sbrs temp6,7 ; if MSB in sign register set
-0006a0 c004 rjmp PFA_SLASHMOD_4
-0006a1 9510 com temp1 ; change sign of result
-0006a2 9500 com temp0
-0006a3 5f0f subi temp0,low(-1)
-0006a4 4f1f sbci temp1,high(-1)
-0006a5 c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return
-0006a6 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder
-0006a7 1cff rol temp5
-0006a8 1ae2 sub temp4,temp2 ;remainder = remainder - divisor
-0006a9 0af3 sbc temp5,temp3 ;
-0006aa f420 brcc PFA_SLASHMOD_6 ;if result negative
-0006ab 0ee2 add temp4,temp2 ; restore remainder
-0006ac 1ef3 adc temp5,temp3
-0006ad 9488 clc ; clear carry to be shifted into result
-0006ae cfec rjmp PFA_SLASHMOD_3 ;else
-0006af 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result
-0006b0 cfea rjmp PFA_SLASHMOD_3
-
- PFA_SLASHMODmod_done:
- ; put remainder on stack
-0006b1 92fa st -Y,temp5
-0006b2 92ea st -Y,temp4
-
- ; put quotient on stack
-0006b3 01c8 movw tosl, temp0
-0006b4 940c 1c05 jmp_ DO_NEXT
- .include "words/uslashmod.asm"
-
- ; Arithmetics
- ; unsigned division with remainder
- VE_USLASHMOD:
-0006b6 ff05 .dw $ff05
-0006b7 2f75
-0006b8 6f6d
-0006b9 0064 .db "u/mod",0
-0006ba 0682 .dw VE_HEAD
- .set VE_HEAD = VE_USLASHMOD
- XT_USLASHMOD:
-0006bb 1c01 .dw DO_COLON
- PFA_USLASHMOD:
-0006bc 1cff .dw XT_TO_R
-0006bd 1d54 .dw XT_ZERO
-0006be 1cf6 .dw XT_R_FROM
-0006bf 1dc2 .dw XT_UMSLASHMOD
-0006c0 1c20 .dw XT_EXIT
- .include "words/negate.asm"
-
- ; Logic
- ; 2-complement
- VE_NEGATE:
-0006c1 ff06 .dw $ff06
-0006c2 656e
-0006c3 6167
-0006c4 6574 .db "negate"
-0006c5 06b6 .dw VE_HEAD
- .set VE_HEAD = VE_NEGATE
- XT_NEGATE:
-0006c6 1c01 .dw DO_COLON
- PFA_NEGATE:
-0006c7 1dfd .dw XT_INVERT
-0006c8 1e2f .dw XT_1PLUS
-0006c9 1c20 .dw XT_EXIT
- .include "words/slash.asm"
-
- ; Arithmetics
- ; divide n1 by n2. giving the quotient
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SLASH:
-0006ca ff01 .dw $ff01
-0006cb 002f .db "/",0
-0006cc 06c1 .dw VE_HEAD
- .set VE_HEAD = VE_SLASH
- XT_SLASH:
-0006cd 1c01 .dw DO_COLON
- PFA_SLASH:
- .endif
-0006ce 0686 .dw XT_SLASHMOD
-0006cf 1cf0 .dw XT_NIP
-0006d0 1c20 .dw XT_EXIT
-
- .include "words/mod.asm"
-
- ; Arithmetics
- ; divide n1 by n2 giving the remainder n3
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MOD:
-0006d1 ff03 .dw $ff03
-0006d2 6f6d
-0006d3 0064 .db "mod",0
-0006d4 06ca .dw VE_HEAD
- .set VE_HEAD = VE_MOD
- XT_MOD:
-0006d5 1c01 .dw DO_COLON
- PFA_MOD:
- .endif
-0006d6 0686 .dw XT_SLASHMOD
-0006d7 1cd9 .dw XT_DROP
-0006d8 1c20 .dw XT_EXIT
- .include "words/abs.asm"
-
- ; DUP ?NEGATE ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABS:
-0006d9 ff03 .dw $ff03
-0006da 6261
-0006db 0073 .db "abs",0
-0006dc 06d1 .dw VE_HEAD
- .set VE_HEAD = VE_ABS
- XT_ABS:
-0006dd 1c01 .dw DO_COLON
- PFA_ABS:
-
- .endif
-
-0006de 1cb1
-0006df 1e3e
-0006e0 1c20 .DW XT_DUP,XT_QNEGATE,XT_EXIT
- .include "words/min.asm"
-
- ; Compare
- ; compare two values leave the smaller one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MIN:
-0006e1 ff03 .dw $ff03
-0006e2 696d
-0006e3 006e .db "min",0
-0006e4 06d9 .dw VE_HEAD
- .set VE_HEAD = VE_MIN
- XT_MIN:
-0006e5 1c01 .dw DO_COLON
- PFA_MIN:
- .endif
-0006e6 05eb .dw XT_2DUP
-0006e7 1d78 .dw XT_GREATER
-0006e8 1c36 .dw XT_DOCONDBRANCH
-0006e9 06eb DEST(PFA_MIN1)
-0006ea 1cc4 .dw XT_SWAP
- PFA_MIN1:
-0006eb 1cd9 .dw XT_DROP
-0006ec 1c20 .dw XT_EXIT
- .include "words/max.asm"
-
- ; Compare
- ; compare two values, leave the bigger one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAX:
-0006ed ff03 .dw $ff03
-0006ee 616d
-0006ef 0078 .db "max",0
-0006f0 06e1 .dw VE_HEAD
- .set VE_HEAD = VE_MAX
- XT_MAX:
-0006f1 1c01 .dw DO_COLON
- PFA_MAX:
-
- .endif
-0006f2 05eb .dw XT_2DUP
-0006f3 1d6e .dw XT_LESS
-0006f4 1c36 .dw XT_DOCONDBRANCH
-0006f5 06f7 DEST(PFA_MAX1)
-0006f6 1cc4 .dw XT_SWAP
- PFA_MAX1:
-0006f7 1cd9 .dw XT_DROP
-0006f8 1c20 .dw XT_EXIT
- .include "words/within.asm"
-
- ; Compare
- ; check if n is within min..max
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WITHIN:
-0006f9 ff06 .dw $ff06
-0006fa 6977
-0006fb 6874
-0006fc 6e69 .db "within"
-0006fd 06ed .dw VE_HEAD
- .set VE_HEAD = VE_WITHIN
- XT_WITHIN:
-0006fe 1c01 .dw DO_COLON
- PFA_WITHIN:
- .endif
-0006ff 1ccf .dw XT_OVER
-000700 1d93 .dw XT_MINUS
-000701 1cff .dw XT_TO_R
-000702 1d93 .dw XT_MINUS
-000703 1cf6 .dw XT_R_FROM
-000704 1d5c .dw XT_ULESS
-000705 1c20 .dw XT_EXIT
-
- .include "words/to-upper.asm"
-
- ; String
- ; if c is a lowercase letter convert it to uppercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TOUPPER:
-000706 ff07 .dw $ff07
-000707 6f74
-000708 7075
-000709 6570
-00070a 0072 .db "toupper",0
-00070b 06f9 .dw VE_HEAD
- .set VE_HEAD = VE_TOUPPER
- XT_TOUPPER:
-00070c 1c01 .dw DO_COLON
- PFA_TOUPPER:
- .endif
-00070d 1cb1 .dw XT_DUP
-00070e 1c3d .dw XT_DOLITERAL
-00070f 0061 .dw 'a'
-000710 1c3d .dw XT_DOLITERAL
-000711 007b .dw 'z'+1
-000712 06fe .dw XT_WITHIN
-000713 1c36 .dw XT_DOCONDBRANCH
-000714 0718 DEST(PFA_TOUPPER0)
-000715 1c3d .dw XT_DOLITERAL
-000716 00df .dw 223 ; inverse of 0x20: 0xdf
-000717 1e13 .dw XT_AND
- PFA_TOUPPER0:
-000718 1c20 .dw XT_EXIT
- .include "words/to-lower.asm"
-
- ; String
- ; if C is an uppercase letter convert it to lowercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_TOLOWER:
-000719 ff07 .dw $ff07
-00071a 6f74
-00071b 6f6c
-00071c 6577
-00071d 0072 .db "tolower",0
-00071e 0706 .dw VE_HEAD
- .set VE_HEAD = VE_TOLOWER
- XT_TOLOWER:
-00071f 1c01 .dw DO_COLON
- PFA_TOLOWER:
- .endif
-000720 1cb1 .dw XT_DUP
-000721 1c3d .dw XT_DOLITERAL
-000722 0041 .dw 'A'
-000723 1c3d .dw XT_DOLITERAL
-000724 005b .dw 'Z'+1
-000725 06fe .dw XT_WITHIN
-000726 1c36 .dw XT_DOCONDBRANCH
-000727 072b DEST(PFA_TOLOWER0)
-000728 1c3d .dw XT_DOLITERAL
-000729 0020 .dw 32
-00072a 1e1c .dw XT_OR
- PFA_TOLOWER0:
-00072b 1c20 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;
- .include "words/hld.asm"
-
- ; Numeric IO
- ; pointer to current write position in the Pictured Numeric Output buffer
- VE_HLD:
-00072c ff03 .dw $ff03
-00072d 6c68
-00072e 0064 .db "hld",0
-00072f 0719 .dw VE_HEAD
- .set VE_HEAD = VE_HLD
- XT_HLD:
-000730 1c48 .dw PFA_DOVARIABLE
- PFA_HLD:
-000731 0091 .dw ram_hld
-
- .dseg
-000091 ram_hld: .byte 2
- .cseg
- .include "words/hold.asm"
-
- ; Numeric IO
- ; prepend character to pictured numeric output buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HOLD:
-000732 ff04 .dw $ff04
-000733 6f68
-000734 646c .db "hold"
-000735 072c .dw VE_HEAD
- .set VE_HEAD = VE_HOLD
- XT_HOLD:
-000736 1c01 .dw DO_COLON
- PFA_HOLD:
- .endif
-000737 0730 .dw XT_HLD
-000738 1cb1 .dw XT_DUP
-000739 1c79 .dw XT_FETCH
-00073a 1e35 .dw XT_1MINUS
-00073b 1cb1 .dw XT_DUP
-00073c 1cff .dw XT_TO_R
-00073d 1cc4 .dw XT_SWAP
-00073e 1c81 .dw XT_STORE
-00073f 1cf6 .dw XT_R_FROM
-000740 1c8d .dw XT_CSTORE
-000741 1c20 .dw XT_EXIT
- .include "words/less-sharp.asm" ; <#
-
- ; Numeric IO
- ; initialize the pictured numeric output conversion process
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_SHARP:
-000742 ff02 .dw $ff02
-000743 233c .db "<#"
-000744 0732 .dw VE_HEAD
- .set VE_HEAD = VE_L_SHARP
- XT_L_SHARP:
-000745 1c01 .dw DO_COLON
- PFA_L_SHARP:
- .endif
-000746 060a .dw XT_PAD
-000747 0730 .dw XT_HLD
-000748 1c81 .dw XT_STORE
-000749 1c20 .dw XT_EXIT
- .include "words/sharp.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert one digit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SHARP:
-00074a ff01 .dw $ff01
-00074b 0023 .db "#",0
-00074c 0742 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP
- XT_SHARP:
-00074d 1c01 .dw DO_COLON
- PFA_SHARP:
- .endif
-00074e 05d6 .dw XT_BASE
-00074f 1c79 .dw XT_FETCH
-000750 07ca .dw XT_UDSLASHMOD
-000751 1ce1 .dw XT_ROT
-000752 1c3d .dw XT_DOLITERAL
-000753 0009 .dw 9
-000754 1ccf .dw XT_OVER
-000755 1d6e .dw XT_LESS
-000756 1c36 .dw XT_DOCONDBRANCH
-000757 075b DEST(PFA_SHARP1)
-000758 1c3d .dw XT_DOLITERAL
-000759 0007 .dw 7
-00075a 1d9d .dw XT_PLUS
- PFA_SHARP1:
-00075b 1c3d .dw XT_DOLITERAL
-00075c 0030 .dw 48 ; ASCII 0
-00075d 1d9d .dw XT_PLUS
-00075e 0736 .dw XT_HOLD
-00075f 1c20 .dw XT_EXIT
- ; : # ( ud1 -- ud2 )
- ; base @ ud/mod rot 9 over < if 7 + then 30 + hold ;
- .include "words/sharp-s.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert all digits until 0 (zero) is reached
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_S:
-000760 ff02 .dw $ff02
-000761 7323 .db "#s"
-000762 074a .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_S
- XT_SHARP_S:
-000763 1c01 .dw DO_COLON
- PFA_SHARP_S:
- .endif
- NUMS1:
-000764 074d .dw XT_SHARP
-000765 05eb .dw XT_2DUP
-000766 1e1c .dw XT_OR
-000767 1d1a .dw XT_ZEROEQUAL
-000768 1c36 .dw XT_DOCONDBRANCH
-000769 0764 DEST(NUMS1) ; PFA_SHARP_S
-00076a 1c20 .dw XT_EXIT
- .include "words/sharp-greater.asm" ; #>
-
- ; Numeric IO
- ; Pictured Numeric Output: convert PNO buffer into an string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_G:
-00076b ff02 .dw $ff02
-00076c 3e23 .db "#>"
-00076d 0760 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_G
- XT_SHARP_G:
-00076e 1c01 .dw DO_COLON
- PFA_SHARP_G:
- .endif
-00076f 05f4 .dw XT_2DROP
-000770 0730 .dw XT_HLD
-000771 1c79 .dw XT_FETCH
-000772 060a .dw XT_PAD
-000773 1ccf .dw XT_OVER
-000774 1d93 .dw XT_MINUS
-000775 1c20 .dw XT_EXIT
- .include "words/sign.asm"
-
- ; Numeric IO
- ; place a - in HLD if n is negative
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SIGN:
-000776 ff04 .dw $ff04
-000777 6973
-000778 6e67 .db "sign"
-000779 076b .dw VE_HEAD
- .set VE_HEAD = VE_SIGN
- XT_SIGN:
-00077a 1c01 .dw DO_COLON
- PFA_SIGN:
- .endif
-00077b 1d21 .dw XT_ZEROLESS
-00077c 1c36 .dw XT_DOCONDBRANCH
-00077d 0781 DEST(PFA_SIGN1)
-00077e 1c3d .dw XT_DOLITERAL
-00077f 002d .dw 45 ; ascii -
-000780 0736 .dw XT_HOLD
- PFA_SIGN1:
-000781 1c20 .dw XT_EXIT
- .include "words/d-dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOTR:
-000782 ff03 .dw $ff03
-000783 2e64
-000784 0072 .db "d.r",0
-000785 0776 .dw VE_HEAD
- .set VE_HEAD = VE_DDOTR
- XT_DDOTR:
-000786 1c01 .dw DO_COLON
- PFA_DDOTR:
-
- .endif
-000787 1cff .dw XT_TO_R
-000788 05fc .dw XT_TUCK
-000789 0d5b .dw XT_DABS
-00078a 0745 .dw XT_L_SHARP
-00078b 0763 .dw XT_SHARP_S
-00078c 1ce1 .dw XT_ROT
-00078d 077a .dw XT_SIGN
-00078e 076e .dw XT_SHARP_G
-00078f 1cf6 .dw XT_R_FROM
-000790 1ccf .dw XT_OVER
-000791 1d93 .dw XT_MINUS
-000792 0872 .dw XT_SPACES
-000793 0882 .dw XT_TYPE
-000794 1c20 .dw XT_EXIT
- ; : d.r ( d n -- )
- ; >r swap over dabs <# #s rot sign #> r> over - spaces type ;
- .include "words/dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTR:
-000795 ff02 .dw $ff02
-000796 722e .db ".r"
-000797 0782 .dw VE_HEAD
- .set VE_HEAD = VE_DOTR
- XT_DOTR:
-000798 1c01 .dw DO_COLON
- PFA_DOTR:
-
- .endif
-000799 1cff .dw XT_TO_R
-00079a 0dee .dw XT_S2D
-00079b 1cf6 .dw XT_R_FROM
-00079c 0786 .dw XT_DDOTR
-00079d 1c20 .dw XT_EXIT
- ; : .r ( s n -- ) >r s>d r> d.r ;
- .include "words/d-dot.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOT:
-00079e ff02 .dw $ff02
-00079f 2e64 .db "d."
-0007a0 0795 .dw VE_HEAD
- .set VE_HEAD = VE_DDOT
- XT_DDOT:
-0007a1 1c01 .dw DO_COLON
- PFA_DDOT:
-
- .endif
-0007a2 1d54 .dw XT_ZERO
-0007a3 0786 .dw XT_DDOTR
-0007a4 0869 .dw XT_SPACE
-0007a5 1c20 .dw XT_EXIT
- ; : d. ( d -- ) 0 d.r space ;
- .include "words/dot.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOT:
-0007a6 ff01 .dw $ff01
-0007a7 002e .db ".",0
-0007a8 079e .dw VE_HEAD
- .set VE_HEAD = VE_DOT
- XT_DOT:
-0007a9 1c01 .dw DO_COLON
- PFA_DOT:
- .endif
-0007aa 0dee .dw XT_S2D
-0007ab 07a1 .dw XT_DDOT
-0007ac 1c20 .dw XT_EXIT
- ; : . ( s -- ) s>d d. ;
- .include "words/ud-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDDOT:
-0007ad ff03 .dw $ff03
-0007ae 6475
-0007af 002e .db "ud.",0
-0007b0 07a6 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOT
- XT_UDDOT:
-0007b1 1c01 .dw DO_COLON
- PFA_UDDOT:
- .endif
-0007b2 1d54 .dw XT_ZERO
-0007b3 07ba .dw XT_UDDOTR
-0007b4 0869 .dw XT_SPACE
-0007b5 1c20 .dw XT_EXIT
- .include "words/ud-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDDOTR:
-0007b6 ff04 .dw $ff04
-0007b7 6475
-0007b8 722e .db "ud.r"
-0007b9 07ad .dw VE_HEAD
- .set VE_HEAD = VE_UDDOTR
- XT_UDDOTR:
-0007ba 1c01 .dw DO_COLON
- PFA_UDDOTR:
- .endif
-0007bb 1cff .dw XT_TO_R
-0007bc 0745 .dw XT_L_SHARP
-0007bd 0763 .dw XT_SHARP_S
-0007be 076e .dw XT_SHARP_G
-0007bf 1cf6 .dw XT_R_FROM
-0007c0 1ccf .dw XT_OVER
-0007c1 1d93 .dw XT_MINUS
-0007c2 0872 .dw XT_SPACES
-0007c3 0882 .dw XT_TYPE
-0007c4 1c20 .dw XT_EXIT
- .include "words/ud-slash-mod.asm"
-
- ; Arithmetics
- ; unsigned double cell division with remainder
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSLASHMOD:
-0007c5 ff06 .dw $ff06
-0007c6 6475
-0007c7 6d2f
-0007c8 646f .db "ud/mod"
-0007c9 07b6 .dw VE_HEAD
- .set VE_HEAD = VE_UDSLASHMOD
- XT_UDSLASHMOD:
-0007ca 1c01 .dw DO_COLON
- PFA_UDSLASHMOD:
- .endif
-0007cb 1cff .dw XT_TO_R
-0007cc 1d54 .dw XT_ZERO
-0007cd 1d08 .dw XT_R_FETCH
-0007ce 1dc2 .dw XT_UMSLASHMOD
-0007cf 1cf6 .dw XT_R_FROM
-0007d0 1cc4 .dw XT_SWAP
-0007d1 1cff .dw XT_TO_R
-0007d2 1dc2 .dw XT_UMSLASHMOD
-0007d3 1cf6 .dw XT_R_FROM
-0007d4 1c20 .dw XT_EXIT
- .include "words/digit-q.asm"
-
- ; Numeric IO
- ; tries to convert a character to a number, set flag accordingly
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DIGITQ:
-0007d5 ff06 .dw $ff06
-0007d6 6964
-0007d7 6967
-0007d8 3f74 .db "digit?"
-0007d9 07c5 .dw VE_HEAD
- .set VE_HEAD = VE_DIGITQ
- XT_DIGITQ:
-0007da 1c01 .dw DO_COLON
- PFA_DIGITQ:
- .endif
-0007db 070c .dw XT_TOUPPER
-0007dc 1cb1
-0007dd 1c3d
-0007de 0039
-0007df 1d78
-0007e0 1c3d
-0007e1 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256
-0007e2 1e13
-0007e3 1d9d
-0007e4 1cb1
-0007e5 1c3d
-0007e6 0140
-0007e7 1d78 .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER
-0007e8 1c3d
-0007e9 0107
-0007ea 1e13
-0007eb 1d93
-0007ec 1c3d
-0007ed 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48
-0007ee 1d93
-0007ef 1cb1
-0007f0 05d6
-0007f1 1c79
-0007f2 1d5c .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS
-0007f3 1c20 .DW XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/do-sliteral.asm"
-
- ; String
- ; runtime portion of sliteral
- ;VE_DOSLITERAL:
- ; .dw $ff0a
- ; .db "(sliteral)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSLITERAL
- XT_DOSLITERAL:
-0007f4 1c01 .dw DO_COLON
- PFA_DOSLITERAL:
-0007f5 1d08 .dw XT_R_FETCH ; ( -- addr )
-0007f6 0853 .dw XT_ICOUNT
-0007f7 1cf6 .dw XT_R_FROM
-0007f8 1ccf .dw XT_OVER ; ( -- addr' n addr n)
-0007f9 1e2f .dw XT_1PLUS
-0007fa 1e04 .dw XT_2SLASH ; ( -- addr' n addr k )
-0007fb 1d9d .dw XT_PLUS ; ( -- addr' n addr'' )
-0007fc 1e2f .dw XT_1PLUS
-0007fd 1cff .dw XT_TO_R ; ( -- )
-0007fe 1c20 .dw XT_EXIT
- .include "words/scomma.asm"
-
- ; Compiler
- ; compiles a string from RAM to Flash
- VE_SCOMMA:
-0007ff ff02 .dw $ff02
-000800 2c73 .db "s",$2c
-000801 07d5 .dw VE_HEAD
- .set VE_HEAD = VE_SCOMMA
- XT_SCOMMA:
-000802 1c01 .dw DO_COLON
- PFA_SCOMMA:
-000803 1cb1 .dw XT_DUP
-000804 0806 .dw XT_DOSCOMMA
-000805 1c20 .dw XT_EXIT
-
- ; ( addr len len' -- )
- ; Compiler
- ; compiles a string from RAM to Flash
- ;VE_DOSCOMMA:
- ; .dw $ff04
- ; .db "(s",$2c,")"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSCOMMA
- XT_DOSCOMMA:
-000806 1c01 .dw DO_COLON
- PFA_DOSCOMMA:
-000807 02ae .dw XT_COMMA
-000808 1cb1 .dw XT_DUP ; ( --addr len len)
-000809 1e04 .dw XT_2SLASH ; ( -- addr len len/2
-00080a 05fc .dw XT_TUCK ; ( -- addr len/2 len len/2
-00080b 1e0b .dw XT_2STAR ; ( -- addr len/2 len len'
-00080c 1d93 .dw XT_MINUS ; ( -- addr len/2 rem
-00080d 1cff .dw XT_TO_R
-00080e 1d54 .dw XT_ZERO
-00080f 036d .dw XT_QDOCHECK
-000810 1c36 .dw XT_DOCONDBRANCH
-000811 0819 .dw PFA_SCOMMA2
-000812 1e9b .dw XT_DODO
- PFA_SCOMMA1:
-000813 1cb1 .dw XT_DUP ; ( -- addr addr )
-000814 1c79 .dw XT_FETCH ; ( -- addr c1c2 )
-000815 02ae .dw XT_COMMA ; ( -- addr )
-000816 05e3 .dw XT_CELLPLUS ; ( -- addr+cell )
-000817 1ec9 .dw XT_DOLOOP
-000818 0813 .dw PFA_SCOMMA1
- PFA_SCOMMA2:
-000819 1cf6 .dw XT_R_FROM
-00081a 1d28 .dw XT_GREATERZERO
-00081b 1c36 .dw XT_DOCONDBRANCH
-00081c 0820 .dw PFA_SCOMMA3
-00081d 1cb1 .dw XT_DUP ; well, tricky
-00081e 1c98 .dw XT_CFETCH
-00081f 02ae .dw XT_COMMA
- PFA_SCOMMA3:
-000820 1cd9 .dw XT_DROP ; ( -- )
-000821 1c20 .dw XT_EXIT
- .include "words/itype.asm"
-
- ; Tools
- ; reads string from flash and prints it
- VE_ITYPE:
-000822 ff05 .dw $ff05
-000823 7469
-000824 7079
-000825 0065 .db "itype",0
-000826 07ff .dw VE_HEAD
- .set VE_HEAD = VE_ITYPE
- XT_ITYPE:
-000827 1c01 .dw DO_COLON
- PFA_ITYPE:
-000828 1cb1 .dw XT_DUP ; ( --addr len len)
-000829 1e04 .dw XT_2SLASH ; ( -- addr len len/2
-00082a 05fc .dw XT_TUCK ; ( -- addr len/2 len len/2
-00082b 1e0b .dw XT_2STAR ; ( -- addr len/2 len len'
-00082c 1d93 .dw XT_MINUS ; ( -- addr len/2 rem
-00082d 1cff .dw XT_TO_R
-00082e 1d54 .dw XT_ZERO
-00082f 036d .dw XT_QDOCHECK
-000830 1c36 .dw XT_DOCONDBRANCH
-000831 083b .dw PFA_ITYPE2
-000832 1e9b .dw XT_DODO
- PFA_ITYPE1:
-000833 1cb1 .dw XT_DUP ; ( -- addr addr )
-000834 1fcb .dw XT_FETCHI ; ( -- addr c1c2 )
-000835 1cb1 .dw XT_DUP
-000836 0848 .dw XT_LOWEMIT
-000837 0844 .dw XT_HIEMIT
-000838 1e2f .dw XT_1PLUS ; ( -- addr+cell )
-000839 1ec9 .dw XT_DOLOOP
-00083a 0833 .dw PFA_ITYPE1
- PFA_ITYPE2:
-00083b 1cf6 .dw XT_R_FROM
-00083c 1d28 .dw XT_GREATERZERO
-00083d 1c36 .dw XT_DOCONDBRANCH
-00083e 0842 .dw PFA_ITYPE3
-00083f 1cb1 .dw XT_DUP ; make sure the drop below has always something to do
-000840 1fcb .dw XT_FETCHI
-000841 0848 .dw XT_LOWEMIT
- PFA_ITYPE3:
-000842 1cd9 .dw XT_DROP
-000843 1c20 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_HIEMIT:
- ; .dw $ff06
- ; .db "hiemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_HIEMIT
- XT_HIEMIT:
-000844 1c01 .dw DO_COLON
- PFA_HIEMIT:
-000845 1ef9 .dw XT_BYTESWAP
-000846 0848 .dw XT_LOWEMIT
-000847 1c20 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_LOWEMIT:
- ; .dw $ff07
- ; .db "lowemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LOWEMIT
- XT_LOWEMIT:
-000848 1c01 .dw DO_COLON
- PFA_LOWEMIT:
-000849 1c3d .dw XT_DOLITERAL
-00084a 00ff .dw $00ff
-00084b 1e13 .dw XT_AND
-00084c 0614 .dw XT_EMIT
-00084d 1c20 .dw XT_EXIT
- .include "words/icount.asm"
-
- ; Tools
- ; get count information out of a counted string in flash
- VE_ICOUNT:
-00084e ff06 .dw $ff06
-00084f 6369
-000850 756f
-000851 746e .db "icount"
-000852 0822 .dw VE_HEAD
- .set VE_HEAD = VE_ICOUNT
- XT_ICOUNT:
-000853 1c01 .dw DO_COLON
- PFA_ICOUNT:
-000854 1cb1 .dw XT_DUP
-000855 1e2f .dw XT_1PLUS
-000856 1cc4 .dw XT_SWAP
-000857 1fcb .dw XT_FETCHI
-000858 1c20 .dw XT_EXIT
- .include "words/cr.asm"
-
- ; Character IO
- ; cause subsequent output appear at the beginning of the next line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CR:
-000859 ff02 .dw 0xff02
-00085a 7263 .db "cr"
-00085b 084e .dw VE_HEAD
- .set VE_HEAD = VE_CR
- XT_CR:
-00085c 1c01 .dw DO_COLON
- PFA_CR:
- .endif
-
-00085d 1c3d .dw XT_DOLITERAL
-00085e 000d .dw 13
-00085f 0614 .dw XT_EMIT
-000860 1c3d .dw XT_DOLITERAL
-000861 000a .dw 10
-000862 0614 .dw XT_EMIT
-000863 1c20 .dw XT_EXIT
- .include "words/space.asm"
-
- ; Character IO
- ; emits a space (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACE:
-000864 ff05 .dw $ff05
-000865 7073
-000866 6361
-000867 0065 .db "space",0
-000868 0859 .dw VE_HEAD
- .set VE_HEAD = VE_SPACE
- XT_SPACE:
-000869 1c01 .dw DO_COLON
- PFA_SPACE:
- .endif
-00086a 0676 .dw XT_BL
-00086b 0614 .dw XT_EMIT
-00086c 1c20 .dw XT_EXIT
- .include "words/spaces.asm"
-
- ; Character IO
- ; emits n space(s) (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACES:
-00086d ff06 .dw $ff06
-00086e 7073
-00086f 6361
-000870 7365 .db "spaces"
-000871 0864 .dw VE_HEAD
- .set VE_HEAD = VE_SPACES
- XT_SPACES:
-000872 1c01 .dw DO_COLON
- PFA_SPACES:
-
- .endif
- ;C SPACES n -- output n spaces
- ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ;
-000873 1d54
-000874 06f1 .DW XT_ZERO, XT_MAX
-000875 1cb1
-000876 1c36 SPCS1: .DW XT_DUP,XT_DOCONDBRANCH
-000877 087c DEST(SPCS2)
-000878 0869
-000879 1e35
-00087a 1c2f .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH
-00087b 0875 DEST(SPCS1)
-00087c 1cd9
-00087d 1c20 SPCS2: .DW XT_DROP,XT_EXIT
- .include "words/type.asm"
-
- ; Character IO
- ; print a RAM based string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TYPE:
-00087e ff04 .dw $ff04
-00087f 7974
-000880 6570 .db "type"
-000881 086d .dw VE_HEAD
- .set VE_HEAD = VE_TYPE
- XT_TYPE:
-000882 1c01 .dw DO_COLON
- PFA_TYPE:
-
- .endif
-000883 0de5 .dw XT_BOUNDS
-000884 036d .dw XT_QDOCHECK
-000885 1c36 .dw XT_DOCONDBRANCH
-000886 088d DEST(PFA_TYPE2)
-000887 1e9b .dw XT_DODO
- PFA_TYPE1:
-000888 1eac .dw XT_I
-000889 1c98 .dw XT_CFETCH
-00088a 0614 .dw XT_EMIT
-00088b 1ec9 .dw XT_DOLOOP
-00088c 0888 DEST(PFA_TYPE1)
- PFA_TYPE2:
-00088d 1c20 .dw XT_EXIT
- .include "words/tick.asm"
-
- ; Dictionary
- ; search dictionary for name, return XT or throw an exception -13
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TICK:
-00088e ff01 .dw $ff01
-00088f 0027 .db "'",0
-000890 087e .dw VE_HEAD
- .set VE_HEAD = VE_TICK
- XT_TICK:
-000891 1c01 .dw DO_COLON
- PFA_TICK:
- .endif
-000892 0a3b .dw XT_PARSENAME
-000893 0b60 .dw XT_FORTHRECOGNIZER
-000894 0b36 .dw XT_RECOGNIZE
- ; a word is tickable unless DT:TOKEN is DT:NULL or
- ; the interpret action is a NOOP
-000895 1cb1 .dw XT_DUP
-000896 0bd1 .dw XT_DT_NULL
-000897 1fe0 .dw XT_EQUAL
-000898 1cc4 .dw XT_SWAP
-000899 1fcb .dw XT_FETCHI
-00089a 1c3d .dw XT_DOLITERAL
-00089b 0c06 .dw XT_NOOP
-00089c 1fe0 .dw XT_EQUAL
-00089d 1e1c .dw XT_OR
-00089e 1c36 .dw XT_DOCONDBRANCH
-00089f 08a3 DEST(PFA_TICK1)
-0008a0 1c3d .dw XT_DOLITERAL
-0008a1 fff3 .dw -13
-0008a2 08c8 .dw XT_THROW
- PFA_TICK1:
-0008a3 1cd9 .dw XT_DROP
-0008a4 1c20 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/handler.asm"
-
- ; Exceptions
- ; USER variable used by catch/throw
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HANDLER:
-0008a5 ff07 .dw $ff07
-0008a6 6168
-0008a7 646e
-0008a8 656c
-0008a9 0072 .db "handler",0
-0008aa 088e .dw VE_HEAD
- .set VE_HEAD = VE_HANDLER
- XT_HANDLER:
-0008ab 1c58 .dw PFA_DOUSER
- PFA_HANDLER:
- .endif
-0008ac 000a .dw USER_HANDLER
- .include "words/catch.asm"
-
- ; Exceptions
- ; execute XT and check for exceptions.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CATCH:
-0008ad ff05 .dw $ff05
-0008ae 6163
-0008af 6374
-0008b0 0068 .db "catch",0
-0008b1 08a5 .dw VE_HEAD
- .set VE_HEAD = VE_CATCH
- XT_CATCH:
-0008b2 1c01 .dw DO_COLON
- PFA_CATCH:
- .endif
-
- ; sp@ >r
-0008b3 1e8d .dw XT_SP_FETCH
-0008b4 1cff .dw XT_TO_R
- ; handler @ >r
-0008b5 08ab .dw XT_HANDLER
-0008b6 1c79 .dw XT_FETCH
-0008b7 1cff .dw XT_TO_R
- ; rp@ handler !
-0008b8 1e76 .dw XT_RP_FETCH
-0008b9 08ab .dw XT_HANDLER
-0008ba 1c81 .dw XT_STORE
-0008bb 1c2a .dw XT_EXECUTE
- ; r> handler !
-0008bc 1cf6 .dw XT_R_FROM
-0008bd 08ab .dw XT_HANDLER
-0008be 1c81 .dw XT_STORE
-0008bf 1cf6 .dw XT_R_FROM
-0008c0 1cd9 .dw XT_DROP
-0008c1 1d54 .dw XT_ZERO
-0008c2 1c20 .dw XT_EXIT
- .include "words/throw.asm"
-
- ; Exceptions
- ; throw an exception
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THROW:
-0008c3 ff05 .dw $ff05
-0008c4 6874
-0008c5 6f72
-0008c6 0077 .db "throw",0
-0008c7 08ad .dw VE_HEAD
- .set VE_HEAD = VE_THROW
- XT_THROW:
-0008c8 1c01 .dw DO_COLON
- PFA_THROW:
- .endif
-0008c9 1cb1 .dw XT_DUP
-0008ca 1d1a .dw XT_ZEROEQUAL
-0008cb 1c36 .dw XT_DOCONDBRANCH
-0008cc 08cf DEST(PFA_THROW1)
-0008cd 1cd9 .dw XT_DROP
-0008ce 1c20 .dw XT_EXIT
- PFA_THROW1:
-0008cf 08ab .dw XT_HANDLER
-0008d0 1c79 .dw XT_FETCH
-0008d1 1e80 .dw XT_RP_STORE
-0008d2 1cf6 .dw XT_R_FROM
-0008d3 08ab .dw XT_HANDLER
-0008d4 1c81 .dw XT_STORE
-0008d5 1cf6 .dw XT_R_FROM
-0008d6 1cc4 .dw XT_SWAP
-0008d7 1cff .dw XT_TO_R
-0008d8 1e96 .dw XT_SP_STORE
-0008d9 1cd9 .dw XT_DROP
-0008da 1cf6 .dw XT_R_FROM
-0008db 1c20 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/cskip.asm"
-
- ; String
- ; skips leading occurancies in string at addr1/n1 leaving addr2/n2 pointing to the 1st non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSKIP:
-0008dc ff05 .dw $ff05
-0008dd 7363
-0008de 696b
-0008df 0070 .db "cskip",0
-0008e0 08c3 .dw VE_HEAD
- .set VE_HEAD = VE_CSKIP
- XT_CSKIP:
-0008e1 1c01 .dw DO_COLON
- PFA_CSKIP:
- .endif
-0008e2 1cff .dw XT_TO_R ; ( -- addr1 n1 )
- PFA_CSKIP1:
-0008e3 1cb1 .dw XT_DUP ; ( -- addr' n' n' )
-0008e4 1c36 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-0008e5 08f0 DEST(PFA_CSKIP2)
-0008e6 1ccf .dw XT_OVER ; ( -- addr' n' addr' )
-0008e7 1c98 .dw XT_CFETCH ; ( -- addr' n' c' )
-0008e8 1d08 .dw XT_R_FETCH ; ( -- addr' n' c' c )
-0008e9 1fe0 .dw XT_EQUAL ; ( -- addr' n' f )
-0008ea 1c36 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-0008eb 08f0 DEST(PFA_CSKIP2)
-0008ec 1fe7 .dw XT_ONE
-0008ed 0a2c .dw XT_SLASHSTRING
-0008ee 1c2f .dw XT_DOBRANCH
-0008ef 08e3 DEST(PFA_CSKIP1)
- PFA_CSKIP2:
-0008f0 1cf6 .dw XT_R_FROM
-0008f1 1cd9 .dw XT_DROP ; ( -- addr2 n2)
-0008f2 1c20 .dw XT_EXIT
- .include "words/cscan.asm"
-
- ; String
- ; Scan string at addr1/n1 for the first occurance of c, leaving addr1/n2, char at n2 is first non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSCAN:
-0008f3 ff05 .dw $ff05
-0008f4 7363
-0008f5 6163
-../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte
-0008f6 006e .db "cscan"
-0008f7 08dc .dw VE_HEAD
- .set VE_HEAD = VE_CSCAN
- XT_CSCAN:
-0008f8 1c01 .dw DO_COLON
- PFA_CSCAN:
- .endif
-0008f9 1cff .dw XT_TO_R
-0008fa 1ccf .dw XT_OVER
- PFA_CSCAN1:
-0008fb 1cb1 .dw XT_DUP
-0008fc 1c98 .dw XT_CFETCH
-0008fd 1d08 .dw XT_R_FETCH
-0008fe 1fe0 .dw XT_EQUAL
-0008ff 1d1a .dw XT_ZEROEQUAL
-000900 1c36 .dw XT_DOCONDBRANCH
-000901 090d DEST(PFA_CSCAN2)
-000902 1cc4 .dw XT_SWAP
-000903 1e35 .dw XT_1MINUS
-000904 1cc4 .dw XT_SWAP
-000905 1ccf .dw XT_OVER
-000906 1d21 .dw XT_ZEROLESS ; not negative
-000907 1d1a .dw XT_ZEROEQUAL
-000908 1c36 .dw XT_DOCONDBRANCH
-000909 090d DEST(PFA_CSCAN2)
-00090a 1e2f .dw XT_1PLUS
-00090b 1c2f .dw XT_DOBRANCH
-00090c 08fb DEST(PFA_CSCAN1)
- PFA_CSCAN2:
-00090d 1cf0 .dw XT_NIP
-00090e 1ccf .dw XT_OVER
-00090f 1d93 .dw XT_MINUS
-000910 1cf6 .dw XT_R_FROM
-000911 1cd9 .dw XT_DROP
-000912 1c20 .dw XT_EXIT
-
- ; : my-cscan ( addr len c -- addr len' )
- ; >r over ( -- addr len addr )
- ; begin
- ; dup c@ r@ <> while
- ; swap 1- swap over 0 >= while
- ; 1+
- ; repeat then
- ; nip over - r> drop
- ; ;
- .include "words/accept.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ACCEPT:
-000913 ff06 .dw $ff06
-000914 6361
-000915 6563
-000916 7470 .db "accept"
-000917 08f3 .dw VE_HEAD
- .set VE_HEAD = VE_ACCEPT
- XT_ACCEPT:
-000918 1c01 .dw DO_COLON
- PFA_ACCEPT:
-
- .endif
-000919 1ccf
-00091a 1d9d
-00091b 1e35
-00091c 1ccf .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER
-00091d 0625
-00091e 1cb1
-00091f 0959
-000920 1d1a
-000921 1c36 ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH
-000922 094b DEST(ACC5)
-000923 1cb1
-000924 1c3d
-000925 0008
-000926 1fe0
-000927 1c36 .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH
-000928 093b DEST(ACC3)
-000929 1cd9
-00092a 1ce1
-00092b 05eb
-00092c 1d78
-00092d 1cff
-00092e 1ce1
-00092f 1ce1
-000930 1cf6
-000931 1c36 .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH
-000932 0939 DEST(ACC6)
-000933 0951
-000934 1e35
-000935 1cff
-000936 1ccf
-000937 1cf6
-000938 014f .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX
-000939 1c2f ACC6: .DW XT_DOBRANCH
-00093a 0949 DEST(ACC4)
-
-
- ACC3: ; check for remaining control characters, replace them with blank
-00093b 1cb1 .dw XT_DUP ; ( -- addr k k )
-00093c 0676 .dw XT_BL
-00093d 1d6e .dw XT_LESS
-00093e 1c36 .dw XT_DOCONDBRANCH
-00093f 0942 DEST(PFA_ACCEPT6)
-000940 1cd9 .dw XT_DROP
-000941 0676 .dw XT_BL
- PFA_ACCEPT6:
-000942 1cb1
-000943 0614
-000944 1ccf
-000945 1c8d
-000946 1e2f
-000947 1ccf
-000948 015b .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN
-000949 1c2f ACC4: .DW XT_DOBRANCH
-00094a 091d DEST(ACC1)
-00094b 1cd9
-00094c 1cf0
-00094d 1cc4
-00094e 1d93
-00094f 085c
-000950 1c20 ACC5: .DW XT_DROP,XT_NIP,XT_SWAP,XT_MINUS,XT_CR,XT_EXIT
-
-
- ; ( -- )
- ; System
- ; send a backspace character to overwrite the current char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- ;VE_BS:
- ; .dw $ff02
- ; .db "bs"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_BS
- XT_BS:
-000951 1c01 .dw DO_COLON
- .endif
-000952 1c3d .dw XT_DOLITERAL
-000953 0008 .dw 8
-000954 1cb1 .dw XT_DUP
-000955 0614 .dw XT_EMIT
-000956 0869 .dw XT_SPACE
-000957 0614 .dw XT_EMIT
-000958 1c20 .dw XT_EXIT
-
-
- ; ( c -- f )
- ; System
- ; is the character a line end character?
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_CRLFQ:
- ; .dw $ff02
- ; .db "crlf?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_CRLFQ
- XT_CRLFQ:
-000959 1c01 .dw DO_COLON
- .endif
-00095a 1cb1 .dw XT_DUP
-00095b 1c3d .dw XT_DOLITERAL
-00095c 000d .dw 13
-00095d 1fe0 .dw XT_EQUAL
-00095e 1cc4 .dw XT_SWAP
-00095f 1c3d .dw XT_DOLITERAL
-000960 000a .dw 10
-000961 1fe0 .dw XT_EQUAL
-000962 1e1c .dw XT_OR
-000963 1c20 .dw XT_EXIT
- .include "words/refill.asm"
-
- ; System
- ; refills the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILL:
-000964 ff06 .dw $ff06
-000965 6572
-000966 6966
-000967 6c6c .db "refill"
-000968 0913 .dw VE_HEAD
- .set VE_HEAD = VE_REFILL
- XT_REFILL:
-000969 0c9a .dw PFA_DODEFER1
- PFA_REFILL:
- .endif
-00096a 001a .dw USER_REFILL
-00096b 0c63 .dw XT_UDEFERFETCH
-00096c 0c6f .dw XT_UDEFERSTORE
- .include "words/char.asm"
-
- ; Tools
- ; copy the first character of the next word onto the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CHAR:
-00096d ff04 .dw $ff04
-00096e 6863
-00096f 7261 .db "char"
-000970 0964 .dw VE_HEAD
- .set VE_HEAD = VE_CHAR
- XT_CHAR:
-000971 1c01 .dw DO_COLON
- PFA_CHAR:
- .endif
-000972 0a3b .dw XT_PARSENAME
-000973 1cd9 .dw XT_DROP
-000974 1c98 .dw XT_CFETCH
-000975 1c20 .dw XT_EXIT
- .include "words/number.asm"
-
- ; Numeric IO
- ; convert a string at addr to a number
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBER:
-000976 ff06 .dw $ff06
-000977 756e
-000978 626d
-000979 7265 .db "number"
-00097a 096d .dw VE_HEAD
- .set VE_HEAD = VE_NUMBER
- XT_NUMBER:
-00097b 1c01 .dw DO_COLON
- PFA_NUMBER:
- .endif
-00097c 05d6 .dw XT_BASE
-00097d 1c79 .dw XT_FETCH
-00097e 1cff .dw XT_TO_R
-00097f 09bf .dw XT_QSIGN
-000980 1cff .dw XT_TO_R
-000981 09d2 .dw XT_SET_BASE
-000982 09bf .dw XT_QSIGN
-000983 1cf6 .dw XT_R_FROM
-000984 1e1c .dw XT_OR
-000985 1cff .dw XT_TO_R
- ; check whether something is left
-000986 1cb1 .dw XT_DUP
-000987 1d1a .dw XT_ZEROEQUAL
-000988 1c36 .dw XT_DOCONDBRANCH
-000989 0992 DEST(PFA_NUMBER0)
- ; nothing is left. It cannot be a number at all
-00098a 05f4 .dw XT_2DROP
-00098b 1cf6 .dw XT_R_FROM
-00098c 1cd9 .dw XT_DROP
-00098d 1cf6 .dw XT_R_FROM
-00098e 05d6 .dw XT_BASE
-00098f 1c81 .dw XT_STORE
-000990 1d54 .dw XT_ZERO
-000991 1c20 .dw XT_EXIT
- PFA_NUMBER0:
-000992 1f1e .dw XT_2TO_R
-000993 1d54 .dw XT_ZERO ; starting value
-000994 1d54 .dw XT_ZERO
-000995 1f2d .dw XT_2R_FROM
-000996 09f0 .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len'
- ; check length of the remaining string.
- ; if zero: a single cell number is entered
-000997 1cb9 .dw XT_QDUP
-000998 1c36 .dw XT_DOCONDBRANCH
-000999 09b4 DEST(PFA_NUMBER1)
- ; if equal 1: mayba a trailing dot? --> double cell number
-00099a 1fe7 .dw XT_ONE
-00099b 1fe0 .dw XT_EQUAL
-00099c 1c36 .dw XT_DOCONDBRANCH
-00099d 09ab DEST(PFA_NUMBER2)
- ; excatly one character is left
-00099e 1c98 .dw XT_CFETCH
-00099f 1c3d .dw XT_DOLITERAL
-0009a0 002e .dw 46 ; .
-0009a1 1fe0 .dw XT_EQUAL
-0009a2 1c36 .dw XT_DOCONDBRANCH
-0009a3 09ac DEST(PFA_NUMBER6)
- ; its a double cell number
- ; incorporate sign into number
-0009a4 1cf6 .dw XT_R_FROM
-0009a5 1c36 .dw XT_DOCONDBRANCH
-0009a6 09a8 DEST(PFA_NUMBER3)
-0009a7 0d68 .dw XT_DNEGATE
- PFA_NUMBER3:
-0009a8 1fec .dw XT_TWO
-0009a9 1c2f .dw XT_DOBRANCH
-0009aa 09ba DEST(PFA_NUMBER5)
- PFA_NUMBER2:
-0009ab 1cd9 .dw XT_DROP
- PFA_NUMBER6:
-0009ac 05f4 .dw XT_2DROP
-0009ad 1cf6 .dw XT_R_FROM
-0009ae 1cd9 .dw XT_DROP
-0009af 1cf6 .dw XT_R_FROM
-0009b0 05d6 .dw XT_BASE
-0009b1 1c81 .dw XT_STORE
-0009b2 1d54 .dw XT_ZERO
-0009b3 1c20 .dw XT_EXIT
- PFA_NUMBER1:
-0009b4 05f4 .dw XT_2DROP ; remove the address
- ; incorporate sign into number
-0009b5 1cf6 .dw XT_R_FROM
-0009b6 1c36 .dw XT_DOCONDBRANCH
-0009b7 09b9 DEST(PFA_NUMBER4)
-0009b8 06c6 .dw XT_NEGATE
- PFA_NUMBER4:
-0009b9 1fe7 .dw XT_ONE
- PFA_NUMBER5:
-0009ba 1cf6 .dw XT_R_FROM
-0009bb 05d6 .dw XT_BASE
-0009bc 1c81 .dw XT_STORE
-0009bd 1d4b .dw XT_TRUE
-0009be 1c20 .dw XT_EXIT
- .include "words/q-sign.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QSIGN:
-0009bf 1c01 .dw DO_COLON
- PFA_QSIGN: ; ( c -- )
- .endif
-0009c0 1ccf .dw XT_OVER ; ( -- addr len addr )
-0009c1 1c98 .dw XT_CFETCH
-0009c2 1c3d .dw XT_DOLITERAL
-0009c3 002d .dw '-'
-0009c4 1fe0 .dw XT_EQUAL ; ( -- addr len flag )
-0009c5 1cb1 .dw XT_DUP
-0009c6 1cff .dw XT_TO_R
-0009c7 1c36 .dw XT_DOCONDBRANCH
-0009c8 09cb DEST(PFA_NUMBERSIGN_DONE)
-0009c9 1fe7 .dw XT_ONE ; skip sign character
-0009ca 0a2c .dw XT_SLASHSTRING
- PFA_NUMBERSIGN_DONE:
-0009cb 1cf6 .dw XT_R_FROM
-0009cc 1c20 .dw XT_EXIT
- .include "words/set-base.asm"
-
- ; Numeric IO
- ; skip a numeric prefix character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_BASES:
-0009cd 1c52 .dw PFA_DOCONSTANT
- .endif
-0009ce 000a
-0009cf 0010
-0009d0 0002
-0009d1 000a .dw 10,16,2,10 ; last one could a 8 instead.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SET_BASE:
-0009d2 1c01 .dw DO_COLON
- PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 )
- .endif
-0009d3 1ccf .dw XT_OVER
-0009d4 1c98 .dw XT_CFETCH
-0009d5 1c3d .dw XT_DOLITERAL
-0009d6 0023 .dw 35
-0009d7 1d93 .dw XT_MINUS
-0009d8 1cb1 .dw XT_DUP
-0009d9 1d54 .dw XT_ZERO
-0009da 1c3d .dw XT_DOLITERAL
-0009db 0004 .dw 4
-0009dc 06fe .dw XT_WITHIN
-0009dd 1c36 .dw XT_DOCONDBRANCH
-0009de 09e8 DEST(SET_BASE1)
- .if cpu_msp430==1
- .endif
-0009df 09cd .dw XT_BASES
-0009e0 1d9d .dw XT_PLUS
-0009e1 1fcb .dw XT_FETCHI
-0009e2 05d6 .dw XT_BASE
-0009e3 1c81 .dw XT_STORE
-0009e4 1fe7 .dw XT_ONE
-0009e5 0a2c .dw XT_SLASHSTRING
-0009e6 1c2f .dw XT_DOBRANCH
-0009e7 09e9 DEST(SET_BASE2)
- SET_BASE1:
-0009e8 1cd9 .dw XT_DROP
- SET_BASE2:
-0009e9 1c20 .dw XT_EXIT
-
- ; create bases 10 , 16 , 2 , 8 ,
- ; : set-base 35 - dup 0 4 within if
- ; bases + @i base ! 1 /string
- ; else
- ; drop
- ; then ;
- .include "words/to-number.asm"
-
- ; Numeric IO
- ; convert a string to a number c-addr2/u2 is the unconverted string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_NUMBER:
-0009ea ff07 .dw $ff07
-0009eb 6e3e
-0009ec 6d75
-0009ed 6562
-0009ee 0072 .db ">number",0
-0009ef 0976 .dw VE_HEAD
- .set VE_HEAD = VE_TO_NUMBER
- XT_TO_NUMBER:
-0009f0 1c01 .dw DO_COLON
-
- .endif
-
-0009f1 1cb1
-0009f2 1c36 TONUM1: .DW XT_DUP,XT_DOCONDBRANCH
-0009f3 0a08 DEST(TONUM3)
-0009f4 1ccf
-0009f5 1c98
-0009f6 07da .DW XT_OVER,XT_CFETCH,XT_DIGITQ
-0009f7 1d1a
-0009f8 1c36 .DW XT_ZEROEQUAL,XT_DOCONDBRANCH
-0009f9 09fc DEST(TONUM2)
-0009fa 1cd9
-0009fb 1c20 .DW XT_DROP,XT_EXIT
-0009fc 1cff
-0009fd 0d8c
-0009fe 05d6
-0009ff 1c79
-000a00 0140 TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR
-000a01 1cf6
-000a02 0138
-000a03 0d8c .DW XT_R_FROM,XT_MPLUS,XT_2SWAP
-000a04 1fe7
-000a05 0a2c
-000a06 1c2f .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH
-000a07 09f1 DEST(TONUM1)
-000a08 1c20 TONUM3: .DW XT_EXIT
-
- ;C >NUMBER ud adr u -- ud' adr' u'
- ;C convert string to number
- ; BEGIN
- ; DUP WHILE
- ; OVER C@ DIGIT?
- ; 0= IF DROP EXIT THEN
- ; >R 2SWAP BASE @ UD*
- ; R> M+ 2SWAP
- ; 1 /STRING
- ; REPEAT ;
- .include "words/parse.asm"
-
- ; String
- ; in input buffer parse ccc delimited string by the delimiter char.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PARSE:
-000a09 ff05 .dw $ff05
-000a0a 6170
-000a0b 7372
-000a0c 0065 .db "parse",0
-000a0d 09ea .dw VE_HEAD
- .set VE_HEAD = VE_PARSE
- XT_PARSE:
-000a0e 1c01 .dw DO_COLON
- PFA_PARSE:
- .endif
-000a0f 1cff .dw XT_TO_R ; ( -- )
-000a10 0a22 .dw XT_SOURCE ; ( -- addr len)
-000a11 0604 .dw XT_TO_IN ; ( -- addr len >in)
-000a12 1c79 .dw XT_FETCH
-000a13 0a2c .dw XT_SLASHSTRING ; ( -- addr' len' )
-
-000a14 1cf6 .dw XT_R_FROM ; ( -- addr' len' c)
-000a15 08f8 .dw XT_CSCAN ; ( -- addr' len'')
-000a16 1cb1 .dw XT_DUP ; ( -- addr' len'' len'')
-000a17 1e2f .dw XT_1PLUS
-000a18 0604 .dw XT_TO_IN ; ( -- addr' len'' len'' >in)
-000a19 1e65 .dw XT_PLUSSTORE ; ( -- addr' len')
-000a1a 1fe7 .dw XT_ONE
-000a1b 0a2c .dw XT_SLASHSTRING
-000a1c 1c20 .dw XT_EXIT
- .include "words/source.asm"
-
- ; System
- ; address and current length of the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCE:
-000a1d ff06 .dw $FF06
-000a1e 6f73
-000a1f 7275
-000a20 6563 .db "source"
-000a21 0a09 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCE
- XT_SOURCE:
-000a22 0c9a .dw PFA_DODEFER1
- PFA_SOURCE:
- .endif
-000a23 0016 .dw USER_SOURCE
-000a24 0c63 .dw XT_UDEFERFETCH
-000a25 0c6f .dw XT_UDEFERSTORE
-
-
- .include "words/slash-string.asm"
-
- ; String
- ; adjust string from addr1 to addr1+n, reduce length from u1 to u2 by n
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLASHSTRING:
-000a26 ff07 .dw $ff07
-000a27 732f
-000a28 7274
-000a29 6e69
-000a2a 0067 .db "/string",0
-000a2b 0a1d .dw VE_HEAD
- .set VE_HEAD = VE_SLASHSTRING
- XT_SLASHSTRING:
-000a2c 1c01 .dw DO_COLON
- PFA_SLASHSTRING:
- .endif
-000a2d 1ce1 .dw XT_ROT
-000a2e 1ccf .dw XT_OVER
-000a2f 1d9d .dw XT_PLUS
-000a30 1ce1 .dw XT_ROT
-000a31 1ce1 .dw XT_ROT
-000a32 1d93 .dw XT_MINUS
-000a33 1c20 .dw XT_EXIT
-
- .include "words/parse-name.asm"
-
- ; String
- ; In the SOURCE buffer parse whitespace delimited string. Returns string address within SOURCE.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_PARSENAME:
-000a34 ff0a .dw $FF0A
-000a35 6170
-000a36 7372
-000a37 2d65
-000a38 616e
-000a39 656d .db "parse-name"
-000a3a 0a26 .dw VE_HEAD
- .set VE_HEAD = VE_PARSENAME
- XT_PARSENAME:
-000a3b 1c01 .dw DO_COLON
- PFA_PARSENAME:
- .endif
-000a3c 0676 .dw XT_BL
-000a3d 0a3f .dw XT_SKIPSCANCHAR
-000a3e 1c20 .dw XT_EXIT
-
- ; ( c -- addr2 len2 )
- ; String
- ; skips char and scan what's left in source for char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_SKIPSCANCHAR:
- ; .dw $FF0A
- ; .db "skipscanchar"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_SKIPSCANCHAR
- XT_SKIPSCANCHAR:
-000a3f 1c01 .dw DO_COLON
- PFA_SKIPSCANCHAR:
- .endif
-000a40 1cff .dw XT_TO_R
-000a41 0a22 .dw XT_SOURCE
-000a42 0604 .dw XT_TO_IN
-000a43 1c79 .dw XT_FETCH
-000a44 0a2c .dw XT_SLASHSTRING
-
-000a45 1d08 .dw XT_R_FETCH
-000a46 08e1 .dw XT_CSKIP
-000a47 1cf6 .dw XT_R_FROM
-000a48 08f8 .dw XT_CSCAN
-
- ; adjust >IN
-000a49 05eb .dw XT_2DUP
-000a4a 1d9d .dw XT_PLUS
-000a4b 0a22 .dw XT_SOURCE
-000a4c 1cd9 .dw XT_DROP
-000a4d 1d93 .dw XT_MINUS
-000a4e 0604 .dw XT_TO_IN
-000a4f 1c81 .dw XT_STORE
-000a50 1c20 .dw XT_EXIT
- .include "words/find-xt.asm"
-
- ; Tools
- ; search wordlists for an entry with the xt from c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_FINDXT:
-000a51 ff07 .dw $ff07
-000a52 6966
-000a53 646e
-000a54 782d
-000a55 0074 .db "find-xt",0
-000a56 0a34 .dw VE_HEAD
- .set VE_HEAD = VE_FINDXT
- XT_FINDXT:
-000a57 1c01 .dw DO_COLON
- PFA_FINDXT:
- .endif
-000a58 1c3d .dw XT_DOLITERAL
-000a59 0a63 .dw XT_FINDXTA
-000a5a 1c3d .dw XT_DOLITERAL
-000a5b 0040 .dw CFG_ORDERLISTLEN
-000a5c 04ee .dw XT_MAPSTACK
-000a5d 1d1a .dw XT_ZEROEQUAL
-000a5e 1c36 .dw XT_DOCONDBRANCH
-000a5f 0a62 DEST(PFA_FINDXT1)
-000a60 05f4 .dw XT_2DROP
-000a61 1d54 .dw XT_ZERO
- PFA_FINDXT1:
-000a62 1c20 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_FINDXTA:
-000a63 1c01 .dw DO_COLON
- PFA_FINDXTA:
- .endif
-000a64 1cff .dw XT_TO_R
-000a65 05eb .dw XT_2DUP
-000a66 1cf6 .dw XT_R_FROM
-000a67 0cac .dw XT_SEARCH_WORDLIST
-000a68 1cb1 .dw XT_DUP
-000a69 1c36 .dw XT_DOCONDBRANCH
-000a6a 0a70 DEST(PFA_FINDXTA1)
-000a6b 1cff .dw XT_TO_R
-000a6c 1cf0 .dw XT_NIP
-000a6d 1cf0 .dw XT_NIP
-000a6e 1cf6 .dw XT_R_FROM
-000a6f 1d4b .dw XT_TRUE
- PFA_FINDXTA1:
-000a70 1c20 .dw XT_EXIT
-
- .include "words/quit.asm"
-
- ; System
- ; main loop of amforth. accept - interpret in an endless loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QUIT:
-000a71 ff04 .dw $ff04
-000a72 7571
-000a73 7469 .db "quit"
-000a74 0a51 .dw VE_HEAD
- .set VE_HEAD = VE_QUIT
- XT_QUIT:
-000a75 1c01 .dw DO_COLON
- .endif
- PFA_QUIT:
-000a76 03a3
-000a77 03aa
-000a78 1c81 .dw XT_LP0,XT_LP,XT_STORE
-000a79 0b10 .dw XT_SP0
-000a7a 1e96 .dw XT_SP_STORE
-000a7b 0b1d .dw XT_RP0
-000a7c 1e80 .dw XT_RP_STORE
-000a7d 0438 .dw XT_LBRACKET
-
- PFA_QUIT2:
-000a7e 05d0 .dw XT_STATE
-000a7f 1c79 .dw XT_FETCH
-000a80 1d1a .dw XT_ZEROEQUAL
-000a81 1c36 .dw XT_DOCONDBRANCH
-000a82 0a84 DEST(PFA_QUIT4)
-000a83 0ab4 .dw XT_PROMPTREADY
- PFA_QUIT4:
-000a84 0969 .dw XT_REFILL
-000a85 1c36 .dw XT_DOCONDBRANCH
-000a86 0a96 DEST(PFA_QUIT3)
-000a87 1c3d .dw XT_DOLITERAL
-000a88 0b6b .dw XT_INTERPRET
-000a89 08b2 .dw XT_CATCH
-000a8a 1cb9 .dw XT_QDUP
-000a8b 1c36 .dw XT_DOCONDBRANCH
-000a8c 0a96 DEST(PFA_QUIT3)
-000a8d 1cb1 .dw XT_DUP
-000a8e 1c3d .dw XT_DOLITERAL
-000a8f fffe .dw -2
-000a90 1d6e .dw XT_LESS
-000a91 1c36 .dw XT_DOCONDBRANCH
-000a92 0a94 DEST(PFA_QUIT5)
-000a93 0acf .dw XT_PROMPTERROR
- PFA_QUIT5:
-000a94 1c2f .dw XT_DOBRANCH
-000a95 0a76 DEST(PFA_QUIT)
- PFA_QUIT3:
-000a96 0aa4 .dw XT_PROMPTOK
-000a97 1c2f .dw XT_DOBRANCH
-000a98 0a7e DEST(PFA_QUIT2)
- ; .dw XT_EXIT ; never reached
-
- .include "words/prompt-ok.asm"
-
- ; System
- ; send the READY prompt to the command line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTOK:
- ; .dw $ff02
- ; .db "ok"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTOK
- XT_DEFAULT_PROMPTOK:
-000a99 1c01 .dw DO_COLON
- PFA_DEFAULT_PROMPTOK:
-000a9a 07f4 .dw XT_DOSLITERAL
-000a9b 0003 .dw 3
-000a9c 6f20
-000a9d 006b .db " ok",0
- .endif
-000a9e 0827 .dw XT_ITYPE
-000a9f 1c20 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTOK:
-000aa0 ff03 .dw $FF03
-000aa1 6f2e
-../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte
-000aa2 006b .db ".ok"
-000aa3 0a71 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTOK
- XT_PROMPTOK:
-000aa4 0c9a .dw PFA_DODEFER1
- PFA_PROMPTOK:
- .endif
-000aa5 001c .dw USER_P_OK
-000aa6 0c63 .dw XT_UDEFERFETCH
-000aa7 0c6f .dw XT_UDEFERSTORE
- .include "words/prompt-ready.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTRDY:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTRDY
- XT_DEFAULT_PROMPTREADY:
-000aa8 1c01 .dw DO_COLON
- PFA_DEFAULT_PROMPTREADY:
-000aa9 07f4 .dw XT_DOSLITERAL
-000aaa 0002 .dw 2
-000aab 203e .db "> "
- .endif
-000aac 085c .dw XT_CR
-000aad 0827 .dw XT_ITYPE
-000aae 1c20 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTREADY:
-000aaf ff06 .dw $FF06
-000ab0 722e
-000ab1 6165
-000ab2 7964 .db ".ready"
-000ab3 0aa0 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTREADY
- XT_PROMPTREADY:
-000ab4 0c9a .dw PFA_DODEFER1
- PFA_PROMPTREADY:
- .endif
-000ab5 0020 .dw USER_P_RDY
-000ab6 0c63 .dw XT_UDEFERFETCH
-000ab7 0c6f .dw XT_UDEFERSTORE
- .include "words/prompt-error.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTERROR:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTERROR
- XT_DEFAULT_PROMPTERROR:
-000ab8 1c01 .dw DO_COLON
- PFA_DEFAULT_PROMPTERROR:
-000ab9 07f4 .dw XT_DOSLITERAL
-000aba 0004 .dw 4
-000abb 3f20
-000abc 203f .db " ?? "
- .endif
-000abd 0827 .dw XT_ITYPE
-000abe 05d6 .dw XT_BASE
-000abf 1c79 .dw XT_FETCH
-000ac0 1cff .dw XT_TO_R
-000ac1 0663 .dw XT_DECIMAL
-000ac2 07a9 .dw XT_DOT
-000ac3 0604 .dw XT_TO_IN
-000ac4 1c79 .dw XT_FETCH
-000ac5 07a9 .dw XT_DOT
-000ac6 1cf6 .dw XT_R_FROM
-000ac7 05d6 .dw XT_BASE
-000ac8 1c81 .dw XT_STORE
-000ac9 1c20 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTERROR:
-000aca ff06 .dw $FF06
-000acb 652e
-000acc 7272
-000acd 726f .db ".error"
-000ace 0aaf .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTERROR
- XT_PROMPTERROR:
-000acf 0c9a .dw PFA_DODEFER1
- PFA_PROMPTERROR:
- .endif
-000ad0 001e .dw USER_P_ERR
-000ad1 0c63 .dw XT_UDEFERFETCH
-000ad2 0c6f .dw XT_UDEFERSTORE
- .include "words/pause.asm"
-
- ; Multitasking
- ; Fetch pause vector and execute it. may make a context/task switch
- VE_PAUSE:
-000ad3 ff05 .dw $ff05
-000ad4 6170
-000ad5 7375
-000ad6 0065 .db "pause",0
-000ad7 0aca .dw VE_HEAD
- .set VE_HEAD = VE_PAUSE
- XT_PAUSE:
-000ad8 0c9a .dw PFA_DODEFER1
- PFA_PAUSE:
-000ad9 0093 .dw ram_pause
-000ada 0c4f .dw XT_RDEFERFETCH
-000adb 0c59 .dw XT_RDEFERSTORE
-
- .dseg
-000093 ram_pause: .byte 2
- .cseg
- .include "words/cold.asm"
-
- ; System
- ; start up amforth.
- VE_COLD:
-000adc ff04 .dw $ff04
-000add 6f63
-000ade 646c .db "cold"
-000adf 0ad3 .dw VE_HEAD
- .set VE_HEAD = VE_COLD
- XT_COLD:
-000ae0 0ae1 .dw PFA_COLD
- PFA_COLD:
-000ae1 b6a4 in_ mcu_boot, MCUSR
-000ae2 2422 clr zerol
-000ae3 2433 clr zeroh
-000ae4 24bb clr isrflag
-000ae5 be24 out_ MCUSR, zerol
- ; clear RAM
-000ae6 e6e0 ldi zl, low(ramstart)
-000ae7 e0f0 ldi zh, high(ramstart)
- clearloop:
-000ae8 9221 st Z+, zerol
-000ae9 36e0 cpi zl, low(sram_size+ramstart)
-000aea f7e9 brne clearloop
-000aeb 30f4 cpi zh, high(sram_size+ramstart)
-000aec f7d9 brne clearloop
- ; init first user data area
- ; allocate space for User Area
- .dseg
-000095 ram_user1: .byte SYSUSERSIZE + APPUSERSIZE
- .cseg
-000aed e9e5 ldi zl, low(ram_user1)
-000aee e0f0 ldi zh, high(ram_user1)
-000aef 012f movw upl, zl
- ; init return stack pointer
-000af0 e50f ldi temp0,low(rstackstart)
-000af1 bf0d out_ SPL,temp0
-000af2 8304 std Z+4, temp0
-000af3 e014 ldi temp1,high(rstackstart)
-000af4 bf1e out_ SPH,temp1
-000af5 8315 std Z+5, temp1
-
- ; init parameter stack pointer
-000af6 e0cf ldi yl,low(stackstart)
-000af7 83c6 std Z+6, yl
-000af8 e0d4 ldi yh,high(stackstart)
-000af9 83d7 std Z+7, yh
-
- ; load Forth IP with starting word
-000afa e0a3 ldi XL, low(PFA_WARM)
-000afb e0bb ldi XH, high(PFA_WARM)
- ; its a far jump...
-000afc 940c 1c05 jmp_ DO_NEXT
- .include "words/warm.asm"
-
- ; System
- ; initialize amforth further. executes turnkey operation and go to quit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WARM:
-000afe ff04 .dw $ff04
-000aff 6177
-000b00 6d72 .db "warm"
-000b01 0adc .dw VE_HEAD
- .set VE_HEAD = VE_WARM
- XT_WARM:
-000b02 1c01 .dw DO_COLON
- PFA_WARM:
- .endif
-000b03 0dd7 .dw XT_INIT_RAM
-000b04 1c3d .dw XT_DOLITERAL
-000b05 0c06 .dw XT_NOOP
-000b06 1c3d .dw XT_DOLITERAL
-000b07 0ad8 .dw XT_PAUSE
-000b08 0c7a .dw XT_DEFERSTORE
-000b09 0438 .dw XT_LBRACKET
-000b0a 067e .dw XT_TURNKEY
-000b0b 0a75 .dw XT_QUIT ; never returns
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/sp0.asm"
-
- ; Stack
- ; start address of the data stack
- VE_SP0:
-000b0c ff03 .dw $ff03
-000b0d 7073
-000b0e 0030 .db "sp0",0
-000b0f 0afe .dw VE_HEAD
- .set VE_HEAD = VE_SP0
- XT_SP0:
-000b10 1c6f .dw PFA_DOVALUE1
- PFA_SP0:
-000b11 0006 .dw USER_SP0
-000b12 0c63 .dw XT_UDEFERFETCH
-000b13 0c6f .dw XT_UDEFERSTORE
-
- ; ( -- addr)
- ; Stack
- ; address of user variable to store top-of-stack for inactive tasks
- VE_SP:
-000b14 ff02 .dw $ff02
-000b15 7073 .db "sp"
-000b16 0b0c .dw VE_HEAD
- .set VE_HEAD = VE_SP
- XT_SP:
-000b17 1c58 .dw PFA_DOUSER
- PFA_SP:
-000b18 0008 .dw USER_SP
- .include "words/rp0.asm"
-
- ; Stack
- ; start address of return stack
- VE_RP0:
-000b19 ff03 .dw $ff03
-000b1a 7072
-000b1b 0030 .db "rp0",0
-000b1c 0b14 .dw VE_HEAD
- .set VE_HEAD = VE_RP0
- XT_RP0:
-000b1d 1c01 .dw DO_COLON
- PFA_RP0:
-000b1e 0b21 .dw XT_DORP0
-000b1f 1c79 .dw XT_FETCH
-000b20 1c20 .dw XT_EXIT
-
- ; ( -- addr)
- ; Stack
- ; user variable of the address of the initial return stack
- ;VE_DORP0:
- ; .dw $ff05
- ; .db "(rp0)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DORP0
- XT_DORP0:
-000b21 1c58 .dw PFA_DOUSER
- PFA_DORP0:
-000b22 0004 .dw USER_RP
- .include "words/depth.asm"
-
- ; Stack
- ; number of single-cell values contained in the data stack before n was placed on the stack.
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEPTH:
-000b23 ff05 .dw $ff05
-000b24 6564
-000b25 7470
-000b26 0068 .db "depth",0
-000b27 0b19 .dw VE_HEAD
- .set VE_HEAD = VE_DEPTH
- XT_DEPTH:
-000b28 1c01 .dw DO_COLON
- PFA_DEPTH:
- .endif
-000b29 0b10 .dw XT_SP0
-000b2a 1e8d .dw XT_SP_FETCH
-000b2b 1d93 .dw XT_MINUS
-000b2c 1e04 .dw XT_2SLASH
-000b2d 1e35 .dw XT_1MINUS
-000b2e 1c20 .dw XT_EXIT
- .include "words/recognize.asm"
-
- ; System
- ; walk the recognizer stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECOGNIZE:
-000b2f ff09 .dw $ff09
-000b30 6572
-000b31 6f63
-000b32 6e67
-000b33 7a69
-000b34 0065 .db "recognize",0
-000b35 0b23 .dw VE_HEAD
- .set VE_HEAD = VE_RECOGNIZE
- XT_RECOGNIZE:
-000b36 1c01 .dw DO_COLON
- PFA_RECOGNIZE:
- .endif
-000b37 1c3d .dw XT_DOLITERAL
-000b38 0b41 .dw XT_RECOGNIZE_A
-000b39 1cc4 .dw XT_SWAP
-000b3a 04ee .dw XT_MAPSTACK
-000b3b 1d1a .dw XT_ZEROEQUAL
-000b3c 1c36 .dw XT_DOCONDBRANCH
-000b3d 0b40 DEST(PFA_RECOGNIZE1)
-000b3e 05f4 .dw XT_2DROP
-000b3f 0bd1 .dw XT_DT_NULL
- PFA_RECOGNIZE1:
-000b40 1c20 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] )
- XT_RECOGNIZE_A:
-000b41 1c01 .dw DO_COLON
- PFA_RECOGNIZE_A:
- .endif
-000b42 1ce1 .dw XT_ROT ; -- len xt addr
-000b43 1ce1 .dw XT_ROT ; -- xt addr len
-000b44 05eb .dw XT_2DUP
-000b45 1f1e .dw XT_2TO_R
-000b46 1ce1 .dw XT_ROT ; -- addr len xt
-000b47 1c2a .dw XT_EXECUTE ; -- i*x dt:* | dt:null
-000b48 1f2d .dw XT_2R_FROM
-000b49 1ce1 .dw XT_ROT
-000b4a 1cb1 .dw XT_DUP
-000b4b 0bd1 .dw XT_DT_NULL
-000b4c 1fe0 .dw XT_EQUAL
-000b4d 1c36 .dw XT_DOCONDBRANCH
-000b4e 0b52 DEST(PFA_RECOGNIZE_A1)
-000b4f 1cd9 .dw XT_DROP
-000b50 1d54 .dw XT_ZERO
-000b51 1c20 .dw XT_EXIT
- PFA_RECOGNIZE_A1:
-000b52 1cf0 .dw XT_NIP
-000b53 1cf0 .dw XT_NIP
-000b54 1d4b .dw XT_TRUE
-000b55 1c20 .dw XT_EXIT
-
- ; : recognize ( addr len stack-id -- i*x dt:* | dt:null )
- ; [: ( addr len -- addr len 0 | i*x dt:* -1 )
- ; rot rot 2dup 2>r rot execute 2r> rot
- ; dup dt:null = ( -- addr len dt:* f )
- ; if drop 0 else nip nip -1 then
- ; ;]
- ; map-stack ( -- i*x addr len dt:* f )
- ; 0= if \ a recognizer did the job, remove addr/len
- ; 2drop dt:null
- ; then ;
- ;
- .include "words/forth-recognizer.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_FORTHRECOGNIZER:
-000b56 ff10 .dw $ff10
-000b57 6f66
-000b58 7472
-000b59 2d68
-000b5a 6572
-000b5b 6f63
-000b5c 6e67
-000b5d 7a69
-000b5e 7265 .db "forth-recognizer"
-000b5f 0b2f .dw VE_HEAD
- .set VE_HEAD = VE_FORTHRECOGNIZER
- XT_FORTHRECOGNIZER:
-000b60 1c6f .dw PFA_DOVALUE1
- PFA_FORTHRECOGNIZER:
-000b61 0034 .dw CFG_FORTHRECOGNIZER
-000b62 0c3b .dw XT_EDEFERFETCH
-000b63 0c45 .dw XT_EDEFERSTORE
- .include "words/interpret.asm"
-
- ; System
- ; Interpret SOURCE word by word.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_INTERPRET:
-000b64 ff09 .dw $ff09
-000b65 6e69
-000b66 6574
-000b67 7072
-000b68 6572
-000b69 0074 .db "interpret",0
-000b6a 0b56 .dw VE_HEAD
- .set VE_HEAD = VE_INTERPRET
- XT_INTERPRET:
-000b6b 1c01 .dw DO_COLON
- .endif
- PFA_INTERPRET:
-000b6c 0a3b .dw XT_PARSENAME ; ( -- addr len )
-000b6d 1cb1 .dw XT_DUP ; ( -- addr len flag)
-000b6e 1c36 .dw XT_DOCONDBRANCH
-000b6f 0b7c DEST(PFA_INTERPRET2)
-000b70 0b60 .dw XT_FORTHRECOGNIZER
-000b71 0b36 .dw XT_RECOGNIZE
-000b72 05d0 .dw XT_STATE
-000b73 1c79 .dw XT_FETCH
-000b74 1c36 .dw XT_DOCONDBRANCH
-000b75 0b77 DEST(PFA_INTERPRET1)
-000b76 0c32 .dw XT_ICELLPLUS ; we need the compile action
- PFA_INTERPRET1:
-000b77 1fcb .dw XT_FETCHI
-000b78 1c2a .dw XT_EXECUTE
-000b79 0bde .dw XT_QSTACK
-000b7a 1c2f .dw XT_DOBRANCH
-000b7b 0b6c DEST(PFA_INTERPRET)
- PFA_INTERPRET2:
-000b7c 05f4 .dw XT_2DROP
-000b7d 1c20 .dw XT_EXIT
- .include "words/rec-intnum.asm"
-
- ; Interpreter
- ; Method table for single cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NUM:
-000b7e ff06 .dw $ff06
-000b7f 7464
-000b80 6e3a
-000b81 6d75 .db "dt:num"
-000b82 0b64 .dw VE_HEAD
- .set VE_HEAD = VE_DT_NUM
- XT_DT_NUM:
-000b83 1c52 .dw PFA_DOCONSTANT
- PFA_DT_NUM:
- .endif
-000b84 0c06 .dw XT_NOOP ; interpret
-000b85 02c4 .dw XT_LITERAL ; compile
-000b86 02c4 .dw XT_LITERAL ; postpone
-
- ; ( -- addr )
- ; Interpreter
- ; Method table for double cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_DNUM:
-000b87 ff07 .dw $ff07
-000b88 7464
-000b89 643a
-000b8a 756e
-000b8b 006d .db "dt:dnum",0
-000b8c 0b7e .dw VE_HEAD
- .set VE_HEAD = VE_DT_DNUM
- XT_DT_DNUM:
-000b8d 1c52 .dw PFA_DOCONSTANT
- PFA_DT_DNUM:
- .endif
-000b8e 0c06 .dw XT_NOOP ; interpret
-000b8f 1fd8 .dw XT_2LITERAL ; compile
-000b90 1fd8 .dw XT_2LITERAL ; postpone
-
- ; ( addr len -- f )
- ; Interpreter
- ; recognizer for integer numbers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_REC_NUM:
-000b91 ff07 .dw $ff07
-000b92 6572
-000b93 3a63
-000b94 756e
-000b95 006d .db "rec:num",0
-000b96 0b87 .dw VE_HEAD
- .set VE_HEAD = VE_REC_NUM
- XT_REC_NUM:
-000b97 1c01 .dw DO_COLON
- PFA_REC_NUM:
- .endif
- ; try converting to a number
-000b98 097b .dw XT_NUMBER
-000b99 1c36 .dw XT_DOCONDBRANCH
-000b9a 0ba3 DEST(PFA_REC_NONUMBER)
-000b9b 1fe7 .dw XT_ONE
-000b9c 1fe0 .dw XT_EQUAL
-000b9d 1c36 .dw XT_DOCONDBRANCH
-000b9e 0ba1 DEST(PFA_REC_INTNUM2)
-000b9f 0b83 .dw XT_DT_NUM
-000ba0 1c20 .dw XT_EXIT
- PFA_REC_INTNUM2:
-000ba1 0b8d .dw XT_DT_DNUM
-000ba2 1c20 .dw XT_EXIT
- PFA_REC_NONUMBER:
-000ba3 0bd1 .dw XT_DT_NULL
-000ba4 1c20 .dw XT_EXIT
- .include "words/rec-find.asm"
-
- ; Interpreter
- ; search for a word
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- VE_REC_FIND:
-000ba5 ff08 .dw $ff08
-000ba6 6572
-000ba7 3a63
-000ba8 6966
-000ba9 646e .db "rec:find"
-000baa 0b91 .dw VE_HEAD
- .set VE_HEAD = VE_REC_FIND
- XT_REC_FIND:
-000bab 1c01 .dw DO_COLON
- PFA_REC_FIND:
- .endif
-000bac 0a57 .DW XT_FINDXT
-000bad 1cb1 .dw XT_DUP
-000bae 1d1a .dw XT_ZEROEQUAL
-000baf 1c36 .dw XT_DOCONDBRANCH
-000bb0 0bb4 DEST(PFA_REC_WORD_FOUND)
-000bb1 1cd9 .dw XT_DROP
-000bb2 0bd1 .dw XT_DT_NULL
-000bb3 1c20 .dw XT_EXIT
- PFA_REC_WORD_FOUND:
-000bb4 0bbb .dw XT_DT_XT
-
-000bb5 1c20 .dw XT_EXIT
-
- ; ( -- addr )
- ; Interpreter
- ; actions to handle execution tokens and their flags
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_XT:
-000bb6 ff05 .dw $ff05
-000bb7 7464
-000bb8 783a
-000bb9 0074 .db "dt:xt",0
-000bba 0ba5 .dw VE_HEAD
- .set VE_HEAD = VE_DT_XT
- XT_DT_XT:
-000bbb 1c52 .dw PFA_DOCONSTANT
- PFA_DT_XT:
- .endif
-000bbc 0bbf .dw XT_R_WORD_INTERPRET
-000bbd 0bc3 .dw XT_R_WORD_COMPILE
-000bbe 1fd8 .dw XT_2LITERAL
-
- ; ( XT flags -- )
- ; Interpreter
- ; interpret method for WORD recognizer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_R_WORD_INTERPRET:
-000bbf 1c01 .dw DO_COLON
- PFA_R_WORD_INTERPRET:
- .endif
-000bc0 1cd9 .dw XT_DROP ; the flags are in the way
-000bc1 1c2a .dw XT_EXECUTE
-000bc2 1c20 .dw XT_EXIT
-
- ; ( XT flags -- )
- ; Interpreter
- ; Compile method for WORD recognizer
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- XT_R_WORD_COMPILE:
-000bc3 1c01 .dw DO_COLON
- PFA_R_WORD_COMPILE:
- .endif
-000bc4 1d21 .dw XT_ZEROLESS
-000bc5 1c36 .dw XT_DOCONDBRANCH
-000bc6 0bc9 DEST(PFA_R_WORD_COMPILE1)
-000bc7 02ae .dw XT_COMMA
-000bc8 1c20 .dw XT_EXIT
- PFA_R_WORD_COMPILE1:
-000bc9 1c2a .dw XT_EXECUTE
-000bca 1c20 .dw XT_EXIT
- .include "words/dt-null.asm"
-
- ; Interpreter
- ; there is no parser for this recognizer, this is the default and failsafe part
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NULL:
-000bcb ff07 .dw $ff07
-000bcc 7464
-000bcd 6e3a
-000bce 6c75
-../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte
-000bcf 006c .db "dt:null"
-000bd0 0bb6 .dw VE_HEAD
- .set VE_HEAD = VE_DT_NULL
- XT_DT_NULL:
-000bd1 1c52 .dw PFA_DOCONSTANT
- PFA_DT_NULL:
- .endif
-000bd2 0bd5 .dw XT_FAIL ; interpret
-000bd3 0bd5 .dw XT_FAIL ; compile
-000bd4 0bd5 .dw XT_FAIL ; postpone
-
- ; ( addr len -- )
- ; Interpreter
- ; default failure action: throw exception -13.
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- ;VE_FAIL:
- ; .dw $ff04
- ; .db "fail"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_FAIL
- XT_FAIL:
-000bd5 1c01 .dw DO_COLON
- PFA_FAIL:
- .endif
-000bd6 1c3d .dw XT_DOLITERAL
-000bd7 fff3 .dw -13
-000bd8 08c8 .dw XT_THROW
-
- .include "words/q-stack.asm"
-
- ; Tools
- ; check data stack depth and exit to quit if underrun
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QSTACK:
-000bd9 ff06 .dw $ff06
-000bda 733f
-000bdb 6174
-000bdc 6b63 .db "?stack"
-000bdd 0bcb .dw VE_HEAD
- .set VE_HEAD = VE_QSTACK
- XT_QSTACK:
-000bde 1c01 .dw DO_COLON
- PFA_QSTACK:
- .endif
-000bdf 0b28 .dw XT_DEPTH
-000be0 1d21 .dw XT_ZEROLESS
-000be1 1c36 .dw XT_DOCONDBRANCH
-000be2 0be6 DEST(PFA_QSTACK1)
-000be3 1c3d .dw XT_DOLITERAL
-000be4 fffc .dw -4
-000be5 08c8 .dw XT_THROW
- PFA_QSTACK1:
-000be6 1c20 .dw XT_EXIT
- .include "words/ver.asm"
-
- ; Tools
- ; print the version string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOT_VER:
-000be7 ff03 .dw $ff03
-000be8 6576
-../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte
-000be9 0072 .db "ver"
-000bea 0bd9 .dw VE_HEAD
- .set VE_HEAD = VE_DOT_VER
- XT_DOT_VER:
-000beb 1c01 .dw DO_COLON
- PFA_DOT_VER:
- .endif
-000bec 0592 .dw XT_ENV_FORTHNAME
-000bed 0827 .dw XT_ITYPE
-000bee 0869 .dw XT_SPACE
-000bef 05d6 .dw XT_BASE
-000bf0 1c79 .dw XT_FETCH
-
-000bf1 05a0 .dw XT_ENV_FORTHVERSION
-000bf2 0663 .dw XT_DECIMAL
-000bf3 0dee .dw XT_S2D
-000bf4 0745 .dw XT_L_SHARP
-000bf5 074d .dw XT_SHARP
-000bf6 1c3d .dw XT_DOLITERAL
-000bf7 002e .dw '.'
-000bf8 0736 .dw XT_HOLD
-000bf9 0763 .dw XT_SHARP_S
-000bfa 076e .dw XT_SHARP_G
-000bfb 0882 .dw XT_TYPE
-000bfc 05d6 .dw XT_BASE
-000bfd 1c81 .dw XT_STORE
-000bfe 0869 .dw XT_SPACE
-000bff 05a8 .dw XT_ENV_CPU
-000c00 0827 .dw XT_ITYPE
-
-000c01 1c20 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/noop.asm"
-
- ; Tools
- ; do nothing
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOOP:
-000c02 ff04 .dw $ff04
-000c03 6f6e
-000c04 706f .db "noop"
-000c05 0be7 .dw VE_HEAD
- .set VE_HEAD = VE_NOOP
- XT_NOOP:
-000c06 1c01 .dw DO_COLON
- PFA_NOOP:
- .endif
-000c07 1c20 .DW XT_EXIT
- .include "words/unused.asm"
-
- ; Tools
- ; Amount of available RAM (incl. PAD)
- VE_UNUSED:
-000c08 ff06 .dw $ff06
-000c09 6e75
-000c0a 7375
-000c0b 6465 .db "unused"
-000c0c 0c02 .dw VE_HEAD
- .set VE_HEAD = VE_UNUSED
- XT_UNUSED:
-000c0d 1c01 .dw DO_COLON
- PFA_UNUSED:
-000c0e 1e8d .dw XT_SP_FETCH
-000c0f 0645 .dw XT_HERE
-000c10 1d93 .dw XT_MINUS
-000c11 1c20 .dw XT_EXIT
-
- .include "words/to.asm"
-
- ; Tools
- ; store the TOS to the named value (eeprom cell)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO:
-000c12 0002 .dw $0002
-000c13 6f74 .db "to"
-000c14 0c08 .dw VE_HEAD
- .set VE_HEAD = VE_TO
- XT_TO:
-000c15 1c01 .dw DO_COLON
- PFA_TO:
- .endif
-000c16 0891 .dw XT_TICK
-000c17 0df7 .dw XT_TO_BODY
-000c18 05d0 .dw XT_STATE
-000c19 1c79 .dw XT_FETCH
-000c1a 1c36 .dw XT_DOCONDBRANCH
-000c1b 0c26 DEST(PFA_TO1)
-000c1c 02a3 .dw XT_COMPILE
-000c1d 0c20 .dw XT_DOTO
-000c1e 02ae .dw XT_COMMA
-000c1f 1c20 .dw XT_EXIT
-
- ; ( n -- ) (R: IP -- IP+1)
- ; Tools
- ; runtime portion of to
- ;VE_DOTO:
- ; .dw $ff04
- ; .db "(to)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOTO
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_DOTO:
-000c20 1c01 .dw DO_COLON
- PFA_DOTO:
- .endif
-000c21 1cf6 .dw XT_R_FROM
-000c22 1cb1 .dw XT_DUP
-000c23 0c32 .dw XT_ICELLPLUS
-000c24 1cff .dw XT_TO_R
-000c25 1fcb .dw XT_FETCHI
- PFA_TO1:
-000c26 1cb1 .dw XT_DUP
-000c27 0c32 .dw XT_ICELLPLUS
-000c28 0c32 .dw XT_ICELLPLUS
-000c29 1fcb .dw XT_FETCHI
-000c2a 1c2a .dw XT_EXECUTE
-000c2b 1c20 .dw XT_EXIT
- .include "words/i-cellplus.asm"
-
- ; Compiler
- ; skip to the next cell in flash
- VE_ICELLPLUS:
-000c2c ff07 .dw $FF07
-000c2d 2d69
-000c2e 6563
-000c2f 6c6c
-000c30 002b .db "i-cell+",0
-000c31 0c12 .dw VE_HEAD
- .set VE_HEAD = VE_ICELLPLUS
- XT_ICELLPLUS:
-000c32 1c01 .dw DO_COLON
- PFA_ICELLPLUS:
-000c33 1e2f .dw XT_1PLUS
-000c34 1c20 .dw XT_EXIT
-
- .include "words/edefer-fetch.asm"
-
- ; System
- ; does the real defer@ for eeprom defers
- VE_EDEFERFETCH:
-000c35 ff07 .dw $ff07
-000c36 6445
-000c37 6665
-000c38 7265
-000c39 0040 .db "Edefer@",0
-000c3a 0c2c .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERFETCH
- XT_EDEFERFETCH:
-000c3b 1c01 .dw DO_COLON
- PFA_EDEFERFETCH:
-000c3c 1fcb .dw XT_FETCHI
-000c3d 1f5f .dw XT_FETCHE
-000c3e 1c20 .dw XT_EXIT
- .include "words/edefer-store.asm"
-
- ; System
- ; does the real defer! for eeprom defers
- VE_EDEFERSTORE:
-000c3f ff07 .dw $ff07
-000c40 6445
-000c41 6665
-000c42 7265
-000c43 0021 .db "Edefer!",0
-000c44 0c35 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERSTORE
- XT_EDEFERSTORE:
-000c45 1c01 .dw DO_COLON
- PFA_EDEFERSTORE:
-000c46 1fcb .dw XT_FETCHI
-000c47 1f3b .dw XT_STOREE
-000c48 1c20 .dw XT_EXIT
- .include "words/rdefer-fetch.asm"
-
- ; System
- ; The defer@ for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERFETCH:
-000c49 ff07 .dw $ff07
-000c4a 6452
-000c4b 6665
-000c4c 7265
-000c4d 0040 .db "Rdefer@",0
-000c4e 0c3f .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERFETCH
- XT_RDEFERFETCH:
-000c4f 1c01 .dw DO_COLON
- PFA_RDEFERFETCH:
- .endif
-000c50 1fcb .dw XT_FETCHI
-000c51 1c79 .dw XT_FETCH
-000c52 1c20 .dw XT_EXIT
- .include "words/rdefer-store.asm"
-
- ; System
- ; The defer! for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERSTORE:
-000c53 ff07 .dw $ff07
-000c54 6452
-000c55 6665
-000c56 7265
-000c57 0021 .db "Rdefer!",0
-000c58 0c49 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERSTORE
- XT_RDEFERSTORE:
-000c59 1c01 .dw DO_COLON
- PFA_RDEFERSTORE:
- .endif
-000c5a 1fcb .dw XT_FETCHI
-000c5b 1c81 .dw XT_STORE
-000c5c 1c20 .dw XT_EXIT
-
- .include "words/udefer-fetch.asm"
-
- ; System
- ; does the real defer@ for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERFETCH:
-000c5d ff07 .dw $ff07
-000c5e 6455
-000c5f 6665
-000c60 7265
-000c61 0040 .db "Udefer@",0
-000c62 0c53 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERFETCH
- XT_UDEFERFETCH:
-000c63 1c01 .dw DO_COLON
- PFA_UDEFERFETCH:
- .endif
-000c64 1fcb .dw XT_FETCHI
-000c65 1f02 .dw XT_UP_FETCH
-000c66 1d9d .dw XT_PLUS
-000c67 1c79 .dw XT_FETCH
-000c68 1c20 .dw XT_EXIT
- .include "words/udefer-store.asm"
-
- ; System
- ; does the real defer! for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERSTORE:
-000c69 ff07 .dw $ff07
-000c6a 6455
-000c6b 6665
-000c6c 7265
-000c6d 0021 .db "Udefer!",0
-000c6e 0c5d .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERSTORE
- XT_UDEFERSTORE:
-000c6f 1c01 .dw DO_COLON
- PFA_UDEFERSTORE:
- .endif
-
-000c70 1fcb .dw XT_FETCHI
-000c71 1f02 .dw XT_UP_FETCH
-000c72 1d9d .dw XT_PLUS
-000c73 1c81 .dw XT_STORE
-000c74 1c20 .dw XT_EXIT
-
- .include "words/defer-store.asm"
-
- ; System
- ; stores xt1 as the xt to be executed when xt2 is called
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERSTORE:
-000c75 ff06 .dw $ff06
-000c76 6564
-000c77 6566
-000c78 2172 .db "defer!"
-000c79 0c69 .dw VE_HEAD
- .set VE_HEAD = VE_DEFERSTORE
- XT_DEFERSTORE:
-000c7a 1c01 .dw DO_COLON
- PFA_DEFERSTORE:
- .endif
-000c7b 0df7 .dw XT_TO_BODY
-000c7c 1cb1 .dw XT_DUP
-000c7d 0c32 .dw XT_ICELLPLUS
-000c7e 0c32 .dw XT_ICELLPLUS
-000c7f 1fcb .dw XT_FETCHI
-000c80 1c2a .dw XT_EXECUTE
-000c81 1c20 .dw XT_EXIT
-
- .include "words/defer-fetch.asm"
-
- ; System
- ; returns the XT associated with the given XT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERFETCH:
-000c82 ff06 .dw $ff06
-000c83 6564
-000c84 6566
-000c85 4072 .db "defer@"
-000c86 0c75 .dw VE_HEAD
- .set VE_HEAD = VE_DEFERFETCH
- XT_DEFERFETCH:
-000c87 1c01 .dw DO_COLON
- PFA_DEFERFETCH:
- .endif
-000c88 0df7 .dw XT_TO_BODY
-000c89 1cb1 .dw XT_DUP
-000c8a 0c32 .dw XT_ICELLPLUS
-000c8b 1fcb .dw XT_FETCHI
-000c8c 1c2a .dw XT_EXECUTE
-000c8d 1c20 .dw XT_EXIT
- .include "words/do-defer.asm"
-
- ; System
- ; runtime of defer
- VE_DODEFER:
-000c8e ff07 .dw $ff07
-000c8f 6428
-000c90 6665
-000c91 7265
-000c92 0029 .db "(defer)", 0
-000c93 0c82 .dw VE_HEAD
- .set VE_HEAD = VE_DODEFER
- XT_DODEFER:
-000c94 1c01 .dw DO_COLON
- PFA_DODEFER:
-000c95 0280 .dw XT_DOCREATE
-000c96 03e0 .dw XT_REVEAL
-000c97 02a3 .dw XT_COMPILE
-000c98 0c9a .dw PFA_DODEFER1
-000c99 1c20 .dw XT_EXIT
- PFA_DODEFER1:
-000c9a 940e 03f9 call_ DO_DODOES
-000c9c 1cb1 .dw XT_DUP
-000c9d 0c32 .dw XT_ICELLPLUS
-000c9e 1fcb .dw XT_FETCHI
-000c9f 1c2a .dw XT_EXECUTE
-000ca0 1c2a .dw XT_EXECUTE
-000ca1 1c20 .dw XT_EXIT
-
- ; : (defer) <builds does> dup i-cell+ @i execute execute ;
-
-
- .include "words/search-wordlist.asm"
-
- ; Search Order
- ; searches the word list wid for the word at c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SEARCH_WORDLIST:
-000ca2 ff0f .dw $ff0f
-000ca3 6573
-000ca4 7261
-000ca5 6863
-000ca6 772d
-000ca7 726f
-000ca8 6c64
-000ca9 7369
-000caa 0074 .db "search-wordlist",0
-000cab 0c8e .dw VE_HEAD
- .set VE_HEAD = VE_SEARCH_WORDLIST
- XT_SEARCH_WORDLIST:
-000cac 1c01 .dw DO_COLON
- PFA_SEARCH_WORDLIST:
- .endif
-000cad 1cff .dw XT_TO_R
-000cae 1d54 .dw XT_ZERO
-000caf 1c3d .dw XT_DOLITERAL
-000cb0 0cc1 .dw XT_ISWORD
-000cb1 1cf6 .dw XT_R_FROM
-000cb2 0cde .dw XT_TRAVERSEWORDLIST
-000cb3 1cb1 .dw XT_DUP
-000cb4 1d1a .dw XT_ZEROEQUAL
-000cb5 1c36 .dw XT_DOCONDBRANCH
-000cb6 0cbb DEST(PFA_SEARCH_WORDLIST1)
-000cb7 05f4 .dw XT_2DROP
-000cb8 1cd9 .dw XT_DROP
-000cb9 1d54 .dw XT_ZERO
-000cba 1c20 .dw XT_EXIT
- PFA_SEARCH_WORDLIST1:
- ; ... get the XT ...
-000cbb 1cb1 .dw XT_DUP
-000cbc 0d05 .dw XT_NFA2CFA
- ; .. and get the header flag
-000cbd 1cc4 .dw XT_SWAP
-000cbe 0175 .dw XT_NAME2FLAGS
-000cbf 0163 .dw XT_IMMEDIATEQ
-000cc0 1c20 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_ISWORD:
-000cc1 1c01 .dw DO_COLON
- PFA_ISWORD:
- .endif
- ; ( c-addr len 0 nt -- c-addr len 0 true| nt false )
-000cc2 1cff .dw XT_TO_R
-000cc3 1cd9 .dw XT_DROP
-000cc4 05eb .dw XT_2DUP
-000cc5 1d08 .dw XT_R_FETCH ; -- addr len addr len nt
-000cc6 0cf9 .dw XT_NAME2STRING
-000cc7 0d0f .dw XT_ICOMPARE ; (-- addr len f )
-000cc8 1c36 .dw XT_DOCONDBRANCH
-000cc9 0ccf DEST(PFA_ISWORD3)
- ; not now
-000cca 1cf6 .dw XT_R_FROM
-000ccb 1cd9 .dw XT_DROP
-000ccc 1d54 .dw XT_ZERO
-000ccd 1d4b .dw XT_TRUE ; maybe next word
-000cce 1c20 .dw XT_EXIT
- PFA_ISWORD3:
- ; we found the word, now clean up iteration data ...
-000ccf 05f4 .dw XT_2DROP
-000cd0 1cf6 .dw XT_R_FROM
-000cd1 1d54 .dw XT_ZERO ; finish traverse-wordlist
-000cd2 1c20 .dw XT_EXIT
- .include "words/traverse-wordlist.asm"
-
- ; Tools Ext (2012)
- ; call the xt for every member of the wordlist wid until xt returns false
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TRAVERSEWORDLIST:
-000cd3 ff11 .dw $ff11
-000cd4 7274
-000cd5 7661
-000cd6 7265
-000cd7 6573
-000cd8 772d
-000cd9 726f
-000cda 6c64
-000cdb 7369
-000cdc 0074 .db "traverse-wordlist",0
-000cdd 0ca2 .dw VE_HEAD
- .set VE_HEAD = VE_TRAVERSEWORDLIST
- XT_TRAVERSEWORDLIST:
-000cde 1c01 .dw DO_COLON
- PFA_TRAVERSEWORDLIST:
-
- .endif
-000cdf 1f5f .dw XT_FETCHE
- PFA_TRAVERSEWORDLIST1:
-000ce0 1cb1 .dw XT_DUP ; ( -- xt nt nt )
-000ce1 1c36 .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string
-000ce2 0cef DEST(PFA_TRAVERSEWORDLIST2)
-000ce3 05eb .dw XT_2DUP
-000ce4 1f1e .dw XT_2TO_R
-000ce5 1cc4 .dw XT_SWAP
-000ce6 1c2a .dw XT_EXECUTE
-000ce7 1f2d .dw XT_2R_FROM
-000ce8 1ce1 .dw XT_ROT
-000ce9 1c36 .dw XT_DOCONDBRANCH
-000cea 0cef DEST(PFA_TRAVERSEWORDLIST2)
-000ceb 055d .dw XT_NFA2LFA
-000cec 1fcb .dw XT_FETCHI
-000ced 1c2f .dw XT_DOBRANCH ; ( -- addr )
-000cee 0ce0 DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr )
- PFA_TRAVERSEWORDLIST2:
-000cef 05f4 .dw XT_2DROP
-000cf0 1c20 .dw XT_EXIT
-
- ; : traverse-wordlist ( i*x xt wid -- i*x' )
- ; begin @ dup
- ; while
- ; 2dup 2>r
- ; swap execute ( i*x nt -- i*x' f )
- ; 2r> rot
- ; while
- ; nfa>lfa @i
- ; repeat then 2drop ;
- .include "words/name2string.asm"
-
- ; Tools Ext (2012)
- ; get a (flash) string from a name token nt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NAME2STRING:
-000cf1 ff0b .dw $ff0b
-000cf2 616e
-000cf3 656d
-000cf4 733e
-000cf5 7274
-000cf6 6e69
-000cf7 0067 .db "name>string",0
-000cf8 0cd3 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2STRING
- XT_NAME2STRING:
-000cf9 1c01 .dw DO_COLON
- PFA_NAME2STRING:
-
- .endif
-000cfa 0853 .dw XT_ICOUNT ; ( -- addr n )
-000cfb 1c3d .dw XT_DOLITERAL
-000cfc 00ff .dw 255
-000cfd 1e13 .dw XT_AND ; mask immediate bit
-000cfe 1c20 .dw XT_EXIT
- .include "words/nfa2cfa.asm"
-
- ; Tools
- ; get the XT from a name token
- VE_NFA2CFA:
-000cff ff07 .dw $ff07
-000d00 666e
-000d01 3e61
-000d02 6663
-../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte
-000d03 0061 .db "nfa>cfa"
-000d04 0cf1 .dw VE_HEAD
- .set VE_HEAD = VE_NFA2CFA
- XT_NFA2CFA:
-000d05 1c01 .dw DO_COLON
- PFA_NFA2CFA:
-000d06 055d .dw XT_NFA2LFA ; skip to link field
-000d07 1e2f .dw XT_1PLUS ; next is the execution token
-000d08 1c20 .dw XT_EXIT
- .include "words/icompare.asm"
-
- ; Tools
- ; compares string in RAM with string in flash. f is zero if equal like COMPARE
- VE_ICOMPARE:
-000d09 ff08 .dw $ff08
-000d0a 6369
-000d0b 6d6f
-000d0c 6170
-000d0d 6572 .db "icompare"
-000d0e 0cff .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
- XT_ICOMPARE:
-000d0f 1c01 .dw DO_COLON
- PFA_ICOMPARE:
-000d10 1cff .dw XT_TO_R ; ( -- r-addr r-len f-addr)
-000d11 1ccf .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
-000d12 1cf6 .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
-000d13 1d13 .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
-000d14 1c36 .dw XT_DOCONDBRANCH
-000d15 0d1a .dw PFA_ICOMPARE_SAMELEN
-000d16 05f4 .dw XT_2DROP
-000d17 1cd9 .dw XT_DROP
-000d18 1d4b .dw XT_TRUE
-000d19 1c20 .dw XT_EXIT
- PFA_ICOMPARE_SAMELEN:
-000d1a 1cc4 .dw XT_SWAP ; ( -- r-addr f-addr len )
-000d1b 1d54 .dw XT_ZERO
-000d1c 036d .dw XT_QDOCHECK
-000d1d 1c36 .dw XT_DOCONDBRANCH
-000d1e 0d3d .dw PFA_ICOMPARE_DONE
-000d1f 1e9b .dw XT_DODO
- PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
-000d20 1ccf .dw XT_OVER
-000d21 1c79 .dw XT_FETCH
- .if WANT_IGNORECASE == 1
- .endif
-000d22 1ccf .dw XT_OVER
-000d23 1fcb .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
- .if WANT_IGNORECASE == 1
- .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
-000d24 1cb1 .dw XT_DUP
- ;.dw XT_BYTESWAP
-000d25 1c3d .dw XT_DOLITERAL
-000d26 0100 .dw $100
-000d27 1d5c .dw XT_ULESS
-000d28 1c36 .dw XT_DOCONDBRANCH
-000d29 0d2e .dw PFA_ICOMPARE_LASTCELL
-000d2a 1cc4 .dw XT_SWAP
-000d2b 1c3d .dw XT_DOLITERAL
-000d2c 00ff .dw $00FF
-000d2d 1e13 .dw XT_AND ; the final swap can be omitted
- PFA_ICOMPARE_LASTCELL:
-000d2e 1d13 .dw XT_NOTEQUAL
-000d2f 1c36 .dw XT_DOCONDBRANCH
-000d30 0d35 .dw PFA_ICOMPARE_NEXTLOOP
-000d31 05f4 .dw XT_2DROP
-000d32 1d4b .dw XT_TRUE
-000d33 1ed4 .dw XT_UNLOOP
-000d34 1c20 .dw XT_EXIT
- PFA_ICOMPARE_NEXTLOOP:
-000d35 1e2f .dw XT_1PLUS
-000d36 1cc4 .dw XT_SWAP
-000d37 05e3 .dw XT_CELLPLUS
-000d38 1cc4 .dw XT_SWAP
-000d39 1c3d .dw XT_DOLITERAL
-000d3a 0002 .dw 2
-000d3b 1eba .dw XT_DOPLUSLOOP
-000d3c 0d20 .dw PFA_ICOMPARE_LOOP
- PFA_ICOMPARE_DONE:
-000d3d 05f4 .dw XT_2DROP
-000d3e 1d54 .dw XT_ZERO
-000d3f 1c20 .dw XT_EXIT
-
- .if WANT_IGNORECASE == 1
- .endif
-
- .include "words/star.asm"
-
- ; Arithmetics
- ; multiply routine
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_STAR:
-000d40 ff01 .dw $ff01
-000d41 002a .db "*",0
-000d42 0d09 .dw VE_HEAD
- .set VE_HEAD = VE_STAR
- XT_STAR:
-000d43 1c01 .dw DO_COLON
- PFA_STAR:
- .endif
-
-000d44 1da6 .dw XT_MSTAR
-000d45 1cd9 .dw XT_DROP
-000d46 1c20 .dw XT_EXIT
- .include "words/j.asm"
-
- ; Compiler
- ; loop counter of outer loop
- VE_J:
-000d47 ff01 .dw $FF01
-000d48 006a .db "j",0
-000d49 0d40 .dw VE_HEAD
- .set VE_HEAD = VE_J
- XT_J:
-000d4a 1c01 .dw DO_COLON
- PFA_J:
-000d4b 1e76 .dw XT_RP_FETCH
-000d4c 1c3d .dw XT_DOLITERAL
-000d4d 0007 .dw 7
-000d4e 1d9d .dw XT_PLUS
-000d4f 1c79 .dw XT_FETCH
-000d50 1e76 .dw XT_RP_FETCH
-000d51 1c3d .dw XT_DOLITERAL
-000d52 0009 .dw 9
-000d53 1d9d .dw XT_PLUS
-000d54 1c79 .dw XT_FETCH
-000d55 1d9d .dw XT_PLUS
-000d56 1c20 .dw XT_EXIT
-
- .include "words/dabs.asm"
-
- ; Arithmetics
- ; double cell absolute value
- VE_DABS:
-000d57 ff04 .dw $ff04
-000d58 6164
-000d59 7362 .db "dabs"
-000d5a 0d47 .dw VE_HEAD
- .set VE_HEAD = VE_DABS
- XT_DABS:
-000d5b 1c01 .dw DO_COLON
- PFA_DABS:
-000d5c 1cb1 .dw XT_DUP
-000d5d 1d21 .dw XT_ZEROLESS
-000d5e 1c36 .dw XT_DOCONDBRANCH
-000d5f 0d61 .dw PFA_DABS1
-000d60 0d68 .dw XT_DNEGATE
- PFA_DABS1:
-000d61 1c20 .dw XT_EXIT
- ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ;
- .include "words/dnegate.asm"
-
- ; Arithmetics
- ; double cell negation
- VE_DNEGATE:
-000d62 ff07 .dw $ff07
-000d63 6e64
-000d64 6765
-000d65 7461
-000d66 0065 .db "dnegate",0
-000d67 0d57 .dw VE_HEAD
- .set VE_HEAD = VE_DNEGATE
- XT_DNEGATE:
-000d68 1c01 .dw DO_COLON
- PFA_DNEGATE:
-000d69 01c4 .dw XT_DINVERT
-000d6a 1fe7 .dw XT_ONE
-000d6b 1d54 .dw XT_ZERO
-000d6c 019c .dw XT_DPLUS
-000d6d 1c20 .dw XT_EXIT
- ; : dnegate ( ud1 -- ud2 ) dinvert 1. d+ ;
- .include "words/cmove.asm"
-
- ; Memory
- ; copy data in RAM, from lower to higher addresses
- VE_CMOVE:
-000d6e ff05 .dw $ff05
-000d6f 6d63
-000d70 766f
-000d71 0065 .db "cmove",0
-000d72 0d62 .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE
- XT_CMOVE:
-000d73 0d74 .dw PFA_CMOVE
- PFA_CMOVE:
-000d74 93bf push xh
-000d75 93af push xl
-000d76 91e9 ld zl, Y+
-000d77 91f9 ld zh, Y+ ; addr-to
-000d78 91a9 ld xl, Y+
-000d79 91b9 ld xh, Y+ ; addr-from
-000d7a 2f09 mov temp0, tosh
-000d7b 2b08 or temp0, tosl
-000d7c f021 brbs 1, PFA_CMOVE1
- PFA_CMOVE2:
-000d7d 911d ld temp1, X+
-000d7e 9311 st Z+, temp1
-000d7f 9701 sbiw tosl, 1
-000d80 f7e1 brbc 1, PFA_CMOVE2
- PFA_CMOVE1:
-000d81 91af pop xl
-000d82 91bf pop xh
-000d83 9189
-000d84 9199 loadtos
-000d85 940c 1c05 jmp_ DO_NEXT
- .include "words/2swap.asm"
-
- ; Stack
- ; Exchange the two top cell pairs
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2SWAP:
-000d87 ff05 .dw $ff05
-000d88 7332
-000d89 6177
-000d8a 0070 .db "2swap",0
-000d8b 0d6e .dw VE_HEAD
- .set VE_HEAD = VE_2SWAP
- XT_2SWAP:
-000d8c 1c01 .dw DO_COLON
- PFA_2SWAP:
-
- .endif
-000d8d 1ce1 .dw XT_ROT
-000d8e 1cff .dw XT_TO_R
-000d8f 1ce1 .dw XT_ROT
-000d90 1cf6 .dw XT_R_FROM
-000d91 1c20 .dw XT_EXIT
-
- .include "words/tib.asm"
-
- ; System
- ; refills the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILLTIB:
-000d92 ff0a .dw $ff0a
-000d93 6572
-000d94 6966
-000d95 6c6c
-000d96 742d
-000d97 6269 .db "refill-tib"
-000d98 0d87 .dw VE_HEAD
- .set VE_HEAD = VE_REFILLTIB
- XT_REFILLTIB:
-000d99 1c01 .dw DO_COLON
- PFA_REFILLTIB:
- .endif
-000d9a 0db5 .dw XT_TIB
-000d9b 1c3d .dw XT_DOLITERAL
-000d9c 005a .dw TIB_SIZE
-000d9d 0918 .dw XT_ACCEPT
-000d9e 0dbb .dw XT_NUMBERTIB
-000d9f 1c81 .dw XT_STORE
-000da0 1d54 .dw XT_ZERO
-000da1 0604 .dw XT_TO_IN
-000da2 1c81 .dw XT_STORE
-000da3 1d4b .dw XT_TRUE ; -1
-000da4 1c20 .dw XT_EXIT
-
- ; ( -- addr n )
- ; System
- ; address and current length of the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCETIB:
-000da5 ff0a .dw $FF0A
-000da6 6f73
-000da7 7275
-000da8 6563
-000da9 742d
-000daa 6269 .db "source-tib"
-000dab 0d92 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCETIB
- XT_SOURCETIB:
-000dac 1c01 .dw DO_COLON
- PFA_SOURCETIB:
- .endif
-000dad 0db5 .dw XT_TIB
-000dae 0dbb .dw XT_NUMBERTIB
-000daf 1c79 .dw XT_FETCH
-000db0 1c20 .dw XT_EXIT
-
- ; ( -- addr )
- ; System Variable
- ; terminal input buffer address
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TIB:
-000db1 ff03 .dw $ff03
-000db2 6974
-000db3 0062 .db "tib",0
-000db4 0da5 .dw VE_HEAD
- .set VE_HEAD = VE_TIB
- XT_TIB:
-000db5 1c48 .dw PFA_DOVARIABLE
- PFA_TIB:
-000db6 00c1 .dw ram_tib
- .dseg
-0000c1 ram_tib: .byte TIB_SIZE
- .cseg
- .endif
-
- ; ( -- addr )
- ; System Variable
- ; variable holding the number of characters in TIB
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBERTIB:
-000db7 ff04 .dw $ff04
-000db8 7423
-000db9 6269 .db "#tib"
-000dba 0db1 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBERTIB
- XT_NUMBERTIB:
-000dbb 1c48 .dw PFA_DOVARIABLE
- PFA_NUMBERTIB:
-000dbc 011b .dw ram_sharptib
- .dseg
-00011b ram_sharptib: .byte 2
- .cseg
- .endif
-
- .include "words/init-ram.asm"
-
- ; Tools
- ; copy len cells from eeprom to ram
- VE_EE2RAM:
-000dbd ff06 .dw $ff06
-000dbe 6565
-000dbf 723e
-000dc0 6d61 .db "ee>ram"
-000dc1 0db7 .dw VE_HEAD
- .set VE_HEAD = VE_EE2RAM
- XT_EE2RAM:
-000dc2 1c01 .dw DO_COLON
- PFA_EE2RAM: ; ( -- )
-000dc3 1d54 .dw XT_ZERO
-000dc4 1e9b .dw XT_DODO
- PFA_EE2RAM_1:
- ; ( -- e-addr r-addr )
-000dc5 1ccf .dw XT_OVER
-000dc6 1f5f .dw XT_FETCHE
-000dc7 1ccf .dw XT_OVER
-000dc8 1c81 .dw XT_STORE
-000dc9 05e3 .dw XT_CELLPLUS
-000dca 1cc4 .dw XT_SWAP
-000dcb 05e3 .dw XT_CELLPLUS
-000dcc 1cc4 .dw XT_SWAP
-000dcd 1ec9 .dw XT_DOLOOP
-000dce 0dc5 .dw PFA_EE2RAM_1
- PFA_EE2RAM_2:
-000dcf 05f4 .dw XT_2DROP
-000dd0 1c20 .dw XT_EXIT
-
- ; ( -- )
- ; Tools
- ; setup the default user area from eeprom
- VE_INIT_RAM:
-000dd1 ff08 .dw $ff08
-000dd2 6e69
-000dd3 7469
-000dd4 722d
-000dd5 6d61 .db "init-ram"
-000dd6 0dbd .dw VE_HEAD
- .set VE_HEAD = VE_INIT_RAM
- XT_INIT_RAM:
-000dd7 1c01 .dw DO_COLON
- PFA_INI_RAM: ; ( -- )
-000dd8 1c3d .dw XT_DOLITERAL
-000dd9 0060 .dw EE_INITUSER
-000dda 1f02 .dw XT_UP_FETCH
-000ddb 1c3d .dw XT_DOLITERAL
-000ddc 0022 .dw SYSUSERSIZE
-000ddd 1e04 .dw XT_2SLASH
-000dde 0dc2 .dw XT_EE2RAM
-000ddf 1c20 .dw XT_EXIT
- .include "words/bounds.asm"
-
- ; Tools
- ; convert a string to an address range
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BOUNDS:
-000de0 ff06 .dw $ff06
-000de1 6f62
-000de2 6e75
-000de3 7364 .db "bounds"
-000de4 0dd1 .dw VE_HEAD
- .set VE_HEAD = VE_BOUNDS
- XT_BOUNDS:
-000de5 1c01 .dw DO_COLON
- PFA_BOUNDS:
- .endif
-000de6 1ccf .dw XT_OVER
-000de7 1d9d .dw XT_PLUS
-000de8 1cc4 .dw XT_SWAP
-000de9 1c20 .dw XT_EXIT
- .include "words/s-to-d.asm"
-
- ; Conversion
- ; extend (signed) single cell value to double cell
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_S2D:
-000dea ff03 .dw $ff03
-000deb 3e73
-000dec 0064 .db "s>d",0
-000ded 0de0 .dw VE_HEAD
- .set VE_HEAD = VE_S2D
- XT_S2D:
-000dee 1c01 .dw DO_COLON
- PFA_S2D:
- .endif
-000def 1cb1 .dw XT_DUP
-000df0 1d21 .dw XT_ZEROLESS
-000df1 1c20 .dw XT_EXIT
- .include "words/to-body.asm"
-
- ; Core
- ; get body from XT
- VE_TO_BODY:
-000df2 ff05 .dw $ff05
-000df3 623e
-000df4 646f
-000df5 0079 .db ">body",0
-000df6 0dea .dw VE_HEAD
- .set VE_HEAD = VE_TO_BODY
- XT_TO_BODY:
-000df7 1e30 .dw PFA_1PLUS
- .else
- .endif
- .include "dict_appl.inc"
-
- ; they may be moved to the core dictionary if needed
- .include "words/dot-s.asm"
-
- ; Tools
- ; stack dump
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTS:
-000df8 ff02 .dw $ff02
-000df9 732e .db ".s"
-000dfa 0df2 .dw VE_HEAD
- .set VE_HEAD = VE_DOTS
- XT_DOTS:
-000dfb 1c01 .dw DO_COLON
- PFA_DOTS:
- .endif
-000dfc 0b28 .dw XT_DEPTH
-000dfd 01d2 .dw XT_UDOT
-000dfe 0869 .dw XT_SPACE
-000dff 0b28 .dw XT_DEPTH
-000e00 1d54 .dw XT_ZERO
-000e01 036d .dw XT_QDOCHECK
-000e02 1c36 .dw XT_DOCONDBRANCH
-000e03 0e0a DEST(PFA_DOTS2)
-000e04 1e9b .dw XT_DODO
- PFA_DOTS1:
-000e05 1eac .dw XT_I
-000e06 023d .dw XT_PICK
-000e07 01d2 .dw XT_UDOT
-000e08 1ec9 .dw XT_DOLOOP
-000e09 0e05 DEST(PFA_DOTS1)
- PFA_DOTS2:
-000e0a 1c20 .dw XT_EXIT
- .include "words/spirw.asm"
-
- ; MCU
- ; SPI exchange of 1 byte
- VE_SPIRW:
-000e0b ff06 .dw $ff06
-000e0c 2163
-000e0d 7340
-000e0e 6970 .db "c!@spi"
-000e0f 0df8 .dw VE_HEAD
- .set VE_HEAD = VE_SPIRW
- XT_SPIRW:
-000e10 0e11 .dw PFA_SPIRW
- PFA_SPIRW:
-000e11 d003 rcall do_spirw
-000e12 2799 clr tosh
-000e13 940c 1c05 jmp_ DO_NEXT
-
- do_spirw:
-000e15 b98f out_ SPDR, tosl
- do_spirw1:
-000e16 b10e in_ temp0, SPSR
-000e17 7f08 cbr temp0,7
-000e18 b90e out_ SPSR, temp0
-000e19 b10e in_ temp0, SPSR
-000e1a ff07 sbrs temp0, 7
-000e1b cffa rjmp do_spirw1 ; wait until complete
-000e1c b18f in_ tosl, SPDR
-000e1d 9508 ret
- .include "words/n-spi.asm"
-
- ; MCU
- ; read len bytes from SPI to addr
- VE_N_SPIR:
-000e1e ff05 .dw $ff05
-000e1f 406e
-000e20 7073
-000e21 0069 .db "n@spi",0
-000e22 0e0b .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIR
- XT_N_SPIR:
-000e23 0e24 .dw PFA_N_SPIR
- PFA_N_SPIR:
-000e24 018c movw temp0, tosl
-000e25 9189
-000e26 9199 loadtos
-000e27 01fc movw zl, tosl
-000e28 01c8 movw tosl, temp0
- PFA_N_SPIR_LOOP:
-000e29 b82f out_ SPDR, zerol
- PFA_N_SPIR_LOOP1:
-000e2a b12e in_ temp2, SPSR
-000e2b ff27 sbrs temp2, SPIF
-000e2c cffd rjmp PFA_N_SPIR_LOOP1
-000e2d b12f in_ temp2, SPDR
-000e2e 9321 st Z+, temp2
-000e2f 9701 sbiw tosl, 1
-000e30 f7c1 brne PFA_N_SPIR_LOOP
-000e31 9189
-000e32 9199 loadtos
-000e33 940c 1c05 jmp_ DO_NEXT
-
- ; ( addr len -- )
- ; MCU
- ; write len bytes to SPI from addr
- VE_N_SPIW:
-000e35 ff05 .dw $ff05
-000e36 216e
-000e37 7073
-000e38 0069 .db "n!spi",0
-000e39 0e1e .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIW
- XT_N_SPIW:
-000e3a 0e3b .dw PFA_N_SPIW
- PFA_N_SPIW:
-000e3b 018c movw temp0, tosl
-000e3c 9189
-000e3d 9199 loadtos
-000e3e 01fc movw zl, tosl
-000e3f 01c8 movw tosl, temp0
- PFA_N_SPIW_LOOP:
-000e40 9121 ld temp2, Z+
-000e41 b92f out_ SPDR, temp2
- PFA_N_SPIW_LOOP1:
-000e42 b12e in_ temp2, SPSR
-000e43 ff27 sbrs temp2, SPIF
-000e44 cffd rjmp PFA_N_SPIW_LOOP1
-000e45 b12f in_ temp2, SPDR ; ignore the data
-000e46 9701 sbiw tosl, 1
-000e47 f7c1 brne PFA_N_SPIW_LOOP
-000e48 9189
-000e49 9199 loadtos
-000e4a 940c 1c05 jmp_ DO_NEXT
- .include "words/applturnkey.asm"
-
- ; R( -- )
- ; application specific turnkey action
- VE_APPLTURNKEY:
-000e4c ff0b .dw $ff0b
-000e4d 7061
-000e4e 6c70
-000e4f 7574
-000e50 6e72
-000e51 656b
-000e52 0079 .db "applturnkey",0
-000e53 0e35 .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
- XT_APPLTURNKEY:
-000e54 1c01 .dw DO_COLON
- PFA_APPLTURNKEY:
-000e55 00bc .dw XT_USART
-
- .if WANT_INTERRUPTS == 1
-000e56 0203 .dw XT_INTON
- .endif
-000e57 0beb .dw XT_DOT_VER
-000e58 0869 .dw XT_SPACE
-000e59 05c5 .dw XT_F_CPU
-000e5a 1c3d .dw XT_DOLITERAL
-000e5b 03e8 .dw 1000
-000e5c 1dc2 .dw XT_UMSLASHMOD
-000e5d 1cf0 .dw XT_NIP
-000e5e 0663 .dw XT_DECIMAL
-000e5f 07a9 .dw XT_DOT
-000e60 07f4 .dw XT_DOSLITERAL
-000e61 0004 .dw 4
-000e62 486b
-000e63 207a .db "kHz "
-000e64 0827 .dw XT_ITYPE
-000e65 1c20 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .set DICT_COMPILER2 = 1
-
- .include "words/set-current.asm"
-
- ; Search Order
- ; set current word list to the given word list wid
- VE_SET_CURRENT:
-000e66 ff0b .dw $ff0b
-000e67 6573
-000e68 2d74
-000e69 7563
-000e6a 7272
-000e6b 6e65
-000e6c 0074 .db "set-current",0
-000e6d 0e4c .dw VE_HEAD
- .set VE_HEAD = VE_SET_CURRENT
- XT_SET_CURRENT:
-000e6e 1c01 .dw DO_COLON
- PFA_SET_CURRENT:
-000e6f 1c3d .dw XT_DOLITERAL
-000e70 003c .dw CFG_CURRENT
-000e71 1f3b .dw XT_STOREE
-000e72 1c20 .dw XT_EXIT
- .include "words/wordlist.asm"
-
- ; Search Order
- ; create a new, empty wordlist
- VE_WORDLIST:
-000e73 ff08 .dw $ff08
-000e74 6f77
-000e75 6472
-000e76 696c
-000e77 7473 .db "wordlist"
-000e78 0e66 .dw VE_HEAD
- .set VE_HEAD = VE_WORDLIST
- XT_WORDLIST:
-000e79 1c01 .dw DO_COLON
- PFA_WORDLIST:
-000e7a 063d .dw XT_EHERE
-000e7b 1d54 .dw XT_ZERO
-000e7c 1ccf .dw XT_OVER
-000e7d 1f3b .dw XT_STOREE
-000e7e 1cb1 .dw XT_DUP
-000e7f 05e3 .dw XT_CELLPLUS
-000e80 0c20 .dw XT_DOTO
-000e81 063e .dw PFA_EHERE
-000e82 1c20 .dw XT_EXIT
-
- .include "words/forth-wordlist.asm"
-
- ; Search Order
- ; get the system default word list
- VE_FORTHWORDLIST:
-000e83 ff0e .dw $ff0e
-000e84 6f66
-000e85 7472
-000e86 2d68
-000e87 6f77
-000e88 6472
-000e89 696c
-000e8a 7473 .db "forth-wordlist"
-000e8b 0e73 .dw VE_HEAD
- .set VE_HEAD = VE_FORTHWORDLIST
- XT_FORTHWORDLIST:
-000e8c 1c48 .dw PFA_DOVARIABLE
- PFA_FORTHWORDLIST:
-000e8d 003e .dw CFG_FORTHWORDLIST
- .include "words/set-order.asm"
-
- ; Search Order
- ; replace the search order list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_ORDER:
-000e8e ff09 .dw $ff09
-000e8f 6573
-000e90 2d74
-000e91 726f
-000e92 6564
-000e93 0072 .db "set-order",0
-000e94 0e83 .dw VE_HEAD
- .set VE_HEAD = VE_SET_ORDER
- XT_SET_ORDER:
-000e95 1c01 .dw DO_COLON
- PFA_SET_ORDER:
- .endif
-000e96 1c3d .dw XT_DOLITERAL
-000e97 0040 .dw CFG_ORDERLISTLEN
-000e98 04d0 .dw XT_SET_STACK
-000e99 1c20 .dw XT_EXIT
-
- .include "words/set-recognizer.asm"
-
- ; Interpreter
- ; replace the recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_RECOGNIZERS:
-000e9a ff0f .dw $ff0f
-000e9b 6573
-000e9c 2d74
-000e9d 6572
-000e9e 6f63
-000e9f 6e67
-000ea0 7a69
-000ea1 7265
-000ea2 0073 .db "set-recognizers",0
-000ea3 0e8e .dw VE_HEAD
- .set VE_HEAD = VE_SET_RECOGNIZERS
- XT_SET_RECOGNIZERS:
-000ea4 1c01 .dw DO_COLON
- PFA_SET_RECOGNIZERS:
- .endif
-000ea5 1c3d .dw XT_DOLITERAL
-000ea6 0052 .dw CFG_RECOGNIZERLISTLEN
-000ea7 04d0 .dw XT_SET_STACK
-000ea8 1c20 .dw XT_EXIT
-
- .include "words/get-recognizer.asm"
-
- ; Interpreter
- ; Get the current recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_RECOGNIZERS:
-000ea9 ff0f .dw $ff0f
-000eaa 6567
-000eab 2d74
-000eac 6572
-000ead 6f63
-000eae 6e67
-000eaf 7a69
-000eb0 7265
-000eb1 0073 .db "get-recognizers",0
-000eb2 0e9a .dw VE_HEAD
- .set VE_HEAD = VE_GET_RECOGNIZERS
- XT_GET_RECOGNIZERS:
-000eb3 1c01 .dw DO_COLON
- PFA_GET_RECOGNIZERS:
- .endif
-000eb4 1c3d .dw XT_DOLITERAL
-000eb5 0052 .dw CFG_RECOGNIZERLISTLEN
-000eb6 04af .dw XT_GET_STACK
-000eb7 1c20 .dw XT_EXIT
- .include "words/code.asm"
-
- ; Compiler
- ; create named entry in the dictionary, XT is the data field
- VE_CODE:
-000eb8 ff04 .dw $ff04
-000eb9 6f63
-000eba 6564 .db "code"
-000ebb 0ea9 .dw VE_HEAD
- .set VE_HEAD = VE_CODE
- XT_CODE:
-000ebc 1c01 .dw DO_COLON
- PFA_CODE:
-000ebd 0280 .dw XT_DOCREATE
-000ebe 03e0 .dw XT_REVEAL
-000ebf 0634 .dw XT_DP
-000ec0 0c32 .dw XT_ICELLPLUS
-000ec1 02ae .dw XT_COMMA
-000ec2 1c20 .dw XT_EXIT
- .include "words/end-code.asm"
-
- ; Compiler
- ; finish a code definition
- VE_ENDCODE:
-000ec3 ff08 .dw $ff08
-000ec4 6e65
-000ec5 2d64
-000ec6 6f63
-000ec7 6564 .db "end-code"
-000ec8 0eb8 .dw VE_HEAD
- .set VE_HEAD = VE_ENDCODE
- XT_ENDCODE:
-000ec9 1c01 .dw DO_COLON
- PFA_ENDCODE:
-000eca 02a3 .dw XT_COMPILE
-000ecb 940c .dw $940c
-000ecc 02a3 .dw XT_COMPILE
-000ecd 1c05 .dw DO_NEXT
-000ece 1c20 .dw XT_EXIT
- .include "words/marker.asm"
-
- ; System Value
- ; The eeprom address until which MARKER saves and restores the eeprom data.
- VE_MARKER:
-000ecf ff08 .dw $ff08
-000ed0 6d28
-000ed1 7261
-000ed2 656b
-000ed3 2972 .db "(marker)"
-000ed4 0ec3 .dw VE_HEAD
- .set VE_HEAD = VE_MARKER
- XT_MARKER:
-000ed5 1c6f .dw PFA_DOVALUE1
- PFA_MARKER:
-000ed6 005e .dw EE_MARKER
-000ed7 0c3b .dw XT_EDEFERFETCH
-000ed8 0c45 .dw XT_EDEFERSTORE
- .include "words/postpone.asm"
-
- ; Compiler
- ; Append the compilation semantics of "name" to the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_POSTPONE:
-000ed9 0008 .dw $0008
-000eda 6f70
-000edb 7473
-000edc 6f70
-000edd 656e .db "postpone"
-000ede 0ecf .dw VE_HEAD
- .set VE_HEAD = VE_POSTPONE
- XT_POSTPONE:
-000edf 1c01 .dw DO_COLON
- PFA_POSTPONE:
- .endif
-000ee0 0a3b .dw XT_PARSENAME
-000ee1 0b60 .dw XT_FORTHRECOGNIZER
-000ee2 0b36 .dw XT_RECOGNIZE
-000ee3 1cb1 .dw XT_DUP
-000ee4 1cff .dw XT_TO_R
-000ee5 0c32 .dw XT_ICELLPLUS
-000ee6 0c32 .dw XT_ICELLPLUS
-000ee7 1fcb .dw XT_FETCHI
-000ee8 1c2a .dw XT_EXECUTE
-000ee9 1cf6 .dw XT_R_FROM
-000eea 0c32 .dw XT_ICELLPLUS
-000eeb 1fcb .dw XT_FETCHI
-000eec 02ae .dw XT_COMMA
-000eed 1c20 .dw XT_EXIT
- .endif
- .include "words/2r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_2R_FETCH:
-000eee ff03 .dw $ff03
-000eef 7232
-000ef0 0040 .db "2r@",0
-000ef1 0ed9 .dw VE_HEAD
- .set VE_HEAD = VE_2R_FETCH
- XT_2R_FETCH:
-000ef2 0ef3 .dw PFA_2R_FETCH
- PFA_2R_FETCH:
-000ef3 939a
-000ef4 938a savetos
-000ef5 91ef pop zl
-000ef6 91ff pop zh
-000ef7 918f pop tosl
-000ef8 919f pop tosh
-000ef9 939f push tosh
-000efa 938f push tosl
-000efb 93ff push zh
-000efc 93ef push zl
-000efd 939a
-000efe 938a savetos
-000eff 01cf movw tosl, zl
-000f00 940c 1c05 jmp_ DO_NEXT
-
- .set DPSTART = pc
- .if(pc>AMFORTH_RO_SEG)
- .endif
-
- .org AMFORTH_RO_SEG
- .include "amforth-interpreter.asm"
-
-
- DO_COLON:
-001c01 93bf push XH
-001c02 93af push XL ; PUSH IP
-001c03 01db movw XL, wl
-001c04 9611 adiw xl, 1
- DO_NEXT:
- .if WANT_INTERRUPTS == 1
-001c05 14b2 cp isrflag, zerol
-001c06 f469 brne DO_INTERRUPT
- .endif
-001c07 01fd movw zl, XL ; READ IP
-001c08 0fee
-001c09 1fff
-001c0a 9165
-001c0b 9175 readflashcell wl, wh
-001c0c 9611 adiw XL, 1 ; INC IP
-
- DO_EXECUTE:
-001c0d 01fb movw zl, wl
-001c0e 0fee
-001c0f 1fff
-001c10 9105
-001c11 9115 readflashcell temp0,temp1
-001c12 01f8 movw zl, temp0
-001c13 9409 ijmp
-
- .if WANT_INTERRUPTS == 1
- DO_INTERRUPT:
- ; here we deal with interrupts the forth way
-001c14 939a
-001c15 938a savetos
-001c16 2d8b mov tosl, isrflag
-001c17 2799 clr tosh
-001c18 24bb clr isrflag
-001c19 e26f ldi wl, LOW(XT_ISREXEC)
-001c1a e072 ldi wh, HIGH(XT_ISREXEC)
-001c1b cff1 rjmp DO_EXECUTE
- .include "dict/nrww.inc"
-
- ; section together with the forth inner interpreter
-
- .include "words/exit.asm"
-
- ; Compiler
- ; end of current colon word
- VE_EXIT:
-001c1c ff04 .dw $ff04
-001c1d 7865
-001c1e 7469 .db "exit"
-001c1f 0eee .dw VE_HEAD
- .set VE_HEAD = VE_EXIT
- XT_EXIT:
-001c20 1c21 .dw PFA_EXIT
- PFA_EXIT:
-001c21 91af pop XL
-001c22 91bf pop XH
-001c23 cfe1 jmp_ DO_NEXT
- .include "words/execute.asm"
-
- ; System
- ; execute XT
- VE_EXECUTE:
-001c24 ff07 .dw $ff07
-001c25 7865
-001c26 6365
-001c27 7475
-001c28 0065 .db "execute",0
-001c29 1c1c .dw VE_HEAD
- .set VE_HEAD = VE_EXECUTE
- XT_EXECUTE:
-001c2a 1c2b .dw PFA_EXECUTE
- PFA_EXECUTE:
-001c2b 01bc movw wl, tosl
-001c2c 9189
-001c2d 9199 loadtos
-001c2e cfde jmp_ DO_EXECUTE
- .include "words/dobranch.asm"
-
- ; System
- ; runtime of branch
- ;VE_DOBRANCH:
- ; .dw $ff08
- ; .db "(branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOBRANCH
- XT_DOBRANCH:
-001c2f 1c30 .dw PFA_DOBRANCH
- PFA_DOBRANCH:
-001c30 01fd movw zl, XL
-001c31 0fee
-001c32 1fff
-001c33 91a5
-001c34 91b5 readflashcell XL,XH
-001c35 cfcf jmp_ DO_NEXT
- .include "words/docondbranch.asm"
-
- ; System
- ; runtime of ?branch
- ;VE_DOCONDBRANCH:
- ; .dw $ff09
- ; .db "(?branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONDBRANCH
- XT_DOCONDBRANCH:
-001c36 1c37 .dw PFA_DOCONDBRANCH
- PFA_DOCONDBRANCH:
-001c37 2b98 or tosh, tosl
-001c38 9189
-001c39 9199 loadtos
-001c3a f3a9 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch
-001c3b 9611 adiw XL, 1
-001c3c cfc8 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/doliteral.asm"
-
- ; System
- ; runtime of literal
- ;VE_DOLITERAL:
- ; .dw $ff09
- ; .db "(literal)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLITERAL
- XT_DOLITERAL:
-001c3d 1c3e .dw PFA_DOLITERAL
- PFA_DOLITERAL:
-001c3e 939a
-001c3f 938a savetos
-001c40 01fd movw zl, xl
-001c41 0fee
-001c42 1fff
-001c43 9185
-001c44 9195 readflashcell tosl,tosh
-001c45 9611 adiw xl, 1
-001c46 cfbe jmp_ DO_NEXT
-
- .include "words/dovariable.asm"
-
- ; System
- ; puts content of parameter field (1 cell) to TOS
- ;VE_DOVARIABLE:
- ; .dw $ff0a
- ; .db "(variable)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOVARIABLE
- XT_DOVARIABLE:
-001c47 1c48 .dw PFA_DOVARIABLE
- PFA_DOVARIABLE:
-001c48 939a
-001c49 938a savetos
-001c4a 01fb movw zl, wl
-001c4b 9631 adiw zl,1
-001c4c 0fee
-001c4d 1fff
-001c4e 9185
-001c4f 9195 readflashcell tosl,tosh
-001c50 cfb4 jmp_ DO_NEXT
- .include "words/doconstant.asm"
-
- ; System
- ; place data field address on TOS
- ;VE_DOCONSTANT:
- ; .dw $ff0a
- ; .db "(constant)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONSTANT
- XT_DOCONSTANT:
-001c51 1c52 .dw PFA_DOCONSTANT
- PFA_DOCONSTANT:
-001c52 939a
-001c53 938a savetos
-001c54 01cb movw tosl, wl
-001c55 9601 adiw tosl, 1
-001c56 cfae jmp_ DO_NEXT
- .include "words/douser.asm"
-
- ; System
- ; runtime part of user
- ;VE_DOUSER:
- ; .dw $ff06
- ; .db "(user)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOUSER
- XT_DOUSER:
-001c57 1c58 .dw PFA_DOUSER
- PFA_DOUSER:
-001c58 939a
-001c59 938a savetos
-001c5a 01fb movw zl, wl
-001c5b 9631 adiw zl, 1
-001c5c 0fee
-001c5d 1fff
-001c5e 9185
-001c5f 9195 readflashcell tosl,tosh
-001c60 0d84 add tosl, upl
-001c61 1d95 adc tosh, uph
-001c62 cfa2 jmp_ DO_NEXT
- .include "words/do-value.asm"
-
- ; System
- ; runtime of value
- VE_DOVALUE:
-001c63 ff07 .dw $ff07
-001c64 7628
-001c65 6c61
-001c66 6575
-001c67 0029 .db "(value)", 0
-001c68 1c24 .dw VE_HEAD
- .set VE_HEAD = VE_DOVALUE
- XT_DOVALUE:
-001c69 1c01 .dw DO_COLON
- PFA_DOVALUE:
-001c6a 0280 .dw XT_DOCREATE
-001c6b 03e0 .dw XT_REVEAL
-001c6c 02a3 .dw XT_COMPILE
-001c6d 1c6f .dw PFA_DOVALUE1
-001c6e 1c20 .dw XT_EXIT
- PFA_DOVALUE1:
-001c6f 940e 03f9 call_ DO_DODOES
-001c71 1cb1 .dw XT_DUP
-001c72 0c32 .dw XT_ICELLPLUS
-001c73 1fcb .dw XT_FETCHI
-001c74 1c2a .dw XT_EXECUTE
-001c75 1c20 .dw XT_EXIT
-
- ; : (value) <builds does> dup icell+ @i execute ;
- .include "words/fetch.asm"
-
- ; Memory
- ; read 1 cell from RAM address
- VE_FETCH:
-001c76 ff01 .dw $ff01
-001c77 0040 .db "@",0
-001c78 1c63 .dw VE_HEAD
- .set VE_HEAD = VE_FETCH
- XT_FETCH:
-001c79 1c7a .dw PFA_FETCH
- PFA_FETCH:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHRAM:
-001c7a 01fc movw zl, tosl
- ; low byte is read before the high byte
-001c7b 9181 ld tosl, z+
-001c7c 9191 ld tosh, z+
-001c7d cf87 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store.asm"
-
- ; Memory
- ; write n to RAM memory at addr, low byte first
- VE_STORE:
-001c7e ff01 .dw $ff01
-001c7f 0021 .db "!",0
-001c80 1c76 .dw VE_HEAD
- .set VE_HEAD = VE_STORE
- XT_STORE:
-001c81 1c82 .dw PFA_STORE
- PFA_STORE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STORERAM:
-001c82 01fc movw zl, tosl
-001c83 9189
-001c84 9199 loadtos
- ; the high byte is written before the low byte
-001c85 8391 std Z+1, tosh
-001c86 8380 std Z+0, tosl
-001c87 9189
-001c88 9199 loadtos
-001c89 cf7b jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/cstore.asm"
-
- ; Memory
- ; store a single byte to RAM address
- VE_CSTORE:
-001c8a ff02 .dw $ff02
-001c8b 2163 .db "c!"
-001c8c 1c7e .dw VE_HEAD
- .set VE_HEAD = VE_CSTORE
- XT_CSTORE:
-001c8d 1c8e .dw PFA_CSTORE
- PFA_CSTORE:
-001c8e 01fc movw zl, tosl
-001c8f 9189
-001c90 9199 loadtos
-001c91 8380 st Z, tosl
-001c92 9189
-001c93 9199 loadtos
-001c94 cf70 jmp_ DO_NEXT
- .include "words/cfetch.asm"
-
- ; Memory
- ; fetch a single byte from memory mapped locations
- VE_CFETCH:
-001c95 ff02 .dw $ff02
-001c96 4063 .db "c@"
-001c97 1c8a .dw VE_HEAD
- .set VE_HEAD = VE_CFETCH
- XT_CFETCH:
-001c98 1c99 .dw PFA_CFETCH
- PFA_CFETCH:
-001c99 01fc movw zl, tosl
-001c9a 2799 clr tosh
-001c9b 8180 ld tosl, Z
-001c9c cf68 jmp_ DO_NEXT
- .include "words/fetch-u.asm"
-
- ; Memory
- ; read 1 cell from USER area
- VE_FETCHU:
-001c9d ff02 .dw $ff02
-001c9e 7540 .db "@u"
-001c9f 1c95 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHU
- XT_FETCHU:
-001ca0 1c01 .dw DO_COLON
- PFA_FETCHU:
-001ca1 1f02 .dw XT_UP_FETCH
-001ca2 1d9d .dw XT_PLUS
-001ca3 1c79 .dw XT_FETCH
-001ca4 1c20 .dw XT_EXIT
- .include "words/store-u.asm"
-
- ; Memory
- ; write n to USER area at offset
- VE_STOREU:
-001ca5 ff02 .dw $ff02
-001ca6 7521 .db "!u"
-001ca7 1c9d .dw VE_HEAD
- .set VE_HEAD = VE_STOREU
- XT_STOREU:
-001ca8 1c01 .dw DO_COLON
- PFA_STOREU:
-001ca9 1f02 .dw XT_UP_FETCH
-001caa 1d9d .dw XT_PLUS
-001cab 1c81 .dw XT_STORE
-001cac 1c20 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/dup.asm"
-
- ; Stack
- ; duplicate TOS
- VE_DUP:
-001cad ff03 .dw $ff03
-001cae 7564
-001caf 0070 .db "dup",0
-001cb0 1ca5 .dw VE_HEAD
- .set VE_HEAD = VE_DUP
- XT_DUP:
-001cb1 1cb2 .dw PFA_DUP
- PFA_DUP:
-001cb2 939a
-001cb3 938a savetos
-001cb4 cf50 jmp_ DO_NEXT
- .include "words/qdup.asm"
-
- ; Stack
- ; duplicate TOS if non-zero
- VE_QDUP:
-001cb5 ff04 .dw $ff04
-001cb6 643f
-001cb7 7075 .db "?dup"
-001cb8 1cad .dw VE_HEAD
- .set VE_HEAD = VE_QDUP
- XT_QDUP:
-001cb9 1cba .dw PFA_QDUP
- PFA_QDUP:
-001cba 2f08 mov temp0, tosl
-001cbb 2b09 or temp0, tosh
-001cbc f011 breq PFA_QDUP1
-001cbd 939a
-001cbe 938a savetos
- PFA_QDUP1:
-001cbf cf45 jmp_ DO_NEXT
- .include "words/swap.asm"
-
- ; Stack
- ; swaps the two top level stack cells
- VE_SWAP:
-001cc0 ff04 .dw $ff04
-001cc1 7773
-001cc2 7061 .db "swap"
-001cc3 1cb5 .dw VE_HEAD
- .set VE_HEAD = VE_SWAP
- XT_SWAP:
-001cc4 1cc5 .dw PFA_SWAP
- PFA_SWAP:
-001cc5 018c movw temp0, tosl
-001cc6 9189
-001cc7 9199 loadtos
-001cc8 931a st -Y, temp1
-001cc9 930a st -Y, temp0
-001cca cf3a jmp_ DO_NEXT
- .include "words/over.asm"
-
- ; Stack
- ; Place a copy of x1 on top of the stack
- VE_OVER:
-001ccb ff04 .dw $ff04
-001ccc 766f
-001ccd 7265 .db "over"
-001cce 1cc0 .dw VE_HEAD
- .set VE_HEAD = VE_OVER
- XT_OVER:
-001ccf 1cd0 .dw PFA_OVER
- PFA_OVER:
-001cd0 939a
-001cd1 938a savetos
-001cd2 818a ldd tosl, Y+2
-001cd3 819b ldd tosh, Y+3
-
-001cd4 cf30 jmp_ DO_NEXT
- .include "words/drop.asm"
-
- ; Stack
- ; drop TOS
- VE_DROP:
-001cd5 ff04 .dw $ff04
-001cd6 7264
-001cd7 706f .db "drop"
-001cd8 1ccb .dw VE_HEAD
- .set VE_HEAD = VE_DROP
- XT_DROP:
-001cd9 1cda .dw PFA_DROP
- PFA_DROP:
-001cda 9189
-001cdb 9199 loadtos
-001cdc cf28 jmp_ DO_NEXT
- .include "words/rot.asm"
-
- ; Stack
- ; rotate the three top level cells
- VE_ROT:
-001cdd ff03 .dw $ff03
-001cde 6f72
-001cdf 0074 .db "rot",0
-001ce0 1cd5 .dw VE_HEAD
- .set VE_HEAD = VE_ROT
- XT_ROT:
-001ce1 1ce2 .dw PFA_ROT
- PFA_ROT:
-001ce2 018c movw temp0, tosl
-001ce3 9129 ld temp2, Y+
-001ce4 9139 ld temp3, Y+
-001ce5 9189
-001ce6 9199 loadtos
-
-001ce7 933a st -Y, temp3
-001ce8 932a st -Y, temp2
-001ce9 931a st -Y, temp1
-001cea 930a st -Y, temp0
-
-001ceb cf19 jmp_ DO_NEXT
- .include "words/nip.asm"
-
- ; Stack
- ; Remove Second of Stack
- VE_NIP:
-001cec ff03 .dw $ff03
-001ced 696e
-001cee 0070 .db "nip",0
-001cef 1cdd .dw VE_HEAD
- .set VE_HEAD = VE_NIP
- XT_NIP:
-001cf0 1cf1 .dw PFA_NIP
- PFA_NIP:
-001cf1 9622 adiw yl, 2
-001cf2 cf12 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/r_from.asm"
-
- ; Stack
- ; move TOR to TOS
- VE_R_FROM:
-001cf3 ff02 .dw $ff02
-001cf4 3e72 .db "r>"
-001cf5 1cec .dw VE_HEAD
- .set VE_HEAD = VE_R_FROM
- XT_R_FROM:
-001cf6 1cf7 .dw PFA_R_FROM
- PFA_R_FROM:
-001cf7 939a
-001cf8 938a savetos
-001cf9 918f pop tosl
-001cfa 919f pop tosh
-001cfb cf09 jmp_ DO_NEXT
- .include "words/to_r.asm"
-
- ; Stack
- ; move TOS to TOR
- VE_TO_R:
-001cfc ff02 .dw $ff02
-001cfd 723e .db ">r"
-001cfe 1cf3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_R
- XT_TO_R:
-001cff 1d00 .dw PFA_TO_R
- PFA_TO_R:
-001d00 939f push tosh
-001d01 938f push tosl
-001d02 9189
-001d03 9199 loadtos
-001d04 cf00 jmp_ DO_NEXT
- .include "words/r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_R_FETCH:
-001d05 ff02 .dw $ff02
-001d06 4072 .db "r@"
-001d07 1cfc .dw VE_HEAD
- .set VE_HEAD = VE_R_FETCH
- XT_R_FETCH:
-001d08 1d09 .dw PFA_R_FETCH
- PFA_R_FETCH:
-001d09 939a
-001d0a 938a savetos
-001d0b 918f pop tosl
-001d0c 919f pop tosh
-001d0d 939f push tosh
-001d0e 938f push tosl
-001d0f cef5 jmp_ DO_NEXT
-
-
- .include "words/not-equal.asm"
-
- ; Compare
- ; true if n1 is not equal to n2
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOTEQUAL:
-001d10 ff02 .dw $ff02
-001d11 3e3c .db "<>"
-001d12 1d05 .dw VE_HEAD
- .set VE_HEAD = VE_NOTEQUAL
- XT_NOTEQUAL:
-001d13 1c01 .dw DO_COLON
- PFA_NOTEQUAL:
- .endif
-
-001d14 1fe0
-001d15 1d1a
-001d16 1c20 .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT
- .include "words/equalzero.asm"
-
- ; Compare
- ; compare with 0 (zero)
- VE_ZEROEQUAL:
-001d17 ff02 .dw $ff02
-001d18 3d30 .db "0="
-001d19 1d10 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROEQUAL
- XT_ZEROEQUAL:
-001d1a 1d1b .dw PFA_ZEROEQUAL
- PFA_ZEROEQUAL:
-001d1b 2b98 or tosh, tosl
-001d1c f5d1 brne PFA_ZERO1
-001d1d c030 rjmp PFA_TRUE1
- .include "words/lesszero.asm"
-
- ; Compare
- ; compare with zero
- VE_ZEROLESS:
-001d1e ff02 .dw $ff02
-001d1f 3c30 .db "0<"
-001d20 1d17 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROLESS
- XT_ZEROLESS:
-001d21 1d22 .dw PFA_ZEROLESS
- PFA_ZEROLESS:
-001d22 fd97 sbrc tosh,7
-001d23 c02a rjmp PFA_TRUE1
-001d24 c032 rjmp PFA_ZERO1
- .include "words/greaterzero.asm"
-
- ; Compare
- ; true if n1 is greater than 0
- VE_GREATERZERO:
-001d25 ff02 .dw $ff02
-001d26 3e30 .db "0>"
-001d27 1d1e .dw VE_HEAD
- .set VE_HEAD = VE_GREATERZERO
- XT_GREATERZERO:
-001d28 1d29 .dw PFA_GREATERZERO
- PFA_GREATERZERO:
-001d29 1582 cp tosl, zerol
-001d2a 0593 cpc tosh, zeroh
-001d2b f15c brlt PFA_ZERO1
-001d2c f151 brbs 1, PFA_ZERO1
-001d2d c020 rjmp PFA_TRUE1
- .include "words/d-greaterzero.asm"
-
- ; Compare
- ; compares if a double double cell number is greater 0
- VE_DGREATERZERO:
-001d2e ff03 .dw $ff03
-001d2f 3064
-001d30 003e .db "d0>",0
-001d31 1d25 .dw VE_HEAD
- .set VE_HEAD = VE_DGREATERZERO
- XT_DGREATERZERO:
-001d32 1d33 .dw PFA_DGREATERZERO
- PFA_DGREATERZERO:
-001d33 1582 cp tosl, zerol
-001d34 0593 cpc tosh, zeroh
-001d35 9189
-001d36 9199 loadtos
-001d37 0582 cpc tosl, zerol
-001d38 0593 cpc tosh, zeroh
-001d39 f0ec brlt PFA_ZERO1
-001d3a f0e1 brbs 1, PFA_ZERO1
-001d3b c012 rjmp PFA_TRUE1
- .include "words/d-lesszero.asm"
-
- ; Compare
- ; compares if a double double cell number is less than 0
- VE_DXT_ZEROLESS:
-001d3c ff03 .dw $ff03
-001d3d 3064
-001d3e 003c .db "d0<",0
-001d3f 1d2e .dw VE_HEAD
- .set VE_HEAD = VE_DXT_ZEROLESS
- XT_DXT_ZEROLESS:
-001d40 1d41 .dw PFA_DXT_ZEROLESS
- PFA_DXT_ZEROLESS:
-001d41 9622 adiw Y,2
-001d42 fd97 sbrc tosh,7
-001d43 940c 1d4e jmp PFA_TRUE1
-001d45 940c 1d57 jmp PFA_ZERO1
-
- .include "words/true.asm"
-
- ; Arithmetics
- ; leaves the value -1 (true) on TOS
- VE_TRUE:
-001d47 ff04 .dw $ff04
-001d48 7274
-001d49 6575 .db "true"
-001d4a 1d3c .dw VE_HEAD
- .set VE_HEAD = VE_TRUE
- XT_TRUE:
-001d4b 1d4c .dw PFA_TRUE
- PFA_TRUE:
-001d4c 939a
-001d4d 938a savetos
- PFA_TRUE1:
-001d4e ef8f ser tosl
-001d4f ef9f ser tosh
-001d50 ceb4 jmp_ DO_NEXT
- .include "words/zero.asm"
-
- ; Arithmetics
- ; place a value 0 on TOS
- VE_ZERO:
-001d51 ff01 .dw $ff01
-001d52 0030 .db "0",0
-001d53 1d47 .dw VE_HEAD
- .set VE_HEAD = VE_ZERO
- XT_ZERO:
-001d54 1d55 .dw PFA_ZERO
- PFA_ZERO:
-001d55 939a
-001d56 938a savetos
- PFA_ZERO1:
-001d57 01c1 movw tosl, zerol
-001d58 ceac jmp_ DO_NEXT
- .include "words/uless.asm"
-
- ; Compare
- ; true if u1 < u2 (unsigned)
- VE_ULESS:
-001d59 ff02 .dw $ff02
-001d5a 3c75 .db "u<"
-001d5b 1d51 .dw VE_HEAD
- .set VE_HEAD = VE_ULESS
- XT_ULESS:
-001d5c 1d5d .dw PFA_ULESS
- PFA_ULESS:
-001d5d 9129 ld temp2, Y+
-001d5e 9139 ld temp3, Y+
-001d5f 1782 cp tosl, temp2
-001d60 0793 cpc tosh, temp3
-001d61 f3a8 brlo PFA_ZERO1
-001d62 f3a1 brbs 1, PFA_ZERO1
-001d63 cfea jmp_ PFA_TRUE1
- .include "words/u-greater.asm"
-
- ; Compare
- ; true if u1 > u2 (unsigned)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UGREATER:
-001d64 ff02 .dw $ff02
-001d65 3e75 .db "u>"
-001d66 1d59 .dw VE_HEAD
- .set VE_HEAD = VE_UGREATER
- XT_UGREATER:
-001d67 1c01 .dw DO_COLON
- PFA_UGREATER:
- .endif
-001d68 1cc4 .DW XT_SWAP
-001d69 1d5c .dw XT_ULESS
-001d6a 1c20 .dw XT_EXIT
- .include "words/less.asm"
-
- ; Compare
- ; true if n1 is less than n2
- VE_LESS:
-001d6b ff01 .dw $ff01
-001d6c 003c .db "<",0
-001d6d 1d64 .dw VE_HEAD
- .set VE_HEAD = VE_LESS
- XT_LESS:
-001d6e 1d6f .dw PFA_LESS
- PFA_LESS:
-001d6f 9129 ld temp2, Y+
-001d70 9139 ld temp3, Y+
-001d71 1728 cp temp2, tosl
-001d72 0739 cpc temp3, tosh
- PFA_LESSDONE:
-001d73 f71c brge PFA_ZERO1
-001d74 cfd9 rjmp PFA_TRUE1
- .include "words/greater.asm"
-
- ; Compare
- ; flag is true if n1 is greater than n2
- VE_GREATER:
-001d75 ff01 .dw $ff01
-001d76 003e .db ">",0
-001d77 1d6b .dw VE_HEAD
- .set VE_HEAD = VE_GREATER
- XT_GREATER:
-001d78 1d79 .dw PFA_GREATER
- PFA_GREATER:
-001d79 9129 ld temp2, Y+
-001d7a 9139 ld temp3, Y+
-001d7b 1728 cp temp2, tosl
-001d7c 0739 cpc temp3, tosh
- PFA_GREATERDONE:
-001d7d f2cc brlt PFA_ZERO1
-001d7e f2c1 brbs 1, PFA_ZERO1
-001d7f cfce rjmp PFA_TRUE1
-
- .include "words/log2.asm"
-
- ; Arithmetics
- ; logarithm to base 2 or highest set bitnumber
- VE_LOG2:
-001d80 ff04 .dw $ff04
-001d81 6f6c
-001d82 3267 .db "log2"
-001d83 1d75 .dw VE_HEAD
- .set VE_HEAD = VE_LOG2
- XT_LOG2:
-001d84 1d85 .dw PFA_LOG2
- PFA_LOG2:
-001d85 01fc movw zl, tosl
-001d86 2799 clr tosh
-001d87 e180 ldi tosl, 16
- PFA_LOG2_1:
-001d88 958a dec tosl
-001d89 f022 brmi PFA_LOG2_2 ; wrong data
-001d8a 0fee lsl zl
-001d8b 1fff rol zh
-001d8c f7d8 brcc PFA_LOG2_1
-001d8d ce77 jmp_ DO_NEXT
-
- PFA_LOG2_2:
-001d8e 959a dec tosh
-001d8f ce75 jmp_ DO_NEXT
- .include "words/minus.asm"
-
- ; Arithmetics
- ; subtract n2 from n1
- VE_MINUS:
-001d90 ff01 .dw $ff01
-001d91 002d .db "-",0
-001d92 1d80 .dw VE_HEAD
- .set VE_HEAD = VE_MINUS
- XT_MINUS:
-001d93 1d94 .dw PFA_MINUS
- PFA_MINUS:
-001d94 9109 ld temp0, Y+
-001d95 9119 ld temp1, Y+
-001d96 1b08 sub temp0, tosl
-001d97 0b19 sbc temp1, tosh
-001d98 01c8 movw tosl, temp0
-001d99 ce6b jmp_ DO_NEXT
- .include "words/plus.asm"
-
- ; Arithmetics
- ; add n1 and n2
- VE_PLUS:
-001d9a ff01 .dw $ff01
-001d9b 002b .db "+",0
-001d9c 1d90 .dw VE_HEAD
- .set VE_HEAD = VE_PLUS
- XT_PLUS:
-001d9d 1d9e .dw PFA_PLUS
- PFA_PLUS:
-001d9e 9109 ld temp0, Y+
-001d9f 9119 ld temp1, Y+
-001da0 0f80 add tosl, temp0
-001da1 1f91 adc tosh, temp1
-001da2 ce62 jmp_ DO_NEXT
- .include "words/mstar.asm"
-
- ; Arithmetics
- ; multiply 2 cells to a double cell
- VE_MSTAR:
-001da3 ff02 .dw $ff02
-001da4 2a6d .db "m*"
-001da5 1d9a .dw VE_HEAD
- .set VE_HEAD = VE_MSTAR
- XT_MSTAR:
-001da6 1da7 .dw PFA_MSTAR
- PFA_MSTAR:
-001da7 018c movw temp0, tosl
-001da8 9189
-001da9 9199 loadtos
-001daa 019c movw temp2, tosl
- ; high cell ah*bh
-001dab 0231 muls temp3, temp1
-001dac 0170 movw temp4, r0
- ; low cell al*bl
-001dad 9f20 mul temp2, temp0
-001dae 01c0 movw tosl, r0
- ; signed ah*bl
-001daf 0330 mulsu temp3, temp0
-001db0 08f3 sbc temp5, zeroh
-001db1 0d90 add tosh, r0
-001db2 1ce1 adc temp4, r1
-001db3 1cf3 adc temp5, zeroh
-
- ; signed al*bh
-001db4 0312 mulsu temp1, temp2
-001db5 08f3 sbc temp5, zeroh
-001db6 0d90 add tosh, r0
-001db7 1ce1 adc temp4, r1
-001db8 1cf3 adc temp5, zeroh
-
-001db9 939a
-001dba 938a savetos
-001dbb 01c7 movw tosl, temp4
-001dbc ce48 jmp_ DO_NEXT
- .include "words/umslashmod.asm"
-
- ; Arithmetics
- ; unsigned division ud / u2 with remainder
- VE_UMSLASHMOD:
-001dbd ff06 .dw $ff06
-001dbe 6d75
-001dbf 6d2f
-001dc0 646f .db "um/mod"
-001dc1 1da3 .dw VE_HEAD
- .set VE_HEAD = VE_UMSLASHMOD
- XT_UMSLASHMOD:
-001dc2 1dc3 .dw PFA_UMSLASHMOD
- PFA_UMSLASHMOD:
-001dc3 017c movw temp4, tosl
-
-001dc4 9129 ld temp2, Y+
-001dc5 9139 ld temp3, Y+
-
-001dc6 9109 ld temp0, Y+
-001dc7 9119 ld temp1, Y+
-
- ;; unsigned 32/16 -> 16r16 divide
-
- PFA_UMSLASHMODmod:
-
- ; set loop counter
-001dc8 e140 ldi temp6,$10
-
- PFA_UMSLASHMODmod_loop:
- ; shift left, saving high bit
-001dc9 2755 clr temp7
-001dca 0f00 lsl temp0
-001dcb 1f11 rol temp1
-001dcc 1f22 rol temp2
-001dcd 1f33 rol temp3
-001dce 1f55 rol temp7
-
- ; try subtracting divisor
-001dcf 152e cp temp2, temp4
-001dd0 053f cpc temp3, temp5
-001dd1 0552 cpc temp7,zerol
-
-001dd2 f018 brcs PFA_UMSLASHMODmod_loop_control
-
- PFA_UMSLASHMODmod_subtract:
- ; dividend is large enough
- ; do the subtraction for real
- ; and set lowest bit
-001dd3 9503 inc temp0
-001dd4 192e sub temp2, temp4
-001dd5 093f sbc temp3, temp5
-
- PFA_UMSLASHMODmod_loop_control:
-001dd6 954a dec temp6
-001dd7 f789 brne PFA_UMSLASHMODmod_loop
-
- PFA_UMSLASHMODmod_done:
- ; put remainder on stack
-001dd8 933a st -Y,temp3
-001dd9 932a st -Y,temp2
-
- ; put quotient on stack
-001dda 01c8 movw tosl, temp0
-001ddb ce29 jmp_ DO_NEXT
- .include "words/umstar.asm"
-
- ; Arithmetics
- ; multiply 2 unsigned cells to a double cell
- VE_UMSTAR:
-001ddc ff03 .dw $ff03
-001ddd 6d75
-001dde 002a .db "um*",0
-001ddf 1dbd .dw VE_HEAD
- .set VE_HEAD = VE_UMSTAR
- XT_UMSTAR:
-001de0 1de1 .dw PFA_UMSTAR
- PFA_UMSTAR:
-001de1 018c movw temp0, tosl
-001de2 9189
-001de3 9199 loadtos
- ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
- ; low bytes
-001de4 9f80 mul tosl,temp0
-001de5 01f0 movw zl, r0
-001de6 2722 clr temp2
-001de7 2733 clr temp3
- ; middle bytes
-001de8 9f90 mul tosh, temp0
-001de9 0df0 add zh, r0
-001dea 1d21 adc temp2, r1
-001deb 1d33 adc temp3, zeroh
-
-001dec 9f81 mul tosl, temp1
-001ded 0df0 add zh, r0
-001dee 1d21 adc temp2, r1
-001def 1d33 adc temp3, zeroh
-
-001df0 9f91 mul tosh, temp1
-001df1 0d20 add temp2, r0
-001df2 1d31 adc temp3, r1
-001df3 01cf movw tosl, zl
-001df4 939a
-001df5 938a savetos
-001df6 01c9 movw tosl, temp2
-001df7 ce0d jmp_ DO_NEXT
-
- .include "words/invert.asm"
-
- ; Arithmetics
- ; 1-complement of TOS
- VE_INVERT:
-001df8 ff06 .dw $ff06
-001df9 6e69
-001dfa 6576
-001dfb 7472 .db "invert"
-001dfc 1ddc .dw VE_HEAD
- .set VE_HEAD = VE_INVERT
- XT_INVERT:
-001dfd 1dfe .dw PFA_INVERT
- PFA_INVERT:
-001dfe 9580 com tosl
-001dff 9590 com tosh
-001e00 ce04 jmp_ DO_NEXT
- .include "words/2slash.asm"
-
- ; Arithmetics
- ; arithmetic shift right
- VE_2SLASH:
-001e01 ff02 .dw $ff02
-001e02 2f32 .db "2/"
-001e03 1df8 .dw VE_HEAD
- .set VE_HEAD = VE_2SLASH
- XT_2SLASH:
-001e04 1e05 .dw PFA_2SLASH
- PFA_2SLASH:
-001e05 9595 asr tosh
-001e06 9587 ror tosl
-001e07 cdfd jmp_ DO_NEXT
- .include "words/2star.asm"
-
- ; Arithmetics
- ; arithmetic shift left, filling with zero
- VE_2STAR:
-001e08 ff02 .dw $ff02
-001e09 2a32 .db "2*"
-001e0a 1e01 .dw VE_HEAD
- .set VE_HEAD = VE_2STAR
- XT_2STAR:
-001e0b 1e0c .dw PFA_2STAR
- PFA_2STAR:
-001e0c 0f88 lsl tosl
-001e0d 1f99 rol tosh
-001e0e cdf6 jmp_ DO_NEXT
- .include "words/and.asm"
-
- ; Logic
- ; bitwise and
- VE_AND:
-001e0f ff03 .dw $ff03
-001e10 6e61
-001e11 0064 .db "and",0
-001e12 1e08 .dw VE_HEAD
- .set VE_HEAD = VE_AND
- XT_AND:
-001e13 1e14 .dw PFA_AND
- PFA_AND:
-001e14 9109 ld temp0, Y+
-001e15 9119 ld temp1, Y+
-001e16 2380 and tosl, temp0
-001e17 2391 and tosh, temp1
-001e18 cdec jmp_ DO_NEXT
- .include "words/or.asm"
-
- ; Logic
- ; logical or
- VE_OR:
-001e19 ff02 .dw $ff02
-001e1a 726f .db "or"
-001e1b 1e0f .dw VE_HEAD
- .set VE_HEAD = VE_OR
- XT_OR:
-001e1c 1e1d .dw PFA_OR
- PFA_OR:
-001e1d 9109 ld temp0, Y+
-001e1e 9119 ld temp1, Y+
-001e1f 2b80 or tosl, temp0
-001e20 2b91 or tosh, temp1
-001e21 cde3 jmp_ DO_NEXT
-
- .include "words/xor.asm"
-
- ; Logic
- ; exclusive or
- VE_XOR:
-001e22 ff03 .dw $ff03
-001e23 6f78
-001e24 0072 .db "xor",0
-001e25 1e19 .dw VE_HEAD
- .set VE_HEAD = VE_XOR
- XT_XOR:
-001e26 1e27 .dw PFA_XOR
- PFA_XOR:
-001e27 9109 ld temp0, Y+
-001e28 9119 ld temp1, Y+
-001e29 2780 eor tosl, temp0
-001e2a 2791 eor tosh, temp1
-001e2b cdd9 jmp_ DO_NEXT
-
- .include "words/1plus.asm"
-
- ; Arithmetics
- ; optimized increment
- VE_1PLUS:
-001e2c ff02 .dw $ff02
-001e2d 2b31 .db "1+"
-001e2e 1e22 .dw VE_HEAD
- .set VE_HEAD = VE_1PLUS
- XT_1PLUS:
-001e2f 1e30 .dw PFA_1PLUS
- PFA_1PLUS:
-001e30 9601 adiw tosl,1
-001e31 cdd3 jmp_ DO_NEXT
- .include "words/1minus.asm"
-
- ; Arithmetics
- ; optimized decrement
- VE_1MINUS:
-001e32 ff02 .dw $ff02
-001e33 2d31 .db "1-"
-001e34 1e2c .dw VE_HEAD
- .set VE_HEAD = VE_1MINUS
- XT_1MINUS:
-001e35 1e36 .dw PFA_1MINUS
- PFA_1MINUS:
-001e36 9701 sbiw tosl, 1
-001e37 cdcd jmp_ DO_NEXT
- .include "words/q-negate.asm"
-
- ; 0< IF NEGATE THEN ; ...a common factor
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QNEGATE:
-001e38 ff07 .dw $ff07
-001e39 6e3f
-001e3a 6765
-001e3b 7461
-../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte
-001e3c 0065 .db "?negate"
-001e3d 1e32 .dw VE_HEAD
- .set VE_HEAD = VE_QNEGATE
- XT_QNEGATE:
-001e3e 1c01 .dw DO_COLON
- PFA_QNEGATE:
-
- .endif
-001e3f 1d21
-001e40 1c36 .DW XT_ZEROLESS,XT_DOCONDBRANCH
-001e41 1e43 DEST(QNEG1)
-001e42 06c6 .DW XT_NEGATE
-001e43 1c20 QNEG1: .DW XT_EXIT
- .include "words/lshift.asm"
-
- ; Arithmetics
- ; logically shift n1 left n2 times
- VE_LSHIFT:
-001e44 ff06 .dw $ff06
-001e45 736c
-001e46 6968
-001e47 7466 .db "lshift"
-001e48 1e38 .dw VE_HEAD
- .set VE_HEAD = VE_LSHIFT
- XT_LSHIFT:
-001e49 1e4a .dw PFA_LSHIFT
- PFA_LSHIFT:
-001e4a 01fc movw zl, tosl
-001e4b 9189
-001e4c 9199 loadtos
- PFA_LSHIFT1:
-001e4d 9731 sbiw zl, 1
-001e4e f01a brmi PFA_LSHIFT2
-001e4f 0f88 lsl tosl
-001e50 1f99 rol tosh
-001e51 cffb rjmp PFA_LSHIFT1
- PFA_LSHIFT2:
-001e52 cdb2 jmp_ DO_NEXT
-
- .include "words/rshift.asm"
-
- ; Arithmetics
- ; shift n1 n2-times logically right
- VE_RSHIFT:
-001e53 ff06 .dw $ff06
-001e54 7372
-001e55 6968
-001e56 7466 .db "rshift"
-001e57 1e44 .dw VE_HEAD
- .set VE_HEAD = VE_RSHIFT
- XT_RSHIFT:
-001e58 1e59 .dw PFA_RSHIFT
- PFA_RSHIFT:
-001e59 01fc movw zl, tosl
-001e5a 9189
-001e5b 9199 loadtos
- PFA_RSHIFT1:
-001e5c 9731 sbiw zl, 1
-001e5d f01a brmi PFA_RSHIFT2
-001e5e 9596 lsr tosh
-001e5f 9587 ror tosl
-001e60 cffb rjmp PFA_RSHIFT1
- PFA_RSHIFT2:
-001e61 cda3 jmp_ DO_NEXT
-
- .include "words/plusstore.asm"
-
- ; Arithmetics
- ; add n to content of RAM address a-addr
- VE_PLUSSTORE:
-001e62 ff02 .dw $ff02
-001e63 212b .db "+!"
-001e64 1e53 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSSTORE
- XT_PLUSSTORE:
-001e65 1e66 .dw PFA_PLUSSTORE
- PFA_PLUSSTORE:
-001e66 01fc movw zl, tosl
-001e67 9189
-001e68 9199 loadtos
-001e69 8120 ldd temp2, Z+0
-001e6a 8131 ldd temp3, Z+1
-001e6b 0f82 add tosl, temp2
-001e6c 1f93 adc tosh, temp3
-001e6d 8380 std Z+0, tosl
-001e6e 8391 std Z+1, tosh
-001e6f 9189
-001e70 9199 loadtos
-001e71 cd93 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/rpfetch.asm"
-
- ; Stack
- ; current return stack pointer address
- VE_RP_FETCH:
-001e72 ff03 .dw $ff03
-001e73 7072
-001e74 0040 .db "rp@",0
-001e75 1e62 .dw VE_HEAD
- .set VE_HEAD = VE_RP_FETCH
- XT_RP_FETCH:
-001e76 1e77 .dw PFA_RP_FETCH
- PFA_RP_FETCH:
-001e77 939a
-001e78 938a savetos
-001e79 b78d in tosl, SPL
-001e7a b79e in tosh, SPH
-001e7b cd89 jmp_ DO_NEXT
- .include "words/rpstore.asm"
-
- ; Stack
- ; set return stack pointer
- VE_RP_STORE:
-001e7c ff03 .dw $ff03
-001e7d 7072
-001e7e 0021 .db "rp!",0
-001e7f 1e72 .dw VE_HEAD
- .set VE_HEAD = VE_RP_STORE
- XT_RP_STORE:
-001e80 1e81 .dw PFA_RP_STORE
- PFA_RP_STORE:
-001e81 b72f in temp2, SREG
-001e82 94f8 cli
-001e83 bf8d out SPL, tosl
-001e84 bf9e out SPH, tosh
-001e85 bf2f out SREG, temp2
-001e86 9189
-001e87 9199 loadtos
-001e88 cd7c jmp_ DO_NEXT
- .include "words/spfetch.asm"
-
- ; Stack
- ; current data stack pointer
- VE_SP_FETCH:
-001e89 ff03 .dw $ff03
-001e8a 7073
-001e8b 0040 .db "sp@",0
-001e8c 1e7c .dw VE_HEAD
- .set VE_HEAD = VE_SP_FETCH
- XT_SP_FETCH:
-001e8d 1e8e .dw PFA_SP_FETCH
- PFA_SP_FETCH:
-001e8e 939a
-001e8f 938a savetos
-001e90 01ce movw tosl, yl
-001e91 cd73 jmp_ DO_NEXT
- .include "words/spstore.asm"
-
- ; Stack
- ; set data stack pointer to addr
- VE_SP_STORE:
-001e92 ff03 .dw $ff03
-001e93 7073
-001e94 0021 .db "sp!",0
-001e95 1e89 .dw VE_HEAD
- .set VE_HEAD = VE_SP_STORE
- XT_SP_STORE:
-001e96 1e97 .dw PFA_SP_STORE
- PFA_SP_STORE:
-001e97 01ec movw yl, tosl
-001e98 9189
-001e99 9199 loadtos
-001e9a cd6a jmp_ DO_NEXT
-
- .include "words/dodo.asm"
-
- ; System
- ; runtime of do
- ;VE_DODO:
- ; .dw $ff04
- ; .db "(do)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DODO
- XT_DODO:
-001e9b 1e9c .dw PFA_DODO
- PFA_DODO:
-001e9c 9129 ld temp2, Y+
-001e9d 9139 ld temp3, Y+ ; limit
- PFA_DODO1:
-001e9e e8e0 ldi zl, $80
-001e9f 0f3e add temp3, zl
-001ea0 1b82 sub tosl, temp2
-001ea1 0b93 sbc tosh, temp3
-
-001ea2 933f push temp3
-001ea3 932f push temp2 ; limit ( --> limit + $8000)
-001ea4 939f push tosh
-001ea5 938f push tosl ; start -> index ( --> index - (limit - $8000)
-001ea6 9189
-001ea7 9199 loadtos
-001ea8 cd5c jmp_ DO_NEXT
- .include "words/i.asm"
-
- ; Compiler
- ; current loop counter
- VE_I:
-001ea9 ff01 .dw $FF01
-001eaa 0069 .db "i",0
-001eab 1e92 .dw VE_HEAD
- .set VE_HEAD = VE_I
- XT_I:
-001eac 1ead .dw PFA_I
- PFA_I:
-001ead 939a
-001eae 938a savetos
-001eaf 918f pop tosl
-001eb0 919f pop tosh ; index
-001eb1 91ef pop zl
-001eb2 91ff pop zh ; limit
-001eb3 93ff push zh
-001eb4 93ef push zl
-001eb5 939f push tosh
-001eb6 938f push tosl
-001eb7 0f8e add tosl, zl
-001eb8 1f9f adc tosh, zh
-001eb9 cd4b jmp_ DO_NEXT
- .include "words/doplusloop.asm"
-
- ; System
- ; runtime of +loop
- ;VE_DOPLUSLOOP:
- ; .dw $ff07
- ; .db "(+loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOPLUSLOOP
- XT_DOPLUSLOOP:
-001eba 1ebb .dw PFA_DOPLUSLOOP
- PFA_DOPLUSLOOP:
-001ebb 91ef pop zl
-001ebc 91ff pop zh
-001ebd 0fe8 add zl, tosl
-001ebe 1ff9 adc zh, tosh
-001ebf 9189
-001ec0 9199 loadtos
-001ec1 f01b brvs PFA_DOPLUSLOOP_LEAVE
- ; next cycle
- PFA_DOPLUSLOOP_NEXT:
- ; next iteration
-001ec2 93ff push zh
-001ec3 93ef push zl
-001ec4 cd6b rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
- PFA_DOPLUSLOOP_LEAVE:
-001ec5 910f pop temp0
-001ec6 911f pop temp1 ; remove limit
-001ec7 9611 adiw xl, 1 ; skip branch-back address
-001ec8 cd3c jmp_ DO_NEXT
- .include "words/doloop.asm"
-
- ; System
- ; runtime of loop
- ;VE_DOLOOP:
- ; .dw $ff06
- ; .db "(loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLOOP
- XT_DOLOOP:
-001ec9 1eca .dw PFA_DOLOOP
- PFA_DOLOOP:
-001eca 91ef pop zl
-001ecb 91ff pop zh
-001ecc 9631 adiw zl,1
-001ecd f3bb brvs PFA_DOPLUSLOOP_LEAVE
-001ece cff3 jmp_ PFA_DOPLUSLOOP_NEXT
- .include "words/unloop.asm"
-
- ; Compiler
- ; remove loop-sys, exit the loop and continue execution after it
- VE_UNLOOP:
-001ecf ff06 .dw $ff06
-001ed0 6e75
-001ed1 6f6c
-001ed2 706f .db "unloop"
-001ed3 1ea9 .dw VE_HEAD
- .set VE_HEAD = VE_UNLOOP
- XT_UNLOOP:
-001ed4 1ed5 .dw PFA_UNLOOP
- PFA_UNLOOP:
-001ed5 911f pop temp1
-001ed6 910f pop temp0
-001ed7 911f pop temp1
-001ed8 910f pop temp0
-001ed9 cd2b jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .include "words/cmove_g.asm"
-
- ; Memory
- ; copy data in RAM from higher to lower addresses.
- VE_CMOVE_G:
-001eda ff06 .dw $ff06
-001edb 6d63
-001edc 766f
-001edd 3e65 .db "cmove>"
-001ede 1ecf .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE_G
- XT_CMOVE_G:
-001edf 1ee0 .dw PFA_CMOVE_G
- PFA_CMOVE_G:
-001ee0 93bf push xh
-001ee1 93af push xl
-001ee2 91e9 ld zl, Y+
-001ee3 91f9 ld zh, Y+ ; addr-to
-001ee4 91a9 ld xl, Y+
-001ee5 91b9 ld xh, Y+ ; addr-from
-001ee6 2f09 mov temp0, tosh
-001ee7 2b08 or temp0, tosl
-001ee8 f041 brbs 1, PFA_CMOVE_G1
-001ee9 0fe8 add zl, tosl
-001eea 1ff9 adc zh, tosh
-001eeb 0fa8 add xl, tosl
-001eec 1fb9 adc xh, tosh
- PFA_CMOVE_G2:
-001eed 911e ld temp1, -X
-001eee 9312 st -Z, temp1
-001eef 9701 sbiw tosl, 1
-001ef0 f7e1 brbc 1, PFA_CMOVE_G2
- PFA_CMOVE_G1:
-001ef1 91af pop xl
-001ef2 91bf pop xh
-001ef3 9189
-001ef4 9199 loadtos
-001ef5 cd0f jmp_ DO_NEXT
- .include "words/byteswap.asm"
-
- ; Arithmetics
- ; exchange the bytes of the TOS
- VE_BYTESWAP:
-001ef6 ff02 .dw $ff02
-001ef7 3c3e .db "><"
-001ef8 1eda .dw VE_HEAD
- .set VE_HEAD = VE_BYTESWAP
- XT_BYTESWAP:
-001ef9 1efa .dw PFA_BYTESWAP
- PFA_BYTESWAP:
-001efa 2f09 mov temp0, tosh
-001efb 2f98 mov tosh, tosl
-001efc 2f80 mov tosl, temp0
-001efd cd07 jmp_ DO_NEXT
- .include "words/up.asm"
-
- ; System Variable
- ; get user area pointer
- VE_UP_FETCH:
-001efe ff03 .dw $ff03
-001eff 7075
-001f00 0040 .db "up@",0
-001f01 1ef6 .dw VE_HEAD
- .set VE_HEAD = VE_UP_FETCH
- XT_UP_FETCH:
-001f02 1f03 .dw PFA_UP_FETCH
- PFA_UP_FETCH:
-001f03 939a
-001f04 938a savetos
-001f05 01c2 movw tosl, upl
-001f06 ccfe jmp_ DO_NEXT
-
- ; ( addr -- )
- ; System Variable
- ; set user area pointer
- VE_UP_STORE:
-001f07 ff03 .dw $ff03
-001f08 7075
-001f09 0021 .db "up!",0
-001f0a 1efe .dw VE_HEAD
- .set VE_HEAD = VE_UP_STORE
- XT_UP_STORE:
-001f0b 1f0c .dw PFA_UP_STORE
- PFA_UP_STORE:
-001f0c 012c movw upl, tosl
-001f0d 9189
-001f0e 9199 loadtos
-001f0f ccf5 jmp_ DO_NEXT
- .include "words/1ms.asm"
-
- ; Time
- ; busy waits (almost) exactly 1 millisecond
- VE_1MS:
-001f10 ff03 .dw $ff03
-001f11 6d31
-001f12 0073 .db "1ms",0
-001f13 1f07 .dw VE_HEAD
- .set VE_HEAD = VE_1MS
- XT_1MS:
-001f14 1f15 .dw PFA_1MS
- PFA_1MS:
-001f15 ede0
-001f16 e0f7
-001f17 9731
-001f18 f7f1 delay 1000
-001f19 cceb jmp_ DO_NEXT
- .include "words/2to_r.asm"
-
- ; Stack
- ; move DTOS to TOR
- VE_2TO_R:
-001f1a ff03 .dw $ff03
-001f1b 3e32
-001f1c 0072 .db "2>r",0
-001f1d 1f10 .dw VE_HEAD
- .set VE_HEAD = VE_2TO_R
- XT_2TO_R:
-001f1e 1f1f .dw PFA_2TO_R
- PFA_2TO_R:
-001f1f 01fc movw zl, tosl
-001f20 9189
-001f21 9199 loadtos
-001f22 939f push tosh
-001f23 938f push tosl
-001f24 93ff push zh
-001f25 93ef push zl
-001f26 9189
-001f27 9199 loadtos
-001f28 ccdc jmp_ DO_NEXT
- .include "words/2r_from.asm"
-
- ; Stack
- ; move DTOR to TOS
- VE_2R_FROM:
-001f29 ff03 .dw $ff03
-001f2a 7232
-001f2b 003e .db "2r>",0
-001f2c 1f1a .dw VE_HEAD
- .set VE_HEAD = VE_2R_FROM
- XT_2R_FROM:
-001f2d 1f2e .dw PFA_2R_FROM
- PFA_2R_FROM:
-001f2e 939a
-001f2f 938a savetos
-001f30 91ef pop zl
-001f31 91ff pop zh
-001f32 918f pop tosl
-001f33 919f pop tosh
-001f34 939a
-001f35 938a savetos
-001f36 01cf movw tosl, zl
-001f37 cccd jmp_ DO_NEXT
-
- .include "words/store-e.asm"
-
- ; Memory
- ; write n (2bytes) to eeprom address
- VE_STOREE:
-001f38 ff02 .dw $ff02
-001f39 6521 .db "!e"
-001f3a 1f29 .dw VE_HEAD
- .set VE_HEAD = VE_STOREE
- XT_STOREE:
-001f3b 1f3c .dw PFA_STOREE
- PFA_STOREE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STOREE0:
-001f3c 01fc movw zl, tosl
-001f3d 9189
-001f3e 9199 loadtos
-001f3f b72f in_ temp2, SREG
-001f40 94f8 cli
-001f41 d028 rcall PFA_FETCHE2
-001f42 b30d in_ temp0, EEDR
-001f43 1708 cp temp0,tosl
-001f44 f009 breq PFA_STOREE3
-001f45 d00b rcall PFA_STOREE1
- PFA_STOREE3:
-001f46 9631 adiw zl,1
-001f47 d022 rcall PFA_FETCHE2
-001f48 b30d in_ temp0, EEDR
-001f49 1709 cp temp0,tosh
-001f4a f011 breq PFA_STOREE4
-001f4b 2f89 mov tosl, tosh
-001f4c d004 rcall PFA_STOREE1
- PFA_STOREE4:
-001f4d bf2f out_ SREG, temp2
-001f4e 9189
-001f4f 9199 loadtos
-001f50 ccb4 jmp_ DO_NEXT
-
- PFA_STOREE1:
-001f51 99e1 sbic EECR, EEPE
-001f52 cffe rjmp PFA_STOREE1
-
- PFA_STOREE2: ; estore_wait_low_spm:
-001f53 b707 in_ temp0, SPMCSR
-001f54 fd00 sbrc temp0,SPMEN
-001f55 cffd rjmp PFA_STOREE2
-
-001f56 bbff out_ EEARH,zh
-001f57 bbee out_ EEARL,zl
-001f58 bb8d out_ EEDR, tosl
-001f59 9ae2 sbi EECR,EEMPE
-001f5a 9ae1 sbi EECR,EEPE
-
-001f5b 9508 ret
- .if WANT_UNIFIED == 1
- .endif
- .include "words/fetch-e.asm"
-
- ; Memory
- ; read 1 cell from eeprom
- VE_FETCHE:
-001f5c ff02 .dw $ff02
-001f5d 6540 .db "@e"
-001f5e 1f38 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHE
- XT_FETCHE:
-001f5f 1f60 .dw PFA_FETCHE
- PFA_FETCHE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHE1:
-001f60 b72f in_ temp2, SREG
-001f61 94f8 cli
-001f62 01fc movw zl, tosl
-001f63 d006 rcall PFA_FETCHE2
-001f64 b38d in_ tosl, EEDR
-
-001f65 9631 adiw zl,1
-
-001f66 d003 rcall PFA_FETCHE2
-001f67 b39d in_ tosh, EEDR
-001f68 bf2f out_ SREG, temp2
-001f69 cc9b jmp_ DO_NEXT
-
- PFA_FETCHE2:
-001f6a 99e1 sbic EECR, EEPE
-001f6b cffe rjmp PFA_FETCHE2
-
-001f6c bbff out_ EEARH,zh
-001f6d bbee out_ EEARL,zl
-
-001f6e 9ae0 sbi EECR,EERE
-001f6f 9508 ret
-
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store-i.asm"
-
- ; System Value
- ; Deferred action to write a single 16bit cell to flash
- VE_STOREI:
-001f70 ff02 .dw $ff02
-001f71 6921 .db "!i"
-001f72 1f5c .dw VE_HEAD
- .set VE_HEAD = VE_STOREI
- XT_STOREI:
-001f73 0c9a .dw PFA_DODEFER1
- PFA_STOREI:
-001f74 005c .dw EE_STOREI
-001f75 0c3b .dw XT_EDEFERFETCH
-001f76 0c45 .dw XT_EDEFERSTORE
- .if FLASHEND > $10000
- .else
- .include "words/store-i_nrww.asm"
-
- ; Memory
- ; writes n to flash memory using assembly code (code to be placed in boot loader section)
- VE_DO_STOREI_NRWW:
-001f77 ff09 .dw $ff09
-001f78 2128
-001f79 2d69
-001f7a 726e
-001f7b 7777
-001f7c 0029 .db "(!i-nrww)",0
-001f7d 1f70 .dw VE_HEAD
- .set VE_HEAD = VE_DO_STOREI_NRWW
- XT_DO_STOREI:
-001f7e 1f7f .dw PFA_DO_STOREI_NRWW
- PFA_DO_STOREI_NRWW:
- ; store status register
-001f7f b71f in temp1,SREG
-001f80 931f push temp1
-001f81 94f8 cli
-
-001f82 019c movw temp2, tosl ; save the (word) address
-001f83 9189
-001f84 9199 loadtos ; get the new value for the flash cell
-001f85 93af push xl
-001f86 93bf push xh
-001f87 93cf push yl
-001f88 93df push yh
-001f89 d009 rcall DO_STOREI_atmega
-001f8a 91df pop yh
-001f8b 91cf pop yl
-001f8c 91bf pop xh
-001f8d 91af pop xl
- ; finally clear the stack
-001f8e 9189
-001f8f 9199 loadtos
-001f90 911f pop temp1
- ; restore status register (and interrupt enable flag)
-001f91 bf1f out SREG,temp1
-
-001f92 cc72 jmp_ DO_NEXT
-
- ;
- DO_STOREI_atmega:
- ; write data to temp page buffer
- ; use the values in tosl/tosh at the
- ; appropiate place
-001f93 d010 rcall pageload
-
- ; erase page if needed
- ; it is needed if a bit goes from 0 to 1
-001f94 94e0 com temp4
-001f95 94f0 com temp5
-001f96 218e and tosl, temp4
-001f97 219f and tosh, temp5
-001f98 2b98 or tosh, tosl
-001f99 f019 breq DO_STOREI_writepage
-001f9a 01f9 movw zl, temp2
-001f9b e002 ldi temp0,(1<<PGERS)
-001f9c d020 rcall dospm
-
- DO_STOREI_writepage:
- ; write page
-001f9d 01f9 movw zl, temp2
-001f9e e004 ldi temp0,(1<<PGWRT)
-001f9f d01d rcall dospm
-
- ; reenable RWW section
-001fa0 01f9 movw zl, temp2
-001fa1 e100 ldi temp0,(1<<RWWSRE)
-001fa2 d01a rcall dospm
-001fa3 9508 ret
-
- ; load the desired page
- .equ pagemask = ~ ( PAGESIZE - 1 )
- pageload:
-001fa4 01f9 movw zl, temp2
- ; get the beginning of page
-001fa5 7ce0 andi zl,low(pagemask)
-001fa6 7fff andi zh,high(pagemask)
-001fa7 01ef movw y, z
- ; loop counter (in words)
-001fa8 e4a0 ldi xl,low(pagesize)
-001fa9 e0b0 ldi xh,high(pagesize)
- pageload_loop:
- ; we need the current flash value anyways
-001faa 01fe movw z, y
-001fab 0fee
-001fac 1fff
-001fad 9145
-001fae 9155 readflashcell temp6, temp7 ; destroys Z
- ; now check: if Z points to the same cell as temp2/3, we want the new data
-001faf 01fe movw z, y
-001fb0 17e2 cp zl, temp2
-001fb1 07f3 cpc zh, temp3
-001fb2 f011 breq pageload_newdata
-001fb3 010a movw r0, temp6
-001fb4 c002 rjmp pageload_cont
- pageload_newdata:
-001fb5 017a movw temp4, temp6
-001fb6 010c movw r0, tosl
- pageload_cont:
-001fb7 2700 clr temp0
-001fb8 d004 rcall dospm
-001fb9 9621 adiw y, 1
-001fba 9711 sbiw x, 1
-001fbb f771 brne pageload_loop
-
- pageload_done:
-001fbc 9508 ret
-
-
- ;; dospm
- ;;
- ;; execute spm instruction
- ;; temp0 holds the value for SPMCR
-
- dospm:
- dospm_wait_ee:
-001fbd 99e1 sbic EECR, EEPE
-001fbe cffe rjmp dospm_wait_ee
- dospm_wait_spm:
-001fbf b717 in_ temp1, SPMCSR
-001fc0 fd10 sbrc temp1, SPMEN
-001fc1 cffd rjmp dospm_wait_spm
-
- ; turn the word addres into a byte address
-001fc2 0fee
-001fc3 1fff writeflashcell
- ; execute spm
-001fc4 6001 ori temp0, (1<<SPMEN)
-001fc5 bf07 out_ SPMCSR,temp0
-001fc6 95e8 spm
-001fc7 9508 ret
- .endif
- .include "words/fetch-i.asm"
-
- ; Memory
- ; read 1 cell from flash
- VE_FETCHI:
-001fc8 ff02 .dw $ff02
-001fc9 6940 .db "@i"
-001fca 1f77 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHI
- XT_FETCHI:
-001fcb 1fcc .dw PFA_FETCHI
- PFA_FETCHI:
-001fcc 01fc movw zl, tosl
-001fcd 0fee
-001fce 1fff
-001fcf 9185
-001fd0 9195 readflashcell tosl,tosh
-001fd1 cc33 jmp_ DO_NEXT
-
- .if AMFORTH_NRWW_SIZE>8000
- .elif AMFORTH_NRWW_SIZE>4000
- .elif AMFORTH_NRWW_SIZE>2000
- .include "dict/core_2k.inc"
-
- .else
- .endif
- ; now colon words
- ;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/2literal.asm"
-
- ; Compiler
- ; compile a cell pair literal in colon definitions
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2LITERAL:
-001fd2 0008 .dw $0008
-001fd3 6c32
-001fd4 7469
-001fd5 7265
-001fd6 6c61 .db "2literal"
-001fd7 1fc8 .dw VE_HEAD
- .set VE_HEAD = VE_2LITERAL
- XT_2LITERAL:
-001fd8 1c01 .dw DO_COLON
- PFA_2LITERAL:
- .endif
-001fd9 1cc4 .dw XT_SWAP
-001fda 02c4 .dw XT_LITERAL
-001fdb 02c4 .dw XT_LITERAL
-001fdc 1c20 .dw XT_EXIT
- .include "words/equal.asm"
-
- ; Compare
- ; compares two values for equality
- VE_EQUAL:
-001fdd ff01 .dw $ff01
-001fde 003d .db "=",0
-001fdf 1fd2 .dw VE_HEAD
- .set VE_HEAD = VE_EQUAL
- XT_EQUAL:
-001fe0 1c01 .dw DO_COLON
- PFA_EQUAL:
-001fe1 1d93 .dw XT_MINUS
-001fe2 1d1a .dw XT_ZEROEQUAL
-001fe3 1c20 .dw XT_EXIT
- .include "words/num-constants.asm"
-
- .endif
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ONE:
-001fe4 ff01 .dw $ff01
-001fe5 0031 .db "1",0
-001fe6 1fdd .dw VE_HEAD
- .set VE_HEAD = VE_ONE
- XT_ONE:
-001fe7 1c48 .dw PFA_DOVARIABLE
- PFA_ONE:
- .endif
-001fe8 0001 .DW 1
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TWO:
-001fe9 ff01 .dw $ff01
-001fea 0032 .db "2",0
-001feb 1fe4 .dw VE_HEAD
- .set VE_HEAD = VE_TWO
- XT_TWO:
-001fec 1c48 .dw PFA_DOVARIABLE
- PFA_TWO:
- .endif
-001fed 0002 .DW 2
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MINUSONE:
-001fee ff02 .dw $ff02
-001fef 312d .db "-1"
-001ff0 1fe9 .dw VE_HEAD
- .set VE_HEAD = VE_MINUSONE
- XT_MINUSONE:
-001ff1 1c48 .dw PFA_DOVARIABLE
- PFA_MINUSONE:
- .endif
-001ff2 ffff .DW -1
- .include "dict_appl_core.inc"
-
- ; do not delete it!
-
- .set flashlast = pc
- .if (pc>FLASHEND)
- .endif
-
- .dseg
- ; define a label for the 1st free ram address
- HERESTART:
- .eseg
- .include "amforth-eeprom.inc"
-00002a ff ff
- ; some configs
-00002c 02 0f CFG_DP: .dw DPSTART ; Dictionary Pointer
-00002e 1d 01 EE_HERE: .dw HERESTART ; Memory Allocation
-000030 84 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation
-000032 15 05 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope
-000034 52 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set
- ; LEAVE stack is between data stack and return stack.
-000036 10 04 CFG_LP0: .dw stackstart+1
-000038 54 0e CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY
-00003a b7 05 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries
-00003c 3e 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist
-00003e ee 1f CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist
- CFG_ORDERLISTLEN:
-000040 01 00 .dw 1
- CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries
-000042 3e 00 .dw CFG_FORTHWORDLIST ; get/set-order
-000044 .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used
- CFG_RECOGNIZERLISTLEN:
-000052 02 00 .dw 2
- CFG_RECOGNIZERLIST:
-000054 ab 0b .dw XT_REC_FIND
-000056 97 0b .dw XT_REC_NUM
-000058 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used
-
- EE_STOREI:
-00005c 7e 1f .dw XT_DO_STOREI ; Store a cell into flash
-
- ; MARKER saves everything up to here. Nothing beyond gets saved
- EE_MARKER:
-00005e 5e 00 .dw EE_MARKER
-
- ; default user area
- EE_INITUSER:
-000060 00 00 .dw 0 ; USER_STATE
-000062 00 00 .dw 0 ; USER_FOLLOWER
-000064 5f 04 .dw rstackstart ; USER_RP
-000066 0f 04 .dw stackstart ; USER_SP0
-000068 0f 04 .dw stackstart ; USER_SP
-
-00006a 00 00 .dw 0 ; USER_HANDLER
-00006c 0a 00 .dw 10 ; USER_BASE
-
-00006e 98 00 .dw XT_TX ; USER_EMIT
-000070 a6 00 .dw XT_TXQ ; USER_EMITQ
-000072 6d 00 .dw XT_RX ; USER_KEY
-000074 88 00 .dw XT_RXQ ; USER_KEYQ
-000076 ac 0d .dw XT_SOURCETIB ; USER_SOURCE
-000078 00 00 .dw 0 ; USER_G_IN
-00007a 99 0d .dw XT_REFILLTIB ; USER_REFILL
-00007c 99 0a .dw XT_DEFAULT_PROMPTOK
-00007e b8 0a .dw XT_DEFAULT_PROMPTERROR
-000080 a8 0a .dw XT_DEFAULT_PROMPTREADY
-
- ; calculate baud rate error
- .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; smart round
- .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; effective baud rate
- .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; error in pro mille
-
- .if ((BAUD_ERROR>BAUD_MAXERROR) || (BAUD_ERROR<-BAUD_MAXERROR))
- .endif
- EE_UBRRVAL:
-000082 0c 00 .dw UBRR_VAL ; BAUDRATE
- ; 1st free address in EEPROM.
- EHERESTART:
- .cseg
-
-
-RESOURCE USE INFORMATION
-------------------------
-
-Notice:
-The register and instruction counts are symbol table hit counts,
-and hence implicitly used resources are not counted, eg, the
-'lpm' instruction without operands implicitly uses r0 and z,
-none of which are counted.
-
-x,y,z are separate entities in the symbol table and are
-counted separately from r26..r31 here.
-
-.dseg memory usage only counts static data declared with .byte
-
-"ATmega16" register use summary:
-r0 : 25 r1 : 5 r2 : 10 r3 : 12 r4 : 4 r5 : 1 r6 : 0 r7 : 0
-r8 : 0 r9 : 0 r10: 1 r11: 6 r12: 0 r13: 0 r14: 22 r15: 20
-r16: 85 r17: 61 r18: 61 r19: 37 r20: 13 r21: 11 r22: 11 r23: 3
-r24: 203 r25: 139 r26: 28 r27: 17 r28: 7 r29: 4 r30: 85 r31: 47
-x : 4 y : 209 z : 50
-Registers used: 29 out of 35 (82.9%)
-
-"ATmega16" instruction use summary:
-.lds : 0 .sts : 0 adc : 22 add : 17 adiw : 17 and : 4
-andi : 3 asr : 2 bclr : 0 bld : 0 brbc : 2 brbs : 7
-brcc : 3 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0
-brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3
-brne : 20 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
-brvs : 2 bset : 0 bst : 0 call : 2 cbi : 7 cbr : 1
-clc : 2 clh : 0 cli : 7 cln : 0 clr : 14 cls : 0
-clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10
-cpi : 2 cpse : 0 dec : 8 eor : 3 fmul : 0 fmuls : 0
-fmulsu: 0 icall : 0 ijmp : 1 in : 25 inc : 3 jmp : 25
-ld : 141 ldd : 4 ldi : 41 lds : 1 lpm : 16 lsl : 14
-lsr : 2 mov : 14 movw : 70 mul : 5 muls : 1 mulsu : 2
-neg : 0 nop : 0 or : 9 ori : 2 out : 22 pop : 45
-push : 39 rcall : 34 ret : 7 reti : 1 rjmp : 92 rol : 23
-ror : 6 sbc : 9 sbci : 3 sbi : 8 sbic : 3 sbis : 0
-sbiw : 16 sbr : 0 sbrc : 5 sbrs : 7 sec : 1 seh : 0
-sei : 1 sen : 0 ser : 4 ses : 0 set : 0 sev : 0
-sez : 0 sleep : 0 spm : 2 st : 77 std : 8 sts : 1
-sub : 6 subi : 3 swap : 0 tst : 0 wdr : 0
-Instructions used: 72 out of 113 (63.7%)
-
-"ATmega16" memory use summary [bytes]:
-Segment Begin End Code Data Used Size Use%
----------------------------------------------------------------
-[.cseg] 0x000000 0x003fe6 2044 9642 11686 16384 71.3%
-[.dseg] 0x000060 0x00011d 0 189 189 1024 18.5%
-[.eseg] 0x000000 0x000084 0 132 132 512 25.8%
-
-Assembly complete, 0 errors, 8 warnings
diff --git a/amforth-6.5/appl/eval-pollin/p16-8.map b/amforth-6.5/appl/eval-pollin/p16-8.map
deleted file mode 100644
index 8e30021..0000000
--- a/amforth-6.5/appl/eval-pollin/p16-8.map
+++ /dev/null
@@ -1,1961 +0,0 @@
-
-AVRASM ver. 2.1.52 p16-8.asm Sun Apr 30 20:10:14 2017
-
-
-SET DICT_COMPILER2 00000001
-SET cpu_msp430 00000000
-SET cpu_avr8 00000001
-SET USER_STATE 00000000
-SET USER_FOLLOWER 00000002
-SET USER_RP 00000004
-SET USER_SP0 00000006
-SET USER_SP 00000008
-SET USER_HANDLER 0000000a
-SET USER_BASE 0000000c
-SET USER_EMIT 0000000e
-SET USER_EMITQ 00000010
-SET USER_KEY 00000012
-SET USER_KEYQ 00000014
-SET USER_SOURCE 00000016
-SET USER_TO_IN 00000018
-SET USER_REFILL 0000001a
-SET USER_P_OK 0000001c
-SET USER_P_ERR 0000001e
-SET USER_P_RDY 00000020
-SET SYSUSERSIZE 00000022
-DEF zerol r2
-DEF zeroh r3
-DEF upl r4
-DEF uph r5
-DEF al r6
-DEF ah r7
-DEF bl r8
-DEF bh r9
-DEF mcu_boot r10
-DEF isrflag r11
-DEF temp4 r14
-DEF temp5 r15
-DEF temp0 r16
-DEF temp1 r17
-DEF temp2 r18
-DEF temp3 r19
-DEF temp6 r20
-DEF temp7 r21
-DEF tosl r24
-DEF tosh r25
-DEF wl r22
-DEF wh r23
-EQU SIGNATURE_000 0000001e
-EQU SIGNATURE_001 00000094
-EQU SIGNATURE_002 00000003
-EQU SREG 0000003f
-EQU SPL 0000003d
-EQU SPH 0000003e
-EQU OCR0 0000003c
-EQU GICR 0000003b
-EQU GIFR 0000003a
-EQU TIMSK 00000039
-EQU TIFR 00000038
-EQU SPMCSR 00000037
-EQU TWCR 00000036
-EQU MCUCR 00000035
-EQU MCUCSR 00000034
-EQU TCCR0 00000033
-EQU TCNT0 00000032
-EQU OSCCAL 00000031
-EQU OCDR 00000031
-EQU SFIOR 00000030
-EQU TCCR1A 0000002f
-EQU TCCR1B 0000002e
-EQU TCNT1L 0000002c
-EQU TCNT1H 0000002d
-EQU OCR1AL 0000002a
-EQU OCR1AH 0000002b
-EQU OCR1BL 00000028
-EQU OCR1BH 00000029
-EQU ICR1L 00000026
-EQU ICR1H 00000027
-EQU TCCR2 00000025
-EQU TCNT2 00000024
-EQU OCR2 00000023
-EQU ASSR 00000022
-EQU WDTCR 00000021
-EQU UBRRH 00000020
-EQU UCSRC 00000020
-EQU EEARL 0000001e
-EQU EEARH 0000001f
-EQU EEDR 0000001d
-EQU EECR 0000001c
-EQU PORTA 0000001b
-EQU DDRA 0000001a
-EQU PINA 00000019
-EQU PORTB 00000018
-EQU DDRB 00000017
-EQU PINB 00000016
-EQU PORTC 00000015
-EQU DDRC 00000014
-EQU PINC 00000013
-EQU PORTD 00000012
-EQU DDRD 00000011
-EQU PIND 00000010
-EQU SPDR 0000000f
-EQU SPSR 0000000e
-EQU SPCR 0000000d
-EQU UDR 0000000c
-EQU UCSRA 0000000b
-EQU UCSRB 0000000a
-EQU UBRRL 00000009
-EQU ACSR 00000008
-EQU ADMUX 00000007
-EQU ADCSRA 00000006
-EQU ADCH 00000005
-EQU ADCL 00000004
-EQU TWDR 00000003
-EQU TWAR 00000002
-EQU TWSR 00000001
-EQU TWBR 00000000
-EQU CS00 00000000
-EQU CS01 00000001
-EQU CS02 00000002
-EQU WGM01 00000003
-EQU CTC0 00000003
-EQU COM00 00000004
-EQU COM01 00000005
-EQU WGM00 00000006
-EQU PWM0 00000006
-EQU FOC0 00000007
-EQU TCNT0_0 00000000
-EQU TCNT0_1 00000001
-EQU TCNT0_2 00000002
-EQU TCNT0_3 00000003
-EQU TCNT0_4 00000004
-EQU TCNT0_5 00000005
-EQU TCNT0_6 00000006
-EQU TCNT0_7 00000007
-EQU OCR0_0 00000000
-EQU OCR0_1 00000001
-EQU OCR0_2 00000002
-EQU OCR0_3 00000003
-EQU OCR0_4 00000004
-EQU OCR0_5 00000005
-EQU OCR0_6 00000006
-EQU OCR0_7 00000007
-EQU TOIE0 00000000
-EQU OCIE0 00000001
-EQU TOV0 00000000
-EQU OCF0 00000001
-EQU PSR10 00000000
-EQU TOIE1 00000002
-EQU OCIE1B 00000003
-EQU OCIE1A 00000004
-EQU TICIE1 00000005
-EQU TOV1 00000002
-EQU OCF1B 00000003
-EQU OCF1A 00000004
-EQU ICF1 00000005
-EQU WGM10 00000000
-EQU PWM10 00000000
-EQU WGM11 00000001
-EQU PWM11 00000001
-EQU FOC1B 00000002
-EQU FOC1A 00000003
-EQU COM1B0 00000004
-EQU COM1B1 00000005
-EQU COM1A0 00000006
-EQU COM1A1 00000007
-EQU CS10 00000000
-EQU CS11 00000001
-EQU CS12 00000002
-EQU WGM12 00000003
-EQU CTC10 00000003
-EQU CTC1 00000003
-EQU WGM13 00000004
-EQU CTC11 00000004
-EQU ICES1 00000006
-EQU ICNC1 00000007
-EQU GIMSK 0000003b
-EQU IVCE 00000000
-EQU IVSEL 00000001
-EQU INT2 00000005
-EQU INT0 00000006
-EQU INT1 00000007
-EQU INTF2 00000005
-EQU INTF0 00000006
-EQU INTF1 00000007
-EQU ISC00 00000000
-EQU ISC01 00000001
-EQU ISC10 00000002
-EQU ISC11 00000003
-EQU ISC2 00000006
-EQU EEDR0 00000000
-EQU EEDR1 00000001
-EQU EEDR2 00000002
-EQU EEDR3 00000003
-EQU EEDR4 00000004
-EQU EEDR5 00000005
-EQU EEDR6 00000006
-EQU EEDR7 00000007
-EQU EERE 00000000
-EQU EEWE 00000001
-EQU EEMWE 00000002
-EQU EEWEE 00000002
-EQU EERIE 00000003
-EQU SREG_C 00000000
-EQU SREG_Z 00000001
-EQU SREG_N 00000002
-EQU SREG_V 00000003
-EQU SREG_S 00000004
-EQU SREG_H 00000005
-EQU SREG_T 00000006
-EQU SREG_I 00000007
-EQU SM0 00000004
-EQU SM1 00000005
-EQU SE 00000006
-EQU SM2 00000007
-EQU MCUSR 00000034
-EQU PORF 00000000
-EQU EXTRF 00000001
-EQU EXTREF 00000001
-EQU BORF 00000002
-EQU WDRF 00000003
-EQU JTRF 00000004
-EQU JTD 00000007
-EQU CAL0 00000000
-EQU CAL1 00000001
-EQU CAL2 00000002
-EQU CAL3 00000003
-EQU CAL4 00000004
-EQU CAL5 00000005
-EQU CAL6 00000006
-EQU CAL7 00000007
-EQU PSR2 00000001
-EQU PUD 00000002
-EQU TOIE2 00000006
-EQU OCIE2 00000007
-EQU TOV2 00000006
-EQU OCF2 00000007
-EQU CS20 00000000
-EQU CS21 00000001
-EQU CS22 00000002
-EQU WGM21 00000003
-EQU CTC2 00000003
-EQU COM20 00000004
-EQU COM21 00000005
-EQU WGM20 00000006
-EQU PWM2 00000006
-EQU FOC2 00000007
-EQU TCNT2_0 00000000
-EQU TCNT2_1 00000001
-EQU TCNT2_2 00000002
-EQU TCNT2_3 00000003
-EQU TCNT2_4 00000004
-EQU TCNT2_5 00000005
-EQU TCNT2_6 00000006
-EQU TCNT2_7 00000007
-EQU OCR2_0 00000000
-EQU OCR2_1 00000001
-EQU OCR2_2 00000002
-EQU OCR2_3 00000003
-EQU OCR2_4 00000004
-EQU OCR2_5 00000005
-EQU OCR2_6 00000006
-EQU OCR2_7 00000007
-EQU TCR2UB 00000000
-EQU OCR2UB 00000001
-EQU TCN2UB 00000002
-EQU AS2 00000003
-EQU SPDR0 00000000
-EQU SPDR1 00000001
-EQU SPDR2 00000002
-EQU SPDR3 00000003
-EQU SPDR4 00000004
-EQU SPDR5 00000005
-EQU SPDR6 00000006
-EQU SPDR7 00000007
-EQU SPI2X 00000000
-EQU WCOL 00000006
-EQU SPIF 00000007
-EQU SPR0 00000000
-EQU SPR1 00000001
-EQU CPHA 00000002
-EQU CPOL 00000003
-EQU MSTR 00000004
-EQU DORD 00000005
-EQU SPE 00000006
-EQU SPIE 00000007
-EQU UDR0 00000000
-EQU UDR1 00000001
-EQU UDR2 00000002
-EQU UDR3 00000003
-EQU UDR4 00000004
-EQU UDR5 00000005
-EQU UDR6 00000006
-EQU UDR7 00000007
-EQU USR 0000000b
-EQU MPCM 00000000
-EQU U2X 00000001
-EQU UPE 00000002
-EQU PE 00000002
-EQU DOR 00000003
-EQU FE 00000004
-EQU UDRE 00000005
-EQU TXC 00000006
-EQU RXC 00000007
-EQU UCR 0000000a
-EQU TXB8 00000000
-EQU RXB8 00000001
-EQU UCSZ2 00000002
-EQU CHR9 00000002
-EQU TXEN 00000003
-EQU RXEN 00000004
-EQU UDRIE 00000005
-EQU TXCIE 00000006
-EQU RXCIE 00000007
-EQU UCPOL 00000000
-EQU UCSZ0 00000001
-EQU UCSZ1 00000002
-EQU USBS 00000003
-EQU UPM0 00000004
-EQU UPM1 00000005
-EQU UMSEL 00000006
-EQU URSEL 00000007
-EQU UBRRHI 00000020
-EQU I2BR 00000000
-EQU TWBR0 00000000
-EQU TWBR1 00000001
-EQU TWBR2 00000002
-EQU TWBR3 00000003
-EQU TWBR4 00000004
-EQU TWBR5 00000005
-EQU TWBR6 00000006
-EQU TWBR7 00000007
-EQU I2CR 00000036
-EQU TWIE 00000000
-EQU I2IE 00000000
-EQU TWEN 00000002
-EQU I2EN 00000002
-EQU ENI2C 00000002
-EQU TWWC 00000003
-EQU I2WC 00000003
-EQU TWSTO 00000004
-EQU I2STO 00000004
-EQU TWSTA 00000005
-EQU I2STA 00000005
-EQU TWEA 00000006
-EQU I2EA 00000006
-EQU TWINT 00000007
-EQU I2INT 00000007
-EQU I2SR 00000001
-EQU TWPS0 00000000
-EQU TWS0 00000000
-EQU I2GCE 00000000
-EQU TWPS1 00000001
-EQU TWS1 00000001
-EQU TWS3 00000003
-EQU I2S3 00000003
-EQU TWS4 00000004
-EQU I2S4 00000004
-EQU TWS5 00000005
-EQU I2S5 00000005
-EQU TWS6 00000006
-EQU I2S6 00000006
-EQU TWS7 00000007
-EQU I2S7 00000007
-EQU I2DR 00000003
-EQU TWD0 00000000
-EQU TWD1 00000001
-EQU TWD2 00000002
-EQU TWD3 00000003
-EQU TWD4 00000004
-EQU TWD5 00000005
-EQU TWD6 00000006
-EQU TWD7 00000007
-EQU I2AR 00000002
-EQU TWGCE 00000000
-EQU TWA0 00000001
-EQU TWA1 00000002
-EQU TWA2 00000003
-EQU TWA3 00000004
-EQU TWA4 00000005
-EQU TWA5 00000006
-EQU TWA6 00000007
-EQU ACME 00000003
-EQU ACIS0 00000000
-EQU ACIS1 00000001
-EQU ACIC 00000002
-EQU ACIE 00000003
-EQU ACI 00000004
-EQU ACO 00000005
-EQU ACBG 00000006
-EQU ACD 00000007
-EQU MUX0 00000000
-EQU MUX1 00000001
-EQU MUX2 00000002
-EQU MUX3 00000003
-EQU MUX4 00000004
-EQU ADLAR 00000005
-EQU REFS0 00000006
-EQU REFS1 00000007
-EQU ADCSR 00000006
-EQU ADPS0 00000000
-EQU ADPS1 00000001
-EQU ADPS2 00000002
-EQU ADIE 00000003
-EQU ADIF 00000004
-EQU ADATE 00000005
-EQU ADFR 00000005
-EQU ADSC 00000006
-EQU ADEN 00000007
-EQU ADCH0 00000000
-EQU ADCH1 00000001
-EQU ADCH2 00000002
-EQU ADCH3 00000003
-EQU ADCH4 00000004
-EQU ADCH5 00000005
-EQU ADCH6 00000006
-EQU ADCH7 00000007
-EQU ADCL0 00000000
-EQU ADCL1 00000001
-EQU ADCL2 00000002
-EQU ADCL3 00000003
-EQU ADCL4 00000004
-EQU ADCL5 00000005
-EQU ADCL6 00000006
-EQU ADCL7 00000007
-EQU ADTS0 00000005
-EQU ADTS1 00000006
-EQU ADTS2 00000007
-EQU OCDR0 00000000
-EQU OCDR1 00000001
-EQU OCDR2 00000002
-EQU OCDR3 00000003
-EQU OCDR4 00000004
-EQU OCDR5 00000005
-EQU OCDR6 00000006
-EQU OCDR7 00000007
-EQU IDRD 00000007
-EQU SPMCR 00000037
-EQU SPMEN 00000000
-EQU PGERS 00000001
-EQU PGWRT 00000002
-EQU BLBSET 00000003
-EQU RWWSRE 00000004
-EQU ASRE 00000004
-EQU RWWSB 00000006
-EQU ASB 00000006
-EQU SPMIE 00000007
-EQU PORTA0 00000000
-EQU PA0 00000000
-EQU PORTA1 00000001
-EQU PA1 00000001
-EQU PORTA2 00000002
-EQU PA2 00000002
-EQU PORTA3 00000003
-EQU PA3 00000003
-EQU PORTA4 00000004
-EQU PA4 00000004
-EQU PORTA5 00000005
-EQU PA5 00000005
-EQU PORTA6 00000006
-EQU PA6 00000006
-EQU PORTA7 00000007
-EQU PA7 00000007
-EQU DDA0 00000000
-EQU DDA1 00000001
-EQU DDA2 00000002
-EQU DDA3 00000003
-EQU DDA4 00000004
-EQU DDA5 00000005
-EQU DDA6 00000006
-EQU DDA7 00000007
-EQU PINA0 00000000
-EQU PINA1 00000001
-EQU PINA2 00000002
-EQU PINA3 00000003
-EQU PINA4 00000004
-EQU PINA5 00000005
-EQU PINA6 00000006
-EQU PINA7 00000007
-EQU PORTB0 00000000
-EQU PB0 00000000
-EQU PORTB1 00000001
-EQU PB1 00000001
-EQU PORTB2 00000002
-EQU PB2 00000002
-EQU PORTB3 00000003
-EQU PB3 00000003
-EQU PORTB4 00000004
-EQU PB4 00000004
-EQU PORTB5 00000005
-EQU PB5 00000005
-EQU PORTB6 00000006
-EQU PB6 00000006
-EQU PORTB7 00000007
-EQU PB7 00000007
-EQU DDB0 00000000
-EQU DDB1 00000001
-EQU DDB2 00000002
-EQU DDB3 00000003
-EQU DDB4 00000004
-EQU DDB5 00000005
-EQU DDB6 00000006
-EQU DDB7 00000007
-EQU PINB0 00000000
-EQU PINB1 00000001
-EQU PINB2 00000002
-EQU PINB3 00000003
-EQU PINB4 00000004
-EQU PINB5 00000005
-EQU PINB6 00000006
-EQU PINB7 00000007
-EQU PORTC0 00000000
-EQU PC0 00000000
-EQU PORTC1 00000001
-EQU PC1 00000001
-EQU PORTC2 00000002
-EQU PC2 00000002
-EQU PORTC3 00000003
-EQU PC3 00000003
-EQU PORTC4 00000004
-EQU PC4 00000004
-EQU PORTC5 00000005
-EQU PC5 00000005
-EQU PORTC6 00000006
-EQU PC6 00000006
-EQU PORTC7 00000007
-EQU PC7 00000007
-EQU DDC0 00000000
-EQU DDC1 00000001
-EQU DDC2 00000002
-EQU DDC3 00000003
-EQU DDC4 00000004
-EQU DDC5 00000005
-EQU DDC6 00000006
-EQU DDC7 00000007
-EQU PINC0 00000000
-EQU PINC1 00000001
-EQU PINC2 00000002
-EQU PINC3 00000003
-EQU PINC4 00000004
-EQU PINC5 00000005
-EQU PINC6 00000006
-EQU PINC7 00000007
-EQU PORTD0 00000000
-EQU PD0 00000000
-EQU PORTD1 00000001
-EQU PD1 00000001
-EQU PORTD2 00000002
-EQU PD2 00000002
-EQU PORTD3 00000003
-EQU PD3 00000003
-EQU PORTD4 00000004
-EQU PD4 00000004
-EQU PORTD5 00000005
-EQU PD5 00000005
-EQU PORTD6 00000006
-EQU PD6 00000006
-EQU PORTD7 00000007
-EQU PD7 00000007
-EQU DDD0 00000000
-EQU DDD1 00000001
-EQU DDD2 00000002
-EQU DDD3 00000003
-EQU DDD4 00000004
-EQU DDD5 00000005
-EQU DDD6 00000006
-EQU DDD7 00000007
-EQU PIND0 00000000
-EQU PIND1 00000001
-EQU PIND2 00000002
-EQU PIND3 00000003
-EQU PIND4 00000004
-EQU PIND5 00000005
-EQU PIND6 00000006
-EQU PIND7 00000007
-EQU WDP0 00000000
-EQU WDP1 00000001
-EQU WDP2 00000002
-EQU WDE 00000003
-EQU WDTOE 00000004
-EQU WDDE 00000004
-EQU LB1 00000000
-EQU LB2 00000001
-EQU BLB01 00000002
-EQU BLB02 00000003
-EQU BLB11 00000004
-EQU BLB12 00000005
-EQU CKSEL0 00000000
-EQU CKSEL1 00000001
-EQU CKSEL2 00000002
-EQU CKSEL3 00000003
-EQU SUT0 00000004
-EQU SUT1 00000005
-EQU BODEN 00000006
-EQU BODLEVEL 00000007
-EQU BOOTRST 00000000
-EQU BOOTSZ0 00000001
-EQU BOOTSZ1 00000002
-EQU EESAVE 00000003
-EQU CKOPT 00000004
-EQU SPIEN 00000005
-EQU JTAGEN 00000006
-EQU OCDEN 00000007
-DEF XH r27
-DEF XL r26
-DEF YH r29
-DEF YL r28
-DEF ZH r31
-DEF ZL r30
-EQU FLASHEND 00001fff
-EQU IOEND 0000003f
-EQU SRAM_START 00000060
-EQU SRAM_SIZE 00000400
-EQU RAMEND 0000045f
-EQU XRAMEND 00000000
-EQU E2END 000001ff
-EQU EEPROMEND 000001ff
-EQU EEADRBITS 00000009
-EQU NRWW_START_ADDR 00001c00
-EQU NRWW_STOP_ADDR 00001fff
-EQU RWW_START_ADDR 00000000
-EQU RWW_STOP_ADDR 00001bff
-EQU PAGESIZE 00000040
-EQU FIRSTBOOTSTART 00001f80
-EQU SECONDBOOTSTART 00001f00
-EQU THIRDBOOTSTART 00001e00
-EQU FOURTHBOOTSTART 00001c00
-EQU SMALLBOOTSTART 00001f80
-EQU LARGEBOOTSTART 00001c00
-EQU INT0addr 00000002
-EQU INT1addr 00000004
-EQU OC2addr 00000006
-EQU OVF2addr 00000008
-EQU ICP1addr 0000000a
-EQU OC1Aaddr 0000000c
-EQU OC1Baddr 0000000e
-EQU OVF1addr 00000010
-EQU OVF0addr 00000012
-EQU SPIaddr 00000014
-EQU URXCaddr 00000016
-EQU UDREaddr 00000018
-EQU UTXCaddr 0000001a
-EQU ADCCaddr 0000001c
-EQU ERDYaddr 0000001e
-EQU ACIaddr 00000020
-EQU TWIaddr 00000022
-EQU INT2addr 00000024
-EQU OC0addr 00000026
-EQU SPMRaddr 00000028
-EQU INT_VECTORS_SIZE 0000002a
-EQU ramstart 00000060
-EQU CELLSIZE 00000002
-SET WANT_TIMER_COUNTER_0 00000000
-SET WANT_TIMER_COUNTER_1 00000000
-SET WANT_EXTERNAL_INTERRUPT 00000000
-SET WANT_EEPROM 00000000
-SET WANT_CPU 00000000
-SET WANT_TIMER_COUNTER_2 00000000
-SET WANT_SPI 00000000
-SET WANT_USART 00000000
-SET WANT_TWI 00000000
-SET WANT_ANALOG_COMPARATOR 00000000
-SET WANT_AD_CONVERTER 00000000
-SET WANT_JTAG 00000000
-SET WANT_BOOT_LOAD 00000000
-SET WANT_PORTA 00000000
-SET WANT_PORTB 00000000
-SET WANT_PORTC 00000000
-SET WANT_PORTD 00000000
-SET WANT_WATCHDOG 00000000
-EQU intvecsize 00000002
-EQU pclen 00000002
-CSEG isr 0000011e
-EQU INTVECTORS 00000015
-EQU EEPE 00000001
-EQU EEMPE 00000002
-CSEG mcu_info 00000029
-CSEG mcu_ramsize 00000029
-CSEG mcu_eepromsize 0000002a
-CSEG mcu_maxdp 0000002b
-CSEG mcu_numints 0000002c
-CSEG mcu_name 0000002d
-SET codestart 00000032
-SET WANT_INTERRUPTS 00000001
-SET WANT_INTERRUPT_COUNTERS 00000000
-SET WANT_ISR_RX 00000001
-SET WANT_IGNORECASE 00000000
-SET WANT_UNIFIED 00000000
-SET TIB_SIZE 0000005a
-SET APPUSERSIZE 0000000a
-SET rstackstart 0000045f
-SET stackstart 0000040f
-SET NUMWORDLISTS 00000008
-SET NUMRECOGNIZERS 00000004
-SET BAUD 00009600
-SET BAUD_MAXERROR 0000001e
-SET VE_HEAD 00001fee
-SET VE_ENVHEAD 000005b7
-SET AMFORTH_RO_SEG 00001c01
-EQU F_CPU 007a1200
-EQU TIMER_INT 00000008
-EQU BAUDRATE_LOW 00000029
-EQU BAUDRATE_HIGH 00000040
-EQU USART_C 00000040
-EQU USART_B 0000002a
-EQU USART_A 0000002b
-EQU USART_DATA 0000002c
-EQU bm_USARTC_en 00000080
-EQU bm_USART_RXRD 00000080
-EQU bm_USART_TXRD 00000020
-EQU bm_ENABLE_TX 00000008
-EQU bm_ENABLE_RX 00000010
-EQU bm_ENABLE_INT_RX 00000080
-EQU bm_ENABLE_INT_TX 00000020
-EQU bm_ASYNC 00000000
-EQU bm_SYNC 00000040
-EQU bm_NO_PARITY 00000000
-EQU bm_EVEN_PARITY 00000020
-EQU bm_ODD_PARITY 00000030
-EQU bm_1STOPBIT 00000000
-EQU bm_2STOPBIT 00000008
-EQU bm_5BIT 00000000
-EQU bm_6BIT 00000002
-EQU bm_7BIT 00000004
-EQU bm_8BIT 00000006
-SET USART_C_VALUE 00000006
-SET USART_B_VALUE 00000098
-EQU usart_rx_size 00000010
-EQU usart_rx_mask 0000000f
-DSEG usart_rx_data 00000060
-DSEG usart_rx_in 00000070
-DSEG usart_rx_out 00000071
-CSEG VE_TO_RXBUF 00000032
-CSEG XT_TO_RXBUF 00000038
-CSEG PFA_rx_tobuf 00000039
-CSEG DO_NEXT 00001c05
-CSEG VE_ISR_RX 00000049
-CSEG XT_ISR_RX 0000004e
-CSEG DO_COLON 00001c01
-CSEG usart_rx_isr 0000004f
-CSEG XT_DOLITERAL 00001c3d
-CSEG XT_CFETCH 00001c98
-CSEG XT_DUP 00001cb1
-CSEG XT_EQUAL 00001fe0
-CSEG XT_DOCONDBRANCH 00001c36
-CSEG usart_rx_isr1 00000059
-CSEG XT_COLD 00000ae0
-CSEG XT_EXIT 00001c20
-CSEG XT_USART_INIT_RX_BUFFER 0000005b
-CSEG PFA_USART_INIT_RX_BUFFER 0000005c
-CSEG XT_INTSTORE 00000213
-CSEG XT_ZERO 00001d54
-CSEG XT_FILL 0000025d
-CSEG VE_RX_BUFFER 00000068
-CSEG XT_RX_BUFFER 0000006d
-CSEG PFA_RX_BUFFER 0000006e
-CSEG XT_RXQ_BUFFER 00000088
-CSEG XT_PLUS 00001d9d
-CSEG XT_SWAP 00001cc4
-CSEG XT_1PLUS 00001e2f
-CSEG XT_AND 00001e13
-CSEG XT_CSTORE 00001c8d
-CSEG VE_RXQ_BUFFER 00000082
-CSEG PFA_RXQ_BUFFER 00000089
-CSEG XT_PAUSE 00000ad8
-CSEG XT_NOTEQUAL 00001d13
-SET XT_RX 0000006d
-SET XT_RXQ 00000088
-SET XT_USART_INIT_RX 0000005b
-CSEG VE_TX_POLL 00000092
-CSEG XT_TX_POLL 00000098
-CSEG PFA_TX_POLL 00000099
-CSEG XT_TXQ_POLL 000000a6
-CSEG VE_TXQ_POLL 000000a0
-CSEG PFA_TXQ_POLL 000000a7
-SET XT_TX 00000098
-SET XT_TXQ 000000a6
-SET XT_USART_INIT_TX 00000000
-CSEG VE_UBRR 000000af
-CSEG XT_UBRR 000000b3
-CSEG PFA_DOVALUE1 00001c6f
-CSEG PFA_UBRR 000000b4
-ESEG EE_UBRRVAL 00000082
-CSEG XT_EDEFERFETCH 00000c3b
-CSEG XT_EDEFERSTORE 00000c45
-CSEG VE_USART 000000b7
-CSEG XT_USART 000000bc
-CSEG PFA_USART 000000bd
-CSEG XT_BYTESWAP 00001ef9
-EQU OW_PORT 00000018
-EQU OW_BIT 00000004
-SET OW_DDR 00000017
-SET OW_PIN 00000016
-CSEG VE_OW_RESET 000000d2
-CSEG XT_OW_RESET 000000d8
-CSEG PFA_OW_RESET 000000d9
-SET cycles 00000000
-SET loop_cycles 000007d0
-CSEG VE_OW_SLOT 000000f6
-CSEG XT_OW_SLOT 000000fc
-CSEG PFA_OW_SLOT 000000fd
-CSEG PFA_OW_SLOT0 0000010a
-SET AMFORTH_NRWW_SIZE 000007fc
-SET corepc 0000011e
-CSEG PFA_COLD 00000ae1
-ESEG intvec 00000000
-DSEG intcnt 00000072
-CSEG VE_MPLUS 00000135
-CSEG XT_MPLUS 00000138
-CSEG PFA_MPLUS 00000139
-CSEG XT_S2D 00000dee
-CSEG XT_DPLUS 0000019c
-CSEG VE_UDSTAR 0000013c
-CSEG XT_UDSTAR 00000140
-CSEG PFA_UDSTAR 00000141
-CSEG XT_TO_R 00001cff
-CSEG XT_UMSTAR 00001de0
-CSEG XT_DROP 00001cd9
-CSEG XT_R_FROM 00001cf6
-CSEG XT_ROT 00001ce1
-CSEG VE_UMAX 0000014b
-CSEG XT_UMAX 0000014f
-CSEG PFA_UMAX 00000150
-CSEG XT_2DUP 000005eb
-CSEG XT_ULESS 00001d5c
-CSEG UMAX1 00000155
-CSEG VE_UMIN 00000157
-CSEG XT_UMIN 0000015b
-CSEG PFA_UMIN 0000015c
-CSEG XT_UGREATER 00001d67
-CSEG UMIN1 00000161
-CSEG XT_IMMEDIATEQ 00000163
-CSEG PFA_IMMEDIATEQ 00000164
-CSEG XT_ZEROEQUAL 00001d1a
-CSEG IMMEDIATEQ1 0000016c
-CSEG XT_ONE 00001fe7
-CSEG XT_TRUE 00001d4b
-CSEG VE_NAME2FLAGS 0000016e
-CSEG XT_NAME2FLAGS 00000175
-CSEG PFA_NAME2FLAGS 00000176
-CSEG XT_FETCHI 00001fcb
-CSEG VE_D2STAR 0000017b
-CSEG XT_D2STAR 0000017f
-CSEG PFA_D2STAR 00000180
-CSEG VE_D2SLASH 0000018a
-CSEG XT_D2SLASH 0000018e
-CSEG PFA_D2SLASH 0000018f
-CSEG VE_DPLUS 00000199
-CSEG PFA_DPLUS 0000019d
-CSEG VE_DMINUS 000001ab
-CSEG XT_DMINUS 000001ae
-CSEG PFA_DMINUS 000001af
-CSEG VE_DINVERT 000001be
-CSEG XT_DINVERT 000001c4
-CSEG PFA_DINVERT 000001c5
-CSEG VE_UDOT 000001cf
-CSEG XT_UDOT 000001d2
-CSEG PFA_UDOT 000001d3
-CSEG XT_UDDOT 000007b1
-CSEG VE_UDOTR 000001d6
-CSEG XT_UDOTR 000001da
-CSEG PFA_UDOTR 000001db
-CSEG XT_UDDOTR 000007ba
-CSEG VE_SHOWWORDLIST 000001df
-CSEG XT_SHOWWORDLIST 000001e8
-CSEG PFA_SHOWWORDLIST 000001e9
-CSEG XT_SHOWWORD 000001ee
-CSEG XT_TRAVERSEWORDLIST 00000cde
-CSEG PFA_SHOWWORD 000001ef
-CSEG XT_NAME2STRING 00000cf9
-CSEG XT_ITYPE 00000827
-CSEG XT_SPACE 00000869
-CSEG VE_WORDS 000001f4
-CSEG XT_WORDS 000001f9
-CSEG PFA_WORDS 000001fa
-ESEG CFG_ORDERLISTLEN 00000040
-CSEG XT_FETCHE 00001f5f
-CSEG VE_INTON 000001ff
-CSEG XT_INTON 00000203
-CSEG PFA_INTON 00000204
-CSEG VE_INTOFF 00000207
-CSEG XT_INTOFF 0000020b
-CSEG PFA_INTOFF 0000020c
-CSEG VE_INTSTORE 0000020f
-CSEG PFA_INTSTORE 00000214
-CSEG XT_STOREE 00001f3b
-CSEG VE_INTFETCH 00000219
-CSEG XT_INTFETCH 0000021d
-CSEG PFA_INTFETCH 0000021e
-CSEG VE_INTTRAP 00000223
-CSEG XT_INTTRAP 00000229
-CSEG PFA_INTTRAP 0000022a
-CSEG XT_ISREXEC 0000022f
-CSEG PFA_ISREXEC 00000230
-CSEG XT_EXECUTE 00001c2a
-CSEG XT_ISREND 00000234
-CSEG PFA_ISREND 00000235
-CSEG PFA_ISREND1 00000238
-CSEG VE_PICK 00000239
-CSEG XT_PICK 0000023d
-CSEG PFA_PICK 0000023e
-CSEG XT_CELLS 000005dd
-CSEG XT_SP_FETCH 00001e8d
-CSEG XT_FETCH 00001c79
-CSEG VE_DOTSTRING 00000244
-CSEG XT_DOTSTRING 00000247
-CSEG PFA_DOTSTRING 00000248
-CSEG XT_SQUOTE 0000024f
-CSEG XT_COMPILE 000002a3
-CSEG VE_SQUOTE 0000024c
-CSEG PFA_SQUOTE 00000250
-CSEG XT_PARSE 00000a0e
-CSEG XT_STATE 000005d0
-CSEG PFA_SQUOTE1 00000258
-CSEG XT_SLITERAL 000002cf
-CSEG VE_FILL 00000259
-CSEG PFA_FILL 0000025e
-CSEG XT_QDUP 00001cb9
-CSEG PFA_FILL2 0000026a
-CSEG XT_BOUNDS 00000de5
-CSEG XT_DODO 00001e9b
-CSEG PFA_FILL1 00000265
-CSEG XT_I 00001eac
-CSEG XT_DOLOOP 00001ec9
-CSEG VE_NEWEST 0000026c
-CSEG XT_NEWEST 00000271
-CSEG PFA_DOVARIABLE 00001c48
-CSEG PFA_NEWEST 00000272
-DSEG ram_newest 00000087
-CSEG VE_LATEST 00000273
-CSEG XT_LATEST 00000278
-CSEG PFA_LATEST 00000279
-DSEG ram_latest 0000008b
-CSEG VE_DOCREATE 0000027a
-CSEG XT_DOCREATE 00000280
-CSEG PFA_DOCREATE 00000281
-CSEG XT_PARSENAME 00000a3b
-CSEG XT_WLSCOPE 000003d7
-CSEG XT_CELLPLUS 000005e3
-CSEG XT_STORE 00001c81
-CSEG XT_HEADER 000003bc
-CSEG VE_BACKSLASH 0000028b
-CSEG XT_BACKSLASH 0000028e
-CSEG PFA_BACKSLASH 0000028f
-CSEG XT_SOURCE 00000a22
-CSEG XT_NIP 00001cf0
-CSEG XT_TO_IN 00000604
-CSEG VE_LPAREN 00000294
-CSEG XT_LPAREN 00000297
-CSEG PFA_LPAREN 00000298
-CSEG XT_2DROP 000005f4
-CSEG VE_COMPILE 0000029d
-CSEG PFA_COMPILE 000002a4
-CSEG XT_ICELLPLUS 00000c32
-CSEG XT_COMMA 000002ae
-CSEG VE_COMMA 000002ab
-CSEG PFA_COMMA 000002af
-CSEG XT_DP 00000634
-CSEG XT_STOREI 00001f73
-CSEG XT_DOTO 00000c20
-CSEG PFA_DP 00000635
-CSEG VE_BRACKETTICK 000002b6
-CSEG XT_BRACKETTICK 000002ba
-CSEG PFA_BRACKETTICK 000002bb
-CSEG XT_TICK 00000891
-CSEG XT_LITERAL 000002c4
-CSEG VE_LITERAL 000002be
-CSEG PFA_LITERAL 000002c5
-CSEG VE_SLITERAL 000002c9
-CSEG PFA_SLITERAL 000002d0
-CSEG XT_DOSLITERAL 000007f4
-CSEG XT_SCOMMA 00000802
-CSEG XT_GMARK 000002d4
-CSEG PFA_GMARK 000002d5
-CSEG XT_GRESOLVE 000002d9
-CSEG PFA_GRESOLVE 000002da
-CSEG XT_QSTACK 00000bde
-CSEG XT_LMARK 000002df
-CSEG PFA_LMARK 000002e0
-CSEG XT_LRESOLVE 000002e2
-CSEG PFA_LRESOLVE 000002e3
-CSEG VE_AHEAD 000002e6
-CSEG XT_AHEAD 000002eb
-CSEG PFA_AHEAD 000002ec
-CSEG XT_DOBRANCH 00001c2f
-CSEG VE_IF 000002f0
-CSEG XT_IF 000002f3
-CSEG PFA_IF 000002f4
-CSEG VE_ELSE 000002f8
-CSEG XT_ELSE 000002fc
-CSEG PFA_ELSE 000002fd
-CSEG VE_THEN 00000303
-CSEG XT_THEN 00000307
-CSEG PFA_THEN 00000308
-CSEG VE_BEGIN 0000030a
-CSEG XT_BEGIN 0000030f
-CSEG PFA_BEGIN 00000310
-CSEG VE_WHILE 00000312
-CSEG XT_WHILE 00000317
-CSEG PFA_WHILE 00000318
-CSEG VE_REPEAT 0000031b
-CSEG XT_REPEAT 00000320
-CSEG PFA_REPEAT 00000321
-CSEG XT_AGAIN 00000334
-CSEG VE_UNTIL 00000324
-CSEG XT_UNTIL 00000329
-CSEG PFA_UNTIL 0000032a
-CSEG VE_AGAIN 0000032f
-CSEG PFA_AGAIN 00000335
-CSEG VE_DO 00000339
-CSEG XT_DO 0000033c
-CSEG PFA_DO 0000033d
-CSEG XT_TO_L 00000397
-CSEG VE_LOOP 00000343
-CSEG XT_LOOP 00000347
-CSEG PFA_LOOP 00000348
-CSEG XT_ENDLOOP 0000037e
-CSEG VE_PLUSLOOP 0000034c
-CSEG XT_PLUSLOOP 00000351
-CSEG PFA_PLUSLOOP 00000352
-CSEG XT_DOPLUSLOOP 00001eba
-CSEG VE_LEAVE 00000356
-CSEG XT_LEAVE 0000035b
-CSEG PFA_LEAVE 0000035c
-CSEG XT_UNLOOP 00001ed4
-CSEG VE_QDO 00000361
-CSEG XT_QDO 00000365
-CSEG PFA_QDO 00000366
-CSEG XT_QDOCHECK 0000036d
-CSEG PFA_QDOCHECK 0000036e
-CSEG PFA_QDOCHECK1 00000375
-CSEG XT_INVERT 00001dfd
-CSEG VE_ENDLOOP 00000378
-CSEG PFA_ENDLOOP 0000037f
-CSEG LOOP1 00000380
-CSEG XT_L_FROM 0000038b
-CSEG LOOP2 00000387
-CSEG VE_L_FROM 00000388
-CSEG PFA_L_FROM 0000038c
-CSEG XT_LP 000003aa
-CSEG XT_PLUSSTORE 00001e65
-CSEG VE_TO_L 00000394
-CSEG PFA_TO_L 00000398
-CSEG XT_TWO 00001fec
-CSEG VE_LP0 0000039f
-CSEG XT_LP0 000003a3
-CSEG PFA_LP0 000003a4
-ESEG CFG_LP0 00000036
-CSEG VE_LP 000003a7
-CSEG PFA_LP 000003ab
-DSEG ram_lp 0000008d
-CSEG VE_CREATE 000003ac
-CSEG XT_CREATE 000003b1
-CSEG PFA_CREATE 000003b2
-CSEG XT_REVEAL 000003e0
-CSEG PFA_DOCONSTANT 00001c52
-CSEG VE_HEADER 000003b7
-CSEG PFA_HEADER 000003bd
-CSEG XT_GREATERZERO 00001d28
-CSEG PFA_HEADER1 000003ce
-CSEG XT_OR 00001e1c
-CSEG XT_DOSCOMMA 00000806
-CSEG XT_THROW 000008c8
-CSEG VE_WLSCOPE 000003d1
-CSEG PFA_DODEFER1 00000c9a
-CSEG PFA_WLSCOPE 000003d8
-ESEG CFG_WLSCOPE 00000032
-CSEG VE_REVEAL 000003db
-CSEG PFA_REVEAL 000003e1
-CSEG REVEAL1 000003eb
-CSEG VE_DOES 000003ec
-CSEG XT_DOES 000003f1
-CSEG PFA_DOES 000003f2
-CSEG XT_DODOES 00000404
-CSEG DO_DODOES 000003f9
-CSEG PFA_DODOES 00000405
-CSEG XT_NFA2CFA 00000d05
-CSEG VE_COLON 0000040d
-CSEG XT_COLON 00000410
-CSEG PFA_COLON 00000411
-CSEG XT_COLONNONAME 0000041b
-CSEG VE_COLONNONAME 00000415
-CSEG PFA_COLONNONAME 0000041c
-CSEG XT_RBRACKET 00000430
-CSEG VE_SEMICOLON 00000424
-CSEG XT_SEMICOLON 00000427
-CSEG PFA_SEMICOLON 00000428
-CSEG XT_LBRACKET 00000438
-CSEG VE_RBRACKET 0000042d
-CSEG PFA_RBRACKET 00000431
-CSEG VE_LBRACKET 00000435
-CSEG PFA_LBRACKET 00000439
-CSEG VE_VARIABLE 0000043d
-CSEG XT_VARIABLE 00000443
-CSEG PFA_VARIABLE 00000444
-CSEG XT_HERE 00000645
-CSEG XT_CONSTANT 0000044f
-CSEG XT_ALLOT 0000064e
-CSEG VE_CONSTANT 00000449
-CSEG PFA_CONSTANT 00000450
-CSEG VE_USER 00000456
-CSEG XT_USER 0000045a
-CSEG PFA_USER 0000045b
-CSEG PFA_DOUSER 00001c58
-CSEG VE_RECURSE 00000461
-CSEG XT_RECURSE 00000467
-CSEG PFA_RECURSE 00000468
-CSEG VE_IMMEDIATE 0000046c
-CSEG XT_IMMEDIATE 00000473
-CSEG PFA_IMMEDIATE 00000474
-CSEG XT_GET_CURRENT 00000515
-CSEG VE_BRACKETCHAR 0000047e
-CSEG XT_BRACKETCHAR 00000483
-CSEG PFA_BRACKETCHAR 00000484
-CSEG XT_CHAR 00000971
-CSEG VE_ABORTQUOTE 00000489
-CSEG XT_ABORTQUOTE 0000048e
-CSEG PFA_ABORTQUOTE 0000048f
-CSEG XT_QABORT 000004a0
-CSEG VE_ABORT 00000493
-CSEG XT_ABORT 00000498
-CSEG PFA_ABORT 00000499
-CSEG VE_QABORT 0000049b
-CSEG PFA_QABORT 000004a1
-CSEG QABO1 000004a6
-CSEG VE_GET_STACK 000004a8
-CSEG XT_GET_STACK 000004af
-CSEG PFA_N_FETCH_E2 000004c6
-CSEG PFA_N_FETCH_E1 000004bc
-CSEG XT_1MINUS 00001e35
-CSEG XT_OVER 00001ccf
-CSEG VE_SET_STACK 000004c9
-CSEG XT_SET_STACK 000004d0
-CSEG PFA_SET_STACK 000004d1
-CSEG XT_ZEROLESS 00001d21
-CSEG PFA_SET_STACK0 000004d8
-CSEG PFA_SET_STACK2 000004e5
-CSEG PFA_SET_STACK1 000004e0
-CSEG XT_TUCK 000005fc
-CSEG VE_MAPSTACK 000004e7
-CSEG XT_MAPSTACK 000004ee
-CSEG PFA_MAPSTACK 000004ef
-CSEG PFA_MAPSTACK3 0000050a
-CSEG PFA_MAPSTACK1 000004f9
-CSEG XT_R_FETCH 00001d08
-CSEG PFA_MAPSTACK2 00000506
-CSEG VE_GET_CURRENT 0000050d
-CSEG PFA_GET_CURRENT 00000516
-ESEG CFG_CURRENT 0000003c
-CSEG VE_GET_ORDER 0000051a
-CSEG XT_GET_ORDER 00000521
-CSEG PFA_GET_ORDER 00000522
-CSEG VE_CFG_ORDER 00000526
-CSEG XT_CFG_ORDER 0000052d
-CSEG PFA_CFG_ORDER 0000052e
-CSEG VE_COMPARE 0000052f
-CSEG XT_COMPARE 00000535
-CSEG PFA_COMPARE 00000536
-CSEG PFA_COMPARE_LOOP 00000542
-CSEG PFA_COMPARE_NOTEQUAL 00000550
-CSEG PFA_COMPARE_ENDREACHED2 0000054b
-CSEG PFA_COMPARE_ENDREACHED 0000054c
-CSEG PFA_COMPARE_CHECKLASTCHAR 00000550
-CSEG PFA_COMPARE_DONE 00000552
-CSEG VE_NFA2LFA 00000557
-CSEG XT_NFA2LFA 0000055d
-CSEG PFA_NFA2LFA 0000055e
-CSEG XT_2SLASH 00001e04
-CSEG VE_ENVIRONMENT 00000563
-CSEG XT_ENVIRONMENT 0000056b
-CSEG PFA_ENVIRONMENT 0000056c
-ESEG CFG_ENVIRONMENT 0000003a
-CSEG VE_ENVWORDLISTS 0000056d
-CSEG XT_ENVWORDLISTS 00000574
-CSEG PFA_ENVWORDLISTS 00000575
-CSEG VE_ENVSLASHPAD 00000578
-CSEG XT_ENVSLASHPAD 0000057c
-CSEG PFA_ENVSLASHPAD 0000057d
-CSEG XT_PAD 0000060a
-CSEG XT_MINUS 00001d93
-CSEG VE_ENVSLASHHOLD 00000581
-CSEG XT_ENVSLASHHOLD 00000586
-CSEG PFA_ENVSLASHHOLD 00000587
-CSEG VE_ENV_FORTHNAME 0000058b
-CSEG XT_ENV_FORTHNAME 00000592
-CSEG PFA_EN_FORTHNAME 00000593
-CSEG VE_ENV_FORTHVERSION 0000059a
-CSEG XT_ENV_FORTHVERSION 000005a0
-CSEG PFA_EN_FORTHVERSION 000005a1
-CSEG VE_ENV_CPU 000005a4
-CSEG XT_ENV_CPU 000005a8
-CSEG PFA_EN_CPU 000005a9
-CSEG XT_ICOUNT 00000853
-CSEG VE_ENV_MCUINFO 000005ad
-CSEG XT_ENV_MCUINFO 000005b3
-CSEG PFA_EN_MCUINFO 000005b4
-CSEG VE_ENVUSERSIZE 000005b7
-CSEG XT_ENVUSERSIZE 000005bc
-CSEG PFA_ENVUSERSIZE 000005bd
-CSEG VE_F_CPU 000005c0
-CSEG XT_F_CPU 000005c5
-CSEG PFA_F_CPU 000005c6
-CSEG VE_STATE 000005cb
-CSEG PFA_STATE 000005d1
-DSEG ram_state 0000008f
-CSEG VE_BASE 000005d2
-CSEG XT_BASE 000005d6
-CSEG PFA_BASE 000005d7
-CSEG VE_CELLS 000005d8
-CSEG PFA_2STAR 00001e0c
-CSEG VE_CELLPLUS 000005de
-CSEG PFA_CELLPLUS 000005e4
-CSEG VE_2DUP 000005e7
-CSEG PFA_2DUP 000005ec
-CSEG VE_2DROP 000005ef
-CSEG PFA_2DROP 000005f5
-CSEG VE_TUCK 000005f8
-CSEG PFA_TUCK 000005fd
-CSEG VE_TO_IN 00000600
-CSEG PFA_TO_IN 00000605
-CSEG VE_PAD 00000606
-CSEG PFA_PAD 0000060b
-CSEG VE_EMIT 00000610
-CSEG XT_EMIT 00000614
-CSEG PFA_EMIT 00000615
-CSEG XT_UDEFERFETCH 00000c63
-CSEG XT_UDEFERSTORE 00000c6f
-CSEG VE_EMITQ 00000618
-CSEG XT_EMITQ 0000061d
-CSEG PFA_EMITQ 0000061e
-CSEG VE_KEY 00000621
-CSEG XT_KEY 00000625
-CSEG PFA_KEY 00000626
-CSEG VE_KEYQ 00000629
-CSEG XT_KEYQ 0000062d
-CSEG PFA_KEYQ 0000062e
-CSEG VE_DP 00000631
-ESEG CFG_DP 0000002c
-CSEG VE_EHERE 00000638
-CSEG XT_EHERE 0000063d
-CSEG PFA_EHERE 0000063e
-ESEG EE_EHERE 00000030
-CSEG VE_HERE 00000641
-CSEG PFA_HERE 00000646
-ESEG EE_HERE 0000002e
-CSEG VE_ALLOT 00000649
-CSEG PFA_ALLOT 0000064f
-CSEG VE_BIN 00000654
-CSEG XT_BIN 00000658
-CSEG PFA_BIN 00000659
-CSEG VE_DECIMAL 0000065d
-CSEG XT_DECIMAL 00000663
-CSEG PFA_DECIMAL 00000664
-CSEG VE_HEX 00000669
-CSEG XT_HEX 0000066d
-CSEG PFA_HEX 0000066e
-CSEG VE_BL 00000673
-CSEG XT_BL 00000676
-CSEG PFA_BL 00000677
-CSEG VE_TURNKEY 00000678
-CSEG XT_TURNKEY 0000067e
-CSEG PFA_TURNKEY 0000067f
-ESEG CFG_TURNKEY 00000038
-CSEG VE_SLASHMOD 00000682
-CSEG XT_SLASHMOD 00000686
-CSEG PFA_SLASHMOD 00000687
-CSEG PFA_SLASHMOD_1 00000692
-CSEG PFA_SLASHMOD_2 00000698
-CSEG PFA_SLASHMOD_3 0000069b
-CSEG PFA_SLASHMOD_5 000006a6
-CSEG PFA_SLASHMOD_4 000006a5
-CSEG PFA_SLASHMODmod_done 000006b1
-CSEG PFA_SLASHMOD_6 000006af
-CSEG VE_USLASHMOD 000006b6
-CSEG XT_USLASHMOD 000006bb
-CSEG PFA_USLASHMOD 000006bc
-CSEG XT_UMSLASHMOD 00001dc2
-CSEG VE_NEGATE 000006c1
-CSEG XT_NEGATE 000006c6
-CSEG PFA_NEGATE 000006c7
-CSEG VE_SLASH 000006ca
-CSEG XT_SLASH 000006cd
-CSEG PFA_SLASH 000006ce
-CSEG VE_MOD 000006d1
-CSEG XT_MOD 000006d5
-CSEG PFA_MOD 000006d6
-CSEG VE_ABS 000006d9
-CSEG XT_ABS 000006dd
-CSEG PFA_ABS 000006de
-CSEG XT_QNEGATE 00001e3e
-CSEG VE_MIN 000006e1
-CSEG XT_MIN 000006e5
-CSEG PFA_MIN 000006e6
-CSEG XT_GREATER 00001d78
-CSEG PFA_MIN1 000006eb
-CSEG VE_MAX 000006ed
-CSEG XT_MAX 000006f1
-CSEG PFA_MAX 000006f2
-CSEG XT_LESS 00001d6e
-CSEG PFA_MAX1 000006f7
-CSEG VE_WITHIN 000006f9
-CSEG XT_WITHIN 000006fe
-CSEG PFA_WITHIN 000006ff
-CSEG VE_TOUPPER 00000706
-CSEG XT_TOUPPER 0000070c
-CSEG PFA_TOUPPER 0000070d
-CSEG PFA_TOUPPER0 00000718
-CSEG VE_TOLOWER 00000719
-CSEG XT_TOLOWER 0000071f
-CSEG PFA_TOLOWER 00000720
-CSEG PFA_TOLOWER0 0000072b
-CSEG VE_HLD 0000072c
-CSEG XT_HLD 00000730
-CSEG PFA_HLD 00000731
-DSEG ram_hld 00000091
-CSEG VE_HOLD 00000732
-CSEG XT_HOLD 00000736
-CSEG PFA_HOLD 00000737
-CSEG VE_L_SHARP 00000742
-CSEG XT_L_SHARP 00000745
-CSEG PFA_L_SHARP 00000746
-CSEG VE_SHARP 0000074a
-CSEG XT_SHARP 0000074d
-CSEG PFA_SHARP 0000074e
-CSEG XT_UDSLASHMOD 000007ca
-CSEG PFA_SHARP1 0000075b
-CSEG VE_SHARP_S 00000760
-CSEG XT_SHARP_S 00000763
-CSEG PFA_SHARP_S 00000764
-CSEG NUMS1 00000764
-CSEG VE_SHARP_G 0000076b
-CSEG XT_SHARP_G 0000076e
-CSEG PFA_SHARP_G 0000076f
-CSEG VE_SIGN 00000776
-CSEG XT_SIGN 0000077a
-CSEG PFA_SIGN 0000077b
-CSEG PFA_SIGN1 00000781
-CSEG VE_DDOTR 00000782
-CSEG XT_DDOTR 00000786
-CSEG PFA_DDOTR 00000787
-CSEG XT_DABS 00000d5b
-CSEG XT_SPACES 00000872
-CSEG XT_TYPE 00000882
-CSEG VE_DOTR 00000795
-CSEG XT_DOTR 00000798
-CSEG PFA_DOTR 00000799
-CSEG VE_DDOT 0000079e
-CSEG XT_DDOT 000007a1
-CSEG PFA_DDOT 000007a2
-CSEG VE_DOT 000007a6
-CSEG XT_DOT 000007a9
-CSEG PFA_DOT 000007aa
-CSEG VE_UDDOT 000007ad
-CSEG PFA_UDDOT 000007b2
-CSEG VE_UDDOTR 000007b6
-CSEG PFA_UDDOTR 000007bb
-CSEG VE_UDSLASHMOD 000007c5
-CSEG PFA_UDSLASHMOD 000007cb
-CSEG VE_DIGITQ 000007d5
-CSEG XT_DIGITQ 000007da
-CSEG PFA_DIGITQ 000007db
-CSEG PFA_DOSLITERAL 000007f5
-CSEG VE_SCOMMA 000007ff
-CSEG PFA_SCOMMA 00000803
-CSEG PFA_DOSCOMMA 00000807
-CSEG XT_2STAR 00001e0b
-CSEG PFA_SCOMMA2 00000819
-CSEG PFA_SCOMMA1 00000813
-CSEG PFA_SCOMMA3 00000820
-CSEG VE_ITYPE 00000822
-CSEG PFA_ITYPE 00000828
-CSEG PFA_ITYPE2 0000083b
-CSEG PFA_ITYPE1 00000833
-CSEG XT_LOWEMIT 00000848
-CSEG XT_HIEMIT 00000844
-CSEG PFA_ITYPE3 00000842
-CSEG PFA_HIEMIT 00000845
-CSEG PFA_LOWEMIT 00000849
-CSEG VE_ICOUNT 0000084e
-CSEG PFA_ICOUNT 00000854
-CSEG VE_CR 00000859
-CSEG XT_CR 0000085c
-CSEG PFA_CR 0000085d
-CSEG VE_SPACE 00000864
-CSEG PFA_SPACE 0000086a
-CSEG VE_SPACES 0000086d
-CSEG PFA_SPACES 00000873
-CSEG SPCS1 00000875
-CSEG SPCS2 0000087c
-CSEG VE_TYPE 0000087e
-CSEG PFA_TYPE 00000883
-CSEG PFA_TYPE2 0000088d
-CSEG PFA_TYPE1 00000888
-CSEG VE_TICK 0000088e
-CSEG PFA_TICK 00000892
-CSEG XT_FORTHRECOGNIZER 00000b60
-CSEG XT_RECOGNIZE 00000b36
-CSEG XT_DT_NULL 00000bd1
-CSEG XT_NOOP 00000c06
-CSEG PFA_TICK1 000008a3
-CSEG VE_HANDLER 000008a5
-CSEG XT_HANDLER 000008ab
-CSEG PFA_HANDLER 000008ac
-CSEG VE_CATCH 000008ad
-CSEG XT_CATCH 000008b2
-CSEG PFA_CATCH 000008b3
-CSEG XT_RP_FETCH 00001e76
-CSEG VE_THROW 000008c3
-CSEG PFA_THROW 000008c9
-CSEG PFA_THROW1 000008cf
-CSEG XT_RP_STORE 00001e80
-CSEG XT_SP_STORE 00001e96
-CSEG VE_CSKIP 000008dc
-CSEG XT_CSKIP 000008e1
-CSEG PFA_CSKIP 000008e2
-CSEG PFA_CSKIP1 000008e3
-CSEG PFA_CSKIP2 000008f0
-CSEG XT_SLASHSTRING 00000a2c
-CSEG VE_CSCAN 000008f3
-CSEG XT_CSCAN 000008f8
-CSEG PFA_CSCAN 000008f9
-CSEG PFA_CSCAN1 000008fb
-CSEG PFA_CSCAN2 0000090d
-CSEG VE_ACCEPT 00000913
-CSEG XT_ACCEPT 00000918
-CSEG PFA_ACCEPT 00000919
-CSEG ACC1 0000091d
-CSEG XT_CRLFQ 00000959
-CSEG ACC5 0000094b
-CSEG ACC3 0000093b
-CSEG ACC6 00000939
-CSEG XT_BS 00000951
-CSEG ACC4 00000949
-CSEG PFA_ACCEPT6 00000942
-CSEG VE_REFILL 00000964
-CSEG XT_REFILL 00000969
-CSEG PFA_REFILL 0000096a
-CSEG VE_CHAR 0000096d
-CSEG PFA_CHAR 00000972
-CSEG VE_NUMBER 00000976
-CSEG XT_NUMBER 0000097b
-CSEG PFA_NUMBER 0000097c
-CSEG XT_QSIGN 000009bf
-CSEG XT_SET_BASE 000009d2
-CSEG PFA_NUMBER0 00000992
-CSEG XT_2TO_R 00001f1e
-CSEG XT_2R_FROM 00001f2d
-CSEG XT_TO_NUMBER 000009f0
-CSEG PFA_NUMBER1 000009b4
-CSEG PFA_NUMBER2 000009ab
-CSEG PFA_NUMBER6 000009ac
-CSEG PFA_NUMBER3 000009a8
-CSEG XT_DNEGATE 00000d68
-CSEG PFA_NUMBER5 000009ba
-CSEG PFA_NUMBER4 000009b9
-CSEG PFA_QSIGN 000009c0
-CSEG PFA_NUMBERSIGN_DONE 000009cb
-CSEG XT_BASES 000009cd
-CSEG PFA_SET_BASE 000009d3
-CSEG SET_BASE1 000009e8
-CSEG SET_BASE2 000009e9
-CSEG VE_TO_NUMBER 000009ea
-CSEG TONUM1 000009f1
-CSEG TONUM3 00000a08
-CSEG TONUM2 000009fc
-CSEG XT_2SWAP 00000d8c
-CSEG VE_PARSE 00000a09
-CSEG PFA_PARSE 00000a0f
-CSEG VE_SOURCE 00000a1d
-CSEG PFA_SOURCE 00000a23
-CSEG VE_SLASHSTRING 00000a26
-CSEG PFA_SLASHSTRING 00000a2d
-CSEG VE_PARSENAME 00000a34
-CSEG PFA_PARSENAME 00000a3c
-CSEG XT_SKIPSCANCHAR 00000a3f
-CSEG PFA_SKIPSCANCHAR 00000a40
-CSEG VE_FINDXT 00000a51
-CSEG XT_FINDXT 00000a57
-CSEG PFA_FINDXT 00000a58
-CSEG XT_FINDXTA 00000a63
-CSEG PFA_FINDXT1 00000a62
-CSEG PFA_FINDXTA 00000a64
-CSEG XT_SEARCH_WORDLIST 00000cac
-CSEG PFA_FINDXTA1 00000a70
-CSEG VE_QUIT 00000a71
-CSEG XT_QUIT 00000a75
-CSEG PFA_QUIT 00000a76
-CSEG XT_SP0 00000b10
-CSEG XT_RP0 00000b1d
-CSEG PFA_QUIT2 00000a7e
-CSEG PFA_QUIT4 00000a84
-CSEG XT_PROMPTREADY 00000ab4
-CSEG PFA_QUIT3 00000a96
-CSEG XT_INTERPRET 00000b6b
-CSEG PFA_QUIT5 00000a94
-CSEG XT_PROMPTERROR 00000acf
-CSEG XT_PROMPTOK 00000aa4
-CSEG XT_DEFAULT_PROMPTOK 00000a99
-CSEG PFA_DEFAULT_PROMPTOK 00000a9a
-CSEG VE_PROMPTOK 00000aa0
-CSEG PFA_PROMPTOK 00000aa5
-CSEG XT_DEFAULT_PROMPTREADY 00000aa8
-CSEG PFA_DEFAULT_PROMPTREADY 00000aa9
-CSEG VE_PROMPTREADY 00000aaf
-CSEG PFA_PROMPTREADY 00000ab5
-CSEG XT_DEFAULT_PROMPTERROR 00000ab8
-CSEG PFA_DEFAULT_PROMPTERROR 00000ab9
-CSEG VE_PROMPTERROR 00000aca
-CSEG PFA_PROMPTERROR 00000ad0
-CSEG VE_PAUSE 00000ad3
-CSEG PFA_PAUSE 00000ad9
-DSEG ram_pause 00000093
-CSEG XT_RDEFERFETCH 00000c4f
-CSEG XT_RDEFERSTORE 00000c59
-CSEG VE_COLD 00000adc
-CSEG clearloop 00000ae8
-DSEG ram_user1 00000095
-CSEG PFA_WARM 00000b03
-CSEG VE_WARM 00000afe
-CSEG XT_WARM 00000b02
-CSEG XT_INIT_RAM 00000dd7
-CSEG XT_DEFERSTORE 00000c7a
-CSEG VE_SP0 00000b0c
-CSEG PFA_SP0 00000b11
-CSEG VE_SP 00000b14
-CSEG XT_SP 00000b17
-CSEG PFA_SP 00000b18
-CSEG VE_RP0 00000b19
-CSEG PFA_RP0 00000b1e
-CSEG XT_DORP0 00000b21
-CSEG PFA_DORP0 00000b22
-CSEG VE_DEPTH 00000b23
-CSEG XT_DEPTH 00000b28
-CSEG PFA_DEPTH 00000b29
-CSEG VE_RECOGNIZE 00000b2f
-CSEG PFA_RECOGNIZE 00000b37
-CSEG XT_RECOGNIZE_A 00000b41
-CSEG PFA_RECOGNIZE1 00000b40
-CSEG PFA_RECOGNIZE_A 00000b42
-CSEG PFA_RECOGNIZE_A1 00000b52
-CSEG VE_FORTHRECOGNIZER 00000b56
-CSEG PFA_FORTHRECOGNIZER 00000b61
-ESEG CFG_FORTHRECOGNIZER 00000034
-CSEG VE_INTERPRET 00000b64
-CSEG PFA_INTERPRET 00000b6c
-CSEG PFA_INTERPRET2 00000b7c
-CSEG PFA_INTERPRET1 00000b77
-CSEG VE_DT_NUM 00000b7e
-CSEG XT_DT_NUM 00000b83
-CSEG PFA_DT_NUM 00000b84
-CSEG VE_DT_DNUM 00000b87
-CSEG XT_DT_DNUM 00000b8d
-CSEG PFA_DT_DNUM 00000b8e
-CSEG XT_2LITERAL 00001fd8
-CSEG VE_REC_NUM 00000b91
-CSEG XT_REC_NUM 00000b97
-CSEG PFA_REC_NUM 00000b98
-CSEG PFA_REC_NONUMBER 00000ba3
-CSEG PFA_REC_INTNUM2 00000ba1
-CSEG VE_REC_FIND 00000ba5
-CSEG XT_REC_FIND 00000bab
-CSEG PFA_REC_FIND 00000bac
-CSEG PFA_REC_WORD_FOUND 00000bb4
-CSEG XT_DT_XT 00000bbb
-CSEG VE_DT_XT 00000bb6
-CSEG PFA_DT_XT 00000bbc
-CSEG XT_R_WORD_INTERPRET 00000bbf
-CSEG XT_R_WORD_COMPILE 00000bc3
-CSEG PFA_R_WORD_INTERPRET 00000bc0
-CSEG PFA_R_WORD_COMPILE 00000bc4
-CSEG PFA_R_WORD_COMPILE1 00000bc9
-CSEG VE_DT_NULL 00000bcb
-CSEG PFA_DT_NULL 00000bd2
-CSEG XT_FAIL 00000bd5
-CSEG PFA_FAIL 00000bd6
-CSEG VE_QSTACK 00000bd9
-CSEG PFA_QSTACK 00000bdf
-CSEG PFA_QSTACK1 00000be6
-CSEG VE_DOT_VER 00000be7
-CSEG XT_DOT_VER 00000beb
-CSEG PFA_DOT_VER 00000bec
-CSEG VE_NOOP 00000c02
-CSEG PFA_NOOP 00000c07
-CSEG VE_UNUSED 00000c08
-CSEG XT_UNUSED 00000c0d
-CSEG PFA_UNUSED 00000c0e
-CSEG VE_TO 00000c12
-CSEG XT_TO 00000c15
-CSEG PFA_TO 00000c16
-CSEG XT_TO_BODY 00000df7
-CSEG PFA_TO1 00000c26
-CSEG PFA_DOTO 00000c21
-CSEG VE_ICELLPLUS 00000c2c
-CSEG PFA_ICELLPLUS 00000c33
-CSEG VE_EDEFERFETCH 00000c35
-CSEG PFA_EDEFERFETCH 00000c3c
-CSEG VE_EDEFERSTORE 00000c3f
-CSEG PFA_EDEFERSTORE 00000c46
-CSEG VE_RDEFERFETCH 00000c49
-CSEG PFA_RDEFERFETCH 00000c50
-CSEG VE_RDEFERSTORE 00000c53
-CSEG PFA_RDEFERSTORE 00000c5a
-CSEG VE_UDEFERFETCH 00000c5d
-CSEG PFA_UDEFERFETCH 00000c64
-CSEG XT_UP_FETCH 00001f02
-CSEG VE_UDEFERSTORE 00000c69
-CSEG PFA_UDEFERSTORE 00000c70
-CSEG VE_DEFERSTORE 00000c75
-CSEG PFA_DEFERSTORE 00000c7b
-CSEG VE_DEFERFETCH 00000c82
-CSEG XT_DEFERFETCH 00000c87
-CSEG PFA_DEFERFETCH 00000c88
-CSEG VE_DODEFER 00000c8e
-CSEG XT_DODEFER 00000c94
-CSEG PFA_DODEFER 00000c95
-CSEG VE_SEARCH_WORDLIST 00000ca2
-CSEG PFA_SEARCH_WORDLIST 00000cad
-CSEG XT_ISWORD 00000cc1
-CSEG PFA_SEARCH_WORDLIST1 00000cbb
-CSEG PFA_ISWORD 00000cc2
-CSEG XT_ICOMPARE 00000d0f
-CSEG PFA_ISWORD3 00000ccf
-CSEG VE_TRAVERSEWORDLIST 00000cd3
-CSEG PFA_TRAVERSEWORDLIST 00000cdf
-CSEG PFA_TRAVERSEWORDLIST1 00000ce0
-CSEG PFA_TRAVERSEWORDLIST2 00000cef
-CSEG VE_NAME2STRING 00000cf1
-CSEG PFA_NAME2STRING 00000cfa
-CSEG VE_NFA2CFA 00000cff
-CSEG PFA_NFA2CFA 00000d06
-CSEG VE_ICOMPARE 00000d09
-CSEG PFA_ICOMPARE 00000d10
-CSEG PFA_ICOMPARE_SAMELEN 00000d1a
-CSEG PFA_ICOMPARE_DONE 00000d3d
-CSEG PFA_ICOMPARE_LOOP 00000d20
-CSEG PFA_ICOMPARE_LASTCELL 00000d2e
-CSEG PFA_ICOMPARE_NEXTLOOP 00000d35
-CSEG VE_STAR 00000d40
-CSEG XT_STAR 00000d43
-CSEG PFA_STAR 00000d44
-CSEG XT_MSTAR 00001da6
-CSEG VE_J 00000d47
-CSEG XT_J 00000d4a
-CSEG PFA_J 00000d4b
-CSEG VE_DABS 00000d57
-CSEG PFA_DABS 00000d5c
-CSEG PFA_DABS1 00000d61
-CSEG VE_DNEGATE 00000d62
-CSEG PFA_DNEGATE 00000d69
-CSEG VE_CMOVE 00000d6e
-CSEG XT_CMOVE 00000d73
-CSEG PFA_CMOVE 00000d74
-CSEG PFA_CMOVE1 00000d81
-CSEG PFA_CMOVE2 00000d7d
-CSEG VE_2SWAP 00000d87
-CSEG PFA_2SWAP 00000d8d
-CSEG VE_REFILLTIB 00000d92
-CSEG XT_REFILLTIB 00000d99
-CSEG PFA_REFILLTIB 00000d9a
-CSEG XT_TIB 00000db5
-CSEG XT_NUMBERTIB 00000dbb
-CSEG VE_SOURCETIB 00000da5
-CSEG XT_SOURCETIB 00000dac
-CSEG PFA_SOURCETIB 00000dad
-CSEG VE_TIB 00000db1
-CSEG PFA_TIB 00000db6
-DSEG ram_tib 000000c1
-CSEG VE_NUMBERTIB 00000db7
-CSEG PFA_NUMBERTIB 00000dbc
-DSEG ram_sharptib 0000011b
-CSEG VE_EE2RAM 00000dbd
-CSEG XT_EE2RAM 00000dc2
-CSEG PFA_EE2RAM 00000dc3
-CSEG PFA_EE2RAM_1 00000dc5
-CSEG PFA_EE2RAM_2 00000dcf
-CSEG VE_INIT_RAM 00000dd1
-CSEG PFA_INI_RAM 00000dd8
-ESEG EE_INITUSER 00000060
-CSEG VE_BOUNDS 00000de0
-CSEG PFA_BOUNDS 00000de6
-CSEG VE_S2D 00000dea
-CSEG PFA_S2D 00000def
-CSEG VE_TO_BODY 00000df2
-CSEG PFA_1PLUS 00001e30
-CSEG VE_DOTS 00000df8
-CSEG XT_DOTS 00000dfb
-CSEG PFA_DOTS 00000dfc
-CSEG PFA_DOTS2 00000e0a
-CSEG PFA_DOTS1 00000e05
-CSEG VE_SPIRW 00000e0b
-CSEG XT_SPIRW 00000e10
-CSEG PFA_SPIRW 00000e11
-CSEG do_spirw 00000e15
-CSEG do_spirw1 00000e16
-CSEG VE_N_SPIR 00000e1e
-CSEG XT_N_SPIR 00000e23
-CSEG PFA_N_SPIR 00000e24
-CSEG PFA_N_SPIR_LOOP 00000e29
-CSEG PFA_N_SPIR_LOOP1 00000e2a
-CSEG VE_N_SPIW 00000e35
-CSEG XT_N_SPIW 00000e3a
-CSEG PFA_N_SPIW 00000e3b
-CSEG PFA_N_SPIW_LOOP 00000e40
-CSEG PFA_N_SPIW_LOOP1 00000e42
-CSEG VE_APPLTURNKEY 00000e4c
-CSEG XT_APPLTURNKEY 00000e54
-CSEG PFA_APPLTURNKEY 00000e55
-CSEG VE_SET_CURRENT 00000e66
-CSEG XT_SET_CURRENT 00000e6e
-CSEG PFA_SET_CURRENT 00000e6f
-CSEG VE_WORDLIST 00000e73
-CSEG XT_WORDLIST 00000e79
-CSEG PFA_WORDLIST 00000e7a
-CSEG VE_FORTHWORDLIST 00000e83
-CSEG XT_FORTHWORDLIST 00000e8c
-CSEG PFA_FORTHWORDLIST 00000e8d
-ESEG CFG_FORTHWORDLIST 0000003e
-CSEG VE_SET_ORDER 00000e8e
-CSEG XT_SET_ORDER 00000e95
-CSEG PFA_SET_ORDER 00000e96
-CSEG VE_SET_RECOGNIZERS 00000e9a
-CSEG XT_SET_RECOGNIZERS 00000ea4
-CSEG PFA_SET_RECOGNIZERS 00000ea5
-ESEG CFG_RECOGNIZERLISTLEN 00000052
-CSEG VE_GET_RECOGNIZERS 00000ea9
-CSEG XT_GET_RECOGNIZERS 00000eb3
-CSEG PFA_GET_RECOGNIZERS 00000eb4
-CSEG VE_CODE 00000eb8
-CSEG XT_CODE 00000ebc
-CSEG PFA_CODE 00000ebd
-CSEG VE_ENDCODE 00000ec3
-CSEG XT_ENDCODE 00000ec9
-CSEG PFA_ENDCODE 00000eca
-CSEG VE_MARKER 00000ecf
-CSEG XT_MARKER 00000ed5
-CSEG PFA_MARKER 00000ed6
-ESEG EE_MARKER 0000005e
-CSEG VE_POSTPONE 00000ed9
-CSEG XT_POSTPONE 00000edf
-CSEG PFA_POSTPONE 00000ee0
-CSEG VE_2R_FETCH 00000eee
-CSEG XT_2R_FETCH 00000ef2
-CSEG PFA_2R_FETCH 00000ef3
-SET DPSTART 00000f02
-CSEG DO_INTERRUPT 00001c14
-CSEG DO_EXECUTE 00001c0d
-CSEG VE_EXIT 00001c1c
-CSEG PFA_EXIT 00001c21
-CSEG VE_EXECUTE 00001c24
-CSEG PFA_EXECUTE 00001c2b
-CSEG PFA_DOBRANCH 00001c30
-CSEG PFA_DOCONDBRANCH 00001c37
-CSEG PFA_DOLITERAL 00001c3e
-CSEG XT_DOVARIABLE 00001c47
-CSEG XT_DOCONSTANT 00001c51
-CSEG XT_DOUSER 00001c57
-CSEG VE_DOVALUE 00001c63
-CSEG XT_DOVALUE 00001c69
-CSEG PFA_DOVALUE 00001c6a
-CSEG VE_FETCH 00001c76
-CSEG PFA_FETCH 00001c7a
-CSEG PFA_FETCHRAM 00001c7a
-CSEG VE_STORE 00001c7e
-CSEG PFA_STORE 00001c82
-CSEG PFA_STORERAM 00001c82
-CSEG VE_CSTORE 00001c8a
-CSEG PFA_CSTORE 00001c8e
-CSEG VE_CFETCH 00001c95
-CSEG PFA_CFETCH 00001c99
-CSEG VE_FETCHU 00001c9d
-CSEG XT_FETCHU 00001ca0
-CSEG PFA_FETCHU 00001ca1
-CSEG VE_STOREU 00001ca5
-CSEG XT_STOREU 00001ca8
-CSEG PFA_STOREU 00001ca9
-CSEG VE_DUP 00001cad
-CSEG PFA_DUP 00001cb2
-CSEG VE_QDUP 00001cb5
-CSEG PFA_QDUP 00001cba
-CSEG PFA_QDUP1 00001cbf
-CSEG VE_SWAP 00001cc0
-CSEG PFA_SWAP 00001cc5
-CSEG VE_OVER 00001ccb
-CSEG PFA_OVER 00001cd0
-CSEG VE_DROP 00001cd5
-CSEG PFA_DROP 00001cda
-CSEG VE_ROT 00001cdd
-CSEG PFA_ROT 00001ce2
-CSEG VE_NIP 00001cec
-CSEG PFA_NIP 00001cf1
-CSEG VE_R_FROM 00001cf3
-CSEG PFA_R_FROM 00001cf7
-CSEG VE_TO_R 00001cfc
-CSEG PFA_TO_R 00001d00
-CSEG VE_R_FETCH 00001d05
-CSEG PFA_R_FETCH 00001d09
-CSEG VE_NOTEQUAL 00001d10
-CSEG PFA_NOTEQUAL 00001d14
-CSEG VE_ZEROEQUAL 00001d17
-CSEG PFA_ZEROEQUAL 00001d1b
-CSEG PFA_ZERO1 00001d57
-CSEG PFA_TRUE1 00001d4e
-CSEG VE_ZEROLESS 00001d1e
-CSEG PFA_ZEROLESS 00001d22
-CSEG VE_GREATERZERO 00001d25
-CSEG PFA_GREATERZERO 00001d29
-CSEG VE_DGREATERZERO 00001d2e
-CSEG XT_DGREATERZERO 00001d32
-CSEG PFA_DGREATERZERO 00001d33
-CSEG VE_DXT_ZEROLESS 00001d3c
-CSEG XT_DXT_ZEROLESS 00001d40
-CSEG PFA_DXT_ZEROLESS 00001d41
-CSEG VE_TRUE 00001d47
-CSEG PFA_TRUE 00001d4c
-CSEG VE_ZERO 00001d51
-CSEG PFA_ZERO 00001d55
-CSEG VE_ULESS 00001d59
-CSEG PFA_ULESS 00001d5d
-CSEG VE_UGREATER 00001d64
-CSEG PFA_UGREATER 00001d68
-CSEG VE_LESS 00001d6b
-CSEG PFA_LESS 00001d6f
-CSEG PFA_LESSDONE 00001d73
-CSEG VE_GREATER 00001d75
-CSEG PFA_GREATER 00001d79
-CSEG PFA_GREATERDONE 00001d7d
-CSEG VE_LOG2 00001d80
-CSEG XT_LOG2 00001d84
-CSEG PFA_LOG2 00001d85
-CSEG PFA_LOG2_1 00001d88
-CSEG PFA_LOG2_2 00001d8e
-CSEG VE_MINUS 00001d90
-CSEG PFA_MINUS 00001d94
-CSEG VE_PLUS 00001d9a
-CSEG PFA_PLUS 00001d9e
-CSEG VE_MSTAR 00001da3
-CSEG PFA_MSTAR 00001da7
-CSEG VE_UMSLASHMOD 00001dbd
-CSEG PFA_UMSLASHMOD 00001dc3
-CSEG PFA_UMSLASHMODmod 00001dc8
-CSEG PFA_UMSLASHMODmod_loop 00001dc9
-CSEG PFA_UMSLASHMODmod_loop_control 00001dd6
-CSEG PFA_UMSLASHMODmod_subtract 00001dd3
-CSEG PFA_UMSLASHMODmod_done 00001dd8
-CSEG VE_UMSTAR 00001ddc
-CSEG PFA_UMSTAR 00001de1
-CSEG VE_INVERT 00001df8
-CSEG PFA_INVERT 00001dfe
-CSEG VE_2SLASH 00001e01
-CSEG PFA_2SLASH 00001e05
-CSEG VE_2STAR 00001e08
-CSEG VE_AND 00001e0f
-CSEG PFA_AND 00001e14
-CSEG VE_OR 00001e19
-CSEG PFA_OR 00001e1d
-CSEG VE_XOR 00001e22
-CSEG XT_XOR 00001e26
-CSEG PFA_XOR 00001e27
-CSEG VE_1PLUS 00001e2c
-CSEG VE_1MINUS 00001e32
-CSEG PFA_1MINUS 00001e36
-CSEG VE_QNEGATE 00001e38
-CSEG PFA_QNEGATE 00001e3f
-CSEG QNEG1 00001e43
-CSEG VE_LSHIFT 00001e44
-CSEG XT_LSHIFT 00001e49
-CSEG PFA_LSHIFT 00001e4a
-CSEG PFA_LSHIFT1 00001e4d
-CSEG PFA_LSHIFT2 00001e52
-CSEG VE_RSHIFT 00001e53
-CSEG XT_RSHIFT 00001e58
-CSEG PFA_RSHIFT 00001e59
-CSEG PFA_RSHIFT1 00001e5c
-CSEG PFA_RSHIFT2 00001e61
-CSEG VE_PLUSSTORE 00001e62
-CSEG PFA_PLUSSTORE 00001e66
-CSEG VE_RP_FETCH 00001e72
-CSEG PFA_RP_FETCH 00001e77
-CSEG VE_RP_STORE 00001e7c
-CSEG PFA_RP_STORE 00001e81
-CSEG VE_SP_FETCH 00001e89
-CSEG PFA_SP_FETCH 00001e8e
-CSEG VE_SP_STORE 00001e92
-CSEG PFA_SP_STORE 00001e97
-CSEG PFA_DODO 00001e9c
-CSEG PFA_DODO1 00001e9e
-CSEG VE_I 00001ea9
-CSEG PFA_I 00001ead
-CSEG PFA_DOPLUSLOOP 00001ebb
-CSEG PFA_DOPLUSLOOP_LEAVE 00001ec5
-CSEG PFA_DOPLUSLOOP_NEXT 00001ec2
-CSEG PFA_DOLOOP 00001eca
-CSEG VE_UNLOOP 00001ecf
-CSEG PFA_UNLOOP 00001ed5
-CSEG VE_CMOVE_G 00001eda
-CSEG XT_CMOVE_G 00001edf
-CSEG PFA_CMOVE_G 00001ee0
-CSEG PFA_CMOVE_G1 00001ef1
-CSEG PFA_CMOVE_G2 00001eed
-CSEG VE_BYTESWAP 00001ef6
-CSEG PFA_BYTESWAP 00001efa
-CSEG VE_UP_FETCH 00001efe
-CSEG PFA_UP_FETCH 00001f03
-CSEG VE_UP_STORE 00001f07
-CSEG XT_UP_STORE 00001f0b
-CSEG PFA_UP_STORE 00001f0c
-CSEG VE_1MS 00001f10
-CSEG XT_1MS 00001f14
-CSEG PFA_1MS 00001f15
-CSEG VE_2TO_R 00001f1a
-CSEG PFA_2TO_R 00001f1f
-CSEG VE_2R_FROM 00001f29
-CSEG PFA_2R_FROM 00001f2e
-CSEG VE_STOREE 00001f38
-CSEG PFA_STOREE 00001f3c
-CSEG PFA_STOREE0 00001f3c
-CSEG PFA_FETCHE2 00001f6a
-CSEG PFA_STOREE3 00001f46
-CSEG PFA_STOREE1 00001f51
-CSEG PFA_STOREE4 00001f4d
-CSEG PFA_STOREE2 00001f53
-CSEG VE_FETCHE 00001f5c
-CSEG PFA_FETCHE 00001f60
-CSEG PFA_FETCHE1 00001f60
-CSEG VE_STOREI 00001f70
-CSEG PFA_STOREI 00001f74
-ESEG EE_STOREI 0000005c
-CSEG VE_DO_STOREI_NRWW 00001f77
-CSEG XT_DO_STOREI 00001f7e
-CSEG PFA_DO_STOREI_NRWW 00001f7f
-CSEG DO_STOREI_atmega 00001f93
-CSEG pageload 00001fa4
-CSEG DO_STOREI_writepage 00001f9d
-CSEG dospm 00001fbd
-EQU pagemask ffffffc0
-CSEG pageload_loop 00001faa
-CSEG pageload_newdata 00001fb5
-CSEG pageload_cont 00001fb7
-CSEG pageload_done 00001fbc
-CSEG dospm_wait_ee 00001fbd
-CSEG dospm_wait_spm 00001fbf
-CSEG VE_FETCHI 00001fc8
-CSEG PFA_FETCHI 00001fcc
-CSEG VE_2LITERAL 00001fd2
-CSEG PFA_2LITERAL 00001fd9
-CSEG VE_EQUAL 00001fdd
-CSEG PFA_EQUAL 00001fe1
-CSEG VE_ONE 00001fe4
-CSEG PFA_ONE 00001fe8
-CSEG VE_TWO 00001fe9
-CSEG PFA_TWO 00001fed
-CSEG VE_MINUSONE 00001fee
-CSEG XT_MINUSONE 00001ff1
-CSEG PFA_MINUSONE 00001ff2
-SET flashlast 00001ff3
-DSEG HERESTART 0000011d
-ESEG EHERESTART 00000084
-ESEG CFG_ORDERLIST 00000042
-ESEG CFG_RECOGNIZERLIST 00000054
-EQU UBRR_VAL 0000000c
-EQU BAUD_REAL 0000963d
-EQU BAUD_ERROR 00000001
diff --git a/amforth-6.5/appl/eval-pollin/p16-8.xml b/amforth-6.5/appl/eval-pollin/p16-8.xml
deleted file mode 100644
index eba211c..0000000
--- a/amforth-6.5/appl/eval-pollin/p16-8.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<project name="pollins-16-8" basedir="." default="Help">
-
- <target name="p16-8.asm">
- <copy tofile="p16-8.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="8000000"/>
- <filter token="USART" value=""/>
- </filterset>
- </copy>
- </target>
-
- <target name="p16-8.hex" depends="p16-8.asm" description="Hexfiles for p16-8">
- <avrasm2 projectname="p16-8" mcu="atmega16"/>
- <delete file="p16-8.asm"/>
-
- </target>
-
- <target name="p16-8" depends="p16-8.hex" description="Atmega16 @ 8 MHz">
- <echo>Uploading Hexfiles for p16-8</echo>
- <avrdude
- type="stk200"
- mcu="atmega16"
- flashfile="p16-8.hex"
- eepromfile="p16-8.eep.hex" />
- </target>
- <target name="p16-8.fuses" description="Set fuses for P16-8">
- <echo>Writing fuses</echo>
- <avrdude-2fuses
- type="stk200"
- mcu="atmega16"
- hfuse="0x99"
- lfuse="0xff"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p32-16.xml b/amforth-6.5/appl/eval-pollin/p32-16.xml
deleted file mode 100644
index 59444f3..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-16.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<project name="pollins-32-16" basedir="." default="Help">
-
- <target name="p32-16.asm">
- <copy tofile="p32-16.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="16000000"/>
- <filter token="USART" value=""/>
- </filterset>
- </copy>
- </target>
-
- <target name="p32-16.hex" depends="p32-16.asm" description="Hexfiles for p32-16">
- <avrasm2 projectname="p32-16" mcu="atmega32"/>
- <delete file="p32-16.asm"/>
- </target>
-
- <target name="p32-16" depends="p32-16.hex" description="Atmega32 @ 16 MHz">
- <echo>Uploading Hexfiles for p32-16</echo>
- <avrdude
- type="stk200"
- mcu="atmega32"
- flashfile="p32-16.hex"
- eepromfile="p32-16.eep.hex"
- />
- </target>
- <target name="p32-16.back" description="Atmega32 @ 16 MHz">
- <echo>Download Hexfiles from p32-16</echo>
- <avrdude-back
- type="stk200"
- mcu="atmega32"
- flashfile="p32-16.hex"
- eepromfile="p32-16.eep.hex"
- />
- </target>
- <target name="p32-16.fuses" description="Set fuses for P32-16">
- <echo>Writing fuses</echo>
- <avrdude-2fuses
- type="stk200"
- mcu="atmega32"
- hfuse="0x99"
- lfuse="0xff"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p32-8.eep.hex b/amforth-6.5/appl/eval-pollin/p32-8.eep.hex
deleted file mode 100644
index a59fb2c..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-8.eep.hex
+++ /dev/null
@@ -1,7 +0,0 @@
-:10002A00FFFF1B0B1D018400C309520010086D0A53
-:0A003A00F4023E00ED3F01003E001D
-:06005200020065065106E4
-:10005C007E3B5E00000000005F080F080F080000E8
-:10006C000A009800A6006D0088006C02000059027E
-:08007C00C93CE83CD83C0C0033
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p32-8.hex b/amforth-6.5/appl/eval-pollin/p32-8.hex
deleted file mode 100644
index 91b0f2b..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-8.hex
+++ /dev/null
@@ -1,628 +0,0 @@
-:020000020000FC
-:020004001BD10E
-:0200080019D10C
-:02000C0017D10A
-:0200100015D108
-:0200140013D106
-:0200180011D104
-:02001C000FD102
-:020020000DD100
-:020024000BD1FE
-:0200280009D1FC
-:02002C0007D1FA
-:0200300005D1F8
-:0200340003D1F6
-:0200380001D1F4
-:02003C00FFD0F3
-:02004000FDD0F1
-:02004400FBD0EF
-:02004800F9D0ED
-:02004C00F7D0EB
-:10005000F5D00008000400701500080041546D65DB
-:100060006761333207FF3E72782D627566000000CB
-:100070003900082F10917000E0E6F0E0E10FF31D69
-:10008000008313951F7010937000899199910C94BF
-:10009000053806FF6973722D7278320001383D38D9
-:1000A0002C009838B1383D380300DF3F363859000E
-:1000B000383D3800203801383D384E003D381A00B0
-:1000C000A53C3D3860003D3816005439983E203834
-:1000D00006FF72782D62756649000138880036384F
-:1000E0006E003D3871009838B1383D3860009D3958
-:1000F0009838C4382F3A3D380F00133A3D38710014
-:100100008D38203807FF72783F2D627566006800D1
-:100110000138303D3D38710098383D3870009838CE
-:100120001339203807FF74782D706F6C6C008200D3
-:100130000138A600363899003D382C008D3820381B
-:1001400008FF74783F2D706F6C6C92000138303D61
-:100150003D382B0098383D382000133A203804FFF2
-:1001600075627272A0006F388200A03DAA3D06FF42
-:100170002B7573617274AF0001383D3898003D38BB
-:100180002A008D383D3806003D38C0008D38B30058
-:10019000B138F93A3D3840008D383D3829008D3866
-:1001A0005B00203808FF31772E7265736574B700E5
-:1001B000D9009A938A93BC9AC498E0ECF3E0319703
-:1001C000F1F71FB7F894C49ABC98E0E8F0E03197D3
-:1001D000F1F786B384FF9FEF1FBFBC98C498E0E49B
-:1001E000F3E03197F1F7892F0C94053807FF317749
-:1001F0002E736C6F7400D200FD00C498BC9A1FB7B8
-:10020000F894ECE0F0E03197F1F78894879510F4DA
-:10021000C49ABC98E2E1F0E03197F1F706B304FD2F
-:100220008068E6E6F0E03197F1F7C49ABC98E4E024
-:0C023000F0E03197F1F71FBF0C94053887
-:040000000C94393DE6
-:10023C000A920FB60A920F900F900A94B02CFF936B
-:10024C00EF93E2E7F0E00694E00DF31D00800394D9
-:10025C000082EF91FF9109900FBE0990089502FF63
-:10026C006D2BF6000138C73F153C203803FF756431
-:10027C002A0035010138B138FF38E039D938C43893
-:10028C00F638E039E1389D39203804FF756D617816
-:10029C003C010138C93E5C3936385501C438D9386F
-:1002AC00203804FF756D696E4B010138C93E673902
-:1002BC0036386101C438D938203801383D380080CF
-:1002CC00133A1A3936386C01E63F20384B3920384E
-:1002DC000AFF6E616D653E666C616773570101388C
-:1002EC00CB3B3D3800FF133A203803FF7665720094
-:1002FC006E010138CF02F803AE3FBD3E7938DD0206
-:10030C00413FC73F16031E033D382E00070334033D
-:10031C003F032E04BD3E8138AE3FE502F803203882
-:10032C0004FF6E6F6F707B010138203806FF756E0D
-:10033C0075736564960101388D3A233F93392038E3
-:10034C000200746F9C0101383D04D03FB73E7938F0
-:10035C003638BA015107B4015C0720380138F63839
-:10036C00B138C601FF38CB3BB138C601C601CB3B17
-:10037C002A38203807FF692D63656C6C2B00A601A9
-:10038C0001382F3A203808FF69636F6D7061726510
-:10039C00C0010138FF38CF38F63813393638DA0156
-:1003AC00D23ED9384B392038C43854391B0836382A
-:1003BC00FD019B3ACF387938CF38CB3BB1383D383B
-:1003CC0000015C393638EE01C4383D38FF00133A71
-:1003DC0013393638F501D23E4B39D43A20382F3AFE
-:1003EC00C438903CC4383D380200BA3AE001D23EE1
-:1003FC005439203801FF2A00C9010138A639D938EF
-:10040C00203801FF6A0000020138763A3D380700B7
-:10041C009D397938763A3D3809009D3979389D39BE
-:10042C00203804FF6461627307020138B138213946
-:10043C00363821022802203807FF646E6567617424
-:10044C006500170201383B3CE63F5439153C203817
-:10045C0005FF636D6F76650022023402BF93AF9384
-:10046C00E991F991A991B991092F082B21F01D91CE
-:10047C0011930197E1F7AF91BF91899199910C94E8
-:10048C00053805FF3273776170002E020138E138B0
-:10049C00FF38E138F63820380AFF726566696C6CF3
-:1004AC002D7469624702013875023D385A008D047B
-:1004BC007B0281385439E23E81384B3920380AFFAF
-:1004CC00736F757263652D7469625202013875021F
-:1004DC007B027938203803FF746962006502483862
-:1004EC00870004FF2374696271024838E10006FF3B
-:1004FC0065653E72616D7702013854399B3ACF388D
-:10050C005F3BCF388138903CC438903CC438C93AF2
-:10051C008502D23E203808FF696E69742D72616DB8
-:10052C007D0201383D386000023B3D382200043A20
-:10053C00820220380BFF656E7669726F6E6D656E88
-:10054C007400910248383A0009FF776F72646C6945
-:10055C0073747300000001383D380800203804FF24
-:10056C002F706164AA0201388D3AE83E9339203825
-:10057C0005FF2F686F6C6400B5020138E83E233F1D
-:10058C00933920380AFF666F7274682D6E616D6541
-:10059C00BE020138C5030700616D666F7274680096
-:1005AC00203807FF76657273696F6E00C8020138D8
-:1005BC003D384100203803FF63707500D7020138C5
-:1005CC003D382D002404203808FF6D63752D696EAD
-:1005DC00666FE10201383D382900203805FF2F7580
-:1005EC0073657200EA0201383D382C00203803FF95
-:1005FC00686C6400A0024838E30004FF686F6C6408
-:10060C00FD0201380103B1387938353AB138FF3879
-:10061C00C4388138F6388D38203802FF3C23030368
-:10062C000138E83E01038138203801FF2300130311
-:10063C000138BD3E79389B03E1383D380900CF388D
-:10064C006E3936382C033D3807009D393D38300063
-:10065C009D390703203802FF23731B0301381E0347
-:10066C00C93E1C3A1A3936383503203802FF233E6E
-:10067C0031030138D23E01037938E83ECF38933943
-:10068C00203804FF7369676E3C0301382139363812
-:10069C0052033D382D000703203803FF642E7200EF
-:1006AC0047030138FF38DA3E1B0216033403E138E6
-:1006BC004B033F03F638CF389339B73F2E0420381D
-:1006CC0002FF2E7253030138FF38C73FF638570329
-:1006DC00203802FF642E6603013854395703AE3FAD
-:1006EC00203801FF2E006F030138C73F72032038FA
-:1006FC0003FF75642E007703013854398B03AE3F2A
-:10070C00203804FF75642E727E030138FF381603FF
-:10071C0034033F03F638CF389339B73F2E042038D3
-:10072C0006FF75642F6D6F6487030138FF385439E9
-:10073C000839C239F638C438FF38C239F63820388F
-:10074C0006FF64696769743F96030138663FB138E8
-:10075C003D38390078393D380001133A9D39B138AC
-:10076C003D38400178393D380701133A93393D380B
-:10077C0030009339B138BD3E79385C3920380138B6
-:10078C0008392404F638CF382F3A043A9D392F3AD9
-:10079C00FF38203802FF732CA6030138B138D70379
-:1007AC00203801385C07B138043ADA3E0B3A9339F9
-:1007BC00FF3854391B083638EA039B3AB13879387C
-:1007CC005C07903CC93AE403F63828393638F10313
-:1007DC00B13898385C07D938203805FF69747970BE
-:1007EC006500D0030138B138043ADA3E0B3A93393C
-:1007FC00FF3854391B0836380C049B3AB138CB3BC4
-:10080C00B138190415042F3AC93A0404F6382839BA
-:10081C0036381304B138CB3B1904D9382038013899
-:10082C00F93A1904203801383D38FF00133AF23EEA
-:10083C00203806FF69636F756E74F3030138B138A5
-:10084C002F3AC438CB3B203804FF747970651F04F1
-:10085C000138993F1B08363839049B3AAC3A983822
-:10086C00F23EC93A3404203801FF27002A0401382B
-:10087C00B005F305FE05B1388B06DF3FC438CB3B22
-:10088C003D389A01DF3F1C3A36384F043D38F3FFB0
-:10089C00863DD938203805FF63736B6970003A04C4
-:1008AC000138FF38B13836386504CF3898380839F4
-:1008BC00DF3F36386504E63FA1052F385804F6387B
-:1008CC00D938203805FF637363616E005104013819
-:1008DC00FF38CF38B13898380839DF3F1A393638F5
-:1008EC008204C438353AC438CF3821391A393638ED
-:1008FC0082042F3A2F387004F038CF389339F638F9
-:10090C00D938203806FF6163636570746804013858
-:10091C00CF389D39353ACF38033FB138CE041A3928
-:10092C003638C004B1383D380800DF3F3638B004E3
-:10093C00D938E138C93E7839FF38E138E138F63832
-:10094C003638AE04C604353AFF38CF38F6384F0186
-:10095C002F38BE04B138543F6E393638B704D93805
-:10096C00543FB138F23ECF388D382F3ACF385B0137
-:10097C002F389204D938F038C4389339A13F203835
-:10098C0001383D380800B138F23EAE3FF23E203817
-:10099C000138B1383D380D00DF3FC4383D380A000E
-:1009AC00DF3F1C3A203806FF726566696C6C880460
-:1009BC00FF3D1A00C83DD43D04FF63686172D90441
-:1009CC000138B005D9389838203806FF6E756D623D
-:1009DC006572E2040138BD3E7938FF383405FF38C2
-:1009EC0047053405F6381C3AFF38B1381A39363811
-:1009FC000705D23EF638D938F638BD3E8138543921
-:100A0C0020381E3B543954392D3B6505B9383638DE
-:100A1C002905E63FDF3F3638200598383D382E0053
-:100A2C00DF3F36382105F63836381D052802EB3FF6
-:100A3C002F382F05D938D23EF638D938F638BD3E86
-:100A4C00813854392038D23EF63836382E05273EB8
-:100A5C00E63FF638BD3E81384B3920380138CF3867
-:100A6C0098383D382D00DF3FB138FF383638400517
-:100A7C00E63FA105F638203852380A001000020073
-:100A8C000A000138CF3898383D3823009339B138F3
-:100A9C0054393D380400573E36385D0542059D39C2
-:100AAC00CB3BBD3E8138E63FA1052F385E05D938DA
-:100ABC00203807FF3E6E756D62657200EB040138DD
-:100ACC00B13836387D05CF389838AB031A393638FB
-:100ADC007105D9382038FF384C02BD3E79384001B9
-:100AEC00F63838014C02E63FA1052F386605203850
-:100AFC0005FF7061727365005F050138FF3897055B
-:100B0C00E23E7938A105F6386D04B1382F3AE23E51
-:100B1C00653AE63FA105203806FF736F7572636571
-:100B2C007E05FF3D1600C83DD43D07FF2F73747240
-:100B3C00696E670092050138E138CF389D39E1388C
-:100B4C00E138933920380AFF70617273652D6E613C
-:100B5C006D659B050138543FB40520380138FF38CA
-:100B6C009705E23E7938A10508395604F6386D042C
-:100B7C00C93E9D399705D9389339E23E81382038E2
-:100B8C0003FF73703000A9056F380600C83DD43DD3
-:100B9C0002FF7370C6055838080003FF72703000EE
-:100BAC00CE050138DB05793820385838040005FFAC
-:100BBC00646570746800D3050138CA058D3A9339A1
-:100BCC00043A353A203810FF666F7274682D7265DE
-:100BDC00636F676E697A6572DD056F383400A03D0E
-:100BEC00AA3D09FF7265636F676E697A6500E90556
-:100BFC0001383D380906C4389C091A3936380806BC
-:100C0C00D23E8B0620380138E138E138C93E1E3B14
-:100C1C00E1382A382D3BE138B1388B06DF3F3638C6
-:100C2C001A06D93854392038F038F0384B39203876
-:100C3C0009FF696E7465727072657400F70501388E
-:100C4C00B005B13836383606F305FE05B73E7938AF
-:100C5C0036383106C601CB3B2A388B3F2F38260657
-:100C6C00D23E203806FF64743A6E756D1E065238FB
-:100C7C009A017207720707FF64743A646E756D000F
-:100C8C00380652389A01D73FD73F07FF7265633A4F
-:100C9C006E756D0041060138F00436385D06E63F8E
-:100CAC00DF3F36385B063D062038470620388B067A
-:100CBC00203808FF7265633A66696E644B0601382A
-:100CCC000007B1381A3936386E06D9388B062038F9
-:100CDC007506203805FF64743A7874005F06523844
-:100CEC0079067D06D73F0138D9382A3820380138A3
-:100CFC002139363883065C0720382A38203807FF1C
-:100D0C0064743A6E756C6C00700652388F068F06E0
-:100D1C008F0601383D38F3FF863D0FFF7365617216
-:100D2C0063682D776F72646C697374008506013883
-:100D3C00FF3854393D38B206F638CF06B1381A3977
-:100D4C003638AC06D23ED93854392038B138F6068C
-:100D5C00C4387501630120380138FF38D938C93ED1
-:100D6C000839EA06CF013638C006F638D938543976
-:100D7C004B392038D23EF6385439203811FF747272
-:100D8C006176657273652D776F72646C697374002C
-:100D9C00930601385F3BB1383638E006C93E1E3B3E
-:100DAC00C4382A382D3BE1383638E0060B0ACB3BE9
-:100DBC002F38D106D23E20380BFF6E616D653E7325
-:100DCC007472696E6700C406013824043D38FF0054
-:100DDC00133A203807FF6E66613E63666100E206D7
-:100DEC0001380B0A2F3A203807FF66696E642D789C
-:100DFC007400F00601383D380C073D3840009C0962
-:100E0C001A3936380B07D23E543920380138FF389E
-:100E1C00C93EF6389D06B13836381907FF38F03818
-:100E2C00F038F6384B39203806FF6E6577657374E9
-:100E3C00FA064838E50006FF6C61746573741A078E
-:100E4C004838E90008FF2863726561746529210739
-:100E5C000138B0058508B1381F07903C81386A0805
-:100E6C001F078138203801005C00280701389705DE
-:100E7C00F038E23E8138203801002800390701386B
-:100E8C003D3829008305D23E203807FF636F6D7013
-:100E9C00696C650042070138F638B138C601FF3875
-:100EAC00CB3B5C07203801FF2C004B070138123F6D
-:100EBC00733B123F2F3AB401133F203803005B27DA
-:100ECC005D00590701383D047207203807006C6932
-:100EDC00746572616C006407013851073D385C071A
-:100EEC0020380800736C69746572616C6C0701388A
-:100EFC005107C503D30320380138123F5107FFFFB8
-:100F0C00203801388B3F123FC438733B20380138EE
-:100F1C00123F203801388B3F5C0720380500616890
-:100F2C00656164007707013851072F388207203834
-:100F3C000200696694070138510736388207203859
-:100F4C000400656C73659E07013851072F388207C2
-:100F5C00C4388707203804007468656EA60701380A
-:100F6C00870720380500626567696E00B107013894
-:100F7C008D07203805007768696C6500B807013863
-:100F8C00A107C43820380600726570656174C0070B
-:100F9C000138E207B50720380500756E74696C00DE
-:100FAC00C90701383D3836385C07900720380500F2
-:100FBC00616761696E00D207013851072F389007BD
-:100FCC0020380200646FDD07013851079B3A8D070A
-:100FDC0054394508203804006C6F6F70E7070138EE
-:100FEC005107C93A2C08203805002B6C6F6F700024
-:100FFC00F10701385107BA3A2C08203805006C6506
-:10100C0061766500FA0701385107D43A990745080B
-:10101C00203803003F646F000408013851071B0897
-:10102C00A107EA07C438450820380138C93EDF3F1C
-:10103C00B138FF3836382308D23EF638FD3920381F
-:10104C0007FF656E646C6F6F70000F0801389007B6
-:10105C003908B93836383508B5072F382E082038F6
-:10106C0002FF6C3E260801385808793879383D382B
-:10107C00FEFF5808653A203802FF3E6C36080138EE
-:10108C00EB3F5808653A580879388138203803FF07
-:10109C006C70300042086F383600A03DAA3D02FF4C
-:1010AC006C704D084838EB0006FF6372656174651F
-:1010BC00550801382E078E0851075238203806FF84
-:1010CC006865616465725A080138123FFF38FF3851
-:1010DC00B138283936387C08B1383D3800FF1C3A15
-:1010EC00D703F6385F3B5C07F63820383D38F0FF05
-:1010FC00863D07FF776C73636F7065006508FF3D75
-:10110C003200A03DAA3D06FF72657665616C7F08D2
-:10111C0001381F07903C7938B938363899081F07C1
-:10112C007938C4383B3B20380500646F65733E004A
-:10113C00890801385107B20851070E945107A708C6
-:10114C0020389A938A93CB0101967F916F91BF932C
-:10115C00AF93DB010C9405380138F6381F07903C2F
-:10116C0079385F3BF606733B203801FF3A009A084A
-:10117C0001382E07C908D938203807FF3A6E6F6E30
-:10118C00616D6500BB080138123FB1382607813804
-:10119C0051070138DE08203801003B00C308013834
-:1011AC0051072038E6088E08203801FF5D00D20870
-:1011BC000138E63FB73E8138203801005B00DB0880
-:1011CC0001385439B73E8138203808FF766172698E
-:1011DC0061626C65E3080138233FFD08EB3F2C3F4F
-:1011EC00203808FF636F6E7374616E74EB080138FE
-:1011FC002E078E08510748385C07203804FF75739A
-:10120C006572F70801382E078E08510758385C07AD
-:10121C002038070072656375727365000409013824
-:10122C00260779385C07203809FF696D6D6564699C
-:10123C00617465000F090138C3095F3BB138CB3BC2
-:10124C003D38FF7F133AC438733B203806005B638C
-:10125C006861725D1A09013851073D38E6045C0774
-:10126C002038060061626F7274222C0901388A3EA4
-:10127C0051074E09203805FF61626F7274003709FF
-:10128C0001384B39863D06FF3F61626F727441092C
-:10129C000138E13836385409F8034609D23E203873
-:1012AC0009FF6765742D737461636B00490901381C
-:1012BC00B138903CC4385F3BB138FF385439C4382E
-:1012CC001B08363874099B3AAC3A353AC43ECF38D1
-:1012DC009D395F3BC4384B39BA3A6A09D23EF6386D
-:1012EC00203809FF7365742D737461636B005609A4
-:1012FC000138CF382139363886093D38FCFF863D18
-:10130C00C93E3B3BC43854391B08363893099B3AC9
-:10131C00903CDA3E3B3BC93A8E09D938203809FF5C
-:10132C006D61702D737461636B0077090138B1388E
-:10133C00903CC4385F3BC43E993F1B083638B80913
-:10134C009B3AAC3A5F3BC438FF3808392A38B93875
-:10135C003638B409F638D938D43A2038F638EB3F59
-:10136C00BA3AA709D938543920380BFF6765742D60
-:10137C0063757272656E7400950901383D383C00D6
-:10138C005F3B203809FF6765742D6F7264657200CE
-:10139C00BB0901383D3840005D09203809FF636600
-:1013AC00672D6F7264657200C8094838400007FFEA
-:1013BC00636F6D7061726500D409E409BF93AF93DC
-:1013CC008C0189919991DC01899199919C01899168
-:1013DC009991FC01ED90F190EF1451F40A9519F0EC
-:1013EC002A95C1F701C02A95022B11F4882702C057
-:1013FC008FEF00C0982FAF91BF910C94053807FF69
-:10140C006E66613E6C666100DD090138EA062F3AB2
-:10141C00043A9D39203802FF2E73050A0138E20583
-:10142C000A3EAE3FE20554391B083638230A9B3A74
-:10143C00AC3A843C0A3EC93A1E0A203806FF6321A6
-:10144C0040737069110A2A0A03D099270C94053845
-:10145C008FB90EB1087F0EB90EB107FFFACF8FB15D
-:10146C00089505FF6E4073706900240A3D0A8C01D3
-:10147C0089919991FC01C8012FB82EB127FFFDCF9E
-:10148C002FB121930197C1F7899199910C9405384B
-:10149C0005FF6E2173706900370A540A8C0189911B
-:1014AC009991FC01C80121912FB92EB127FFFDCFD5
-:1014BC002FB10197C1F7899199910C9405380BFFC5
-:1014CC006170706C7475726E6B6579004E0A0138C0
-:1014DC00BC00973C7F01AE3FAC3E3D38E803C239BF
-:1014EC00F038413F7A03C50304006B487A20F803B7
-:1014FC0020380BFF7365742D63757272656E740002
-:10150C00650A01383D383C003B3B203808FF776FBB
-:10151C0072646C6973747F0A01381B3F5439CF387D
-:10152C003B3BB138903CB4011C3F20380EFF666F3A
-:10153C007274682D776F72646C6973748C0A483896
-:10154C003E0009FF7365742D6F72646572009C0A0E
-:10155C0001383D3840007E0920380FFF7365742D2B
-:10156C007265636F676E697A65727300A70A0138DA
-:10157C003D3852007E0920380FFF6765742D726567
-:10158C00636F676E697A65727300B30A01383D3810
-:10159C0052005D09203804FF636F6465C20A01388C
-:1015AC002E078E08123FC6015C07203808FF656EB7
-:1015BC00642D636F6465D10A013851070C9451078F
-:1015CC000538203808FF286D61726B657229DC0ABA
-:1015DC006F385E00A03DAA3D0800706F7374706F89
-:1015EC006E65E80A0138B005F305FE05B138FF3821
-:1015FC00C601C601CB3B2A38F638C601CB3B5C078B
-:10160C00203803FF32724000F20A0C0B9A938A9333
-:10161C00EF91FF918F919F919F938F93FF93EF93F6
-:0A162C009A938A93CF010C940538BD
-:10700200BF93AF93DB011196B21469F4FD01EE0F49
-:10701200FF1F659175911196FB01EE0FFF1F059100
-:107022001591F80109949A938A938B2D9927BB2481
-:1070320060EC7CE3F1CF04FF65786974070B2138BB
-:10704200AF91BF91E1CF07FF657865637574650005
-:107052001C382B38BC0189919991DECF3038FD0163
-:10706200EE0FFF1FA591B591CFCF3738982B89919D
-:107072009991A9F31196C8CF3E389A938A93FD014C
-:10708200EE0FFF1F859195911196BECF48389A93C6
-:107092008A93FB013196EE0FFF1F85919591B4CF34
-:1070A20052389A938A93CB010196AECF58389A936D
-:1070B2008A93FB013196EE0FFF1F85919591840D06
-:1070C200951DA2CF07FF2876616C756529002438CB
-:1070D20001382E078E0851076F3820380E94A70802
-:1070E200B138C601CB3B2A38203801FF4000633853
-:1070F2007A38FC018191919187CF01FF2100763886
-:107102008238FC0189919991918380838991999127
-:107112007BCF02FF63217E388E38FC0189919991E1
-:1071220080838991999170CF02FF63408A389938A0
-:10713200FC019927808168CF02FF4075953801389C
-:10714200023B9D397938203802FF21759D3801387C
-:10715200023B9D398138203803FF64757000A538E1
-:10716200B2389A938A9350CF04FF3F647570AD385A
-:10717200BA38082F092B11F09A938A9345CF04FF4E
-:1071820073776170B538C5388C01899199911A93DA
-:107192000A933ACF04FF6F766572C038D0389A935B
-:1071A2008A938A819B8130CF04FF64726F70CB38DF
-:1071B200DA388991999128CF03FF726F7400D5381C
-:1071C200E2388C0129913991899199913A932A93C4
-:1071D2001A930A9319CF03FF6E697000DD38F138F4
-:1071E200229612CF02FF723EEC38F7389A938A93B6
-:1071F2008F919F9109CF02FF3E72F33800399F931E
-:107202008F938991999100CF02FF7240FC3809391E
-:107212009A938A938F919F919F938F93F5CE02FFBA
-:107222003C3E05390138DF3F1A39203802FF303D34
-:1072320010391B39982BD1F530C002FF303C173979
-:10724200223997FD2AC032C002FF303E1E39293949
-:10725200821593055CF151F120C003FF64303E00BA
-:1072620025393339821593058991999182059305C0
-:10727200ECF0E1F012C003FF64303C002E394139DA
-:10728200229697FD0C944E390C94573904FF747270
-:1072920075653C394C399A938A938FEF9FEFB4CE40
-:1072A20001FF3000473955399A938A93C101ACCE18
-:1072B20002FF753C51395D39299139918217930743
-:1072C200A8F3A1F3EACF02FF753E59390138C43859
-:1072D2005C39203801FF3C0064396F3929913991BA
-:1072E200281739071CF7D9CF01FF3E006B397939CE
-:1072F2002991399128173907CCF2C1F2CECF04FF78
-:107302006C6F673275398539FC01992780E18A955E
-:1073120022F0EE0FFF1FD8F777CE9A9575CE01FFB8
-:107322002D008039943909911991081B190BC80154
-:107332006BCE01FF2B0090399E3909911991800F74
-:10734200911F62CE02FF6D2A9A39A7398C01899169
-:1073520099919C0131027001209FC0013003F30812
-:10736200900DE11CF31C1203F308900DE11CF31CB9
-:107372009A938A93C70148CE06FF756D2F6D6F648D
-:10738200A339C3397C01299139910991199140E1BD
-:107392005527000F111F221F331F551F2E153F05A2
-:1073A200520518F003952E193F094A9589F73A9329
-:1073B2002A93C80129CE03FF756D2A00BD39E13930
-:1073C2008C0189919991809FF00122273327909F08
-:1073D200F00D211D331D819FF00D211D331D919F45
-:1073E200200D311DCF019A938A93C9010DCE06FF5C
-:1073F200696E76657274DC39FE398095909504CE9B
-:1074020002FF322FF839053A95958795FDCD02FF97
-:10741200322A013A0C3A880F991FF6CD03FF616EAA
-:107422006400083A143A0991199180239123ECCD12
-:1074320002FF6F720F3A1D3A09911991802B912B1D
-:10744200E3CD03FF786F7200193A273A0991199137
-:1074520080279127D9CD02FF312B223A303A01966B
-:10746200D3CD02FF312D2C3A363A0197CDCD07FF0D
-:107472003F6E656761746500323A013821393638EA
-:10748200433A273E203806FF6C7368696674383ABF
-:107492004A3AFC018991999131971AF0880F991F04
-:1074A200FBCFB2CD06FF727368696674443A593AEB
-:1074B200FC018991999131971AF096958795FBCFA6
-:1074C200A3CD02FF2B21533A663AFC01899199918F
-:1074D20020813181820F931F8083918389919991B9
-:1074E20093CD03FF72704000623A773A9A938A937F
-:1074F2008DB79EB789CD03FF72702100723A813A2F
-:107502002FB7F8948DBF9EBF2FBF899199917CCDE3
-:1075120003FF737040007C3A8E3A9A938A93CE01AD
-:1075220073CD03FF73702100893A973AEC01899178
-:1075320099916ACD9C3A29913991E0E83E0F821BDC
-:10754200930B3F932F939F938F93899199915CCD46
-:1075520001FF6900923AAD3A9A938A938F919F9173
-:10756200EF91FF91FF93EF939F938F938E0F9F1F46
-:107572004BCDBB3AEF91FF91E80FF91F8991999199
-:107582001BF0FF93EF936BCD0F911F9111963CCDA2
-:10759200CA3AEF91FF913196BBF3F3CF06FF756EB6
-:1075A2006C6F6F70A93AD53A1F910F911F910F918D
-:1075B2002BCD06FF636D6F76653ECF3AE03ABF93FF
-:1075C200AF93E991F991A991B991092F082B41F053
-:1075D200E80FF91FA80FB91F1E9112930197E1F747
-:1075E200AF91BF91899199910FCD02FF3E3CDA3A5A
-:1075F200FA3A092F982F802F07CD03FF75704000AC
-:10760200F63A033B9A938A93C201FECC03FF75704C
-:107612002100FE3A0C3B2C0189919991F5CC03FF94
-:10762200316D7300073B153BE0EDF7E03197F1F761
-:10763200EBCC03FF323E7200103B1F3BFC018991F1
-:1076420099919F938F93FF93EF9389919991DCCCBA
-:1076520003FF32723E001A3B2E3B9A938A93EF91BC
-:10766200FF918F919F919A938A93CF01CDCC02FF84
-:107672002165293B3C3BFC01899199912FB7F894F4
-:1076820028D00DB3081709F00BD0319622D00DB3D4
-:10769200091711F0892F04D02FBF89919991B4CC89
-:1076A200E199FECF07B700FDFDCFFFBBEEBB8DBB5F
-:1076B200E29AE19A089502FF4065383B603B2FB79A
-:1076C200F894FC0106D08DB3319603D09DB32FBF41
-:1076D2009BCCE199FECFFFBBEEBBE09A089502FF7F
-:1076E20021695C3BFF3D5C00A03DAA3D09FF2821CA
-:1076F200692D6E7277772900703B7F3B1FB71F930E
-:10770200F8949C0189919991AF93BF93CF93DF93A2
-:1077120009D0DF91CF91BF91AF91899199911F913A
-:107722001FBF72CC10D0E094F0948E219F21982B31
-:1077320019F0F90102E020D0F90104E01DD0F901AD
-:1077420000E11AD00895F901E07CFF7FEF01A0E487
-:10775200B0E0FE01EE0FFF1F45915591FE01E217C9
-:10776200F30711F00A0102C07A010C01002704D0CC
-:107772002196119771F70895E199FECF17B710FD81
-:10778200FDCFEE0FFF1F016007BFE895089502FFCE
-:107792004069773BCC3BFC01EE0FFF1F8591959131
-:1077A20033CC03FF6E3E7200C83BD73BFC01082F6F
-:1077B200899199919F938F930A95D1F7EF93FF93B4
-:1077C2008991999121CC03FF6E723E00D23BE93B35
-:1077D2009A938A93FF91EF910E2F8F919F919A9393
-:1077E2008A930A95D1F7CF010FCC03FF64322A00A6
-:1077F200E43BFB3B09911991000F111F881F991F50
-:107802001A930A9301CC03FF64322F00F63B093C22
-:107812000991199195958795179507951A930A934A
-:10782200F3CB02FF642B043C163C29913991E99079
-:10783200F99049915991240F351F8E1D9F1D3A933E
-:107842002A93E2CB02FF642D123C273C2991399105
-:10785200E990F99049915991421B530BE80AF90AB0
-:107862005A934A93C701D0CB07FF64696E7665725B
-:107872007400233C3C3C09911991809590950095A8
-:1078820010951A930A93C0CB04FF2F6D6F64353C99
-:107892004A3C9C0109911991412F432717FF04C0CB
-:1078A200109500950F5F1F4F37FF04C0309520954C
-:1078B2002F5F3F4FEE24FF1851E1001F111F5A9511
-:1078C20039F447FF04C0109500950F5F1F4F0BC09E
-:1078D200EE1CFF1CE21AF30A20F4E20EF31E889457
-:1078E200ECCF0894EACFFA92EA92C8018DCB03FF5B
-:1078F20061627300453C0138B1383E3A203804FFDA
-:107902007069636B783C01382F3AC43E8D3A9D39D9
-:107912007938203805FF63656C6C2B00803C913C04
-:10792200029672CB04FF2B696E748B3C983C789460
-:107932006BCB04FF2D696E74933C9F3CF89464CB2F
-:1079420004FF696E74219A3C01383D3800009D396C
-:107952003B3B203804FF696E7440A13C01383D383E
-:1079620000009D395F3B203808FF696E742D7472E8
-:107972006170AB3CBC3CB82E8991999145CB0138E2
-:10798200AF3C2A38C53C2038C63C01D03DCB1895C7
-:107992000138C5030300206F6B00F803203803FF92
-:1079A2002E6F6B00B53CFF3D1C00C83DD43D013835
-:1079B200C50302003E20A13FF803203806FF2E72C5
-:1079C20065616479D03CFF3D2000C83DD43D01385B
-:1079D200C5030400203F3F20F803BD3E7938FF383D
-:1079E200413F7A03E23E79387A03F638BD3E813868
-:1079F200203806FF2E6572726F72DF3CFF3D1E005B
-:107A0200C83DD43D04FF71756974FA3C01385108D0
-:107A120058088138CA05963AD705803AE608B73E33
-:107A220079381A393638163DE43CDE043638283DBA
-:107A32003D382506703DB9383638283DB1383D38D5
-:107A4200FEFF6E393638263DFF3C2F38083DD43CC8
-:107A52002F38103D05FF706175736500033DFF3DD2
-:107A6200ED00B43DBE3D04FF636F6C642B3D393DB8
-:107A7200A4B622243324BB2424BEE0E6F0E0219203
-:107A8200E036E9F7F830D9F7EFEEF0E02F010FE535
-:107A92000DBF048318E01EBF1583CFE0C683D8E074
-:107AA200D783AAE5BDE3B0CA04FF7761726D343DA6
-:107AB200013897023D389A013D38303DDF3DE608F6
-:107AC2005C3F073D07FF68616E646C657200553D5F
-:107AD20058380A0005FF636174636800633D01382A
-:107AE2008D3AFF38693D7938FF38763A693D8138F9
-:107AF2002A38F638693D8138F638D9385439203871
-:107B020005FF7468726F77006B3D0138B1381A391E
-:107B120036388D3DD9382038693D7938803AF63883
-:107B2200693D8138F638C438FF38963AD938F63884
-:107B3200203807FF4564656665724000813D013863
-:107B4200CB3B5F3B203807FF4564656665722100C9
-:107B52009A3D0138CB3B3B3B203807FF52646566B8
-:107B620065724000A43D0138CB3B7938203807FFCD
-:107B72005264656665722100AE3D0138CB3B8138A7
-:107B8200203807FF5564656665724000B83D0138CC
-:107B9200CB3B023B9D397938203807FF5564656637
-:107BA20065722100C23D0138CB3B023B9D398138D1
-:107BB200203806FF646566657221CE3D0138D03FEC
-:107BC200B138C601C601CB3B2A38203806FF6465AE
-:107BD20066657240DA3D0138D03FB138C601CB3B11
-:107BE2002A38203807FF2864656665722900E73D58
-:107BF20001382E078E085107FF3D20380E94A70842
-:107C0200B138C601CB3B2A382A38203802FF752EFC
-:107C1200F33D013854398203203803FF752E720078
-:107C2200073E01385439C4388B03203805FF752FBD
-:107C32006D6F64000E3E0138FF385439F638C23990
-:107C4200203806FF6E6567617465173E0138FD399D
-:107C52002F3A203801FF2F00223E0138493CF038EC
-:107C6200203803FF6D6F64002B3E0138493CD93840
-:107C7200203803FF6D696E00323E0138C93E783903
-:107C82003638443EC438D938203803FF6D61780055
-:107C92003A3E0138C93E6E393638503EC438D9387A
-:107CA200203806FF77697468696E463E0138CF381E
-:107CB2009339FF389339F6385C3920380DFF7368F1
-:107CC2006F772D776F72646C69737400523E01385E
-:107CD2003D386E3EC438CF0620380138EA06F80334
-:107CE200AE3F4B39203805FF776F726473005F3EF9
-:107CF20001383D3842005F3B683E203802002E22A8
-:107D0200743E01388A3E5107F8032038020073227C
-:107D12007F3E01383D3822008305B73E7938363838
-:107D2200933E7D07203804FF66696C6C873E0138FC
-:107D3200E138E138B9383638A53E993F9B3AB13837
-:107D4200AC3A8D38C93AA03ED938203805FF665F73
-:107D520063707500943E01383D3800123D387A0058
-:107D6200203805FF737461746500A73E48381B0113
-:107D720004FF62617365B23E58380C0005FF63650B
-:107D82006C6C7300B93E0C3A04FF32647570BF3EEE
-:107D92000138CF38CF38203805FF3264726F700057
-:107DA200C53E0138D938D938203804FF7475636B61
-:107DB200CD3E0138C438CF38203803FF3E696E000B
-:107DC200D63E5838180003FF70616400DE3E013869
-:107DD200233F3D3828009D39203804FF656D6974C2
-:107DE200E43EFF3D0E00C83DD43D05FF656D69745C
-:107DF2003F00EE3EFF3D1000C83DD43D03FF6B65E2
-:107E02007900F63EFF3D1200C83DD43D04FF6B658C
-:107E1200793FFF3EFF3D1400C83DD43D02FF647030
-:107E2200073F6F382C00A03DAA3D05FF65686572CB
-:107E320065000F3F6F383000A03DAA3D04FF686522
-:107E42007265163F6F382E00A03DAA3D05FF616C9A
-:107E52006C6F74001F3F0138233F9D39B401243FEA
-:107E6200203803FF62696E00273F0138EB3FBD3EB9
-:107E72008138203807FF646563696D616C00323FA9
-:107E820001383D380A00BD3E8138203803FF68655D
-:107E920078003B3F01383D381000BD3E8138203824
-:107EA20002FF626C473F4838200007FF7475726E0C
-:107EB2006B657900513FFF3D3800A03DAA3D07FFA9
-:107EC200746F757070657200563F0138B1383D3875
-:107ED20061003D387B00573E3638723F3D38DF0047
-:107EE200133A203807FF746F6C6F77657200603F3A
-:107EF2000138B1383D3841003D385B00573E3638D5
-:107F0200853F3D3820001C3A203806FF3F737461DC
-:107F1200636B733F0138E20521393638933F3D38B0
-:107F2200FCFF863D203806FF626F756E6473863FE4
-:107F32000138CF389D39C438203802FF6372943F2C
-:107F420001383D380D00F23E3D380A00F23E20383D
-:107F520005FF7370616365009E3F0138543FF23E36
-:107F6200203806FF737061636573A93F0138543985
-:107F72004A3EB1383638C13FAE3F353A2F38BA3F64
-:107F8200D938203803FF733E6400B23F0138B1385C
-:107F92002139203805FF3E626F647900C33F303AD1
-:107FA2000800326C69746572616CCB3F0138C43869
-:107FB20072077207203801FF3D00D13F0138933923
-:107FC2001A39203801FF3100DC3F4838010001FF37
-:107FD2003200E33F4838020002FF2D31E83F4838C3
-:027FE200FFFF9F
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p32-8.lst b/amforth-6.5/appl/eval-pollin/p32-8.lst
deleted file mode 100644
index 0922f73..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-8.lst
+++ /dev/null
@@ -1,10420 +0,0 @@
-
-AVRASM ver. 2.1.52 p32-8.asm Sun Apr 30 20:10:14 2017
-
-p32-8.asm(5): Including file '../../avr8\preamble.inc'
-../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm'
-../../avr8\macros.asm(6): Including file '../../avr8\user.inc'
-../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega32\device.asm'
-../../avr8/devices/atmega32\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m32def.inc'
-p32-8.asm(14): Including file '../../avr8\drivers/usart.asm'
-../../avr8\drivers/usart.asm(30): Including file '../../avr8\drivers/usart_common.asm'
-../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm'
-../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm'
-../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm'
-../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm'
-p32-8.asm(19): Including file '../../avr8\drivers/1wire.asm'
-p32-8.asm(21): Including file '../../avr8\amforth.asm'
-../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm'
-../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc'
-../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm'
-../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm'
-../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm'
-../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm'
-../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm'
-../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm'
-../../avr8\dict/rww.inc(11): Including file '../../avr8\dict/appl_4k.inc'
-../../avr8\dict/appl_4k.inc(1): Including file '../../common\words/ver.asm'
-../../avr8\dict/appl_4k.inc(4): Including file '../../common\words/noop.asm'
-../../avr8\dict/appl_4k.inc(5): Including file '../../avr8\words/unused.asm'
-../../avr8\dict/appl_4k.inc(6): Including file '../../common\words/to.asm'
-../../avr8\dict/appl_4k.inc(7): Including file '../../avr8\words/i-cellplus.asm'
-../../avr8\dict/appl_4k.inc(8): Including file '../../avr8\words/icompare.asm'
-../../avr8\dict/appl_4k.inc(9): Including file '../../common\words/star.asm'
-../../avr8\dict/appl_4k.inc(10): Including file '../../avr8\words/j.asm'
-../../avr8\dict/appl_4k.inc(11): Including file '../../avr8\words/dabs.asm'
-../../avr8\dict/appl_4k.inc(12): Including file '../../avr8\words/dnegate.asm'
-../../avr8\dict/appl_4k.inc(13): Including file '../../avr8\words/cmove.asm'
-../../avr8\dict/appl_4k.inc(14): Including file '../../common\words/2swap.asm'
-../../avr8\dict/appl_4k.inc(15): Including file '../../common\words/tib.asm'
-../../avr8\dict/appl_4k.inc(16): Including file '../../avr8\words/init-ram.asm'
-../../avr8\dict/appl_4k.inc(20): Including file '../../avr8\words/environment.asm'
-../../avr8\dict/appl_4k.inc(21): Including file '../../avr8\words/env-wordlists.asm'
-../../avr8\dict/appl_4k.inc(22): Including file '../../avr8\words/env-slashpad.asm'
-../../avr8\dict/appl_4k.inc(23): Including file '../../common\words/env-slashhold.asm'
-../../avr8\dict/appl_4k.inc(24): Including file '../../common\words/env-forthname.asm'
-../../avr8\dict/appl_4k.inc(25): Including file '../../common\words/env-forthversion.asm'
-../../avr8\dict/appl_4k.inc(26): Including file '../../common\words/env-cpu.asm'
-../../avr8\dict/appl_4k.inc(27): Including file '../../avr8\words/env-mcuinfo.asm'
-../../avr8\dict/appl_4k.inc(28): Including file '../../common\words/env-usersize.asm'
-../../avr8\dict/appl_4k.inc(30): Including file '../../avr8\words/hld.asm'
-../../avr8\dict/appl_4k.inc(31): Including file '../../common\words/hold.asm'
-../../avr8\dict/appl_4k.inc(32): Including file '../../common\words/less-sharp.asm'
-../../avr8\dict/appl_4k.inc(33): Including file '../../common\words/sharp.asm'
-../../avr8\dict/appl_4k.inc(34): Including file '../../common\words/sharp-s.asm'
-../../avr8\dict/appl_4k.inc(35): Including file '../../common\words/sharp-greater.asm'
-../../avr8\dict/appl_4k.inc(36): Including file '../../common\words/sign.asm'
-../../avr8\dict/appl_4k.inc(37): Including file '../../common\words/d-dot-r.asm'
-../../avr8\dict/appl_4k.inc(38): Including file '../../common\words/dot-r.asm'
-../../avr8\dict/appl_4k.inc(39): Including file '../../common\words/d-dot.asm'
-../../avr8\dict/appl_4k.inc(40): Including file '../../common\words/dot.asm'
-../../avr8\dict/appl_4k.inc(41): Including file '../../common\words/ud-dot.asm'
-../../avr8\dict/appl_4k.inc(42): Including file '../../common\words/ud-dot-r.asm'
-../../avr8\dict/appl_4k.inc(43): Including file '../../common\words/ud-slash-mod.asm'
-../../avr8\dict/appl_4k.inc(44): Including file '../../common\words/digit-q.asm'
-../../avr8\dict/appl_4k.inc(46): Including file '../../avr8\words/do-sliteral.asm'
-../../avr8\dict/appl_4k.inc(47): Including file '../../avr8\words/scomma.asm'
-../../avr8\dict/appl_4k.inc(48): Including file '../../avr8\words/itype.asm'
-../../avr8\dict/appl_4k.inc(49): Including file '../../avr8\words/icount.asm'
-../../avr8\dict/appl_4k.inc(50): Including file '../../common\words/type.asm'
-../../avr8\dict/appl_4k.inc(51): Including file '../../common\words/tick.asm'
-../../avr8\dict/appl_4k.inc(53): Including file '../../common\words/cskip.asm'
-../../avr8\dict/appl_4k.inc(54): Including file '../../common\words/cscan.asm'
-../../avr8\dict/appl_4k.inc(55): Including file '../../common\words/accept.asm'
-../../avr8\dict/appl_4k.inc(56): Including file '../../common\words/refill.asm'
-../../avr8\dict/appl_4k.inc(57): Including file '../../common\words/char.asm'
-../../avr8\dict/appl_4k.inc(58): Including file '../../common\words/number.asm'
-../../avr8\dict/appl_4k.inc(59): Including file '../../common\words/q-sign.asm'
-../../avr8\dict/appl_4k.inc(60): Including file '../../common\words/set-base.asm'
-../../avr8\dict/appl_4k.inc(61): Including file '../../common\words/to-number.asm'
-../../avr8\dict/appl_4k.inc(62): Including file '../../common\words/parse.asm'
-../../avr8\dict/appl_4k.inc(63): Including file '../../common\words/source.asm'
-../../avr8\dict/appl_4k.inc(64): Including file '../../common\words/slash-string.asm'
-../../avr8\dict/appl_4k.inc(65): Including file '../../common\words/parse-name.asm'
-../../avr8\dict/appl_4k.inc(66): Including file '../../avr8\words/sp0.asm'
-../../avr8\dict/appl_4k.inc(67): Including file '../../avr8\words/rp0.asm'
-../../avr8\dict/appl_4k.inc(68): Including file '../../common\words/depth.asm'
-../../avr8\dict/appl_4k.inc(69): Including file '../../avr8\words/forth-recognizer.asm'
-../../avr8\dict/appl_4k.inc(70): Including file '../../common\words/recognize.asm'
-../../avr8\dict/appl_4k.inc(71): Including file '../../common\words/interpret.asm'
-../../avr8\dict/appl_4k.inc(72): Including file '../../common\words/rec-intnum.asm'
-../../avr8\dict/appl_4k.inc(73): Including file '../../common\words/rec-find.asm'
-../../avr8\dict/appl_4k.inc(74): Including file '../../common\words/dt-null.asm'
-../../avr8\dict/appl_4k.inc(75): Including file '../../common\words/search-wordlist.asm'
-../../avr8\dict/appl_4k.inc(76): Including file '../../common\words/traverse-wordlist.asm'
-../../avr8\dict/appl_4k.inc(77): Including file '../../common\words/name2string.asm'
-../../avr8\dict/appl_4k.inc(78): Including file '../../avr8\words/nfa2cfa.asm'
-../../avr8\dict/appl_4k.inc(79): Including file '../../common\words/find-xt.asm'
-../../avr8\dict/appl_4k.inc(81): Including file '../../avr8\dict/compiler1.inc'
-../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm'
-../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm'
-../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm'
-../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm'
-../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm'
-../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm'
-../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm'
-../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm'
-../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm'
-../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm'
-../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm'
-../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm'
-../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm'
-../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm'
-../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm'
-../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm'
-../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm'
-../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm'
-../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm'
-../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm'
-../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm'
-../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm'
-../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm'
-../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm'
-../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm'
-../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm'
-../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm'
-../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm'
-../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm'
-../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm'
-../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm'
-../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm'
-../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm'
-../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm'
-../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm'
-../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm'
-../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm'
-../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm'
-../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm'
-../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm'
-../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm'
-../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm'
-../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm'
-../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm'
-../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm'
-../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm'
-../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm'
-../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm'
-../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm'
-../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm'
-../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm'
-../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm'
-../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm'
-../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm'
-../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm'
-../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm'
-../../avr8\dict/compiler1.inc(67): Including file '../../common\words/get-order.asm'
-../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-order.asm'
-../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm'
-../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm'
-../../avr8\amforth.asm(15): Including file 'dict_appl.inc'
-dict_appl.inc(3): Including file '../../common\words/dot-s.asm'
-dict_appl.inc(4): Including file '../../avr8\words/spirw.asm'
-dict_appl.inc(5): Including file '../../avr8\words/n-spi.asm'
-dict_appl.inc(6): Including file 'words/applturnkey.asm'
-dict_appl.inc(7): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm'
-../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm'
-../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm'
-../../avr8\dict/compiler2.inc(12): Including file '../../common\words/set-order.asm'
-../../avr8\dict/compiler2.inc(13): Including file '../../common\words/set-recognizer.asm'
-../../avr8\dict/compiler2.inc(14): Including file '../../common\words/get-recognizer.asm'
-../../avr8\dict/compiler2.inc(15): Including file '../../avr8\words/code.asm'
-../../avr8\dict/compiler2.inc(16): Including file '../../avr8\words/end-code.asm'
-../../avr8\dict/compiler2.inc(17): Including file '../../avr8\words/marker.asm'
-../../avr8\dict/compiler2.inc(18): Including file '../../common\words/postpone.asm'
-dict_appl.inc(8): Including file '../../avr8\words/2r_fetch.asm'
-../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm'
-../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc'
-../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm'
-../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm'
-../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm'
-../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm'
-../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm'
-../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm'
-../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm'
-../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm'
-../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm'
-../../avr8\dict/nrww.inc(15): Including file '../../avr8\words/fetch.asm'
-../../avr8\dict/nrww.inc(16): Including file '../../avr8\words/store.asm'
-../../avr8\dict/nrww.inc(17): Including file '../../avr8\words/cstore.asm'
-../../avr8\dict/nrww.inc(18): Including file '../../avr8\words/cfetch.asm'
-../../avr8\dict/nrww.inc(19): Including file '../../avr8\words/fetch-u.asm'
-../../avr8\dict/nrww.inc(20): Including file '../../avr8\words/store-u.asm'
-../../avr8\dict/nrww.inc(23): Including file '../../avr8\words/dup.asm'
-../../avr8\dict/nrww.inc(24): Including file '../../avr8\words/qdup.asm'
-../../avr8\dict/nrww.inc(25): Including file '../../avr8\words/swap.asm'
-../../avr8\dict/nrww.inc(26): Including file '../../avr8\words/over.asm'
-../../avr8\dict/nrww.inc(27): Including file '../../avr8\words/drop.asm'
-../../avr8\dict/nrww.inc(28): Including file '../../avr8\words/rot.asm'
-../../avr8\dict/nrww.inc(29): Including file '../../avr8\words/nip.asm'
-../../avr8\dict/nrww.inc(31): Including file '../../avr8\words/r_from.asm'
-../../avr8\dict/nrww.inc(32): Including file '../../avr8\words/to_r.asm'
-../../avr8\dict/nrww.inc(33): Including file '../../avr8\words/r_fetch.asm'
-../../avr8\dict/nrww.inc(36): Including file '../../common\words/not-equal.asm'
-../../avr8\dict/nrww.inc(37): Including file '../../avr8\words/equalzero.asm'
-../../avr8\dict/nrww.inc(38): Including file '../../avr8\words/lesszero.asm'
-../../avr8\dict/nrww.inc(39): Including file '../../avr8\words/greaterzero.asm'
-../../avr8\dict/nrww.inc(40): Including file '../../avr8\words/d-greaterzero.asm'
-../../avr8\dict/nrww.inc(41): Including file '../../avr8\words/d-lesszero.asm'
-../../avr8\dict/nrww.inc(43): Including file '../../avr8\words/true.asm'
-../../avr8\dict/nrww.inc(44): Including file '../../avr8\words/zero.asm'
-../../avr8\dict/nrww.inc(45): Including file '../../avr8\words/uless.asm'
-../../avr8\dict/nrww.inc(46): Including file '../../common\words/u-greater.asm'
-../../avr8\dict/nrww.inc(47): Including file '../../avr8\words/less.asm'
-../../avr8\dict/nrww.inc(48): Including file '../../avr8\words/greater.asm'
-../../avr8\dict/nrww.inc(50): Including file '../../avr8\words/log2.asm'
-../../avr8\dict/nrww.inc(51): Including file '../../avr8\words/minus.asm'
-../../avr8\dict/nrww.inc(52): Including file '../../avr8\words/plus.asm'
-../../avr8\dict/nrww.inc(53): Including file '../../avr8\words/mstar.asm'
-../../avr8\dict/nrww.inc(54): Including file '../../avr8\words/umslashmod.asm'
-../../avr8\dict/nrww.inc(55): Including file '../../avr8\words/umstar.asm'
-../../avr8\dict/nrww.inc(57): Including file '../../avr8\words/invert.asm'
-../../avr8\dict/nrww.inc(58): Including file '../../avr8\words/2slash.asm'
-../../avr8\dict/nrww.inc(59): Including file '../../avr8\words/2star.asm'
-../../avr8\dict/nrww.inc(60): Including file '../../avr8\words/and.asm'
-../../avr8\dict/nrww.inc(61): Including file '../../avr8\words/or.asm'
-../../avr8\dict/nrww.inc(62): Including file '../../avr8\words/xor.asm'
-../../avr8\dict/nrww.inc(64): Including file '../../avr8\words/1plus.asm'
-../../avr8\dict/nrww.inc(65): Including file '../../avr8\words/1minus.asm'
-../../avr8\dict/nrww.inc(66): Including file '../../common\words/q-negate.asm'
-../../avr8\dict/nrww.inc(67): Including file '../../avr8\words/lshift.asm'
-../../avr8\dict/nrww.inc(68): Including file '../../avr8\words/rshift.asm'
-../../avr8\dict/nrww.inc(69): Including file '../../avr8\words/plusstore.asm'
-../../avr8\dict/nrww.inc(71): Including file '../../avr8\words/rpfetch.asm'
-../../avr8\dict/nrww.inc(72): Including file '../../avr8\words/rpstore.asm'
-../../avr8\dict/nrww.inc(73): Including file '../../avr8\words/spfetch.asm'
-../../avr8\dict/nrww.inc(74): Including file '../../avr8\words/spstore.asm'
-../../avr8\dict/nrww.inc(76): Including file '../../avr8\words/dodo.asm'
-../../avr8\dict/nrww.inc(77): Including file '../../avr8\words/i.asm'
-../../avr8\dict/nrww.inc(78): Including file '../../avr8\words/doplusloop.asm'
-../../avr8\dict/nrww.inc(79): Including file '../../avr8\words/doloop.asm'
-../../avr8\dict/nrww.inc(80): Including file '../../avr8\words/unloop.asm'
-../../avr8\dict/nrww.inc(84): Including file '../../avr8\words/cmove_g.asm'
-../../avr8\dict/nrww.inc(85): Including file '../../avr8\words/byteswap.asm'
-../../avr8\dict/nrww.inc(86): Including file '../../avr8\words/up.asm'
-../../avr8\dict/nrww.inc(87): Including file '../../avr8\words/1ms.asm'
-../../avr8\dict/nrww.inc(88): Including file '../../avr8\words/2to_r.asm'
-../../avr8\dict/nrww.inc(89): Including file '../../avr8\words/2r_from.asm'
-../../avr8\dict/nrww.inc(91): Including file '../../avr8\words/store-e.asm'
-../../avr8\dict/nrww.inc(92): Including file '../../avr8\words/fetch-e.asm'
-../../avr8\dict/nrww.inc(93): Including file '../../avr8\words/store-i.asm'
-../../avr8\dict/nrww.inc(97): Including file '../../avr8\words/store-i_nrww.asm'
-../../avr8\dict/nrww.inc(99): Including file '../../avr8\words/fetch-i.asm'
-../../avr8\dict/nrww.inc(104): Including file '../../avr8\dict/core_4k.inc'
-../../avr8\dict/core_4k.inc(3): Including file '../../avr8\words/n_to_r.asm'
-../../avr8\dict/core_4k.inc(4): Including file '../../avr8\words/n_r_from.asm'
-../../avr8\dict/core_4k.inc(5): Including file '../../avr8\words/d-2star.asm'
-../../avr8\dict/core_4k.inc(6): Including file '../../avr8\words/d-2slash.asm'
-../../avr8\dict/core_4k.inc(7): Including file '../../avr8\words/d-plus.asm'
-../../avr8\dict/core_4k.inc(8): Including file '../../avr8\words/d-minus.asm'
-../../avr8\dict/core_4k.inc(9): Including file '../../avr8\words/d-invert.asm'
-../../avr8\dict/core_4k.inc(10): Including file '../../avr8\words/slashmod.asm'
-../../avr8\dict/core_4k.inc(11): Including file '../../common\words/abs.asm'
-../../avr8\dict/core_4k.inc(12): Including file '../../common\words/pick.asm'
-../../avr8\dict/core_4k.inc(13): Including file '../../avr8\words/cellplus.asm'
-../../avr8\dict/core_4k.inc(14): Including file '../../avr8\dict/interrupt.inc'
-../../avr8\dict/interrupt.inc(8): Including file '../../avr8\words/int-on.asm'
-../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-off.asm'
-../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-store.asm'
-../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-fetch.asm'
-../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-trap.asm'
-../../avr8\dict/interrupt.inc(14): Including file '../../avr8\words/isr-exec.asm'
-../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-end.asm'
-../../avr8\dict/core_4k.inc(17): Including file '../../common\words/prompt-ok.asm'
-../../avr8\dict/core_4k.inc(18): Including file '../../common\words/prompt-ready.asm'
-../../avr8\dict/core_4k.inc(19): Including file '../../common\words/prompt-error.asm'
-../../avr8\dict/core_4k.inc(21): Including file '../../common\words/quit.asm'
-../../avr8\dict/core_4k.inc(22): Including file '../../avr8\words/pause.asm'
-../../avr8\dict/core_4k.inc(23): Including file '../../avr8\words/cold.asm'
-../../avr8\dict/core_4k.inc(24): Including file '../../common\words/warm.asm'
-../../avr8\dict/core_4k.inc(26): Including file '../../common\words/handler.asm'
-../../avr8\dict/core_4k.inc(27): Including file '../../common\words/catch.asm'
-../../avr8\dict/core_4k.inc(28): Including file '../../common\words/throw.asm'
-../../avr8\dict/core_4k.inc(31): Including file '../../avr8\words/edefer-fetch.asm'
-../../avr8\dict/core_4k.inc(32): Including file '../../avr8\words/edefer-store.asm'
-../../avr8\dict/core_4k.inc(33): Including file '../../common\words/rdefer-fetch.asm'
-../../avr8\dict/core_4k.inc(34): Including file '../../common\words/rdefer-store.asm'
-../../avr8\dict/core_4k.inc(35): Including file '../../common\words/udefer-fetch.asm'
-../../avr8\dict/core_4k.inc(36): Including file '../../common\words/udefer-store.asm'
-../../avr8\dict/core_4k.inc(37): Including file '../../common\words/defer-store.asm'
-../../avr8\dict/core_4k.inc(38): Including file '../../common\words/defer-fetch.asm'
-../../avr8\dict/core_4k.inc(39): Including file '../../avr8\words/do-defer.asm'
-../../avr8\dict/core_4k.inc(41): Including file '../../common\words/u-dot.asm'
-../../avr8\dict/core_4k.inc(42): Including file '../../common\words/u-dot-r.asm'
-../../avr8\dict/core_4k.inc(45): Including file '../../avr8\words/uslashmod.asm'
-../../avr8\dict/core_4k.inc(46): Including file '../../avr8\words/negate.asm'
-../../avr8\dict/core_4k.inc(47): Including file '../../common\words/slash.asm'
-../../avr8\dict/core_4k.inc(48): Including file '../../common\words/mod.asm'
-../../avr8\dict/core_4k.inc(50): Including file '../../common\words/min.asm'
-../../avr8\dict/core_4k.inc(51): Including file '../../common\words/max.asm'
-../../avr8\dict/core_4k.inc(52): Including file '../../common\words/within.asm'
-../../avr8\dict/core_4k.inc(54): Including file '../../common\words/show-wordlist.asm'
-../../avr8\dict/core_4k.inc(55): Including file '../../common\words/words.asm'
-../../avr8\dict/core_4k.inc(57): Including file '../../common\words/dot-quote.asm'
-../../avr8\dict/core_4k.inc(58): Including file '../../common\words/squote.asm'
-../../avr8\dict/core_4k.inc(59): Including file '../../avr8\words/fill.asm'
-../../avr8\dict/core_4k.inc(61): Including file '../../common\words/f_cpu.asm'
-../../avr8\dict/core_4k.inc(62): Including file '../../avr8\words/state.asm'
-../../avr8\dict/core_4k.inc(63): Including file '../../common\words/base.asm'
-../../avr8\dict/core_4k.inc(65): Including file '../../avr8\words/cells.asm'
-../../avr8\dict/core_4k.inc(67): Including file '../../common\words/2dup.asm'
-../../avr8\dict/core_4k.inc(68): Including file '../../common\words/2drop.asm'
-../../avr8\dict/core_4k.inc(69): Including file '../../common\words/tuck.asm'
-../../avr8\dict/core_4k.inc(71): Including file '../../common\words/to-in.asm'
-../../avr8\dict/core_4k.inc(72): Including file '../../common\words/pad.asm'
-../../avr8\dict/core_4k.inc(73): Including file '../../common\words/emit.asm'
-../../avr8\dict/core_4k.inc(74): Including file '../../common\words/emitq.asm'
-../../avr8\dict/core_4k.inc(75): Including file '../../common\words/key.asm'
-../../avr8\dict/core_4k.inc(76): Including file '../../common\words/keyq.asm'
-../../avr8\dict/core_4k.inc(78): Including file '../../avr8\words/dp.asm'
-../../avr8\dict/core_4k.inc(79): Including file '../../avr8\words/ehere.asm'
-../../avr8\dict/core_4k.inc(80): Including file '../../avr8\words/here.asm'
-../../avr8\dict/core_4k.inc(81): Including file '../../avr8\words/allot.asm'
-../../avr8\dict/core_4k.inc(83): Including file '../../common\words/bin.asm'
-../../avr8\dict/core_4k.inc(84): Including file '../../common\words/decimal.asm'
-../../avr8\dict/core_4k.inc(85): Including file '../../common\words/hex.asm'
-../../avr8\dict/core_4k.inc(86): Including file '../../common\words/bl.asm'
-../../avr8\dict/core_4k.inc(88): Including file '../../avr8\words/turnkey.asm'
-../../avr8\dict/core_4k.inc(89): Including file '../../common\words/to-upper.asm'
-../../avr8\dict/core_4k.inc(90): Including file '../../common\words/to-lower.asm'
-../../avr8\dict/core_4k.inc(92): Including file '../../common\words/q-stack.asm'
-../../avr8\dict/core_4k.inc(93): Including file '../../common\words/bounds.asm'
-../../avr8\dict/core_4k.inc(94): Including file '../../common\words/cr.asm'
-../../avr8\dict/core_4k.inc(95): Including file '../../common\words/space.asm'
-../../avr8\dict/core_4k.inc(96): Including file '../../common\words/spaces.asm'
-../../avr8\dict/core_4k.inc(97): Including file '../../common\words/s-to-d.asm'
-../../avr8\dict/core_4k.inc(98): Including file '../../avr8\words/to-body.asm'
-../../avr8\dict/nrww.inc(112): Including file '../../common\words/2literal.asm'
-../../avr8\dict/nrww.inc(113): Including file '../../avr8\words/equal.asm'
-../../avr8\dict/nrww.inc(114): Including file '../../common\words/num-constants.asm'
-../../avr8\amforth.asm(25): Including file 'dict_appl_core.inc'
-../../avr8\amforth.asm(36): Including file '../../avr8\amforth-eeprom.inc'
-
-
- ; file see ../template/template.asm. You may want to
- ; copy that file to this one and edit it afterwards.
-
- .include "preamble.inc"
-
- .include "macros.asm"
-
- .set DICT_COMPILER2 = 0 ;
- .set cpu_msp430 = 0
- .set cpu_avr8 = 1
-
- .include "user.inc"
-
- ;
-
- ; used by the multitasker
- .set USER_STATE = 0
- .set USER_FOLLOWER = 2
-
- ; stackpointer, used by mulitasker
- .set USER_RP = 4
- .set USER_SP0 = 6
- .set USER_SP = 8
-
- ; excpection handling
- .set USER_HANDLER = 10
-
- ; numeric IO
- .set USER_BASE = 12
-
- ; character IO
- .set USER_EMIT = 14
- .set USER_EMITQ = 16
- .set USER_KEY = 18
- .set USER_KEYQ = 20
-
- .set USER_SOURCE = 22
- .set USER_TO_IN = 24
- .set USER_REFILL = 26
-
- .set USER_P_OK = 28
- .set USER_P_ERR = 30
- .set USER_P_RDY = 32
-
- .set SYSUSERSIZE = 34
- ;
-
- .def zerol = r2
- .def zeroh = r3
- .def upl = r4
- .def uph = r5
-
- .def al = r6
- .def ah = r7
- .def bl = r8
- .def bh = r9
-
- ; internal
- .def mcu_boot = r10
- .def isrflag = r11
-
- .def temp4 = r14
- .def temp5 = r15
-
- .def temp0 = r16
- .def temp1 = r17
- .def temp2 = r18
- .def temp3 = r19
-
- .def temp6 = r20
- .def temp7 = r21
-
- .def tosl = r24
- .def tosh = r25
-
- .def wl = r22
- .def wh = r23
-
- .macro loadtos
- ld tosl, Y+
- ld tosh, Y+
- .endmacro
-
- .macro savetos
- st -Y, tosh
- st -Y, tosl
- .endmacro
-
- .macro in_
- .if (@1 < $40)
- in @0,@1
- .else
- lds @0,@1
- .endif
- .endmacro
-
- .macro out_
- .if (@0 < $40)
- out @0,@1
- .else
- sts @0,@1
- .endif
- .endmacro
-
- .macro sbi_
- .if (@0 < $40)
- sbi @0,@1
- .else
- in_ @2,@0
- ori @2,exp2(@1)
- out_ @0,@2
- .endif
- .endmacro
-
- .macro cbi_
- .if (@0 < $40)
- cbi @0,@1
- .else
- in_ @2,@0
- andi @2,~(exp2(@1))
- out_ @0,@2
- .endif
- .endmacro
-
- .macro jmp_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- jmp @0
- .else
- rjmp @0
- .endif
- .else
- jmp @0
- .endif
- .endmacro
- .macro call_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- call @0
- .else
- rcall @0
- .endif
- .else
- call @0
- .endif
- .endmacro
-
- ; F_CPU
- ; µsec 16000000 14745600 8000000 1000000
- ; 1 16 14,74 8 1
- ; 10 160 147,45 80 10
- ; 100 1600 1474,56 800 100
- ; 1000 16000 14745,6 8000 1000
- ;
- ; cycles = µsec * f_cpu / 1e6
- ; n_loops=cycles/5
- ;
- ; cycles already used will be subtracted from the delay
- ; the waittime resolution is 1 cycle (delay from exact to +1 cycle)
- ; the maximum delay at 20MHz (50ns/clock) is 38350ns
- ; waitcount register must specify an immediate register
- ;
- ; busy waits a specfied amount of microseconds
- .macro delay
- .set cycles = ( ( @0 * F_CPU ) / 1000000 )
- .if (cycles > ( 256 * 255 * 4 + 2))
- .error "MACRO delay - too many cycles to burn"
- .else
- .if (cycles > 6)
- .set loop_cycles = (cycles / 4)
- ldi zl,low(loop_cycles)
- ldi zh,high(loop_cycles)
- sbiw Z, 1
- brne pc-1
- .set cycles = (cycles - (loop_cycles * 4))
- .endif
- .if (cycles > 0)
- .if (cycles & 4)
- rjmp pc+1
- rjmp pc+1
- .endif
- .if (cycles & 2)
- rjmp pc+1
- .endif
- .if (cycles & 1)
- nop
- .endif
- .endif
- .endif
- .endmacro
-
- ; portability macros, they come from the msp430 branches
-
- .macro DEST
- .dw @0
- .endm
-
- ; controller specific file selected via include
- ; directory definition when calling the assembler (-I)
- .include "device.asm"
-
- ; generated automatically, do not edit
-
- .list
-
- .equ ramstart = 96
- .equ CELLSIZE = 2
- .macro readflashcell
- lsl zl
- rol zh
- lpm @0, Z+
- lpm @1, Z+
- .endmacro
- .macro writeflashcell
- lsl zl
- rol zh
- .endmacro
- .set WANT_EEPROM = 0
- .set WANT_WATCHDOG = 0
- .set WANT_EXTERNAL_INTERRUPT = 0
- .set WANT_TIMER_COUNTER_0 = 0
- .set WANT_TIMER_COUNTER_2 = 0
- .set WANT_TIMER_COUNTER_1 = 0
- .set WANT_SPI = 0
- .set WANT_USART = 0
- .set WANT_ANALOG_COMPARATOR = 0
- .set WANT_AD_CONVERTER = 0
- .set WANT_PORTA = 0
- .set WANT_PORTB = 0
- .set WANT_PORTC = 0
- .set WANT_PORTD = 0
- .set WANT_CPU = 0
- .set WANT_BOOT_LOAD = 0
- .set WANT_TWI = 0
- .equ intvecsize = 2 ; please verify; flash size: 32768 bytes
- .equ pclen = 2 ; please verify
- .overlap
- .org 2
-000002 d11b rcall isr ; External Interrupt Request 0
- .org 4
-000004 d119 rcall isr ; External Interrupt Request 1
- .org 6
-000006 d117 rcall isr ; External Interrupt Request 2
- .org 8
-000008 d115 rcall isr ; Timer/Counter2 Compare Match
- .org 10
-00000a d113 rcall isr ; Timer/Counter2 Overflow
- .org 12
-00000c d111 rcall isr ; Timer/Counter1 Capture Event
- .org 14
-00000e d10f rcall isr ; Timer/Counter1 Compare Match A
- .org 16
-000010 d10d rcall isr ; Timer/Counter1 Compare Match B
- .org 18
-000012 d10b rcall isr ; Timer/Counter1 Overflow
- .org 20
-000014 d109 rcall isr ; Timer/Counter0 Compare Match
- .org 22
-000016 d107 rcall isr ; Timer/Counter0 Overflow
- .org 24
-000018 d105 rcall isr ; Serial Transfer Complete
- .org 26
-00001a d103 rcall isr ; USART, Rx Complete
- .org 28
-00001c d101 rcall isr ; USART Data Register Empty
- .org 30
-00001e d0ff rcall isr ; USART, Tx Complete
- .org 32
-000020 d0fd rcall isr ; ADC Conversion Complete
- .org 34
-000022 d0fb rcall isr ; EEPROM Ready
- .org 36
-000024 d0f9 rcall isr ; Analog Comparator
- .org 38
-000026 d0f7 rcall isr ; 2-wire Serial Interface
- .org 40
-000028 d0f5 rcall isr ; Store Program Memory Ready
- .equ INTVECTORS = 21
- .nooverlap
-
- ; compatability layer (maybe empty)
- .equ SPMCSR = SPMCR
- .equ EEPE = EEWE
- .equ EEMPE = EEMWE
-
- ; controller data area, environment query mcu-info
- mcu_info:
- mcu_ramsize:
-000029 0800 .dw 2048
- mcu_eepromsize:
-00002a 0400 .dw 1024
- mcu_maxdp:
-00002b 7000 .dw 28672
- mcu_numints:
-00002c 0015 .dw 21
- mcu_name:
-00002d 0008 .dw 8
-00002e 5441
-00002f 656d
-000030 6167
-000031 3233 .db "ATmega32"
- .set codestart=pc
-
- ; some defaults, change them in your application master file
- ; see template.asm for an example
-
- ; enabling Interrupts, disabling them affects
- ; other settings as well.
- .set WANT_INTERRUPTS = 1
-
- ; count the number of interrupts individually.
- ; requires a lot of RAM (one byte per interrupt)
- ; disabled by default.
- .set WANT_INTERRUPT_COUNTERS = 0
-
- ; receiving is asynchronously, so an interrupt queue is useful.
- .set WANT_ISR_RX = 1
-
- ; case insensitve dictionary lookup.
- .set WANT_IGNORECASE = 0
-
- ; map all memories to one address space. Details in the
- ; technical guide
- .set WANT_UNIFIED = 0
-
- ; terminal input buffer
- .set TIB_SIZE = 90 ; ANS94 needs at least 80 characters per line
-
- ; USER variables *in addition* to system ones
- .set APPUSERSIZE = 10 ; size of application specific user area in bytes
-
- ; addresses of various data segments
- .set rstackstart = RAMEND ; start address of return stack, grows downward
- .set stackstart = RAMEND - 80 ; start address of data stack, grows downward
- ; change only if you know what to you do
- .set NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8
- .set NUMRECOGNIZERS = 4 ; total number of recognizers, two are always used.
-
- ; 10 per mille (1 per cent) is ok.
- .set BAUD = 38400
- .set BAUD_MAXERROR = 10
-
- ; Dictionary setup
- .set VE_HEAD = $0000
- .set VE_ENVHEAD = $0000
-
- .set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
- ; cpu clock in hertz
- .equ F_CPU = 8000000
- .set BAUD_MAXERROR = 30
- .equ TIMER_INT = OVF2addr
-
- .include "drivers/usart.asm"
-
- .equ BAUDRATE_LOW = UBRRL+$20
- .equ BAUDRATE_HIGH = UBRRH+$20
- .equ USART_C = UCSRC+$20
- .equ USART_B = UCSRB+$20
- .equ USART_A = UCSRA+$20
- .equ USART_DATA = UDR+$20
- .equ bm_USARTC_en = 1 << 7
-
- ; some generic constants
- .equ bm_USART_RXRD = 1 << RXC
- .equ bm_USART_TXRD = 1 << UDRE
- .equ bm_ENABLE_TX = 1 << TXEN
- .equ bm_ENABLE_RX = 1 << RXEN
- .equ bm_ENABLE_INT_RX = 1<<RXCIE
- .equ bm_ENABLE_INT_TX = 1<<UDRE
-
- .equ bm_ASYNC = 0 << 6
- .equ bm_SYNC = 1 << 6
- .equ bm_NO_PARITY = 0 << 4
- .equ bm_EVEN_PARITY = 2 << 4
- .equ bm_ODD_PARITY = 3 << 4
- .equ bm_1STOPBIT = 0 << 3
- .equ bm_2STOPBIT = 1 << 3
- .equ bm_5BIT = 0 << 1
- .equ bm_6BIT = 1 << 1
- .equ bm_7BIT = 2 << 1
- .equ bm_8BIT = 3 << 1
-
- .include "drivers/usart_common.asm"
-
- .set USART_C_VALUE = bm_ASYNC | bm_NO_PARITY | bm_1STOPBIT | bm_8BIT
- .if WANT_INTERRUPTS == 0
- .if WANT_ISR_RX == 1
- .endif
- .endif
-
- .if WANT_ISR_RX == 1
- .set USART_B_VALUE = bm_ENABLE_TX | bm_ENABLE_RX | bm_ENABLE_INT_RX
- .include "drivers/usart-rx-buffer.asm"
-
-
- ; sizes have to be powers of 2!
- .equ usart_rx_size = $10
- .equ usart_rx_mask = usart_rx_size - 1
- .dseg
-000060 usart_rx_data: .byte usart_rx_size
-000070 usart_rx_in: .byte 1
-000071 usart_rx_out: .byte 1
- .cseg
-
- VE_TO_RXBUF:
-000032 ff07 .dw $ff07
-000033 723e
-000034 2d78
-000035 7562
-000036 0066 .db ">rx-buf",0
-000037 0000 .dw VE_HEAD
- .set VE_HEAD = VE_TO_RXBUF
- XT_TO_RXBUF:
-000038 0039 .dw PFA_rx_tobuf
- PFA_rx_tobuf:
-000039 2f08 mov temp0, tosl
-00003a 9110 0070 lds temp1, usart_rx_in
-00003c e6e0 ldi zl, low(usart_rx_data)
-00003d e0f0 ldi zh, high(usart_rx_data)
-00003e 0fe1 add zl, temp1
-00003f 1df3 adc zh, zeroh
-000040 8300 st Z, temp0
-000041 9513 inc temp1
-000042 701f andi temp1,usart_rx_mask
-000043 9310 0070 sts usart_rx_in, temp1
-000045 9189
-000046 9199 loadtos
-000047 940c 3805 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; setup with
- ; ' isr-rx URXCaddr int!
- VE_ISR_RX:
-000049 ff06 .dw $ff06
-00004a 7369
-00004b 2d72
-00004c 7872 .db "isr-rx"
-00004d 0032 .dw VE_HEAD
- .set VE_HEAD = VE_ISR_RX
- XT_ISR_RX:
-00004e 3801 .dw DO_COLON
- usart_rx_isr:
-00004f 383d .dw XT_DOLITERAL
-000050 002c .dw usart_data
-000051 3898 .dw XT_CFETCH
-000052 38b1 .dw XT_DUP
-000053 383d .dw XT_DOLITERAL
-000054 0003 .dw 3
-000055 3fdf .dw XT_EQUAL
-000056 3836 .dw XT_DOCONDBRANCH
-000057 0059 .dw usart_rx_isr1
-000058 3d38 .dw XT_COLD
- usart_rx_isr1:
-000059 0038 .dw XT_TO_RXBUF
-00005a 3820 .dw XT_EXIT
-
- ; ( -- ) Hardware Access
- ; R( --)
- ; initialize usart
- ;VE_USART_INIT_RXBUFFER:
- ; .dw $ff0x
- ; .db "+usart-buffer"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_USART_INIT_RXBUFFER
- XT_USART_INIT_RX_BUFFER:
-00005b 3801 .dw DO_COLON
- PFA_USART_INIT_RX_BUFFER: ; ( -- )
-00005c 383d
-00005d 004e .dw XT_DOLITERAL, XT_ISR_RX
-00005e 383d
-00005f 001a .dw XT_DOLITERAL, URXCaddr
-000060 3ca5 .dw XT_INTSTORE
-
-000061 383d .dw XT_DOLITERAL
-000062 0060 .dw usart_rx_data
-000063 383d .dw XT_DOLITERAL
-000064 0016 .dw usart_rx_size + 6
-000065 3954 .dw XT_ZERO
-000066 3e98 .dw XT_FILL
-000067 3820 .dw XT_EXIT
-
- ; ( -- c)
- ; MCU
- ; get 1 character from input queue, wait if needed using interrupt driver
- VE_RX_BUFFER:
-000068 ff06 .dw $ff06
-000069 7872
-00006a 622d
-00006b 6675 .db "rx-buf"
-00006c 0049 .dw VE_HEAD
- .set VE_HEAD = VE_RX_BUFFER
- XT_RX_BUFFER:
-00006d 3801 .dw DO_COLON
- PFA_RX_BUFFER:
-00006e 0088 .dw XT_RXQ_BUFFER
-00006f 3836 .dw XT_DOCONDBRANCH
-000070 006e .dw PFA_RX_BUFFER
-000071 383d .dw XT_DOLITERAL
-000072 0071 .dw usart_rx_out
-000073 3898 .dw XT_CFETCH
-000074 38b1 .dw XT_DUP
-000075 383d .dw XT_DOLITERAL
-000076 0060 .dw usart_rx_data
-000077 399d .dw XT_PLUS
-000078 3898 .dw XT_CFETCH
-000079 38c4 .dw XT_SWAP
-00007a 3a2f .dw XT_1PLUS
-00007b 383d .dw XT_DOLITERAL
-00007c 000f .dw usart_rx_mask
-00007d 3a13 .dw XT_AND
-00007e 383d .dw XT_DOLITERAL
-00007f 0071 .dw usart_rx_out
-000080 388d .dw XT_CSTORE
-000081 3820 .dw XT_EXIT
-
- ; ( -- f)
- ; MCU
- ; check if unread characters are in the input queue
- VE_RXQ_BUFFER:
-000082 ff07 .dw $ff07
-000083 7872
-000084 2d3f
-000085 7562
-000086 0066 .db "rx?-buf",0
-000087 0068 .dw VE_HEAD
- .set VE_HEAD = VE_RXQ_BUFFER
- XT_RXQ_BUFFER:
-000088 3801 .dw DO_COLON
- PFA_RXQ_BUFFER:
-000089 3d30 .dw XT_PAUSE
-00008a 383d .dw XT_DOLITERAL
-00008b 0071 .dw usart_rx_out
-00008c 3898 .dw XT_CFETCH
-00008d 383d .dw XT_DOLITERAL
-00008e 0070 .dw usart_rx_in
-00008f 3898 .dw XT_CFETCH
-000090 3913 .dw XT_NOTEQUAL
-000091 3820 .dw XT_EXIT
- ; .include "drivers/timer-usart-isr.asm"
- .set XT_RX = XT_RX_BUFFER
- .set XT_RXQ = XT_RXQ_BUFFER
- .set XT_USART_INIT_RX = XT_USART_INIT_RX_BUFFER
- .else
- .endif
-
- .include "words/usart-tx-poll.asm"
-
- ; MCU
- ; check availability and send one character to the terminal using register poll
- VE_TX_POLL:
-000092 ff07 .dw $ff07
-000093 7874
-000094 702d
-000095 6c6f
-000096 006c .db "tx-poll",0
-000097 0082 .dw VE_HEAD
- .set VE_HEAD = VE_TX_POLL
- XT_TX_POLL:
-000098 3801 .dw DO_COLON
- PFA_TX_POLL:
- ; wait for data ready
-000099 00a6 .dw XT_TXQ_POLL
-00009a 3836 .dw XT_DOCONDBRANCH
-00009b 0099 .dw PFA_TX_POLL
- ; send to usart
-00009c 383d .dw XT_DOLITERAL
-00009d 002c .dw USART_DATA
-00009e 388d .dw XT_CSTORE
-00009f 3820 .dw XT_EXIT
-
- ; ( -- f) MCU
- ; MCU
- ; check if a character can be send using register poll
- VE_TXQ_POLL:
-0000a0 ff08 .dw $ff08
-0000a1 7874
-0000a2 2d3f
-0000a3 6f70
-0000a4 6c6c .db "tx?-poll"
-0000a5 0092 .dw VE_HEAD
- .set VE_HEAD = VE_TXQ_POLL
- XT_TXQ_POLL:
-0000a6 3801 .dw DO_COLON
- PFA_TXQ_POLL:
-0000a7 3d30 .dw XT_PAUSE
-0000a8 383d .dw XT_DOLITERAL
-0000a9 002b .dw USART_A
-0000aa 3898 .dw XT_CFETCH
-0000ab 383d .dw XT_DOLITERAL
-0000ac 0020 .dw bm_USART_TXRD
-0000ad 3a13 .dw XT_AND
-0000ae 3820 .dw XT_EXIT
- .set XT_TX = XT_TX_POLL
- .set XT_TXQ = XT_TXQ_POLL
- .set XT_USART_INIT_TX = 0
-
- .include "words/ubrr.asm"
-
- ; MCU
- ; returns usart UBRR settings
- VE_UBRR:
-0000af ff04 .dw $ff04
-0000b0 6275
-0000b1 7272 .db "ubrr"
-0000b2 00a0 .dw VE_HEAD
- .set VE_HEAD = VE_UBRR
- XT_UBRR:
-0000b3 386f .dw PFA_DOVALUE1
- PFA_UBRR: ; ( -- )
-0000b4 0082 .dw EE_UBRRVAL
-0000b5 3da0 .dw XT_EDEFERFETCH
-0000b6 3daa .dw XT_EDEFERSTORE
- .include "words/usart.asm"
-
- ; MCU
- ; initialize usart
- VE_USART:
-0000b7 ff06 .dw $ff06
-0000b8 752b
-0000b9 6173
-0000ba 7472 .db "+usart"
-0000bb 00af .dw VE_HEAD
- .set VE_HEAD = VE_USART
- XT_USART:
-0000bc 3801 .dw DO_COLON
- PFA_USART: ; ( -- )
-
-0000bd 383d .dw XT_DOLITERAL
-0000be 0098 .dw USART_B_VALUE
-0000bf 383d .dw XT_DOLITERAL
-0000c0 002a .dw USART_B
-0000c1 388d .dw XT_CSTORE
-
-0000c2 383d .dw XT_DOLITERAL
-0000c3 0006 .dw USART_C_VALUE
-0000c4 383d .dw XT_DOLITERAL
-0000c5 00c0 .dw USART_C | bm_USARTC_en
-0000c6 388d .dw XT_CSTORE
-
-0000c7 00b3 .dw XT_UBRR
-0000c8 38b1 .dw XT_DUP
-0000c9 3af9 .dw XT_BYTESWAP
-0000ca 383d .dw XT_DOLITERAL
-0000cb 0040 .dw BAUDRATE_HIGH
-0000cc 388d .dw XT_CSTORE
-0000cd 383d .dw XT_DOLITERAL
-0000ce 0029 .dw BAUDRATE_LOW
-0000cf 388d .dw XT_CSTORE
- .if XT_USART_INIT_RX!=0
-0000d0 005b .dw XT_USART_INIT_RX
- .endif
- .if XT_USART_INIT_TX!=0
- .endif
-
-0000d1 3820 .dw XT_EXIT
-
- ; settings for 1wire interface
- .equ OW_PORT=PORTB
- .EQU OW_BIT=4
- .include "drivers/1wire.asm"
-
- ; B. J. Rodriguez (MSP 430)
- ; Matthias Trute (AVR Atmega)
- ; COPYRIGHT
- ; (c) 2012 Bradford J. Rodriguez for the 430 code and API
-
- ; adapted 430 assembly code to AVR
- ; wishlist:
- ; use a configurable pin at runtime, compatible with bitnames.frt
- ; no external pull up, no external power supply for devices
- ; ???
- ;
- ;.EQU OW_BIT=4
- ;.equ OW_PORT=PORTE
- .set OW_DDR=(OW_PORT-1)
- .set OW_PIN=(OW_DDR-1)
-
- ;****f* 1W.RESET
- ; NAME
- ; 1W.RESET
- ; SYNOPSIS
- ; 1W.RESET ( -- f ) Initialize 1-wire devices; return true if present
- ; DESCRIPTION
- ; This configures the port pin used by the 1-wire interface, and then
- ; sends an "initialize" sequence to the 1-wire devices. If any device
- ; is present, it will be detected.
- ;
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" (drive output low) for >480 usec.
- ; b) Output "1" (let output float).
- ; c) After 15 to 60 usec, device will drive pin low for 60 to 240 usec.
- ; So, wait 75 usec and sample input.
- ; d) Leave output high (floating) for at least 480 usec.
- ;******
- ; ( -- f )
- ; Hardware
- ; Initialize 1-wire devices; return true if present
- VE_OW_RESET:
-0000d2 ff08 .dw $ff08
-0000d3 7731
-0000d4 722e
-0000d5 7365
-0000d6 7465 .db "1w.reset"
-0000d7 00b7 .dw VE_HEAD
- .set VE_HEAD = VE_OW_RESET
- XT_OW_RESET:
-0000d8 00d9 .dw PFA_OW_RESET
- PFA_OW_RESET:
-0000d9 939a
-0000da 938a savetos
- ; setup to output
-0000db 9abc sbi OW_DDR, OW_BIT
- ; Pull output low
-0000dc 98c4 cbi OW_PORT, OW_BIT
- ; Delay >480 usec
-0000dd ece0
-0000de e0f3
-0000df 9731
-0000e0 f7f1 DELAY 480
- ; Critical timing period, disable interrupts.
-0000e1 b71f in temp1, SREG
-0000e2 94f8 cli
- ; Pull output high
-0000e3 9ac4 sbi OW_PORT, OW_BIT
- ; make pin input, sends "1"
-0000e4 98bc cbi OW_DDR, OW_BIT
-0000e5 e8e0
-0000e6 e0f0
-0000e7 9731
-0000e8 f7f1 DELAY 64 ; delayB
- ; Sample input pin, set TOS if input is zero
-0000e9 b386 in tosl, OW_PIN
-0000ea ff84 sbrs tosl, OW_BIT
-0000eb ef9f ser tosh
- ; End critical timing period, enable interrupts
-0000ec bf1f out SREG, temp1
- ; release bus
-0000ed 98bc cbi OW_DDR, OW_BIT
-0000ee 98c4 cbi OW_PORT, OW_BIT
-
- ; Delay rest of 480 usec
-0000ef e4e0
-0000f0 e0f3
-0000f1 9731
-0000f2 f7f1 DELAY 416
- ; we now have the result flag in TOS
-0000f3 2f89 mov tosl, tosh
-0000f4 940c 3805 jmp_ DO_NEXT
-
- ;****f* 1W.SLOT
- ; NAME
- ; 1W.SLOT
- ; SYNOPSIS
- ; 1W.SLOT ( c -- c' ) Write and read one bit to/from 1-wire.
- ; DESCRIPTION
- ; The "touch byte" function is described in Dallas App Note 74.
- ; It outputs a byte to the 1-wire pin, LSB first, and reads back
- ; the state of the 1-wire pin after a suitable delay.
- ; To read a byte, output $FF and read the reply data.
- ; To write a byte, output that byte and discard the reply.
- ;
- ; This function performs one bit of the "touch" operation --
- ; one read/write "slot" in Dallas jargon. Perform this eight
- ; times in a row to get the "touch byte" function.
- ;
- ; PARAMETERS
- ; The input parameter is xxxxxxxxbbbbbbbo where
- ; 'xxxxxxxx' are don't cares,
- ; 'bbbbbbb' are bits to be shifted down, and
- ; 'o' is the bit to be output in the slot. This must be 1
- ; to create a read slot.
- ;
- ; The returned value is xxxxxxxxibbbbbbb where
- ; 'xxxxxxxx' are not known (the input shifted down 1 position),
- ; 'i' is the bit read during the slot. This has no meaning
- ; if it was a write slot.
- ; 'bbbbbbb' are the 7 input bits, shifted down one position.
- ;
- ; This peculiar parameter usage allows OWTOUCH to be written as
- ; OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT
- ;
- ; NOTES
- ; Interrupts are disabled during each bit.
-
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" for start period. (> 1 us, < 15 us, typ. 6 us*)
- ; b) Output data bit (0 or 1), open drain
- ; c) After MS from start of cycle, sample input (15 to 60 us, typ. 25 us*)
- ; d) After write-0 period from start of cycle, output "1" (>60 us)
- ; e) After recovery period, loop or return. (> 1 us)
- ; For writes, DS18B20 samples input 15 to 60 usec from start of cycle.
- ; * "Typical" values are per App Note 132 for a 300m cable length.
-
- ; --------- -------------------------------
- ; \ / /
- ; -------------------------------
- ; a b c d e
- ; | 6us | 19us | 35us | 2us |
- ;******
- ; ( c -- c' )
- ; Hardware
- ; Write and read one bit to/from 1-wire.
- VE_OW_SLOT:
-0000f6 ff07 .dw $ff07
-0000f7 7731
-0000f8 732e
-0000f9 6f6c
-0000fa 0074 .db "1w.slot",0
-0000fb 00d2 .dw VE_HEAD
- .set VE_HEAD = VE_OW_SLOT
- XT_OW_SLOT:
-0000fc 00fd .dw PFA_OW_SLOT
- PFA_OW_SLOT:
- ; pull low
-0000fd 98c4 cbi OW_PORT, OW_BIT
-0000fe 9abc sbi OW_DDR, OW_BIT
- ; disable interrupts
-0000ff b71f in temp1, SREG
-000100 94f8 cli
-000101 e0ec
-000102 e0f0
-000103 9731
-000104 f7f1 DELAY 6 ; DELAY A
- ; check bit
-000105 9488 clc
-000106 9587 ror tosl
-000107 f410 brcc PFA_OW_SLOT0 ; a 0 keeps the bus low
- ; release bus, a 1 is written
-000108 9ac4 sbi OW_PORT, OW_BIT
-000109 98bc cbi OW_DDR, OW_BIT
- PFA_OW_SLOT0:
- ; sample the input (no action required if zero)
-00010a e1e2
-00010b e0f0
-00010c 9731
-00010d f7f1 DELAY 9 ; wait DELAY E to sample
-00010e b306 in temp0, OW_PIN
-00010f fd04 sbrc temp0, OW_BIT
-000110 6880 ori tosl, $80
-
-000111 e6e6
-000112 e0f0
-000113 9731
-000114 f7f1 DELAY 51 ; DELAY B
-000115 9ac4 sbi OW_PORT, OW_BIT ; release bus
-000116 98bc cbi OW_DDR, OW_BIT
-000117 e0e4
-000118 e0f0
-000119 9731
-00011a f7f1 delay 2
- ; re-enable interrupts
-00011b bf1f out SREG, temp1
-00011c 940c 3805 jmp_ DO_NEXT
-
- .include "amforth.asm"
-
- ;;;;
- ;;;; GPL V2 (only)
-
- .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2
-
- .set corepc = pc
- .org $0000
-000000 940c 3d39 jmp_ PFA_COLD
-
- .org corepc
- .include "drivers/generic-isr.asm"
-
- .eseg
-000000 intvec: .byte INTVECTORS * CELLSIZE
- .dseg
-000072 intcnt: .byte INTVECTORS
- .cseg
-
- ; interrupt routine gets called (again) by rcall! This gives the
- ; address of the int-vector on the stack.
- isr:
-00011e 920a st -Y, r0
-00011f b60f in r0, SREG
-000120 920a st -Y, r0
- .if (pclen==3)
- .endif
-000121 900f pop r0
-000122 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall)
-000123 940a dec r0
- .if intvecsize == 1 ;
- .endif
-000124 2cb0 mov isrflag, r0
-000125 93ff push zh
-000126 93ef push zl
-000127 e7e2 ldi zl, low(intcnt)
-000128 e0f0 ldi zh, high(intcnt)
-000129 9406 lsr r0 ; we use byte addresses in the counter array, not words
-00012a 0de0 add zl, r0
-00012b 1df3 adc zh, zeroh
-00012c 8000 ld r0, Z
-00012d 9403 inc r0
-00012e 8200 st Z, r0
-00012f 91ef pop zl
-000130 91ff pop zh
-
-000131 9009 ld r0, Y+
-000132 be0f out SREG, r0
-000133 9009 ld r0, Y+
-000134 9508 ret ; returns the interrupt, the rcall stack frame is removed!
- ; no reti here, see words/isr-end.asm
- ; lower part of the dictionary
- .include "dict/rww.inc"
-
-
- ; Arithmetics
- ; add a number to a double cell
- VE_MPLUS:
-000135 ff02 .dw $ff02
-000136 2b6d .db "m+"
-000137 00f6 .dw VE_HEAD
- .set VE_HEAD = VE_MPLUS
- XT_MPLUS:
-000138 3801 .dw DO_COLON
- PFA_MPLUS:
-000139 3fc7 .dw XT_S2D
-00013a 3c15 .dw XT_DPLUS
-00013b 3820 .dw XT_EXIT
- .include "words/ud-star.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSTAR:
-00013c ff03 .dw $ff03
-00013d 6475
-../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte
-00013e 002a .db "ud*"
-00013f 0135 .dw VE_HEAD
- .set VE_HEAD = VE_UDSTAR
- XT_UDSTAR:
-000140 3801 .dw DO_COLON
- PFA_UDSTAR:
-
- .endif
- ;Z UD* ud1 d2 -- ud3 32*16->32 multiply
- ; XT_DUP >R UM* DROP XT_SWAP R> UM* ROT + ;
-
-000141 38b1
-000142 38ff
-000143 39e0
-000144 38d9 .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP
-000145 38c4
-000146 38f6
-000147 39e0
-000148 38e1
-000149 399d
-00014a 3820 .DW XT_SWAP,XT_R_FROM,XT_UMSTAR,XT_ROT,XT_PLUS,XT_EXIT
- .include "words/umax.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMAX:
-00014b ff04 .dw $ff04
-00014c 6d75
-00014d 7861 .db "umax"
-00014e 013c .dw VE_HEAD
- .set VE_HEAD = VE_UMAX
- XT_UMAX:
-00014f 3801 .dw DO_COLON
- PFA_UMAX:
- .endif
-
-000150 3ec9
-000151 395c .DW XT_2DUP,XT_ULESS
-000152 3836 .dw XT_DOCONDBRANCH
-000153 0155 DEST(UMAX1)
-000154 38c4 .DW XT_SWAP
-000155 38d9 UMAX1: .DW XT_DROP
-000156 3820 .dw XT_EXIT
- .include "words/umin.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMIN:
-000157 ff04 .dw $ff04
-000158 6d75
-000159 6e69 .db "umin"
-00015a 014b .dw VE_HEAD
- .set VE_HEAD = VE_UMIN
- XT_UMIN:
-00015b 3801 .dw DO_COLON
- PFA_UMIN:
- .endif
-00015c 3ec9
-00015d 3967 .DW XT_2DUP,XT_UGREATER
-00015e 3836 .dw XT_DOCONDBRANCH
-00015f 0161 DEST(UMIN1)
-000160 38c4 .DW XT_SWAP
-000161 38d9 UMIN1: .DW XT_DROP
-000162 3820 .dw XT_EXIT
- .include "words/immediate-q.asm"
-
- ; Tools
- ; return +1 if immediate, -1 otherwise, flag from name>flags
- ;VE_IMMEDIATEQ:
- ; .dw $ff06
- ; .db "immediate?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_IMMEDIATEQ
- XT_IMMEDIATEQ:
-000163 3801 .dw DO_COLON
- PFA_IMMEDIATEQ:
-000164 383d .dw XT_DOLITERAL
-000165 8000 .dw $8000
-000166 3a13 .dw XT_AND
-000167 391a .dw XT_ZEROEQUAL
-000168 3836 .dw XT_DOCONDBRANCH
-000169 016c DEST(IMMEDIATEQ1)
-00016a 3fe6 .dw XT_ONE
-00016b 3820 .dw XT_EXIT
- IMMEDIATEQ1:
- ; not immediate
-00016c 394b .dw XT_TRUE
-00016d 3820 .dw XT_EXIT
- .include "words/name2flags.asm"
-
- ; Tools
- ; get the flags from a name token
- VE_NAME2FLAGS:
-00016e ff0a .dw $ff0a
-00016f 616e
-000170 656d
-000171 663e
-000172 616c
-000173 7367 .db "name>flags"
-000174 0157 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2FLAGS
- XT_NAME2FLAGS:
-000175 3801 .dw DO_COLON
- PFA_NAME2FLAGS:
-000176 3bcb .dw XT_FETCHI ; skip to link field
-000177 383d .dw XT_DOLITERAL
-000178 ff00 .dw $ff00
-000179 3a13 .dw XT_AND
-00017a 3820 .dw XT_EXIT
-
- .if AMFORTH_NRWW_SIZE > 8000
- .elif AMFORTH_NRWW_SIZE > 4000
- .include "dict/appl_4k.inc"
-
-
- ; Tools
- ; print the version string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOT_VER:
-00017b ff03 .dw $ff03
-00017c 6576
-../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte
-00017d 0072 .db "ver"
-00017e 016e .dw VE_HEAD
- .set VE_HEAD = VE_DOT_VER
- XT_DOT_VER:
-00017f 3801 .dw DO_COLON
- PFA_DOT_VER:
- .endif
-000180 02cf .dw XT_ENV_FORTHNAME
-000181 03f8 .dw XT_ITYPE
-000182 3fae .dw XT_SPACE
-000183 3ebd .dw XT_BASE
-000184 3879 .dw XT_FETCH
-
-000185 02dd .dw XT_ENV_FORTHVERSION
-000186 3f41 .dw XT_DECIMAL
-000187 3fc7 .dw XT_S2D
-000188 0316 .dw XT_L_SHARP
-000189 031e .dw XT_SHARP
-00018a 383d .dw XT_DOLITERAL
-00018b 002e .dw '.'
-00018c 0307 .dw XT_HOLD
-00018d 0334 .dw XT_SHARP_S
-00018e 033f .dw XT_SHARP_G
-00018f 042e .dw XT_TYPE
-000190 3ebd .dw XT_BASE
-000191 3881 .dw XT_STORE
-000192 3fae .dw XT_SPACE
-000193 02e5 .dw XT_ENV_CPU
-000194 03f8 .dw XT_ITYPE
-
-000195 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/noop.asm"
-
- ; Tools
- ; do nothing
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOOP:
-000196 ff04 .dw $ff04
-000197 6f6e
-000198 706f .db "noop"
-000199 017b .dw VE_HEAD
- .set VE_HEAD = VE_NOOP
- XT_NOOP:
-00019a 3801 .dw DO_COLON
- PFA_NOOP:
- .endif
-00019b 3820 .DW XT_EXIT
- .include "words/unused.asm"
-
- ; Tools
- ; Amount of available RAM (incl. PAD)
- VE_UNUSED:
-00019c ff06 .dw $ff06
-00019d 6e75
-00019e 7375
-00019f 6465 .db "unused"
-0001a0 0196 .dw VE_HEAD
- .set VE_HEAD = VE_UNUSED
- XT_UNUSED:
-0001a1 3801 .dw DO_COLON
- PFA_UNUSED:
-0001a2 3a8d .dw XT_SP_FETCH
-0001a3 3f23 .dw XT_HERE
-0001a4 3993 .dw XT_MINUS
-0001a5 3820 .dw XT_EXIT
- .include "words/to.asm"
-
- ; Tools
- ; store the TOS to the named value (eeprom cell)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO:
-0001a6 0002 .dw $0002
-0001a7 6f74 .db "to"
-0001a8 019c .dw VE_HEAD
- .set VE_HEAD = VE_TO
- XT_TO:
-0001a9 3801 .dw DO_COLON
- PFA_TO:
- .endif
-0001aa 043d .dw XT_TICK
-0001ab 3fd0 .dw XT_TO_BODY
-0001ac 3eb7 .dw XT_STATE
-0001ad 3879 .dw XT_FETCH
-0001ae 3836 .dw XT_DOCONDBRANCH
-0001af 01ba DEST(PFA_TO1)
-0001b0 0751 .dw XT_COMPILE
-0001b1 01b4 .dw XT_DOTO
-0001b2 075c .dw XT_COMMA
-0001b3 3820 .dw XT_EXIT
-
- ; ( n -- ) (R: IP -- IP+1)
- ; Tools
- ; runtime portion of to
- ;VE_DOTO:
- ; .dw $ff04
- ; .db "(to)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOTO
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_DOTO:
-0001b4 3801 .dw DO_COLON
- PFA_DOTO:
- .endif
-0001b5 38f6 .dw XT_R_FROM
-0001b6 38b1 .dw XT_DUP
-0001b7 01c6 .dw XT_ICELLPLUS
-0001b8 38ff .dw XT_TO_R
-0001b9 3bcb .dw XT_FETCHI
- PFA_TO1:
-0001ba 38b1 .dw XT_DUP
-0001bb 01c6 .dw XT_ICELLPLUS
-0001bc 01c6 .dw XT_ICELLPLUS
-0001bd 3bcb .dw XT_FETCHI
-0001be 382a .dw XT_EXECUTE
-0001bf 3820 .dw XT_EXIT
- .include "words/i-cellplus.asm"
-
- ; Compiler
- ; skip to the next cell in flash
- VE_ICELLPLUS:
-0001c0 ff07 .dw $FF07
-0001c1 2d69
-0001c2 6563
-0001c3 6c6c
-0001c4 002b .db "i-cell+",0
-0001c5 01a6 .dw VE_HEAD
- .set VE_HEAD = VE_ICELLPLUS
- XT_ICELLPLUS:
-0001c6 3801 .dw DO_COLON
- PFA_ICELLPLUS:
-0001c7 3a2f .dw XT_1PLUS
-0001c8 3820 .dw XT_EXIT
- .include "words/icompare.asm"
-
- ; Tools
- ; compares string in RAM with string in flash. f is zero if equal like COMPARE
- VE_ICOMPARE:
-0001c9 ff08 .dw $ff08
-0001ca 6369
-0001cb 6d6f
-0001cc 6170
-0001cd 6572 .db "icompare"
-0001ce 01c0 .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
- XT_ICOMPARE:
-0001cf 3801 .dw DO_COLON
- PFA_ICOMPARE:
-0001d0 38ff .dw XT_TO_R ; ( -- r-addr r-len f-addr)
-0001d1 38cf .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
-0001d2 38f6 .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
-0001d3 3913 .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
-0001d4 3836 .dw XT_DOCONDBRANCH
-0001d5 01da .dw PFA_ICOMPARE_SAMELEN
-0001d6 3ed2 .dw XT_2DROP
-0001d7 38d9 .dw XT_DROP
-0001d8 394b .dw XT_TRUE
-0001d9 3820 .dw XT_EXIT
- PFA_ICOMPARE_SAMELEN:
-0001da 38c4 .dw XT_SWAP ; ( -- r-addr f-addr len )
-0001db 3954 .dw XT_ZERO
-0001dc 081b .dw XT_QDOCHECK
-0001dd 3836 .dw XT_DOCONDBRANCH
-0001de 01fd .dw PFA_ICOMPARE_DONE
-0001df 3a9b .dw XT_DODO
- PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
-0001e0 38cf .dw XT_OVER
-0001e1 3879 .dw XT_FETCH
- .if WANT_IGNORECASE == 1
- .endif
-0001e2 38cf .dw XT_OVER
-0001e3 3bcb .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
- .if WANT_IGNORECASE == 1
- .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
-0001e4 38b1 .dw XT_DUP
- ;.dw XT_BYTESWAP
-0001e5 383d .dw XT_DOLITERAL
-0001e6 0100 .dw $100
-0001e7 395c .dw XT_ULESS
-0001e8 3836 .dw XT_DOCONDBRANCH
-0001e9 01ee .dw PFA_ICOMPARE_LASTCELL
-0001ea 38c4 .dw XT_SWAP
-0001eb 383d .dw XT_DOLITERAL
-0001ec 00ff .dw $00FF
-0001ed 3a13 .dw XT_AND ; the final swap can be omitted
- PFA_ICOMPARE_LASTCELL:
-0001ee 3913 .dw XT_NOTEQUAL
-0001ef 3836 .dw XT_DOCONDBRANCH
-0001f0 01f5 .dw PFA_ICOMPARE_NEXTLOOP
-0001f1 3ed2 .dw XT_2DROP
-0001f2 394b .dw XT_TRUE
-0001f3 3ad4 .dw XT_UNLOOP
-0001f4 3820 .dw XT_EXIT
- PFA_ICOMPARE_NEXTLOOP:
-0001f5 3a2f .dw XT_1PLUS
-0001f6 38c4 .dw XT_SWAP
-0001f7 3c90 .dw XT_CELLPLUS
-0001f8 38c4 .dw XT_SWAP
-0001f9 383d .dw XT_DOLITERAL
-0001fa 0002 .dw 2
-0001fb 3aba .dw XT_DOPLUSLOOP
-0001fc 01e0 .dw PFA_ICOMPARE_LOOP
- PFA_ICOMPARE_DONE:
-0001fd 3ed2 .dw XT_2DROP
-0001fe 3954 .dw XT_ZERO
-0001ff 3820 .dw XT_EXIT
-
- .if WANT_IGNORECASE == 1
- .endif
- .include "words/star.asm"
-
- ; Arithmetics
- ; multiply routine
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_STAR:
-000200 ff01 .dw $ff01
-000201 002a .db "*",0
-000202 01c9 .dw VE_HEAD
- .set VE_HEAD = VE_STAR
- XT_STAR:
-000203 3801 .dw DO_COLON
- PFA_STAR:
- .endif
-
-000204 39a6 .dw XT_MSTAR
-000205 38d9 .dw XT_DROP
-000206 3820 .dw XT_EXIT
- .include "words/j.asm"
-
- ; Compiler
- ; loop counter of outer loop
- VE_J:
-000207 ff01 .dw $FF01
-000208 006a .db "j",0
-000209 0200 .dw VE_HEAD
- .set VE_HEAD = VE_J
- XT_J:
-00020a 3801 .dw DO_COLON
- PFA_J:
-00020b 3a76 .dw XT_RP_FETCH
-00020c 383d .dw XT_DOLITERAL
-00020d 0007 .dw 7
-00020e 399d .dw XT_PLUS
-00020f 3879 .dw XT_FETCH
-000210 3a76 .dw XT_RP_FETCH
-000211 383d .dw XT_DOLITERAL
-000212 0009 .dw 9
-000213 399d .dw XT_PLUS
-000214 3879 .dw XT_FETCH
-000215 399d .dw XT_PLUS
-000216 3820 .dw XT_EXIT
- .include "words/dabs.asm"
-
- ; Arithmetics
- ; double cell absolute value
- VE_DABS:
-000217 ff04 .dw $ff04
-000218 6164
-000219 7362 .db "dabs"
-00021a 0207 .dw VE_HEAD
- .set VE_HEAD = VE_DABS
- XT_DABS:
-00021b 3801 .dw DO_COLON
- PFA_DABS:
-00021c 38b1 .dw XT_DUP
-00021d 3921 .dw XT_ZEROLESS
-00021e 3836 .dw XT_DOCONDBRANCH
-00021f 0221 .dw PFA_DABS1
-000220 0228 .dw XT_DNEGATE
- PFA_DABS1:
-000221 3820 .dw XT_EXIT
- ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ;
- .include "words/dnegate.asm"
-
- ; Arithmetics
- ; double cell negation
- VE_DNEGATE:
-000222 ff07 .dw $ff07
-000223 6e64
-000224 6765
-000225 7461
-000226 0065 .db "dnegate",0
-000227 0217 .dw VE_HEAD
- .set VE_HEAD = VE_DNEGATE
- XT_DNEGATE:
-000228 3801 .dw DO_COLON
- PFA_DNEGATE:
-000229 3c3b .dw XT_DINVERT
-00022a 3fe6 .dw XT_ONE
-00022b 3954 .dw XT_ZERO
-00022c 3c15 .dw XT_DPLUS
-00022d 3820 .dw XT_EXIT
- ; : dnegate ( ud1 -- ud2 ) dinvert 1. d+ ;
- .include "words/cmove.asm"
-
- ; Memory
- ; copy data in RAM, from lower to higher addresses
- VE_CMOVE:
-00022e ff05 .dw $ff05
-00022f 6d63
-000230 766f
-000231 0065 .db "cmove",0
-000232 0222 .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE
- XT_CMOVE:
-000233 0234 .dw PFA_CMOVE
- PFA_CMOVE:
-000234 93bf push xh
-000235 93af push xl
-000236 91e9 ld zl, Y+
-000237 91f9 ld zh, Y+ ; addr-to
-000238 91a9 ld xl, Y+
-000239 91b9 ld xh, Y+ ; addr-from
-00023a 2f09 mov temp0, tosh
-00023b 2b08 or temp0, tosl
-00023c f021 brbs 1, PFA_CMOVE1
- PFA_CMOVE2:
-00023d 911d ld temp1, X+
-00023e 9311 st Z+, temp1
-00023f 9701 sbiw tosl, 1
-000240 f7e1 brbc 1, PFA_CMOVE2
- PFA_CMOVE1:
-000241 91af pop xl
-000242 91bf pop xh
-000243 9189
-000244 9199 loadtos
-000245 940c 3805 jmp_ DO_NEXT
- .include "words/2swap.asm"
-
- ; Stack
- ; Exchange the two top cell pairs
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2SWAP:
-000247 ff05 .dw $ff05
-000248 7332
-000249 6177
-00024a 0070 .db "2swap",0
-00024b 022e .dw VE_HEAD
- .set VE_HEAD = VE_2SWAP
- XT_2SWAP:
-00024c 3801 .dw DO_COLON
- PFA_2SWAP:
-
- .endif
-00024d 38e1 .dw XT_ROT
-00024e 38ff .dw XT_TO_R
-00024f 38e1 .dw XT_ROT
-000250 38f6 .dw XT_R_FROM
-000251 3820 .dw XT_EXIT
- .include "words/tib.asm"
-
- ; System
- ; refills the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILLTIB:
-000252 ff0a .dw $ff0a
-000253 6572
-000254 6966
-000255 6c6c
-000256 742d
-000257 6269 .db "refill-tib"
-000258 0247 .dw VE_HEAD
- .set VE_HEAD = VE_REFILLTIB
- XT_REFILLTIB:
-000259 3801 .dw DO_COLON
- PFA_REFILLTIB:
- .endif
-00025a 0275 .dw XT_TIB
-00025b 383d .dw XT_DOLITERAL
-00025c 005a .dw TIB_SIZE
-00025d 048d .dw XT_ACCEPT
-00025e 027b .dw XT_NUMBERTIB
-00025f 3881 .dw XT_STORE
-000260 3954 .dw XT_ZERO
-000261 3ee2 .dw XT_TO_IN
-000262 3881 .dw XT_STORE
-000263 394b .dw XT_TRUE ; -1
-000264 3820 .dw XT_EXIT
-
- ; ( -- addr n )
- ; System
- ; address and current length of the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCETIB:
-000265 ff0a .dw $FF0A
-000266 6f73
-000267 7275
-000268 6563
-000269 742d
-00026a 6269 .db "source-tib"
-00026b 0252 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCETIB
- XT_SOURCETIB:
-00026c 3801 .dw DO_COLON
- PFA_SOURCETIB:
- .endif
-00026d 0275 .dw XT_TIB
-00026e 027b .dw XT_NUMBERTIB
-00026f 3879 .dw XT_FETCH
-000270 3820 .dw XT_EXIT
-
- ; ( -- addr )
- ; System Variable
- ; terminal input buffer address
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TIB:
-000271 ff03 .dw $ff03
-000272 6974
-000273 0062 .db "tib",0
-000274 0265 .dw VE_HEAD
- .set VE_HEAD = VE_TIB
- XT_TIB:
-000275 3848 .dw PFA_DOVARIABLE
- PFA_TIB:
-000276 0087 .dw ram_tib
- .dseg
-000087 ram_tib: .byte TIB_SIZE
- .cseg
- .endif
-
- ; ( -- addr )
- ; System Variable
- ; variable holding the number of characters in TIB
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBERTIB:
-000277 ff04 .dw $ff04
-000278 7423
-000279 6269 .db "#tib"
-00027a 0271 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBERTIB
- XT_NUMBERTIB:
-00027b 3848 .dw PFA_DOVARIABLE
- PFA_NUMBERTIB:
-00027c 00e1 .dw ram_sharptib
- .dseg
-0000e1 ram_sharptib: .byte 2
- .cseg
- .endif
- .include "words/init-ram.asm"
-
- ; Tools
- ; copy len cells from eeprom to ram
- VE_EE2RAM:
-00027d ff06 .dw $ff06
-00027e 6565
-00027f 723e
-000280 6d61 .db "ee>ram"
-000281 0277 .dw VE_HEAD
- .set VE_HEAD = VE_EE2RAM
- XT_EE2RAM:
-000282 3801 .dw DO_COLON
- PFA_EE2RAM: ; ( -- )
-000283 3954 .dw XT_ZERO
-000284 3a9b .dw XT_DODO
- PFA_EE2RAM_1:
- ; ( -- e-addr r-addr )
-000285 38cf .dw XT_OVER
-000286 3b5f .dw XT_FETCHE
-000287 38cf .dw XT_OVER
-000288 3881 .dw XT_STORE
-000289 3c90 .dw XT_CELLPLUS
-00028a 38c4 .dw XT_SWAP
-00028b 3c90 .dw XT_CELLPLUS
-00028c 38c4 .dw XT_SWAP
-00028d 3ac9 .dw XT_DOLOOP
-00028e 0285 .dw PFA_EE2RAM_1
- PFA_EE2RAM_2:
-00028f 3ed2 .dw XT_2DROP
-000290 3820 .dw XT_EXIT
-
- ; ( -- )
- ; Tools
- ; setup the default user area from eeprom
- VE_INIT_RAM:
-000291 ff08 .dw $ff08
-000292 6e69
-000293 7469
-000294 722d
-000295 6d61 .db "init-ram"
-000296 027d .dw VE_HEAD
- .set VE_HEAD = VE_INIT_RAM
- XT_INIT_RAM:
-000297 3801 .dw DO_COLON
- PFA_INI_RAM: ; ( -- )
-000298 383d .dw XT_DOLITERAL
-000299 0060 .dw EE_INITUSER
-00029a 3b02 .dw XT_UP_FETCH
-00029b 383d .dw XT_DOLITERAL
-00029c 0022 .dw SYSUSERSIZE
-00029d 3a04 .dw XT_2SLASH
-00029e 0282 .dw XT_EE2RAM
-00029f 3820 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
- .include "words/environment.asm"
-
- ; System Value
- ; word list identifier of the environmental search list
- VE_ENVIRONMENT:
-0002a0 ff0b .dw $ff0b
-0002a1 6e65
-0002a2 6976
-0002a3 6f72
-0002a4 6d6e
-0002a5 6e65
-0002a6 0074 .db "environment",0
-0002a7 0291 .dw VE_HEAD
- .set VE_HEAD = VE_ENVIRONMENT
- XT_ENVIRONMENT:
-0002a8 3848 .dw PFA_DOVARIABLE
- PFA_ENVIRONMENT:
-0002a9 003a .dw CFG_ENVIRONMENT
- .include "words/env-wordlists.asm"
-
- ; Environment
- ; maximum number of wordlists in the dictionary search order
- VE_ENVWORDLISTS:
-0002aa ff09 .dw $ff09
-0002ab 6f77
-0002ac 6472
-0002ad 696c
-0002ae 7473
-0002af 0073 .db "wordlists",0
-0002b0 0000 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVWORDLISTS
- XT_ENVWORDLISTS:
-0002b1 3801 .dw DO_COLON
- PFA_ENVWORDLISTS:
-0002b2 383d .dw XT_DOLITERAL
-0002b3 0008 .dw NUMWORDLISTS
-0002b4 3820 .dw XT_EXIT
- .include "words/env-slashpad.asm"
-
- ; Environment
- ; Size of the PAD buffer in bytes
- VE_ENVSLASHPAD:
-0002b5 ff04 .dw $ff04
-0002b6 702f
-0002b7 6461 .db "/pad"
-0002b8 02aa .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHPAD
- XT_ENVSLASHPAD:
-0002b9 3801 .dw DO_COLON
- PFA_ENVSLASHPAD:
-0002ba 3a8d .dw XT_SP_FETCH
-0002bb 3ee8 .dw XT_PAD
-0002bc 3993 .dw XT_MINUS
-0002bd 3820 .dw XT_EXIT
- .include "words/env-slashhold.asm"
-
- ; Environment
- ; size of the pictured numeric output buffer in bytes
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENVSLASHHOLD:
-0002be ff05 .dw $ff05
-0002bf 682f
-0002c0 6c6f
-0002c1 0064 .db "/hold",0
-0002c2 02b5 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHHOLD
- XT_ENVSLASHHOLD:
-0002c3 3801 .dw DO_COLON
- PFA_ENVSLASHHOLD:
- .endif
-0002c4 3ee8 .dw XT_PAD
-0002c5 3f23 .dw XT_HERE
-0002c6 3993 .dw XT_MINUS
-0002c7 3820 .dw XT_EXIT
- .include "words/env-forthname.asm"
-
- ; Environment
- ; flash address of the amforth name string
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHNAME:
-0002c8 ff0a .dw $ff0a
-0002c9 6f66
-0002ca 7472
-0002cb 2d68
-0002cc 616e
-0002cd 656d .db "forth-name"
-0002ce 02be .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHNAME
- XT_ENV_FORTHNAME:
-0002cf 3801 .dw DO_COLON
- PFA_EN_FORTHNAME:
-0002d0 03c5 .dw XT_DOSLITERAL
-0002d1 0007 .dw 7
- .endif
-0002d2 6d61
-0002d3 6f66
-0002d4 7472
-../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte
-0002d5 0068 .db "amforth"
- .if cpu_msp430==1
- .endif
-0002d6 3820 .dw XT_EXIT
- .include "words/env-forthversion.asm"
-
- ; Environment
- ; version number of amforth
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHVERSION:
-0002d7 ff07 .dw $ff07
-0002d8 6576
-0002d9 7372
-0002da 6f69
-0002db 006e .db "version",0
-0002dc 02c8 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHVERSION
- XT_ENV_FORTHVERSION:
-0002dd 3801 .dw DO_COLON
- PFA_EN_FORTHVERSION:
- .endif
-0002de 383d .dw XT_DOLITERAL
-0002df 0041 .dw 65
-0002e0 3820 .dw XT_EXIT
- .include "words/env-cpu.asm"
-
- ; Environment
- ; flash address of the CPU identification string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_CPU:
-0002e1 ff03 .dw $ff03
-0002e2 7063
-0002e3 0075 .db "cpu",0
-0002e4 02d7 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_CPU
- XT_ENV_CPU:
-0002e5 3801 .dw DO_COLON
- PFA_EN_CPU:
- .endif
-0002e6 383d .dw XT_DOLITERAL
-0002e7 002d .dw mcu_name
-0002e8 0424 .dw XT_ICOUNT
-0002e9 3820 .dw XT_EXIT
- .include "words/env-mcuinfo.asm"
-
- ; Environment
- ; flash address of some CPU specific parameters
- VE_ENV_MCUINFO:
-0002ea ff08 .dw $ff08
-0002eb 636d
-0002ec 2d75
-0002ed 6e69
-0002ee 6f66 .db "mcu-info"
-0002ef 02e1 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_MCUINFO
- XT_ENV_MCUINFO:
-0002f0 3801 .dw DO_COLON
- PFA_EN_MCUINFO:
-0002f1 383d .dw XT_DOLITERAL
-0002f2 0029 .dw mcu_info
-0002f3 3820 .dw XT_EXIT
- .include "words/env-usersize.asm"
-
- ; Environment
- ; size of the USER area in bytes
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_ENVUSERSIZE:
-0002f4 ff05 .dw $ff05
-0002f5 752f
-0002f6 6573
-0002f7 0072 .db "/user",0
-0002f8 02ea .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVUSERSIZE
- XT_ENVUSERSIZE:
-0002f9 3801 .dw DO_COLON
- PFA_ENVUSERSIZE:
- .endif
-0002fa 383d .dw XT_DOLITERAL
-0002fb 002c .dw SYSUSERSIZE + APPUSERSIZE
-0002fc 3820 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/hld.asm"
-
- ; Numeric IO
- ; pointer to current write position in the Pictured Numeric Output buffer
- VE_HLD:
-0002fd ff03 .dw $ff03
-0002fe 6c68
-0002ff 0064 .db "hld",0
-000300 02a0 .dw VE_HEAD
- .set VE_HEAD = VE_HLD
- XT_HLD:
-000301 3848 .dw PFA_DOVARIABLE
- PFA_HLD:
-000302 00e3 .dw ram_hld
-
- .dseg
-0000e3 ram_hld: .byte 2
- .cseg
- .include "words/hold.asm"
-
- ; Numeric IO
- ; prepend character to pictured numeric output buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HOLD:
-000303 ff04 .dw $ff04
-000304 6f68
-000305 646c .db "hold"
-000306 02fd .dw VE_HEAD
- .set VE_HEAD = VE_HOLD
- XT_HOLD:
-000307 3801 .dw DO_COLON
- PFA_HOLD:
- .endif
-000308 0301 .dw XT_HLD
-000309 38b1 .dw XT_DUP
-00030a 3879 .dw XT_FETCH
-00030b 3a35 .dw XT_1MINUS
-00030c 38b1 .dw XT_DUP
-00030d 38ff .dw XT_TO_R
-00030e 38c4 .dw XT_SWAP
-00030f 3881 .dw XT_STORE
-000310 38f6 .dw XT_R_FROM
-000311 388d .dw XT_CSTORE
-000312 3820 .dw XT_EXIT
- .include "words/less-sharp.asm" ; <#
-
- ; Numeric IO
- ; initialize the pictured numeric output conversion process
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_SHARP:
-000313 ff02 .dw $ff02
-000314 233c .db "<#"
-000315 0303 .dw VE_HEAD
- .set VE_HEAD = VE_L_SHARP
- XT_L_SHARP:
-000316 3801 .dw DO_COLON
- PFA_L_SHARP:
- .endif
-000317 3ee8 .dw XT_PAD
-000318 0301 .dw XT_HLD
-000319 3881 .dw XT_STORE
-00031a 3820 .dw XT_EXIT
- .include "words/sharp.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert one digit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SHARP:
-00031b ff01 .dw $ff01
-00031c 0023 .db "#",0
-00031d 0313 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP
- XT_SHARP:
-00031e 3801 .dw DO_COLON
- PFA_SHARP:
- .endif
-00031f 3ebd .dw XT_BASE
-000320 3879 .dw XT_FETCH
-000321 039b .dw XT_UDSLASHMOD
-000322 38e1 .dw XT_ROT
-000323 383d .dw XT_DOLITERAL
-000324 0009 .dw 9
-000325 38cf .dw XT_OVER
-000326 396e .dw XT_LESS
-000327 3836 .dw XT_DOCONDBRANCH
-000328 032c DEST(PFA_SHARP1)
-000329 383d .dw XT_DOLITERAL
-00032a 0007 .dw 7
-00032b 399d .dw XT_PLUS
- PFA_SHARP1:
-00032c 383d .dw XT_DOLITERAL
-00032d 0030 .dw 48 ; ASCII 0
-00032e 399d .dw XT_PLUS
-00032f 0307 .dw XT_HOLD
-000330 3820 .dw XT_EXIT
- ; : # ( ud1 -- ud2 )
- ; base @ ud/mod rot 9 over < if 7 + then 30 + hold ;
- .include "words/sharp-s.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert all digits until 0 (zero) is reached
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_S:
-000331 ff02 .dw $ff02
-000332 7323 .db "#s"
-000333 031b .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_S
- XT_SHARP_S:
-000334 3801 .dw DO_COLON
- PFA_SHARP_S:
- .endif
- NUMS1:
-000335 031e .dw XT_SHARP
-000336 3ec9 .dw XT_2DUP
-000337 3a1c .dw XT_OR
-000338 391a .dw XT_ZEROEQUAL
-000339 3836 .dw XT_DOCONDBRANCH
-00033a 0335 DEST(NUMS1) ; PFA_SHARP_S
-00033b 3820 .dw XT_EXIT
- .include "words/sharp-greater.asm" ; #>
-
- ; Numeric IO
- ; Pictured Numeric Output: convert PNO buffer into an string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_G:
-00033c ff02 .dw $ff02
-00033d 3e23 .db "#>"
-00033e 0331 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_G
- XT_SHARP_G:
-00033f 3801 .dw DO_COLON
- PFA_SHARP_G:
- .endif
-000340 3ed2 .dw XT_2DROP
-000341 0301 .dw XT_HLD
-000342 3879 .dw XT_FETCH
-000343 3ee8 .dw XT_PAD
-000344 38cf .dw XT_OVER
-000345 3993 .dw XT_MINUS
-000346 3820 .dw XT_EXIT
- .include "words/sign.asm"
-
- ; Numeric IO
- ; place a - in HLD if n is negative
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SIGN:
-000347 ff04 .dw $ff04
-000348 6973
-000349 6e67 .db "sign"
-00034a 033c .dw VE_HEAD
- .set VE_HEAD = VE_SIGN
- XT_SIGN:
-00034b 3801 .dw DO_COLON
- PFA_SIGN:
- .endif
-00034c 3921 .dw XT_ZEROLESS
-00034d 3836 .dw XT_DOCONDBRANCH
-00034e 0352 DEST(PFA_SIGN1)
-00034f 383d .dw XT_DOLITERAL
-000350 002d .dw 45 ; ascii -
-000351 0307 .dw XT_HOLD
- PFA_SIGN1:
-000352 3820 .dw XT_EXIT
- .include "words/d-dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOTR:
-000353 ff03 .dw $ff03
-000354 2e64
-000355 0072 .db "d.r",0
-000356 0347 .dw VE_HEAD
- .set VE_HEAD = VE_DDOTR
- XT_DDOTR:
-000357 3801 .dw DO_COLON
- PFA_DDOTR:
-
- .endif
-000358 38ff .dw XT_TO_R
-000359 3eda .dw XT_TUCK
-00035a 021b .dw XT_DABS
-00035b 0316 .dw XT_L_SHARP
-00035c 0334 .dw XT_SHARP_S
-00035d 38e1 .dw XT_ROT
-00035e 034b .dw XT_SIGN
-00035f 033f .dw XT_SHARP_G
-000360 38f6 .dw XT_R_FROM
-000361 38cf .dw XT_OVER
-000362 3993 .dw XT_MINUS
-000363 3fb7 .dw XT_SPACES
-000364 042e .dw XT_TYPE
-000365 3820 .dw XT_EXIT
- ; : d.r ( d n -- )
- ; >r swap over dabs <# #s rot sign #> r> over - spaces type ;
- .include "words/dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTR:
-000366 ff02 .dw $ff02
-000367 722e .db ".r"
-000368 0353 .dw VE_HEAD
- .set VE_HEAD = VE_DOTR
- XT_DOTR:
-000369 3801 .dw DO_COLON
- PFA_DOTR:
-
- .endif
-00036a 38ff .dw XT_TO_R
-00036b 3fc7 .dw XT_S2D
-00036c 38f6 .dw XT_R_FROM
-00036d 0357 .dw XT_DDOTR
-00036e 3820 .dw XT_EXIT
- ; : .r ( s n -- ) >r s>d r> d.r ;
- .include "words/d-dot.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOT:
-00036f ff02 .dw $ff02
-000370 2e64 .db "d."
-000371 0366 .dw VE_HEAD
- .set VE_HEAD = VE_DDOT
- XT_DDOT:
-000372 3801 .dw DO_COLON
- PFA_DDOT:
-
- .endif
-000373 3954 .dw XT_ZERO
-000374 0357 .dw XT_DDOTR
-000375 3fae .dw XT_SPACE
-000376 3820 .dw XT_EXIT
- ; : d. ( d -- ) 0 d.r space ;
- .include "words/dot.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOT:
-000377 ff01 .dw $ff01
-000378 002e .db ".",0
-000379 036f .dw VE_HEAD
- .set VE_HEAD = VE_DOT
- XT_DOT:
-00037a 3801 .dw DO_COLON
- PFA_DOT:
- .endif
-00037b 3fc7 .dw XT_S2D
-00037c 0372 .dw XT_DDOT
-00037d 3820 .dw XT_EXIT
- ; : . ( s -- ) s>d d. ;
- .include "words/ud-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDDOT:
-00037e ff03 .dw $ff03
-00037f 6475
-000380 002e .db "ud.",0
-000381 0377 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOT
- XT_UDDOT:
-000382 3801 .dw DO_COLON
- PFA_UDDOT:
- .endif
-000383 3954 .dw XT_ZERO
-000384 038b .dw XT_UDDOTR
-000385 3fae .dw XT_SPACE
-000386 3820 .dw XT_EXIT
- .include "words/ud-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDDOTR:
-000387 ff04 .dw $ff04
-000388 6475
-000389 722e .db "ud.r"
-00038a 037e .dw VE_HEAD
- .set VE_HEAD = VE_UDDOTR
- XT_UDDOTR:
-00038b 3801 .dw DO_COLON
- PFA_UDDOTR:
- .endif
-00038c 38ff .dw XT_TO_R
-00038d 0316 .dw XT_L_SHARP
-00038e 0334 .dw XT_SHARP_S
-00038f 033f .dw XT_SHARP_G
-000390 38f6 .dw XT_R_FROM
-000391 38cf .dw XT_OVER
-000392 3993 .dw XT_MINUS
-000393 3fb7 .dw XT_SPACES
-000394 042e .dw XT_TYPE
-000395 3820 .dw XT_EXIT
- .include "words/ud-slash-mod.asm"
-
- ; Arithmetics
- ; unsigned double cell division with remainder
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSLASHMOD:
-000396 ff06 .dw $ff06
-000397 6475
-000398 6d2f
-000399 646f .db "ud/mod"
-00039a 0387 .dw VE_HEAD
- .set VE_HEAD = VE_UDSLASHMOD
- XT_UDSLASHMOD:
-00039b 3801 .dw DO_COLON
- PFA_UDSLASHMOD:
- .endif
-00039c 38ff .dw XT_TO_R
-00039d 3954 .dw XT_ZERO
-00039e 3908 .dw XT_R_FETCH
-00039f 39c2 .dw XT_UMSLASHMOD
-0003a0 38f6 .dw XT_R_FROM
-0003a1 38c4 .dw XT_SWAP
-0003a2 38ff .dw XT_TO_R
-0003a3 39c2 .dw XT_UMSLASHMOD
-0003a4 38f6 .dw XT_R_FROM
-0003a5 3820 .dw XT_EXIT
- .include "words/digit-q.asm"
-
- ; Numeric IO
- ; tries to convert a character to a number, set flag accordingly
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DIGITQ:
-0003a6 ff06 .dw $ff06
-0003a7 6964
-0003a8 6967
-0003a9 3f74 .db "digit?"
-0003aa 0396 .dw VE_HEAD
- .set VE_HEAD = VE_DIGITQ
- XT_DIGITQ:
-0003ab 3801 .dw DO_COLON
- PFA_DIGITQ:
- .endif
-0003ac 3f66 .dw XT_TOUPPER
-0003ad 38b1
-0003ae 383d
-0003af 0039
-0003b0 3978
-0003b1 383d
-0003b2 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256
-0003b3 3a13
-0003b4 399d
-0003b5 38b1
-0003b6 383d
-0003b7 0140
-0003b8 3978 .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER
-0003b9 383d
-0003ba 0107
-0003bb 3a13
-0003bc 3993
-0003bd 383d
-0003be 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48
-0003bf 3993
-0003c0 38b1
-0003c1 3ebd
-0003c2 3879
-0003c3 395c .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS
-0003c4 3820 .DW XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/do-sliteral.asm"
-
- ; String
- ; runtime portion of sliteral
- ;VE_DOSLITERAL:
- ; .dw $ff0a
- ; .db "(sliteral)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSLITERAL
- XT_DOSLITERAL:
-0003c5 3801 .dw DO_COLON
- PFA_DOSLITERAL:
-0003c6 3908 .dw XT_R_FETCH ; ( -- addr )
-0003c7 0424 .dw XT_ICOUNT
-0003c8 38f6 .dw XT_R_FROM
-0003c9 38cf .dw XT_OVER ; ( -- addr' n addr n)
-0003ca 3a2f .dw XT_1PLUS
-0003cb 3a04 .dw XT_2SLASH ; ( -- addr' n addr k )
-0003cc 399d .dw XT_PLUS ; ( -- addr' n addr'' )
-0003cd 3a2f .dw XT_1PLUS
-0003ce 38ff .dw XT_TO_R ; ( -- )
-0003cf 3820 .dw XT_EXIT
- .include "words/scomma.asm"
-
- ; Compiler
- ; compiles a string from RAM to Flash
- VE_SCOMMA:
-0003d0 ff02 .dw $ff02
-0003d1 2c73 .db "s",$2c
-0003d2 03a6 .dw VE_HEAD
- .set VE_HEAD = VE_SCOMMA
- XT_SCOMMA:
-0003d3 3801 .dw DO_COLON
- PFA_SCOMMA:
-0003d4 38b1 .dw XT_DUP
-0003d5 03d7 .dw XT_DOSCOMMA
-0003d6 3820 .dw XT_EXIT
-
- ; ( addr len len' -- )
- ; Compiler
- ; compiles a string from RAM to Flash
- ;VE_DOSCOMMA:
- ; .dw $ff04
- ; .db "(s",$2c,")"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSCOMMA
- XT_DOSCOMMA:
-0003d7 3801 .dw DO_COLON
- PFA_DOSCOMMA:
-0003d8 075c .dw XT_COMMA
-0003d9 38b1 .dw XT_DUP ; ( --addr len len)
-0003da 3a04 .dw XT_2SLASH ; ( -- addr len len/2
-0003db 3eda .dw XT_TUCK ; ( -- addr len/2 len len/2
-0003dc 3a0b .dw XT_2STAR ; ( -- addr len/2 len len'
-0003dd 3993 .dw XT_MINUS ; ( -- addr len/2 rem
-0003de 38ff .dw XT_TO_R
-0003df 3954 .dw XT_ZERO
-0003e0 081b .dw XT_QDOCHECK
-0003e1 3836 .dw XT_DOCONDBRANCH
-0003e2 03ea .dw PFA_SCOMMA2
-0003e3 3a9b .dw XT_DODO
- PFA_SCOMMA1:
-0003e4 38b1 .dw XT_DUP ; ( -- addr addr )
-0003e5 3879 .dw XT_FETCH ; ( -- addr c1c2 )
-0003e6 075c .dw XT_COMMA ; ( -- addr )
-0003e7 3c90 .dw XT_CELLPLUS ; ( -- addr+cell )
-0003e8 3ac9 .dw XT_DOLOOP
-0003e9 03e4 .dw PFA_SCOMMA1
- PFA_SCOMMA2:
-0003ea 38f6 .dw XT_R_FROM
-0003eb 3928 .dw XT_GREATERZERO
-0003ec 3836 .dw XT_DOCONDBRANCH
-0003ed 03f1 .dw PFA_SCOMMA3
-0003ee 38b1 .dw XT_DUP ; well, tricky
-0003ef 3898 .dw XT_CFETCH
-0003f0 075c .dw XT_COMMA
- PFA_SCOMMA3:
-0003f1 38d9 .dw XT_DROP ; ( -- )
-0003f2 3820 .dw XT_EXIT
- .include "words/itype.asm"
-
- ; Tools
- ; reads string from flash and prints it
- VE_ITYPE:
-0003f3 ff05 .dw $ff05
-0003f4 7469
-0003f5 7079
-0003f6 0065 .db "itype",0
-0003f7 03d0 .dw VE_HEAD
- .set VE_HEAD = VE_ITYPE
- XT_ITYPE:
-0003f8 3801 .dw DO_COLON
- PFA_ITYPE:
-0003f9 38b1 .dw XT_DUP ; ( --addr len len)
-0003fa 3a04 .dw XT_2SLASH ; ( -- addr len len/2
-0003fb 3eda .dw XT_TUCK ; ( -- addr len/2 len len/2
-0003fc 3a0b .dw XT_2STAR ; ( -- addr len/2 len len'
-0003fd 3993 .dw XT_MINUS ; ( -- addr len/2 rem
-0003fe 38ff .dw XT_TO_R
-0003ff 3954 .dw XT_ZERO
-000400 081b .dw XT_QDOCHECK
-000401 3836 .dw XT_DOCONDBRANCH
-000402 040c .dw PFA_ITYPE2
-000403 3a9b .dw XT_DODO
- PFA_ITYPE1:
-000404 38b1 .dw XT_DUP ; ( -- addr addr )
-000405 3bcb .dw XT_FETCHI ; ( -- addr c1c2 )
-000406 38b1 .dw XT_DUP
-000407 0419 .dw XT_LOWEMIT
-000408 0415 .dw XT_HIEMIT
-000409 3a2f .dw XT_1PLUS ; ( -- addr+cell )
-00040a 3ac9 .dw XT_DOLOOP
-00040b 0404 .dw PFA_ITYPE1
- PFA_ITYPE2:
-00040c 38f6 .dw XT_R_FROM
-00040d 3928 .dw XT_GREATERZERO
-00040e 3836 .dw XT_DOCONDBRANCH
-00040f 0413 .dw PFA_ITYPE3
-000410 38b1 .dw XT_DUP ; make sure the drop below has always something to do
-000411 3bcb .dw XT_FETCHI
-000412 0419 .dw XT_LOWEMIT
- PFA_ITYPE3:
-000413 38d9 .dw XT_DROP
-000414 3820 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_HIEMIT:
- ; .dw $ff06
- ; .db "hiemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_HIEMIT
- XT_HIEMIT:
-000415 3801 .dw DO_COLON
- PFA_HIEMIT:
-000416 3af9 .dw XT_BYTESWAP
-000417 0419 .dw XT_LOWEMIT
-000418 3820 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_LOWEMIT:
- ; .dw $ff07
- ; .db "lowemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LOWEMIT
- XT_LOWEMIT:
-000419 3801 .dw DO_COLON
- PFA_LOWEMIT:
-00041a 383d .dw XT_DOLITERAL
-00041b 00ff .dw $00ff
-00041c 3a13 .dw XT_AND
-00041d 3ef2 .dw XT_EMIT
-00041e 3820 .dw XT_EXIT
- .include "words/icount.asm"
-
- ; Tools
- ; get count information out of a counted string in flash
- VE_ICOUNT:
-00041f ff06 .dw $ff06
-000420 6369
-000421 756f
-000422 746e .db "icount"
-000423 03f3 .dw VE_HEAD
- .set VE_HEAD = VE_ICOUNT
- XT_ICOUNT:
-000424 3801 .dw DO_COLON
- PFA_ICOUNT:
-000425 38b1 .dw XT_DUP
-000426 3a2f .dw XT_1PLUS
-000427 38c4 .dw XT_SWAP
-000428 3bcb .dw XT_FETCHI
-000429 3820 .dw XT_EXIT
- .include "words/type.asm"
-
- ; Character IO
- ; print a RAM based string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TYPE:
-00042a ff04 .dw $ff04
-00042b 7974
-00042c 6570 .db "type"
-00042d 041f .dw VE_HEAD
- .set VE_HEAD = VE_TYPE
- XT_TYPE:
-00042e 3801 .dw DO_COLON
- PFA_TYPE:
-
- .endif
-00042f 3f99 .dw XT_BOUNDS
-000430 081b .dw XT_QDOCHECK
-000431 3836 .dw XT_DOCONDBRANCH
-000432 0439 DEST(PFA_TYPE2)
-000433 3a9b .dw XT_DODO
- PFA_TYPE1:
-000434 3aac .dw XT_I
-000435 3898 .dw XT_CFETCH
-000436 3ef2 .dw XT_EMIT
-000437 3ac9 .dw XT_DOLOOP
-000438 0434 DEST(PFA_TYPE1)
- PFA_TYPE2:
-000439 3820 .dw XT_EXIT
- .include "words/tick.asm"
-
- ; Dictionary
- ; search dictionary for name, return XT or throw an exception -13
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TICK:
-00043a ff01 .dw $ff01
-00043b 0027 .db "'",0
-00043c 042a .dw VE_HEAD
- .set VE_HEAD = VE_TICK
- XT_TICK:
-00043d 3801 .dw DO_COLON
- PFA_TICK:
- .endif
-00043e 05b0 .dw XT_PARSENAME
-00043f 05f3 .dw XT_FORTHRECOGNIZER
-000440 05fe .dw XT_RECOGNIZE
- ; a word is tickable unless DT:TOKEN is DT:NULL or
- ; the interpret action is a NOOP
-000441 38b1 .dw XT_DUP
-000442 068b .dw XT_DT_NULL
-000443 3fdf .dw XT_EQUAL
-000444 38c4 .dw XT_SWAP
-000445 3bcb .dw XT_FETCHI
-000446 383d .dw XT_DOLITERAL
-000447 019a .dw XT_NOOP
-000448 3fdf .dw XT_EQUAL
-000449 3a1c .dw XT_OR
-00044a 3836 .dw XT_DOCONDBRANCH
-00044b 044f DEST(PFA_TICK1)
-00044c 383d .dw XT_DOLITERAL
-00044d fff3 .dw -13
-00044e 3d86 .dw XT_THROW
- PFA_TICK1:
-00044f 38d9 .dw XT_DROP
-000450 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/cskip.asm"
-
- ; String
- ; skips leading occurancies in string at addr1/n1 leaving addr2/n2 pointing to the 1st non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSKIP:
-000451 ff05 .dw $ff05
-000452 7363
-000453 696b
-000454 0070 .db "cskip",0
-000455 043a .dw VE_HEAD
- .set VE_HEAD = VE_CSKIP
- XT_CSKIP:
-000456 3801 .dw DO_COLON
- PFA_CSKIP:
- .endif
-000457 38ff .dw XT_TO_R ; ( -- addr1 n1 )
- PFA_CSKIP1:
-000458 38b1 .dw XT_DUP ; ( -- addr' n' n' )
-000459 3836 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-00045a 0465 DEST(PFA_CSKIP2)
-00045b 38cf .dw XT_OVER ; ( -- addr' n' addr' )
-00045c 3898 .dw XT_CFETCH ; ( -- addr' n' c' )
-00045d 3908 .dw XT_R_FETCH ; ( -- addr' n' c' c )
-00045e 3fdf .dw XT_EQUAL ; ( -- addr' n' f )
-00045f 3836 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-000460 0465 DEST(PFA_CSKIP2)
-000461 3fe6 .dw XT_ONE
-000462 05a1 .dw XT_SLASHSTRING
-000463 382f .dw XT_DOBRANCH
-000464 0458 DEST(PFA_CSKIP1)
- PFA_CSKIP2:
-000465 38f6 .dw XT_R_FROM
-000466 38d9 .dw XT_DROP ; ( -- addr2 n2)
-000467 3820 .dw XT_EXIT
- .include "words/cscan.asm"
-
- ; String
- ; Scan string at addr1/n1 for the first occurance of c, leaving addr1/n2, char at n2 is first non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSCAN:
-000468 ff05 .dw $ff05
-000469 7363
-00046a 6163
-../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte
-00046b 006e .db "cscan"
-00046c 0451 .dw VE_HEAD
- .set VE_HEAD = VE_CSCAN
- XT_CSCAN:
-00046d 3801 .dw DO_COLON
- PFA_CSCAN:
- .endif
-00046e 38ff .dw XT_TO_R
-00046f 38cf .dw XT_OVER
- PFA_CSCAN1:
-000470 38b1 .dw XT_DUP
-000471 3898 .dw XT_CFETCH
-000472 3908 .dw XT_R_FETCH
-000473 3fdf .dw XT_EQUAL
-000474 391a .dw XT_ZEROEQUAL
-000475 3836 .dw XT_DOCONDBRANCH
-000476 0482 DEST(PFA_CSCAN2)
-000477 38c4 .dw XT_SWAP
-000478 3a35 .dw XT_1MINUS
-000479 38c4 .dw XT_SWAP
-00047a 38cf .dw XT_OVER
-00047b 3921 .dw XT_ZEROLESS ; not negative
-00047c 391a .dw XT_ZEROEQUAL
-00047d 3836 .dw XT_DOCONDBRANCH
-00047e 0482 DEST(PFA_CSCAN2)
-00047f 3a2f .dw XT_1PLUS
-000480 382f .dw XT_DOBRANCH
-000481 0470 DEST(PFA_CSCAN1)
- PFA_CSCAN2:
-000482 38f0 .dw XT_NIP
-000483 38cf .dw XT_OVER
-000484 3993 .dw XT_MINUS
-000485 38f6 .dw XT_R_FROM
-000486 38d9 .dw XT_DROP
-000487 3820 .dw XT_EXIT
-
- ; : my-cscan ( addr len c -- addr len' )
- ; >r over ( -- addr len addr )
- ; begin
- ; dup c@ r@ <> while
- ; swap 1- swap over 0 >= while
- ; 1+
- ; repeat then
- ; nip over - r> drop
- ; ;
- .include "words/accept.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ACCEPT:
-000488 ff06 .dw $ff06
-000489 6361
-00048a 6563
-00048b 7470 .db "accept"
-00048c 0468 .dw VE_HEAD
- .set VE_HEAD = VE_ACCEPT
- XT_ACCEPT:
-00048d 3801 .dw DO_COLON
- PFA_ACCEPT:
-
- .endif
-00048e 38cf
-00048f 399d
-000490 3a35
-000491 38cf .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER
-000492 3f03
-000493 38b1
-000494 04ce
-000495 391a
-000496 3836 ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH
-000497 04c0 DEST(ACC5)
-000498 38b1
-000499 383d
-00049a 0008
-00049b 3fdf
-00049c 3836 .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH
-00049d 04b0 DEST(ACC3)
-00049e 38d9
-00049f 38e1
-0004a0 3ec9
-0004a1 3978
-0004a2 38ff
-0004a3 38e1
-0004a4 38e1
-0004a5 38f6
-0004a6 3836 .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH
-0004a7 04ae DEST(ACC6)
-0004a8 04c6
-0004a9 3a35
-0004aa 38ff
-0004ab 38cf
-0004ac 38f6
-0004ad 014f .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX
-0004ae 382f ACC6: .DW XT_DOBRANCH
-0004af 04be DEST(ACC4)
-
-
- ACC3: ; check for remaining control characters, replace them with blank
-0004b0 38b1 .dw XT_DUP ; ( -- addr k k )
-0004b1 3f54 .dw XT_BL
-0004b2 396e .dw XT_LESS
-0004b3 3836 .dw XT_DOCONDBRANCH
-0004b4 04b7 DEST(PFA_ACCEPT6)
-0004b5 38d9 .dw XT_DROP
-0004b6 3f54 .dw XT_BL
- PFA_ACCEPT6:
-0004b7 38b1
-0004b8 3ef2
-0004b9 38cf
-0004ba 388d
-0004bb 3a2f
-0004bc 38cf
-0004bd 015b .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN
-0004be 382f ACC4: .DW XT_DOBRANCH
-0004bf 0492 DEST(ACC1)
-0004c0 38d9
-0004c1 38f0
-0004c2 38c4
-0004c3 3993
-0004c4 3fa1
-0004c5 3820 ACC5: .DW XT_DROP,XT_NIP,XT_SWAP,XT_MINUS,XT_CR,XT_EXIT
-
-
- ; ( -- )
- ; System
- ; send a backspace character to overwrite the current char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- ;VE_BS:
- ; .dw $ff02
- ; .db "bs"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_BS
- XT_BS:
-0004c6 3801 .dw DO_COLON
- .endif
-0004c7 383d .dw XT_DOLITERAL
-0004c8 0008 .dw 8
-0004c9 38b1 .dw XT_DUP
-0004ca 3ef2 .dw XT_EMIT
-0004cb 3fae .dw XT_SPACE
-0004cc 3ef2 .dw XT_EMIT
-0004cd 3820 .dw XT_EXIT
-
-
- ; ( c -- f )
- ; System
- ; is the character a line end character?
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_CRLFQ:
- ; .dw $ff02
- ; .db "crlf?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_CRLFQ
- XT_CRLFQ:
-0004ce 3801 .dw DO_COLON
- .endif
-0004cf 38b1 .dw XT_DUP
-0004d0 383d .dw XT_DOLITERAL
-0004d1 000d .dw 13
-0004d2 3fdf .dw XT_EQUAL
-0004d3 38c4 .dw XT_SWAP
-0004d4 383d .dw XT_DOLITERAL
-0004d5 000a .dw 10
-0004d6 3fdf .dw XT_EQUAL
-0004d7 3a1c .dw XT_OR
-0004d8 3820 .dw XT_EXIT
- .include "words/refill.asm"
-
- ; System
- ; refills the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILL:
-0004d9 ff06 .dw $ff06
-0004da 6572
-0004db 6966
-0004dc 6c6c .db "refill"
-0004dd 0488 .dw VE_HEAD
- .set VE_HEAD = VE_REFILL
- XT_REFILL:
-0004de 3dff .dw PFA_DODEFER1
- PFA_REFILL:
- .endif
-0004df 001a .dw USER_REFILL
-0004e0 3dc8 .dw XT_UDEFERFETCH
-0004e1 3dd4 .dw XT_UDEFERSTORE
- .include "words/char.asm"
-
- ; Tools
- ; copy the first character of the next word onto the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CHAR:
-0004e2 ff04 .dw $ff04
-0004e3 6863
-0004e4 7261 .db "char"
-0004e5 04d9 .dw VE_HEAD
- .set VE_HEAD = VE_CHAR
- XT_CHAR:
-0004e6 3801 .dw DO_COLON
- PFA_CHAR:
- .endif
-0004e7 05b0 .dw XT_PARSENAME
-0004e8 38d9 .dw XT_DROP
-0004e9 3898 .dw XT_CFETCH
-0004ea 3820 .dw XT_EXIT
- .include "words/number.asm"
-
- ; Numeric IO
- ; convert a string at addr to a number
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBER:
-0004eb ff06 .dw $ff06
-0004ec 756e
-0004ed 626d
-0004ee 7265 .db "number"
-0004ef 04e2 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBER
- XT_NUMBER:
-0004f0 3801 .dw DO_COLON
- PFA_NUMBER:
- .endif
-0004f1 3ebd .dw XT_BASE
-0004f2 3879 .dw XT_FETCH
-0004f3 38ff .dw XT_TO_R
-0004f4 0534 .dw XT_QSIGN
-0004f5 38ff .dw XT_TO_R
-0004f6 0547 .dw XT_SET_BASE
-0004f7 0534 .dw XT_QSIGN
-0004f8 38f6 .dw XT_R_FROM
-0004f9 3a1c .dw XT_OR
-0004fa 38ff .dw XT_TO_R
- ; check whether something is left
-0004fb 38b1 .dw XT_DUP
-0004fc 391a .dw XT_ZEROEQUAL
-0004fd 3836 .dw XT_DOCONDBRANCH
-0004fe 0507 DEST(PFA_NUMBER0)
- ; nothing is left. It cannot be a number at all
-0004ff 3ed2 .dw XT_2DROP
-000500 38f6 .dw XT_R_FROM
-000501 38d9 .dw XT_DROP
-000502 38f6 .dw XT_R_FROM
-000503 3ebd .dw XT_BASE
-000504 3881 .dw XT_STORE
-000505 3954 .dw XT_ZERO
-000506 3820 .dw XT_EXIT
- PFA_NUMBER0:
-000507 3b1e .dw XT_2TO_R
-000508 3954 .dw XT_ZERO ; starting value
-000509 3954 .dw XT_ZERO
-00050a 3b2d .dw XT_2R_FROM
-00050b 0565 .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len'
- ; check length of the remaining string.
- ; if zero: a single cell number is entered
-00050c 38b9 .dw XT_QDUP
-00050d 3836 .dw XT_DOCONDBRANCH
-00050e 0529 DEST(PFA_NUMBER1)
- ; if equal 1: mayba a trailing dot? --> double cell number
-00050f 3fe6 .dw XT_ONE
-000510 3fdf .dw XT_EQUAL
-000511 3836 .dw XT_DOCONDBRANCH
-000512 0520 DEST(PFA_NUMBER2)
- ; excatly one character is left
-000513 3898 .dw XT_CFETCH
-000514 383d .dw XT_DOLITERAL
-000515 002e .dw 46 ; .
-000516 3fdf .dw XT_EQUAL
-000517 3836 .dw XT_DOCONDBRANCH
-000518 0521 DEST(PFA_NUMBER6)
- ; its a double cell number
- ; incorporate sign into number
-000519 38f6 .dw XT_R_FROM
-00051a 3836 .dw XT_DOCONDBRANCH
-00051b 051d DEST(PFA_NUMBER3)
-00051c 0228 .dw XT_DNEGATE
- PFA_NUMBER3:
-00051d 3feb .dw XT_TWO
-00051e 382f .dw XT_DOBRANCH
-00051f 052f DEST(PFA_NUMBER5)
- PFA_NUMBER2:
-000520 38d9 .dw XT_DROP
- PFA_NUMBER6:
-000521 3ed2 .dw XT_2DROP
-000522 38f6 .dw XT_R_FROM
-000523 38d9 .dw XT_DROP
-000524 38f6 .dw XT_R_FROM
-000525 3ebd .dw XT_BASE
-000526 3881 .dw XT_STORE
-000527 3954 .dw XT_ZERO
-000528 3820 .dw XT_EXIT
- PFA_NUMBER1:
-000529 3ed2 .dw XT_2DROP ; remove the address
- ; incorporate sign into number
-00052a 38f6 .dw XT_R_FROM
-00052b 3836 .dw XT_DOCONDBRANCH
-00052c 052e DEST(PFA_NUMBER4)
-00052d 3e27 .dw XT_NEGATE
- PFA_NUMBER4:
-00052e 3fe6 .dw XT_ONE
- PFA_NUMBER5:
-00052f 38f6 .dw XT_R_FROM
-000530 3ebd .dw XT_BASE
-000531 3881 .dw XT_STORE
-000532 394b .dw XT_TRUE
-000533 3820 .dw XT_EXIT
- .include "words/q-sign.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QSIGN:
-000534 3801 .dw DO_COLON
- PFA_QSIGN: ; ( c -- )
- .endif
-000535 38cf .dw XT_OVER ; ( -- addr len addr )
-000536 3898 .dw XT_CFETCH
-000537 383d .dw XT_DOLITERAL
-000538 002d .dw '-'
-000539 3fdf .dw XT_EQUAL ; ( -- addr len flag )
-00053a 38b1 .dw XT_DUP
-00053b 38ff .dw XT_TO_R
-00053c 3836 .dw XT_DOCONDBRANCH
-00053d 0540 DEST(PFA_NUMBERSIGN_DONE)
-00053e 3fe6 .dw XT_ONE ; skip sign character
-00053f 05a1 .dw XT_SLASHSTRING
- PFA_NUMBERSIGN_DONE:
-000540 38f6 .dw XT_R_FROM
-000541 3820 .dw XT_EXIT
- .include "words/set-base.asm"
-
- ; Numeric IO
- ; skip a numeric prefix character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_BASES:
-000542 3852 .dw PFA_DOCONSTANT
- .endif
-000543 000a
-000544 0010
-000545 0002
-000546 000a .dw 10,16,2,10 ; last one could a 8 instead.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SET_BASE:
-000547 3801 .dw DO_COLON
- PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 )
- .endif
-000548 38cf .dw XT_OVER
-000549 3898 .dw XT_CFETCH
-00054a 383d .dw XT_DOLITERAL
-00054b 0023 .dw 35
-00054c 3993 .dw XT_MINUS
-00054d 38b1 .dw XT_DUP
-00054e 3954 .dw XT_ZERO
-00054f 383d .dw XT_DOLITERAL
-000550 0004 .dw 4
-000551 3e57 .dw XT_WITHIN
-000552 3836 .dw XT_DOCONDBRANCH
-000553 055d DEST(SET_BASE1)
- .if cpu_msp430==1
- .endif
-000554 0542 .dw XT_BASES
-000555 399d .dw XT_PLUS
-000556 3bcb .dw XT_FETCHI
-000557 3ebd .dw XT_BASE
-000558 3881 .dw XT_STORE
-000559 3fe6 .dw XT_ONE
-00055a 05a1 .dw XT_SLASHSTRING
-00055b 382f .dw XT_DOBRANCH
-00055c 055e DEST(SET_BASE2)
- SET_BASE1:
-00055d 38d9 .dw XT_DROP
- SET_BASE2:
-00055e 3820 .dw XT_EXIT
-
- ; create bases 10 , 16 , 2 , 8 ,
- ; : set-base 35 - dup 0 4 within if
- ; bases + @i base ! 1 /string
- ; else
- ; drop
- ; then ;
- .include "words/to-number.asm"
-
- ; Numeric IO
- ; convert a string to a number c-addr2/u2 is the unconverted string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_NUMBER:
-00055f ff07 .dw $ff07
-000560 6e3e
-000561 6d75
-000562 6562
-000563 0072 .db ">number",0
-000564 04eb .dw VE_HEAD
- .set VE_HEAD = VE_TO_NUMBER
- XT_TO_NUMBER:
-000565 3801 .dw DO_COLON
-
- .endif
-
-000566 38b1
-000567 3836 TONUM1: .DW XT_DUP,XT_DOCONDBRANCH
-000568 057d DEST(TONUM3)
-000569 38cf
-00056a 3898
-00056b 03ab .DW XT_OVER,XT_CFETCH,XT_DIGITQ
-00056c 391a
-00056d 3836 .DW XT_ZEROEQUAL,XT_DOCONDBRANCH
-00056e 0571 DEST(TONUM2)
-00056f 38d9
-000570 3820 .DW XT_DROP,XT_EXIT
-000571 38ff
-000572 024c
-000573 3ebd
-000574 3879
-000575 0140 TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR
-000576 38f6
-000577 0138
-000578 024c .DW XT_R_FROM,XT_MPLUS,XT_2SWAP
-000579 3fe6
-00057a 05a1
-00057b 382f .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH
-00057c 0566 DEST(TONUM1)
-00057d 3820 TONUM3: .DW XT_EXIT
-
- ;C >NUMBER ud adr u -- ud' adr' u'
- ;C convert string to number
- ; BEGIN
- ; DUP WHILE
- ; OVER C@ DIGIT?
- ; 0= IF DROP EXIT THEN
- ; >R 2SWAP BASE @ UD*
- ; R> M+ 2SWAP
- ; 1 /STRING
- ; REPEAT ;
- .include "words/parse.asm"
-
- ; String
- ; in input buffer parse ccc delimited string by the delimiter char.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PARSE:
-00057e ff05 .dw $ff05
-00057f 6170
-000580 7372
-000581 0065 .db "parse",0
-000582 055f .dw VE_HEAD
- .set VE_HEAD = VE_PARSE
- XT_PARSE:
-000583 3801 .dw DO_COLON
- PFA_PARSE:
- .endif
-000584 38ff .dw XT_TO_R ; ( -- )
-000585 0597 .dw XT_SOURCE ; ( -- addr len)
-000586 3ee2 .dw XT_TO_IN ; ( -- addr len >in)
-000587 3879 .dw XT_FETCH
-000588 05a1 .dw XT_SLASHSTRING ; ( -- addr' len' )
-
-000589 38f6 .dw XT_R_FROM ; ( -- addr' len' c)
-00058a 046d .dw XT_CSCAN ; ( -- addr' len'')
-00058b 38b1 .dw XT_DUP ; ( -- addr' len'' len'')
-00058c 3a2f .dw XT_1PLUS
-00058d 3ee2 .dw XT_TO_IN ; ( -- addr' len'' len'' >in)
-00058e 3a65 .dw XT_PLUSSTORE ; ( -- addr' len')
-00058f 3fe6 .dw XT_ONE
-000590 05a1 .dw XT_SLASHSTRING
-000591 3820 .dw XT_EXIT
- .include "words/source.asm"
-
- ; System
- ; address and current length of the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCE:
-000592 ff06 .dw $FF06
-000593 6f73
-000594 7275
-000595 6563 .db "source"
-000596 057e .dw VE_HEAD
- .set VE_HEAD = VE_SOURCE
- XT_SOURCE:
-000597 3dff .dw PFA_DODEFER1
- PFA_SOURCE:
- .endif
-000598 0016 .dw USER_SOURCE
-000599 3dc8 .dw XT_UDEFERFETCH
-00059a 3dd4 .dw XT_UDEFERSTORE
-
-
- .include "words/slash-string.asm"
-
- ; String
- ; adjust string from addr1 to addr1+n, reduce length from u1 to u2 by n
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLASHSTRING:
-00059b ff07 .dw $ff07
-00059c 732f
-00059d 7274
-00059e 6e69
-00059f 0067 .db "/string",0
-0005a0 0592 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHSTRING
- XT_SLASHSTRING:
-0005a1 3801 .dw DO_COLON
- PFA_SLASHSTRING:
- .endif
-0005a2 38e1 .dw XT_ROT
-0005a3 38cf .dw XT_OVER
-0005a4 399d .dw XT_PLUS
-0005a5 38e1 .dw XT_ROT
-0005a6 38e1 .dw XT_ROT
-0005a7 3993 .dw XT_MINUS
-0005a8 3820 .dw XT_EXIT
-
- .include "words/parse-name.asm"
-
- ; String
- ; In the SOURCE buffer parse whitespace delimited string. Returns string address within SOURCE.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_PARSENAME:
-0005a9 ff0a .dw $FF0A
-0005aa 6170
-0005ab 7372
-0005ac 2d65
-0005ad 616e
-0005ae 656d .db "parse-name"
-0005af 059b .dw VE_HEAD
- .set VE_HEAD = VE_PARSENAME
- XT_PARSENAME:
-0005b0 3801 .dw DO_COLON
- PFA_PARSENAME:
- .endif
-0005b1 3f54 .dw XT_BL
-0005b2 05b4 .dw XT_SKIPSCANCHAR
-0005b3 3820 .dw XT_EXIT
-
- ; ( c -- addr2 len2 )
- ; String
- ; skips char and scan what's left in source for char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_SKIPSCANCHAR:
- ; .dw $FF0A
- ; .db "skipscanchar"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_SKIPSCANCHAR
- XT_SKIPSCANCHAR:
-0005b4 3801 .dw DO_COLON
- PFA_SKIPSCANCHAR:
- .endif
-0005b5 38ff .dw XT_TO_R
-0005b6 0597 .dw XT_SOURCE
-0005b7 3ee2 .dw XT_TO_IN
-0005b8 3879 .dw XT_FETCH
-0005b9 05a1 .dw XT_SLASHSTRING
-
-0005ba 3908 .dw XT_R_FETCH
-0005bb 0456 .dw XT_CSKIP
-0005bc 38f6 .dw XT_R_FROM
-0005bd 046d .dw XT_CSCAN
-
- ; adjust >IN
-0005be 3ec9 .dw XT_2DUP
-0005bf 399d .dw XT_PLUS
-0005c0 0597 .dw XT_SOURCE
-0005c1 38d9 .dw XT_DROP
-0005c2 3993 .dw XT_MINUS
-0005c3 3ee2 .dw XT_TO_IN
-0005c4 3881 .dw XT_STORE
-0005c5 3820 .dw XT_EXIT
- .include "words/sp0.asm"
-
- ; Stack
- ; start address of the data stack
- VE_SP0:
-0005c6 ff03 .dw $ff03
-0005c7 7073
-0005c8 0030 .db "sp0",0
-0005c9 05a9 .dw VE_HEAD
- .set VE_HEAD = VE_SP0
- XT_SP0:
-0005ca 386f .dw PFA_DOVALUE1
- PFA_SP0:
-0005cb 0006 .dw USER_SP0
-0005cc 3dc8 .dw XT_UDEFERFETCH
-0005cd 3dd4 .dw XT_UDEFERSTORE
-
- ; ( -- addr)
- ; Stack
- ; address of user variable to store top-of-stack for inactive tasks
- VE_SP:
-0005ce ff02 .dw $ff02
-0005cf 7073 .db "sp"
-0005d0 05c6 .dw VE_HEAD
- .set VE_HEAD = VE_SP
- XT_SP:
-0005d1 3858 .dw PFA_DOUSER
- PFA_SP:
-0005d2 0008 .dw USER_SP
- .include "words/rp0.asm"
-
- ; Stack
- ; start address of return stack
- VE_RP0:
-0005d3 ff03 .dw $ff03
-0005d4 7072
-0005d5 0030 .db "rp0",0
-0005d6 05ce .dw VE_HEAD
- .set VE_HEAD = VE_RP0
- XT_RP0:
-0005d7 3801 .dw DO_COLON
- PFA_RP0:
-0005d8 05db .dw XT_DORP0
-0005d9 3879 .dw XT_FETCH
-0005da 3820 .dw XT_EXIT
-
- ; ( -- addr)
- ; Stack
- ; user variable of the address of the initial return stack
- ;VE_DORP0:
- ; .dw $ff05
- ; .db "(rp0)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DORP0
- XT_DORP0:
-0005db 3858 .dw PFA_DOUSER
- PFA_DORP0:
-0005dc 0004 .dw USER_RP
- .include "words/depth.asm"
-
- ; Stack
- ; number of single-cell values contained in the data stack before n was placed on the stack.
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEPTH:
-0005dd ff05 .dw $ff05
-0005de 6564
-0005df 7470
-0005e0 0068 .db "depth",0
-0005e1 05d3 .dw VE_HEAD
- .set VE_HEAD = VE_DEPTH
- XT_DEPTH:
-0005e2 3801 .dw DO_COLON
- PFA_DEPTH:
- .endif
-0005e3 05ca .dw XT_SP0
-0005e4 3a8d .dw XT_SP_FETCH
-0005e5 3993 .dw XT_MINUS
-0005e6 3a04 .dw XT_2SLASH
-0005e7 3a35 .dw XT_1MINUS
-0005e8 3820 .dw XT_EXIT
- .include "words/forth-recognizer.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_FORTHRECOGNIZER:
-0005e9 ff10 .dw $ff10
-0005ea 6f66
-0005eb 7472
-0005ec 2d68
-0005ed 6572
-0005ee 6f63
-0005ef 6e67
-0005f0 7a69
-0005f1 7265 .db "forth-recognizer"
-0005f2 05dd .dw VE_HEAD
- .set VE_HEAD = VE_FORTHRECOGNIZER
- XT_FORTHRECOGNIZER:
-0005f3 386f .dw PFA_DOVALUE1
- PFA_FORTHRECOGNIZER:
-0005f4 0034 .dw CFG_FORTHRECOGNIZER
-0005f5 3da0 .dw XT_EDEFERFETCH
-0005f6 3daa .dw XT_EDEFERSTORE
- .include "words/recognize.asm"
-
- ; System
- ; walk the recognizer stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECOGNIZE:
-0005f7 ff09 .dw $ff09
-0005f8 6572
-0005f9 6f63
-0005fa 6e67
-0005fb 7a69
-0005fc 0065 .db "recognize",0
-0005fd 05e9 .dw VE_HEAD
- .set VE_HEAD = VE_RECOGNIZE
- XT_RECOGNIZE:
-0005fe 3801 .dw DO_COLON
- PFA_RECOGNIZE:
- .endif
-0005ff 383d .dw XT_DOLITERAL
-000600 0609 .dw XT_RECOGNIZE_A
-000601 38c4 .dw XT_SWAP
-000602 099c .dw XT_MAPSTACK
-000603 391a .dw XT_ZEROEQUAL
-000604 3836 .dw XT_DOCONDBRANCH
-000605 0608 DEST(PFA_RECOGNIZE1)
-000606 3ed2 .dw XT_2DROP
-000607 068b .dw XT_DT_NULL
- PFA_RECOGNIZE1:
-000608 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] )
- XT_RECOGNIZE_A:
-000609 3801 .dw DO_COLON
- PFA_RECOGNIZE_A:
- .endif
-00060a 38e1 .dw XT_ROT ; -- len xt addr
-00060b 38e1 .dw XT_ROT ; -- xt addr len
-00060c 3ec9 .dw XT_2DUP
-00060d 3b1e .dw XT_2TO_R
-00060e 38e1 .dw XT_ROT ; -- addr len xt
-00060f 382a .dw XT_EXECUTE ; -- i*x dt:* | dt:null
-000610 3b2d .dw XT_2R_FROM
-000611 38e1 .dw XT_ROT
-000612 38b1 .dw XT_DUP
-000613 068b .dw XT_DT_NULL
-000614 3fdf .dw XT_EQUAL
-000615 3836 .dw XT_DOCONDBRANCH
-000616 061a DEST(PFA_RECOGNIZE_A1)
-000617 38d9 .dw XT_DROP
-000618 3954 .dw XT_ZERO
-000619 3820 .dw XT_EXIT
- PFA_RECOGNIZE_A1:
-00061a 38f0 .dw XT_NIP
-00061b 38f0 .dw XT_NIP
-00061c 394b .dw XT_TRUE
-00061d 3820 .dw XT_EXIT
-
- ; : recognize ( addr len stack-id -- i*x dt:* | dt:null )
- ; [: ( addr len -- addr len 0 | i*x dt:* -1 )
- ; rot rot 2dup 2>r rot execute 2r> rot
- ; dup dt:null = ( -- addr len dt:* f )
- ; if drop 0 else nip nip -1 then
- ; ;]
- ; map-stack ( -- i*x addr len dt:* f )
- ; 0= if \ a recognizer did the job, remove addr/len
- ; 2drop dt:null
- ; then ;
- ;
- .include "words/interpret.asm"
-
- ; System
- ; Interpret SOURCE word by word.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_INTERPRET:
-00061e ff09 .dw $ff09
-00061f 6e69
-000620 6574
-000621 7072
-000622 6572
-000623 0074 .db "interpret",0
-000624 05f7 .dw VE_HEAD
- .set VE_HEAD = VE_INTERPRET
- XT_INTERPRET:
-000625 3801 .dw DO_COLON
- .endif
- PFA_INTERPRET:
-000626 05b0 .dw XT_PARSENAME ; ( -- addr len )
-000627 38b1 .dw XT_DUP ; ( -- addr len flag)
-000628 3836 .dw XT_DOCONDBRANCH
-000629 0636 DEST(PFA_INTERPRET2)
-00062a 05f3 .dw XT_FORTHRECOGNIZER
-00062b 05fe .dw XT_RECOGNIZE
-00062c 3eb7 .dw XT_STATE
-00062d 3879 .dw XT_FETCH
-00062e 3836 .dw XT_DOCONDBRANCH
-00062f 0631 DEST(PFA_INTERPRET1)
-000630 01c6 .dw XT_ICELLPLUS ; we need the compile action
- PFA_INTERPRET1:
-000631 3bcb .dw XT_FETCHI
-000632 382a .dw XT_EXECUTE
-000633 3f8b .dw XT_QSTACK
-000634 382f .dw XT_DOBRANCH
-000635 0626 DEST(PFA_INTERPRET)
- PFA_INTERPRET2:
-000636 3ed2 .dw XT_2DROP
-000637 3820 .dw XT_EXIT
- .include "words/rec-intnum.asm"
-
- ; Interpreter
- ; Method table for single cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NUM:
-000638 ff06 .dw $ff06
-000639 7464
-00063a 6e3a
-00063b 6d75 .db "dt:num"
-00063c 061e .dw VE_HEAD
- .set VE_HEAD = VE_DT_NUM
- XT_DT_NUM:
-00063d 3852 .dw PFA_DOCONSTANT
- PFA_DT_NUM:
- .endif
-00063e 019a .dw XT_NOOP ; interpret
-00063f 0772 .dw XT_LITERAL ; compile
-000640 0772 .dw XT_LITERAL ; postpone
-
- ; ( -- addr )
- ; Interpreter
- ; Method table for double cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_DNUM:
-000641 ff07 .dw $ff07
-000642 7464
-000643 643a
-000644 756e
-000645 006d .db "dt:dnum",0
-000646 0638 .dw VE_HEAD
- .set VE_HEAD = VE_DT_DNUM
- XT_DT_DNUM:
-000647 3852 .dw PFA_DOCONSTANT
- PFA_DT_DNUM:
- .endif
-000648 019a .dw XT_NOOP ; interpret
-000649 3fd7 .dw XT_2LITERAL ; compile
-00064a 3fd7 .dw XT_2LITERAL ; postpone
-
- ; ( addr len -- f )
- ; Interpreter
- ; recognizer for integer numbers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_REC_NUM:
-00064b ff07 .dw $ff07
-00064c 6572
-00064d 3a63
-00064e 756e
-00064f 006d .db "rec:num",0
-000650 0641 .dw VE_HEAD
- .set VE_HEAD = VE_REC_NUM
- XT_REC_NUM:
-000651 3801 .dw DO_COLON
- PFA_REC_NUM:
- .endif
- ; try converting to a number
-000652 04f0 .dw XT_NUMBER
-000653 3836 .dw XT_DOCONDBRANCH
-000654 065d DEST(PFA_REC_NONUMBER)
-000655 3fe6 .dw XT_ONE
-000656 3fdf .dw XT_EQUAL
-000657 3836 .dw XT_DOCONDBRANCH
-000658 065b DEST(PFA_REC_INTNUM2)
-000659 063d .dw XT_DT_NUM
-00065a 3820 .dw XT_EXIT
- PFA_REC_INTNUM2:
-00065b 0647 .dw XT_DT_DNUM
-00065c 3820 .dw XT_EXIT
- PFA_REC_NONUMBER:
-00065d 068b .dw XT_DT_NULL
-00065e 3820 .dw XT_EXIT
- .include "words/rec-find.asm"
-
- ; Interpreter
- ; search for a word
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- VE_REC_FIND:
-00065f ff08 .dw $ff08
-000660 6572
-000661 3a63
-000662 6966
-000663 646e .db "rec:find"
-000664 064b .dw VE_HEAD
- .set VE_HEAD = VE_REC_FIND
- XT_REC_FIND:
-000665 3801 .dw DO_COLON
- PFA_REC_FIND:
- .endif
-000666 0700 .DW XT_FINDXT
-000667 38b1 .dw XT_DUP
-000668 391a .dw XT_ZEROEQUAL
-000669 3836 .dw XT_DOCONDBRANCH
-00066a 066e DEST(PFA_REC_WORD_FOUND)
-00066b 38d9 .dw XT_DROP
-00066c 068b .dw XT_DT_NULL
-00066d 3820 .dw XT_EXIT
- PFA_REC_WORD_FOUND:
-00066e 0675 .dw XT_DT_XT
-
-00066f 3820 .dw XT_EXIT
-
- ; ( -- addr )
- ; Interpreter
- ; actions to handle execution tokens and their flags
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_XT:
-000670 ff05 .dw $ff05
-000671 7464
-000672 783a
-000673 0074 .db "dt:xt",0
-000674 065f .dw VE_HEAD
- .set VE_HEAD = VE_DT_XT
- XT_DT_XT:
-000675 3852 .dw PFA_DOCONSTANT
- PFA_DT_XT:
- .endif
-000676 0679 .dw XT_R_WORD_INTERPRET
-000677 067d .dw XT_R_WORD_COMPILE
-000678 3fd7 .dw XT_2LITERAL
-
- ; ( XT flags -- )
- ; Interpreter
- ; interpret method for WORD recognizer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_R_WORD_INTERPRET:
-000679 3801 .dw DO_COLON
- PFA_R_WORD_INTERPRET:
- .endif
-00067a 38d9 .dw XT_DROP ; the flags are in the way
-00067b 382a .dw XT_EXECUTE
-00067c 3820 .dw XT_EXIT
-
- ; ( XT flags -- )
- ; Interpreter
- ; Compile method for WORD recognizer
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- XT_R_WORD_COMPILE:
-00067d 3801 .dw DO_COLON
- PFA_R_WORD_COMPILE:
- .endif
-00067e 3921 .dw XT_ZEROLESS
-00067f 3836 .dw XT_DOCONDBRANCH
-000680 0683 DEST(PFA_R_WORD_COMPILE1)
-000681 075c .dw XT_COMMA
-000682 3820 .dw XT_EXIT
- PFA_R_WORD_COMPILE1:
-000683 382a .dw XT_EXECUTE
-000684 3820 .dw XT_EXIT
- .include "words/dt-null.asm"
-
- ; Interpreter
- ; there is no parser for this recognizer, this is the default and failsafe part
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NULL:
-000685 ff07 .dw $ff07
-000686 7464
-000687 6e3a
-000688 6c75
-../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte
-000689 006c .db "dt:null"
-00068a 0670 .dw VE_HEAD
- .set VE_HEAD = VE_DT_NULL
- XT_DT_NULL:
-00068b 3852 .dw PFA_DOCONSTANT
- PFA_DT_NULL:
- .endif
-00068c 068f .dw XT_FAIL ; interpret
-00068d 068f .dw XT_FAIL ; compile
-00068e 068f .dw XT_FAIL ; postpone
-
- ; ( addr len -- )
- ; Interpreter
- ; default failure action: throw exception -13.
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- ;VE_FAIL:
- ; .dw $ff04
- ; .db "fail"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_FAIL
- XT_FAIL:
-00068f 3801 .dw DO_COLON
- PFA_FAIL:
- .endif
-000690 383d .dw XT_DOLITERAL
-000691 fff3 .dw -13
-000692 3d86 .dw XT_THROW
- .include "words/search-wordlist.asm"
-
- ; Search Order
- ; searches the word list wid for the word at c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SEARCH_WORDLIST:
-000693 ff0f .dw $ff0f
-000694 6573
-000695 7261
-000696 6863
-000697 772d
-000698 726f
-000699 6c64
-00069a 7369
-00069b 0074 .db "search-wordlist",0
-00069c 0685 .dw VE_HEAD
- .set VE_HEAD = VE_SEARCH_WORDLIST
- XT_SEARCH_WORDLIST:
-00069d 3801 .dw DO_COLON
- PFA_SEARCH_WORDLIST:
- .endif
-00069e 38ff .dw XT_TO_R
-00069f 3954 .dw XT_ZERO
-0006a0 383d .dw XT_DOLITERAL
-0006a1 06b2 .dw XT_ISWORD
-0006a2 38f6 .dw XT_R_FROM
-0006a3 06cf .dw XT_TRAVERSEWORDLIST
-0006a4 38b1 .dw XT_DUP
-0006a5 391a .dw XT_ZEROEQUAL
-0006a6 3836 .dw XT_DOCONDBRANCH
-0006a7 06ac DEST(PFA_SEARCH_WORDLIST1)
-0006a8 3ed2 .dw XT_2DROP
-0006a9 38d9 .dw XT_DROP
-0006aa 3954 .dw XT_ZERO
-0006ab 3820 .dw XT_EXIT
- PFA_SEARCH_WORDLIST1:
- ; ... get the XT ...
-0006ac 38b1 .dw XT_DUP
-0006ad 06f6 .dw XT_NFA2CFA
- ; .. and get the header flag
-0006ae 38c4 .dw XT_SWAP
-0006af 0175 .dw XT_NAME2FLAGS
-0006b0 0163 .dw XT_IMMEDIATEQ
-0006b1 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_ISWORD:
-0006b2 3801 .dw DO_COLON
- PFA_ISWORD:
- .endif
- ; ( c-addr len 0 nt -- c-addr len 0 true| nt false )
-0006b3 38ff .dw XT_TO_R
-0006b4 38d9 .dw XT_DROP
-0006b5 3ec9 .dw XT_2DUP
-0006b6 3908 .dw XT_R_FETCH ; -- addr len addr len nt
-0006b7 06ea .dw XT_NAME2STRING
-0006b8 01cf .dw XT_ICOMPARE ; (-- addr len f )
-0006b9 3836 .dw XT_DOCONDBRANCH
-0006ba 06c0 DEST(PFA_ISWORD3)
- ; not now
-0006bb 38f6 .dw XT_R_FROM
-0006bc 38d9 .dw XT_DROP
-0006bd 3954 .dw XT_ZERO
-0006be 394b .dw XT_TRUE ; maybe next word
-0006bf 3820 .dw XT_EXIT
- PFA_ISWORD3:
- ; we found the word, now clean up iteration data ...
-0006c0 3ed2 .dw XT_2DROP
-0006c1 38f6 .dw XT_R_FROM
-0006c2 3954 .dw XT_ZERO ; finish traverse-wordlist
-0006c3 3820 .dw XT_EXIT
- .include "words/traverse-wordlist.asm"
-
- ; Tools Ext (2012)
- ; call the xt for every member of the wordlist wid until xt returns false
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TRAVERSEWORDLIST:
-0006c4 ff11 .dw $ff11
-0006c5 7274
-0006c6 7661
-0006c7 7265
-0006c8 6573
-0006c9 772d
-0006ca 726f
-0006cb 6c64
-0006cc 7369
-0006cd 0074 .db "traverse-wordlist",0
-0006ce 0693 .dw VE_HEAD
- .set VE_HEAD = VE_TRAVERSEWORDLIST
- XT_TRAVERSEWORDLIST:
-0006cf 3801 .dw DO_COLON
- PFA_TRAVERSEWORDLIST:
-
- .endif
-0006d0 3b5f .dw XT_FETCHE
- PFA_TRAVERSEWORDLIST1:
-0006d1 38b1 .dw XT_DUP ; ( -- xt nt nt )
-0006d2 3836 .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string
-0006d3 06e0 DEST(PFA_TRAVERSEWORDLIST2)
-0006d4 3ec9 .dw XT_2DUP
-0006d5 3b1e .dw XT_2TO_R
-0006d6 38c4 .dw XT_SWAP
-0006d7 382a .dw XT_EXECUTE
-0006d8 3b2d .dw XT_2R_FROM
-0006d9 38e1 .dw XT_ROT
-0006da 3836 .dw XT_DOCONDBRANCH
-0006db 06e0 DEST(PFA_TRAVERSEWORDLIST2)
-0006dc 0a0b .dw XT_NFA2LFA
-0006dd 3bcb .dw XT_FETCHI
-0006de 382f .dw XT_DOBRANCH ; ( -- addr )
-0006df 06d1 DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr )
- PFA_TRAVERSEWORDLIST2:
-0006e0 3ed2 .dw XT_2DROP
-0006e1 3820 .dw XT_EXIT
-
- ; : traverse-wordlist ( i*x xt wid -- i*x' )
- ; begin @ dup
- ; while
- ; 2dup 2>r
- ; swap execute ( i*x nt -- i*x' f )
- ; 2r> rot
- ; while
- ; nfa>lfa @i
- ; repeat then 2drop ;
- .include "words/name2string.asm"
-
- ; Tools Ext (2012)
- ; get a (flash) string from a name token nt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NAME2STRING:
-0006e2 ff0b .dw $ff0b
-0006e3 616e
-0006e4 656d
-0006e5 733e
-0006e6 7274
-0006e7 6e69
-0006e8 0067 .db "name>string",0
-0006e9 06c4 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2STRING
- XT_NAME2STRING:
-0006ea 3801 .dw DO_COLON
- PFA_NAME2STRING:
-
- .endif
-0006eb 0424 .dw XT_ICOUNT ; ( -- addr n )
-0006ec 383d .dw XT_DOLITERAL
-0006ed 00ff .dw 255
-0006ee 3a13 .dw XT_AND ; mask immediate bit
-0006ef 3820 .dw XT_EXIT
- .include "words/nfa2cfa.asm"
-
- ; Tools
- ; get the XT from a name token
- VE_NFA2CFA:
-0006f0 ff07 .dw $ff07
-0006f1 666e
-0006f2 3e61
-0006f3 6663
-../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte
-0006f4 0061 .db "nfa>cfa"
-0006f5 06e2 .dw VE_HEAD
- .set VE_HEAD = VE_NFA2CFA
- XT_NFA2CFA:
-0006f6 3801 .dw DO_COLON
- PFA_NFA2CFA:
-0006f7 0a0b .dw XT_NFA2LFA ; skip to link field
-0006f8 3a2f .dw XT_1PLUS ; next is the execution token
-0006f9 3820 .dw XT_EXIT
- .include "words/find-xt.asm"
-
- ; Tools
- ; search wordlists for an entry with the xt from c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_FINDXT:
-0006fa ff07 .dw $ff07
-0006fb 6966
-0006fc 646e
-0006fd 782d
-0006fe 0074 .db "find-xt",0
-0006ff 06f0 .dw VE_HEAD
- .set VE_HEAD = VE_FINDXT
- XT_FINDXT:
-000700 3801 .dw DO_COLON
- PFA_FINDXT:
- .endif
-000701 383d .dw XT_DOLITERAL
-000702 070c .dw XT_FINDXTA
-000703 383d .dw XT_DOLITERAL
-000704 0040 .dw CFG_ORDERLISTLEN
-000705 099c .dw XT_MAPSTACK
-000706 391a .dw XT_ZEROEQUAL
-000707 3836 .dw XT_DOCONDBRANCH
-000708 070b DEST(PFA_FINDXT1)
-000709 3ed2 .dw XT_2DROP
-00070a 3954 .dw XT_ZERO
- PFA_FINDXT1:
-00070b 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_FINDXTA:
-00070c 3801 .dw DO_COLON
- PFA_FINDXTA:
- .endif
-00070d 38ff .dw XT_TO_R
-00070e 3ec9 .dw XT_2DUP
-00070f 38f6 .dw XT_R_FROM
-000710 069d .dw XT_SEARCH_WORDLIST
-000711 38b1 .dw XT_DUP
-000712 3836 .dw XT_DOCONDBRANCH
-000713 0719 DEST(PFA_FINDXTA1)
-000714 38ff .dw XT_TO_R
-000715 38f0 .dw XT_NIP
-000716 38f0 .dw XT_NIP
-000717 38f6 .dw XT_R_FROM
-000718 394b .dw XT_TRUE
- PFA_FINDXTA1:
-000719 3820 .dw XT_EXIT
-
- .include "dict/compiler1.inc"
-
- .include "words/newest.asm"
-
- ; System Variable
- ; system state
- VE_NEWEST:
-00071a ff06 .dw $ff06
-00071b 656e
-00071c 6577
-00071d 7473 .db "newest"
-00071e 06fa .dw VE_HEAD
- .set VE_HEAD = VE_NEWEST
- XT_NEWEST:
-00071f 3848 .dw PFA_DOVARIABLE
- PFA_NEWEST:
-000720 00e5 .dw ram_newest
-
- .dseg
-0000e5 ram_newest: .byte 4
- .include "words/latest.asm"
-
- ; System Variable
- ; system state
- VE_LATEST:
-000721 ff06 .dw $ff06
-000722 616c
-000723 6574
-000724 7473 .db "latest"
-000725 071a .dw VE_HEAD
- .set VE_HEAD = VE_LATEST
- XT_LATEST:
-000726 3848 .dw PFA_DOVARIABLE
- PFA_LATEST:
-000727 00e9 .dw ram_latest
-
- .dseg
-0000e9 ram_latest: .byte 2
- .include "words/do-create.asm"
-
- ; Compiler
- ; parse the input and create an empty vocabulary entry without XT and data field (PF)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOCREATE:
-000728 ff08 .dw $ff08
-000729 6328
-00072a 6572
-00072b 7461
-00072c 2965 .db "(create)"
-00072d 0721 .dw VE_HEAD
- .set VE_HEAD = VE_DOCREATE
- XT_DOCREATE:
-00072e 3801 .dw DO_COLON
- PFA_DOCREATE:
- .endif
-00072f 05b0
-000730 0885 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid)
-000731 38b1
-000732 071f
-000733 3c90
-000734 3881 .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid
-000735 086a
-000736 071f
-000737 3881 .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt
-000738 3820 .DW XT_EXIT
- .include "words/backslash.asm"
-
- ; Compiler
- ; everything up to the end of the current line is a comment
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BACKSLASH:
-000739 0001 .dw $0001
-00073a 005c .db $5c,0
-00073b 0728 .dw VE_HEAD
- .set VE_HEAD = VE_BACKSLASH
- XT_BACKSLASH:
-00073c 3801 .dw DO_COLON
- PFA_BACKSLASH:
- .endif
-00073d 0597 .dw XT_SOURCE
-00073e 38f0 .dw XT_NIP
-00073f 3ee2 .dw XT_TO_IN
-000740 3881 .dw XT_STORE
-000741 3820 .dw XT_EXIT
- .include "words/l-paren.asm"
-
- ; Compiler
- ; skip everything up to the closing bracket on the same line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LPAREN:
-000742 0001 .dw $0001
-000743 0028 .db "(" ,0
-000744 0739 .dw VE_HEAD
- .set VE_HEAD = VE_LPAREN
- XT_LPAREN:
-000745 3801 .dw DO_COLON
- PFA_LPAREN:
- .endif
-000746 383d .dw XT_DOLITERAL
-000747 0029 .dw ')'
-000748 0583 .dw XT_PARSE
-000749 3ed2 .dw XT_2DROP
-00074a 3820 .dw XT_EXIT
-
- .include "words/compile.asm"
-
- ; Dictionary
- ; read the following cell from the dictionary and append it to the current dictionary position.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COMPILE:
-00074b ff07 .dw $ff07
-00074c 6f63
-00074d 706d
-00074e 6c69
-00074f 0065 .db "compile",0
-000750 0742 .dw VE_HEAD
- .set VE_HEAD = VE_COMPILE
- XT_COMPILE:
-000751 3801 .dw DO_COLON
- PFA_COMPILE:
- .endif
-000752 38f6 .dw XT_R_FROM
-000753 38b1 .dw XT_DUP
-000754 01c6 .dw XT_ICELLPLUS
-000755 38ff .dw XT_TO_R
-000756 3bcb .dw XT_FETCHI
-000757 075c .dw XT_COMMA
-000758 3820 .dw XT_EXIT
- .include "words/comma.asm"
-
- ; Dictionary
- ; compile 16 bit into flash at DP
- VE_COMMA:
-000759 ff01 .dw $ff01
-00075a 002c .db ',',0 ; ,
-00075b 074b .dw VE_HEAD
- .set VE_HEAD = VE_COMMA
- XT_COMMA:
-00075c 3801 .dw DO_COLON
- PFA_COMMA:
-00075d 3f12 .dw XT_DP
-00075e 3b73 .dw XT_STOREI
-00075f 3f12 .dw XT_DP
-000760 3a2f .dw XT_1PLUS
-000761 01b4 .dw XT_DOTO
-000762 3f13 .dw PFA_DP
-000763 3820 .dw XT_EXIT
- .include "words/brackettick.asm"
-
- ; Compiler
- ; what ' does in the interpreter mode, do in colon definitions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETTICK:
-000764 0003 .dw $0003
-000765 275b
-000766 005d .db "[']",0
-000767 0759 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETTICK
- XT_BRACKETTICK:
-000768 3801 .dw DO_COLON
- PFA_BRACKETTICK:
- .endif
-000769 043d .dw XT_TICK
-00076a 0772 .dw XT_LITERAL
-00076b 3820 .dw XT_EXIT
-
-
- .include "words/literal.asm"
-
- ; Compiler
- ; compile a literal in colon defintions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LITERAL:
-00076c 0007 .dw $0007
-00076d 696c
-00076e 6574
-00076f 6172
-000770 006c .db "literal",0
-000771 0764 .dw VE_HEAD
- .set VE_HEAD = VE_LITERAL
- XT_LITERAL:
-000772 3801 .dw DO_COLON
- PFA_LITERAL:
- .endif
-000773 0751 .DW XT_COMPILE
-000774 383d .DW XT_DOLITERAL
-000775 075c .DW XT_COMMA
-000776 3820 .DW XT_EXIT
- .include "words/sliteral.asm"
-
- ; String
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLITERAL:
-000777 0008 .dw $0008
-000778 6c73
-000779 7469
-00077a 7265
-00077b 6c61 .db "sliteral"
-00077c 076c .dw VE_HEAD
- .set VE_HEAD = VE_SLITERAL
- XT_SLITERAL:
-00077d 3801 .dw DO_COLON
- PFA_SLITERAL:
- .endif
-00077e 0751 .dw XT_COMPILE
-00077f 03c5 .dw XT_DOSLITERAL ; ( -- addr n)
-000780 03d3 .dw XT_SCOMMA
-000781 3820 .dw XT_EXIT
- .include "words/g-mark.asm"
-
- ; Compiler
- ; places current dictionary position for backward resolves
- ;VE_GMARK:
- ; .dw $ff05
- ; .db ">mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GMARK
- XT_GMARK:
-000782 3801 .dw DO_COLON
- PFA_GMARK:
-000783 3f12 .dw XT_DP
-000784 0751 .dw XT_COMPILE
-000785 ffff .dw -1 ; ffff does not erase flash
-000786 3820 .dw XT_EXIT
- .include "words/g-resolve.asm"
-
- ; Compiler
- ; resolve backward jumps
- ;VE_GRESOLVE:
- ; .dw $ff08
- ; .db ">resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GRESOLVE
- XT_GRESOLVE:
-000787 3801 .dw DO_COLON
- PFA_GRESOLVE:
-000788 3f8b .dw XT_QSTACK
-000789 3f12 .dw XT_DP
-00078a 38c4 .dw XT_SWAP
-00078b 3b73 .dw XT_STOREI
-00078c 3820 .dw XT_EXIT
- .include "words/l_mark.asm"
-
- ; Compiler
- ; place destination for backward branch
- ;VE_LMARK:
- ; .dw $ff05
- ; .db "<mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LMARK
- XT_LMARK:
-00078d 3801 .dw DO_COLON
- PFA_LMARK:
-00078e 3f12 .dw XT_DP
-00078f 3820 .dw XT_EXIT
- .include "words/l_resolve.asm"
-
- ; Compiler
- ; resolve backward branch
- ;VE_LRESOLVE:
- ; .dw $ff08
- ; .db "<resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LRESOLVE
- XT_LRESOLVE:
-000790 3801 .dw DO_COLON
- PFA_LRESOLVE:
-000791 3f8b .dw XT_QSTACK
-000792 075c .dw XT_COMMA
-000793 3820 .dw XT_EXIT
-
- .include "words/ahead.asm"
-
- ; Compiler
- ; do a unconditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AHEAD:
-000794 0005 .dw $0005
-000795 6861
-000796 6165
-000797 0064 .db "ahead",0
-000798 0777 .dw VE_HEAD
- .set VE_HEAD = VE_AHEAD
- XT_AHEAD:
-000799 3801 .dw DO_COLON
- PFA_AHEAD:
- .endif
-00079a 0751 .dw XT_COMPILE
-00079b 382f .dw XT_DOBRANCH
-00079c 0782 .dw XT_GMARK
-00079d 3820 .dw XT_EXIT
- .include "words/if.asm"
-
- ; Compiler
- ; start conditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_IF:
-00079e 0002 .dw $0002
-00079f 6669 .db "if"
-0007a0 0794 .dw VE_HEAD
- .set VE_HEAD = VE_IF
- XT_IF:
-0007a1 3801 .dw DO_COLON
- PFA_IF:
- .endif
-0007a2 0751 .dw XT_COMPILE
-0007a3 3836 .dw XT_DOCONDBRANCH
-0007a4 0782 .dw XT_GMARK
-0007a5 3820 .dw XT_EXIT
- .include "words/else.asm"
-
- ; Compiler
- ; resolve the forward reference and place a new unresolved forward reference
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ELSE:
-0007a6 0004 .dw $0004
-0007a7 6c65
-0007a8 6573 .db "else"
-0007a9 079e .dw VE_HEAD
- .set VE_HEAD = VE_ELSE
- XT_ELSE:
-0007aa 3801 .dw DO_COLON
- PFA_ELSE:
- .endif
-0007ab 0751 .dw XT_COMPILE
-0007ac 382f .dw XT_DOBRANCH
-0007ad 0782 .dw XT_GMARK
-0007ae 38c4 .dw XT_SWAP
-0007af 0787 .dw XT_GRESOLVE
-0007b0 3820 .dw XT_EXIT
- .include "words/then.asm"
-
- ; Compiler
- ; finish if
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THEN:
-0007b1 0004 .dw $0004
-0007b2 6874
-0007b3 6e65 .db "then"
-0007b4 07a6 .dw VE_HEAD
- .set VE_HEAD = VE_THEN
- XT_THEN:
-0007b5 3801 .dw DO_COLON
- PFA_THEN:
- .endif
-0007b6 0787 .dw XT_GRESOLVE
-0007b7 3820 .dw XT_EXIT
- .include "words/begin.asm"
-
- ; Compiler
- ; put the next location for a transfer of control onto the control flow stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BEGIN:
-0007b8 0005 .dw $0005
-0007b9 6562
-0007ba 6967
-0007bb 006e .db "begin",0
-0007bc 07b1 .dw VE_HEAD
- .set VE_HEAD = VE_BEGIN
- XT_BEGIN:
-0007bd 3801 .dw DO_COLON
- PFA_BEGIN:
- .endif
-0007be 078d .dw XT_LMARK
-0007bf 3820 .dw XT_EXIT
- .include "words/while.asm"
-
- ; Compiler
- ; at runtime skip until repeat if non-true
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WHILE:
-0007c0 0005 .dw $0005
-0007c1 6877
-0007c2 6c69
-0007c3 0065 .db "while",0
-0007c4 07b8 .dw VE_HEAD
- .set VE_HEAD = VE_WHILE
- XT_WHILE:
-0007c5 3801 .dw DO_COLON
- PFA_WHILE:
- .endif
-0007c6 07a1 .dw XT_IF
-0007c7 38c4 .dw XT_SWAP
-0007c8 3820 .dw XT_EXIT
- .include "words/repeat.asm"
-
- ; Compiler
- ; continue execution at dest, resolve orig
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REPEAT:
-0007c9 0006 .dw $0006
-0007ca 6572
-0007cb 6570
-0007cc 7461 .db "repeat"
-0007cd 07c0 .dw VE_HEAD
- .set VE_HEAD = VE_REPEAT
- XT_REPEAT:
-0007ce 3801 .dw DO_COLON
- PFA_REPEAT:
- .endif
-0007cf 07e2 .dw XT_AGAIN
-0007d0 07b5 .dw XT_THEN
-0007d1 3820 .dw XT_EXIT
- .include "words/until.asm"
-
- ; Compiler
- ; finish begin with conditional branch, leaves the loop if true flag at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UNTIL:
-0007d2 0005 .dw $0005
-0007d3 6e75
-0007d4 6974
-0007d5 006c .db "until",0
-0007d6 07c9 .dw VE_HEAD
- .set VE_HEAD = VE_UNTIL
- XT_UNTIL:
-0007d7 3801 .dw DO_COLON
- PFA_UNTIL:
- .endif
-0007d8 383d .dw XT_DOLITERAL
-0007d9 3836 .dw XT_DOCONDBRANCH
-0007da 075c .dw XT_COMMA
-
-0007db 0790 .dw XT_LRESOLVE
-0007dc 3820 .dw XT_EXIT
- .include "words/again.asm"
-
- ; Compiler
- ; compile a jump back to dest
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AGAIN:
-0007dd 0005 .dw $0005
-0007de 6761
-0007df 6961
-0007e0 006e .db "again",0
-0007e1 07d2 .dw VE_HEAD
- .set VE_HEAD = VE_AGAIN
- XT_AGAIN:
-0007e2 3801 .dw DO_COLON
- PFA_AGAIN:
- .endif
-0007e3 0751 .dw XT_COMPILE
-0007e4 382f .dw XT_DOBRANCH
-0007e5 0790 .dw XT_LRESOLVE
-0007e6 3820 .dw XT_EXIT
- .include "words/do.asm"
-
- ; Compiler
- ; start do .. [+]loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DO:
-0007e7 0002 .dw $0002
-0007e8 6f64 .db "do"
-0007e9 07dd .dw VE_HEAD
- .set VE_HEAD = VE_DO
- XT_DO:
-0007ea 3801 .dw DO_COLON
- PFA_DO:
-
- .endif
-0007eb 0751 .dw XT_COMPILE
-0007ec 3a9b .dw XT_DODO
-0007ed 078d .dw XT_LMARK
-0007ee 3954 .dw XT_ZERO
-0007ef 0845 .dw XT_TO_L
-0007f0 3820 .dw XT_EXIT
- .include "words/loop.asm"
-
- ; Compiler
- ; compile (loop) and resolve the backward branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LOOP:
-0007f1 0004 .dw $0004
-0007f2 6f6c
-0007f3 706f .db "loop"
-0007f4 07e7 .dw VE_HEAD
- .set VE_HEAD = VE_LOOP
- XT_LOOP:
-0007f5 3801 .dw DO_COLON
- PFA_LOOP:
- .endif
-0007f6 0751 .dw XT_COMPILE
-0007f7 3ac9 .dw XT_DOLOOP
-0007f8 082c .dw XT_ENDLOOP
-0007f9 3820 .dw XT_EXIT
- .include "words/plusloop.asm"
-
- ; Compiler
- ; compile (+loop) and resolve branches
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PLUSLOOP:
-0007fa 0005 .dw $0005
-0007fb 6c2b
-0007fc 6f6f
-0007fd 0070 .db "+loop",0
-0007fe 07f1 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSLOOP
- XT_PLUSLOOP:
-0007ff 3801 .dw DO_COLON
- PFA_PLUSLOOP:
- .endif
-000800 0751 .dw XT_COMPILE
-000801 3aba .dw XT_DOPLUSLOOP
-000802 082c .dw XT_ENDLOOP
-000803 3820 .dw XT_EXIT
- .include "words/leave.asm"
-
- ; Compiler
- ; immediatly leave the current DO..LOOP
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LEAVE:
-000804 0005 .dw $0005
-000805 656c
-000806 7661
-000807 0065 .db "leave",0
-000808 07fa .dw VE_HEAD
- .set VE_HEAD = VE_LEAVE
- XT_LEAVE:
-000809 3801 .dw DO_COLON
- PFA_LEAVE:
- .endif
-00080a 0751
-00080b 3ad4 .DW XT_COMPILE,XT_UNLOOP
-00080c 0799
-00080d 0845
-00080e 3820 .DW XT_AHEAD,XT_TO_L,XT_EXIT
- .include "words/qdo.asm"
-
- ; Compiler
- ; start a ?do .. [+]loop control structure
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_QDO:
-00080f 0003 .dw $0003
-000810 643f
-000811 006f .db "?do",0
-000812 0804 .dw VE_HEAD
- .set VE_HEAD = VE_QDO
- XT_QDO:
-000813 3801 .dw DO_COLON
- PFA_QDO:
- .endif
-000814 0751 .dw XT_COMPILE
-000815 081b .dw XT_QDOCHECK
-000816 07a1 .dw XT_IF
-000817 07ea .dw XT_DO
-000818 38c4 .dw XT_SWAP ; DO sets a 0 marker on the leave stack
-000819 0845 .dw XT_TO_L ; then follows at the end.
-00081a 3820 .dw XT_EXIT
-
- ; there is no special runtime for ?do, the do runtime
- ; gets wrapped with the sequence
- ; ... ?do-check if do ..... loop then
- ; with
- ; : ?do-check ( n1 n2 -- n1 n2 true | false )
- ; 2dup = dup >r if 2drop then r> invert ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QDOCHECK:
-00081b 3801 .dw DO_COLON
- PFA_QDOCHECK:
- .endif
-00081c 3ec9 .dw XT_2DUP
-00081d 3fdf .dw XT_EQUAL
-00081e 38b1 .dw XT_DUP
-00081f 38ff .dw XT_TO_R
-000820 3836 .dw XT_DOCONDBRANCH
-000821 0823 DEST(PFA_QDOCHECK1)
-000822 3ed2 .dw XT_2DROP
- PFA_QDOCHECK1:
-000823 38f6 .dw XT_R_FROM
-000824 39fd .dw XT_INVERT
-000825 3820 .dw XT_EXIT
- .include "words/endloop.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENDLOOP:
-000826 ff07 .dw $ff07
-000827 6e65
-000828 6c64
-000829 6f6f
-00082a 0070 .db "endloop",0
-00082b 080f .dw VE_HEAD
- .set VE_HEAD = VE_ENDLOOP
- XT_ENDLOOP:
-00082c 3801 .dw DO_COLON
- PFA_ENDLOOP:
- .endif
- ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN --
- ; <resolve backward loop
- ; BEGIN L> ?DUP WHILE POSTPONE THEN REPEAT ;
- ; resolve LEAVEs
- ; This is a common factor of LOOP and +LOOP.
-
-00082d 0790 .DW XT_LRESOLVE
-00082e 0839
-00082f 38b9
-000830 3836 LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH
-000831 0835 DEST(LOOP2)
-000832 07b5 .DW XT_THEN
-000833 382f .dw XT_DOBRANCH
-000834 082e DEST(LOOP1)
-000835 3820 LOOP2: .DW XT_EXIT
- ; leave address stack
- .include "words/l-from.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_FROM:
-000836 ff02 .dw $ff02
-000837 3e6c .db "l>"
-000838 0826 .dw VE_HEAD
- .set VE_HEAD = VE_L_FROM
- XT_L_FROM:
-000839 3801 .dw DO_COLON
- PFA_L_FROM:
-
- .endif
- ;Z L> -- x L: x -- move from leave stack
- ; LP @ @ -2 LP +! ;
-
-00083a 0858 .dw XT_LP
-00083b 3879 .dw XT_FETCH
-00083c 3879 .dw XT_FETCH
-00083d 383d .dw XT_DOLITERAL
-00083e fffe .dw -2
-00083f 0858 .dw XT_LP
-000840 3a65 .dw XT_PLUSSTORE
-000841 3820 .dw XT_EXIT
- .include "words/to-l.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_L:
-000842 ff02 .dw $ff02
-000843 6c3e .db ">l"
-000844 0836 .dw VE_HEAD
- .set VE_HEAD = VE_TO_L
- XT_TO_L:
-000845 3801 .dw DO_COLON
- PFA_TO_L:
- .endif
- ;Z >L x -- L: -- x move to leave stack
- ; CELL LP +! LP @ ! ; (L stack grows up)
-
-000846 3feb .dw XT_TWO
-000847 0858 .dw XT_LP
-000848 3a65 .dw XT_PLUSSTORE
-000849 0858 .dw XT_LP
-00084a 3879 .dw XT_FETCH
-00084b 3881 .dw XT_STORE
-00084c 3820 .dw XT_EXIT
- .include "words/lp0.asm"
-
- ; Stack
- ; start address of leave stack
- VE_LP0:
-00084d ff03 .dw $ff03
-00084e 706c
-00084f 0030 .db "lp0",0
-000850 0842 .dw VE_HEAD
- .set VE_HEAD = VE_LP0
- XT_LP0:
-000851 386f .dw PFA_DOVALUE1
- PFA_LP0:
-000852 0036 .dw CFG_LP0
-000853 3da0 .dw XT_EDEFERFETCH
-000854 3daa .dw XT_EDEFERSTORE
- .include "words/lp.asm"
-
- ; System Variable
- ; leave stack pointer
- VE_LP:
-000855 ff02 .dw $ff02
-000856 706c .db "lp"
-000857 084d .dw VE_HEAD
- .set VE_HEAD = VE_LP
- XT_LP:
-000858 3848 .dw PFA_DOVARIABLE
- PFA_LP:
-000859 00eb .dw ram_lp
-
- .dseg
-0000eb ram_lp: .byte 2
- .cseg
-
-
- .include "words/create.asm"
-
- ; Dictionary
- ; create a dictionary header. XT is (constant), with the address of the data field of name
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CREATE:
-00085a ff06 .dw $ff06
-00085b 7263
-00085c 6165
-00085d 6574 .db "create"
-00085e 0855 .dw VE_HEAD
- .set VE_HEAD = VE_CREATE
- XT_CREATE:
-00085f 3801 .dw DO_COLON
- PFA_CREATE:
- .endif
-000860 072e .dw XT_DOCREATE
-000861 088e .dw XT_REVEAL
-000862 0751 .dw XT_COMPILE
-000863 3852 .dw PFA_DOCONSTANT
-000864 3820 .dw XT_EXIT
- .include "words/header.asm"
-
- ; Compiler
- ; creates the vocabulary header without XT and data field (PF) in the wordlist wid
- VE_HEADER:
-000865 ff06 .dw $ff06
-000866 6568
-000867 6461
-000868 7265 .db "header"
-000869 085a .dw VE_HEAD
- .set VE_HEAD = VE_HEADER
- XT_HEADER:
-00086a 3801 .dw DO_COLON
- PFA_HEADER:
-00086b 3f12 .dw XT_DP ; the new Name Field
-00086c 38ff .dw XT_TO_R
-00086d 38ff .dw XT_TO_R ; ( R: NFA WID )
-00086e 38b1 .dw XT_DUP
-00086f 3928 .dw XT_GREATERZERO
-000870 3836 .dw XT_DOCONDBRANCH
-000871 087c .dw PFA_HEADER1
-000872 38b1 .dw XT_DUP
-000873 383d .dw XT_DOLITERAL
-000874 ff00 .dw $ff00 ; all flags are off (e.g. immediate)
-000875 3a1c .dw XT_OR
-000876 03d7 .dw XT_DOSCOMMA
- ; make the link to the previous entry in this wordlist
-000877 38f6 .dw XT_R_FROM
-000878 3b5f .dw XT_FETCHE
-000879 075c .dw XT_COMMA
-00087a 38f6 .dw XT_R_FROM
-00087b 3820 .dw XT_EXIT
-
- PFA_HEADER1:
- ; -16: attempt to use zero length string as a name
-00087c 383d .dw XT_DOLITERAL
-00087d fff0 .dw -16
-00087e 3d86 .dw XT_THROW
-
- .include "words/wlscope.asm"
-
- ; Compiler
- ; dynamically place a word in a wordlist. The word name may be changed.
- VE_WLSCOPE:
-00087f ff07 .dw $ff07
-000880 6c77
-000881 6373
-000882 706f
-000883 0065 .db "wlscope",0
-000884 0865 .dw VE_HEAD
- .set VE_HEAD = VE_WLSCOPE
- XT_WLSCOPE:
-000885 3dff .dw PFA_DODEFER1
- PFA_WLSCOPE:
-000886 0032 .dw CFG_WLSCOPE
-000887 3da0 .dw XT_EDEFERFETCH
-000888 3daa .dw XT_EDEFERSTORE
-
- ; wlscope, "wordlist scope" ( addr len -- addr' len' wid ), is a deferred word
- ; which enables the AmForth application to choose the wordlist ( wid ) for the
- ; new voc entry based on the input ( addr len ) string. The name of the new voc
- ; entry ( addr' len' ) may be different from the input string. Note that all
- ; created voc entry types pass through the wlscope mechanism. The default
- ; wlscope action passes the input string to the output without modification and
- ; uses get-current to select the wid.
- .include "words/reveal.asm"
-
- ; Dictionary
- ; makes an entry in a wordlist visible, if not already done.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REVEAL:
-000889 ff06 .dw $ff06
-00088a 6572
-00088b 6576
-00088c 6c61 .db "reveal"
-00088d 087f .dw VE_HEAD
- .set VE_HEAD = VE_REVEAL
- XT_REVEAL:
-00088e 3801 .dw DO_COLON
- PFA_REVEAL:
- .endif
-00088f 071f
-000890 3c90
-000891 3879 .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use
-000892 38b9
-000893 3836 .DW XT_QDUP,XT_DOCONDBRANCH
-000894 0899 DEST(REVEAL1)
-000895 071f
-000896 3879
-000897 38c4
-000898 3b3b .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE
- ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry
- REVEAL1:
-000899 3820 .DW XT_EXIT
- .include "words/does.asm"
-
- ; Compiler
- ; organize the XT replacement to call other colon code
- VE_DOES:
-00089a 0005 .dw $0005
-00089b 6f64
-00089c 7365
-00089d 003e .db "does>",0
-00089e 0889 .dw VE_HEAD
- .set VE_HEAD = VE_DOES
- XT_DOES:
-00089f 3801 .dw DO_COLON
- PFA_DOES:
-0008a0 0751 .dw XT_COMPILE
-0008a1 08b2 .dw XT_DODOES
-0008a2 0751 .dw XT_COMPILE ; create a code snippet to be used in an embedded XT
-0008a3 940e .dw $940e ; the address of this compiled
-0008a4 0751 .dw XT_COMPILE ; code will replace the XT of the
-0008a5 08a7 .dw DO_DODOES ; word that CREATE created
-0008a6 3820 .dw XT_EXIT ;
-
- DO_DODOES: ; ( -- PFA )
-0008a7 939a
-0008a8 938a savetos
-0008a9 01cb movw tosl, wl
-0008aa 9601 adiw tosl, 1
- ; the following takes the address from a real uC-call
- .if (pclen==3)
- .endif
-0008ab 917f pop wh
-0008ac 916f pop wl
-
-0008ad 93bf push XH
-0008ae 93af push XL
-0008af 01db movw XL, wl
-0008b0 940c 3805 jmp_ DO_NEXT
-
- ; ( -- )
- ; System
- ; replace the XT written by CREATE to call the code that follows does>
- ;VE_DODOES:
- ; .dw $ff07
- ; .db "(does>)"
- ; .set VE_HEAD = VE_DODOES
- XT_DODOES:
-0008b2 3801 .dw DO_COLON
- PFA_DODOES:
-0008b3 38f6 .dw XT_R_FROM
-0008b4 071f .dw XT_NEWEST
-0008b5 3c90 .dw XT_CELLPLUS
-0008b6 3879 .dw XT_FETCH
-0008b7 3b5f .dw XT_FETCHE
-0008b8 06f6 .dw XT_NFA2CFA
-0008b9 3b73 .dw XT_STOREI
-0008ba 3820 .dw XT_EXIT
- .include "words/colon.asm"
-
- ; Compiler
- ; create a named entry in the dictionary, XT is DO_COLON
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COLON:
-0008bb ff01 .dw $ff01
-0008bc 003a .db ":",0
-0008bd 089a .dw VE_HEAD
- .set VE_HEAD = VE_COLON
- XT_COLON:
-0008be 3801 .dw DO_COLON
- PFA_COLON:
- .endif
-0008bf 072e .dw XT_DOCREATE
-0008c0 08c9 .dw XT_COLONNONAME
-0008c1 38d9 .dw XT_DROP
-0008c2 3820 .dw XT_EXIT
- .include "words/colon-noname.asm"
-
- ; Compiler
- ; create an unnamed entry in the dictionary, XT is DO_COLON
- VE_COLONNONAME:
-0008c3 ff07 .dw $ff07
-0008c4 6e3a
-0008c5 6e6f
-0008c6 6d61
-0008c7 0065 .db ":noname",0
-0008c8 08bb .dw VE_HEAD
- .set VE_HEAD = VE_COLONNONAME
- XT_COLONNONAME:
-0008c9 3801 .dw DO_COLON
- PFA_COLONNONAME:
-0008ca 3f12 .dw XT_DP
-0008cb 38b1 .dw XT_DUP
-0008cc 0726 .dw XT_LATEST
-0008cd 3881 .dw XT_STORE
-
-0008ce 0751 .dw XT_COMPILE
-0008cf 3801 .dw DO_COLON
-
-0008d0 08de .dw XT_RBRACKET
-0008d1 3820 .dw XT_EXIT
- .include "words/semicolon.asm"
-
- ; Compiler
- ; finish colon defintion, compiles (exit) and returns to interpret state
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SEMICOLON:
-0008d2 0001 .dw $0001
-0008d3 003b .db $3b,0
-0008d4 08c3 .dw VE_HEAD
- .set VE_HEAD = VE_SEMICOLON
- XT_SEMICOLON:
-0008d5 3801 .dw DO_COLON
- PFA_SEMICOLON:
- .endif
-0008d6 0751 .dw XT_COMPILE
-0008d7 3820 .dw XT_EXIT
-0008d8 08e6 .dw XT_LBRACKET
-0008d9 088e .dw XT_REVEAL
-0008da 3820 .dw XT_EXIT
- .include "words/right-bracket.asm"
-
- ; Compiler
- ; enter compiler mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RBRACKET:
-0008db ff01 .dw $ff01
-0008dc 005d .db "]",0
-0008dd 08d2 .dw VE_HEAD
- .set VE_HEAD = VE_RBRACKET
- XT_RBRACKET:
-0008de 3801 .dw DO_COLON
- PFA_RBRACKET:
- .endif
-0008df 3fe6 .dw XT_ONE
-0008e0 3eb7 .dw XT_STATE
-0008e1 3881 .dw XT_STORE
-0008e2 3820 .dw XT_EXIT
- .include "words/left-bracket.asm"
-
- ; Compiler
- ; enter interpreter mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LBRACKET:
-0008e3 0001 .dw $0001
-0008e4 005b .db "[",0
-0008e5 08db .dw VE_HEAD
- .set VE_HEAD = VE_LBRACKET
- XT_LBRACKET:
-0008e6 3801 .dw DO_COLON
- PFA_LBRACKET:
- .endif
-0008e7 3954 .dw XT_ZERO
-0008e8 3eb7 .dw XT_STATE
-0008e9 3881 .dw XT_STORE
-0008ea 3820 .dw XT_EXIT
- .include "words/variable.asm"
-
- ; Compiler
- ; create a dictionary entry for a variable and allocate 1 cell RAM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_VARIABLE:
-0008eb ff08 .dw $ff08
-0008ec 6176
-0008ed 6972
-0008ee 6261
-0008ef 656c .db "variable"
-0008f0 08e3 .dw VE_HEAD
- .set VE_HEAD = VE_VARIABLE
- XT_VARIABLE:
-0008f1 3801 .dw DO_COLON
- PFA_VARIABLE:
- .endif
-0008f2 3f23 .dw XT_HERE
-0008f3 08fd .dw XT_CONSTANT
-0008f4 3feb .dw XT_TWO
-0008f5 3f2c .dw XT_ALLOT
-0008f6 3820 .dw XT_EXIT
- .include "words/constant.asm"
-
- ; Compiler
- ; create a constant in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_CONSTANT:
-0008f7 ff08 .dw $ff08
-0008f8 6f63
-0008f9 736e
-0008fa 6174
-0008fb 746e .db "constant"
-0008fc 08eb .dw VE_HEAD
- .set VE_HEAD = VE_CONSTANT
- XT_CONSTANT:
-0008fd 3801 .dw DO_COLON
- PFA_CONSTANT:
- .endif
-0008fe 072e .dw XT_DOCREATE
-0008ff 088e .dw XT_REVEAL
-000900 0751 .dw XT_COMPILE
-000901 3848 .dw PFA_DOVARIABLE
-000902 075c .dw XT_COMMA
-000903 3820 .dw XT_EXIT
- .include "words/user.asm"
-
- ; Compiler
- ; create a dictionary entry for a user variable at offset n
- VE_USER:
-000904 ff04 .dw $ff04
-000905 7375
-000906 7265 .db "user"
-000907 08f7 .dw VE_HEAD
- .set VE_HEAD = VE_USER
- XT_USER:
-000908 3801 .dw DO_COLON
- PFA_USER:
-000909 072e .dw XT_DOCREATE
-00090a 088e .dw XT_REVEAL
-
-00090b 0751 .dw XT_COMPILE
-00090c 3858 .dw PFA_DOUSER
-00090d 075c .dw XT_COMMA
-00090e 3820 .dw XT_EXIT
-
- .include "words/recurse.asm"
-
- ; Compiler
- ; compile the XT of the word currently being defined into the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECURSE:
-00090f 0007 .dw $0007
-000910 6572
-000911 7563
-000912 7372
-000913 0065 .db "recurse",0
-000914 0904 .dw VE_HEAD
- .set VE_HEAD = VE_RECURSE
- XT_RECURSE:
-000915 3801 .dw DO_COLON
- PFA_RECURSE:
- .endif
-000916 0726 .dw XT_LATEST
-000917 3879 .dw XT_FETCH
-000918 075c .dw XT_COMMA
-000919 3820 .dw XT_EXIT
- .include "words/immediate.asm"
-
- ; Compiler
- ; set immediate flag for the most recent word definition
- VE_IMMEDIATE:
-00091a ff09 .dw $ff09
-00091b 6d69
-00091c 656d
-00091d 6964
-00091e 7461
-00091f 0065 .db "immediate",0
-000920 090f .dw VE_HEAD
- .set VE_HEAD = VE_IMMEDIATE
- XT_IMMEDIATE:
-000921 3801 .dw DO_COLON
- PFA_IMMEDIATE:
-000922 09c3 .dw XT_GET_CURRENT
-000923 3b5f .dw XT_FETCHE
-000924 38b1 .dw XT_DUP
-000925 3bcb .dw XT_FETCHI
-000926 383d .dw XT_DOLITERAL
-000927 7fff .dw $7fff
-000928 3a13 .dw XT_AND
-000929 38c4 .dw XT_SWAP
-00092a 3b73 .dw XT_STOREI
-00092b 3820 .dw XT_EXIT
-
- .include "words/bracketchar.asm"
-
- ; Tools
- ; skip leading space delimites, place the first character of the word on the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETCHAR:
-00092c 0006 .dw $0006
-00092d 635b
-00092e 6168
-00092f 5d72 .db "[char]"
-000930 091a .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETCHAR
- XT_BRACKETCHAR:
-000931 3801 .dw DO_COLON
- PFA_BRACKETCHAR:
- .endif
-000932 0751 .dw XT_COMPILE
-000933 383d .dw XT_DOLITERAL
-000934 04e6 .dw XT_CHAR
-000935 075c .dw XT_COMMA
-000936 3820 .dw XT_EXIT
- .include "words/abort-string.asm"
-
- ;C i*x x1 -- R: j*x -- x1<>0
- ; POSTPONE IS" POSTPONE ?ABORT ; IMMEDIATE
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORTQUOTE:
-000937 0006 .dw $0006
-000938 6261
-000939 726f
-00093a 2274 .db "abort",'"'
-00093b 092c .dw VE_HEAD
- .set VE_HEAD = VE_ABORTQUOTE
- XT_ABORTQUOTE:
-00093c 3801 .dw DO_COLON
- PFA_ABORTQUOTE:
- .endif
-00093d 3e8a .dw XT_SQUOTE
-00093e 0751 .dw XT_COMPILE
-00093f 094e .dw XT_QABORT
-000940 3820 .DW XT_EXIT
- .include "words/abort.asm"
-
- ; Exceptions
- ; send an exception -1
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORT:
-000941 ff05 .dw $ff05
-000942 6261
-000943 726f
-000944 0074 .db "abort",0
-000945 0937 .dw VE_HEAD
- .set VE_HEAD = VE_ABORT
- XT_ABORT:
-000946 3801 .dw DO_COLON
- PFA_ABORT:
- .endif
-000947 394b .dw XT_TRUE
-000948 3d86 .dw XT_THROW
- .include "words/q-abort.asm"
-
- ; ROT IF ITYPE ABORT THEN 2DROP ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QABORT:
-000949 ff06 .dw $ff06
-00094a 613f
-00094b 6f62
-00094c 7472 .db "?abort"
-00094d 0941 .dw VE_HEAD
- .set VE_HEAD = VE_QABORT
- XT_QABORT:
-00094e 3801 .dw DO_COLON
- PFA_QABORT:
-
- .endif
-00094f 38e1
-000950 3836 .DW XT_ROT,XT_DOCONDBRANCH
-000951 0954 DEST(QABO1)
-000952 03f8
-000953 0946 .DW XT_ITYPE,XT_ABORT
-000954 3ed2
-000955 3820 QABO1: .DW XT_2DROP,XT_EXIT
-
- .include "words/get-stack.asm"
-
- ; Tools
- ; Get a stack from EEPROM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_STACK:
-000956 ff09 .dw $ff09
-000957 6567
-000958 2d74
-000959 7473
-00095a 6361
-00095b 006b .db "get-stack",0
-00095c 0949 .dw VE_HEAD
- .set VE_HEAD = VE_GET_STACK
- XT_GET_STACK:
-00095d 3801 .dw DO_COLON
- .endif
-00095e 38b1 .dw XT_DUP
-00095f 3c90 .dw XT_CELLPLUS
-000960 38c4 .dw XT_SWAP
-000961 3b5f .dw XT_FETCHE
-000962 38b1 .dw XT_DUP
-000963 38ff .dw XT_TO_R
-000964 3954 .dw XT_ZERO
-000965 38c4 .dw XT_SWAP ; go from bigger to smaller addresses
-000966 081b .dw XT_QDOCHECK
-000967 3836 .dw XT_DOCONDBRANCH
-000968 0974 DEST(PFA_N_FETCH_E2)
-000969 3a9b .dw XT_DODO
- PFA_N_FETCH_E1:
- ; ( ee-addr )
-00096a 3aac .dw XT_I
-00096b 3a35 .dw XT_1MINUS
-00096c 3ec4 .dw XT_CELLS ; ( -- ee-addr i*2 )
-00096d 38cf .dw XT_OVER ; ( -- ee-addr i*2 ee-addr )
-00096e 399d .dw XT_PLUS ; ( -- ee-addr ee-addr+i
-00096f 3b5f .dw XT_FETCHE ;( -- ee-addr item_i )
-000970 38c4 .dw XT_SWAP ;( -- item_i ee-addr )
-000971 394b .dw XT_TRUE ; shortcut for -1
-000972 3aba .dw XT_DOPLUSLOOP
-000973 096a DEST(PFA_N_FETCH_E1)
- PFA_N_FETCH_E2:
-000974 3ed2 .dw XT_2DROP
-000975 38f6 .dw XT_R_FROM
-000976 3820 .dw XT_EXIT
-
- .include "words/set-stack.asm"
-
- ; Tools
- ; Write a stack to EEPROM
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_STACK:
-000977 ff09 .dw $ff09
-000978 6573
-000979 2d74
-00097a 7473
-00097b 6361
-00097c 006b .db "set-stack",0
-00097d 0956 .dw VE_HEAD
- .set VE_HEAD = VE_SET_STACK
- XT_SET_STACK:
-00097e 3801 .dw DO_COLON
- PFA_SET_STACK:
- .endif
-00097f 38cf .dw XT_OVER
-000980 3921 .dw XT_ZEROLESS
-000981 3836 .dw XT_DOCONDBRANCH
-000982 0986 DEST(PFA_SET_STACK0)
-000983 383d .dw XT_DOLITERAL
-000984 fffc .dw -4
-000985 3d86 .dw XT_THROW
- PFA_SET_STACK0:
-000986 3ec9 .dw XT_2DUP
-000987 3b3b .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr )
-000988 38c4 .dw XT_SWAP
-000989 3954 .dw XT_ZERO
-00098a 081b .dw XT_QDOCHECK
-00098b 3836 .dw XT_DOCONDBRANCH
-00098c 0993 DEST(PFA_SET_STACK2)
-00098d 3a9b .dw XT_DODO
- PFA_SET_STACK1:
-00098e 3c90 .dw XT_CELLPLUS ; ( -- i_x e-addr )
-00098f 3eda .dw XT_TUCK ; ( -- e-addr i_x e-addr
-000990 3b3b .dw XT_STOREE
-000991 3ac9 .dw XT_DOLOOP
-000992 098e DEST(PFA_SET_STACK1)
- PFA_SET_STACK2:
-000993 38d9 .dw XT_DROP
-000994 3820 .dw XT_EXIT
-
- .include "words/map-stack.asm"
-
- ; Tools
- ; Iterate over a stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAPSTACK:
-000995 ff09 .dw $ff09
-000996 616d
-000997 2d70
-000998 7473
-000999 6361
-00099a 006b .db "map-stack",0
-00099b 0977 .dw VE_HEAD
- .set VE_HEAD = VE_MAPSTACK
- XT_MAPSTACK:
-00099c 3801 .dw DO_COLON
- PFA_MAPSTACK:
- .endif
-00099d 38b1 .dw XT_DUP
-00099e 3c90 .dw XT_CELLPLUS
-00099f 38c4 .dw XT_SWAP
-0009a0 3b5f .dw XT_FETCHE
-0009a1 3ec4 .dw XT_CELLS
-0009a2 3f99 .dw XT_BOUNDS
-0009a3 081b .dw XT_QDOCHECK
-0009a4 3836 .dw XT_DOCONDBRANCH
-0009a5 09b8 DEST(PFA_MAPSTACK3)
-0009a6 3a9b .dw XT_DODO
- PFA_MAPSTACK1:
-0009a7 3aac .dw XT_I
-0009a8 3b5f .dw XT_FETCHE ; -- i*x XT id
-0009a9 38c4 .dw XT_SWAP
-0009aa 38ff .dw XT_TO_R
-0009ab 3908 .dw XT_R_FETCH
-0009ac 382a .dw XT_EXECUTE ; i*x id -- j*y true | i*x false
-0009ad 38b9 .dw XT_QDUP
-0009ae 3836 .dw XT_DOCONDBRANCH
-0009af 09b4 DEST(PFA_MAPSTACK2)
-0009b0 38f6 .dw XT_R_FROM
-0009b1 38d9 .dw XT_DROP
-0009b2 3ad4 .dw XT_UNLOOP
-0009b3 3820 .dw XT_EXIT
- PFA_MAPSTACK2:
-0009b4 38f6 .dw XT_R_FROM
-0009b5 3feb .dw XT_TWO
-0009b6 3aba .dw XT_DOPLUSLOOP
-0009b7 09a7 DEST(PFA_MAPSTACK1)
- PFA_MAPSTACK3:
-0009b8 38d9 .dw XT_DROP
-0009b9 3954 .dw XT_ZERO
-0009ba 3820 .dw XT_EXIT
-
- ;
- ; : map-stack ( i*x XT e-addr -- j*y )
- ; dup cell+ swap @e cells bounds ?do
- ; ( -- i*x XT )
- ; i @e swap >r r@ execute
- ; ?dup if r> drop unloop exit then
- ; r>
- ; 2 +loop drop 0
- ; ;
- .include "words/get-current.asm"
-
- ; Search Order
- ; get the wid of the current compilation word list
- VE_GET_CURRENT:
-0009bb ff0b .dw $ff0b
-0009bc 6567
-0009bd 2d74
-0009be 7563
-0009bf 7272
-0009c0 6e65
-0009c1 0074 .db "get-current",0
-0009c2 0995 .dw VE_HEAD
- .set VE_HEAD = VE_GET_CURRENT
- XT_GET_CURRENT:
-0009c3 3801 .dw DO_COLON
- PFA_GET_CURRENT:
-0009c4 383d .dw XT_DOLITERAL
-0009c5 003c .dw CFG_CURRENT
-0009c6 3b5f .dw XT_FETCHE
-0009c7 3820 .dw XT_EXIT
- .include "words/get-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_ORDER:
-0009c8 ff09 .dw $ff09
-0009c9 6567
-0009ca 2d74
-0009cb 726f
-0009cc 6564
-0009cd 0072 .db "get-order",0
-0009ce 09bb .dw VE_HEAD
- .set VE_HEAD = VE_GET_ORDER
- XT_GET_ORDER:
-0009cf 3801 .dw DO_COLON
- PFA_GET_ORDER:
- .endif
-0009d0 383d .dw XT_DOLITERAL
-0009d1 0040 .dw CFG_ORDERLISTLEN
-0009d2 095d .dw XT_GET_STACK
-0009d3 3820 .dw XT_EXIT
- .include "words/cfg-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CFG_ORDER:
-0009d4 ff09 .dw $ff09
-0009d5 6663
-0009d6 2d67
-0009d7 726f
-0009d8 6564
-0009d9 0072 .db "cfg-order",0
-0009da 09c8 .dw VE_HEAD
- .set VE_HEAD = VE_CFG_ORDER
- XT_CFG_ORDER:
-0009db 3848 .dw PFA_DOVARIABLE
- PFA_CFG_ORDER:
- .endif
-0009dc 0040 .dw CFG_ORDERLISTLEN
- .include "words/compare.asm"
-
- ; String
- ; compares two strings in RAM
- VE_COMPARE:
-0009dd ff07 .dw $ff07
-0009de 6f63
-0009df 706d
-0009e0 7261
-0009e1 0065 .db "compare",0
-0009e2 09d4 .dw VE_HEAD
- .set VE_HEAD = VE_COMPARE
- XT_COMPARE:
-0009e3 09e4 .dw PFA_COMPARE
- PFA_COMPARE:
-0009e4 93bf push xh
-0009e5 93af push xl
-0009e6 018c movw temp0, tosl
-0009e7 9189
-0009e8 9199 loadtos
-0009e9 01dc movw xl, tosl
-0009ea 9189
-0009eb 9199 loadtos
-0009ec 019c movw temp2, tosl
-0009ed 9189
-0009ee 9199 loadtos
-0009ef 01fc movw zl, tosl
- PFA_COMPARE_LOOP:
-0009f0 90ed ld temp4, X+
-0009f1 90f1 ld temp5, Z+
-0009f2 14ef cp temp4, temp5
-0009f3 f451 brne PFA_COMPARE_NOTEQUAL
-0009f4 950a dec temp0
-0009f5 f019 breq PFA_COMPARE_ENDREACHED2
-0009f6 952a dec temp2
-0009f7 f7c1 brne PFA_COMPARE_LOOP
-0009f8 c001 rjmp PFA_COMPARE_ENDREACHED
- PFA_COMPARE_ENDREACHED2:
-0009f9 952a dec temp2
- PFA_COMPARE_ENDREACHED:
-0009fa 2b02 or temp0, temp2
-0009fb f411 brne PFA_COMPARE_CHECKLASTCHAR
-0009fc 2788 clr tosl
-0009fd c002 rjmp PFA_COMPARE_DONE
- PFA_COMPARE_CHECKLASTCHAR:
- PFA_COMPARE_NOTEQUAL:
-0009fe ef8f ser tosl
-0009ff c000 rjmp PFA_COMPARE_DONE
-
- PFA_COMPARE_DONE:
-000a00 2f98 mov tosh, tosl
-000a01 91af pop xl
-000a02 91bf pop xh
-000a03 940c 3805 jmp_ DO_NEXT
- .include "words/nfa2lfa.asm"
-
- ; System
- ; get the link field address from the name field address
- VE_NFA2LFA:
-000a05 ff07 .dw $ff07
-000a06 666e
-000a07 3e61
-000a08 666c
-000a09 0061 .db "nfa>lfa",0
-000a0a 09dd .dw VE_HEAD
- .set VE_HEAD = VE_NFA2LFA
- XT_NFA2LFA:
-000a0b 3801 .dw DO_COLON
- PFA_NFA2LFA:
-000a0c 06ea .dw XT_NAME2STRING
-000a0d 3a2f .dw XT_1PLUS
-000a0e 3a04 .dw XT_2SLASH
-000a0f 399d .dw XT_PLUS
-000a10 3820 .dw XT_EXIT
- .elif AMFORTH_NRWW_SIZE > 2000
- .else
- .endif
- .include "dict_appl.inc"
-
- ; they may be moved to the core dictionary if needed
- .include "words/dot-s.asm"
-
- ; Tools
- ; stack dump
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTS:
-000a11 ff02 .dw $ff02
-000a12 732e .db ".s"
-000a13 0a05 .dw VE_HEAD
- .set VE_HEAD = VE_DOTS
- XT_DOTS:
-000a14 3801 .dw DO_COLON
- PFA_DOTS:
- .endif
-000a15 05e2 .dw XT_DEPTH
-000a16 3e0a .dw XT_UDOT
-000a17 3fae .dw XT_SPACE
-000a18 05e2 .dw XT_DEPTH
-000a19 3954 .dw XT_ZERO
-000a1a 081b .dw XT_QDOCHECK
-000a1b 3836 .dw XT_DOCONDBRANCH
-000a1c 0a23 DEST(PFA_DOTS2)
-000a1d 3a9b .dw XT_DODO
- PFA_DOTS1:
-000a1e 3aac .dw XT_I
-000a1f 3c84 .dw XT_PICK
-000a20 3e0a .dw XT_UDOT
-000a21 3ac9 .dw XT_DOLOOP
-000a22 0a1e DEST(PFA_DOTS1)
- PFA_DOTS2:
-000a23 3820 .dw XT_EXIT
- .include "words/spirw.asm"
-
- ; MCU
- ; SPI exchange of 1 byte
- VE_SPIRW:
-000a24 ff06 .dw $ff06
-000a25 2163
-000a26 7340
-000a27 6970 .db "c!@spi"
-000a28 0a11 .dw VE_HEAD
- .set VE_HEAD = VE_SPIRW
- XT_SPIRW:
-000a29 0a2a .dw PFA_SPIRW
- PFA_SPIRW:
-000a2a d003 rcall do_spirw
-000a2b 2799 clr tosh
-000a2c 940c 3805 jmp_ DO_NEXT
-
- do_spirw:
-000a2e b98f out_ SPDR, tosl
- do_spirw1:
-000a2f b10e in_ temp0, SPSR
-000a30 7f08 cbr temp0,7
-000a31 b90e out_ SPSR, temp0
-000a32 b10e in_ temp0, SPSR
-000a33 ff07 sbrs temp0, 7
-000a34 cffa rjmp do_spirw1 ; wait until complete
-000a35 b18f in_ tosl, SPDR
-000a36 9508 ret
- .include "words/n-spi.asm"
-
- ; MCU
- ; read len bytes from SPI to addr
- VE_N_SPIR:
-000a37 ff05 .dw $ff05
-000a38 406e
-000a39 7073
-000a3a 0069 .db "n@spi",0
-000a3b 0a24 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIR
- XT_N_SPIR:
-000a3c 0a3d .dw PFA_N_SPIR
- PFA_N_SPIR:
-000a3d 018c movw temp0, tosl
-000a3e 9189
-000a3f 9199 loadtos
-000a40 01fc movw zl, tosl
-000a41 01c8 movw tosl, temp0
- PFA_N_SPIR_LOOP:
-000a42 b82f out_ SPDR, zerol
- PFA_N_SPIR_LOOP1:
-000a43 b12e in_ temp2, SPSR
-000a44 ff27 sbrs temp2, SPIF
-000a45 cffd rjmp PFA_N_SPIR_LOOP1
-000a46 b12f in_ temp2, SPDR
-000a47 9321 st Z+, temp2
-000a48 9701 sbiw tosl, 1
-000a49 f7c1 brne PFA_N_SPIR_LOOP
-000a4a 9189
-000a4b 9199 loadtos
-000a4c 940c 3805 jmp_ DO_NEXT
-
- ; ( addr len -- )
- ; MCU
- ; write len bytes to SPI from addr
- VE_N_SPIW:
-000a4e ff05 .dw $ff05
-000a4f 216e
-000a50 7073
-000a51 0069 .db "n!spi",0
-000a52 0a37 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIW
- XT_N_SPIW:
-000a53 0a54 .dw PFA_N_SPIW
- PFA_N_SPIW:
-000a54 018c movw temp0, tosl
-000a55 9189
-000a56 9199 loadtos
-000a57 01fc movw zl, tosl
-000a58 01c8 movw tosl, temp0
- PFA_N_SPIW_LOOP:
-000a59 9121 ld temp2, Z+
-000a5a b92f out_ SPDR, temp2
- PFA_N_SPIW_LOOP1:
-000a5b b12e in_ temp2, SPSR
-000a5c ff27 sbrs temp2, SPIF
-000a5d cffd rjmp PFA_N_SPIW_LOOP1
-000a5e b12f in_ temp2, SPDR ; ignore the data
-000a5f 9701 sbiw tosl, 1
-000a60 f7c1 brne PFA_N_SPIW_LOOP
-000a61 9189
-000a62 9199 loadtos
-000a63 940c 3805 jmp_ DO_NEXT
- .include "words/applturnkey.asm"
-
- ; R( -- )
- ; application specific turnkey action
- VE_APPLTURNKEY:
-000a65 ff0b .dw $ff0b
-000a66 7061
-000a67 6c70
-000a68 7574
-000a69 6e72
-000a6a 656b
-000a6b 0079 .db "applturnkey",0
-000a6c 0a4e .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
- XT_APPLTURNKEY:
-000a6d 3801 .dw DO_COLON
- PFA_APPLTURNKEY:
-000a6e 00bc .dw XT_USART
-
- .if WANT_INTERRUPTS == 1
-000a6f 3c97 .dw XT_INTON
- .endif
-000a70 017f .dw XT_DOT_VER
-000a71 3fae .dw XT_SPACE
-000a72 3eac .dw XT_F_CPU
-000a73 383d .dw XT_DOLITERAL
-000a74 03e8 .dw 1000
-000a75 39c2 .dw XT_UMSLASHMOD
-000a76 38f0 .dw XT_NIP
-000a77 3f41 .dw XT_DECIMAL
-000a78 037a .dw XT_DOT
-000a79 03c5 .dw XT_DOSLITERAL
-000a7a 0004 .dw 4
-000a7b 486b
-000a7c 207a .db "kHz "
-000a7d 03f8 .dw XT_ITYPE
-000a7e 3820 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .set DICT_COMPILER2 = 1
-
- .include "words/set-current.asm"
-
- ; Search Order
- ; set current word list to the given word list wid
- VE_SET_CURRENT:
-000a7f ff0b .dw $ff0b
-000a80 6573
-000a81 2d74
-000a82 7563
-000a83 7272
-000a84 6e65
-000a85 0074 .db "set-current",0
-000a86 0a65 .dw VE_HEAD
- .set VE_HEAD = VE_SET_CURRENT
- XT_SET_CURRENT:
-000a87 3801 .dw DO_COLON
- PFA_SET_CURRENT:
-000a88 383d .dw XT_DOLITERAL
-000a89 003c .dw CFG_CURRENT
-000a8a 3b3b .dw XT_STOREE
-000a8b 3820 .dw XT_EXIT
- .include "words/wordlist.asm"
-
- ; Search Order
- ; create a new, empty wordlist
- VE_WORDLIST:
-000a8c ff08 .dw $ff08
-000a8d 6f77
-000a8e 6472
-000a8f 696c
-000a90 7473 .db "wordlist"
-000a91 0a7f .dw VE_HEAD
- .set VE_HEAD = VE_WORDLIST
- XT_WORDLIST:
-000a92 3801 .dw DO_COLON
- PFA_WORDLIST:
-000a93 3f1b .dw XT_EHERE
-000a94 3954 .dw XT_ZERO
-000a95 38cf .dw XT_OVER
-000a96 3b3b .dw XT_STOREE
-000a97 38b1 .dw XT_DUP
-000a98 3c90 .dw XT_CELLPLUS
-000a99 01b4 .dw XT_DOTO
-000a9a 3f1c .dw PFA_EHERE
-000a9b 3820 .dw XT_EXIT
-
- .include "words/forth-wordlist.asm"
-
- ; Search Order
- ; get the system default word list
- VE_FORTHWORDLIST:
-000a9c ff0e .dw $ff0e
-000a9d 6f66
-000a9e 7472
-000a9f 2d68
-000aa0 6f77
-000aa1 6472
-000aa2 696c
-000aa3 7473 .db "forth-wordlist"
-000aa4 0a8c .dw VE_HEAD
- .set VE_HEAD = VE_FORTHWORDLIST
- XT_FORTHWORDLIST:
-000aa5 3848 .dw PFA_DOVARIABLE
- PFA_FORTHWORDLIST:
-000aa6 003e .dw CFG_FORTHWORDLIST
- .include "words/set-order.asm"
-
- ; Search Order
- ; replace the search order list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_ORDER:
-000aa7 ff09 .dw $ff09
-000aa8 6573
-000aa9 2d74
-000aaa 726f
-000aab 6564
-000aac 0072 .db "set-order",0
-000aad 0a9c .dw VE_HEAD
- .set VE_HEAD = VE_SET_ORDER
- XT_SET_ORDER:
-000aae 3801 .dw DO_COLON
- PFA_SET_ORDER:
- .endif
-000aaf 383d .dw XT_DOLITERAL
-000ab0 0040 .dw CFG_ORDERLISTLEN
-000ab1 097e .dw XT_SET_STACK
-000ab2 3820 .dw XT_EXIT
-
- .include "words/set-recognizer.asm"
-
- ; Interpreter
- ; replace the recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_RECOGNIZERS:
-000ab3 ff0f .dw $ff0f
-000ab4 6573
-000ab5 2d74
-000ab6 6572
-000ab7 6f63
-000ab8 6e67
-000ab9 7a69
-000aba 7265
-000abb 0073 .db "set-recognizers",0
-000abc 0aa7 .dw VE_HEAD
- .set VE_HEAD = VE_SET_RECOGNIZERS
- XT_SET_RECOGNIZERS:
-000abd 3801 .dw DO_COLON
- PFA_SET_RECOGNIZERS:
- .endif
-000abe 383d .dw XT_DOLITERAL
-000abf 0052 .dw CFG_RECOGNIZERLISTLEN
-000ac0 097e .dw XT_SET_STACK
-000ac1 3820 .dw XT_EXIT
-
- .include "words/get-recognizer.asm"
-
- ; Interpreter
- ; Get the current recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_RECOGNIZERS:
-000ac2 ff0f .dw $ff0f
-000ac3 6567
-000ac4 2d74
-000ac5 6572
-000ac6 6f63
-000ac7 6e67
-000ac8 7a69
-000ac9 7265
-000aca 0073 .db "get-recognizers",0
-000acb 0ab3 .dw VE_HEAD
- .set VE_HEAD = VE_GET_RECOGNIZERS
- XT_GET_RECOGNIZERS:
-000acc 3801 .dw DO_COLON
- PFA_GET_RECOGNIZERS:
- .endif
-000acd 383d .dw XT_DOLITERAL
-000ace 0052 .dw CFG_RECOGNIZERLISTLEN
-000acf 095d .dw XT_GET_STACK
-000ad0 3820 .dw XT_EXIT
- .include "words/code.asm"
-
- ; Compiler
- ; create named entry in the dictionary, XT is the data field
- VE_CODE:
-000ad1 ff04 .dw $ff04
-000ad2 6f63
-000ad3 6564 .db "code"
-000ad4 0ac2 .dw VE_HEAD
- .set VE_HEAD = VE_CODE
- XT_CODE:
-000ad5 3801 .dw DO_COLON
- PFA_CODE:
-000ad6 072e .dw XT_DOCREATE
-000ad7 088e .dw XT_REVEAL
-000ad8 3f12 .dw XT_DP
-000ad9 01c6 .dw XT_ICELLPLUS
-000ada 075c .dw XT_COMMA
-000adb 3820 .dw XT_EXIT
- .include "words/end-code.asm"
-
- ; Compiler
- ; finish a code definition
- VE_ENDCODE:
-000adc ff08 .dw $ff08
-000add 6e65
-000ade 2d64
-000adf 6f63
-000ae0 6564 .db "end-code"
-000ae1 0ad1 .dw VE_HEAD
- .set VE_HEAD = VE_ENDCODE
- XT_ENDCODE:
-000ae2 3801 .dw DO_COLON
- PFA_ENDCODE:
-000ae3 0751 .dw XT_COMPILE
-000ae4 940c .dw $940c
-000ae5 0751 .dw XT_COMPILE
-000ae6 3805 .dw DO_NEXT
-000ae7 3820 .dw XT_EXIT
- .include "words/marker.asm"
-
- ; System Value
- ; The eeprom address until which MARKER saves and restores the eeprom data.
- VE_MARKER:
-000ae8 ff08 .dw $ff08
-000ae9 6d28
-000aea 7261
-000aeb 656b
-000aec 2972 .db "(marker)"
-000aed 0adc .dw VE_HEAD
- .set VE_HEAD = VE_MARKER
- XT_MARKER:
-000aee 386f .dw PFA_DOVALUE1
- PFA_MARKER:
-000aef 005e .dw EE_MARKER
-000af0 3da0 .dw XT_EDEFERFETCH
-000af1 3daa .dw XT_EDEFERSTORE
- .include "words/postpone.asm"
-
- ; Compiler
- ; Append the compilation semantics of "name" to the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_POSTPONE:
-000af2 0008 .dw $0008
-000af3 6f70
-000af4 7473
-000af5 6f70
-000af6 656e .db "postpone"
-000af7 0ae8 .dw VE_HEAD
- .set VE_HEAD = VE_POSTPONE
- XT_POSTPONE:
-000af8 3801 .dw DO_COLON
- PFA_POSTPONE:
- .endif
-000af9 05b0 .dw XT_PARSENAME
-000afa 05f3 .dw XT_FORTHRECOGNIZER
-000afb 05fe .dw XT_RECOGNIZE
-000afc 38b1 .dw XT_DUP
-000afd 38ff .dw XT_TO_R
-000afe 01c6 .dw XT_ICELLPLUS
-000aff 01c6 .dw XT_ICELLPLUS
-000b00 3bcb .dw XT_FETCHI
-000b01 382a .dw XT_EXECUTE
-000b02 38f6 .dw XT_R_FROM
-000b03 01c6 .dw XT_ICELLPLUS
-000b04 3bcb .dw XT_FETCHI
-000b05 075c .dw XT_COMMA
-000b06 3820 .dw XT_EXIT
- .endif
- .include "words/2r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_2R_FETCH:
-000b07 ff03 .dw $ff03
-000b08 7232
-000b09 0040 .db "2r@",0
-000b0a 0af2 .dw VE_HEAD
- .set VE_HEAD = VE_2R_FETCH
- XT_2R_FETCH:
-000b0b 0b0c .dw PFA_2R_FETCH
- PFA_2R_FETCH:
-000b0c 939a
-000b0d 938a savetos
-000b0e 91ef pop zl
-000b0f 91ff pop zh
-000b10 918f pop tosl
-000b11 919f pop tosh
-000b12 939f push tosh
-000b13 938f push tosl
-000b14 93ff push zh
-000b15 93ef push zl
-000b16 939a
-000b17 938a savetos
-000b18 01cf movw tosl, zl
-000b19 940c 3805 jmp_ DO_NEXT
-
- .set DPSTART = pc
- .if(pc>AMFORTH_RO_SEG)
- .endif
-
- .org AMFORTH_RO_SEG
- .include "amforth-interpreter.asm"
-
-
- DO_COLON:
-003801 93bf push XH
-003802 93af push XL ; PUSH IP
-003803 01db movw XL, wl
-003804 9611 adiw xl, 1
- DO_NEXT:
- .if WANT_INTERRUPTS == 1
-003805 14b2 cp isrflag, zerol
-003806 f469 brne DO_INTERRUPT
- .endif
-003807 01fd movw zl, XL ; READ IP
-003808 0fee
-003809 1fff
-00380a 9165
-00380b 9175 readflashcell wl, wh
-00380c 9611 adiw XL, 1 ; INC IP
-
- DO_EXECUTE:
-00380d 01fb movw zl, wl
-00380e 0fee
-00380f 1fff
-003810 9105
-003811 9115 readflashcell temp0,temp1
-003812 01f8 movw zl, temp0
-003813 9409 ijmp
-
- .if WANT_INTERRUPTS == 1
- DO_INTERRUPT:
- ; here we deal with interrupts the forth way
-003814 939a
-003815 938a savetos
-003816 2d8b mov tosl, isrflag
-003817 2799 clr tosh
-003818 24bb clr isrflag
-003819 ec60 ldi wl, LOW(XT_ISREXEC)
-00381a e37c ldi wh, HIGH(XT_ISREXEC)
-00381b cff1 rjmp DO_EXECUTE
- .include "dict/nrww.inc"
-
- ; section together with the forth inner interpreter
-
- .include "words/exit.asm"
-
- ; Compiler
- ; end of current colon word
- VE_EXIT:
-00381c ff04 .dw $ff04
-00381d 7865
-00381e 7469 .db "exit"
-00381f 0b07 .dw VE_HEAD
- .set VE_HEAD = VE_EXIT
- XT_EXIT:
-003820 3821 .dw PFA_EXIT
- PFA_EXIT:
-003821 91af pop XL
-003822 91bf pop XH
-003823 cfe1 jmp_ DO_NEXT
- .include "words/execute.asm"
-
- ; System
- ; execute XT
- VE_EXECUTE:
-003824 ff07 .dw $ff07
-003825 7865
-003826 6365
-003827 7475
-003828 0065 .db "execute",0
-003829 381c .dw VE_HEAD
- .set VE_HEAD = VE_EXECUTE
- XT_EXECUTE:
-00382a 382b .dw PFA_EXECUTE
- PFA_EXECUTE:
-00382b 01bc movw wl, tosl
-00382c 9189
-00382d 9199 loadtos
-00382e cfde jmp_ DO_EXECUTE
- .include "words/dobranch.asm"
-
- ; System
- ; runtime of branch
- ;VE_DOBRANCH:
- ; .dw $ff08
- ; .db "(branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOBRANCH
- XT_DOBRANCH:
-00382f 3830 .dw PFA_DOBRANCH
- PFA_DOBRANCH:
-003830 01fd movw zl, XL
-003831 0fee
-003832 1fff
-003833 91a5
-003834 91b5 readflashcell XL,XH
-003835 cfcf jmp_ DO_NEXT
- .include "words/docondbranch.asm"
-
- ; System
- ; runtime of ?branch
- ;VE_DOCONDBRANCH:
- ; .dw $ff09
- ; .db "(?branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONDBRANCH
- XT_DOCONDBRANCH:
-003836 3837 .dw PFA_DOCONDBRANCH
- PFA_DOCONDBRANCH:
-003837 2b98 or tosh, tosl
-003838 9189
-003839 9199 loadtos
-00383a f3a9 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch
-00383b 9611 adiw XL, 1
-00383c cfc8 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/doliteral.asm"
-
- ; System
- ; runtime of literal
- ;VE_DOLITERAL:
- ; .dw $ff09
- ; .db "(literal)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLITERAL
- XT_DOLITERAL:
-00383d 383e .dw PFA_DOLITERAL
- PFA_DOLITERAL:
-00383e 939a
-00383f 938a savetos
-003840 01fd movw zl, xl
-003841 0fee
-003842 1fff
-003843 9185
-003844 9195 readflashcell tosl,tosh
-003845 9611 adiw xl, 1
-003846 cfbe jmp_ DO_NEXT
-
- .include "words/dovariable.asm"
-
- ; System
- ; puts content of parameter field (1 cell) to TOS
- ;VE_DOVARIABLE:
- ; .dw $ff0a
- ; .db "(variable)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOVARIABLE
- XT_DOVARIABLE:
-003847 3848 .dw PFA_DOVARIABLE
- PFA_DOVARIABLE:
-003848 939a
-003849 938a savetos
-00384a 01fb movw zl, wl
-00384b 9631 adiw zl,1
-00384c 0fee
-00384d 1fff
-00384e 9185
-00384f 9195 readflashcell tosl,tosh
-003850 cfb4 jmp_ DO_NEXT
- .include "words/doconstant.asm"
-
- ; System
- ; place data field address on TOS
- ;VE_DOCONSTANT:
- ; .dw $ff0a
- ; .db "(constant)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONSTANT
- XT_DOCONSTANT:
-003851 3852 .dw PFA_DOCONSTANT
- PFA_DOCONSTANT:
-003852 939a
-003853 938a savetos
-003854 01cb movw tosl, wl
-003855 9601 adiw tosl, 1
-003856 cfae jmp_ DO_NEXT
- .include "words/douser.asm"
-
- ; System
- ; runtime part of user
- ;VE_DOUSER:
- ; .dw $ff06
- ; .db "(user)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOUSER
- XT_DOUSER:
-003857 3858 .dw PFA_DOUSER
- PFA_DOUSER:
-003858 939a
-003859 938a savetos
-00385a 01fb movw zl, wl
-00385b 9631 adiw zl, 1
-00385c 0fee
-00385d 1fff
-00385e 9185
-00385f 9195 readflashcell tosl,tosh
-003860 0d84 add tosl, upl
-003861 1d95 adc tosh, uph
-003862 cfa2 jmp_ DO_NEXT
- .include "words/do-value.asm"
-
- ; System
- ; runtime of value
- VE_DOVALUE:
-003863 ff07 .dw $ff07
-003864 7628
-003865 6c61
-003866 6575
-003867 0029 .db "(value)", 0
-003868 3824 .dw VE_HEAD
- .set VE_HEAD = VE_DOVALUE
- XT_DOVALUE:
-003869 3801 .dw DO_COLON
- PFA_DOVALUE:
-00386a 072e .dw XT_DOCREATE
-00386b 088e .dw XT_REVEAL
-00386c 0751 .dw XT_COMPILE
-00386d 386f .dw PFA_DOVALUE1
-00386e 3820 .dw XT_EXIT
- PFA_DOVALUE1:
-00386f 940e 08a7 call_ DO_DODOES
-003871 38b1 .dw XT_DUP
-003872 01c6 .dw XT_ICELLPLUS
-003873 3bcb .dw XT_FETCHI
-003874 382a .dw XT_EXECUTE
-003875 3820 .dw XT_EXIT
-
- ; : (value) <builds does> dup icell+ @i execute ;
- .include "words/fetch.asm"
-
- ; Memory
- ; read 1 cell from RAM address
- VE_FETCH:
-003876 ff01 .dw $ff01
-003877 0040 .db "@",0
-003878 3863 .dw VE_HEAD
- .set VE_HEAD = VE_FETCH
- XT_FETCH:
-003879 387a .dw PFA_FETCH
- PFA_FETCH:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHRAM:
-00387a 01fc movw zl, tosl
- ; low byte is read before the high byte
-00387b 9181 ld tosl, z+
-00387c 9191 ld tosh, z+
-00387d cf87 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store.asm"
-
- ; Memory
- ; write n to RAM memory at addr, low byte first
- VE_STORE:
-00387e ff01 .dw $ff01
-00387f 0021 .db "!",0
-003880 3876 .dw VE_HEAD
- .set VE_HEAD = VE_STORE
- XT_STORE:
-003881 3882 .dw PFA_STORE
- PFA_STORE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STORERAM:
-003882 01fc movw zl, tosl
-003883 9189
-003884 9199 loadtos
- ; the high byte is written before the low byte
-003885 8391 std Z+1, tosh
-003886 8380 std Z+0, tosl
-003887 9189
-003888 9199 loadtos
-003889 cf7b jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/cstore.asm"
-
- ; Memory
- ; store a single byte to RAM address
- VE_CSTORE:
-00388a ff02 .dw $ff02
-00388b 2163 .db "c!"
-00388c 387e .dw VE_HEAD
- .set VE_HEAD = VE_CSTORE
- XT_CSTORE:
-00388d 388e .dw PFA_CSTORE
- PFA_CSTORE:
-00388e 01fc movw zl, tosl
-00388f 9189
-003890 9199 loadtos
-003891 8380 st Z, tosl
-003892 9189
-003893 9199 loadtos
-003894 cf70 jmp_ DO_NEXT
- .include "words/cfetch.asm"
-
- ; Memory
- ; fetch a single byte from memory mapped locations
- VE_CFETCH:
-003895 ff02 .dw $ff02
-003896 4063 .db "c@"
-003897 388a .dw VE_HEAD
- .set VE_HEAD = VE_CFETCH
- XT_CFETCH:
-003898 3899 .dw PFA_CFETCH
- PFA_CFETCH:
-003899 01fc movw zl, tosl
-00389a 2799 clr tosh
-00389b 8180 ld tosl, Z
-00389c cf68 jmp_ DO_NEXT
- .include "words/fetch-u.asm"
-
- ; Memory
- ; read 1 cell from USER area
- VE_FETCHU:
-00389d ff02 .dw $ff02
-00389e 7540 .db "@u"
-00389f 3895 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHU
- XT_FETCHU:
-0038a0 3801 .dw DO_COLON
- PFA_FETCHU:
-0038a1 3b02 .dw XT_UP_FETCH
-0038a2 399d .dw XT_PLUS
-0038a3 3879 .dw XT_FETCH
-0038a4 3820 .dw XT_EXIT
- .include "words/store-u.asm"
-
- ; Memory
- ; write n to USER area at offset
- VE_STOREU:
-0038a5 ff02 .dw $ff02
-0038a6 7521 .db "!u"
-0038a7 389d .dw VE_HEAD
- .set VE_HEAD = VE_STOREU
- XT_STOREU:
-0038a8 3801 .dw DO_COLON
- PFA_STOREU:
-0038a9 3b02 .dw XT_UP_FETCH
-0038aa 399d .dw XT_PLUS
-0038ab 3881 .dw XT_STORE
-0038ac 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/dup.asm"
-
- ; Stack
- ; duplicate TOS
- VE_DUP:
-0038ad ff03 .dw $ff03
-0038ae 7564
-0038af 0070 .db "dup",0
-0038b0 38a5 .dw VE_HEAD
- .set VE_HEAD = VE_DUP
- XT_DUP:
-0038b1 38b2 .dw PFA_DUP
- PFA_DUP:
-0038b2 939a
-0038b3 938a savetos
-0038b4 cf50 jmp_ DO_NEXT
- .include "words/qdup.asm"
-
- ; Stack
- ; duplicate TOS if non-zero
- VE_QDUP:
-0038b5 ff04 .dw $ff04
-0038b6 643f
-0038b7 7075 .db "?dup"
-0038b8 38ad .dw VE_HEAD
- .set VE_HEAD = VE_QDUP
- XT_QDUP:
-0038b9 38ba .dw PFA_QDUP
- PFA_QDUP:
-0038ba 2f08 mov temp0, tosl
-0038bb 2b09 or temp0, tosh
-0038bc f011 breq PFA_QDUP1
-0038bd 939a
-0038be 938a savetos
- PFA_QDUP1:
-0038bf cf45 jmp_ DO_NEXT
- .include "words/swap.asm"
-
- ; Stack
- ; swaps the two top level stack cells
- VE_SWAP:
-0038c0 ff04 .dw $ff04
-0038c1 7773
-0038c2 7061 .db "swap"
-0038c3 38b5 .dw VE_HEAD
- .set VE_HEAD = VE_SWAP
- XT_SWAP:
-0038c4 38c5 .dw PFA_SWAP
- PFA_SWAP:
-0038c5 018c movw temp0, tosl
-0038c6 9189
-0038c7 9199 loadtos
-0038c8 931a st -Y, temp1
-0038c9 930a st -Y, temp0
-0038ca cf3a jmp_ DO_NEXT
- .include "words/over.asm"
-
- ; Stack
- ; Place a copy of x1 on top of the stack
- VE_OVER:
-0038cb ff04 .dw $ff04
-0038cc 766f
-0038cd 7265 .db "over"
-0038ce 38c0 .dw VE_HEAD
- .set VE_HEAD = VE_OVER
- XT_OVER:
-0038cf 38d0 .dw PFA_OVER
- PFA_OVER:
-0038d0 939a
-0038d1 938a savetos
-0038d2 818a ldd tosl, Y+2
-0038d3 819b ldd tosh, Y+3
-
-0038d4 cf30 jmp_ DO_NEXT
- .include "words/drop.asm"
-
- ; Stack
- ; drop TOS
- VE_DROP:
-0038d5 ff04 .dw $ff04
-0038d6 7264
-0038d7 706f .db "drop"
-0038d8 38cb .dw VE_HEAD
- .set VE_HEAD = VE_DROP
- XT_DROP:
-0038d9 38da .dw PFA_DROP
- PFA_DROP:
-0038da 9189
-0038db 9199 loadtos
-0038dc cf28 jmp_ DO_NEXT
- .include "words/rot.asm"
-
- ; Stack
- ; rotate the three top level cells
- VE_ROT:
-0038dd ff03 .dw $ff03
-0038de 6f72
-0038df 0074 .db "rot",0
-0038e0 38d5 .dw VE_HEAD
- .set VE_HEAD = VE_ROT
- XT_ROT:
-0038e1 38e2 .dw PFA_ROT
- PFA_ROT:
-0038e2 018c movw temp0, tosl
-0038e3 9129 ld temp2, Y+
-0038e4 9139 ld temp3, Y+
-0038e5 9189
-0038e6 9199 loadtos
-
-0038e7 933a st -Y, temp3
-0038e8 932a st -Y, temp2
-0038e9 931a st -Y, temp1
-0038ea 930a st -Y, temp0
-
-0038eb cf19 jmp_ DO_NEXT
- .include "words/nip.asm"
-
- ; Stack
- ; Remove Second of Stack
- VE_NIP:
-0038ec ff03 .dw $ff03
-0038ed 696e
-0038ee 0070 .db "nip",0
-0038ef 38dd .dw VE_HEAD
- .set VE_HEAD = VE_NIP
- XT_NIP:
-0038f0 38f1 .dw PFA_NIP
- PFA_NIP:
-0038f1 9622 adiw yl, 2
-0038f2 cf12 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/r_from.asm"
-
- ; Stack
- ; move TOR to TOS
- VE_R_FROM:
-0038f3 ff02 .dw $ff02
-0038f4 3e72 .db "r>"
-0038f5 38ec .dw VE_HEAD
- .set VE_HEAD = VE_R_FROM
- XT_R_FROM:
-0038f6 38f7 .dw PFA_R_FROM
- PFA_R_FROM:
-0038f7 939a
-0038f8 938a savetos
-0038f9 918f pop tosl
-0038fa 919f pop tosh
-0038fb cf09 jmp_ DO_NEXT
- .include "words/to_r.asm"
-
- ; Stack
- ; move TOS to TOR
- VE_TO_R:
-0038fc ff02 .dw $ff02
-0038fd 723e .db ">r"
-0038fe 38f3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_R
- XT_TO_R:
-0038ff 3900 .dw PFA_TO_R
- PFA_TO_R:
-003900 939f push tosh
-003901 938f push tosl
-003902 9189
-003903 9199 loadtos
-003904 cf00 jmp_ DO_NEXT
- .include "words/r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_R_FETCH:
-003905 ff02 .dw $ff02
-003906 4072 .db "r@"
-003907 38fc .dw VE_HEAD
- .set VE_HEAD = VE_R_FETCH
- XT_R_FETCH:
-003908 3909 .dw PFA_R_FETCH
- PFA_R_FETCH:
-003909 939a
-00390a 938a savetos
-00390b 918f pop tosl
-00390c 919f pop tosh
-00390d 939f push tosh
-00390e 938f push tosl
-00390f cef5 jmp_ DO_NEXT
-
-
- .include "words/not-equal.asm"
-
- ; Compare
- ; true if n1 is not equal to n2
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOTEQUAL:
-003910 ff02 .dw $ff02
-003911 3e3c .db "<>"
-003912 3905 .dw VE_HEAD
- .set VE_HEAD = VE_NOTEQUAL
- XT_NOTEQUAL:
-003913 3801 .dw DO_COLON
- PFA_NOTEQUAL:
- .endif
-
-003914 3fdf
-003915 391a
-003916 3820 .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT
- .include "words/equalzero.asm"
-
- ; Compare
- ; compare with 0 (zero)
- VE_ZEROEQUAL:
-003917 ff02 .dw $ff02
-003918 3d30 .db "0="
-003919 3910 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROEQUAL
- XT_ZEROEQUAL:
-00391a 391b .dw PFA_ZEROEQUAL
- PFA_ZEROEQUAL:
-00391b 2b98 or tosh, tosl
-00391c f5d1 brne PFA_ZERO1
-00391d c030 rjmp PFA_TRUE1
- .include "words/lesszero.asm"
-
- ; Compare
- ; compare with zero
- VE_ZEROLESS:
-00391e ff02 .dw $ff02
-00391f 3c30 .db "0<"
-003920 3917 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROLESS
- XT_ZEROLESS:
-003921 3922 .dw PFA_ZEROLESS
- PFA_ZEROLESS:
-003922 fd97 sbrc tosh,7
-003923 c02a rjmp PFA_TRUE1
-003924 c032 rjmp PFA_ZERO1
- .include "words/greaterzero.asm"
-
- ; Compare
- ; true if n1 is greater than 0
- VE_GREATERZERO:
-003925 ff02 .dw $ff02
-003926 3e30 .db "0>"
-003927 391e .dw VE_HEAD
- .set VE_HEAD = VE_GREATERZERO
- XT_GREATERZERO:
-003928 3929 .dw PFA_GREATERZERO
- PFA_GREATERZERO:
-003929 1582 cp tosl, zerol
-00392a 0593 cpc tosh, zeroh
-00392b f15c brlt PFA_ZERO1
-00392c f151 brbs 1, PFA_ZERO1
-00392d c020 rjmp PFA_TRUE1
- .include "words/d-greaterzero.asm"
-
- ; Compare
- ; compares if a double double cell number is greater 0
- VE_DGREATERZERO:
-00392e ff03 .dw $ff03
-00392f 3064
-003930 003e .db "d0>",0
-003931 3925 .dw VE_HEAD
- .set VE_HEAD = VE_DGREATERZERO
- XT_DGREATERZERO:
-003932 3933 .dw PFA_DGREATERZERO
- PFA_DGREATERZERO:
-003933 1582 cp tosl, zerol
-003934 0593 cpc tosh, zeroh
-003935 9189
-003936 9199 loadtos
-003937 0582 cpc tosl, zerol
-003938 0593 cpc tosh, zeroh
-003939 f0ec brlt PFA_ZERO1
-00393a f0e1 brbs 1, PFA_ZERO1
-00393b c012 rjmp PFA_TRUE1
- .include "words/d-lesszero.asm"
-
- ; Compare
- ; compares if a double double cell number is less than 0
- VE_DXT_ZEROLESS:
-00393c ff03 .dw $ff03
-00393d 3064
-00393e 003c .db "d0<",0
-00393f 392e .dw VE_HEAD
- .set VE_HEAD = VE_DXT_ZEROLESS
- XT_DXT_ZEROLESS:
-003940 3941 .dw PFA_DXT_ZEROLESS
- PFA_DXT_ZEROLESS:
-003941 9622 adiw Y,2
-003942 fd97 sbrc tosh,7
-003943 940c 394e jmp PFA_TRUE1
-003945 940c 3957 jmp PFA_ZERO1
-
- .include "words/true.asm"
-
- ; Arithmetics
- ; leaves the value -1 (true) on TOS
- VE_TRUE:
-003947 ff04 .dw $ff04
-003948 7274
-003949 6575 .db "true"
-00394a 393c .dw VE_HEAD
- .set VE_HEAD = VE_TRUE
- XT_TRUE:
-00394b 394c .dw PFA_TRUE
- PFA_TRUE:
-00394c 939a
-00394d 938a savetos
- PFA_TRUE1:
-00394e ef8f ser tosl
-00394f ef9f ser tosh
-003950 ceb4 jmp_ DO_NEXT
- .include "words/zero.asm"
-
- ; Arithmetics
- ; place a value 0 on TOS
- VE_ZERO:
-003951 ff01 .dw $ff01
-003952 0030 .db "0",0
-003953 3947 .dw VE_HEAD
- .set VE_HEAD = VE_ZERO
- XT_ZERO:
-003954 3955 .dw PFA_ZERO
- PFA_ZERO:
-003955 939a
-003956 938a savetos
- PFA_ZERO1:
-003957 01c1 movw tosl, zerol
-003958 ceac jmp_ DO_NEXT
- .include "words/uless.asm"
-
- ; Compare
- ; true if u1 < u2 (unsigned)
- VE_ULESS:
-003959 ff02 .dw $ff02
-00395a 3c75 .db "u<"
-00395b 3951 .dw VE_HEAD
- .set VE_HEAD = VE_ULESS
- XT_ULESS:
-00395c 395d .dw PFA_ULESS
- PFA_ULESS:
-00395d 9129 ld temp2, Y+
-00395e 9139 ld temp3, Y+
-00395f 1782 cp tosl, temp2
-003960 0793 cpc tosh, temp3
-003961 f3a8 brlo PFA_ZERO1
-003962 f3a1 brbs 1, PFA_ZERO1
-003963 cfea jmp_ PFA_TRUE1
- .include "words/u-greater.asm"
-
- ; Compare
- ; true if u1 > u2 (unsigned)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UGREATER:
-003964 ff02 .dw $ff02
-003965 3e75 .db "u>"
-003966 3959 .dw VE_HEAD
- .set VE_HEAD = VE_UGREATER
- XT_UGREATER:
-003967 3801 .dw DO_COLON
- PFA_UGREATER:
- .endif
-003968 38c4 .DW XT_SWAP
-003969 395c .dw XT_ULESS
-00396a 3820 .dw XT_EXIT
- .include "words/less.asm"
-
- ; Compare
- ; true if n1 is less than n2
- VE_LESS:
-00396b ff01 .dw $ff01
-00396c 003c .db "<",0
-00396d 3964 .dw VE_HEAD
- .set VE_HEAD = VE_LESS
- XT_LESS:
-00396e 396f .dw PFA_LESS
- PFA_LESS:
-00396f 9129 ld temp2, Y+
-003970 9139 ld temp3, Y+
-003971 1728 cp temp2, tosl
-003972 0739 cpc temp3, tosh
- PFA_LESSDONE:
-003973 f71c brge PFA_ZERO1
-003974 cfd9 rjmp PFA_TRUE1
- .include "words/greater.asm"
-
- ; Compare
- ; flag is true if n1 is greater than n2
- VE_GREATER:
-003975 ff01 .dw $ff01
-003976 003e .db ">",0
-003977 396b .dw VE_HEAD
- .set VE_HEAD = VE_GREATER
- XT_GREATER:
-003978 3979 .dw PFA_GREATER
- PFA_GREATER:
-003979 9129 ld temp2, Y+
-00397a 9139 ld temp3, Y+
-00397b 1728 cp temp2, tosl
-00397c 0739 cpc temp3, tosh
- PFA_GREATERDONE:
-00397d f2cc brlt PFA_ZERO1
-00397e f2c1 brbs 1, PFA_ZERO1
-00397f cfce rjmp PFA_TRUE1
-
- .include "words/log2.asm"
-
- ; Arithmetics
- ; logarithm to base 2 or highest set bitnumber
- VE_LOG2:
-003980 ff04 .dw $ff04
-003981 6f6c
-003982 3267 .db "log2"
-003983 3975 .dw VE_HEAD
- .set VE_HEAD = VE_LOG2
- XT_LOG2:
-003984 3985 .dw PFA_LOG2
- PFA_LOG2:
-003985 01fc movw zl, tosl
-003986 2799 clr tosh
-003987 e180 ldi tosl, 16
- PFA_LOG2_1:
-003988 958a dec tosl
-003989 f022 brmi PFA_LOG2_2 ; wrong data
-00398a 0fee lsl zl
-00398b 1fff rol zh
-00398c f7d8 brcc PFA_LOG2_1
-00398d ce77 jmp_ DO_NEXT
-
- PFA_LOG2_2:
-00398e 959a dec tosh
-00398f ce75 jmp_ DO_NEXT
- .include "words/minus.asm"
-
- ; Arithmetics
- ; subtract n2 from n1
- VE_MINUS:
-003990 ff01 .dw $ff01
-003991 002d .db "-",0
-003992 3980 .dw VE_HEAD
- .set VE_HEAD = VE_MINUS
- XT_MINUS:
-003993 3994 .dw PFA_MINUS
- PFA_MINUS:
-003994 9109 ld temp0, Y+
-003995 9119 ld temp1, Y+
-003996 1b08 sub temp0, tosl
-003997 0b19 sbc temp1, tosh
-003998 01c8 movw tosl, temp0
-003999 ce6b jmp_ DO_NEXT
- .include "words/plus.asm"
-
- ; Arithmetics
- ; add n1 and n2
- VE_PLUS:
-00399a ff01 .dw $ff01
-00399b 002b .db "+",0
-00399c 3990 .dw VE_HEAD
- .set VE_HEAD = VE_PLUS
- XT_PLUS:
-00399d 399e .dw PFA_PLUS
- PFA_PLUS:
-00399e 9109 ld temp0, Y+
-00399f 9119 ld temp1, Y+
-0039a0 0f80 add tosl, temp0
-0039a1 1f91 adc tosh, temp1
-0039a2 ce62 jmp_ DO_NEXT
- .include "words/mstar.asm"
-
- ; Arithmetics
- ; multiply 2 cells to a double cell
- VE_MSTAR:
-0039a3 ff02 .dw $ff02
-0039a4 2a6d .db "m*"
-0039a5 399a .dw VE_HEAD
- .set VE_HEAD = VE_MSTAR
- XT_MSTAR:
-0039a6 39a7 .dw PFA_MSTAR
- PFA_MSTAR:
-0039a7 018c movw temp0, tosl
-0039a8 9189
-0039a9 9199 loadtos
-0039aa 019c movw temp2, tosl
- ; high cell ah*bh
-0039ab 0231 muls temp3, temp1
-0039ac 0170 movw temp4, r0
- ; low cell al*bl
-0039ad 9f20 mul temp2, temp0
-0039ae 01c0 movw tosl, r0
- ; signed ah*bl
-0039af 0330 mulsu temp3, temp0
-0039b0 08f3 sbc temp5, zeroh
-0039b1 0d90 add tosh, r0
-0039b2 1ce1 adc temp4, r1
-0039b3 1cf3 adc temp5, zeroh
-
- ; signed al*bh
-0039b4 0312 mulsu temp1, temp2
-0039b5 08f3 sbc temp5, zeroh
-0039b6 0d90 add tosh, r0
-0039b7 1ce1 adc temp4, r1
-0039b8 1cf3 adc temp5, zeroh
-
-0039b9 939a
-0039ba 938a savetos
-0039bb 01c7 movw tosl, temp4
-0039bc ce48 jmp_ DO_NEXT
- .include "words/umslashmod.asm"
-
- ; Arithmetics
- ; unsigned division ud / u2 with remainder
- VE_UMSLASHMOD:
-0039bd ff06 .dw $ff06
-0039be 6d75
-0039bf 6d2f
-0039c0 646f .db "um/mod"
-0039c1 39a3 .dw VE_HEAD
- .set VE_HEAD = VE_UMSLASHMOD
- XT_UMSLASHMOD:
-0039c2 39c3 .dw PFA_UMSLASHMOD
- PFA_UMSLASHMOD:
-0039c3 017c movw temp4, tosl
-
-0039c4 9129 ld temp2, Y+
-0039c5 9139 ld temp3, Y+
-
-0039c6 9109 ld temp0, Y+
-0039c7 9119 ld temp1, Y+
-
- ;; unsigned 32/16 -> 16r16 divide
-
- PFA_UMSLASHMODmod:
-
- ; set loop counter
-0039c8 e140 ldi temp6,$10
-
- PFA_UMSLASHMODmod_loop:
- ; shift left, saving high bit
-0039c9 2755 clr temp7
-0039ca 0f00 lsl temp0
-0039cb 1f11 rol temp1
-0039cc 1f22 rol temp2
-0039cd 1f33 rol temp3
-0039ce 1f55 rol temp7
-
- ; try subtracting divisor
-0039cf 152e cp temp2, temp4
-0039d0 053f cpc temp3, temp5
-0039d1 0552 cpc temp7,zerol
-
-0039d2 f018 brcs PFA_UMSLASHMODmod_loop_control
-
- PFA_UMSLASHMODmod_subtract:
- ; dividend is large enough
- ; do the subtraction for real
- ; and set lowest bit
-0039d3 9503 inc temp0
-0039d4 192e sub temp2, temp4
-0039d5 093f sbc temp3, temp5
-
- PFA_UMSLASHMODmod_loop_control:
-0039d6 954a dec temp6
-0039d7 f789 brne PFA_UMSLASHMODmod_loop
-
- PFA_UMSLASHMODmod_done:
- ; put remainder on stack
-0039d8 933a st -Y,temp3
-0039d9 932a st -Y,temp2
-
- ; put quotient on stack
-0039da 01c8 movw tosl, temp0
-0039db ce29 jmp_ DO_NEXT
- .include "words/umstar.asm"
-
- ; Arithmetics
- ; multiply 2 unsigned cells to a double cell
- VE_UMSTAR:
-0039dc ff03 .dw $ff03
-0039dd 6d75
-0039de 002a .db "um*",0
-0039df 39bd .dw VE_HEAD
- .set VE_HEAD = VE_UMSTAR
- XT_UMSTAR:
-0039e0 39e1 .dw PFA_UMSTAR
- PFA_UMSTAR:
-0039e1 018c movw temp0, tosl
-0039e2 9189
-0039e3 9199 loadtos
- ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
- ; low bytes
-0039e4 9f80 mul tosl,temp0
-0039e5 01f0 movw zl, r0
-0039e6 2722 clr temp2
-0039e7 2733 clr temp3
- ; middle bytes
-0039e8 9f90 mul tosh, temp0
-0039e9 0df0 add zh, r0
-0039ea 1d21 adc temp2, r1
-0039eb 1d33 adc temp3, zeroh
-
-0039ec 9f81 mul tosl, temp1
-0039ed 0df0 add zh, r0
-0039ee 1d21 adc temp2, r1
-0039ef 1d33 adc temp3, zeroh
-
-0039f0 9f91 mul tosh, temp1
-0039f1 0d20 add temp2, r0
-0039f2 1d31 adc temp3, r1
-0039f3 01cf movw tosl, zl
-0039f4 939a
-0039f5 938a savetos
-0039f6 01c9 movw tosl, temp2
-0039f7 ce0d jmp_ DO_NEXT
-
- .include "words/invert.asm"
-
- ; Arithmetics
- ; 1-complement of TOS
- VE_INVERT:
-0039f8 ff06 .dw $ff06
-0039f9 6e69
-0039fa 6576
-0039fb 7472 .db "invert"
-0039fc 39dc .dw VE_HEAD
- .set VE_HEAD = VE_INVERT
- XT_INVERT:
-0039fd 39fe .dw PFA_INVERT
- PFA_INVERT:
-0039fe 9580 com tosl
-0039ff 9590 com tosh
-003a00 ce04 jmp_ DO_NEXT
- .include "words/2slash.asm"
-
- ; Arithmetics
- ; arithmetic shift right
- VE_2SLASH:
-003a01 ff02 .dw $ff02
-003a02 2f32 .db "2/"
-003a03 39f8 .dw VE_HEAD
- .set VE_HEAD = VE_2SLASH
- XT_2SLASH:
-003a04 3a05 .dw PFA_2SLASH
- PFA_2SLASH:
-003a05 9595 asr tosh
-003a06 9587 ror tosl
-003a07 cdfd jmp_ DO_NEXT
- .include "words/2star.asm"
-
- ; Arithmetics
- ; arithmetic shift left, filling with zero
- VE_2STAR:
-003a08 ff02 .dw $ff02
-003a09 2a32 .db "2*"
-003a0a 3a01 .dw VE_HEAD
- .set VE_HEAD = VE_2STAR
- XT_2STAR:
-003a0b 3a0c .dw PFA_2STAR
- PFA_2STAR:
-003a0c 0f88 lsl tosl
-003a0d 1f99 rol tosh
-003a0e cdf6 jmp_ DO_NEXT
- .include "words/and.asm"
-
- ; Logic
- ; bitwise and
- VE_AND:
-003a0f ff03 .dw $ff03
-003a10 6e61
-003a11 0064 .db "and",0
-003a12 3a08 .dw VE_HEAD
- .set VE_HEAD = VE_AND
- XT_AND:
-003a13 3a14 .dw PFA_AND
- PFA_AND:
-003a14 9109 ld temp0, Y+
-003a15 9119 ld temp1, Y+
-003a16 2380 and tosl, temp0
-003a17 2391 and tosh, temp1
-003a18 cdec jmp_ DO_NEXT
- .include "words/or.asm"
-
- ; Logic
- ; logical or
- VE_OR:
-003a19 ff02 .dw $ff02
-003a1a 726f .db "or"
-003a1b 3a0f .dw VE_HEAD
- .set VE_HEAD = VE_OR
- XT_OR:
-003a1c 3a1d .dw PFA_OR
- PFA_OR:
-003a1d 9109 ld temp0, Y+
-003a1e 9119 ld temp1, Y+
-003a1f 2b80 or tosl, temp0
-003a20 2b91 or tosh, temp1
-003a21 cde3 jmp_ DO_NEXT
-
- .include "words/xor.asm"
-
- ; Logic
- ; exclusive or
- VE_XOR:
-003a22 ff03 .dw $ff03
-003a23 6f78
-003a24 0072 .db "xor",0
-003a25 3a19 .dw VE_HEAD
- .set VE_HEAD = VE_XOR
- XT_XOR:
-003a26 3a27 .dw PFA_XOR
- PFA_XOR:
-003a27 9109 ld temp0, Y+
-003a28 9119 ld temp1, Y+
-003a29 2780 eor tosl, temp0
-003a2a 2791 eor tosh, temp1
-003a2b cdd9 jmp_ DO_NEXT
-
- .include "words/1plus.asm"
-
- ; Arithmetics
- ; optimized increment
- VE_1PLUS:
-003a2c ff02 .dw $ff02
-003a2d 2b31 .db "1+"
-003a2e 3a22 .dw VE_HEAD
- .set VE_HEAD = VE_1PLUS
- XT_1PLUS:
-003a2f 3a30 .dw PFA_1PLUS
- PFA_1PLUS:
-003a30 9601 adiw tosl,1
-003a31 cdd3 jmp_ DO_NEXT
- .include "words/1minus.asm"
-
- ; Arithmetics
- ; optimized decrement
- VE_1MINUS:
-003a32 ff02 .dw $ff02
-003a33 2d31 .db "1-"
-003a34 3a2c .dw VE_HEAD
- .set VE_HEAD = VE_1MINUS
- XT_1MINUS:
-003a35 3a36 .dw PFA_1MINUS
- PFA_1MINUS:
-003a36 9701 sbiw tosl, 1
-003a37 cdcd jmp_ DO_NEXT
- .include "words/q-negate.asm"
-
- ; 0< IF NEGATE THEN ; ...a common factor
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QNEGATE:
-003a38 ff07 .dw $ff07
-003a39 6e3f
-003a3a 6765
-003a3b 7461
-../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte
-003a3c 0065 .db "?negate"
-003a3d 3a32 .dw VE_HEAD
- .set VE_HEAD = VE_QNEGATE
- XT_QNEGATE:
-003a3e 3801 .dw DO_COLON
- PFA_QNEGATE:
-
- .endif
-003a3f 3921
-003a40 3836 .DW XT_ZEROLESS,XT_DOCONDBRANCH
-003a41 3a43 DEST(QNEG1)
-003a42 3e27 .DW XT_NEGATE
-003a43 3820 QNEG1: .DW XT_EXIT
- .include "words/lshift.asm"
-
- ; Arithmetics
- ; logically shift n1 left n2 times
- VE_LSHIFT:
-003a44 ff06 .dw $ff06
-003a45 736c
-003a46 6968
-003a47 7466 .db "lshift"
-003a48 3a38 .dw VE_HEAD
- .set VE_HEAD = VE_LSHIFT
- XT_LSHIFT:
-003a49 3a4a .dw PFA_LSHIFT
- PFA_LSHIFT:
-003a4a 01fc movw zl, tosl
-003a4b 9189
-003a4c 9199 loadtos
- PFA_LSHIFT1:
-003a4d 9731 sbiw zl, 1
-003a4e f01a brmi PFA_LSHIFT2
-003a4f 0f88 lsl tosl
-003a50 1f99 rol tosh
-003a51 cffb rjmp PFA_LSHIFT1
- PFA_LSHIFT2:
-003a52 cdb2 jmp_ DO_NEXT
-
- .include "words/rshift.asm"
-
- ; Arithmetics
- ; shift n1 n2-times logically right
- VE_RSHIFT:
-003a53 ff06 .dw $ff06
-003a54 7372
-003a55 6968
-003a56 7466 .db "rshift"
-003a57 3a44 .dw VE_HEAD
- .set VE_HEAD = VE_RSHIFT
- XT_RSHIFT:
-003a58 3a59 .dw PFA_RSHIFT
- PFA_RSHIFT:
-003a59 01fc movw zl, tosl
-003a5a 9189
-003a5b 9199 loadtos
- PFA_RSHIFT1:
-003a5c 9731 sbiw zl, 1
-003a5d f01a brmi PFA_RSHIFT2
-003a5e 9596 lsr tosh
-003a5f 9587 ror tosl
-003a60 cffb rjmp PFA_RSHIFT1
- PFA_RSHIFT2:
-003a61 cda3 jmp_ DO_NEXT
-
- .include "words/plusstore.asm"
-
- ; Arithmetics
- ; add n to content of RAM address a-addr
- VE_PLUSSTORE:
-003a62 ff02 .dw $ff02
-003a63 212b .db "+!"
-003a64 3a53 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSSTORE
- XT_PLUSSTORE:
-003a65 3a66 .dw PFA_PLUSSTORE
- PFA_PLUSSTORE:
-003a66 01fc movw zl, tosl
-003a67 9189
-003a68 9199 loadtos
-003a69 8120 ldd temp2, Z+0
-003a6a 8131 ldd temp3, Z+1
-003a6b 0f82 add tosl, temp2
-003a6c 1f93 adc tosh, temp3
-003a6d 8380 std Z+0, tosl
-003a6e 8391 std Z+1, tosh
-003a6f 9189
-003a70 9199 loadtos
-003a71 cd93 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/rpfetch.asm"
-
- ; Stack
- ; current return stack pointer address
- VE_RP_FETCH:
-003a72 ff03 .dw $ff03
-003a73 7072
-003a74 0040 .db "rp@",0
-003a75 3a62 .dw VE_HEAD
- .set VE_HEAD = VE_RP_FETCH
- XT_RP_FETCH:
-003a76 3a77 .dw PFA_RP_FETCH
- PFA_RP_FETCH:
-003a77 939a
-003a78 938a savetos
-003a79 b78d in tosl, SPL
-003a7a b79e in tosh, SPH
-003a7b cd89 jmp_ DO_NEXT
- .include "words/rpstore.asm"
-
- ; Stack
- ; set return stack pointer
- VE_RP_STORE:
-003a7c ff03 .dw $ff03
-003a7d 7072
-003a7e 0021 .db "rp!",0
-003a7f 3a72 .dw VE_HEAD
- .set VE_HEAD = VE_RP_STORE
- XT_RP_STORE:
-003a80 3a81 .dw PFA_RP_STORE
- PFA_RP_STORE:
-003a81 b72f in temp2, SREG
-003a82 94f8 cli
-003a83 bf8d out SPL, tosl
-003a84 bf9e out SPH, tosh
-003a85 bf2f out SREG, temp2
-003a86 9189
-003a87 9199 loadtos
-003a88 cd7c jmp_ DO_NEXT
- .include "words/spfetch.asm"
-
- ; Stack
- ; current data stack pointer
- VE_SP_FETCH:
-003a89 ff03 .dw $ff03
-003a8a 7073
-003a8b 0040 .db "sp@",0
-003a8c 3a7c .dw VE_HEAD
- .set VE_HEAD = VE_SP_FETCH
- XT_SP_FETCH:
-003a8d 3a8e .dw PFA_SP_FETCH
- PFA_SP_FETCH:
-003a8e 939a
-003a8f 938a savetos
-003a90 01ce movw tosl, yl
-003a91 cd73 jmp_ DO_NEXT
- .include "words/spstore.asm"
-
- ; Stack
- ; set data stack pointer to addr
- VE_SP_STORE:
-003a92 ff03 .dw $ff03
-003a93 7073
-003a94 0021 .db "sp!",0
-003a95 3a89 .dw VE_HEAD
- .set VE_HEAD = VE_SP_STORE
- XT_SP_STORE:
-003a96 3a97 .dw PFA_SP_STORE
- PFA_SP_STORE:
-003a97 01ec movw yl, tosl
-003a98 9189
-003a99 9199 loadtos
-003a9a cd6a jmp_ DO_NEXT
-
- .include "words/dodo.asm"
-
- ; System
- ; runtime of do
- ;VE_DODO:
- ; .dw $ff04
- ; .db "(do)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DODO
- XT_DODO:
-003a9b 3a9c .dw PFA_DODO
- PFA_DODO:
-003a9c 9129 ld temp2, Y+
-003a9d 9139 ld temp3, Y+ ; limit
- PFA_DODO1:
-003a9e e8e0 ldi zl, $80
-003a9f 0f3e add temp3, zl
-003aa0 1b82 sub tosl, temp2
-003aa1 0b93 sbc tosh, temp3
-
-003aa2 933f push temp3
-003aa3 932f push temp2 ; limit ( --> limit + $8000)
-003aa4 939f push tosh
-003aa5 938f push tosl ; start -> index ( --> index - (limit - $8000)
-003aa6 9189
-003aa7 9199 loadtos
-003aa8 cd5c jmp_ DO_NEXT
- .include "words/i.asm"
-
- ; Compiler
- ; current loop counter
- VE_I:
-003aa9 ff01 .dw $FF01
-003aaa 0069 .db "i",0
-003aab 3a92 .dw VE_HEAD
- .set VE_HEAD = VE_I
- XT_I:
-003aac 3aad .dw PFA_I
- PFA_I:
-003aad 939a
-003aae 938a savetos
-003aaf 918f pop tosl
-003ab0 919f pop tosh ; index
-003ab1 91ef pop zl
-003ab2 91ff pop zh ; limit
-003ab3 93ff push zh
-003ab4 93ef push zl
-003ab5 939f push tosh
-003ab6 938f push tosl
-003ab7 0f8e add tosl, zl
-003ab8 1f9f adc tosh, zh
-003ab9 cd4b jmp_ DO_NEXT
- .include "words/doplusloop.asm"
-
- ; System
- ; runtime of +loop
- ;VE_DOPLUSLOOP:
- ; .dw $ff07
- ; .db "(+loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOPLUSLOOP
- XT_DOPLUSLOOP:
-003aba 3abb .dw PFA_DOPLUSLOOP
- PFA_DOPLUSLOOP:
-003abb 91ef pop zl
-003abc 91ff pop zh
-003abd 0fe8 add zl, tosl
-003abe 1ff9 adc zh, tosh
-003abf 9189
-003ac0 9199 loadtos
-003ac1 f01b brvs PFA_DOPLUSLOOP_LEAVE
- ; next cycle
- PFA_DOPLUSLOOP_NEXT:
- ; next iteration
-003ac2 93ff push zh
-003ac3 93ef push zl
-003ac4 cd6b rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
- PFA_DOPLUSLOOP_LEAVE:
-003ac5 910f pop temp0
-003ac6 911f pop temp1 ; remove limit
-003ac7 9611 adiw xl, 1 ; skip branch-back address
-003ac8 cd3c jmp_ DO_NEXT
- .include "words/doloop.asm"
-
- ; System
- ; runtime of loop
- ;VE_DOLOOP:
- ; .dw $ff06
- ; .db "(loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLOOP
- XT_DOLOOP:
-003ac9 3aca .dw PFA_DOLOOP
- PFA_DOLOOP:
-003aca 91ef pop zl
-003acb 91ff pop zh
-003acc 9631 adiw zl,1
-003acd f3bb brvs PFA_DOPLUSLOOP_LEAVE
-003ace cff3 jmp_ PFA_DOPLUSLOOP_NEXT
- .include "words/unloop.asm"
-
- ; Compiler
- ; remove loop-sys, exit the loop and continue execution after it
- VE_UNLOOP:
-003acf ff06 .dw $ff06
-003ad0 6e75
-003ad1 6f6c
-003ad2 706f .db "unloop"
-003ad3 3aa9 .dw VE_HEAD
- .set VE_HEAD = VE_UNLOOP
- XT_UNLOOP:
-003ad4 3ad5 .dw PFA_UNLOOP
- PFA_UNLOOP:
-003ad5 911f pop temp1
-003ad6 910f pop temp0
-003ad7 911f pop temp1
-003ad8 910f pop temp0
-003ad9 cd2b jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .include "words/cmove_g.asm"
-
- ; Memory
- ; copy data in RAM from higher to lower addresses.
- VE_CMOVE_G:
-003ada ff06 .dw $ff06
-003adb 6d63
-003adc 766f
-003add 3e65 .db "cmove>"
-003ade 3acf .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE_G
- XT_CMOVE_G:
-003adf 3ae0 .dw PFA_CMOVE_G
- PFA_CMOVE_G:
-003ae0 93bf push xh
-003ae1 93af push xl
-003ae2 91e9 ld zl, Y+
-003ae3 91f9 ld zh, Y+ ; addr-to
-003ae4 91a9 ld xl, Y+
-003ae5 91b9 ld xh, Y+ ; addr-from
-003ae6 2f09 mov temp0, tosh
-003ae7 2b08 or temp0, tosl
-003ae8 f041 brbs 1, PFA_CMOVE_G1
-003ae9 0fe8 add zl, tosl
-003aea 1ff9 adc zh, tosh
-003aeb 0fa8 add xl, tosl
-003aec 1fb9 adc xh, tosh
- PFA_CMOVE_G2:
-003aed 911e ld temp1, -X
-003aee 9312 st -Z, temp1
-003aef 9701 sbiw tosl, 1
-003af0 f7e1 brbc 1, PFA_CMOVE_G2
- PFA_CMOVE_G1:
-003af1 91af pop xl
-003af2 91bf pop xh
-003af3 9189
-003af4 9199 loadtos
-003af5 cd0f jmp_ DO_NEXT
- .include "words/byteswap.asm"
-
- ; Arithmetics
- ; exchange the bytes of the TOS
- VE_BYTESWAP:
-003af6 ff02 .dw $ff02
-003af7 3c3e .db "><"
-003af8 3ada .dw VE_HEAD
- .set VE_HEAD = VE_BYTESWAP
- XT_BYTESWAP:
-003af9 3afa .dw PFA_BYTESWAP
- PFA_BYTESWAP:
-003afa 2f09 mov temp0, tosh
-003afb 2f98 mov tosh, tosl
-003afc 2f80 mov tosl, temp0
-003afd cd07 jmp_ DO_NEXT
- .include "words/up.asm"
-
- ; System Variable
- ; get user area pointer
- VE_UP_FETCH:
-003afe ff03 .dw $ff03
-003aff 7075
-003b00 0040 .db "up@",0
-003b01 3af6 .dw VE_HEAD
- .set VE_HEAD = VE_UP_FETCH
- XT_UP_FETCH:
-003b02 3b03 .dw PFA_UP_FETCH
- PFA_UP_FETCH:
-003b03 939a
-003b04 938a savetos
-003b05 01c2 movw tosl, upl
-003b06 ccfe jmp_ DO_NEXT
-
- ; ( addr -- )
- ; System Variable
- ; set user area pointer
- VE_UP_STORE:
-003b07 ff03 .dw $ff03
-003b08 7075
-003b09 0021 .db "up!",0
-003b0a 3afe .dw VE_HEAD
- .set VE_HEAD = VE_UP_STORE
- XT_UP_STORE:
-003b0b 3b0c .dw PFA_UP_STORE
- PFA_UP_STORE:
-003b0c 012c movw upl, tosl
-003b0d 9189
-003b0e 9199 loadtos
-003b0f ccf5 jmp_ DO_NEXT
- .include "words/1ms.asm"
-
- ; Time
- ; busy waits (almost) exactly 1 millisecond
- VE_1MS:
-003b10 ff03 .dw $ff03
-003b11 6d31
-003b12 0073 .db "1ms",0
-003b13 3b07 .dw VE_HEAD
- .set VE_HEAD = VE_1MS
- XT_1MS:
-003b14 3b15 .dw PFA_1MS
- PFA_1MS:
-003b15 ede0
-003b16 e0f7
-003b17 9731
-003b18 f7f1 delay 1000
-003b19 cceb jmp_ DO_NEXT
- .include "words/2to_r.asm"
-
- ; Stack
- ; move DTOS to TOR
- VE_2TO_R:
-003b1a ff03 .dw $ff03
-003b1b 3e32
-003b1c 0072 .db "2>r",0
-003b1d 3b10 .dw VE_HEAD
- .set VE_HEAD = VE_2TO_R
- XT_2TO_R:
-003b1e 3b1f .dw PFA_2TO_R
- PFA_2TO_R:
-003b1f 01fc movw zl, tosl
-003b20 9189
-003b21 9199 loadtos
-003b22 939f push tosh
-003b23 938f push tosl
-003b24 93ff push zh
-003b25 93ef push zl
-003b26 9189
-003b27 9199 loadtos
-003b28 ccdc jmp_ DO_NEXT
- .include "words/2r_from.asm"
-
- ; Stack
- ; move DTOR to TOS
- VE_2R_FROM:
-003b29 ff03 .dw $ff03
-003b2a 7232
-003b2b 003e .db "2r>",0
-003b2c 3b1a .dw VE_HEAD
- .set VE_HEAD = VE_2R_FROM
- XT_2R_FROM:
-003b2d 3b2e .dw PFA_2R_FROM
- PFA_2R_FROM:
-003b2e 939a
-003b2f 938a savetos
-003b30 91ef pop zl
-003b31 91ff pop zh
-003b32 918f pop tosl
-003b33 919f pop tosh
-003b34 939a
-003b35 938a savetos
-003b36 01cf movw tosl, zl
-003b37 cccd jmp_ DO_NEXT
-
- .include "words/store-e.asm"
-
- ; Memory
- ; write n (2bytes) to eeprom address
- VE_STOREE:
-003b38 ff02 .dw $ff02
-003b39 6521 .db "!e"
-003b3a 3b29 .dw VE_HEAD
- .set VE_HEAD = VE_STOREE
- XT_STOREE:
-003b3b 3b3c .dw PFA_STOREE
- PFA_STOREE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STOREE0:
-003b3c 01fc movw zl, tosl
-003b3d 9189
-003b3e 9199 loadtos
-003b3f b72f in_ temp2, SREG
-003b40 94f8 cli
-003b41 d028 rcall PFA_FETCHE2
-003b42 b30d in_ temp0, EEDR
-003b43 1708 cp temp0,tosl
-003b44 f009 breq PFA_STOREE3
-003b45 d00b rcall PFA_STOREE1
- PFA_STOREE3:
-003b46 9631 adiw zl,1
-003b47 d022 rcall PFA_FETCHE2
-003b48 b30d in_ temp0, EEDR
-003b49 1709 cp temp0,tosh
-003b4a f011 breq PFA_STOREE4
-003b4b 2f89 mov tosl, tosh
-003b4c d004 rcall PFA_STOREE1
- PFA_STOREE4:
-003b4d bf2f out_ SREG, temp2
-003b4e 9189
-003b4f 9199 loadtos
-003b50 ccb4 jmp_ DO_NEXT
-
- PFA_STOREE1:
-003b51 99e1 sbic EECR, EEPE
-003b52 cffe rjmp PFA_STOREE1
-
- PFA_STOREE2: ; estore_wait_low_spm:
-003b53 b707 in_ temp0, SPMCSR
-003b54 fd00 sbrc temp0,SPMEN
-003b55 cffd rjmp PFA_STOREE2
-
-003b56 bbff out_ EEARH,zh
-003b57 bbee out_ EEARL,zl
-003b58 bb8d out_ EEDR, tosl
-003b59 9ae2 sbi EECR,EEMPE
-003b5a 9ae1 sbi EECR,EEPE
-
-003b5b 9508 ret
- .if WANT_UNIFIED == 1
- .endif
- .include "words/fetch-e.asm"
-
- ; Memory
- ; read 1 cell from eeprom
- VE_FETCHE:
-003b5c ff02 .dw $ff02
-003b5d 6540 .db "@e"
-003b5e 3b38 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHE
- XT_FETCHE:
-003b5f 3b60 .dw PFA_FETCHE
- PFA_FETCHE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHE1:
-003b60 b72f in_ temp2, SREG
-003b61 94f8 cli
-003b62 01fc movw zl, tosl
-003b63 d006 rcall PFA_FETCHE2
-003b64 b38d in_ tosl, EEDR
-
-003b65 9631 adiw zl,1
-
-003b66 d003 rcall PFA_FETCHE2
-003b67 b39d in_ tosh, EEDR
-003b68 bf2f out_ SREG, temp2
-003b69 cc9b jmp_ DO_NEXT
-
- PFA_FETCHE2:
-003b6a 99e1 sbic EECR, EEPE
-003b6b cffe rjmp PFA_FETCHE2
-
-003b6c bbff out_ EEARH,zh
-003b6d bbee out_ EEARL,zl
-
-003b6e 9ae0 sbi EECR,EERE
-003b6f 9508 ret
-
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store-i.asm"
-
- ; System Value
- ; Deferred action to write a single 16bit cell to flash
- VE_STOREI:
-003b70 ff02 .dw $ff02
-003b71 6921 .db "!i"
-003b72 3b5c .dw VE_HEAD
- .set VE_HEAD = VE_STOREI
- XT_STOREI:
-003b73 3dff .dw PFA_DODEFER1
- PFA_STOREI:
-003b74 005c .dw EE_STOREI
-003b75 3da0 .dw XT_EDEFERFETCH
-003b76 3daa .dw XT_EDEFERSTORE
- .if FLASHEND > $10000
- .else
- .include "words/store-i_nrww.asm"
-
- ; Memory
- ; writes n to flash memory using assembly code (code to be placed in boot loader section)
- VE_DO_STOREI_NRWW:
-003b77 ff09 .dw $ff09
-003b78 2128
-003b79 2d69
-003b7a 726e
-003b7b 7777
-003b7c 0029 .db "(!i-nrww)",0
-003b7d 3b70 .dw VE_HEAD
- .set VE_HEAD = VE_DO_STOREI_NRWW
- XT_DO_STOREI:
-003b7e 3b7f .dw PFA_DO_STOREI_NRWW
- PFA_DO_STOREI_NRWW:
- ; store status register
-003b7f b71f in temp1,SREG
-003b80 931f push temp1
-003b81 94f8 cli
-
-003b82 019c movw temp2, tosl ; save the (word) address
-003b83 9189
-003b84 9199 loadtos ; get the new value for the flash cell
-003b85 93af push xl
-003b86 93bf push xh
-003b87 93cf push yl
-003b88 93df push yh
-003b89 d009 rcall DO_STOREI_atmega
-003b8a 91df pop yh
-003b8b 91cf pop yl
-003b8c 91bf pop xh
-003b8d 91af pop xl
- ; finally clear the stack
-003b8e 9189
-003b8f 9199 loadtos
-003b90 911f pop temp1
- ; restore status register (and interrupt enable flag)
-003b91 bf1f out SREG,temp1
-
-003b92 cc72 jmp_ DO_NEXT
-
- ;
- DO_STOREI_atmega:
- ; write data to temp page buffer
- ; use the values in tosl/tosh at the
- ; appropiate place
-003b93 d010 rcall pageload
-
- ; erase page if needed
- ; it is needed if a bit goes from 0 to 1
-003b94 94e0 com temp4
-003b95 94f0 com temp5
-003b96 218e and tosl, temp4
-003b97 219f and tosh, temp5
-003b98 2b98 or tosh, tosl
-003b99 f019 breq DO_STOREI_writepage
-003b9a 01f9 movw zl, temp2
-003b9b e002 ldi temp0,(1<<PGERS)
-003b9c d020 rcall dospm
-
- DO_STOREI_writepage:
- ; write page
-003b9d 01f9 movw zl, temp2
-003b9e e004 ldi temp0,(1<<PGWRT)
-003b9f d01d rcall dospm
-
- ; reenable RWW section
-003ba0 01f9 movw zl, temp2
-003ba1 e100 ldi temp0,(1<<RWWSRE)
-003ba2 d01a rcall dospm
-003ba3 9508 ret
-
- ; load the desired page
- .equ pagemask = ~ ( PAGESIZE - 1 )
- pageload:
-003ba4 01f9 movw zl, temp2
- ; get the beginning of page
-003ba5 7ce0 andi zl,low(pagemask)
-003ba6 7fff andi zh,high(pagemask)
-003ba7 01ef movw y, z
- ; loop counter (in words)
-003ba8 e4a0 ldi xl,low(pagesize)
-003ba9 e0b0 ldi xh,high(pagesize)
- pageload_loop:
- ; we need the current flash value anyways
-003baa 01fe movw z, y
-003bab 0fee
-003bac 1fff
-003bad 9145
-003bae 9155 readflashcell temp6, temp7 ; destroys Z
- ; now check: if Z points to the same cell as temp2/3, we want the new data
-003baf 01fe movw z, y
-003bb0 17e2 cp zl, temp2
-003bb1 07f3 cpc zh, temp3
-003bb2 f011 breq pageload_newdata
-003bb3 010a movw r0, temp6
-003bb4 c002 rjmp pageload_cont
- pageload_newdata:
-003bb5 017a movw temp4, temp6
-003bb6 010c movw r0, tosl
- pageload_cont:
-003bb7 2700 clr temp0
-003bb8 d004 rcall dospm
-003bb9 9621 adiw y, 1
-003bba 9711 sbiw x, 1
-003bbb f771 brne pageload_loop
-
- pageload_done:
-003bbc 9508 ret
-
-
- ;; dospm
- ;;
- ;; execute spm instruction
- ;; temp0 holds the value for SPMCR
-
- dospm:
- dospm_wait_ee:
-003bbd 99e1 sbic EECR, EEPE
-003bbe cffe rjmp dospm_wait_ee
- dospm_wait_spm:
-003bbf b717 in_ temp1, SPMCSR
-003bc0 fd10 sbrc temp1, SPMEN
-003bc1 cffd rjmp dospm_wait_spm
-
- ; turn the word addres into a byte address
-003bc2 0fee
-003bc3 1fff writeflashcell
- ; execute spm
-003bc4 6001 ori temp0, (1<<SPMEN)
-003bc5 bf07 out_ SPMCSR,temp0
-003bc6 95e8 spm
-003bc7 9508 ret
- .endif
- .include "words/fetch-i.asm"
-
- ; Memory
- ; read 1 cell from flash
- VE_FETCHI:
-003bc8 ff02 .dw $ff02
-003bc9 6940 .db "@i"
-003bca 3b77 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHI
- XT_FETCHI:
-003bcb 3bcc .dw PFA_FETCHI
- PFA_FETCHI:
-003bcc 01fc movw zl, tosl
-003bcd 0fee
-003bce 1fff
-003bcf 9185
-003bd0 9195 readflashcell tosl,tosh
-003bd1 cc33 jmp_ DO_NEXT
-
- .if AMFORTH_NRWW_SIZE>8000
- .elif AMFORTH_NRWW_SIZE>4000
- .include "dict/core_4k.inc"
-
- ; in a short distance to DO_NEXT
- .include "words/n_to_r.asm"
-
- ; Stack
- ; move n items from data stack to return stack
- VE_N_TO_R:
-003bd2 ff03 .dw $ff03
-003bd3 3e6e
-003bd4 0072 .db "n>r",0
-003bd5 3bc8 .dw VE_HEAD
- .set VE_HEAD = VE_N_TO_R
- XT_N_TO_R:
-003bd6 3bd7 .dw PFA_N_TO_R
- PFA_N_TO_R:
-003bd7 01fc movw zl, tosl
-003bd8 2f08 mov temp0, tosl
- PFA_N_TO_R1:
-003bd9 9189
-003bda 9199 loadtos
-003bdb 939f push tosh
-003bdc 938f push tosl
-003bdd 950a dec temp0
-003bde f7d1 brne PFA_N_TO_R1
-003bdf 93ef push zl
-003be0 93ff push zh
-003be1 9189
-003be2 9199 loadtos
-003be3 cc21 jmp_ DO_NEXT
- .include "words/n_r_from.asm"
-
- ; Stack
- ; move n items from return stack to data stack
- VE_N_R_FROM:
-003be4 ff03 .dw $ff03
-003be5 726e
-003be6 003e .db "nr>",0
-003be7 3bd2 .dw VE_HEAD
- .set VE_HEAD = VE_N_R_FROM
- XT_N_R_FROM:
-003be8 3be9 .dw PFA_N_R_FROM
- PFA_N_R_FROM:
-003be9 939a
-003bea 938a savetos
-003beb 91ff pop zh
-003bec 91ef pop zl
-003bed 2f0e mov temp0, zl
- PFA_N_R_FROM1:
-003bee 918f pop tosl
-003bef 919f pop tosh
-003bf0 939a
-003bf1 938a savetos
-003bf2 950a dec temp0
-003bf3 f7d1 brne PFA_N_R_FROM1
-003bf4 01cf movw tosl, zl
-003bf5 cc0f jmp_ DO_NEXT
- .include "words/d-2star.asm"
-
- ; Arithmetics
- ; shift a double cell left
- VE_D2STAR:
-003bf6 ff03 .dw $ff03
-003bf7 3264
-003bf8 002a .db "d2*",0
-003bf9 3be4 .dw VE_HEAD
- .set VE_HEAD = VE_D2STAR
- XT_D2STAR:
-003bfa 3bfb .dw PFA_D2STAR
- PFA_D2STAR:
-003bfb 9109 ld temp0, Y+
-003bfc 9119 ld temp1, Y+
-003bfd 0f00 lsl temp0
-003bfe 1f11 rol temp1
-003bff 1f88 rol tosl
-003c00 1f99 rol tosh
-003c01 931a st -Y, temp1
-003c02 930a st -Y, temp0
-003c03 cc01 jmp_ DO_NEXT
- .include "words/d-2slash.asm"
-
- ; Arithmetics
- ; shift a double cell value right
- VE_D2SLASH:
-003c04 ff03 .dw $ff03
-003c05 3264
-003c06 002f .db "d2/",0
-003c07 3bf6 .dw VE_HEAD
- .set VE_HEAD = VE_D2SLASH
- XT_D2SLASH:
-003c08 3c09 .dw PFA_D2SLASH
- PFA_D2SLASH:
-003c09 9109 ld temp0, Y+
-003c0a 9119 ld temp1, Y+
-003c0b 9595 asr tosh
-003c0c 9587 ror tosl
-003c0d 9517 ror temp1
-003c0e 9507 ror temp0
-003c0f 931a st -Y, temp1
-003c10 930a st -Y, temp0
-003c11 cbf3 jmp_ DO_NEXT
- .include "words/d-plus.asm"
-
- ; Arithmetics
- ; add 2 double cell values
- VE_DPLUS:
-003c12 ff02 .dw $ff02
-003c13 2b64 .db "d+"
-003c14 3c04 .dw VE_HEAD
- .set VE_HEAD = VE_DPLUS
- XT_DPLUS:
-003c15 3c16 .dw PFA_DPLUS
- PFA_DPLUS:
-003c16 9129 ld temp2, Y+
-003c17 9139 ld temp3, Y+
-
-003c18 90e9 ld temp4, Y+
-003c19 90f9 ld temp5, Y+
-003c1a 9149 ld temp6, Y+
-003c1b 9159 ld temp7, Y+
-
-003c1c 0f24 add temp2, temp6
-003c1d 1f35 adc temp3, temp7
-003c1e 1d8e adc tosl, temp4
-003c1f 1d9f adc tosh, temp5
-
-003c20 933a st -Y, temp3
-003c21 932a st -Y, temp2
-003c22 cbe2 jmp_ DO_NEXT
- .include "words/d-minus.asm"
-
- ; Arithmetics
- ; subtract d2 from d1
- VE_DMINUS:
-003c23 ff02 .dw $ff02
-003c24 2d64 .db "d-"
-003c25 3c12 .dw VE_HEAD
- .set VE_HEAD = VE_DMINUS
- XT_DMINUS:
-003c26 3c27 .dw PFA_DMINUS
- PFA_DMINUS:
-003c27 9129 ld temp2, Y+
-003c28 9139 ld temp3, Y+
-
-003c29 90e9 ld temp4, Y+
-003c2a 90f9 ld temp5, Y+
-003c2b 9149 ld temp6, Y+
-003c2c 9159 ld temp7, Y+
-
-003c2d 1b42 sub temp6, temp2
-003c2e 0b53 sbc temp7, temp3
-003c2f 0ae8 sbc temp4, tosl
-003c30 0af9 sbc temp5, tosh
-
-003c31 935a st -Y, temp7
-003c32 934a st -Y, temp6
-003c33 01c7 movw tosl, temp4
-003c34 cbd0 jmp_ DO_NEXT
- .include "words/d-invert.asm"
-
- ; Arithmetics
- ; invert all bits in the double cell value
- VE_DINVERT:
-003c35 ff07 .dw $ff07
-003c36 6964
-003c37 766e
-003c38 7265
-003c39 0074 .db "dinvert",0
-003c3a 3c23 .dw VE_HEAD
- .set VE_HEAD = VE_DINVERT
- XT_DINVERT:
-003c3b 3c3c .dw PFA_DINVERT
- PFA_DINVERT:
-003c3c 9109 ld temp0, Y+
-003c3d 9119 ld temp1, Y+
-003c3e 9580 com tosl
-003c3f 9590 com tosh
-003c40 9500 com temp0
-003c41 9510 com temp1
-003c42 931a st -Y, temp1
-003c43 930a st -Y, temp0
-003c44 cbc0 jmp_ DO_NEXT
- .include "words/slashmod.asm"
-
- ; Arithmetics
- ; signed division n1/n2 with remainder and quotient
- VE_SLASHMOD:
-003c45 ff04 .dw $ff04
-003c46 6d2f
-003c47 646f .db "/mod"
-003c48 3c35 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHMOD
- XT_SLASHMOD:
-003c49 3c4a .dw PFA_SLASHMOD
- PFA_SLASHMOD:
-003c4a 019c movw temp2, tosl
-
-003c4b 9109 ld temp0, Y+
-003c4c 9119 ld temp1, Y+
-
-003c4d 2f41 mov temp6,temp1 ;move dividend High to sign register
-003c4e 2743 eor temp6,temp3 ;xor divisor High with sign register
-003c4f ff17 sbrs temp1,7 ;if MSB in dividend set
-003c50 c004 rjmp PFA_SLASHMOD_1
-003c51 9510 com temp1 ; change sign of dividend
-003c52 9500 com temp0
-003c53 5f0f subi temp0,low(-1)
-003c54 4f1f sbci temp1,high(-1)
- PFA_SLASHMOD_1:
-003c55 ff37 sbrs temp3,7 ;if MSB in divisor set
-003c56 c004 rjmp PFA_SLASHMOD_2
-003c57 9530 com temp3 ; change sign of divisor
-003c58 9520 com temp2
-003c59 5f2f subi temp2,low(-1)
-003c5a 4f3f sbci temp3,high(-1)
-003c5b 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte
-003c5c 18ff sub temp5,temp5;clear remainder High byte and carry
-003c5d e151 ldi temp7,17 ;init loop counter
-
-003c5e 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend
-003c5f 1f11 rol temp1
-003c60 955a dec temp7 ;decrement counter
-003c61 f439 brne PFA_SLASHMOD_5 ;if done
-003c62 ff47 sbrs temp6,7 ; if MSB in sign register set
-003c63 c004 rjmp PFA_SLASHMOD_4
-003c64 9510 com temp1 ; change sign of result
-003c65 9500 com temp0
-003c66 5f0f subi temp0,low(-1)
-003c67 4f1f sbci temp1,high(-1)
-003c68 c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return
-003c69 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder
-003c6a 1cff rol temp5
-003c6b 1ae2 sub temp4,temp2 ;remainder = remainder - divisor
-003c6c 0af3 sbc temp5,temp3 ;
-003c6d f420 brcc PFA_SLASHMOD_6 ;if result negative
-003c6e 0ee2 add temp4,temp2 ; restore remainder
-003c6f 1ef3 adc temp5,temp3
-003c70 9488 clc ; clear carry to be shifted into result
-003c71 cfec rjmp PFA_SLASHMOD_3 ;else
-003c72 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result
-003c73 cfea rjmp PFA_SLASHMOD_3
-
- PFA_SLASHMODmod_done:
- ; put remainder on stack
-003c74 92fa st -Y,temp5
-003c75 92ea st -Y,temp4
-
- ; put quotient on stack
-003c76 01c8 movw tosl, temp0
-003c77 cb8d jmp_ DO_NEXT
- .include "words/abs.asm"
-
- ; DUP ?NEGATE ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABS:
-003c78 ff03 .dw $ff03
-003c79 6261
-003c7a 0073 .db "abs",0
-003c7b 3c45 .dw VE_HEAD
- .set VE_HEAD = VE_ABS
- XT_ABS:
-003c7c 3801 .dw DO_COLON
- PFA_ABS:
-
- .endif
-
-003c7d 38b1
-003c7e 3a3e
-003c7f 3820 .DW XT_DUP,XT_QNEGATE,XT_EXIT
- .include "words/pick.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PICK:
-003c80 ff04 .dw $ff04
-003c81 6970
-003c82 6b63 .db "pick"
-003c83 3c78 .dw VE_HEAD
- .set VE_HEAD = VE_PICK
- XT_PICK:
-003c84 3801 .dw DO_COLON
- PFA_PICK:
- .endif
-003c85 3a2f .dw XT_1PLUS
-003c86 3ec4 .dw XT_CELLS
-003c87 3a8d .dw XT_SP_FETCH
-003c88 399d .dw XT_PLUS
-003c89 3879 .dw XT_FETCH
-003c8a 3820 .dw XT_EXIT
- .include "words/cellplus.asm"
-
- ; Arithmetics
- ; add the size of an address-unit to a-addr1
- VE_CELLPLUS:
-003c8b ff05 .dw $ff05
-003c8c 6563
-003c8d 6c6c
-003c8e 002b .db "cell+",0
-003c8f 3c80 .dw VE_HEAD
- .set VE_HEAD = VE_CELLPLUS
- XT_CELLPLUS:
-003c90 3c91 .dw PFA_CELLPLUS
- PFA_CELLPLUS:
-003c91 9602 adiw tosl, CELLSIZE
-003c92 cb72 jmp_ DO_NEXT
- .include "dict/interrupt.inc"
-
- .if WANT_INTERRUPTS == 1
-
- .if WANT_INTERRUPT_COUNTERS == 1
- .endif
-
- .include "words/int-on.asm"
-
- ; Interrupt
- ; turns on all interrupts
- VE_INTON:
-003c93 ff04 .dw $ff04
-003c94 692b
-003c95 746e .db "+int"
-003c96 3c8b .dw VE_HEAD
- .set VE_HEAD = VE_INTON
- XT_INTON:
-003c97 3c98 .dw PFA_INTON
- PFA_INTON:
-003c98 9478 sei
-003c99 cb6b jmp_ DO_NEXT
- .include "words/int-off.asm"
-
- ; Interrupt
- ; turns off all interrupts
- VE_INTOFF:
-003c9a ff04 .dw $ff04
-003c9b 692d
-003c9c 746e .db "-int"
-003c9d 3c93 .dw VE_HEAD
- .set VE_HEAD = VE_INTOFF
- XT_INTOFF:
-003c9e 3c9f .dw PFA_INTOFF
- PFA_INTOFF:
-003c9f 94f8 cli
-003ca0 cb64 jmp_ DO_NEXT
- .include "words/int-store.asm"
-
- ; Interrupt
- ; stores XT as interrupt vector i
- VE_INTSTORE:
-003ca1 ff04 .dw $ff04
-003ca2 6e69
-003ca3 2174 .db "int!"
-003ca4 3c9a .dw VE_HEAD
- .set VE_HEAD = VE_INTSTORE
- XT_INTSTORE:
-003ca5 3801 .dw DO_COLON
- PFA_INTSTORE:
-003ca6 383d .dw XT_DOLITERAL
-003ca7 0000 .dw intvec
-003ca8 399d .dw XT_PLUS
-003ca9 3b3b .dw XT_STOREE
-003caa 3820 .dw XT_EXIT
- .include "words/int-fetch.asm"
-
- ; Interrupt
- ; fetches XT from interrupt vector i
- VE_INTFETCH:
-003cab ff04 .dw $ff04
-003cac 6e69
-003cad 4074 .db "int@"
-003cae 3ca1 .dw VE_HEAD
- .set VE_HEAD = VE_INTFETCH
- XT_INTFETCH:
-003caf 3801 .dw DO_COLON
- PFA_INTFETCH:
-003cb0 383d .dw XT_DOLITERAL
-003cb1 0000 .dw intvec
-003cb2 399d .dw XT_PLUS
-003cb3 3b5f .dw XT_FETCHE
-003cb4 3820 .dw XT_EXIT
- .include "words/int-trap.asm"
-
- ; Interrupt
- ; trigger an interrupt
- VE_INTTRAP:
-003cb5 ff08 .dw $ff08
-003cb6 6e69
-003cb7 2d74
-003cb8 7274
-003cb9 7061 .db "int-trap"
-003cba 3cab .dw VE_HEAD
- .set VE_HEAD = VE_INTTRAP
- XT_INTTRAP:
-003cbb 3cbc .dw PFA_INTTRAP
- PFA_INTTRAP:
-003cbc 2eb8 mov isrflag, tosl
-003cbd 9189
-003cbe 9199 loadtos
-003cbf cb45 jmp_ DO_NEXT
-
- .include "words/isr-exec.asm"
-
- ; Interrupt
- ; executes an interrupt service routine
- ;VE_ISREXEC:
- ; .dw $ff08
- ; .db "isr-exec"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREXEC
- XT_ISREXEC:
-003cc0 3801 .dw DO_COLON
- PFA_ISREXEC:
-003cc1 3caf .dw XT_INTFETCH
-003cc2 382a .dw XT_EXECUTE
-003cc3 3cc5 .dw XT_ISREND
-003cc4 3820 .dw XT_EXIT
- .include "words/isr-end.asm"
-
- ; Interrupt
- ; re-enables interrupts in an ISR
- ;VE_ISREND:
- ; .dw $ff07
- ; .db "isr-end",0
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREND
- XT_ISREND:
-003cc5 3cc6 .dw PFA_ISREND
- PFA_ISREND:
-003cc6 d001 rcall PFA_ISREND1 ; clear the interrupt flag for the controller
-003cc7 cb3d jmp_ DO_NEXT
- PFA_ISREND1:
-003cc8 9518 reti
- .endif
-
- ; now the relocatable colon words
- .include "words/prompt-ok.asm"
-
- ; System
- ; send the READY prompt to the command line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTOK:
- ; .dw $ff02
- ; .db "ok"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTOK
- XT_DEFAULT_PROMPTOK:
-003cc9 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTOK:
-003cca 03c5 .dw XT_DOSLITERAL
-003ccb 0003 .dw 3
-003ccc 6f20
-003ccd 006b .db " ok",0
- .endif
-003cce 03f8 .dw XT_ITYPE
-003ccf 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTOK:
-003cd0 ff03 .dw $FF03
-003cd1 6f2e
-../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte
-003cd2 006b .db ".ok"
-003cd3 3cb5 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTOK
- XT_PROMPTOK:
-003cd4 3dff .dw PFA_DODEFER1
- PFA_PROMPTOK:
- .endif
-003cd5 001c .dw USER_P_OK
-003cd6 3dc8 .dw XT_UDEFERFETCH
-003cd7 3dd4 .dw XT_UDEFERSTORE
- .include "words/prompt-ready.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTRDY:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTRDY
- XT_DEFAULT_PROMPTREADY:
-003cd8 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTREADY:
-003cd9 03c5 .dw XT_DOSLITERAL
-003cda 0002 .dw 2
-003cdb 203e .db "> "
- .endif
-003cdc 3fa1 .dw XT_CR
-003cdd 03f8 .dw XT_ITYPE
-003cde 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTREADY:
-003cdf ff06 .dw $FF06
-003ce0 722e
-003ce1 6165
-003ce2 7964 .db ".ready"
-003ce3 3cd0 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTREADY
- XT_PROMPTREADY:
-003ce4 3dff .dw PFA_DODEFER1
- PFA_PROMPTREADY:
- .endif
-003ce5 0020 .dw USER_P_RDY
-003ce6 3dc8 .dw XT_UDEFERFETCH
-003ce7 3dd4 .dw XT_UDEFERSTORE
- .include "words/prompt-error.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTERROR:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTERROR
- XT_DEFAULT_PROMPTERROR:
-003ce8 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTERROR:
-003ce9 03c5 .dw XT_DOSLITERAL
-003cea 0004 .dw 4
-003ceb 3f20
-003cec 203f .db " ?? "
- .endif
-003ced 03f8 .dw XT_ITYPE
-003cee 3ebd .dw XT_BASE
-003cef 3879 .dw XT_FETCH
-003cf0 38ff .dw XT_TO_R
-003cf1 3f41 .dw XT_DECIMAL
-003cf2 037a .dw XT_DOT
-003cf3 3ee2 .dw XT_TO_IN
-003cf4 3879 .dw XT_FETCH
-003cf5 037a .dw XT_DOT
-003cf6 38f6 .dw XT_R_FROM
-003cf7 3ebd .dw XT_BASE
-003cf8 3881 .dw XT_STORE
-003cf9 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTERROR:
-003cfa ff06 .dw $FF06
-003cfb 652e
-003cfc 7272
-003cfd 726f .db ".error"
-003cfe 3cdf .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTERROR
- XT_PROMPTERROR:
-003cff 3dff .dw PFA_DODEFER1
- PFA_PROMPTERROR:
- .endif
-003d00 001e .dw USER_P_ERR
-003d01 3dc8 .dw XT_UDEFERFETCH
-003d02 3dd4 .dw XT_UDEFERSTORE
-
- .include "words/quit.asm"
-
- ; System
- ; main loop of amforth. accept - interpret in an endless loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QUIT:
-003d03 ff04 .dw $ff04
-003d04 7571
-003d05 7469 .db "quit"
-003d06 3cfa .dw VE_HEAD
- .set VE_HEAD = VE_QUIT
- XT_QUIT:
-003d07 3801 .dw DO_COLON
- .endif
- PFA_QUIT:
-003d08 0851
-003d09 0858
-003d0a 3881 .dw XT_LP0,XT_LP,XT_STORE
-003d0b 05ca .dw XT_SP0
-003d0c 3a96 .dw XT_SP_STORE
-003d0d 05d7 .dw XT_RP0
-003d0e 3a80 .dw XT_RP_STORE
-003d0f 08e6 .dw XT_LBRACKET
-
- PFA_QUIT2:
-003d10 3eb7 .dw XT_STATE
-003d11 3879 .dw XT_FETCH
-003d12 391a .dw XT_ZEROEQUAL
-003d13 3836 .dw XT_DOCONDBRANCH
-003d14 3d16 DEST(PFA_QUIT4)
-003d15 3ce4 .dw XT_PROMPTREADY
- PFA_QUIT4:
-003d16 04de .dw XT_REFILL
-003d17 3836 .dw XT_DOCONDBRANCH
-003d18 3d28 DEST(PFA_QUIT3)
-003d19 383d .dw XT_DOLITERAL
-003d1a 0625 .dw XT_INTERPRET
-003d1b 3d70 .dw XT_CATCH
-003d1c 38b9 .dw XT_QDUP
-003d1d 3836 .dw XT_DOCONDBRANCH
-003d1e 3d28 DEST(PFA_QUIT3)
-003d1f 38b1 .dw XT_DUP
-003d20 383d .dw XT_DOLITERAL
-003d21 fffe .dw -2
-003d22 396e .dw XT_LESS
-003d23 3836 .dw XT_DOCONDBRANCH
-003d24 3d26 DEST(PFA_QUIT5)
-003d25 3cff .dw XT_PROMPTERROR
- PFA_QUIT5:
-003d26 382f .dw XT_DOBRANCH
-003d27 3d08 DEST(PFA_QUIT)
- PFA_QUIT3:
-003d28 3cd4 .dw XT_PROMPTOK
-003d29 382f .dw XT_DOBRANCH
-003d2a 3d10 DEST(PFA_QUIT2)
- ; .dw XT_EXIT ; never reached
-
- .include "words/pause.asm"
-
- ; Multitasking
- ; Fetch pause vector and execute it. may make a context/task switch
- VE_PAUSE:
-003d2b ff05 .dw $ff05
-003d2c 6170
-003d2d 7375
-003d2e 0065 .db "pause",0
-003d2f 3d03 .dw VE_HEAD
- .set VE_HEAD = VE_PAUSE
- XT_PAUSE:
-003d30 3dff .dw PFA_DODEFER1
- PFA_PAUSE:
-003d31 00ed .dw ram_pause
-003d32 3db4 .dw XT_RDEFERFETCH
-003d33 3dbe .dw XT_RDEFERSTORE
-
- .dseg
-0000ed ram_pause: .byte 2
- .cseg
- .include "words/cold.asm"
-
- ; System
- ; start up amforth.
- VE_COLD:
-003d34 ff04 .dw $ff04
-003d35 6f63
-003d36 646c .db "cold"
-003d37 3d2b .dw VE_HEAD
- .set VE_HEAD = VE_COLD
- XT_COLD:
-003d38 3d39 .dw PFA_COLD
- PFA_COLD:
-003d39 b6a4 in_ mcu_boot, MCUSR
-003d3a 2422 clr zerol
-003d3b 2433 clr zeroh
-003d3c 24bb clr isrflag
-003d3d be24 out_ MCUSR, zerol
- ; clear RAM
-003d3e e6e0 ldi zl, low(ramstart)
-003d3f e0f0 ldi zh, high(ramstart)
- clearloop:
-003d40 9221 st Z+, zerol
-003d41 36e0 cpi zl, low(sram_size+ramstart)
-003d42 f7e9 brne clearloop
-003d43 30f8 cpi zh, high(sram_size+ramstart)
-003d44 f7d9 brne clearloop
- ; init first user data area
- ; allocate space for User Area
- .dseg
-0000ef ram_user1: .byte SYSUSERSIZE + APPUSERSIZE
- .cseg
-003d45 eeef ldi zl, low(ram_user1)
-003d46 e0f0 ldi zh, high(ram_user1)
-003d47 012f movw upl, zl
- ; init return stack pointer
-003d48 e50f ldi temp0,low(rstackstart)
-003d49 bf0d out_ SPL,temp0
-003d4a 8304 std Z+4, temp0
-003d4b e018 ldi temp1,high(rstackstart)
-003d4c bf1e out_ SPH,temp1
-003d4d 8315 std Z+5, temp1
-
- ; init parameter stack pointer
-003d4e e0cf ldi yl,low(stackstart)
-003d4f 83c6 std Z+6, yl
-003d50 e0d8 ldi yh,high(stackstart)
-003d51 83d7 std Z+7, yh
-
- ; load Forth IP with starting word
-003d52 e5aa ldi XL, low(PFA_WARM)
-003d53 e3bd ldi XH, high(PFA_WARM)
- ; its a far jump...
-003d54 cab0 jmp_ DO_NEXT
- .include "words/warm.asm"
-
- ; System
- ; initialize amforth further. executes turnkey operation and go to quit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WARM:
-003d55 ff04 .dw $ff04
-003d56 6177
-003d57 6d72 .db "warm"
-003d58 3d34 .dw VE_HEAD
- .set VE_HEAD = VE_WARM
- XT_WARM:
-003d59 3801 .dw DO_COLON
- PFA_WARM:
- .endif
-003d5a 0297 .dw XT_INIT_RAM
-003d5b 383d .dw XT_DOLITERAL
-003d5c 019a .dw XT_NOOP
-003d5d 383d .dw XT_DOLITERAL
-003d5e 3d30 .dw XT_PAUSE
-003d5f 3ddf .dw XT_DEFERSTORE
-003d60 08e6 .dw XT_LBRACKET
-003d61 3f5c .dw XT_TURNKEY
-003d62 3d07 .dw XT_QUIT ; never returns
-
- .include "words/handler.asm"
-
- ; Exceptions
- ; USER variable used by catch/throw
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HANDLER:
-003d63 ff07 .dw $ff07
-003d64 6168
-003d65 646e
-003d66 656c
-003d67 0072 .db "handler",0
-003d68 3d55 .dw VE_HEAD
- .set VE_HEAD = VE_HANDLER
- XT_HANDLER:
-003d69 3858 .dw PFA_DOUSER
- PFA_HANDLER:
- .endif
-003d6a 000a .dw USER_HANDLER
- .include "words/catch.asm"
-
- ; Exceptions
- ; execute XT and check for exceptions.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CATCH:
-003d6b ff05 .dw $ff05
-003d6c 6163
-003d6d 6374
-003d6e 0068 .db "catch",0
-003d6f 3d63 .dw VE_HEAD
- .set VE_HEAD = VE_CATCH
- XT_CATCH:
-003d70 3801 .dw DO_COLON
- PFA_CATCH:
- .endif
-
- ; sp@ >r
-003d71 3a8d .dw XT_SP_FETCH
-003d72 38ff .dw XT_TO_R
- ; handler @ >r
-003d73 3d69 .dw XT_HANDLER
-003d74 3879 .dw XT_FETCH
-003d75 38ff .dw XT_TO_R
- ; rp@ handler !
-003d76 3a76 .dw XT_RP_FETCH
-003d77 3d69 .dw XT_HANDLER
-003d78 3881 .dw XT_STORE
-003d79 382a .dw XT_EXECUTE
- ; r> handler !
-003d7a 38f6 .dw XT_R_FROM
-003d7b 3d69 .dw XT_HANDLER
-003d7c 3881 .dw XT_STORE
-003d7d 38f6 .dw XT_R_FROM
-003d7e 38d9 .dw XT_DROP
-003d7f 3954 .dw XT_ZERO
-003d80 3820 .dw XT_EXIT
- .include "words/throw.asm"
-
- ; Exceptions
- ; throw an exception
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THROW:
-003d81 ff05 .dw $ff05
-003d82 6874
-003d83 6f72
-003d84 0077 .db "throw",0
-003d85 3d6b .dw VE_HEAD
- .set VE_HEAD = VE_THROW
- XT_THROW:
-003d86 3801 .dw DO_COLON
- PFA_THROW:
- .endif
-003d87 38b1 .dw XT_DUP
-003d88 391a .dw XT_ZEROEQUAL
-003d89 3836 .dw XT_DOCONDBRANCH
-003d8a 3d8d DEST(PFA_THROW1)
-003d8b 38d9 .dw XT_DROP
-003d8c 3820 .dw XT_EXIT
- PFA_THROW1:
-003d8d 3d69 .dw XT_HANDLER
-003d8e 3879 .dw XT_FETCH
-003d8f 3a80 .dw XT_RP_STORE
-003d90 38f6 .dw XT_R_FROM
-003d91 3d69 .dw XT_HANDLER
-003d92 3881 .dw XT_STORE
-003d93 38f6 .dw XT_R_FROM
-003d94 38c4 .dw XT_SWAP
-003d95 38ff .dw XT_TO_R
-003d96 3a96 .dw XT_SP_STORE
-003d97 38d9 .dw XT_DROP
-003d98 38f6 .dw XT_R_FROM
-003d99 3820 .dw XT_EXIT
-
-
-
- .include "words/edefer-fetch.asm"
-
- ; System
- ; does the real defer@ for eeprom defers
- VE_EDEFERFETCH:
-003d9a ff07 .dw $ff07
-003d9b 6445
-003d9c 6665
-003d9d 7265
-003d9e 0040 .db "Edefer@",0
-003d9f 3d81 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERFETCH
- XT_EDEFERFETCH:
-003da0 3801 .dw DO_COLON
- PFA_EDEFERFETCH:
-003da1 3bcb .dw XT_FETCHI
-003da2 3b5f .dw XT_FETCHE
-003da3 3820 .dw XT_EXIT
- .include "words/edefer-store.asm"
-
- ; System
- ; does the real defer! for eeprom defers
- VE_EDEFERSTORE:
-003da4 ff07 .dw $ff07
-003da5 6445
-003da6 6665
-003da7 7265
-003da8 0021 .db "Edefer!",0
-003da9 3d9a .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERSTORE
- XT_EDEFERSTORE:
-003daa 3801 .dw DO_COLON
- PFA_EDEFERSTORE:
-003dab 3bcb .dw XT_FETCHI
-003dac 3b3b .dw XT_STOREE
-003dad 3820 .dw XT_EXIT
- .include "words/rdefer-fetch.asm"
-
- ; System
- ; The defer@ for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERFETCH:
-003dae ff07 .dw $ff07
-003daf 6452
-003db0 6665
-003db1 7265
-003db2 0040 .db "Rdefer@",0
-003db3 3da4 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERFETCH
- XT_RDEFERFETCH:
-003db4 3801 .dw DO_COLON
- PFA_RDEFERFETCH:
- .endif
-003db5 3bcb .dw XT_FETCHI
-003db6 3879 .dw XT_FETCH
-003db7 3820 .dw XT_EXIT
- .include "words/rdefer-store.asm"
-
- ; System
- ; The defer! for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERSTORE:
-003db8 ff07 .dw $ff07
-003db9 6452
-003dba 6665
-003dbb 7265
-003dbc 0021 .db "Rdefer!",0
-003dbd 3dae .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERSTORE
- XT_RDEFERSTORE:
-003dbe 3801 .dw DO_COLON
- PFA_RDEFERSTORE:
- .endif
-003dbf 3bcb .dw XT_FETCHI
-003dc0 3881 .dw XT_STORE
-003dc1 3820 .dw XT_EXIT
-
- .include "words/udefer-fetch.asm"
-
- ; System
- ; does the real defer@ for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERFETCH:
-003dc2 ff07 .dw $ff07
-003dc3 6455
-003dc4 6665
-003dc5 7265
-003dc6 0040 .db "Udefer@",0
-003dc7 3db8 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERFETCH
- XT_UDEFERFETCH:
-003dc8 3801 .dw DO_COLON
- PFA_UDEFERFETCH:
- .endif
-003dc9 3bcb .dw XT_FETCHI
-003dca 3b02 .dw XT_UP_FETCH
-003dcb 399d .dw XT_PLUS
-003dcc 3879 .dw XT_FETCH
-003dcd 3820 .dw XT_EXIT
- .include "words/udefer-store.asm"
-
- ; System
- ; does the real defer! for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERSTORE:
-003dce ff07 .dw $ff07
-003dcf 6455
-003dd0 6665
-003dd1 7265
-003dd2 0021 .db "Udefer!",0
-003dd3 3dc2 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERSTORE
- XT_UDEFERSTORE:
-003dd4 3801 .dw DO_COLON
- PFA_UDEFERSTORE:
- .endif
-
-003dd5 3bcb .dw XT_FETCHI
-003dd6 3b02 .dw XT_UP_FETCH
-003dd7 399d .dw XT_PLUS
-003dd8 3881 .dw XT_STORE
-003dd9 3820 .dw XT_EXIT
-
- .include "words/defer-store.asm"
-
- ; System
- ; stores xt1 as the xt to be executed when xt2 is called
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERSTORE:
-003dda ff06 .dw $ff06
-003ddb 6564
-003ddc 6566
-003ddd 2172 .db "defer!"
-003dde 3dce .dw VE_HEAD
- .set VE_HEAD = VE_DEFERSTORE
- XT_DEFERSTORE:
-003ddf 3801 .dw DO_COLON
- PFA_DEFERSTORE:
- .endif
-003de0 3fd0 .dw XT_TO_BODY
-003de1 38b1 .dw XT_DUP
-003de2 01c6 .dw XT_ICELLPLUS
-003de3 01c6 .dw XT_ICELLPLUS
-003de4 3bcb .dw XT_FETCHI
-003de5 382a .dw XT_EXECUTE
-003de6 3820 .dw XT_EXIT
-
- .include "words/defer-fetch.asm"
-
- ; System
- ; returns the XT associated with the given XT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERFETCH:
-003de7 ff06 .dw $ff06
-003de8 6564
-003de9 6566
-003dea 4072 .db "defer@"
-003deb 3dda .dw VE_HEAD
- .set VE_HEAD = VE_DEFERFETCH
- XT_DEFERFETCH:
-003dec 3801 .dw DO_COLON
- PFA_DEFERFETCH:
- .endif
-003ded 3fd0 .dw XT_TO_BODY
-003dee 38b1 .dw XT_DUP
-003def 01c6 .dw XT_ICELLPLUS
-003df0 3bcb .dw XT_FETCHI
-003df1 382a .dw XT_EXECUTE
-003df2 3820 .dw XT_EXIT
- .include "words/do-defer.asm"
-
- ; System
- ; runtime of defer
- VE_DODEFER:
-003df3 ff07 .dw $ff07
-003df4 6428
-003df5 6665
-003df6 7265
-003df7 0029 .db "(defer)", 0
-003df8 3de7 .dw VE_HEAD
- .set VE_HEAD = VE_DODEFER
- XT_DODEFER:
-003df9 3801 .dw DO_COLON
- PFA_DODEFER:
-003dfa 072e .dw XT_DOCREATE
-003dfb 088e .dw XT_REVEAL
-003dfc 0751 .dw XT_COMPILE
-003dfd 3dff .dw PFA_DODEFER1
-003dfe 3820 .dw XT_EXIT
- PFA_DODEFER1:
-003dff 940e 08a7 call_ DO_DODOES
-003e01 38b1 .dw XT_DUP
-003e02 01c6 .dw XT_ICELLPLUS
-003e03 3bcb .dw XT_FETCHI
-003e04 382a .dw XT_EXECUTE
-003e05 382a .dw XT_EXECUTE
-003e06 3820 .dw XT_EXIT
-
- ; : (defer) <builds does> dup i-cell+ @i execute execute ;
-
-
- .include "words/u-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDOT:
-003e07 ff02 .dw $ff02
-003e08 2e75 .db "u."
-003e09 3df3 .dw VE_HEAD
- .set VE_HEAD = VE_UDOT
- XT_UDOT:
-003e0a 3801 .dw DO_COLON
- PFA_UDOT:
- .endif
-003e0b 3954 .dw XT_ZERO
-003e0c 0382 .dw XT_UDDOT
-003e0d 3820 .dw XT_EXIT
- ; : u. ( us -- ) 0 ud. ;
- .include "words/u-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cells numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDOTR:
-003e0e ff03 .dw $ff03
-003e0f 2e75
-003e10 0072 .db "u.r",0
-003e11 3e07 .dw VE_HEAD
- .set VE_HEAD = VE_UDOTR
- XT_UDOTR:
-003e12 3801 .dw DO_COLON
- PFA_UDOTR:
- .endif
-003e13 3954 .dw XT_ZERO
-003e14 38c4 .dw XT_SWAP
-003e15 038b .dw XT_UDDOTR
-003e16 3820 .dw XT_EXIT
- ; : u.r ( s n -- ) 0 swap ud.r ;
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/uslashmod.asm"
-
- ; Arithmetics
- ; unsigned division with remainder
- VE_USLASHMOD:
-003e17 ff05 .dw $ff05
-003e18 2f75
-003e19 6f6d
-003e1a 0064 .db "u/mod",0
-003e1b 3e0e .dw VE_HEAD
- .set VE_HEAD = VE_USLASHMOD
- XT_USLASHMOD:
-003e1c 3801 .dw DO_COLON
- PFA_USLASHMOD:
-003e1d 38ff .dw XT_TO_R
-003e1e 3954 .dw XT_ZERO
-003e1f 38f6 .dw XT_R_FROM
-003e20 39c2 .dw XT_UMSLASHMOD
-003e21 3820 .dw XT_EXIT
- .include "words/negate.asm"
-
- ; Logic
- ; 2-complement
- VE_NEGATE:
-003e22 ff06 .dw $ff06
-003e23 656e
-003e24 6167
-003e25 6574 .db "negate"
-003e26 3e17 .dw VE_HEAD
- .set VE_HEAD = VE_NEGATE
- XT_NEGATE:
-003e27 3801 .dw DO_COLON
- PFA_NEGATE:
-003e28 39fd .dw XT_INVERT
-003e29 3a2f .dw XT_1PLUS
-003e2a 3820 .dw XT_EXIT
- .include "words/slash.asm"
-
- ; Arithmetics
- ; divide n1 by n2. giving the quotient
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SLASH:
-003e2b ff01 .dw $ff01
-003e2c 002f .db "/",0
-003e2d 3e22 .dw VE_HEAD
- .set VE_HEAD = VE_SLASH
- XT_SLASH:
-003e2e 3801 .dw DO_COLON
- PFA_SLASH:
- .endif
-003e2f 3c49 .dw XT_SLASHMOD
-003e30 38f0 .dw XT_NIP
-003e31 3820 .dw XT_EXIT
-
- .include "words/mod.asm"
-
- ; Arithmetics
- ; divide n1 by n2 giving the remainder n3
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MOD:
-003e32 ff03 .dw $ff03
-003e33 6f6d
-003e34 0064 .db "mod",0
-003e35 3e2b .dw VE_HEAD
- .set VE_HEAD = VE_MOD
- XT_MOD:
-003e36 3801 .dw DO_COLON
- PFA_MOD:
- .endif
-003e37 3c49 .dw XT_SLASHMOD
-003e38 38d9 .dw XT_DROP
-003e39 3820 .dw XT_EXIT
-
- .include "words/min.asm"
-
- ; Compare
- ; compare two values leave the smaller one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MIN:
-003e3a ff03 .dw $ff03
-003e3b 696d
-003e3c 006e .db "min",0
-003e3d 3e32 .dw VE_HEAD
- .set VE_HEAD = VE_MIN
- XT_MIN:
-003e3e 3801 .dw DO_COLON
- PFA_MIN:
- .endif
-003e3f 3ec9 .dw XT_2DUP
-003e40 3978 .dw XT_GREATER
-003e41 3836 .dw XT_DOCONDBRANCH
-003e42 3e44 DEST(PFA_MIN1)
-003e43 38c4 .dw XT_SWAP
- PFA_MIN1:
-003e44 38d9 .dw XT_DROP
-003e45 3820 .dw XT_EXIT
- .include "words/max.asm"
-
- ; Compare
- ; compare two values, leave the bigger one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAX:
-003e46 ff03 .dw $ff03
-003e47 616d
-003e48 0078 .db "max",0
-003e49 3e3a .dw VE_HEAD
- .set VE_HEAD = VE_MAX
- XT_MAX:
-003e4a 3801 .dw DO_COLON
- PFA_MAX:
-
- .endif
-003e4b 3ec9 .dw XT_2DUP
-003e4c 396e .dw XT_LESS
-003e4d 3836 .dw XT_DOCONDBRANCH
-003e4e 3e50 DEST(PFA_MAX1)
-003e4f 38c4 .dw XT_SWAP
- PFA_MAX1:
-003e50 38d9 .dw XT_DROP
-003e51 3820 .dw XT_EXIT
- .include "words/within.asm"
-
- ; Compare
- ; check if n is within min..max
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WITHIN:
-003e52 ff06 .dw $ff06
-003e53 6977
-003e54 6874
-003e55 6e69 .db "within"
-003e56 3e46 .dw VE_HEAD
- .set VE_HEAD = VE_WITHIN
- XT_WITHIN:
-003e57 3801 .dw DO_COLON
- PFA_WITHIN:
- .endif
-003e58 38cf .dw XT_OVER
-003e59 3993 .dw XT_MINUS
-003e5a 38ff .dw XT_TO_R
-003e5b 3993 .dw XT_MINUS
-003e5c 38f6 .dw XT_R_FROM
-003e5d 395c .dw XT_ULESS
-003e5e 3820 .dw XT_EXIT
-
- .include "words/show-wordlist.asm"
-
- ; Tools
- ; prints the name of the words in a wordlist
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHOWWORDLIST:
-003e5f ff0d .dw $ff0d
-003e60 6873
-003e61 776f
-003e62 772d
-003e63 726f
-003e64 6c64
-003e65 7369
-003e66 0074 .db "show-wordlist",0
-003e67 3e52 .dw VE_HEAD
- .set VE_HEAD = VE_SHOWWORDLIST
- XT_SHOWWORDLIST:
-003e68 3801 .dw DO_COLON
- PFA_SHOWWORDLIST:
- .endif
-003e69 383d .dw XT_DOLITERAL
-003e6a 3e6e .dw XT_SHOWWORD
-003e6b 38c4 .dw XT_SWAP
-003e6c 06cf .dw XT_TRAVERSEWORDLIST
-003e6d 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SHOWWORD:
-003e6e 3801 .dw DO_COLON
- PFA_SHOWWORD:
- .endif
-003e6f 06ea .dw XT_NAME2STRING
-003e70 03f8 .dw XT_ITYPE
-003e71 3fae .dw XT_SPACE ; ( -- addr n)
-003e72 394b .dw XT_TRUE
-003e73 3820 .dw XT_EXIT
- .include "words/words.asm"
-
- ; Tools
- ; prints a list of all (visible) words in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_WORDS:
-003e74 ff05 .dw $ff05
-003e75 6f77
-003e76 6472
-003e77 0073 .db "words",0
-003e78 3e5f .dw VE_HEAD
- .set VE_HEAD = VE_WORDS
- XT_WORDS:
-003e79 3801 .dw DO_COLON
- PFA_WORDS:
- .endif
-003e7a 383d .dw XT_DOLITERAL
-003e7b 0042 .dw CFG_ORDERLISTLEN+2
-003e7c 3b5f .dw XT_FETCHE
-003e7d 3e68 .dw XT_SHOWWORDLIST
-003e7e 3820 .dw XT_EXIT
-
- .include "words/dot-quote.asm"
-
- ; Compiler
- ; compiles string into dictionary to be printed at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOTSTRING:
-003e7f 0002 .dw $0002
-003e80 222e .db ".",$22
-003e81 3e74 .dw VE_HEAD
- .set VE_HEAD = VE_DOTSTRING
- XT_DOTSTRING:
-003e82 3801 .dw DO_COLON
- PFA_DOTSTRING:
- .endif
-003e83 3e8a .dw XT_SQUOTE
-003e84 0751 .dw XT_COMPILE
-003e85 03f8 .dw XT_ITYPE
-003e86 3820 .dw XT_EXIT
- .include "words/squote.asm"
-
- ; Compiler
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SQUOTE:
-003e87 0002 .dw $0002
-003e88 2273 .db "s",$22
-003e89 3e7f .dw VE_HEAD
- .set VE_HEAD = VE_SQUOTE
- XT_SQUOTE:
-003e8a 3801 .dw DO_COLON
- PFA_SQUOTE:
- .endif
-003e8b 383d .dw XT_DOLITERAL
-003e8c 0022 .dw 34 ; 0x22
-003e8d 0583 .dw XT_PARSE ; ( -- addr n)
-003e8e 3eb7 .dw XT_STATE
-003e8f 3879 .dw XT_FETCH
-003e90 3836 .dw XT_DOCONDBRANCH
-003e91 3e93 DEST(PFA_SQUOTE1)
-003e92 077d .dw XT_SLITERAL
- PFA_SQUOTE1:
-003e93 3820 .dw XT_EXIT
- .include "words/fill.asm"
-
- ; Memory
- ; fill u bytes memory beginning at a-addr with character c
- VE_FILL:
-003e94 ff04 .dw $ff04
-003e95 6966
-003e96 6c6c .db "fill"
-003e97 3e87 .dw VE_HEAD
- .set VE_HEAD = VE_FILL
- XT_FILL:
-003e98 3801 .dw DO_COLON
- PFA_FILL:
-003e99 38e1 .dw XT_ROT
-003e9a 38e1 .dw XT_ROT
-003e9b 38b9
-003e9c 3836 .dw XT_QDUP,XT_DOCONDBRANCH
-003e9d 3ea5 DEST(PFA_FILL2)
-003e9e 3f99 .dw XT_BOUNDS
-003e9f 3a9b .dw XT_DODO
- PFA_FILL1:
-003ea0 38b1 .dw XT_DUP
-003ea1 3aac .dw XT_I
-003ea2 388d .dw XT_CSTORE ; ( -- c c-addr)
-003ea3 3ac9 .dw XT_DOLOOP
-003ea4 3ea0 .dw PFA_FILL1
- PFA_FILL2:
-003ea5 38d9 .dw XT_DROP
-003ea6 3820 .dw XT_EXIT
-
- .include "words/f_cpu.asm"
-
- ; System
- ; put the cpu frequency in Hz on stack
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_F_CPU:
-003ea7 ff05 .dw $ff05
-003ea8 5f66
-003ea9 7063
-003eaa 0075 .db "f_cpu",0
-003eab 3e94 .dw VE_HEAD
- .set VE_HEAD = VE_F_CPU
- XT_F_CPU:
-003eac 3801 .dw DO_COLON
- PFA_F_CPU:
- .endif
-003ead 383d .dw XT_DOLITERAL
-003eae 1200 .dw (F_CPU % 65536)
-003eaf 383d .dw XT_DOLITERAL
-003eb0 007a .dw (F_CPU / 65536)
-003eb1 3820 .dw XT_EXIT
- .include "words/state.asm"
-
- ; System Variable
- ; system state
- VE_STATE:
-003eb2 ff05 .dw $ff05
-003eb3 7473
-003eb4 7461
-003eb5 0065 .db "state",0
-003eb6 3ea7 .dw VE_HEAD
- .set VE_HEAD = VE_STATE
- XT_STATE:
-003eb7 3848 .dw PFA_DOVARIABLE
- PFA_STATE:
-003eb8 011b .dw ram_state
-
- .dseg
-00011b ram_state: .byte 2
- .include "words/base.asm"
-
- ; Numeric IO
- ; location of the cell containing the number conversion radix
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BASE:
-003eb9 ff04 .dw $ff04
-003eba 6162
-003ebb 6573 .db "base"
-003ebc 3eb2 .dw VE_HEAD
- .set VE_HEAD = VE_BASE
- XT_BASE:
-003ebd 3858 .dw PFA_DOUSER
- PFA_BASE:
- .endif
-003ebe 000c .dw USER_BASE
-
- .include "words/cells.asm"
-
- ; Arithmetics
- ; n2 is the size in address units of n1 cells
- VE_CELLS:
-003ebf ff05 .dw $ff05
-003ec0 6563
-003ec1 6c6c
-003ec2 0073 .db "cells",0
-003ec3 3eb9 .dw VE_HEAD
- .set VE_HEAD = VE_CELLS
- XT_CELLS:
-003ec4 3a0c .dw PFA_2STAR
-
- .include "words/2dup.asm"
-
- ; Stack
- ; Duplicate the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DUP:
-003ec5 ff04 .dw $ff04
-003ec6 6432
-003ec7 7075 .db "2dup"
-003ec8 3ebf .dw VE_HEAD
- .set VE_HEAD = VE_2DUP
- XT_2DUP:
-003ec9 3801 .dw DO_COLON
- PFA_2DUP:
- .endif
-
-003eca 38cf .dw XT_OVER
-003ecb 38cf .dw XT_OVER
-003ecc 3820 .dw XT_EXIT
- .include "words/2drop.asm"
-
- ; Stack
- ; Remove the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DROP:
-003ecd ff05 .dw $ff05
-003ece 6432
-003ecf 6f72
-003ed0 0070 .db "2drop",0
-003ed1 3ec5 .dw VE_HEAD
- .set VE_HEAD = VE_2DROP
- XT_2DROP:
-003ed2 3801 .dw DO_COLON
- PFA_2DROP:
- .endif
-003ed3 38d9 .dw XT_DROP
-003ed4 38d9 .dw XT_DROP
-003ed5 3820 .dw XT_EXIT
- .include "words/tuck.asm"
-
- ; Stack
- ; Copy the first (top) stack item below the second stack item.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TUCK:
-003ed6 ff04 .dw $ff04
-003ed7 7574
-003ed8 6b63 .db "tuck"
-003ed9 3ecd .dw VE_HEAD
- .set VE_HEAD = VE_TUCK
- XT_TUCK:
-003eda 3801 .dw DO_COLON
- PFA_TUCK:
- .endif
-003edb 38c4 .dw XT_SWAP
-003edc 38cf .dw XT_OVER
-003edd 3820 .dw XT_EXIT
-
- .include "words/to-in.asm"
-
- ; System Variable
- ; pointer to current read position in input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_IN:
-003ede ff03 .dw $ff03
-003edf 693e
-003ee0 006e .db ">in",0
-003ee1 3ed6 .dw VE_HEAD
- .set VE_HEAD = VE_TO_IN
- XT_TO_IN:
-003ee2 3858 .dw PFA_DOUSER
- PFA_TO_IN:
- .endif
-003ee3 0018 .dw USER_TO_IN
- .include "words/pad.asm"
-
- ; System Variable
- ; Address of the temporary scratch buffer.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PAD:
-003ee4 ff03 .dw $ff03
-003ee5 6170
-003ee6 0064 .db "pad",0
-003ee7 3ede .dw VE_HEAD
- .set VE_HEAD = VE_PAD
- XT_PAD:
-003ee8 3801 .dw DO_COLON
- PFA_PAD:
- .endif
-003ee9 3f23 .dw XT_HERE
-003eea 383d .dw XT_DOLITERAL
-003eeb 0028 .dw 40
-003eec 399d .dw XT_PLUS
-003eed 3820 .dw XT_EXIT
- .include "words/emit.asm"
-
- ; Character IO
- ; fetch the emit vector and execute it. should emit a character from TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMIT:
-003eee ff04 .dw $ff04
-003eef 6d65
-003ef0 7469 .db "emit"
-003ef1 3ee4 .dw VE_HEAD
- .set VE_HEAD = VE_EMIT
- XT_EMIT:
-003ef2 3dff .dw PFA_DODEFER1
- PFA_EMIT:
- .endif
-003ef3 000e .dw USER_EMIT
-003ef4 3dc8 .dw XT_UDEFERFETCH
-003ef5 3dd4 .dw XT_UDEFERSTORE
- .include "words/emitq.asm"
-
- ; Character IO
- ; fetch emit? vector and execute it. should return the ready-to-send condition
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMITQ:
-003ef6 ff05 .dw $ff05
-003ef7 6d65
-003ef8 7469
-003ef9 003f .db "emit?",0
-003efa 3eee .dw VE_HEAD
- .set VE_HEAD = VE_EMITQ
- XT_EMITQ:
-003efb 3dff .dw PFA_DODEFER1
- PFA_EMITQ:
- .endif
-003efc 0010 .dw USER_EMITQ
-003efd 3dc8 .dw XT_UDEFERFETCH
-003efe 3dd4 .dw XT_UDEFERSTORE
- .include "words/key.asm"
-
- ; Character IO
- ; fetch key vector and execute it, should leave a single character on TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEY:
-003eff ff03 .dw $ff03
-003f00 656b
-003f01 0079 .db "key",0
-003f02 3ef6 .dw VE_HEAD
- .set VE_HEAD = VE_KEY
- XT_KEY:
-003f03 3dff .dw PFA_DODEFER1
- PFA_KEY:
- .endif
-003f04 0012 .dw USER_KEY
-003f05 3dc8 .dw XT_UDEFERFETCH
-003f06 3dd4 .dw XT_UDEFERSTORE
- .include "words/keyq.asm"
-
- ; Character IO
- ; fetch key? vector and execute it. should turn on key sender, if it is disabled/stopped
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEYQ:
-003f07 ff04 .dw $ff04
-003f08 656b
-003f09 3f79 .db "key?"
-003f0a 3eff .dw VE_HEAD
- .set VE_HEAD = VE_KEYQ
- XT_KEYQ:
-003f0b 3dff .dw PFA_DODEFER1
- PFA_KEYQ:
- .endif
-003f0c 0014 .dw USER_KEYQ
-003f0d 3dc8 .dw XT_UDEFERFETCH
-003f0e 3dd4 .dw XT_UDEFERSTORE
-
- .include "words/dp.asm"
-
- ; System Value
- ; address of the next free dictionary cell
- VE_DP:
-003f0f ff02 .dw $ff02
-003f10 7064 .db "dp"
-003f11 3f07 .dw VE_HEAD
- .set VE_HEAD = VE_DP
- XT_DP:
-003f12 386f .dw PFA_DOVALUE1
- PFA_DP:
-003f13 002c .dw CFG_DP
-003f14 3da0 .dw XT_EDEFERFETCH
-003f15 3daa .dw XT_EDEFERSTORE
- .include "words/ehere.asm"
-
- ; System Value
- ; address of the next free address in eeprom
- VE_EHERE:
-003f16 ff05 .dw $ff05
-003f17 6865
-003f18 7265
-003f19 0065 .db "ehere",0
-003f1a 3f0f .dw VE_HEAD
- .set VE_HEAD = VE_EHERE
- XT_EHERE:
-003f1b 386f .dw PFA_DOVALUE1
- PFA_EHERE:
-003f1c 0030 .dw EE_EHERE
-003f1d 3da0 .dw XT_EDEFERFETCH
-003f1e 3daa .dw XT_EDEFERSTORE
- .include "words/here.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_HERE:
-003f1f ff04 .dw $ff04
-003f20 6568
-003f21 6572 .db "here"
-003f22 3f16 .dw VE_HEAD
- .set VE_HEAD = VE_HERE
- XT_HERE:
-003f23 386f .dw PFA_DOVALUE1
- PFA_HERE:
-003f24 002e .dw EE_HERE
-003f25 3da0 .dw XT_EDEFERFETCH
-003f26 3daa .dw XT_EDEFERSTORE
- .include "words/allot.asm"
-
- ; System
- ; allocate or release memory in RAM
- VE_ALLOT:
-003f27 ff05 .dw $ff05
-003f28 6c61
-003f29 6f6c
-003f2a 0074 .db "allot",0
-003f2b 3f1f .dw VE_HEAD
- .set VE_HEAD = VE_ALLOT
- XT_ALLOT:
-003f2c 3801 .dw DO_COLON
- PFA_ALLOT:
-003f2d 3f23 .dw XT_HERE
-003f2e 399d .dw XT_PLUS
-003f2f 01b4 .dw XT_DOTO
-003f30 3f24 .dw PFA_HERE
-003f31 3820 .dw XT_EXIT
-
- .include "words/bin.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BIN:
-003f32 ff03 .dw $ff03
-003f33 6962
-003f34 006e .db "bin",0
-003f35 3f27 .dw VE_HEAD
- .set VE_HEAD = VE_BIN
- XT_BIN:
-003f36 3801 .dw DO_COLON
- PFA_BIN:
- .endif
-003f37 3feb .dw XT_TWO
-003f38 3ebd .dw XT_BASE
-003f39 3881 .dw XT_STORE
-003f3a 3820 .dw XT_EXIT
- .include "words/decimal.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DECIMAL:
-003f3b ff07 .dw $ff07
-003f3c 6564
-003f3d 6963
-003f3e 616d
-003f3f 006c .db "decimal",0
-003f40 3f32 .dw VE_HEAD
- .set VE_HEAD = VE_DECIMAL
- XT_DECIMAL:
-003f41 3801 .dw DO_COLON
- PFA_DECIMAL:
- .endif
-003f42 383d .dw XT_DOLITERAL
-003f43 000a .dw 10
-003f44 3ebd .dw XT_BASE
-003f45 3881 .dw XT_STORE
-003f46 3820 .dw XT_EXIT
- .include "words/hex.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HEX:
-003f47 ff03 .dw $ff03
-003f48 6568
-003f49 0078 .db "hex",0
-003f4a 3f3b .dw VE_HEAD
- .set VE_HEAD = VE_HEX
- XT_HEX:
-003f4b 3801 .dw DO_COLON
- PFA_HEX:
- .endif
-003f4c 383d .dw XT_DOLITERAL
-003f4d 0010 .dw 16
-003f4e 3ebd .dw XT_BASE
-003f4f 3881 .dw XT_STORE
-003f50 3820 .dw XT_EXIT
- .include "words/bl.asm"
-
- ; Character IO
- ; put ascii code of the blank to the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BL:
-003f51 ff02 .dw $ff02
-003f52 6c62 .db "bl"
-003f53 3f47 .dw VE_HEAD
- .set VE_HEAD = VE_BL
- XT_BL:
-003f54 3848 .dw PFA_DOVARIABLE
- PFA_BL:
- .endif
-003f55 0020 .dw 32
-
- .include "words/turnkey.asm"
-
- ; System Value
- ; Deferred action during startup/reset
- VE_TURNKEY:
-003f56 ff07 .dw $ff07
-003f57 7574
-003f58 6e72
-003f59 656b
-003f5a 0079 .db "turnkey",0
-003f5b 3f51 .dw VE_HEAD
- .set VE_HEAD = VE_TURNKEY
- XT_TURNKEY:
-003f5c 3dff .dw PFA_DODEFER1
- PFA_TURNKEY:
-003f5d 0038 .dw CFG_TURNKEY
-003f5e 3da0 .dw XT_EDEFERFETCH
-003f5f 3daa .dw XT_EDEFERSTORE
- .include "words/to-upper.asm"
-
- ; String
- ; if c is a lowercase letter convert it to uppercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TOUPPER:
-003f60 ff07 .dw $ff07
-003f61 6f74
-003f62 7075
-003f63 6570
-003f64 0072 .db "toupper",0
-003f65 3f56 .dw VE_HEAD
- .set VE_HEAD = VE_TOUPPER
- XT_TOUPPER:
-003f66 3801 .dw DO_COLON
- PFA_TOUPPER:
- .endif
-003f67 38b1 .dw XT_DUP
-003f68 383d .dw XT_DOLITERAL
-003f69 0061 .dw 'a'
-003f6a 383d .dw XT_DOLITERAL
-003f6b 007b .dw 'z'+1
-003f6c 3e57 .dw XT_WITHIN
-003f6d 3836 .dw XT_DOCONDBRANCH
-003f6e 3f72 DEST(PFA_TOUPPER0)
-003f6f 383d .dw XT_DOLITERAL
-003f70 00df .dw 223 ; inverse of 0x20: 0xdf
-003f71 3a13 .dw XT_AND
- PFA_TOUPPER0:
-003f72 3820 .dw XT_EXIT
- .include "words/to-lower.asm"
-
- ; String
- ; if C is an uppercase letter convert it to lowercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_TOLOWER:
-003f73 ff07 .dw $ff07
-003f74 6f74
-003f75 6f6c
-003f76 6577
-003f77 0072 .db "tolower",0
-003f78 3f60 .dw VE_HEAD
- .set VE_HEAD = VE_TOLOWER
- XT_TOLOWER:
-003f79 3801 .dw DO_COLON
- PFA_TOLOWER:
- .endif
-003f7a 38b1 .dw XT_DUP
-003f7b 383d .dw XT_DOLITERAL
-003f7c 0041 .dw 'A'
-003f7d 383d .dw XT_DOLITERAL
-003f7e 005b .dw 'Z'+1
-003f7f 3e57 .dw XT_WITHIN
-003f80 3836 .dw XT_DOCONDBRANCH
-003f81 3f85 DEST(PFA_TOLOWER0)
-003f82 383d .dw XT_DOLITERAL
-003f83 0020 .dw 32
-003f84 3a1c .dw XT_OR
- PFA_TOLOWER0:
-003f85 3820 .dw XT_EXIT
-
- .include "words/q-stack.asm"
-
- ; Tools
- ; check data stack depth and exit to quit if underrun
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QSTACK:
-003f86 ff06 .dw $ff06
-003f87 733f
-003f88 6174
-003f89 6b63 .db "?stack"
-003f8a 3f73 .dw VE_HEAD
- .set VE_HEAD = VE_QSTACK
- XT_QSTACK:
-003f8b 3801 .dw DO_COLON
- PFA_QSTACK:
- .endif
-003f8c 05e2 .dw XT_DEPTH
-003f8d 3921 .dw XT_ZEROLESS
-003f8e 3836 .dw XT_DOCONDBRANCH
-003f8f 3f93 DEST(PFA_QSTACK1)
-003f90 383d .dw XT_DOLITERAL
-003f91 fffc .dw -4
-003f92 3d86 .dw XT_THROW
- PFA_QSTACK1:
-003f93 3820 .dw XT_EXIT
- .include "words/bounds.asm"
-
- ; Tools
- ; convert a string to an address range
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BOUNDS:
-003f94 ff06 .dw $ff06
-003f95 6f62
-003f96 6e75
-003f97 7364 .db "bounds"
-003f98 3f86 .dw VE_HEAD
- .set VE_HEAD = VE_BOUNDS
- XT_BOUNDS:
-003f99 3801 .dw DO_COLON
- PFA_BOUNDS:
- .endif
-003f9a 38cf .dw XT_OVER
-003f9b 399d .dw XT_PLUS
-003f9c 38c4 .dw XT_SWAP
-003f9d 3820 .dw XT_EXIT
- .include "words/cr.asm"
-
- ; Character IO
- ; cause subsequent output appear at the beginning of the next line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CR:
-003f9e ff02 .dw 0xff02
-003f9f 7263 .db "cr"
-003fa0 3f94 .dw VE_HEAD
- .set VE_HEAD = VE_CR
- XT_CR:
-003fa1 3801 .dw DO_COLON
- PFA_CR:
- .endif
-
-003fa2 383d .dw XT_DOLITERAL
-003fa3 000d .dw 13
-003fa4 3ef2 .dw XT_EMIT
-003fa5 383d .dw XT_DOLITERAL
-003fa6 000a .dw 10
-003fa7 3ef2 .dw XT_EMIT
-003fa8 3820 .dw XT_EXIT
- .include "words/space.asm"
-
- ; Character IO
- ; emits a space (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACE:
-003fa9 ff05 .dw $ff05
-003faa 7073
-003fab 6361
-003fac 0065 .db "space",0
-003fad 3f9e .dw VE_HEAD
- .set VE_HEAD = VE_SPACE
- XT_SPACE:
-003fae 3801 .dw DO_COLON
- PFA_SPACE:
- .endif
-003faf 3f54 .dw XT_BL
-003fb0 3ef2 .dw XT_EMIT
-003fb1 3820 .dw XT_EXIT
- .include "words/spaces.asm"
-
- ; Character IO
- ; emits n space(s) (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACES:
-003fb2 ff06 .dw $ff06
-003fb3 7073
-003fb4 6361
-003fb5 7365 .db "spaces"
-003fb6 3fa9 .dw VE_HEAD
- .set VE_HEAD = VE_SPACES
- XT_SPACES:
-003fb7 3801 .dw DO_COLON
- PFA_SPACES:
-
- .endif
- ;C SPACES n -- output n spaces
- ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ;
-003fb8 3954
-003fb9 3e4a .DW XT_ZERO, XT_MAX
-003fba 38b1
-003fbb 3836 SPCS1: .DW XT_DUP,XT_DOCONDBRANCH
-003fbc 3fc1 DEST(SPCS2)
-003fbd 3fae
-003fbe 3a35
-003fbf 382f .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH
-003fc0 3fba DEST(SPCS1)
-003fc1 38d9
-003fc2 3820 SPCS2: .DW XT_DROP,XT_EXIT
- .include "words/s-to-d.asm"
-
- ; Conversion
- ; extend (signed) single cell value to double cell
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_S2D:
-003fc3 ff03 .dw $ff03
-003fc4 3e73
-003fc5 0064 .db "s>d",0
-003fc6 3fb2 .dw VE_HEAD
- .set VE_HEAD = VE_S2D
- XT_S2D:
-003fc7 3801 .dw DO_COLON
- PFA_S2D:
- .endif
-003fc8 38b1 .dw XT_DUP
-003fc9 3921 .dw XT_ZEROLESS
-003fca 3820 .dw XT_EXIT
- .include "words/to-body.asm"
-
- ; Core
- ; get body from XT
- VE_TO_BODY:
-003fcb ff05 .dw $ff05
-003fcc 623e
-003fcd 646f
-003fce 0079 .db ">body",0
-003fcf 3fc3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_BODY
- XT_TO_BODY:
-003fd0 3a30 .dw PFA_1PLUS
- .elif AMFORTH_NRWW_SIZE>2000
- .else
- .endif
- ; now colon words
- ;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/2literal.asm"
-
- ; Compiler
- ; compile a cell pair literal in colon definitions
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2LITERAL:
-003fd1 0008 .dw $0008
-003fd2 6c32
-003fd3 7469
-003fd4 7265
-003fd5 6c61 .db "2literal"
-003fd6 3fcb .dw VE_HEAD
- .set VE_HEAD = VE_2LITERAL
- XT_2LITERAL:
-003fd7 3801 .dw DO_COLON
- PFA_2LITERAL:
- .endif
-003fd8 38c4 .dw XT_SWAP
-003fd9 0772 .dw XT_LITERAL
-003fda 0772 .dw XT_LITERAL
-003fdb 3820 .dw XT_EXIT
- .include "words/equal.asm"
-
- ; Compare
- ; compares two values for equality
- VE_EQUAL:
-003fdc ff01 .dw $ff01
-003fdd 003d .db "=",0
-003fde 3fd1 .dw VE_HEAD
- .set VE_HEAD = VE_EQUAL
- XT_EQUAL:
-003fdf 3801 .dw DO_COLON
- PFA_EQUAL:
-003fe0 3993 .dw XT_MINUS
-003fe1 391a .dw XT_ZEROEQUAL
-003fe2 3820 .dw XT_EXIT
- .include "words/num-constants.asm"
-
- .endif
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ONE:
-003fe3 ff01 .dw $ff01
-003fe4 0031 .db "1",0
-003fe5 3fdc .dw VE_HEAD
- .set VE_HEAD = VE_ONE
- XT_ONE:
-003fe6 3848 .dw PFA_DOVARIABLE
- PFA_ONE:
- .endif
-003fe7 0001 .DW 1
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TWO:
-003fe8 ff01 .dw $ff01
-003fe9 0032 .db "2",0
-003fea 3fe3 .dw VE_HEAD
- .set VE_HEAD = VE_TWO
- XT_TWO:
-003feb 3848 .dw PFA_DOVARIABLE
- PFA_TWO:
- .endif
-003fec 0002 .DW 2
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MINUSONE:
-003fed ff02 .dw $ff02
-003fee 312d .db "-1"
-003fef 3fe8 .dw VE_HEAD
- .set VE_HEAD = VE_MINUSONE
- XT_MINUSONE:
-003ff0 3848 .dw PFA_DOVARIABLE
- PFA_MINUSONE:
- .endif
-003ff1 ffff .DW -1
- .include "dict_appl_core.inc"
-
- ; do not delete it!
-
- .set flashlast = pc
- .if (pc>FLASHEND)
- .endif
-
- .dseg
- ; define a label for the 1st free ram address
- HERESTART:
- .eseg
- .include "amforth-eeprom.inc"
-00002a ff ff
- ; some configs
-00002c 1b 0b CFG_DP: .dw DPSTART ; Dictionary Pointer
-00002e 1d 01 EE_HERE: .dw HERESTART ; Memory Allocation
-000030 84 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation
-000032 c3 09 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope
-000034 52 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set
- ; LEAVE stack is between data stack and return stack.
-000036 10 08 CFG_LP0: .dw stackstart+1
-000038 6d 0a CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY
-00003a f4 02 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries
-00003c 3e 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist
-00003e ed 3f CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist
- CFG_ORDERLISTLEN:
-000040 01 00 .dw 1
- CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries
-000042 3e 00 .dw CFG_FORTHWORDLIST ; get/set-order
-000044 .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used
- CFG_RECOGNIZERLISTLEN:
-000052 02 00 .dw 2
- CFG_RECOGNIZERLIST:
-000054 65 06 .dw XT_REC_FIND
-000056 51 06 .dw XT_REC_NUM
-000058 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used
-
- EE_STOREI:
-00005c 7e 3b .dw XT_DO_STOREI ; Store a cell into flash
-
- ; MARKER saves everything up to here. Nothing beyond gets saved
- EE_MARKER:
-00005e 5e 00 .dw EE_MARKER
-
- ; default user area
- EE_INITUSER:
-000060 00 00 .dw 0 ; USER_STATE
-000062 00 00 .dw 0 ; USER_FOLLOWER
-000064 5f 08 .dw rstackstart ; USER_RP
-000066 0f 08 .dw stackstart ; USER_SP0
-000068 0f 08 .dw stackstart ; USER_SP
-
-00006a 00 00 .dw 0 ; USER_HANDLER
-00006c 0a 00 .dw 10 ; USER_BASE
-
-00006e 98 00 .dw XT_TX ; USER_EMIT
-000070 a6 00 .dw XT_TXQ ; USER_EMITQ
-000072 6d 00 .dw XT_RX ; USER_KEY
-000074 88 00 .dw XT_RXQ ; USER_KEYQ
-000076 6c 02 .dw XT_SOURCETIB ; USER_SOURCE
-000078 00 00 .dw 0 ; USER_G_IN
-00007a 59 02 .dw XT_REFILLTIB ; USER_REFILL
-00007c c9 3c .dw XT_DEFAULT_PROMPTOK
-00007e e8 3c .dw XT_DEFAULT_PROMPTERROR
-000080 d8 3c .dw XT_DEFAULT_PROMPTREADY
-
- ; calculate baud rate error
- .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; smart round
- .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; effective baud rate
- .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; error in pro mille
-
- .if ((BAUD_ERROR>BAUD_MAXERROR) || (BAUD_ERROR<-BAUD_MAXERROR))
- .endif
- EE_UBRRVAL:
-000082 0c 00 .dw UBRR_VAL ; BAUDRATE
- ; 1st free address in EEPROM.
- EHERESTART:
- .cseg
-
-
-RESOURCE USE INFORMATION
-------------------------
-
-Notice:
-The register and instruction counts are symbol table hit counts,
-and hence implicitly used resources are not counted, eg, the
-'lpm' instruction without operands implicitly uses r0 and z,
-none of which are counted.
-
-x,y,z are separate entities in the symbol table and are
-counted separately from r26..r31 here.
-
-.dseg memory usage only counts static data declared with .byte
-
-"ATmega32" register use summary:
-r0 : 25 r1 : 5 r2 : 10 r3 : 12 r4 : 4 r5 : 1 r6 : 0 r7 : 0
-r8 : 0 r9 : 0 r10: 1 r11: 6 r12: 0 r13: 0 r14: 22 r15: 20
-r16: 89 r17: 61 r18: 61 r19: 37 r20: 13 r21: 11 r22: 11 r23: 3
-r24: 212 r25: 145 r26: 28 r27: 17 r28: 7 r29: 4 r30: 90 r31: 49
-x : 4 y : 217 z : 50
-Registers used: 29 out of 35 (82.9%)
-
-"ATmega32" instruction use summary:
-.lds : 0 .sts : 0 adc : 22 add : 17 adiw : 17 and : 4
-andi : 3 asr : 2 bclr : 0 bld : 0 brbc : 2 brbs : 7
-brcc : 3 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0
-brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3
-brne : 22 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
-brvs : 2 bset : 0 bst : 0 call : 2 cbi : 7 cbr : 1
-clc : 2 clh : 0 cli : 7 cln : 0 clr : 14 cls : 0
-clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10
-cpi : 2 cpse : 0 dec : 10 eor : 3 fmul : 0 fmuls : 0
-fmulsu: 0 icall : 0 ijmp : 1 in : 25 inc : 3 jmp : 13
-ld : 145 ldd : 4 ldi : 41 lds : 1 lpm : 16 lsl : 14
-lsr : 2 mov : 16 movw : 72 mul : 5 muls : 1 mulsu : 2
-neg : 0 nop : 0 or : 9 ori : 2 out : 22 pop : 49
-push : 43 rcall : 34 ret : 7 reti : 1 rjmp : 106 rol : 23
-ror : 6 sbc : 9 sbci : 3 sbi : 8 sbic : 3 sbis : 0
-sbiw : 16 sbr : 0 sbrc : 5 sbrs : 7 sec : 1 seh : 0
-sei : 1 sen : 0 ser : 4 ses : 0 set : 0 sev : 0
-sez : 0 sleep : 0 spm : 2 st : 81 std : 8 sts : 1
-sub : 6 subi : 3 swap : 0 tst : 0 wdr : 0
-Instructions used: 72 out of 113 (63.7%)
-
-"ATmega32" memory use summary [bytes]:
-Segment Begin End Code Data Used Size Use%
----------------------------------------------------------------
-[.cseg] 0x000000 0x007fe4 2072 11708 13780 32768 42.1%
-[.dseg] 0x000060 0x00011d 0 189 189 2048 9.2%
-[.eseg] 0x000000 0x000084 0 132 132 1024 12.9%
-
-Assembly complete, 0 errors, 8 warnings
diff --git a/amforth-6.5/appl/eval-pollin/p32-8.map b/amforth-6.5/appl/eval-pollin/p32-8.map
deleted file mode 100644
index 8968a65..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-8.map
+++ /dev/null
@@ -1,1933 +0,0 @@
-
-AVRASM ver. 2.1.52 p32-8.asm Sun Apr 30 20:10:14 2017
-
-
-SET DICT_COMPILER2 00000001
-SET cpu_msp430 00000000
-SET cpu_avr8 00000001
-SET USER_STATE 00000000
-SET USER_FOLLOWER 00000002
-SET USER_RP 00000004
-SET USER_SP0 00000006
-SET USER_SP 00000008
-SET USER_HANDLER 0000000a
-SET USER_BASE 0000000c
-SET USER_EMIT 0000000e
-SET USER_EMITQ 00000010
-SET USER_KEY 00000012
-SET USER_KEYQ 00000014
-SET USER_SOURCE 00000016
-SET USER_TO_IN 00000018
-SET USER_REFILL 0000001a
-SET USER_P_OK 0000001c
-SET USER_P_ERR 0000001e
-SET USER_P_RDY 00000020
-SET SYSUSERSIZE 00000022
-DEF zerol r2
-DEF zeroh r3
-DEF upl r4
-DEF uph r5
-DEF al r6
-DEF ah r7
-DEF bl r8
-DEF bh r9
-DEF mcu_boot r10
-DEF isrflag r11
-DEF temp4 r14
-DEF temp5 r15
-DEF temp0 r16
-DEF temp1 r17
-DEF temp2 r18
-DEF temp3 r19
-DEF temp6 r20
-DEF temp7 r21
-DEF tosl r24
-DEF tosh r25
-DEF wl r22
-DEF wh r23
-EQU SIGNATURE_000 0000001e
-EQU SIGNATURE_001 00000095
-EQU SIGNATURE_002 00000002
-EQU SREG 0000003f
-EQU SPL 0000003d
-EQU SPH 0000003e
-EQU OCR0 0000003c
-EQU GICR 0000003b
-EQU GIFR 0000003a
-EQU TIMSK 00000039
-EQU TIFR 00000038
-EQU SPMCR 00000037
-EQU TWCR 00000036
-EQU MCUCR 00000035
-EQU MCUCSR 00000034
-EQU TCCR0 00000033
-EQU TCNT0 00000032
-EQU OSCCAL 00000031
-EQU OCDR 00000031
-EQU SFIOR 00000030
-EQU TCCR1A 0000002f
-EQU TCCR1B 0000002e
-EQU TCNT1L 0000002c
-EQU TCNT1H 0000002d
-EQU OCR1AL 0000002a
-EQU OCR1AH 0000002b
-EQU OCR1BL 00000028
-EQU OCR1BH 00000029
-EQU ICR1L 00000026
-EQU ICR1H 00000027
-EQU TCCR2 00000025
-EQU TCNT2 00000024
-EQU OCR2 00000023
-EQU ASSR 00000022
-EQU WDTCR 00000021
-EQU UBRRH 00000020
-EQU UCSRC 00000020
-EQU EEARL 0000001e
-EQU EEARH 0000001f
-EQU EEDR 0000001d
-EQU EECR 0000001c
-EQU PORTA 0000001b
-EQU DDRA 0000001a
-EQU PINA 00000019
-EQU PORTB 00000018
-EQU DDRB 00000017
-EQU PINB 00000016
-EQU PORTC 00000015
-EQU DDRC 00000014
-EQU PINC 00000013
-EQU PORTD 00000012
-EQU DDRD 00000011
-EQU PIND 00000010
-EQU SPDR 0000000f
-EQU SPSR 0000000e
-EQU SPCR 0000000d
-EQU UDR 0000000c
-EQU UCSRA 0000000b
-EQU UCSRB 0000000a
-EQU UBRRL 00000009
-EQU ACSR 00000008
-EQU ADMUX 00000007
-EQU ADCSRA 00000006
-EQU ADCH 00000005
-EQU ADCL 00000004
-EQU TWDR 00000003
-EQU TWAR 00000002
-EQU TWSR 00000001
-EQU TWBR 00000000
-EQU EEDR0 00000000
-EQU EEDR1 00000001
-EQU EEDR2 00000002
-EQU EEDR3 00000003
-EQU EEDR4 00000004
-EQU EEDR5 00000005
-EQU EEDR6 00000006
-EQU EEDR7 00000007
-EQU EERE 00000000
-EQU EEWE 00000001
-EQU EEMWE 00000002
-EQU EERIE 00000003
-EQU WDP0 00000000
-EQU WDP1 00000001
-EQU WDP2 00000002
-EQU WDE 00000003
-EQU WDTOE 00000004
-EQU WDDE 00000004
-EQU GIMSK 0000003b
-EQU IVCE 00000000
-EQU IVSEL 00000001
-EQU INT2 00000005
-EQU INT0 00000006
-EQU INT1 00000007
-EQU INTF2 00000005
-EQU INTF0 00000006
-EQU INTF1 00000007
-EQU ISC00 00000000
-EQU ISC01 00000001
-EQU ISC10 00000002
-EQU ISC11 00000003
-EQU ISC2 00000006
-EQU CS00 00000000
-EQU CS01 00000001
-EQU CS02 00000002
-EQU WGM01 00000003
-EQU CTC0 00000003
-EQU COM00 00000004
-EQU COM01 00000005
-EQU WGM00 00000006
-EQU PWM0 00000006
-EQU FOC0 00000007
-EQU TCNT0_0 00000000
-EQU TCNT0_1 00000001
-EQU TCNT0_2 00000002
-EQU TCNT0_3 00000003
-EQU TCNT0_4 00000004
-EQU TCNT0_5 00000005
-EQU TCNT0_6 00000006
-EQU TCNT0_7 00000007
-EQU OCR0_0 00000000
-EQU OCR0_1 00000001
-EQU OCR0_2 00000002
-EQU OCR0_3 00000003
-EQU OCR0_4 00000004
-EQU OCR0_5 00000005
-EQU OCR0_6 00000006
-EQU OCR0_7 00000007
-EQU TOIE0 00000000
-EQU OCIE0 00000001
-EQU TOV0 00000000
-EQU OCF0 00000001
-EQU TOIE2 00000006
-EQU OCIE2 00000007
-EQU TOV2 00000006
-EQU OCF2 00000007
-EQU CS20 00000000
-EQU CS21 00000001
-EQU CS22 00000002
-EQU WGM21 00000003
-EQU CTC2 00000003
-EQU COM20 00000004
-EQU COM21 00000005
-EQU WGM20 00000006
-EQU PWM2 00000006
-EQU FOC2 00000007
-EQU TCNT2_0 00000000
-EQU TCNT2_1 00000001
-EQU TCNT2_2 00000002
-EQU TCNT2_3 00000003
-EQU TCNT2_4 00000004
-EQU TCNT2_5 00000005
-EQU TCNT2_6 00000006
-EQU TCNT2_7 00000007
-EQU OCR2_0 00000000
-EQU OCR2_1 00000001
-EQU OCR2_2 00000002
-EQU OCR2_3 00000003
-EQU OCR2_4 00000004
-EQU OCR2_5 00000005
-EQU OCR2_6 00000006
-EQU OCR2_7 00000007
-EQU TCR2UB 00000000
-EQU OCR2UB 00000001
-EQU TCN2UB 00000002
-EQU AS2 00000003
-EQU TOIE1 00000002
-EQU OCIE1B 00000003
-EQU OCIE1A 00000004
-EQU TICIE1 00000005
-EQU TOV1 00000002
-EQU OCF1B 00000003
-EQU OCF1A 00000004
-EQU ICF1 00000005
-EQU WGM10 00000000
-EQU PWM10 00000000
-EQU WGM11 00000001
-EQU PWM11 00000001
-EQU FOC1B 00000002
-EQU FOC1A 00000003
-EQU COM1B0 00000004
-EQU COM1B1 00000005
-EQU COM1A0 00000006
-EQU COM1A1 00000007
-EQU CS10 00000000
-EQU CS11 00000001
-EQU CS12 00000002
-EQU WGM12 00000003
-EQU CTC10 00000003
-EQU CTC1 00000003
-EQU WGM13 00000004
-EQU CTC11 00000004
-EQU ICES1 00000006
-EQU ICNC1 00000007
-EQU SPDR0 00000000
-EQU SPDR1 00000001
-EQU SPDR2 00000002
-EQU SPDR3 00000003
-EQU SPDR4 00000004
-EQU SPDR5 00000005
-EQU SPDR6 00000006
-EQU SPDR7 00000007
-EQU SPI2X 00000000
-EQU WCOL 00000006
-EQU SPIF 00000007
-EQU SPR0 00000000
-EQU SPR1 00000001
-EQU CPHA 00000002
-EQU CPOL 00000003
-EQU MSTR 00000004
-EQU DORD 00000005
-EQU SPE 00000006
-EQU SPIE 00000007
-EQU UDR0 00000000
-EQU UDR1 00000001
-EQU UDR2 00000002
-EQU UDR3 00000003
-EQU UDR4 00000004
-EQU UDR5 00000005
-EQU UDR6 00000006
-EQU UDR7 00000007
-EQU USR 0000000b
-EQU MPCM 00000000
-EQU U2X 00000001
-EQU UPE 00000002
-EQU PE 00000002
-EQU DOR 00000003
-EQU FE 00000004
-EQU UDRE 00000005
-EQU TXC 00000006
-EQU RXC 00000007
-EQU UCR 0000000a
-EQU TXB8 00000000
-EQU RXB8 00000001
-EQU UCSZ2 00000002
-EQU CHR9 00000002
-EQU TXEN 00000003
-EQU RXEN 00000004
-EQU UDRIE 00000005
-EQU TXCIE 00000006
-EQU RXCIE 00000007
-EQU UCPOL 00000000
-EQU UCSZ0 00000001
-EQU UCSZ1 00000002
-EQU USBS 00000003
-EQU UPM0 00000004
-EQU UPM1 00000005
-EQU UMSEL 00000006
-EQU URSEL 00000007
-EQU UBRRHI 00000020
-EQU ACME 00000003
-EQU ACIS0 00000000
-EQU ACIS1 00000001
-EQU ACIC 00000002
-EQU ACIE 00000003
-EQU ACI 00000004
-EQU ACO 00000005
-EQU ACBG 00000006
-EQU ACD 00000007
-EQU MUX0 00000000
-EQU MUX1 00000001
-EQU MUX2 00000002
-EQU MUX3 00000003
-EQU MUX4 00000004
-EQU ADLAR 00000005
-EQU REFS0 00000006
-EQU REFS1 00000007
-EQU ADCSR 00000006
-EQU ADPS0 00000000
-EQU ADPS1 00000001
-EQU ADPS2 00000002
-EQU ADIE 00000003
-EQU ADIF 00000004
-EQU ADATE 00000005
-EQU ADFR 00000005
-EQU ADSC 00000006
-EQU ADEN 00000007
-EQU ADCH0 00000000
-EQU ADCH1 00000001
-EQU ADCH2 00000002
-EQU ADCH3 00000003
-EQU ADCH4 00000004
-EQU ADCH5 00000005
-EQU ADCH6 00000006
-EQU ADCH7 00000007
-EQU ADCL0 00000000
-EQU ADCL1 00000001
-EQU ADCL2 00000002
-EQU ADCL3 00000003
-EQU ADCL4 00000004
-EQU ADCL5 00000005
-EQU ADCL6 00000006
-EQU ADCL7 00000007
-EQU ADTS0 00000005
-EQU ADTS1 00000006
-EQU ADTS2 00000007
-EQU PORTA0 00000000
-EQU PA0 00000000
-EQU PORTA1 00000001
-EQU PA1 00000001
-EQU PORTA2 00000002
-EQU PA2 00000002
-EQU PORTA3 00000003
-EQU PA3 00000003
-EQU PORTA4 00000004
-EQU PA4 00000004
-EQU PORTA5 00000005
-EQU PA5 00000005
-EQU PORTA6 00000006
-EQU PA6 00000006
-EQU PORTA7 00000007
-EQU PA7 00000007
-EQU DDA0 00000000
-EQU DDA1 00000001
-EQU DDA2 00000002
-EQU DDA3 00000003
-EQU DDA4 00000004
-EQU DDA5 00000005
-EQU DDA6 00000006
-EQU DDA7 00000007
-EQU PINA0 00000000
-EQU PINA1 00000001
-EQU PINA2 00000002
-EQU PINA3 00000003
-EQU PINA4 00000004
-EQU PINA5 00000005
-EQU PINA6 00000006
-EQU PINA7 00000007
-EQU PORTB0 00000000
-EQU PB0 00000000
-EQU PORTB1 00000001
-EQU PB1 00000001
-EQU PORTB2 00000002
-EQU PB2 00000002
-EQU PORTB3 00000003
-EQU PB3 00000003
-EQU PORTB4 00000004
-EQU PB4 00000004
-EQU PORTB5 00000005
-EQU PB5 00000005
-EQU PORTB6 00000006
-EQU PB6 00000006
-EQU PORTB7 00000007
-EQU PB7 00000007
-EQU DDB0 00000000
-EQU DDB1 00000001
-EQU DDB2 00000002
-EQU DDB3 00000003
-EQU DDB4 00000004
-EQU DDB5 00000005
-EQU DDB6 00000006
-EQU DDB7 00000007
-EQU PINB0 00000000
-EQU PINB1 00000001
-EQU PINB2 00000002
-EQU PINB3 00000003
-EQU PINB4 00000004
-EQU PINB5 00000005
-EQU PINB6 00000006
-EQU PINB7 00000007
-EQU PORTC0 00000000
-EQU PC0 00000000
-EQU PORTC1 00000001
-EQU PC1 00000001
-EQU PORTC2 00000002
-EQU PC2 00000002
-EQU PORTC3 00000003
-EQU PC3 00000003
-EQU PORTC4 00000004
-EQU PC4 00000004
-EQU PORTC5 00000005
-EQU PC5 00000005
-EQU PORTC6 00000006
-EQU PC6 00000006
-EQU PORTC7 00000007
-EQU PC7 00000007
-EQU DDC0 00000000
-EQU DDC1 00000001
-EQU DDC2 00000002
-EQU DDC3 00000003
-EQU DDC4 00000004
-EQU DDC5 00000005
-EQU DDC6 00000006
-EQU DDC7 00000007
-EQU PINC0 00000000
-EQU PINC1 00000001
-EQU PINC2 00000002
-EQU PINC3 00000003
-EQU PINC4 00000004
-EQU PINC5 00000005
-EQU PINC6 00000006
-EQU PINC7 00000007
-EQU PORTD0 00000000
-EQU PD0 00000000
-EQU PORTD1 00000001
-EQU PD1 00000001
-EQU PORTD2 00000002
-EQU PD2 00000002
-EQU PORTD3 00000003
-EQU PD3 00000003
-EQU PORTD4 00000004
-EQU PD4 00000004
-EQU PORTD5 00000005
-EQU PD5 00000005
-EQU PORTD6 00000006
-EQU PD6 00000006
-EQU PORTD7 00000007
-EQU PD7 00000007
-EQU DDD0 00000000
-EQU DDD1 00000001
-EQU DDD2 00000002
-EQU DDD3 00000003
-EQU DDD4 00000004
-EQU DDD5 00000005
-EQU DDD6 00000006
-EQU DDD7 00000007
-EQU PIND0 00000000
-EQU PIND1 00000001
-EQU PIND2 00000002
-EQU PIND3 00000003
-EQU PIND4 00000004
-EQU PIND5 00000005
-EQU PIND6 00000006
-EQU PIND7 00000007
-EQU SREG_C 00000000
-EQU SREG_Z 00000001
-EQU SREG_N 00000002
-EQU SREG_V 00000003
-EQU SREG_S 00000004
-EQU SREG_H 00000005
-EQU SREG_T 00000006
-EQU SREG_I 00000007
-EQU SM0 00000004
-EQU SM1 00000005
-EQU SM2 00000006
-EQU SE 00000007
-EQU MCUSR 00000034
-EQU PORF 00000000
-EQU EXTRF 00000001
-EQU BORF 00000002
-EQU WDRF 00000003
-EQU JTRF 00000004
-EQU JTD 00000007
-EQU CAL0 00000000
-EQU CAL1 00000001
-EQU CAL2 00000002
-EQU CAL3 00000003
-EQU CAL4 00000004
-EQU CAL5 00000005
-EQU CAL6 00000006
-EQU CAL7 00000007
-EQU PSR10 00000000
-EQU PSR2 00000001
-EQU PUD 00000002
-EQU SPMEN 00000000
-EQU PGERS 00000001
-EQU PGWRT 00000002
-EQU BLBSET 00000003
-EQU RWWSRE 00000004
-EQU ASRE 00000004
-EQU RWWSB 00000006
-EQU ASB 00000006
-EQU SPMIE 00000007
-EQU TWBR0 00000000
-EQU TWBR1 00000001
-EQU TWBR2 00000002
-EQU TWBR3 00000003
-EQU TWBR4 00000004
-EQU TWBR5 00000005
-EQU TWBR6 00000006
-EQU TWBR7 00000007
-EQU TWIE 00000000
-EQU TWEN 00000002
-EQU TWWC 00000003
-EQU TWSTO 00000004
-EQU TWSTA 00000005
-EQU TWEA 00000006
-EQU TWINT 00000007
-EQU TWPS0 00000000
-EQU TWPS1 00000001
-EQU TWS3 00000003
-EQU TWS4 00000004
-EQU TWS5 00000005
-EQU TWS6 00000006
-EQU TWS7 00000007
-EQU TWD0 00000000
-EQU TWD1 00000001
-EQU TWD2 00000002
-EQU TWD3 00000003
-EQU TWD4 00000004
-EQU TWD5 00000005
-EQU TWD6 00000006
-EQU TWD7 00000007
-EQU TWGCE 00000000
-EQU TWA0 00000001
-EQU TWA1 00000002
-EQU TWA2 00000003
-EQU TWA3 00000004
-EQU TWA4 00000005
-EQU TWA5 00000006
-EQU TWA6 00000007
-EQU LB1 00000000
-EQU LB2 00000001
-EQU BLB01 00000002
-EQU BLB02 00000003
-EQU BLB11 00000004
-EQU BLB12 00000005
-EQU CKSEL0 00000000
-EQU CKSEL1 00000001
-EQU CKSEL2 00000002
-EQU CKSEL3 00000003
-EQU BODEN 00000006
-EQU BODLEVEL 00000007
-EQU BOOTRST 00000000
-EQU BOOTSZ0 00000001
-EQU BOOTSZ1 00000002
-EQU EESAVE 00000003
-EQU SPIEN 00000005
-EQU JTAGEN 00000006
-EQU OCDEN 00000007
-DEF XH r27
-DEF XL r26
-DEF YH r29
-DEF YL r28
-DEF ZH r31
-DEF ZL r30
-EQU FLASHEND 00003fff
-EQU IOEND 0000003f
-EQU SRAM_START 00000060
-EQU SRAM_SIZE 00000800
-EQU RAMEND 0000085f
-EQU XRAMEND 00000000
-EQU E2END 000003ff
-EQU EEPROMEND 000003ff
-EQU EEADRBITS 0000000a
-EQU NRWW_START_ADDR 00003800
-EQU NRWW_STOP_ADDR 00003fff
-EQU RWW_START_ADDR 00000000
-EQU RWW_STOP_ADDR 000037ff
-EQU PAGESIZE 00000040
-EQU FIRSTBOOTSTART 00003f00
-EQU SECONDBOOTSTART 00003e00
-EQU THIRDBOOTSTART 00003c00
-EQU FOURTHBOOTSTART 00003800
-EQU SMALLBOOTSTART 00003f00
-EQU LARGEBOOTSTART 00003800
-EQU INT0addr 00000002
-EQU INT1addr 00000004
-EQU INT2addr 00000006
-EQU OC2addr 00000008
-EQU OVF2addr 0000000a
-EQU ICP1addr 0000000c
-EQU OC1Aaddr 0000000e
-EQU OC1Baddr 00000010
-EQU OVF1addr 00000012
-EQU OC0addr 00000014
-EQU OVF0addr 00000016
-EQU SPIaddr 00000018
-EQU URXCaddr 0000001a
-EQU UDREaddr 0000001c
-EQU UTXCaddr 0000001e
-EQU ADCCaddr 00000020
-EQU ERDYaddr 00000022
-EQU ACIaddr 00000024
-EQU TWIaddr 00000026
-EQU SPMRaddr 00000028
-EQU INT_VECTORS_SIZE 0000002a
-EQU ramstart 00000060
-EQU CELLSIZE 00000002
-SET WANT_EEPROM 00000000
-SET WANT_WATCHDOG 00000000
-SET WANT_EXTERNAL_INTERRUPT 00000000
-SET WANT_TIMER_COUNTER_0 00000000
-SET WANT_TIMER_COUNTER_2 00000000
-SET WANT_TIMER_COUNTER_1 00000000
-SET WANT_SPI 00000000
-SET WANT_USART 00000000
-SET WANT_ANALOG_COMPARATOR 00000000
-SET WANT_AD_CONVERTER 00000000
-SET WANT_PORTA 00000000
-SET WANT_PORTB 00000000
-SET WANT_PORTC 00000000
-SET WANT_PORTD 00000000
-SET WANT_CPU 00000000
-SET WANT_BOOT_LOAD 00000000
-SET WANT_TWI 00000000
-EQU intvecsize 00000002
-EQU pclen 00000002
-CSEG isr 0000011e
-EQU INTVECTORS 00000015
-EQU SPMCSR 00000037
-EQU EEPE 00000001
-EQU EEMPE 00000002
-CSEG mcu_info 00000029
-CSEG mcu_ramsize 00000029
-CSEG mcu_eepromsize 0000002a
-CSEG mcu_maxdp 0000002b
-CSEG mcu_numints 0000002c
-CSEG mcu_name 0000002d
-SET codestart 00000032
-SET WANT_INTERRUPTS 00000001
-SET WANT_INTERRUPT_COUNTERS 00000000
-SET WANT_ISR_RX 00000001
-SET WANT_IGNORECASE 00000000
-SET WANT_UNIFIED 00000000
-SET TIB_SIZE 0000005a
-SET APPUSERSIZE 0000000a
-SET rstackstart 0000085f
-SET stackstart 0000080f
-SET NUMWORDLISTS 00000008
-SET NUMRECOGNIZERS 00000004
-SET BAUD 00009600
-SET BAUD_MAXERROR 0000001e
-SET VE_HEAD 00003fed
-SET VE_ENVHEAD 000002f4
-SET AMFORTH_RO_SEG 00003801
-EQU F_CPU 007a1200
-EQU TIMER_INT 0000000a
-EQU BAUDRATE_LOW 00000029
-EQU BAUDRATE_HIGH 00000040
-EQU USART_C 00000040
-EQU USART_B 0000002a
-EQU USART_A 0000002b
-EQU USART_DATA 0000002c
-EQU bm_USARTC_en 00000080
-EQU bm_USART_RXRD 00000080
-EQU bm_USART_TXRD 00000020
-EQU bm_ENABLE_TX 00000008
-EQU bm_ENABLE_RX 00000010
-EQU bm_ENABLE_INT_RX 00000080
-EQU bm_ENABLE_INT_TX 00000020
-EQU bm_ASYNC 00000000
-EQU bm_SYNC 00000040
-EQU bm_NO_PARITY 00000000
-EQU bm_EVEN_PARITY 00000020
-EQU bm_ODD_PARITY 00000030
-EQU bm_1STOPBIT 00000000
-EQU bm_2STOPBIT 00000008
-EQU bm_5BIT 00000000
-EQU bm_6BIT 00000002
-EQU bm_7BIT 00000004
-EQU bm_8BIT 00000006
-SET USART_C_VALUE 00000006
-SET USART_B_VALUE 00000098
-EQU usart_rx_size 00000010
-EQU usart_rx_mask 0000000f
-DSEG usart_rx_data 00000060
-DSEG usart_rx_in 00000070
-DSEG usart_rx_out 00000071
-CSEG VE_TO_RXBUF 00000032
-CSEG XT_TO_RXBUF 00000038
-CSEG PFA_rx_tobuf 00000039
-CSEG DO_NEXT 00003805
-CSEG VE_ISR_RX 00000049
-CSEG XT_ISR_RX 0000004e
-CSEG DO_COLON 00003801
-CSEG usart_rx_isr 0000004f
-CSEG XT_DOLITERAL 0000383d
-CSEG XT_CFETCH 00003898
-CSEG XT_DUP 000038b1
-CSEG XT_EQUAL 00003fdf
-CSEG XT_DOCONDBRANCH 00003836
-CSEG usart_rx_isr1 00000059
-CSEG XT_COLD 00003d38
-CSEG XT_EXIT 00003820
-CSEG XT_USART_INIT_RX_BUFFER 0000005b
-CSEG PFA_USART_INIT_RX_BUFFER 0000005c
-CSEG XT_INTSTORE 00003ca5
-CSEG XT_ZERO 00003954
-CSEG XT_FILL 00003e98
-CSEG VE_RX_BUFFER 00000068
-CSEG XT_RX_BUFFER 0000006d
-CSEG PFA_RX_BUFFER 0000006e
-CSEG XT_RXQ_BUFFER 00000088
-CSEG XT_PLUS 0000399d
-CSEG XT_SWAP 000038c4
-CSEG XT_1PLUS 00003a2f
-CSEG XT_AND 00003a13
-CSEG XT_CSTORE 0000388d
-CSEG VE_RXQ_BUFFER 00000082
-CSEG PFA_RXQ_BUFFER 00000089
-CSEG XT_PAUSE 00003d30
-CSEG XT_NOTEQUAL 00003913
-SET XT_RX 0000006d
-SET XT_RXQ 00000088
-SET XT_USART_INIT_RX 0000005b
-CSEG VE_TX_POLL 00000092
-CSEG XT_TX_POLL 00000098
-CSEG PFA_TX_POLL 00000099
-CSEG XT_TXQ_POLL 000000a6
-CSEG VE_TXQ_POLL 000000a0
-CSEG PFA_TXQ_POLL 000000a7
-SET XT_TX 00000098
-SET XT_TXQ 000000a6
-SET XT_USART_INIT_TX 00000000
-CSEG VE_UBRR 000000af
-CSEG XT_UBRR 000000b3
-CSEG PFA_DOVALUE1 0000386f
-CSEG PFA_UBRR 000000b4
-ESEG EE_UBRRVAL 00000082
-CSEG XT_EDEFERFETCH 00003da0
-CSEG XT_EDEFERSTORE 00003daa
-CSEG VE_USART 000000b7
-CSEG XT_USART 000000bc
-CSEG PFA_USART 000000bd
-CSEG XT_BYTESWAP 00003af9
-EQU OW_PORT 00000018
-EQU OW_BIT 00000004
-SET OW_DDR 00000017
-SET OW_PIN 00000016
-CSEG VE_OW_RESET 000000d2
-CSEG XT_OW_RESET 000000d8
-CSEG PFA_OW_RESET 000000d9
-SET cycles 00000000
-SET loop_cycles 000007d0
-CSEG VE_OW_SLOT 000000f6
-CSEG XT_OW_SLOT 000000fc
-CSEG PFA_OW_SLOT 000000fd
-CSEG PFA_OW_SLOT0 0000010a
-SET AMFORTH_NRWW_SIZE 00000ffc
-SET corepc 0000011e
-CSEG PFA_COLD 00003d39
-ESEG intvec 00000000
-DSEG intcnt 00000072
-CSEG VE_MPLUS 00000135
-CSEG XT_MPLUS 00000138
-CSEG PFA_MPLUS 00000139
-CSEG XT_S2D 00003fc7
-CSEG XT_DPLUS 00003c15
-CSEG VE_UDSTAR 0000013c
-CSEG XT_UDSTAR 00000140
-CSEG PFA_UDSTAR 00000141
-CSEG XT_TO_R 000038ff
-CSEG XT_UMSTAR 000039e0
-CSEG XT_DROP 000038d9
-CSEG XT_R_FROM 000038f6
-CSEG XT_ROT 000038e1
-CSEG VE_UMAX 0000014b
-CSEG XT_UMAX 0000014f
-CSEG PFA_UMAX 00000150
-CSEG XT_2DUP 00003ec9
-CSEG XT_ULESS 0000395c
-CSEG UMAX1 00000155
-CSEG VE_UMIN 00000157
-CSEG XT_UMIN 0000015b
-CSEG PFA_UMIN 0000015c
-CSEG XT_UGREATER 00003967
-CSEG UMIN1 00000161
-CSEG XT_IMMEDIATEQ 00000163
-CSEG PFA_IMMEDIATEQ 00000164
-CSEG XT_ZEROEQUAL 0000391a
-CSEG IMMEDIATEQ1 0000016c
-CSEG XT_ONE 00003fe6
-CSEG XT_TRUE 0000394b
-CSEG VE_NAME2FLAGS 0000016e
-CSEG XT_NAME2FLAGS 00000175
-CSEG PFA_NAME2FLAGS 00000176
-CSEG XT_FETCHI 00003bcb
-CSEG VE_DOT_VER 0000017b
-CSEG XT_DOT_VER 0000017f
-CSEG PFA_DOT_VER 00000180
-CSEG XT_ENV_FORTHNAME 000002cf
-CSEG XT_ITYPE 000003f8
-CSEG XT_SPACE 00003fae
-CSEG XT_BASE 00003ebd
-CSEG XT_FETCH 00003879
-CSEG XT_ENV_FORTHVERSION 000002dd
-CSEG XT_DECIMAL 00003f41
-CSEG XT_L_SHARP 00000316
-CSEG XT_SHARP 0000031e
-CSEG XT_HOLD 00000307
-CSEG XT_SHARP_S 00000334
-CSEG XT_SHARP_G 0000033f
-CSEG XT_TYPE 0000042e
-CSEG XT_STORE 00003881
-CSEG XT_ENV_CPU 000002e5
-CSEG VE_NOOP 00000196
-CSEG XT_NOOP 0000019a
-CSEG PFA_NOOP 0000019b
-CSEG VE_UNUSED 0000019c
-CSEG XT_UNUSED 000001a1
-CSEG PFA_UNUSED 000001a2
-CSEG XT_SP_FETCH 00003a8d
-CSEG XT_HERE 00003f23
-CSEG XT_MINUS 00003993
-CSEG VE_TO 000001a6
-CSEG XT_TO 000001a9
-CSEG PFA_TO 000001aa
-CSEG XT_TICK 0000043d
-CSEG XT_TO_BODY 00003fd0
-CSEG XT_STATE 00003eb7
-CSEG PFA_TO1 000001ba
-CSEG XT_COMPILE 00000751
-CSEG XT_DOTO 000001b4
-CSEG XT_COMMA 0000075c
-CSEG PFA_DOTO 000001b5
-CSEG XT_ICELLPLUS 000001c6
-CSEG XT_EXECUTE 0000382a
-CSEG VE_ICELLPLUS 000001c0
-CSEG PFA_ICELLPLUS 000001c7
-CSEG VE_ICOMPARE 000001c9
-CSEG XT_ICOMPARE 000001cf
-CSEG PFA_ICOMPARE 000001d0
-CSEG XT_OVER 000038cf
-CSEG PFA_ICOMPARE_SAMELEN 000001da
-CSEG XT_2DROP 00003ed2
-CSEG XT_QDOCHECK 0000081b
-CSEG PFA_ICOMPARE_DONE 000001fd
-CSEG XT_DODO 00003a9b
-CSEG PFA_ICOMPARE_LOOP 000001e0
-CSEG PFA_ICOMPARE_LASTCELL 000001ee
-CSEG PFA_ICOMPARE_NEXTLOOP 000001f5
-CSEG XT_UNLOOP 00003ad4
-CSEG XT_CELLPLUS 00003c90
-CSEG XT_DOPLUSLOOP 00003aba
-CSEG VE_STAR 00000200
-CSEG XT_STAR 00000203
-CSEG PFA_STAR 00000204
-CSEG XT_MSTAR 000039a6
-CSEG VE_J 00000207
-CSEG XT_J 0000020a
-CSEG PFA_J 0000020b
-CSEG XT_RP_FETCH 00003a76
-CSEG VE_DABS 00000217
-CSEG XT_DABS 0000021b
-CSEG PFA_DABS 0000021c
-CSEG XT_ZEROLESS 00003921
-CSEG PFA_DABS1 00000221
-CSEG XT_DNEGATE 00000228
-CSEG VE_DNEGATE 00000222
-CSEG PFA_DNEGATE 00000229
-CSEG XT_DINVERT 00003c3b
-CSEG VE_CMOVE 0000022e
-CSEG XT_CMOVE 00000233
-CSEG PFA_CMOVE 00000234
-CSEG PFA_CMOVE1 00000241
-CSEG PFA_CMOVE2 0000023d
-CSEG VE_2SWAP 00000247
-CSEG XT_2SWAP 0000024c
-CSEG PFA_2SWAP 0000024d
-CSEG VE_REFILLTIB 00000252
-CSEG XT_REFILLTIB 00000259
-CSEG PFA_REFILLTIB 0000025a
-CSEG XT_TIB 00000275
-CSEG XT_ACCEPT 0000048d
-CSEG XT_NUMBERTIB 0000027b
-CSEG XT_TO_IN 00003ee2
-CSEG VE_SOURCETIB 00000265
-CSEG XT_SOURCETIB 0000026c
-CSEG PFA_SOURCETIB 0000026d
-CSEG VE_TIB 00000271
-CSEG PFA_DOVARIABLE 00003848
-CSEG PFA_TIB 00000276
-DSEG ram_tib 00000087
-CSEG VE_NUMBERTIB 00000277
-CSEG PFA_NUMBERTIB 0000027c
-DSEG ram_sharptib 000000e1
-CSEG VE_EE2RAM 0000027d
-CSEG XT_EE2RAM 00000282
-CSEG PFA_EE2RAM 00000283
-CSEG PFA_EE2RAM_1 00000285
-CSEG XT_FETCHE 00003b5f
-CSEG XT_DOLOOP 00003ac9
-CSEG PFA_EE2RAM_2 0000028f
-CSEG VE_INIT_RAM 00000291
-CSEG XT_INIT_RAM 00000297
-CSEG PFA_INI_RAM 00000298
-ESEG EE_INITUSER 00000060
-CSEG XT_UP_FETCH 00003b02
-CSEG XT_2SLASH 00003a04
-CSEG VE_ENVIRONMENT 000002a0
-CSEG XT_ENVIRONMENT 000002a8
-CSEG PFA_ENVIRONMENT 000002a9
-ESEG CFG_ENVIRONMENT 0000003a
-CSEG VE_ENVWORDLISTS 000002aa
-CSEG XT_ENVWORDLISTS 000002b1
-CSEG PFA_ENVWORDLISTS 000002b2
-CSEG VE_ENVSLASHPAD 000002b5
-CSEG XT_ENVSLASHPAD 000002b9
-CSEG PFA_ENVSLASHPAD 000002ba
-CSEG XT_PAD 00003ee8
-CSEG VE_ENVSLASHHOLD 000002be
-CSEG XT_ENVSLASHHOLD 000002c3
-CSEG PFA_ENVSLASHHOLD 000002c4
-CSEG VE_ENV_FORTHNAME 000002c8
-CSEG PFA_EN_FORTHNAME 000002d0
-CSEG XT_DOSLITERAL 000003c5
-CSEG VE_ENV_FORTHVERSION 000002d7
-CSEG PFA_EN_FORTHVERSION 000002de
-CSEG VE_ENV_CPU 000002e1
-CSEG PFA_EN_CPU 000002e6
-CSEG XT_ICOUNT 00000424
-CSEG VE_ENV_MCUINFO 000002ea
-CSEG XT_ENV_MCUINFO 000002f0
-CSEG PFA_EN_MCUINFO 000002f1
-CSEG VE_ENVUSERSIZE 000002f4
-CSEG XT_ENVUSERSIZE 000002f9
-CSEG PFA_ENVUSERSIZE 000002fa
-CSEG VE_HLD 000002fd
-CSEG XT_HLD 00000301
-CSEG PFA_HLD 00000302
-DSEG ram_hld 000000e3
-CSEG VE_HOLD 00000303
-CSEG PFA_HOLD 00000308
-CSEG XT_1MINUS 00003a35
-CSEG VE_L_SHARP 00000313
-CSEG PFA_L_SHARP 00000317
-CSEG VE_SHARP 0000031b
-CSEG PFA_SHARP 0000031f
-CSEG XT_UDSLASHMOD 0000039b
-CSEG XT_LESS 0000396e
-CSEG PFA_SHARP1 0000032c
-CSEG VE_SHARP_S 00000331
-CSEG PFA_SHARP_S 00000335
-CSEG NUMS1 00000335
-CSEG XT_OR 00003a1c
-CSEG VE_SHARP_G 0000033c
-CSEG PFA_SHARP_G 00000340
-CSEG VE_SIGN 00000347
-CSEG XT_SIGN 0000034b
-CSEG PFA_SIGN 0000034c
-CSEG PFA_SIGN1 00000352
-CSEG VE_DDOTR 00000353
-CSEG XT_DDOTR 00000357
-CSEG PFA_DDOTR 00000358
-CSEG XT_TUCK 00003eda
-CSEG XT_SPACES 00003fb7
-CSEG VE_DOTR 00000366
-CSEG XT_DOTR 00000369
-CSEG PFA_DOTR 0000036a
-CSEG VE_DDOT 0000036f
-CSEG XT_DDOT 00000372
-CSEG PFA_DDOT 00000373
-CSEG VE_DOT 00000377
-CSEG XT_DOT 0000037a
-CSEG PFA_DOT 0000037b
-CSEG VE_UDDOT 0000037e
-CSEG XT_UDDOT 00000382
-CSEG PFA_UDDOT 00000383
-CSEG XT_UDDOTR 0000038b
-CSEG VE_UDDOTR 00000387
-CSEG PFA_UDDOTR 0000038c
-CSEG VE_UDSLASHMOD 00000396
-CSEG PFA_UDSLASHMOD 0000039c
-CSEG XT_R_FETCH 00003908
-CSEG XT_UMSLASHMOD 000039c2
-CSEG VE_DIGITQ 000003a6
-CSEG XT_DIGITQ 000003ab
-CSEG PFA_DIGITQ 000003ac
-CSEG XT_TOUPPER 00003f66
-CSEG XT_GREATER 00003978
-CSEG PFA_DOSLITERAL 000003c6
-CSEG VE_SCOMMA 000003d0
-CSEG XT_SCOMMA 000003d3
-CSEG PFA_SCOMMA 000003d4
-CSEG XT_DOSCOMMA 000003d7
-CSEG PFA_DOSCOMMA 000003d8
-CSEG XT_2STAR 00003a0b
-CSEG PFA_SCOMMA2 000003ea
-CSEG PFA_SCOMMA1 000003e4
-CSEG XT_GREATERZERO 00003928
-CSEG PFA_SCOMMA3 000003f1
-CSEG VE_ITYPE 000003f3
-CSEG PFA_ITYPE 000003f9
-CSEG PFA_ITYPE2 0000040c
-CSEG PFA_ITYPE1 00000404
-CSEG XT_LOWEMIT 00000419
-CSEG XT_HIEMIT 00000415
-CSEG PFA_ITYPE3 00000413
-CSEG PFA_HIEMIT 00000416
-CSEG PFA_LOWEMIT 0000041a
-CSEG XT_EMIT 00003ef2
-CSEG VE_ICOUNT 0000041f
-CSEG PFA_ICOUNT 00000425
-CSEG VE_TYPE 0000042a
-CSEG PFA_TYPE 0000042f
-CSEG XT_BOUNDS 00003f99
-CSEG PFA_TYPE2 00000439
-CSEG PFA_TYPE1 00000434
-CSEG XT_I 00003aac
-CSEG VE_TICK 0000043a
-CSEG PFA_TICK 0000043e
-CSEG XT_PARSENAME 000005b0
-CSEG XT_FORTHRECOGNIZER 000005f3
-CSEG XT_RECOGNIZE 000005fe
-CSEG XT_DT_NULL 0000068b
-CSEG PFA_TICK1 0000044f
-CSEG XT_THROW 00003d86
-CSEG VE_CSKIP 00000451
-CSEG XT_CSKIP 00000456
-CSEG PFA_CSKIP 00000457
-CSEG PFA_CSKIP1 00000458
-CSEG PFA_CSKIP2 00000465
-CSEG XT_SLASHSTRING 000005a1
-CSEG XT_DOBRANCH 0000382f
-CSEG VE_CSCAN 00000468
-CSEG XT_CSCAN 0000046d
-CSEG PFA_CSCAN 0000046e
-CSEG PFA_CSCAN1 00000470
-CSEG PFA_CSCAN2 00000482
-CSEG XT_NIP 000038f0
-CSEG VE_ACCEPT 00000488
-CSEG PFA_ACCEPT 0000048e
-CSEG ACC1 00000492
-CSEG XT_KEY 00003f03
-CSEG XT_CRLFQ 000004ce
-CSEG ACC5 000004c0
-CSEG ACC3 000004b0
-CSEG ACC6 000004ae
-CSEG XT_BS 000004c6
-CSEG ACC4 000004be
-CSEG XT_BL 00003f54
-CSEG PFA_ACCEPT6 000004b7
-CSEG XT_CR 00003fa1
-CSEG VE_REFILL 000004d9
-CSEG XT_REFILL 000004de
-CSEG PFA_DODEFER1 00003dff
-CSEG PFA_REFILL 000004df
-CSEG XT_UDEFERFETCH 00003dc8
-CSEG XT_UDEFERSTORE 00003dd4
-CSEG VE_CHAR 000004e2
-CSEG XT_CHAR 000004e6
-CSEG PFA_CHAR 000004e7
-CSEG VE_NUMBER 000004eb
-CSEG XT_NUMBER 000004f0
-CSEG PFA_NUMBER 000004f1
-CSEG XT_QSIGN 00000534
-CSEG XT_SET_BASE 00000547
-CSEG PFA_NUMBER0 00000507
-CSEG XT_2TO_R 00003b1e
-CSEG XT_2R_FROM 00003b2d
-CSEG XT_TO_NUMBER 00000565
-CSEG XT_QDUP 000038b9
-CSEG PFA_NUMBER1 00000529
-CSEG PFA_NUMBER2 00000520
-CSEG PFA_NUMBER6 00000521
-CSEG PFA_NUMBER3 0000051d
-CSEG XT_TWO 00003feb
-CSEG PFA_NUMBER5 0000052f
-CSEG PFA_NUMBER4 0000052e
-CSEG XT_NEGATE 00003e27
-CSEG PFA_QSIGN 00000535
-CSEG PFA_NUMBERSIGN_DONE 00000540
-CSEG XT_BASES 00000542
-CSEG PFA_DOCONSTANT 00003852
-CSEG PFA_SET_BASE 00000548
-CSEG XT_WITHIN 00003e57
-CSEG SET_BASE1 0000055d
-CSEG SET_BASE2 0000055e
-CSEG VE_TO_NUMBER 0000055f
-CSEG TONUM1 00000566
-CSEG TONUM3 0000057d
-CSEG TONUM2 00000571
-CSEG VE_PARSE 0000057e
-CSEG XT_PARSE 00000583
-CSEG PFA_PARSE 00000584
-CSEG XT_SOURCE 00000597
-CSEG XT_PLUSSTORE 00003a65
-CSEG VE_SOURCE 00000592
-CSEG PFA_SOURCE 00000598
-CSEG VE_SLASHSTRING 0000059b
-CSEG PFA_SLASHSTRING 000005a2
-CSEG VE_PARSENAME 000005a9
-CSEG PFA_PARSENAME 000005b1
-CSEG XT_SKIPSCANCHAR 000005b4
-CSEG PFA_SKIPSCANCHAR 000005b5
-CSEG VE_SP0 000005c6
-CSEG XT_SP0 000005ca
-CSEG PFA_SP0 000005cb
-CSEG VE_SP 000005ce
-CSEG XT_SP 000005d1
-CSEG PFA_DOUSER 00003858
-CSEG PFA_SP 000005d2
-CSEG VE_RP0 000005d3
-CSEG XT_RP0 000005d7
-CSEG PFA_RP0 000005d8
-CSEG XT_DORP0 000005db
-CSEG PFA_DORP0 000005dc
-CSEG VE_DEPTH 000005dd
-CSEG XT_DEPTH 000005e2
-CSEG PFA_DEPTH 000005e3
-CSEG VE_FORTHRECOGNIZER 000005e9
-CSEG PFA_FORTHRECOGNIZER 000005f4
-ESEG CFG_FORTHRECOGNIZER 00000034
-CSEG VE_RECOGNIZE 000005f7
-CSEG PFA_RECOGNIZE 000005ff
-CSEG XT_RECOGNIZE_A 00000609
-CSEG XT_MAPSTACK 0000099c
-CSEG PFA_RECOGNIZE1 00000608
-CSEG PFA_RECOGNIZE_A 0000060a
-CSEG PFA_RECOGNIZE_A1 0000061a
-CSEG VE_INTERPRET 0000061e
-CSEG XT_INTERPRET 00000625
-CSEG PFA_INTERPRET 00000626
-CSEG PFA_INTERPRET2 00000636
-CSEG PFA_INTERPRET1 00000631
-CSEG XT_QSTACK 00003f8b
-CSEG VE_DT_NUM 00000638
-CSEG XT_DT_NUM 0000063d
-CSEG PFA_DT_NUM 0000063e
-CSEG XT_LITERAL 00000772
-CSEG VE_DT_DNUM 00000641
-CSEG XT_DT_DNUM 00000647
-CSEG PFA_DT_DNUM 00000648
-CSEG XT_2LITERAL 00003fd7
-CSEG VE_REC_NUM 0000064b
-CSEG XT_REC_NUM 00000651
-CSEG PFA_REC_NUM 00000652
-CSEG PFA_REC_NONUMBER 0000065d
-CSEG PFA_REC_INTNUM2 0000065b
-CSEG VE_REC_FIND 0000065f
-CSEG XT_REC_FIND 00000665
-CSEG PFA_REC_FIND 00000666
-CSEG XT_FINDXT 00000700
-CSEG PFA_REC_WORD_FOUND 0000066e
-CSEG XT_DT_XT 00000675
-CSEG VE_DT_XT 00000670
-CSEG PFA_DT_XT 00000676
-CSEG XT_R_WORD_INTERPRET 00000679
-CSEG XT_R_WORD_COMPILE 0000067d
-CSEG PFA_R_WORD_INTERPRET 0000067a
-CSEG PFA_R_WORD_COMPILE 0000067e
-CSEG PFA_R_WORD_COMPILE1 00000683
-CSEG VE_DT_NULL 00000685
-CSEG PFA_DT_NULL 0000068c
-CSEG XT_FAIL 0000068f
-CSEG PFA_FAIL 00000690
-CSEG VE_SEARCH_WORDLIST 00000693
-CSEG XT_SEARCH_WORDLIST 0000069d
-CSEG PFA_SEARCH_WORDLIST 0000069e
-CSEG XT_ISWORD 000006b2
-CSEG XT_TRAVERSEWORDLIST 000006cf
-CSEG PFA_SEARCH_WORDLIST1 000006ac
-CSEG XT_NFA2CFA 000006f6
-CSEG PFA_ISWORD 000006b3
-CSEG XT_NAME2STRING 000006ea
-CSEG PFA_ISWORD3 000006c0
-CSEG VE_TRAVERSEWORDLIST 000006c4
-CSEG PFA_TRAVERSEWORDLIST 000006d0
-CSEG PFA_TRAVERSEWORDLIST1 000006d1
-CSEG PFA_TRAVERSEWORDLIST2 000006e0
-CSEG XT_NFA2LFA 00000a0b
-CSEG VE_NAME2STRING 000006e2
-CSEG PFA_NAME2STRING 000006eb
-CSEG VE_NFA2CFA 000006f0
-CSEG PFA_NFA2CFA 000006f7
-CSEG VE_FINDXT 000006fa
-CSEG PFA_FINDXT 00000701
-CSEG XT_FINDXTA 0000070c
-ESEG CFG_ORDERLISTLEN 00000040
-CSEG PFA_FINDXT1 0000070b
-CSEG PFA_FINDXTA 0000070d
-CSEG PFA_FINDXTA1 00000719
-CSEG VE_NEWEST 0000071a
-CSEG XT_NEWEST 0000071f
-CSEG PFA_NEWEST 00000720
-DSEG ram_newest 000000e5
-CSEG VE_LATEST 00000721
-CSEG XT_LATEST 00000726
-CSEG PFA_LATEST 00000727
-DSEG ram_latest 000000e9
-CSEG VE_DOCREATE 00000728
-CSEG XT_DOCREATE 0000072e
-CSEG PFA_DOCREATE 0000072f
-CSEG XT_WLSCOPE 00000885
-CSEG XT_HEADER 0000086a
-CSEG VE_BACKSLASH 00000739
-CSEG XT_BACKSLASH 0000073c
-CSEG PFA_BACKSLASH 0000073d
-CSEG VE_LPAREN 00000742
-CSEG XT_LPAREN 00000745
-CSEG PFA_LPAREN 00000746
-CSEG VE_COMPILE 0000074b
-CSEG PFA_COMPILE 00000752
-CSEG VE_COMMA 00000759
-CSEG PFA_COMMA 0000075d
-CSEG XT_DP 00003f12
-CSEG XT_STOREI 00003b73
-CSEG PFA_DP 00003f13
-CSEG VE_BRACKETTICK 00000764
-CSEG XT_BRACKETTICK 00000768
-CSEG PFA_BRACKETTICK 00000769
-CSEG VE_LITERAL 0000076c
-CSEG PFA_LITERAL 00000773
-CSEG VE_SLITERAL 00000777
-CSEG XT_SLITERAL 0000077d
-CSEG PFA_SLITERAL 0000077e
-CSEG XT_GMARK 00000782
-CSEG PFA_GMARK 00000783
-CSEG XT_GRESOLVE 00000787
-CSEG PFA_GRESOLVE 00000788
-CSEG XT_LMARK 0000078d
-CSEG PFA_LMARK 0000078e
-CSEG XT_LRESOLVE 00000790
-CSEG PFA_LRESOLVE 00000791
-CSEG VE_AHEAD 00000794
-CSEG XT_AHEAD 00000799
-CSEG PFA_AHEAD 0000079a
-CSEG VE_IF 0000079e
-CSEG XT_IF 000007a1
-CSEG PFA_IF 000007a2
-CSEG VE_ELSE 000007a6
-CSEG XT_ELSE 000007aa
-CSEG PFA_ELSE 000007ab
-CSEG VE_THEN 000007b1
-CSEG XT_THEN 000007b5
-CSEG PFA_THEN 000007b6
-CSEG VE_BEGIN 000007b8
-CSEG XT_BEGIN 000007bd
-CSEG PFA_BEGIN 000007be
-CSEG VE_WHILE 000007c0
-CSEG XT_WHILE 000007c5
-CSEG PFA_WHILE 000007c6
-CSEG VE_REPEAT 000007c9
-CSEG XT_REPEAT 000007ce
-CSEG PFA_REPEAT 000007cf
-CSEG XT_AGAIN 000007e2
-CSEG VE_UNTIL 000007d2
-CSEG XT_UNTIL 000007d7
-CSEG PFA_UNTIL 000007d8
-CSEG VE_AGAIN 000007dd
-CSEG PFA_AGAIN 000007e3
-CSEG VE_DO 000007e7
-CSEG XT_DO 000007ea
-CSEG PFA_DO 000007eb
-CSEG XT_TO_L 00000845
-CSEG VE_LOOP 000007f1
-CSEG XT_LOOP 000007f5
-CSEG PFA_LOOP 000007f6
-CSEG XT_ENDLOOP 0000082c
-CSEG VE_PLUSLOOP 000007fa
-CSEG XT_PLUSLOOP 000007ff
-CSEG PFA_PLUSLOOP 00000800
-CSEG VE_LEAVE 00000804
-CSEG XT_LEAVE 00000809
-CSEG PFA_LEAVE 0000080a
-CSEG VE_QDO 0000080f
-CSEG XT_QDO 00000813
-CSEG PFA_QDO 00000814
-CSEG PFA_QDOCHECK 0000081c
-CSEG PFA_QDOCHECK1 00000823
-CSEG XT_INVERT 000039fd
-CSEG VE_ENDLOOP 00000826
-CSEG PFA_ENDLOOP 0000082d
-CSEG LOOP1 0000082e
-CSEG XT_L_FROM 00000839
-CSEG LOOP2 00000835
-CSEG VE_L_FROM 00000836
-CSEG PFA_L_FROM 0000083a
-CSEG XT_LP 00000858
-CSEG VE_TO_L 00000842
-CSEG PFA_TO_L 00000846
-CSEG VE_LP0 0000084d
-CSEG XT_LP0 00000851
-CSEG PFA_LP0 00000852
-ESEG CFG_LP0 00000036
-CSEG VE_LP 00000855
-CSEG PFA_LP 00000859
-DSEG ram_lp 000000eb
-CSEG VE_CREATE 0000085a
-CSEG XT_CREATE 0000085f
-CSEG PFA_CREATE 00000860
-CSEG XT_REVEAL 0000088e
-CSEG VE_HEADER 00000865
-CSEG PFA_HEADER 0000086b
-CSEG PFA_HEADER1 0000087c
-CSEG VE_WLSCOPE 0000087f
-CSEG PFA_WLSCOPE 00000886
-ESEG CFG_WLSCOPE 00000032
-CSEG VE_REVEAL 00000889
-CSEG PFA_REVEAL 0000088f
-CSEG REVEAL1 00000899
-CSEG XT_STOREE 00003b3b
-CSEG VE_DOES 0000089a
-CSEG XT_DOES 0000089f
-CSEG PFA_DOES 000008a0
-CSEG XT_DODOES 000008b2
-CSEG DO_DODOES 000008a7
-CSEG PFA_DODOES 000008b3
-CSEG VE_COLON 000008bb
-CSEG XT_COLON 000008be
-CSEG PFA_COLON 000008bf
-CSEG XT_COLONNONAME 000008c9
-CSEG VE_COLONNONAME 000008c3
-CSEG PFA_COLONNONAME 000008ca
-CSEG XT_RBRACKET 000008de
-CSEG VE_SEMICOLON 000008d2
-CSEG XT_SEMICOLON 000008d5
-CSEG PFA_SEMICOLON 000008d6
-CSEG XT_LBRACKET 000008e6
-CSEG VE_RBRACKET 000008db
-CSEG PFA_RBRACKET 000008df
-CSEG VE_LBRACKET 000008e3
-CSEG PFA_LBRACKET 000008e7
-CSEG VE_VARIABLE 000008eb
-CSEG XT_VARIABLE 000008f1
-CSEG PFA_VARIABLE 000008f2
-CSEG XT_CONSTANT 000008fd
-CSEG XT_ALLOT 00003f2c
-CSEG VE_CONSTANT 000008f7
-CSEG PFA_CONSTANT 000008fe
-CSEG VE_USER 00000904
-CSEG XT_USER 00000908
-CSEG PFA_USER 00000909
-CSEG VE_RECURSE 0000090f
-CSEG XT_RECURSE 00000915
-CSEG PFA_RECURSE 00000916
-CSEG VE_IMMEDIATE 0000091a
-CSEG XT_IMMEDIATE 00000921
-CSEG PFA_IMMEDIATE 00000922
-CSEG XT_GET_CURRENT 000009c3
-CSEG VE_BRACKETCHAR 0000092c
-CSEG XT_BRACKETCHAR 00000931
-CSEG PFA_BRACKETCHAR 00000932
-CSEG VE_ABORTQUOTE 00000937
-CSEG XT_ABORTQUOTE 0000093c
-CSEG PFA_ABORTQUOTE 0000093d
-CSEG XT_SQUOTE 00003e8a
-CSEG XT_QABORT 0000094e
-CSEG VE_ABORT 00000941
-CSEG XT_ABORT 00000946
-CSEG PFA_ABORT 00000947
-CSEG VE_QABORT 00000949
-CSEG PFA_QABORT 0000094f
-CSEG QABO1 00000954
-CSEG VE_GET_STACK 00000956
-CSEG XT_GET_STACK 0000095d
-CSEG PFA_N_FETCH_E2 00000974
-CSEG PFA_N_FETCH_E1 0000096a
-CSEG XT_CELLS 00003ec4
-CSEG VE_SET_STACK 00000977
-CSEG XT_SET_STACK 0000097e
-CSEG PFA_SET_STACK 0000097f
-CSEG PFA_SET_STACK0 00000986
-CSEG PFA_SET_STACK2 00000993
-CSEG PFA_SET_STACK1 0000098e
-CSEG VE_MAPSTACK 00000995
-CSEG PFA_MAPSTACK 0000099d
-CSEG PFA_MAPSTACK3 000009b8
-CSEG PFA_MAPSTACK1 000009a7
-CSEG PFA_MAPSTACK2 000009b4
-CSEG VE_GET_CURRENT 000009bb
-CSEG PFA_GET_CURRENT 000009c4
-ESEG CFG_CURRENT 0000003c
-CSEG VE_GET_ORDER 000009c8
-CSEG XT_GET_ORDER 000009cf
-CSEG PFA_GET_ORDER 000009d0
-CSEG VE_CFG_ORDER 000009d4
-CSEG XT_CFG_ORDER 000009db
-CSEG PFA_CFG_ORDER 000009dc
-CSEG VE_COMPARE 000009dd
-CSEG XT_COMPARE 000009e3
-CSEG PFA_COMPARE 000009e4
-CSEG PFA_COMPARE_LOOP 000009f0
-CSEG PFA_COMPARE_NOTEQUAL 000009fe
-CSEG PFA_COMPARE_ENDREACHED2 000009f9
-CSEG PFA_COMPARE_ENDREACHED 000009fa
-CSEG PFA_COMPARE_CHECKLASTCHAR 000009fe
-CSEG PFA_COMPARE_DONE 00000a00
-CSEG VE_NFA2LFA 00000a05
-CSEG PFA_NFA2LFA 00000a0c
-CSEG VE_DOTS 00000a11
-CSEG XT_DOTS 00000a14
-CSEG PFA_DOTS 00000a15
-CSEG XT_UDOT 00003e0a
-CSEG PFA_DOTS2 00000a23
-CSEG PFA_DOTS1 00000a1e
-CSEG XT_PICK 00003c84
-CSEG VE_SPIRW 00000a24
-CSEG XT_SPIRW 00000a29
-CSEG PFA_SPIRW 00000a2a
-CSEG do_spirw 00000a2e
-CSEG do_spirw1 00000a2f
-CSEG VE_N_SPIR 00000a37
-CSEG XT_N_SPIR 00000a3c
-CSEG PFA_N_SPIR 00000a3d
-CSEG PFA_N_SPIR_LOOP 00000a42
-CSEG PFA_N_SPIR_LOOP1 00000a43
-CSEG VE_N_SPIW 00000a4e
-CSEG XT_N_SPIW 00000a53
-CSEG PFA_N_SPIW 00000a54
-CSEG PFA_N_SPIW_LOOP 00000a59
-CSEG PFA_N_SPIW_LOOP1 00000a5b
-CSEG VE_APPLTURNKEY 00000a65
-CSEG XT_APPLTURNKEY 00000a6d
-CSEG PFA_APPLTURNKEY 00000a6e
-CSEG XT_INTON 00003c97
-CSEG XT_F_CPU 00003eac
-CSEG VE_SET_CURRENT 00000a7f
-CSEG XT_SET_CURRENT 00000a87
-CSEG PFA_SET_CURRENT 00000a88
-CSEG VE_WORDLIST 00000a8c
-CSEG XT_WORDLIST 00000a92
-CSEG PFA_WORDLIST 00000a93
-CSEG XT_EHERE 00003f1b
-CSEG PFA_EHERE 00003f1c
-CSEG VE_FORTHWORDLIST 00000a9c
-CSEG XT_FORTHWORDLIST 00000aa5
-CSEG PFA_FORTHWORDLIST 00000aa6
-ESEG CFG_FORTHWORDLIST 0000003e
-CSEG VE_SET_ORDER 00000aa7
-CSEG XT_SET_ORDER 00000aae
-CSEG PFA_SET_ORDER 00000aaf
-CSEG VE_SET_RECOGNIZERS 00000ab3
-CSEG XT_SET_RECOGNIZERS 00000abd
-CSEG PFA_SET_RECOGNIZERS 00000abe
-ESEG CFG_RECOGNIZERLISTLEN 00000052
-CSEG VE_GET_RECOGNIZERS 00000ac2
-CSEG XT_GET_RECOGNIZERS 00000acc
-CSEG PFA_GET_RECOGNIZERS 00000acd
-CSEG VE_CODE 00000ad1
-CSEG XT_CODE 00000ad5
-CSEG PFA_CODE 00000ad6
-CSEG VE_ENDCODE 00000adc
-CSEG XT_ENDCODE 00000ae2
-CSEG PFA_ENDCODE 00000ae3
-CSEG VE_MARKER 00000ae8
-CSEG XT_MARKER 00000aee
-CSEG PFA_MARKER 00000aef
-ESEG EE_MARKER 0000005e
-CSEG VE_POSTPONE 00000af2
-CSEG XT_POSTPONE 00000af8
-CSEG PFA_POSTPONE 00000af9
-CSEG VE_2R_FETCH 00000b07
-CSEG XT_2R_FETCH 00000b0b
-CSEG PFA_2R_FETCH 00000b0c
-SET DPSTART 00000b1b
-CSEG DO_INTERRUPT 00003814
-CSEG DO_EXECUTE 0000380d
-CSEG XT_ISREXEC 00003cc0
-CSEG VE_EXIT 0000381c
-CSEG PFA_EXIT 00003821
-CSEG VE_EXECUTE 00003824
-CSEG PFA_EXECUTE 0000382b
-CSEG PFA_DOBRANCH 00003830
-CSEG PFA_DOCONDBRANCH 00003837
-CSEG PFA_DOLITERAL 0000383e
-CSEG XT_DOVARIABLE 00003847
-CSEG XT_DOCONSTANT 00003851
-CSEG XT_DOUSER 00003857
-CSEG VE_DOVALUE 00003863
-CSEG XT_DOVALUE 00003869
-CSEG PFA_DOVALUE 0000386a
-CSEG VE_FETCH 00003876
-CSEG PFA_FETCH 0000387a
-CSEG PFA_FETCHRAM 0000387a
-CSEG VE_STORE 0000387e
-CSEG PFA_STORE 00003882
-CSEG PFA_STORERAM 00003882
-CSEG VE_CSTORE 0000388a
-CSEG PFA_CSTORE 0000388e
-CSEG VE_CFETCH 00003895
-CSEG PFA_CFETCH 00003899
-CSEG VE_FETCHU 0000389d
-CSEG XT_FETCHU 000038a0
-CSEG PFA_FETCHU 000038a1
-CSEG VE_STOREU 000038a5
-CSEG XT_STOREU 000038a8
-CSEG PFA_STOREU 000038a9
-CSEG VE_DUP 000038ad
-CSEG PFA_DUP 000038b2
-CSEG VE_QDUP 000038b5
-CSEG PFA_QDUP 000038ba
-CSEG PFA_QDUP1 000038bf
-CSEG VE_SWAP 000038c0
-CSEG PFA_SWAP 000038c5
-CSEG VE_OVER 000038cb
-CSEG PFA_OVER 000038d0
-CSEG VE_DROP 000038d5
-CSEG PFA_DROP 000038da
-CSEG VE_ROT 000038dd
-CSEG PFA_ROT 000038e2
-CSEG VE_NIP 000038ec
-CSEG PFA_NIP 000038f1
-CSEG VE_R_FROM 000038f3
-CSEG PFA_R_FROM 000038f7
-CSEG VE_TO_R 000038fc
-CSEG PFA_TO_R 00003900
-CSEG VE_R_FETCH 00003905
-CSEG PFA_R_FETCH 00003909
-CSEG VE_NOTEQUAL 00003910
-CSEG PFA_NOTEQUAL 00003914
-CSEG VE_ZEROEQUAL 00003917
-CSEG PFA_ZEROEQUAL 0000391b
-CSEG PFA_ZERO1 00003957
-CSEG PFA_TRUE1 0000394e
-CSEG VE_ZEROLESS 0000391e
-CSEG PFA_ZEROLESS 00003922
-CSEG VE_GREATERZERO 00003925
-CSEG PFA_GREATERZERO 00003929
-CSEG VE_DGREATERZERO 0000392e
-CSEG XT_DGREATERZERO 00003932
-CSEG PFA_DGREATERZERO 00003933
-CSEG VE_DXT_ZEROLESS 0000393c
-CSEG XT_DXT_ZEROLESS 00003940
-CSEG PFA_DXT_ZEROLESS 00003941
-CSEG VE_TRUE 00003947
-CSEG PFA_TRUE 0000394c
-CSEG VE_ZERO 00003951
-CSEG PFA_ZERO 00003955
-CSEG VE_ULESS 00003959
-CSEG PFA_ULESS 0000395d
-CSEG VE_UGREATER 00003964
-CSEG PFA_UGREATER 00003968
-CSEG VE_LESS 0000396b
-CSEG PFA_LESS 0000396f
-CSEG PFA_LESSDONE 00003973
-CSEG VE_GREATER 00003975
-CSEG PFA_GREATER 00003979
-CSEG PFA_GREATERDONE 0000397d
-CSEG VE_LOG2 00003980
-CSEG XT_LOG2 00003984
-CSEG PFA_LOG2 00003985
-CSEG PFA_LOG2_1 00003988
-CSEG PFA_LOG2_2 0000398e
-CSEG VE_MINUS 00003990
-CSEG PFA_MINUS 00003994
-CSEG VE_PLUS 0000399a
-CSEG PFA_PLUS 0000399e
-CSEG VE_MSTAR 000039a3
-CSEG PFA_MSTAR 000039a7
-CSEG VE_UMSLASHMOD 000039bd
-CSEG PFA_UMSLASHMOD 000039c3
-CSEG PFA_UMSLASHMODmod 000039c8
-CSEG PFA_UMSLASHMODmod_loop 000039c9
-CSEG PFA_UMSLASHMODmod_loop_control 000039d6
-CSEG PFA_UMSLASHMODmod_subtract 000039d3
-CSEG PFA_UMSLASHMODmod_done 000039d8
-CSEG VE_UMSTAR 000039dc
-CSEG PFA_UMSTAR 000039e1
-CSEG VE_INVERT 000039f8
-CSEG PFA_INVERT 000039fe
-CSEG VE_2SLASH 00003a01
-CSEG PFA_2SLASH 00003a05
-CSEG VE_2STAR 00003a08
-CSEG PFA_2STAR 00003a0c
-CSEG VE_AND 00003a0f
-CSEG PFA_AND 00003a14
-CSEG VE_OR 00003a19
-CSEG PFA_OR 00003a1d
-CSEG VE_XOR 00003a22
-CSEG XT_XOR 00003a26
-CSEG PFA_XOR 00003a27
-CSEG VE_1PLUS 00003a2c
-CSEG PFA_1PLUS 00003a30
-CSEG VE_1MINUS 00003a32
-CSEG PFA_1MINUS 00003a36
-CSEG VE_QNEGATE 00003a38
-CSEG XT_QNEGATE 00003a3e
-CSEG PFA_QNEGATE 00003a3f
-CSEG QNEG1 00003a43
-CSEG VE_LSHIFT 00003a44
-CSEG XT_LSHIFT 00003a49
-CSEG PFA_LSHIFT 00003a4a
-CSEG PFA_LSHIFT1 00003a4d
-CSEG PFA_LSHIFT2 00003a52
-CSEG VE_RSHIFT 00003a53
-CSEG XT_RSHIFT 00003a58
-CSEG PFA_RSHIFT 00003a59
-CSEG PFA_RSHIFT1 00003a5c
-CSEG PFA_RSHIFT2 00003a61
-CSEG VE_PLUSSTORE 00003a62
-CSEG PFA_PLUSSTORE 00003a66
-CSEG VE_RP_FETCH 00003a72
-CSEG PFA_RP_FETCH 00003a77
-CSEG VE_RP_STORE 00003a7c
-CSEG XT_RP_STORE 00003a80
-CSEG PFA_RP_STORE 00003a81
-CSEG VE_SP_FETCH 00003a89
-CSEG PFA_SP_FETCH 00003a8e
-CSEG VE_SP_STORE 00003a92
-CSEG XT_SP_STORE 00003a96
-CSEG PFA_SP_STORE 00003a97
-CSEG PFA_DODO 00003a9c
-CSEG PFA_DODO1 00003a9e
-CSEG VE_I 00003aa9
-CSEG PFA_I 00003aad
-CSEG PFA_DOPLUSLOOP 00003abb
-CSEG PFA_DOPLUSLOOP_LEAVE 00003ac5
-CSEG PFA_DOPLUSLOOP_NEXT 00003ac2
-CSEG PFA_DOLOOP 00003aca
-CSEG VE_UNLOOP 00003acf
-CSEG PFA_UNLOOP 00003ad5
-CSEG VE_CMOVE_G 00003ada
-CSEG XT_CMOVE_G 00003adf
-CSEG PFA_CMOVE_G 00003ae0
-CSEG PFA_CMOVE_G1 00003af1
-CSEG PFA_CMOVE_G2 00003aed
-CSEG VE_BYTESWAP 00003af6
-CSEG PFA_BYTESWAP 00003afa
-CSEG VE_UP_FETCH 00003afe
-CSEG PFA_UP_FETCH 00003b03
-CSEG VE_UP_STORE 00003b07
-CSEG XT_UP_STORE 00003b0b
-CSEG PFA_UP_STORE 00003b0c
-CSEG VE_1MS 00003b10
-CSEG XT_1MS 00003b14
-CSEG PFA_1MS 00003b15
-CSEG VE_2TO_R 00003b1a
-CSEG PFA_2TO_R 00003b1f
-CSEG VE_2R_FROM 00003b29
-CSEG PFA_2R_FROM 00003b2e
-CSEG VE_STOREE 00003b38
-CSEG PFA_STOREE 00003b3c
-CSEG PFA_STOREE0 00003b3c
-CSEG PFA_FETCHE2 00003b6a
-CSEG PFA_STOREE3 00003b46
-CSEG PFA_STOREE1 00003b51
-CSEG PFA_STOREE4 00003b4d
-CSEG PFA_STOREE2 00003b53
-CSEG VE_FETCHE 00003b5c
-CSEG PFA_FETCHE 00003b60
-CSEG PFA_FETCHE1 00003b60
-CSEG VE_STOREI 00003b70
-CSEG PFA_STOREI 00003b74
-ESEG EE_STOREI 0000005c
-CSEG VE_DO_STOREI_NRWW 00003b77
-CSEG XT_DO_STOREI 00003b7e
-CSEG PFA_DO_STOREI_NRWW 00003b7f
-CSEG DO_STOREI_atmega 00003b93
-CSEG pageload 00003ba4
-CSEG DO_STOREI_writepage 00003b9d
-CSEG dospm 00003bbd
-EQU pagemask ffffffc0
-CSEG pageload_loop 00003baa
-CSEG pageload_newdata 00003bb5
-CSEG pageload_cont 00003bb7
-CSEG pageload_done 00003bbc
-CSEG dospm_wait_ee 00003bbd
-CSEG dospm_wait_spm 00003bbf
-CSEG VE_FETCHI 00003bc8
-CSEG PFA_FETCHI 00003bcc
-CSEG VE_N_TO_R 00003bd2
-CSEG XT_N_TO_R 00003bd6
-CSEG PFA_N_TO_R 00003bd7
-CSEG PFA_N_TO_R1 00003bd9
-CSEG VE_N_R_FROM 00003be4
-CSEG XT_N_R_FROM 00003be8
-CSEG PFA_N_R_FROM 00003be9
-CSEG PFA_N_R_FROM1 00003bee
-CSEG VE_D2STAR 00003bf6
-CSEG XT_D2STAR 00003bfa
-CSEG PFA_D2STAR 00003bfb
-CSEG VE_D2SLASH 00003c04
-CSEG XT_D2SLASH 00003c08
-CSEG PFA_D2SLASH 00003c09
-CSEG VE_DPLUS 00003c12
-CSEG PFA_DPLUS 00003c16
-CSEG VE_DMINUS 00003c23
-CSEG XT_DMINUS 00003c26
-CSEG PFA_DMINUS 00003c27
-CSEG VE_DINVERT 00003c35
-CSEG PFA_DINVERT 00003c3c
-CSEG VE_SLASHMOD 00003c45
-CSEG XT_SLASHMOD 00003c49
-CSEG PFA_SLASHMOD 00003c4a
-CSEG PFA_SLASHMOD_1 00003c55
-CSEG PFA_SLASHMOD_2 00003c5b
-CSEG PFA_SLASHMOD_3 00003c5e
-CSEG PFA_SLASHMOD_5 00003c69
-CSEG PFA_SLASHMOD_4 00003c68
-CSEG PFA_SLASHMODmod_done 00003c74
-CSEG PFA_SLASHMOD_6 00003c72
-CSEG VE_ABS 00003c78
-CSEG XT_ABS 00003c7c
-CSEG PFA_ABS 00003c7d
-CSEG VE_PICK 00003c80
-CSEG PFA_PICK 00003c85
-CSEG VE_CELLPLUS 00003c8b
-CSEG PFA_CELLPLUS 00003c91
-CSEG VE_INTON 00003c93
-CSEG PFA_INTON 00003c98
-CSEG VE_INTOFF 00003c9a
-CSEG XT_INTOFF 00003c9e
-CSEG PFA_INTOFF 00003c9f
-CSEG VE_INTSTORE 00003ca1
-CSEG PFA_INTSTORE 00003ca6
-CSEG VE_INTFETCH 00003cab
-CSEG XT_INTFETCH 00003caf
-CSEG PFA_INTFETCH 00003cb0
-CSEG VE_INTTRAP 00003cb5
-CSEG XT_INTTRAP 00003cbb
-CSEG PFA_INTTRAP 00003cbc
-CSEG PFA_ISREXEC 00003cc1
-CSEG XT_ISREND 00003cc5
-CSEG PFA_ISREND 00003cc6
-CSEG PFA_ISREND1 00003cc8
-CSEG XT_DEFAULT_PROMPTOK 00003cc9
-CSEG PFA_DEFAULT_PROMPTOK 00003cca
-CSEG VE_PROMPTOK 00003cd0
-CSEG XT_PROMPTOK 00003cd4
-CSEG PFA_PROMPTOK 00003cd5
-CSEG XT_DEFAULT_PROMPTREADY 00003cd8
-CSEG PFA_DEFAULT_PROMPTREADY 00003cd9
-CSEG VE_PROMPTREADY 00003cdf
-CSEG XT_PROMPTREADY 00003ce4
-CSEG PFA_PROMPTREADY 00003ce5
-CSEG XT_DEFAULT_PROMPTERROR 00003ce8
-CSEG PFA_DEFAULT_PROMPTERROR 00003ce9
-CSEG VE_PROMPTERROR 00003cfa
-CSEG XT_PROMPTERROR 00003cff
-CSEG PFA_PROMPTERROR 00003d00
-CSEG VE_QUIT 00003d03
-CSEG XT_QUIT 00003d07
-CSEG PFA_QUIT 00003d08
-CSEG PFA_QUIT2 00003d10
-CSEG PFA_QUIT4 00003d16
-CSEG PFA_QUIT3 00003d28
-CSEG XT_CATCH 00003d70
-CSEG PFA_QUIT5 00003d26
-CSEG VE_PAUSE 00003d2b
-CSEG PFA_PAUSE 00003d31
-DSEG ram_pause 000000ed
-CSEG XT_RDEFERFETCH 00003db4
-CSEG XT_RDEFERSTORE 00003dbe
-CSEG VE_COLD 00003d34
-CSEG clearloop 00003d40
-DSEG ram_user1 000000ef
-CSEG PFA_WARM 00003d5a
-CSEG VE_WARM 00003d55
-CSEG XT_WARM 00003d59
-CSEG XT_DEFERSTORE 00003ddf
-CSEG XT_TURNKEY 00003f5c
-CSEG VE_HANDLER 00003d63
-CSEG XT_HANDLER 00003d69
-CSEG PFA_HANDLER 00003d6a
-CSEG VE_CATCH 00003d6b
-CSEG PFA_CATCH 00003d71
-CSEG VE_THROW 00003d81
-CSEG PFA_THROW 00003d87
-CSEG PFA_THROW1 00003d8d
-CSEG VE_EDEFERFETCH 00003d9a
-CSEG PFA_EDEFERFETCH 00003da1
-CSEG VE_EDEFERSTORE 00003da4
-CSEG PFA_EDEFERSTORE 00003dab
-CSEG VE_RDEFERFETCH 00003dae
-CSEG PFA_RDEFERFETCH 00003db5
-CSEG VE_RDEFERSTORE 00003db8
-CSEG PFA_RDEFERSTORE 00003dbf
-CSEG VE_UDEFERFETCH 00003dc2
-CSEG PFA_UDEFERFETCH 00003dc9
-CSEG VE_UDEFERSTORE 00003dce
-CSEG PFA_UDEFERSTORE 00003dd5
-CSEG VE_DEFERSTORE 00003dda
-CSEG PFA_DEFERSTORE 00003de0
-CSEG VE_DEFERFETCH 00003de7
-CSEG XT_DEFERFETCH 00003dec
-CSEG PFA_DEFERFETCH 00003ded
-CSEG VE_DODEFER 00003df3
-CSEG XT_DODEFER 00003df9
-CSEG PFA_DODEFER 00003dfa
-CSEG VE_UDOT 00003e07
-CSEG PFA_UDOT 00003e0b
-CSEG VE_UDOTR 00003e0e
-CSEG XT_UDOTR 00003e12
-CSEG PFA_UDOTR 00003e13
-CSEG VE_USLASHMOD 00003e17
-CSEG XT_USLASHMOD 00003e1c
-CSEG PFA_USLASHMOD 00003e1d
-CSEG VE_NEGATE 00003e22
-CSEG PFA_NEGATE 00003e28
-CSEG VE_SLASH 00003e2b
-CSEG XT_SLASH 00003e2e
-CSEG PFA_SLASH 00003e2f
-CSEG VE_MOD 00003e32
-CSEG XT_MOD 00003e36
-CSEG PFA_MOD 00003e37
-CSEG VE_MIN 00003e3a
-CSEG XT_MIN 00003e3e
-CSEG PFA_MIN 00003e3f
-CSEG PFA_MIN1 00003e44
-CSEG VE_MAX 00003e46
-CSEG XT_MAX 00003e4a
-CSEG PFA_MAX 00003e4b
-CSEG PFA_MAX1 00003e50
-CSEG VE_WITHIN 00003e52
-CSEG PFA_WITHIN 00003e58
-CSEG VE_SHOWWORDLIST 00003e5f
-CSEG XT_SHOWWORDLIST 00003e68
-CSEG PFA_SHOWWORDLIST 00003e69
-CSEG XT_SHOWWORD 00003e6e
-CSEG PFA_SHOWWORD 00003e6f
-CSEG VE_WORDS 00003e74
-CSEG XT_WORDS 00003e79
-CSEG PFA_WORDS 00003e7a
-CSEG VE_DOTSTRING 00003e7f
-CSEG XT_DOTSTRING 00003e82
-CSEG PFA_DOTSTRING 00003e83
-CSEG VE_SQUOTE 00003e87
-CSEG PFA_SQUOTE 00003e8b
-CSEG PFA_SQUOTE1 00003e93
-CSEG VE_FILL 00003e94
-CSEG PFA_FILL 00003e99
-CSEG PFA_FILL2 00003ea5
-CSEG PFA_FILL1 00003ea0
-CSEG VE_F_CPU 00003ea7
-CSEG PFA_F_CPU 00003ead
-CSEG VE_STATE 00003eb2
-CSEG PFA_STATE 00003eb8
-DSEG ram_state 0000011b
-CSEG VE_BASE 00003eb9
-CSEG PFA_BASE 00003ebe
-CSEG VE_CELLS 00003ebf
-CSEG VE_2DUP 00003ec5
-CSEG PFA_2DUP 00003eca
-CSEG VE_2DROP 00003ecd
-CSEG PFA_2DROP 00003ed3
-CSEG VE_TUCK 00003ed6
-CSEG PFA_TUCK 00003edb
-CSEG VE_TO_IN 00003ede
-CSEG PFA_TO_IN 00003ee3
-CSEG VE_PAD 00003ee4
-CSEG PFA_PAD 00003ee9
-CSEG VE_EMIT 00003eee
-CSEG PFA_EMIT 00003ef3
-CSEG VE_EMITQ 00003ef6
-CSEG XT_EMITQ 00003efb
-CSEG PFA_EMITQ 00003efc
-CSEG VE_KEY 00003eff
-CSEG PFA_KEY 00003f04
-CSEG VE_KEYQ 00003f07
-CSEG XT_KEYQ 00003f0b
-CSEG PFA_KEYQ 00003f0c
-CSEG VE_DP 00003f0f
-ESEG CFG_DP 0000002c
-CSEG VE_EHERE 00003f16
-ESEG EE_EHERE 00000030
-CSEG VE_HERE 00003f1f
-CSEG PFA_HERE 00003f24
-ESEG EE_HERE 0000002e
-CSEG VE_ALLOT 00003f27
-CSEG PFA_ALLOT 00003f2d
-CSEG VE_BIN 00003f32
-CSEG XT_BIN 00003f36
-CSEG PFA_BIN 00003f37
-CSEG VE_DECIMAL 00003f3b
-CSEG PFA_DECIMAL 00003f42
-CSEG VE_HEX 00003f47
-CSEG XT_HEX 00003f4b
-CSEG PFA_HEX 00003f4c
-CSEG VE_BL 00003f51
-CSEG PFA_BL 00003f55
-CSEG VE_TURNKEY 00003f56
-CSEG PFA_TURNKEY 00003f5d
-ESEG CFG_TURNKEY 00000038
-CSEG VE_TOUPPER 00003f60
-CSEG PFA_TOUPPER 00003f67
-CSEG PFA_TOUPPER0 00003f72
-CSEG VE_TOLOWER 00003f73
-CSEG XT_TOLOWER 00003f79
-CSEG PFA_TOLOWER 00003f7a
-CSEG PFA_TOLOWER0 00003f85
-CSEG VE_QSTACK 00003f86
-CSEG PFA_QSTACK 00003f8c
-CSEG PFA_QSTACK1 00003f93
-CSEG VE_BOUNDS 00003f94
-CSEG PFA_BOUNDS 00003f9a
-CSEG VE_CR 00003f9e
-CSEG PFA_CR 00003fa2
-CSEG VE_SPACE 00003fa9
-CSEG PFA_SPACE 00003faf
-CSEG VE_SPACES 00003fb2
-CSEG PFA_SPACES 00003fb8
-CSEG SPCS1 00003fba
-CSEG SPCS2 00003fc1
-CSEG VE_S2D 00003fc3
-CSEG PFA_S2D 00003fc8
-CSEG VE_TO_BODY 00003fcb
-CSEG VE_2LITERAL 00003fd1
-CSEG PFA_2LITERAL 00003fd8
-CSEG VE_EQUAL 00003fdc
-CSEG PFA_EQUAL 00003fe0
-CSEG VE_ONE 00003fe3
-CSEG PFA_ONE 00003fe7
-CSEG VE_TWO 00003fe8
-CSEG PFA_TWO 00003fec
-CSEG VE_MINUSONE 00003fed
-CSEG XT_MINUSONE 00003ff0
-CSEG PFA_MINUSONE 00003ff1
-SET flashlast 00003ff2
-DSEG HERESTART 0000011d
-ESEG EHERESTART 00000084
-ESEG CFG_ORDERLIST 00000042
-ESEG CFG_RECOGNIZERLIST 00000054
-EQU UBRR_VAL 0000000c
-EQU BAUD_REAL 0000963d
-EQU BAUD_ERROR 00000001
diff --git a/amforth-6.5/appl/eval-pollin/p32-8.xml b/amforth-6.5/appl/eval-pollin/p32-8.xml
deleted file mode 100644
index 1fa114a..0000000
--- a/amforth-6.5/appl/eval-pollin/p32-8.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<project name="pollins-32-8" basedir="." default="Help">
- <target name="p32-8.asm">
- <copy tofile="p32-8.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="8000000"/>
- <filter token="USART" value=""/>
- </filterset>
- </copy>
- </target>
-
- <target name="p32-8.hex" depends="p32-8.asm" description="Hexfiles for p32-8">
- <avrasm2 projectname="p32-8" mcu="atmega32"/>
- <delete file="p32-8.asm"/>
- </target>
-
- <target name="p32-8" depends="p32-8.hex" description="Atmega32 @ 8 MHz">
- <echo>Uploading Hexfiles for p32-8</echo>
- <avrdude
- type="stk200"
- mcu="atmega32"
- flashfile="p32-8.hex"
- eepromfile="p32-8.eep.hex"
- />
- </target>
- <target name="p32-8.fuses" description="Set fuses for P32-8">
- <echo>Writing fuses</echo>
- <avrdude-2fuses
- type="${programmer}"
- mcu="${mcu}"
- hfuse="0x99"
- lfuse="0xff"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p328-16.eep.hex b/amforth-6.5/appl/eval-pollin/p328-16.eep.hex
deleted file mode 100644
index ae05b64..0000000
--- a/amforth-6.5/appl/eval-pollin/p328-16.eep.hex
+++ /dev/null
@@ -1,7 +0,0 @@
-:10003400FFFF260BC2018E00CE095C00B008780ACF
-:0A004400FF024800ED3F01004800F4
-:06005C00020070065C06C4
-:100066007E3B680000000000FF08AF08AF080000F4
-:100076000A00A300B1007800930077020000640232
-:08008600C93CE83CD83C19001C
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p328-16.hex b/amforth-6.5/appl/eval-pollin/p328-16.hex
deleted file mode 100644
index b754f68..0000000
--- a/amforth-6.5/appl/eval-pollin/p328-16.hex
+++ /dev/null
@@ -1,633 +0,0 @@
-:020000020000FC
-:0200040026D103
-:0200080024D101
-:02000C0022D1FF
-:0200100020D1FD
-:020014001ED1FB
-:020018001CD1F9
-:02001C001AD1F7
-:0200200018D1F5
-:0200240016D1F3
-:0200280014D1F1
-:02002C0012D1EF
-:0200300010D1ED
-:020034000ED1EB
-:020038000CD1E9
-:02003C000AD1E7
-:0200400008D1E5
-:0200440006D1E3
-:0200480004D1E1
-:02004C0002D1DF
-:0200500000D1DD
-:02005400FED0DC
-:02005800FCD0DA
-:02005C00FAD0D8
-:02006000F8D0D6
-:10006400F6D00008000400701A000A0041546D65BF
-:1000740067613332385007FF3E72782D627566002F
-:1000840000004400082F10911001E0E0F1E0E10FBE
-:10009400F31D008313951F7010931001899199919A
-:1000A4000C94053806FF6973722D72783D0001388F
-:1000B4003D38C6009838B1383D380300DF3F363844
-:1000C4006400383D4300203801383D3859003D383C
-:1000D4002400A53C3D3800013D3816005439983EB3
-:1000E400203806FF72782D6275665400013893003B
-:1000F400363879003D3811019838B1383D3800015F
-:100104009D399838C4382F3A3D380F00133A3D389A
-:1001140011018D38203807FF72783F2D6275660013
-:1001240073000138303D3D38110198383D381001D5
-:1001340098381339203807FF74782D706F6C6C0071
-:100144008D000138B1003638A4003D38C6008D3822
-:10015400203808FF74783F2D706F6C6C9D00013857
-:10016400303D3D38C00098383D382000133A2038DF
-:1001740004FF75627272AB006F388C00A03DAA3D1B
-:1001840006FF2B7573617274BA0001383D3898000C
-:100194003D38C1008D383D3806003D38C2008D38E9
-:1001A400BE00B138F93A3D38C5008D383D38C40039
-:1001B4008D386600203808FF31772E7265736574B8
-:1001C400C200E4009A938A93249A2C98E0E8F7E01A
-:1001D4003197F1F71FB7F8942C9A2498E0E0F1E0F6
-:1001E4003197F1F783B184FF9FEF1FBF24982C98B8
-:1001F400E0E8F6E03197F1F7892F0C94053807FF12
-:1002040031772E736C6F7400DD0008012C98249AEA
-:100214001FB7F894E8E1F0E03197F1F788948795F7
-:1002240010F42C9A2498E4E2F0E03197F1F703B14A
-:1002340004FD8068ECECF0E03197F1F72C9A2498F7
-:0E024400E8E0F0E03197F1F71FBF0C940538A9
-:040000000C94393DE6
-:100252000A920FB60A920F900F900A94B02CFF9355
-:10026200EF93E2E1F1E00694E00DF31D00800394C8
-:100272000082EF91FF9109900FBE0990089502FF4D
-:100282006D2B01010138C73F153C203803FF75640F
-:100292002A0040010138B138FF38E039D938C43872
-:1002A200F638E039E1389D39203804FF756D617800
-:1002B20047010138C93E5C3936386001C438D93843
-:1002C200203804FF756D696E56010138C93E6739E1
-:1002D20036386C01C438D938203801383D380080AE
-:1002E200133A1A3936387701E63F20384B3920382D
-:1002F2000AFF6E616D653E666C616773620101386B
-:10030200CB3B3D3800FF133A203803FF766572007D
-:1003120079010138DA020304AE3FBD3E7938E802C2
-:10032200413FC73F210329033D382E0012033F03FB
-:100332004A033904BD3E8138AE3FF002030420383F
-:1003420004FF6E6F6F7086010138203806FF756EEC
-:1003520075736564A10101388D3A233F93392038C2
-:100362000200746FA70101384804D03FB73E7938C4
-:100372003638C5015C07BF01670720380138F638F7
-:10038200B138D101FF38CB3BB138D101D101CB3BE0
-:100392002A38203807FF692D63656C6C2B00B10188
-:1003A20001382F3A203808FF69636F6D70617265FA
-:1003B200CB010138FF38CF38F63813393638E5012A
-:1003C200D23ED9384B392038C43854392608363809
-:1003D20008029B3ACF387938CF38CB3BB1383D3819
-:1003E20000015C393638F901C4383D38FF00133A50
-:1003F200133936380002D23E4B39D43A20382F3ADC
-:10040200C438903CC4383D380200BA3AEB01D23EBF
-:100412005439203801FF2A00D4010138A639D938CD
-:10042200203801FF6A000B020138763A3D38070096
-:100432009D397938763A3D3809009D3979389D39A8
-:10044200203804FF6461627312020138B138213925
-:1004520036382C023302203807FF646E65676174F8
-:100462006500220201383B3CE63F5439153C2038F6
-:1004720005FF636D6F7665002D023F02BF93AF9358
-:10048200E991F991A991B991092F082B21F01D91B8
-:1004920011930197E1F7AF91BF91899199910C94D2
-:1004A200053805FF32737761700039020138E1388F
-:1004B200FF38E138F63820380AFF726566696C6CDD
-:1004C2002D7469625202013880023D385A00980444
-:1004D200860281385439E23E81384B3920380AFF8E
-:1004E200736F757263652D7469625D0201388002F3
-:1004F20086027938203803FF746962007002483836
-:100502002C0104FF237469627C024838860106FFCD
-:1005120065653E72616D8202013854399B3ACF386B
-:100522005F3BCF388138903CC438903CC438C93ADC
-:100532009002D23E203808FF696E69742D72616D97
-:10054200880201383D386A00023B3D382200043AF5
-:100552008D0220380BFF656E7669726F6E6D656E67
-:1005620074009C024838440009FF776F72646C691A
-:1005720073747300000001383D380800203804FF0E
-:100582002F706164B50201388D3AE83E9339203804
-:1005920005FF2F686F6C6400C0020138E83E233FFC
-:1005A200933920380AFF666F7274682D6E616D652B
-:1005B200C9020138D0030700616D666F727468006A
-:1005C200203807FF76657273696F6E00D3020138B7
-:1005D2003D384100203803FF63707500E2020138A4
-:1005E2003D3837002F04203808FF6D63752D696E82
-:1005F200666FEC0201383D383300203805FF2F7555
-:1006020073657200F50201383D382C00203803FF73
-:10061200686C6400AB024838880104FF686F6C6440
-:10062200080301380C03B1387938353AB138FF384C
-:10063200C4388138F6388D38203802FF3C230E0347
-:100642000138E83E0C038138203801FF23001E03E5
-:100652000138BD3E7938A603E1383D380900CF386C
-:100662006E39363837033D3807009D393D38300042
-:100672009D391203203802FF237326030138290310
-:10068200C93E1C3A1A3936384003203802FF233E4D
-:100692003C030138D23E0C037938E83ECF38933917
-:1006A200203804FF7369676E4703013821393638F1
-:1006B2005D033D382D001203203803FF642E7200C3
-:1006C20052030138FF38DA3E260221033F03E138A4
-:1006D20056034A03F638CF389339B73F39042038E6
-:1006E20002FF2E725E030138FF38C73FF6386203FD
-:1006F200203802FF642E7103013854396203AE3F81
-:10070200203801FF2E007A030138C73F7D032038CD
-:1007120003FF75642E008203013854399603AE3FFD
-:10072200203804FF75642E7289030138FF382103D3
-:100732003F034A03F638CF389339B73F390420389C
-:1007420006FF75642F6D6F6492030138FF385439C8
-:100752000839C239F638C438FF38C239F638203879
-:1007620006FF64696769743FA1030138663FB138C7
-:100772003D38390078393D380001133A9D39B13896
-:100782003D38400178393D380701133A93393D38F5
-:1007920030009339B138BD3E79385C3920380138A0
-:1007A20008392F04F638CF382F3A043A9D392F3AB8
-:1007B200FF38203802FF732CB1030138B138E2034D
-:1007C200203801386707B138043ADA3E0B3A9339D8
-:1007D200FF38543926083638F5039B3AB138793850
-:1007E2006707903CC93AEF03F63828393638FC03DC
-:1007F200B13898386707D938203805FF697479709D
-:100802006500DB030138B138043ADA3E0B3A93391A
-:10081200FF3854392608363817049B3AB138CB3B97
-:10082200B138240420042F3AC93A0F04F638283983
-:1008320036381E04B138CB3B2404D938203801386D
-:10084200F93A2404203801383D38FF00133AF23EC9
-:10085200203806FF69636F756E74FE030138B13884
-:100862002F3AC438CB3B203804FF747970652A04D0
-:100872000138993F2608363844049B3AAC3A9838F6
-:10088200F23EC93A3F04203801FF270035040138FF
-:10089200BB05FE050906B1389606DF3FC438CB3BDF
-:1008A2003D38A501DF3F1C3A36385A043D38F3FF84
-:1008B200863DD938203805FF63736B6970004504A3
-:1008C2000138FF38B13836387004CF3898380839D3
-:1008D200DF3F36387004E63FAC052F386304F63844
-:1008E200D938203805FF637363616E005C040138F8
-:1008F200FF38CF38B13898380839DF3F1A393638DF
-:100902008D04C438353AC438CF3821391A393638CB
-:100912008D042F3A2F387B04F038CF389339F638CC
-:10092200D938203806FF6163636570747304013837
-:10093200CF389D39353ACF38033FB138D9041A3907
-:100942003638CB04B1383D380800DF3F3638BB04B7
-:10095200D938E138C93E7839FF38E138E138F6381C
-:100962003638B904D104353AFF38CF38F6385A014F
-:100972002F38C904B138543F6E393638C204D938D9
-:10098200543FB138F23ECF388D382F3ACF38660116
-:100992002F389D04D938F038C4389339A13F203814
-:1009A20001383D380800B138F23EAE3FF23E203801
-:1009B2000138B1383D380D00DF3FC4383D380A00F8
-:1009C200DF3F1C3A203806FF726566696C6C93043F
-:1009D200FF3D1A00C83DD43D04FF63686172E40420
-:1009E2000138BB05D9389838203806FF6E756D621C
-:1009F2006572ED040138BD3E7938FF383F05FF3896
-:100A020052053F05F6381C3AFF38B1381A393638E4
-:100A12001205D23EF638D938F638BD3E81385439FF
-:100A220020381E3B543954392D3B7005B9383638BD
-:100A32003405E63FDF3F36382B0598383D382E0027
-:100A4200DF3F36382C05F638363828053302EB3FBF
-:100A52002F383A05D938D23EF638D938F638BD3E65
-:100A6200813854392038D23EF63836383905273E97
-:100A7200E63FF638BD3E81384B3920380138CF3851
-:100A820098383D382D00DF3FB138FF3836384B05F6
-:100A9200E63FAC05F638203852380A001000020052
-:100AA2000A000138CF3898383D3823009339B138DD
-:100AB20054393D380400573E363868054D059D3996
-:100AC200CB3BBD3E8138E63FAC052F386905D938AE
-:100AD200203807FF3E6E756D62657200F6040138BC
-:100AE200B13836388805CF389838B6031A393638CF
-:100AF2007C05D9382038FF385702BD3E79384B0182
-:100B0200F63843015702E63FAC052F38710520380D
-:100B120005FF7061727365006A050138FF38A2052E
-:100B2200E23E7938AC05F6387804B1382F3AE23E25
-:100B3200653AE63FAC05203806FF736F7572636550
-:100B42008905FF3D1600C83DD43D07FF2F7374721F
-:100B5200696E67009D050138E138CF389D39E1386B
-:100B6200E138933920380AFF70617273652D6E6126
-:100B72006D65A6050138543FBF0520380138FF389E
-:100B8200A205E23E7938AC0508396104F6387804EA
-:100B9200C93E9D39A205D9389339E23E81382038C1
-:100BA20003FF73703000B4056F380600C83DD43DB2
-:100BB20002FF7370D1055838080003FF72703000CD
-:100BC200D9050138E605793820385838040005FF80
-:100BD200646570746800DE050138D5058D3A933975
-:100BE200043A353A203810FF666F7274682D7265C8
-:100BF200636F676E697A6572E8056F383E00A03DE3
-:100C0200AA3D09FF7265636F676E697A6500F40534
-:100C120001383D381406C438A7091A393638130684
-:100C2200D23E960620380138E138E138C93E1E3BF3
-:100C3200E1382A382D3BE138B1389606DF3F3638A5
-:100C42002506D93854392038F038F0384B39203855
-:100C520009FF696E7465727072657400020601386C
-:100C6200BB05B13836384106FE050906B73E79386C
-:100C720036383C06D101CB3B2A388B3F2F38310620
-:100C8200D23E203806FF64743A6E756D29065238DA
-:100C9200A5017D077D0707FF64743A646E756D00D8
-:100CA20043065238A501D73FD73F07FF7265633A23
-:100CB2006E756D004C060138FB0436386806E63F57
-:100CC200DF3F363866064806203852062038960638
-:100CD200203808FF7265633A66696E645606013809
-:100CE2000B07B1381A3936387906D93896062038C2
-:100CF2008006203805FF64743A7874006A06523818
-:100D020084068806D73F0138D9382A382038013876
-:100D1200213936388E06670720382A38203807FFEF
-:100D220064743A6E756C6C007B0652389A069A06A9
-:100D32009A0601383D38F3FF863D0FFF73656172F5
-:100D420063682D776F72646C697374009006013862
-:100D5200FF3854393D38BD06F638DA06B1381A394B
-:100D62003638B706D23ED93854392038B13801075F
-:100D7200C43880016E0120380138FF38D938C93EA5
-:100D82000839F506DA013638CB06F638D93854393F
-:100D92004B392038D23EF6385439203811FF74725C
-:100DA2006176657273652D776F72646C6973740016
-:100DB2009E0601385F3BB1383638EB06C93E1E3B12
-:100DC200C4382A382D3BE1383638EB06160ACB3BBD
-:100DD2002F38DC06D23E20380BFF6E616D653E7304
-:100DE2007472696E6700CF0601382F043D38FF0028
-:100DF200133A203807FF6E66613E63666100ED06B6
-:100E02000138160A2F3A203807FF66696E642D787A
-:100E12007400FB0601383D3817073D384A00A70920
-:100E22001A3936381607D23E543920380138FF387D
-:100E3200C93EF638A806B13836382407FF38F038EC
-:100E4200F038F6384B39203806FF6E6577657374D3
-:100E5200050748388A0106FF6C61746573742507BB
-:100E620048388E0108FF28637265617465292C0772
-:100E72000138BB059008B1382A07903C81387508C3
-:100E82002A078138203801005C0033070138A205A7
-:100E9200F038E23E8138203801002800440701384A
-:100EA2003D3829008E05D23E203807FF636F6D70F2
-:100EB200696C65004D070138F638B138D101FF3849
-:100EC200CB3B6707203801FF2C0056070138123F41
-:100ED200733B123F2F3ABF01133F203803005B27B9
-:100EE2005D006407013848047D07203807006C69FB
-:100EF200746572616C006F0701385C073D386707E3
-:100F020020380800736C69746572616C7707013868
-:100F12005C07D003DE0320380138123F5C07FFFF75
-:100F2200203801388B3F123FC438733B20380138D8
-:100F3200123F203801388B3F67072038050061686F
-:100F420065616400820701385C072F388D072038FD
-:100F5200020069669F0701385C0736388D07203822
-:100F62000400656C7365A90701385C072F388D078B
-:100F7200C4389207203804007468656EB1070138DE
-:100F8200920720380500626567696E00BC07013868
-:100F92009807203805007768696C6500C307013837
-:100FA200AC07C43820380600726570656174CB07DF
-:100FB2000138ED07C00720380500756E74696C00B2
-:100FC200D40701383D38363867079B0720380500BB
-:100FD200616761696E00DD0701385C072F389B0786
-:100FE20020380200646FE80701385C079B3A9807D3
-:100FF20054395008203804006C6F6F70F2070138C2
-:101002005C07C93A3708203805002B6C6F6F7000F7
-:10101200FC0701385C07BA3A3708203805006C65CE
-:1010220061766500050801385C07D43AA4075008C8
-:10103200203803003F646F000F0801385C07260860
-:10104200AC07F507C438500820380138C93EDF3FE5
-:10105200B138FF3836382E08D23EF638FD392038FE
-:1010620007FF656E646C6F6F70001A0801389B078A
-:101072004408B93836384008C0072F3839082038B4
-:1010820002FF6C3E310801386308793879383D38FF
-:10109200FEFF6308653A203802FF3E6C41080138C2
-:1010A200EB3F6308653A630879388138203803FFDB
-:1010B2006C7030004D086F384000A03DAA3D02FF21
-:1010C2006C7058084838900106FF63726561746558
-:1010D20060080138390799085C075238203806FF42
-:1010E20068656164657265080138123FFF38FF3830
-:1010F200B138283936388708B1383D3800FF1C3AF4
-:10110200E203F6385F3B6707F63820383D38F0FFD8
-:10111200863D07FF776C73636F7065007008FF3D53
-:101122003C00A03DAA3D06FF72657665616C8A08A7
-:1011320001382A07903C7938B9383638A4082A078A
-:101142007938C4383B3B20380500646F65733E0034
-:10115200940801385C07BD085C070E945C07B2086E
-:1011620020389A938A93CB0101967F916F91BF9316
-:10117200AF93DB010C9405380138F6382A07903C0E
-:1011820079385F3B0107733B203801FF3A00A5081D
-:1011920001383907D408D938203807FF3A6E6F6E04
-:1011A200616D6500C6080138123FB13831078138D8
-:1011B2005C070138E908203801003B00CE080138FD
-:1011C2005C072038F1089908203801FF5D00DD082E
-:1011D2000138E63FB73E8138203801005B00E6085F
-:1011E20001385439B73E8138203808FF7661726978
-:1011F20061626C65EE080138233F0809EB3F2C3F22
-:10120200203808FF636F6E7374616E74F6080138DC
-:10121200390799085C0748386707203804FF757357
-:10122200657202090138390799085C07583867075F
-:101232002038070072656375727365000F09013803
-:10124200310779386707203809FF696D6D65646970
-:10125200617465001A090138CE095F3BB138CB3B96
-:101262003D38FF7F133AC438733B203806005B6376
-:101272006861725D250901385C073D38F104670732
-:101282002038060061626F727422370901388A3E83
-:101292005C075909203805FF61626F7274004209C8
-:1012A20001384B39863D06FF3F61626F72744C090B
-:1012B2000138E13836385F0903045109D23E20383B
-:1012C20009FF6765742D737461636B0054090138FB
-:1012D200B138903CC4385F3BB138FF385439C43818
-:1012E200260836387F099B3AAC3A353AC43ECF38A5
-:1012F2009D395F3BC4384B39BA3A7509D23EF6384C
-:10130200203809FF7365742D737461636B00610982
-:101312000138CF382139363891093D38FCFF863DF6
-:10132200C93E3B3BC4385439260836389E099B3A9D
-:10133200903CDA3E3B3BC93A9909D938203809FF3B
-:101342006D61702D737461636B0082090138B1386D
-:10135200903CC4385F3BC43E993F26083638C309E7
-:101362009B3AAC3A5F3BC438FF3808392A38B9385F
-:101372003638BF09F638D938D43A2038F638EB3F38
-:10138200BA3AB209D938543920380BFF6765742D3F
-:1013920063757272656E7400A00901383D384600AB
-:1013A2005F3B203809FF6765742D6F7264657200B8
-:1013B200C60901383D384A006809203809FF6366CA
-:1013C200672D6F7264657200D30948384A0007FFBF
-:1013D200636F6D7061726500DF09EF09BF93AF93B0
-:1013E2008C0189919991DC01899199919C01899152
-:1013F2009991FC01ED90F190EF1451F40A9519F0D6
-:101402002A95C1F701C02A95022B11F4882702C040
-:101412008FEF00C0982FAF91BF910C94053807FF52
-:101422006E66613E6C666100E8090138F5062F3A86
-:10143200043A9D39203802FF2E73100A0138ED0557
-:101442000A3EAE3FED055439260836382E0A9B3A3D
-:10145200AC3A843C0A3EC93A290A203806FF632185
-:10146200407370691C0A350A03D099270C94053819
-:101472008EBD0DB5087F0DBD0DB507FFFACF8EB538
-:10148200089505FF6E40737069002F0A480A8C01A7
-:1014920089919991FC01C8012EBC2DB527FFFDCF82
-:1014A2002EB521930197C1F7899199910C94053832
-:1014B20005FF6E2173706900420A5F0A8C018991EF
-:1014C2009991FC01C80121912EBD2DB527FFFDCFB9
-:1014D2002EB50197C1F7899199910C9405380BFFAC
-:1014E2006170706C7475726E6B657900590A01389F
-:1014F200C700973C8A01AE3FAC3E3D38E803C23993
-:10150200F038413F8503D00304006B487A2003047E
-:1015120020380BFF7365742D63757272656E7400EB
-:10152200700A01383D3846003B3B203808FF776F90
-:1015320072646C6973748A0A01381B3F5439CF385C
-:101542003B3BB138903CBF011C3F20380EFF666F19
-:101552007274682D776F72646C697374970A483875
-:10156200480009FF7365742D6F7264657200A70AE3
-:1015720001383D384A00890920380FFF7365742D00
-:101582007265636F676E697A65727300B20A0138B9
-:101592003D385C00890920380FFF6765742D72653C
-:1015A200636F676E697A65727300BE0A01383D38EF
-:1015B2005C006809203804FF636F6465CD0A013856
-:1015C20039079908123FD1016707203808FF656E75
-:1015D200642D636F6465DC0A01385C070C945C0758
-:1015E2000538203808FF286D61726B657229E70A99
-:1015F2006F386800A03DAA3D0800706F7374706F69
-:101602006E65F30A0138BB05FE050906B138FF38DD
-:10161200D101D101CB3B2A38F638D101CB3B670748
-:10162200203803FF32724000FD0A170B9A938A9307
-:10163200EF91FF918F919F919F938F93FF93EF93E0
-:0A1642009A938A93CF010C940538A7
-:10700200BF93AF93DB011196B21469F4FD01EE0F49
-:10701200FF1F659175911196FB01EE0FFF1F059100
-:107022001591F80109949A938A938B2D9927BB2481
-:1070320060EC7CE3F1CF04FF65786974120B2138B0
-:10704200AF91BF91E1CF07FF657865637574650005
-:107052001C382B38BC0189919991DECF3038FD0163
-:10706200EE0FFF1FA591B591CFCF3738982B89919D
-:107072009991A9F31196C8CF3E389A938A93FD014C
-:10708200EE0FFF1F859195911196BECF48389A93C6
-:107092008A93FB013196EE0FFF1F85919591B4CF34
-:1070A20052389A938A93CB010196AECF58389A936D
-:1070B2008A93FB013196EE0FFF1F85919591840D06
-:1070C200951DA2CF07FF2876616C756529002438CB
-:1070D2000138390799085C076F3820380E94B208D6
-:1070E200B138D101CB3B2A38203801FF4000633848
-:1070F2007A38FC018191919187CF01FF2100763886
-:107102008238FC0189919991918380838991999127
-:107112007BCF02FF63217E388E38FC0189919991E1
-:1071220080838991999170CF02FF63408A389938A0
-:10713200FC019927808168CF02FF4075953801389C
-:10714200023B9D397938203802FF21759D3801387C
-:10715200023B9D398138203803FF64757000A538E1
-:10716200B2389A938A9350CF04FF3F647570AD385A
-:10717200BA38082F092B11F09A938A9345CF04FF4E
-:1071820073776170B538C5388C01899199911A93DA
-:107192000A933ACF04FF6F766572C038D0389A935B
-:1071A2008A938A819B8130CF04FF64726F70CB38DF
-:1071B200DA388991999128CF03FF726F7400D5381C
-:1071C200E2388C0129913991899199913A932A93C4
-:1071D2001A930A9319CF03FF6E697000DD38F138F4
-:1071E200229612CF02FF723EEC38F7389A938A93B6
-:1071F2008F919F9109CF02FF3E72F33800399F931E
-:107202008F938991999100CF02FF7240FC3809391E
-:107212009A938A938F919F919F938F93F5CE02FFBA
-:107222003C3E05390138DF3F1A39203802FF303D34
-:1072320010391B39982BD1F530C002FF303C173979
-:10724200223997FD2AC032C002FF303E1E39293949
-:10725200821593055CF151F120C003FF64303E00BA
-:1072620025393339821593058991999182059305C0
-:10727200ECF0E1F012C003FF64303C002E394139DA
-:10728200229697FD0C944E390C94573904FF747270
-:1072920075653C394C399A938A938FEF9FEFB4CE40
-:1072A20001FF3000473955399A938A93C101ACCE18
-:1072B20002FF753C51395D39299139918217930743
-:1072C200A8F3A1F3EACF02FF753E59390138C43859
-:1072D2005C39203801FF3C0064396F3929913991BA
-:1072E200281739071CF7D9CF01FF3E006B397939CE
-:1072F2002991399128173907CCF2C1F2CECF04FF78
-:107302006C6F673275398539FC01992780E18A955E
-:1073120022F0EE0FFF1FD8F777CE9A9575CE01FFB8
-:107322002D008039943909911991081B190BC80154
-:107332006BCE01FF2B0090399E3909911991800F74
-:10734200911F62CE02FF6D2A9A39A7398C01899169
-:1073520099919C0131027001209FC0013003F30812
-:10736200900DE11CF31C1203F308900DE11CF31CB9
-:107372009A938A93C70148CE06FF756D2F6D6F648D
-:10738200A339C3397C01299139910991199140E1BD
-:107392005527000F111F221F331F551F2E153F05A2
-:1073A200520518F003952E193F094A9589F73A9329
-:1073B2002A93C80129CE03FF756D2A00BD39E13930
-:1073C2008C0189919991809FF00122273327909F08
-:1073D200F00D211D331D819FF00D211D331D919F45
-:1073E200200D311DCF019A938A93C9010DCE06FF5C
-:1073F200696E76657274DC39FE398095909504CE9B
-:1074020002FF322FF839053A95958795FDCD02FF97
-:10741200322A013A0C3A880F991FF6CD03FF616EAA
-:107422006400083A143A0991199180239123ECCD12
-:1074320002FF6F720F3A1D3A09911991802B912B1D
-:10744200E3CD03FF786F7200193A273A0991199137
-:1074520080279127D9CD02FF312B223A303A01966B
-:10746200D3CD02FF312D2C3A363A0197CDCD07FF0D
-:107472003F6E656761746500323A013821393638EA
-:10748200433A273E203806FF6C7368696674383ABF
-:107492004A3AFC018991999131971AF0880F991F04
-:1074A200FBCFB2CD06FF727368696674443A593AEB
-:1074B200FC018991999131971AF096958795FBCFA6
-:1074C200A3CD02FF2B21533A663AFC01899199918F
-:1074D20020813181820F931F8083918389919991B9
-:1074E20093CD03FF72704000623A773A9A938A937F
-:1074F2008DB79EB789CD03FF72702100723A813A2F
-:107502002FB7F8948DBF9EBF2FBF899199917CCDE3
-:1075120003FF737040007C3A8E3A9A938A93CE01AD
-:1075220073CD03FF73702100893A973AEC01899178
-:1075320099916ACD9C3A29913991E0E83E0F821BDC
-:10754200930B3F932F939F938F93899199915CCD46
-:1075520001FF6900923AAD3A9A938A938F919F9173
-:10756200EF91FF91FF93EF939F938F938E0F9F1F46
-:107572004BCDBB3AEF91FF91E80FF91F8991999199
-:107582001BF0FF93EF936BCD0F911F9111963CCDA2
-:10759200CA3AEF91FF913196BBF3F3CF06FF756EB6
-:1075A2006C6F6F70A93AD53A1F910F911F910F918D
-:1075B2002BCD06FF636D6F76653ECF3AE03ABF93FF
-:1075C200AF93E991F991A991B991092F082B41F053
-:1075D200E80FF91FA80FB91F1E9112930197E1F747
-:1075E200AF91BF91899199910FCD02FF3E3CDA3A5A
-:1075F200FA3A092F982F802F07CD03FF75704000AC
-:10760200F63A033B9A938A93C201FECC03FF75704C
-:107612002100FE3A0C3B2C0189919991F5CC03FF94
-:10762200316D7300073B153BE0EAFFE03197F1F75C
-:10763200EBCC03FF323E7200103B1F3BFC018991F1
-:1076420099919F938F93FF93EF9389919991DCCCBA
-:1076520003FF32723E001A3B2E3B9A938A93EF91BC
-:10766200FF918F919F919A938A93CF01CDCC02FF84
-:107672002165293B3C3BFC01899199912FB7F894F4
-:1076820028D000B5081709F00BD0319622D000B5EA
-:10769200091711F0892F04D02FBF89919991B4CC89
-:1076A200F999FECF07B700FDFDCFF2BDE1BD80BD68
-:1076B200FA9AF99A089502FF4065383B603B2FB76A
-:1076C200F894FC0106D080B5319603D090B52FBF57
-:1076D2009BCCF999FECFF2BDE1BDF89A089502FF65
-:1076E20021695C3BFF3D6600A03DAA3D09FF2821C0
-:1076F200692D6E7277772900703B7F3B1FB71F930E
-:10770200F8949C0189919991AF93BF93CF93DF93A2
-:1077120009D0DF91CF91BF91AF91899199911F913A
-:107722001FBF72CC10D0E094F0948E219F21982B31
-:1077320019F0F90102E020D0F90104E01DD0F901AD
-:1077420000E11AD00895F901E07CFF7FEF01A0E487
-:10775200B0E0FE01EE0FFF1F45915591FE01E217C9
-:10776200F30711F00A0102C07A010C01002704D0CC
-:107772002196119771F70895F999FECF17B710FD69
-:10778200FDCFEE0FFF1F016007BFE895089502FFCE
-:107792004069773BCC3BFC01EE0FFF1F8591959131
-:1077A20033CC03FF6E3E7200C83BD73BFC01082F6F
-:1077B200899199919F938F930A95D1F7EF93FF93B4
-:1077C2008991999121CC03FF6E723E00D23BE93B35
-:1077D2009A938A93FF91EF910E2F8F919F919A9393
-:1077E2008A930A95D1F7CF010FCC03FF64322A00A6
-:1077F200E43BFB3B09911991000F111F881F991F50
-:107802001A930A9301CC03FF64322F00F63B093C22
-:107812000991199195958795179507951A930A934A
-:10782200F3CB02FF642B043C163C29913991E99079
-:10783200F99049915991240F351F8E1D9F1D3A933E
-:107842002A93E2CB02FF642D123C273C2991399105
-:10785200E990F99049915991421B530BE80AF90AB0
-:107862005A934A93C701D0CB07FF64696E7665725B
-:107872007400233C3C3C09911991809590950095A8
-:1078820010951A930A93C0CB04FF2F6D6F64353C99
-:107892004A3C9C0109911991412F432717FF04C0CB
-:1078A200109500950F5F1F4F37FF04C0309520954C
-:1078B2002F5F3F4FEE24FF1851E1001F111F5A9511
-:1078C20039F447FF04C0109500950F5F1F4F0BC09E
-:1078D200EE1CFF1CE21AF30A20F4E20EF31E889457
-:1078E200ECCF0894EACFFA92EA92C8018DCB03FF5B
-:1078F20061627300453C0138B1383E3A203804FFDA
-:107902007069636B783C01382F3AC43E8D3A9D39D9
-:107912007938203805FF63656C6C2B00803C913C04
-:10792200029672CB04FF2B696E748B3C983C789460
-:107932006BCB04FF2D696E74933C9F3CF89464CB2F
-:1079420004FF696E74219A3C01383D3800009D396C
-:107952003B3B203804FF696E7440A13C01383D383E
-:1079620000009D395F3B203808FF696E742D7472E8
-:107972006170AB3CBC3CB82E8991999145CB0138E2
-:10798200AF3C2A38C53C2038C63C01D03DCB1895C7
-:107992000138D0030300206F6B000304203803FF7B
-:1079A2002E6F6B00B53CFF3D1C00C83DD43D013835
-:1079B200D00302003E20A13F0304203806FF2E72AE
-:1079C20065616479D03CFF3D2000C83DD43D01385B
-:1079D200D0030400203F3F200304BD3E7938FF3826
-:1079E200413F8503E23E79388503F638BD3E813852
-:1079F200203806FF2E6572726F72DF3CFF3D1E005B
-:107A0200C83DD43D04FF71756974FA3C01385C08C5
-:107A120063088138D505963AE205803AF108B73E07
-:107A220079381A393638163DE43CE9043638283DAF
-:107A32003D383006703DB9383638283DB1383D38CA
-:107A4200FEFF6E393638263DFF3C2F38083DD43CC8
-:107A52002F38103D05FF706175736500033DFF3DD2
-:107A62009201B43DBE3D04FF636F6C642B3D393D12
-:107A7200A4B622243324BB2424BEE0E0F1E0219208
-:107A8200E030E9F7F930D9F7E4E9F1E02F010FEF3F
-:107A92000DBF048318E01EBF1583CFEAC683D8E06A
-:107AA200D783AAE5BDE3B0CA04FF7761726D343DA6
-:107AB2000138A2023D38A5013D38303DDF3DF108D5
-:107AC2005C3F073D07FF68616E646C657200553D5F
-:107AD20058380A0005FF636174636800633D01382A
-:107AE2008D3AFF38693D7938FF38763A693D8138F9
-:107AF2002A38F638693D8138F638D9385439203871
-:107B020005FF7468726F77006B3D0138B1381A391E
-:107B120036388D3DD9382038693D7938803AF63883
-:107B2200693D8138F638C438FF38963AD938F63884
-:107B3200203807FF4564656665724000813D013863
-:107B4200CB3B5F3B203807FF4564656665722100C9
-:107B52009A3D0138CB3B3B3B203807FF52646566B8
-:107B620065724000A43D0138CB3B7938203807FFCD
-:107B72005264656665722100AE3D0138CB3B8138A7
-:107B8200203807FF5564656665724000B83D0138CC
-:107B9200CB3B023B9D397938203807FF5564656637
-:107BA20065722100C23D0138CB3B023B9D398138D1
-:107BB200203806FF646566657221CE3D0138D03FEC
-:107BC200B138D101D101CB3B2A38203806FF646598
-:107BD20066657240DA3D0138D03FB138D101CB3B06
-:107BE2002A38203807FF2864656665722900E73D58
-:107BF2000138390799085C07FF3D20380E94B20816
-:107C0200B138D101CB3B2A382A38203802FF752EF1
-:107C1200F33D013854398D03203803FF752E72006D
-:107C2200073E01385439C4389603203805FF752FB2
-:107C32006D6F64000E3E0138FF385439F638C23990
-:107C4200203806FF6E6567617465173E0138FD399D
-:107C52002F3A203801FF2F00223E0138493CF038EC
-:107C6200203803FF6D6F64002B3E0138493CD93840
-:107C7200203803FF6D696E00323E0138C93E783903
-:107C82003638443EC438D938203803FF6D61780055
-:107C92003A3E0138C93E6E393638503EC438D9387A
-:107CA200203806FF77697468696E463E0138CF381E
-:107CB2009339FF389339F6385C3920380DFF7368F1
-:107CC2006F772D776F72646C69737400523E01385E
-:107CD2003D386E3EC438DA0620380138F506030412
-:107CE200AE3F4B39203805FF776F726473005F3EF9
-:107CF20001383D384C005F3B683E203802002E229E
-:107D0200743E01388A3E5C07030420380200732265
-:107D12007F3E01383D3822008E05B73E793836382D
-:107D2200933E8807203804FF66696C6C873E0138F1
-:107D3200E138E138B9383638A53E993F9B3AB13837
-:107D4200AC3A8D38C93AA03ED938203805FF665F73
-:107D520063707500943E01383D3800243D38F400CC
-:107D6200203805FF737461746500A73E4838C0016E
-:107D720004FF62617365B23E58380C0005FF63650B
-:107D82006C6C7300B93E0C3A04FF32647570BF3EEE
-:107D92000138CF38CF38203805FF3264726F700057
-:107DA200C53E0138D938D938203804FF7475636B61
-:107DB200CD3E0138C438CF38203803FF3E696E000B
-:107DC200D63E5838180003FF70616400DE3E013869
-:107DD200233F3D3828009D39203804FF656D6974C2
-:107DE200E43EFF3D0E00C83DD43D05FF656D69745C
-:107DF2003F00EE3EFF3D1000C83DD43D03FF6B65E2
-:107E02007900F63EFF3D1200C83DD43D04FF6B658C
-:107E1200793FFF3EFF3D1400C83DD43D02FF647030
-:107E2200073F6F383600A03DAA3D05FF65686572C1
-:107E320065000F3F6F383A00A03DAA3D04FF686518
-:107E42007265163F6F383800A03DAA3D05FF616C90
-:107E52006C6F74001F3F0138233F9D39BF01243FDF
-:107E6200203803FF62696E00273F0138EB3FBD3EB9
-:107E72008138203807FF646563696D616C00323FA9
-:107E820001383D380A00BD3E8138203803FF68655D
-:107E920078003B3F01383D381000BD3E8138203824
-:107EA20002FF626C473F4838200007FF7475726E0C
-:107EB2006B657900513FFF3D4200A03DAA3D07FF9F
-:107EC200746F757070657200563F0138B1383D3875
-:107ED20061003D387B00573E3638723F3D38DF0047
-:107EE200133A203807FF746F6C6F77657200603F3A
-:107EF2000138B1383D3841003D385B00573E3638D5
-:107F0200853F3D3820001C3A203806FF3F737461DC
-:107F1200636B733F0138ED0521393638933F3D38A5
-:107F2200FCFF863D203806FF626F756E6473863FE4
-:107F32000138CF389D39C438203802FF6372943F2C
-:107F420001383D380D00F23E3D380A00F23E20383D
-:107F520005FF7370616365009E3F0138543FF23E36
-:107F6200203806FF737061636573A93F0138543985
-:107F72004A3EB1383638C13FAE3F353A2F38BA3F64
-:107F8200D938203803FF733E6400B23F0138B1385C
-:107F92002139203805FF3E626F647900C33F303AD1
-:107FA2000800326C69746572616CCB3F0138C43869
-:107FB2007D077D07203801FF3D00D13F013893390D
-:107FC2001A39203801FF3100DC3F4838010001FF37
-:107FD2003200E33F4838020002FF2D31E83F4838C3
-:027FE200FFFF9F
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p328-16.lst b/amforth-6.5/appl/eval-pollin/p328-16.lst
deleted file mode 100644
index da486f0..0000000
--- a/amforth-6.5/appl/eval-pollin/p328-16.lst
+++ /dev/null
@@ -1,10427 +0,0 @@
-
-AVRASM ver. 2.1.52 p328-16.asm Sun Apr 30 20:10:15 2017
-
-p328-16.asm(5): Including file '../../avr8\preamble.inc'
-../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm'
-../../avr8\macros.asm(6): Including file '../../avr8\user.inc'
-../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega328p\device.asm'
-../../avr8/devices/atmega328p\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m328Pdef.inc'
-p328-16.asm(14): Including file '../../avr8\drivers/usart_0.asm'
-../../avr8\drivers/usart_0.asm(32): Including file '../../avr8\drivers/usart_common.asm'
-../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm'
-../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm'
-../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm'
-../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm'
-p328-16.asm(19): Including file '../../avr8\drivers/1wire.asm'
-p328-16.asm(21): Including file '../../avr8\amforth.asm'
-../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm'
-../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc'
-../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm'
-../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm'
-../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm'
-../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm'
-../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm'
-../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm'
-../../avr8\dict/rww.inc(11): Including file '../../avr8\dict/appl_4k.inc'
-../../avr8\dict/appl_4k.inc(1): Including file '../../common\words/ver.asm'
-../../avr8\dict/appl_4k.inc(4): Including file '../../common\words/noop.asm'
-../../avr8\dict/appl_4k.inc(5): Including file '../../avr8\words/unused.asm'
-../../avr8\dict/appl_4k.inc(6): Including file '../../common\words/to.asm'
-../../avr8\dict/appl_4k.inc(7): Including file '../../avr8\words/i-cellplus.asm'
-../../avr8\dict/appl_4k.inc(8): Including file '../../avr8\words/icompare.asm'
-../../avr8\dict/appl_4k.inc(9): Including file '../../common\words/star.asm'
-../../avr8\dict/appl_4k.inc(10): Including file '../../avr8\words/j.asm'
-../../avr8\dict/appl_4k.inc(11): Including file '../../avr8\words/dabs.asm'
-../../avr8\dict/appl_4k.inc(12): Including file '../../avr8\words/dnegate.asm'
-../../avr8\dict/appl_4k.inc(13): Including file '../../avr8\words/cmove.asm'
-../../avr8\dict/appl_4k.inc(14): Including file '../../common\words/2swap.asm'
-../../avr8\dict/appl_4k.inc(15): Including file '../../common\words/tib.asm'
-../../avr8\dict/appl_4k.inc(16): Including file '../../avr8\words/init-ram.asm'
-../../avr8\dict/appl_4k.inc(20): Including file '../../avr8\words/environment.asm'
-../../avr8\dict/appl_4k.inc(21): Including file '../../avr8\words/env-wordlists.asm'
-../../avr8\dict/appl_4k.inc(22): Including file '../../avr8\words/env-slashpad.asm'
-../../avr8\dict/appl_4k.inc(23): Including file '../../common\words/env-slashhold.asm'
-../../avr8\dict/appl_4k.inc(24): Including file '../../common\words/env-forthname.asm'
-../../avr8\dict/appl_4k.inc(25): Including file '../../common\words/env-forthversion.asm'
-../../avr8\dict/appl_4k.inc(26): Including file '../../common\words/env-cpu.asm'
-../../avr8\dict/appl_4k.inc(27): Including file '../../avr8\words/env-mcuinfo.asm'
-../../avr8\dict/appl_4k.inc(28): Including file '../../common\words/env-usersize.asm'
-../../avr8\dict/appl_4k.inc(30): Including file '../../avr8\words/hld.asm'
-../../avr8\dict/appl_4k.inc(31): Including file '../../common\words/hold.asm'
-../../avr8\dict/appl_4k.inc(32): Including file '../../common\words/less-sharp.asm'
-../../avr8\dict/appl_4k.inc(33): Including file '../../common\words/sharp.asm'
-../../avr8\dict/appl_4k.inc(34): Including file '../../common\words/sharp-s.asm'
-../../avr8\dict/appl_4k.inc(35): Including file '../../common\words/sharp-greater.asm'
-../../avr8\dict/appl_4k.inc(36): Including file '../../common\words/sign.asm'
-../../avr8\dict/appl_4k.inc(37): Including file '../../common\words/d-dot-r.asm'
-../../avr8\dict/appl_4k.inc(38): Including file '../../common\words/dot-r.asm'
-../../avr8\dict/appl_4k.inc(39): Including file '../../common\words/d-dot.asm'
-../../avr8\dict/appl_4k.inc(40): Including file '../../common\words/dot.asm'
-../../avr8\dict/appl_4k.inc(41): Including file '../../common\words/ud-dot.asm'
-../../avr8\dict/appl_4k.inc(42): Including file '../../common\words/ud-dot-r.asm'
-../../avr8\dict/appl_4k.inc(43): Including file '../../common\words/ud-slash-mod.asm'
-../../avr8\dict/appl_4k.inc(44): Including file '../../common\words/digit-q.asm'
-../../avr8\dict/appl_4k.inc(46): Including file '../../avr8\words/do-sliteral.asm'
-../../avr8\dict/appl_4k.inc(47): Including file '../../avr8\words/scomma.asm'
-../../avr8\dict/appl_4k.inc(48): Including file '../../avr8\words/itype.asm'
-../../avr8\dict/appl_4k.inc(49): Including file '../../avr8\words/icount.asm'
-../../avr8\dict/appl_4k.inc(50): Including file '../../common\words/type.asm'
-../../avr8\dict/appl_4k.inc(51): Including file '../../common\words/tick.asm'
-../../avr8\dict/appl_4k.inc(53): Including file '../../common\words/cskip.asm'
-../../avr8\dict/appl_4k.inc(54): Including file '../../common\words/cscan.asm'
-../../avr8\dict/appl_4k.inc(55): Including file '../../common\words/accept.asm'
-../../avr8\dict/appl_4k.inc(56): Including file '../../common\words/refill.asm'
-../../avr8\dict/appl_4k.inc(57): Including file '../../common\words/char.asm'
-../../avr8\dict/appl_4k.inc(58): Including file '../../common\words/number.asm'
-../../avr8\dict/appl_4k.inc(59): Including file '../../common\words/q-sign.asm'
-../../avr8\dict/appl_4k.inc(60): Including file '../../common\words/set-base.asm'
-../../avr8\dict/appl_4k.inc(61): Including file '../../common\words/to-number.asm'
-../../avr8\dict/appl_4k.inc(62): Including file '../../common\words/parse.asm'
-../../avr8\dict/appl_4k.inc(63): Including file '../../common\words/source.asm'
-../../avr8\dict/appl_4k.inc(64): Including file '../../common\words/slash-string.asm'
-../../avr8\dict/appl_4k.inc(65): Including file '../../common\words/parse-name.asm'
-../../avr8\dict/appl_4k.inc(66): Including file '../../avr8\words/sp0.asm'
-../../avr8\dict/appl_4k.inc(67): Including file '../../avr8\words/rp0.asm'
-../../avr8\dict/appl_4k.inc(68): Including file '../../common\words/depth.asm'
-../../avr8\dict/appl_4k.inc(69): Including file '../../avr8\words/forth-recognizer.asm'
-../../avr8\dict/appl_4k.inc(70): Including file '../../common\words/recognize.asm'
-../../avr8\dict/appl_4k.inc(71): Including file '../../common\words/interpret.asm'
-../../avr8\dict/appl_4k.inc(72): Including file '../../common\words/rec-intnum.asm'
-../../avr8\dict/appl_4k.inc(73): Including file '../../common\words/rec-find.asm'
-../../avr8\dict/appl_4k.inc(74): Including file '../../common\words/dt-null.asm'
-../../avr8\dict/appl_4k.inc(75): Including file '../../common\words/search-wordlist.asm'
-../../avr8\dict/appl_4k.inc(76): Including file '../../common\words/traverse-wordlist.asm'
-../../avr8\dict/appl_4k.inc(77): Including file '../../common\words/name2string.asm'
-../../avr8\dict/appl_4k.inc(78): Including file '../../avr8\words/nfa2cfa.asm'
-../../avr8\dict/appl_4k.inc(79): Including file '../../common\words/find-xt.asm'
-../../avr8\dict/appl_4k.inc(81): Including file '../../avr8\dict/compiler1.inc'
-../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm'
-../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm'
-../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm'
-../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm'
-../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm'
-../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm'
-../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm'
-../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm'
-../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm'
-../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm'
-../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm'
-../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm'
-../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm'
-../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm'
-../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm'
-../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm'
-../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm'
-../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm'
-../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm'
-../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm'
-../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm'
-../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm'
-../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm'
-../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm'
-../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm'
-../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm'
-../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm'
-../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm'
-../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm'
-../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm'
-../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm'
-../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm'
-../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm'
-../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm'
-../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm'
-../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm'
-../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm'
-../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm'
-../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm'
-../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm'
-../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm'
-../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm'
-../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm'
-../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm'
-../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm'
-../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm'
-../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm'
-../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm'
-../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm'
-../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm'
-../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm'
-../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm'
-../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm'
-../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm'
-../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm'
-../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm'
-../../avr8\dict/compiler1.inc(67): Including file '../../common\words/get-order.asm'
-../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-order.asm'
-../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm'
-../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm'
-../../avr8\amforth.asm(15): Including file 'dict_appl.inc'
-dict_appl.inc(3): Including file '../../common\words/dot-s.asm'
-dict_appl.inc(4): Including file '../../avr8\words/spirw.asm'
-dict_appl.inc(5): Including file '../../avr8\words/n-spi.asm'
-dict_appl.inc(6): Including file 'words/applturnkey.asm'
-dict_appl.inc(7): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm'
-../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm'
-../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm'
-../../avr8\dict/compiler2.inc(12): Including file '../../common\words/set-order.asm'
-../../avr8\dict/compiler2.inc(13): Including file '../../common\words/set-recognizer.asm'
-../../avr8\dict/compiler2.inc(14): Including file '../../common\words/get-recognizer.asm'
-../../avr8\dict/compiler2.inc(15): Including file '../../avr8\words/code.asm'
-../../avr8\dict/compiler2.inc(16): Including file '../../avr8\words/end-code.asm'
-../../avr8\dict/compiler2.inc(17): Including file '../../avr8\words/marker.asm'
-../../avr8\dict/compiler2.inc(18): Including file '../../common\words/postpone.asm'
-dict_appl.inc(8): Including file '../../avr8\words/2r_fetch.asm'
-../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm'
-../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc'
-../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm'
-../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm'
-../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm'
-../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm'
-../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm'
-../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm'
-../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm'
-../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm'
-../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm'
-../../avr8\dict/nrww.inc(15): Including file '../../avr8\words/fetch.asm'
-../../avr8\dict/nrww.inc(16): Including file '../../avr8\words/store.asm'
-../../avr8\dict/nrww.inc(17): Including file '../../avr8\words/cstore.asm'
-../../avr8\dict/nrww.inc(18): Including file '../../avr8\words/cfetch.asm'
-../../avr8\dict/nrww.inc(19): Including file '../../avr8\words/fetch-u.asm'
-../../avr8\dict/nrww.inc(20): Including file '../../avr8\words/store-u.asm'
-../../avr8\dict/nrww.inc(23): Including file '../../avr8\words/dup.asm'
-../../avr8\dict/nrww.inc(24): Including file '../../avr8\words/qdup.asm'
-../../avr8\dict/nrww.inc(25): Including file '../../avr8\words/swap.asm'
-../../avr8\dict/nrww.inc(26): Including file '../../avr8\words/over.asm'
-../../avr8\dict/nrww.inc(27): Including file '../../avr8\words/drop.asm'
-../../avr8\dict/nrww.inc(28): Including file '../../avr8\words/rot.asm'
-../../avr8\dict/nrww.inc(29): Including file '../../avr8\words/nip.asm'
-../../avr8\dict/nrww.inc(31): Including file '../../avr8\words/r_from.asm'
-../../avr8\dict/nrww.inc(32): Including file '../../avr8\words/to_r.asm'
-../../avr8\dict/nrww.inc(33): Including file '../../avr8\words/r_fetch.asm'
-../../avr8\dict/nrww.inc(36): Including file '../../common\words/not-equal.asm'
-../../avr8\dict/nrww.inc(37): Including file '../../avr8\words/equalzero.asm'
-../../avr8\dict/nrww.inc(38): Including file '../../avr8\words/lesszero.asm'
-../../avr8\dict/nrww.inc(39): Including file '../../avr8\words/greaterzero.asm'
-../../avr8\dict/nrww.inc(40): Including file '../../avr8\words/d-greaterzero.asm'
-../../avr8\dict/nrww.inc(41): Including file '../../avr8\words/d-lesszero.asm'
-../../avr8\dict/nrww.inc(43): Including file '../../avr8\words/true.asm'
-../../avr8\dict/nrww.inc(44): Including file '../../avr8\words/zero.asm'
-../../avr8\dict/nrww.inc(45): Including file '../../avr8\words/uless.asm'
-../../avr8\dict/nrww.inc(46): Including file '../../common\words/u-greater.asm'
-../../avr8\dict/nrww.inc(47): Including file '../../avr8\words/less.asm'
-../../avr8\dict/nrww.inc(48): Including file '../../avr8\words/greater.asm'
-../../avr8\dict/nrww.inc(50): Including file '../../avr8\words/log2.asm'
-../../avr8\dict/nrww.inc(51): Including file '../../avr8\words/minus.asm'
-../../avr8\dict/nrww.inc(52): Including file '../../avr8\words/plus.asm'
-../../avr8\dict/nrww.inc(53): Including file '../../avr8\words/mstar.asm'
-../../avr8\dict/nrww.inc(54): Including file '../../avr8\words/umslashmod.asm'
-../../avr8\dict/nrww.inc(55): Including file '../../avr8\words/umstar.asm'
-../../avr8\dict/nrww.inc(57): Including file '../../avr8\words/invert.asm'
-../../avr8\dict/nrww.inc(58): Including file '../../avr8\words/2slash.asm'
-../../avr8\dict/nrww.inc(59): Including file '../../avr8\words/2star.asm'
-../../avr8\dict/nrww.inc(60): Including file '../../avr8\words/and.asm'
-../../avr8\dict/nrww.inc(61): Including file '../../avr8\words/or.asm'
-../../avr8\dict/nrww.inc(62): Including file '../../avr8\words/xor.asm'
-../../avr8\dict/nrww.inc(64): Including file '../../avr8\words/1plus.asm'
-../../avr8\dict/nrww.inc(65): Including file '../../avr8\words/1minus.asm'
-../../avr8\dict/nrww.inc(66): Including file '../../common\words/q-negate.asm'
-../../avr8\dict/nrww.inc(67): Including file '../../avr8\words/lshift.asm'
-../../avr8\dict/nrww.inc(68): Including file '../../avr8\words/rshift.asm'
-../../avr8\dict/nrww.inc(69): Including file '../../avr8\words/plusstore.asm'
-../../avr8\dict/nrww.inc(71): Including file '../../avr8\words/rpfetch.asm'
-../../avr8\dict/nrww.inc(72): Including file '../../avr8\words/rpstore.asm'
-../../avr8\dict/nrww.inc(73): Including file '../../avr8\words/spfetch.asm'
-../../avr8\dict/nrww.inc(74): Including file '../../avr8\words/spstore.asm'
-../../avr8\dict/nrww.inc(76): Including file '../../avr8\words/dodo.asm'
-../../avr8\dict/nrww.inc(77): Including file '../../avr8\words/i.asm'
-../../avr8\dict/nrww.inc(78): Including file '../../avr8\words/doplusloop.asm'
-../../avr8\dict/nrww.inc(79): Including file '../../avr8\words/doloop.asm'
-../../avr8\dict/nrww.inc(80): Including file '../../avr8\words/unloop.asm'
-../../avr8\dict/nrww.inc(84): Including file '../../avr8\words/cmove_g.asm'
-../../avr8\dict/nrww.inc(85): Including file '../../avr8\words/byteswap.asm'
-../../avr8\dict/nrww.inc(86): Including file '../../avr8\words/up.asm'
-../../avr8\dict/nrww.inc(87): Including file '../../avr8\words/1ms.asm'
-../../avr8\dict/nrww.inc(88): Including file '../../avr8\words/2to_r.asm'
-../../avr8\dict/nrww.inc(89): Including file '../../avr8\words/2r_from.asm'
-../../avr8\dict/nrww.inc(91): Including file '../../avr8\words/store-e.asm'
-../../avr8\dict/nrww.inc(92): Including file '../../avr8\words/fetch-e.asm'
-../../avr8\dict/nrww.inc(93): Including file '../../avr8\words/store-i.asm'
-../../avr8\dict/nrww.inc(97): Including file '../../avr8\words/store-i_nrww.asm'
-../../avr8\dict/nrww.inc(99): Including file '../../avr8\words/fetch-i.asm'
-../../avr8\dict/nrww.inc(104): Including file '../../avr8\dict/core_4k.inc'
-../../avr8\dict/core_4k.inc(3): Including file '../../avr8\words/n_to_r.asm'
-../../avr8\dict/core_4k.inc(4): Including file '../../avr8\words/n_r_from.asm'
-../../avr8\dict/core_4k.inc(5): Including file '../../avr8\words/d-2star.asm'
-../../avr8\dict/core_4k.inc(6): Including file '../../avr8\words/d-2slash.asm'
-../../avr8\dict/core_4k.inc(7): Including file '../../avr8\words/d-plus.asm'
-../../avr8\dict/core_4k.inc(8): Including file '../../avr8\words/d-minus.asm'
-../../avr8\dict/core_4k.inc(9): Including file '../../avr8\words/d-invert.asm'
-../../avr8\dict/core_4k.inc(10): Including file '../../avr8\words/slashmod.asm'
-../../avr8\dict/core_4k.inc(11): Including file '../../common\words/abs.asm'
-../../avr8\dict/core_4k.inc(12): Including file '../../common\words/pick.asm'
-../../avr8\dict/core_4k.inc(13): Including file '../../avr8\words/cellplus.asm'
-../../avr8\dict/core_4k.inc(14): Including file '../../avr8\dict/interrupt.inc'
-../../avr8\dict/interrupt.inc(8): Including file '../../avr8\words/int-on.asm'
-../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-off.asm'
-../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-store.asm'
-../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-fetch.asm'
-../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-trap.asm'
-../../avr8\dict/interrupt.inc(14): Including file '../../avr8\words/isr-exec.asm'
-../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-end.asm'
-../../avr8\dict/core_4k.inc(17): Including file '../../common\words/prompt-ok.asm'
-../../avr8\dict/core_4k.inc(18): Including file '../../common\words/prompt-ready.asm'
-../../avr8\dict/core_4k.inc(19): Including file '../../common\words/prompt-error.asm'
-../../avr8\dict/core_4k.inc(21): Including file '../../common\words/quit.asm'
-../../avr8\dict/core_4k.inc(22): Including file '../../avr8\words/pause.asm'
-../../avr8\dict/core_4k.inc(23): Including file '../../avr8\words/cold.asm'
-../../avr8\dict/core_4k.inc(24): Including file '../../common\words/warm.asm'
-../../avr8\dict/core_4k.inc(26): Including file '../../common\words/handler.asm'
-../../avr8\dict/core_4k.inc(27): Including file '../../common\words/catch.asm'
-../../avr8\dict/core_4k.inc(28): Including file '../../common\words/throw.asm'
-../../avr8\dict/core_4k.inc(31): Including file '../../avr8\words/edefer-fetch.asm'
-../../avr8\dict/core_4k.inc(32): Including file '../../avr8\words/edefer-store.asm'
-../../avr8\dict/core_4k.inc(33): Including file '../../common\words/rdefer-fetch.asm'
-../../avr8\dict/core_4k.inc(34): Including file '../../common\words/rdefer-store.asm'
-../../avr8\dict/core_4k.inc(35): Including file '../../common\words/udefer-fetch.asm'
-../../avr8\dict/core_4k.inc(36): Including file '../../common\words/udefer-store.asm'
-../../avr8\dict/core_4k.inc(37): Including file '../../common\words/defer-store.asm'
-../../avr8\dict/core_4k.inc(38): Including file '../../common\words/defer-fetch.asm'
-../../avr8\dict/core_4k.inc(39): Including file '../../avr8\words/do-defer.asm'
-../../avr8\dict/core_4k.inc(41): Including file '../../common\words/u-dot.asm'
-../../avr8\dict/core_4k.inc(42): Including file '../../common\words/u-dot-r.asm'
-../../avr8\dict/core_4k.inc(45): Including file '../../avr8\words/uslashmod.asm'
-../../avr8\dict/core_4k.inc(46): Including file '../../avr8\words/negate.asm'
-../../avr8\dict/core_4k.inc(47): Including file '../../common\words/slash.asm'
-../../avr8\dict/core_4k.inc(48): Including file '../../common\words/mod.asm'
-../../avr8\dict/core_4k.inc(50): Including file '../../common\words/min.asm'
-../../avr8\dict/core_4k.inc(51): Including file '../../common\words/max.asm'
-../../avr8\dict/core_4k.inc(52): Including file '../../common\words/within.asm'
-../../avr8\dict/core_4k.inc(54): Including file '../../common\words/show-wordlist.asm'
-../../avr8\dict/core_4k.inc(55): Including file '../../common\words/words.asm'
-../../avr8\dict/core_4k.inc(57): Including file '../../common\words/dot-quote.asm'
-../../avr8\dict/core_4k.inc(58): Including file '../../common\words/squote.asm'
-../../avr8\dict/core_4k.inc(59): Including file '../../avr8\words/fill.asm'
-../../avr8\dict/core_4k.inc(61): Including file '../../common\words/f_cpu.asm'
-../../avr8\dict/core_4k.inc(62): Including file '../../avr8\words/state.asm'
-../../avr8\dict/core_4k.inc(63): Including file '../../common\words/base.asm'
-../../avr8\dict/core_4k.inc(65): Including file '../../avr8\words/cells.asm'
-../../avr8\dict/core_4k.inc(67): Including file '../../common\words/2dup.asm'
-../../avr8\dict/core_4k.inc(68): Including file '../../common\words/2drop.asm'
-../../avr8\dict/core_4k.inc(69): Including file '../../common\words/tuck.asm'
-../../avr8\dict/core_4k.inc(71): Including file '../../common\words/to-in.asm'
-../../avr8\dict/core_4k.inc(72): Including file '../../common\words/pad.asm'
-../../avr8\dict/core_4k.inc(73): Including file '../../common\words/emit.asm'
-../../avr8\dict/core_4k.inc(74): Including file '../../common\words/emitq.asm'
-../../avr8\dict/core_4k.inc(75): Including file '../../common\words/key.asm'
-../../avr8\dict/core_4k.inc(76): Including file '../../common\words/keyq.asm'
-../../avr8\dict/core_4k.inc(78): Including file '../../avr8\words/dp.asm'
-../../avr8\dict/core_4k.inc(79): Including file '../../avr8\words/ehere.asm'
-../../avr8\dict/core_4k.inc(80): Including file '../../avr8\words/here.asm'
-../../avr8\dict/core_4k.inc(81): Including file '../../avr8\words/allot.asm'
-../../avr8\dict/core_4k.inc(83): Including file '../../common\words/bin.asm'
-../../avr8\dict/core_4k.inc(84): Including file '../../common\words/decimal.asm'
-../../avr8\dict/core_4k.inc(85): Including file '../../common\words/hex.asm'
-../../avr8\dict/core_4k.inc(86): Including file '../../common\words/bl.asm'
-../../avr8\dict/core_4k.inc(88): Including file '../../avr8\words/turnkey.asm'
-../../avr8\dict/core_4k.inc(89): Including file '../../common\words/to-upper.asm'
-../../avr8\dict/core_4k.inc(90): Including file '../../common\words/to-lower.asm'
-../../avr8\dict/core_4k.inc(92): Including file '../../common\words/q-stack.asm'
-../../avr8\dict/core_4k.inc(93): Including file '../../common\words/bounds.asm'
-../../avr8\dict/core_4k.inc(94): Including file '../../common\words/cr.asm'
-../../avr8\dict/core_4k.inc(95): Including file '../../common\words/space.asm'
-../../avr8\dict/core_4k.inc(96): Including file '../../common\words/spaces.asm'
-../../avr8\dict/core_4k.inc(97): Including file '../../common\words/s-to-d.asm'
-../../avr8\dict/core_4k.inc(98): Including file '../../avr8\words/to-body.asm'
-../../avr8\dict/nrww.inc(112): Including file '../../common\words/2literal.asm'
-../../avr8\dict/nrww.inc(113): Including file '../../avr8\words/equal.asm'
-../../avr8\dict/nrww.inc(114): Including file '../../common\words/num-constants.asm'
-../../avr8\amforth.asm(25): Including file 'dict_appl_core.inc'
-../../avr8\amforth.asm(36): Including file '../../avr8\amforth-eeprom.inc'
-
-
- ; file see ../template/template.asm. You may want to
- ; copy that file to this one and edit it afterwards.
-
- .include "preamble.inc"
-
- .include "macros.asm"
-
- .set DICT_COMPILER2 = 0 ;
- .set cpu_msp430 = 0
- .set cpu_avr8 = 1
-
- .include "user.inc"
-
- ;
-
- ; used by the multitasker
- .set USER_STATE = 0
- .set USER_FOLLOWER = 2
-
- ; stackpointer, used by mulitasker
- .set USER_RP = 4
- .set USER_SP0 = 6
- .set USER_SP = 8
-
- ; excpection handling
- .set USER_HANDLER = 10
-
- ; numeric IO
- .set USER_BASE = 12
-
- ; character IO
- .set USER_EMIT = 14
- .set USER_EMITQ = 16
- .set USER_KEY = 18
- .set USER_KEYQ = 20
-
- .set USER_SOURCE = 22
- .set USER_TO_IN = 24
- .set USER_REFILL = 26
-
- .set USER_P_OK = 28
- .set USER_P_ERR = 30
- .set USER_P_RDY = 32
-
- .set SYSUSERSIZE = 34
- ;
-
- .def zerol = r2
- .def zeroh = r3
- .def upl = r4
- .def uph = r5
-
- .def al = r6
- .def ah = r7
- .def bl = r8
- .def bh = r9
-
- ; internal
- .def mcu_boot = r10
- .def isrflag = r11
-
- .def temp4 = r14
- .def temp5 = r15
-
- .def temp0 = r16
- .def temp1 = r17
- .def temp2 = r18
- .def temp3 = r19
-
- .def temp6 = r20
- .def temp7 = r21
-
- .def tosl = r24
- .def tosh = r25
-
- .def wl = r22
- .def wh = r23
-
- .macro loadtos
- ld tosl, Y+
- ld tosh, Y+
- .endmacro
-
- .macro savetos
- st -Y, tosh
- st -Y, tosl
- .endmacro
-
- .macro in_
- .if (@1 < $40)
- in @0,@1
- .else
- lds @0,@1
- .endif
- .endmacro
-
- .macro out_
- .if (@0 < $40)
- out @0,@1
- .else
- sts @0,@1
- .endif
- .endmacro
-
- .macro sbi_
- .if (@0 < $40)
- sbi @0,@1
- .else
- in_ @2,@0
- ori @2,exp2(@1)
- out_ @0,@2
- .endif
- .endmacro
-
- .macro cbi_
- .if (@0 < $40)
- cbi @0,@1
- .else
- in_ @2,@0
- andi @2,~(exp2(@1))
- out_ @0,@2
- .endif
- .endmacro
-
- .macro jmp_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- jmp @0
- .else
- rjmp @0
- .endif
- .else
- jmp @0
- .endif
- .endmacro
- .macro call_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- call @0
- .else
- rcall @0
- .endif
- .else
- call @0
- .endif
- .endmacro
-
- ; F_CPU
- ; µsec 16000000 14745600 8000000 1000000
- ; 1 16 14,74 8 1
- ; 10 160 147,45 80 10
- ; 100 1600 1474,56 800 100
- ; 1000 16000 14745,6 8000 1000
- ;
- ; cycles = µsec * f_cpu / 1e6
- ; n_loops=cycles/5
- ;
- ; cycles already used will be subtracted from the delay
- ; the waittime resolution is 1 cycle (delay from exact to +1 cycle)
- ; the maximum delay at 20MHz (50ns/clock) is 38350ns
- ; waitcount register must specify an immediate register
- ;
- ; busy waits a specfied amount of microseconds
- .macro delay
- .set cycles = ( ( @0 * F_CPU ) / 1000000 )
- .if (cycles > ( 256 * 255 * 4 + 2))
- .error "MACRO delay - too many cycles to burn"
- .else
- .if (cycles > 6)
- .set loop_cycles = (cycles / 4)
- ldi zl,low(loop_cycles)
- ldi zh,high(loop_cycles)
- sbiw Z, 1
- brne pc-1
- .set cycles = (cycles - (loop_cycles * 4))
- .endif
- .if (cycles > 0)
- .if (cycles & 4)
- rjmp pc+1
- rjmp pc+1
- .endif
- .if (cycles & 2)
- rjmp pc+1
- .endif
- .if (cycles & 1)
- nop
- .endif
- .endif
- .endif
- .endmacro
-
- ; portability macros, they come from the msp430 branches
-
- .macro DEST
- .dw @0
- .endm
-
- ; controller specific file selected via include
- ; directory definition when calling the assembler (-I)
- .include "device.asm"
-
- ; generated automatically, do not edit
-
- .list
-
- .equ ramstart = 256
- .equ CELLSIZE = 2
- .macro readflashcell
- lsl zl
- rol zh
- lpm @0, Z+
- lpm @1, Z+
- .endmacro
- .macro writeflashcell
- lsl zl
- rol zh
- .endmacro
- .set WANT_USART0 = 0
- .set WANT_TWI = 0
- .set WANT_TIMER_COUNTER_1 = 0
- .set WANT_TIMER_COUNTER_2 = 0
- .set WANT_AD_CONVERTER = 0
- .set WANT_ANALOG_COMPARATOR = 0
- .set WANT_PORTB = 0
- .set WANT_PORTC = 0
- .set WANT_PORTD = 0
- .set WANT_TIMER_COUNTER_0 = 0
- .set WANT_EXTERNAL_INTERRUPT = 0
- .set WANT_SPI = 0
- .set WANT_WATCHDOG = 0
- .set WANT_CPU = 0
- .set WANT_EEPROM = 0
- .equ intvecsize = 2 ; please verify; flash size: 32768 bytes
- .equ pclen = 2 ; please verify
- .overlap
- .org 2
-000002 d126 rcall isr ; External Interrupt Request 0
- .org 4
-000004 d124 rcall isr ; External Interrupt Request 1
- .org 6
-000006 d122 rcall isr ; Pin Change Interrupt Request 0
- .org 8
-000008 d120 rcall isr ; Pin Change Interrupt Request 0
- .org 10
-00000a d11e rcall isr ; Pin Change Interrupt Request 1
- .org 12
-00000c d11c rcall isr ; Watchdog Time-out Interrupt
- .org 14
-00000e d11a rcall isr ; Timer/Counter2 Compare Match A
- .org 16
-000010 d118 rcall isr ; Timer/Counter2 Compare Match A
- .org 18
-000012 d116 rcall isr ; Timer/Counter2 Overflow
- .org 20
-000014 d114 rcall isr ; Timer/Counter1 Capture Event
- .org 22
-000016 d112 rcall isr ; Timer/Counter1 Compare Match A
- .org 24
-000018 d110 rcall isr ; Timer/Counter1 Compare Match B
- .org 26
-00001a d10e rcall isr ; Timer/Counter1 Overflow
- .org 28
-00001c d10c rcall isr ; TimerCounter0 Compare Match A
- .org 30
-00001e d10a rcall isr ; TimerCounter0 Compare Match B
- .org 32
-000020 d108 rcall isr ; Timer/Couner0 Overflow
- .org 34
-000022 d106 rcall isr ; SPI Serial Transfer Complete
- .org 36
-000024 d104 rcall isr ; USART Rx Complete
- .org 38
-000026 d102 rcall isr ; USART, Data Register Empty
- .org 40
-000028 d100 rcall isr ; USART Tx Complete
- .org 42
-00002a d0fe rcall isr ; ADC Conversion Complete
- .org 44
-00002c d0fc rcall isr ; EEPROM Ready
- .org 46
-00002e d0fa rcall isr ; Analog Comparator
- .org 48
-000030 d0f8 rcall isr ; Two-wire Serial Interface
- .org 50
-000032 d0f6 rcall isr ; Store Program Memory Read
- .equ INTVECTORS = 26
- .nooverlap
-
- ; compatability layer (maybe empty)
- .equ SPMEN = SELFPRGEN
-
- ; controller data area, environment query mcu-info
- mcu_info:
- mcu_ramsize:
-000033 0800 .dw 2048
- mcu_eepromsize:
-000034 0400 .dw 1024
- mcu_maxdp:
-000035 7000 .dw 28672
- mcu_numints:
-000036 001a .dw 26
- mcu_name:
-000037 000a .dw 10
-000038 5441
-000039 656d
-00003a 6167
-00003b 3233
-00003c 5038 .db "ATmega328P"
- .set codestart=pc
-
- ; some defaults, change them in your application master file
- ; see template.asm for an example
-
- ; enabling Interrupts, disabling them affects
- ; other settings as well.
- .set WANT_INTERRUPTS = 1
-
- ; count the number of interrupts individually.
- ; requires a lot of RAM (one byte per interrupt)
- ; disabled by default.
- .set WANT_INTERRUPT_COUNTERS = 0
-
- ; receiving is asynchronously, so an interrupt queue is useful.
- .set WANT_ISR_RX = 1
-
- ; case insensitve dictionary lookup.
- .set WANT_IGNORECASE = 0
-
- ; map all memories to one address space. Details in the
- ; technical guide
- .set WANT_UNIFIED = 0
-
- ; terminal input buffer
- .set TIB_SIZE = 90 ; ANS94 needs at least 80 characters per line
-
- ; USER variables *in addition* to system ones
- .set APPUSERSIZE = 10 ; size of application specific user area in bytes
-
- ; addresses of various data segments
- .set rstackstart = RAMEND ; start address of return stack, grows downward
- .set stackstart = RAMEND - 80 ; start address of data stack, grows downward
- ; change only if you know what to you do
- .set NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8
- .set NUMRECOGNIZERS = 4 ; total number of recognizers, two are always used.
-
- ; 10 per mille (1 per cent) is ok.
- .set BAUD = 38400
- .set BAUD_MAXERROR = 10
-
- ; Dictionary setup
- .set VE_HEAD = $0000
- .set VE_ENVHEAD = $0000
-
- .set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
- ; cpu clock in hertz
- .equ F_CPU = 16000000
- .set BAUD_MAXERROR = 30
- .equ TIMER_INT = OVF2addr
-
- .include "drivers/usart_0.asm"
-
- .equ BAUDRATE_HIGH = UBRR0H
- .equ USART_C = UCSR0C
- .equ USART_B = UCSR0B
- .equ USART_A = UCSR0A
- .equ USART_DATA = UDR0
- .ifndef URXCaddr
- .endif
-
- .equ bm_USART_RXRD = 1 << RXC0
- .equ bm_USART_TXRD = 1 << UDRE0
- .equ bm_ENABLE_TX = 1 << TXEN0
- .equ bm_ENABLE_RX = 1 << RXEN0
- .equ bm_ENABLE_INT_RX = 1<<RXCIE0
- .equ bm_ENABLE_INT_TX = 1<<UDRIE0
-
- .equ bm_USARTC_en = 0
- .equ bm_ASYNC = 0 << 6
- .equ bm_SYNC = 1 << 6
- .equ bm_NO_PARITY = 0 << 4
- .equ bm_EVEN_PARITY = 2 << 4
- .equ bm_ODD_PARITY = 3 << 4
- .equ bm_1STOPBIT = 0 << 3
- .equ bm_2STOPBIT = 1 << 3
- .equ bm_5BIT = 0 << 1
- .equ bm_6BIT = 1 << 1
- .equ bm_7BIT = 2 << 1
- .equ bm_8BIT = 3 << 1
-
- .include "drivers/usart_common.asm"
-
- .set USART_C_VALUE = bm_ASYNC | bm_NO_PARITY | bm_1STOPBIT | bm_8BIT
- .if WANT_INTERRUPTS == 0
- .if WANT_ISR_RX == 1
- .endif
- .endif
-
- .if WANT_ISR_RX == 1
- .set USART_B_VALUE = bm_ENABLE_TX | bm_ENABLE_RX | bm_ENABLE_INT_RX
- .include "drivers/usart-rx-buffer.asm"
-
-
- ; sizes have to be powers of 2!
- .equ usart_rx_size = $10
- .equ usart_rx_mask = usart_rx_size - 1
- .dseg
-000100 usart_rx_data: .byte usart_rx_size
-000110 usart_rx_in: .byte 1
-000111 usart_rx_out: .byte 1
- .cseg
-
- VE_TO_RXBUF:
-00003d ff07 .dw $ff07
-00003e 723e
-00003f 2d78
-000040 7562
-000041 0066 .db ">rx-buf",0
-000042 0000 .dw VE_HEAD
- .set VE_HEAD = VE_TO_RXBUF
- XT_TO_RXBUF:
-000043 0044 .dw PFA_rx_tobuf
- PFA_rx_tobuf:
-000044 2f08 mov temp0, tosl
-000045 9110 0110 lds temp1, usart_rx_in
-000047 e0e0 ldi zl, low(usart_rx_data)
-000048 e0f1 ldi zh, high(usart_rx_data)
-000049 0fe1 add zl, temp1
-00004a 1df3 adc zh, zeroh
-00004b 8300 st Z, temp0
-00004c 9513 inc temp1
-00004d 701f andi temp1,usart_rx_mask
-00004e 9310 0110 sts usart_rx_in, temp1
-000050 9189
-000051 9199 loadtos
-000052 940c 3805 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; setup with
- ; ' isr-rx URXCaddr int!
- VE_ISR_RX:
-000054 ff06 .dw $ff06
-000055 7369
-000056 2d72
-000057 7872 .db "isr-rx"
-000058 003d .dw VE_HEAD
- .set VE_HEAD = VE_ISR_RX
- XT_ISR_RX:
-000059 3801 .dw DO_COLON
- usart_rx_isr:
-00005a 383d .dw XT_DOLITERAL
-00005b 00c6 .dw usart_data
-00005c 3898 .dw XT_CFETCH
-00005d 38b1 .dw XT_DUP
-00005e 383d .dw XT_DOLITERAL
-00005f 0003 .dw 3
-000060 3fdf .dw XT_EQUAL
-000061 3836 .dw XT_DOCONDBRANCH
-000062 0064 .dw usart_rx_isr1
-000063 3d38 .dw XT_COLD
- usart_rx_isr1:
-000064 0043 .dw XT_TO_RXBUF
-000065 3820 .dw XT_EXIT
-
- ; ( -- ) Hardware Access
- ; R( --)
- ; initialize usart
- ;VE_USART_INIT_RXBUFFER:
- ; .dw $ff0x
- ; .db "+usart-buffer"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_USART_INIT_RXBUFFER
- XT_USART_INIT_RX_BUFFER:
-000066 3801 .dw DO_COLON
- PFA_USART_INIT_RX_BUFFER: ; ( -- )
-000067 383d
-000068 0059 .dw XT_DOLITERAL, XT_ISR_RX
-000069 383d
-00006a 0024 .dw XT_DOLITERAL, URXCaddr
-00006b 3ca5 .dw XT_INTSTORE
-
-00006c 383d .dw XT_DOLITERAL
-00006d 0100 .dw usart_rx_data
-00006e 383d .dw XT_DOLITERAL
-00006f 0016 .dw usart_rx_size + 6
-000070 3954 .dw XT_ZERO
-000071 3e98 .dw XT_FILL
-000072 3820 .dw XT_EXIT
-
- ; ( -- c)
- ; MCU
- ; get 1 character from input queue, wait if needed using interrupt driver
- VE_RX_BUFFER:
-000073 ff06 .dw $ff06
-000074 7872
-000075 622d
-000076 6675 .db "rx-buf"
-000077 0054 .dw VE_HEAD
- .set VE_HEAD = VE_RX_BUFFER
- XT_RX_BUFFER:
-000078 3801 .dw DO_COLON
- PFA_RX_BUFFER:
-000079 0093 .dw XT_RXQ_BUFFER
-00007a 3836 .dw XT_DOCONDBRANCH
-00007b 0079 .dw PFA_RX_BUFFER
-00007c 383d .dw XT_DOLITERAL
-00007d 0111 .dw usart_rx_out
-00007e 3898 .dw XT_CFETCH
-00007f 38b1 .dw XT_DUP
-000080 383d .dw XT_DOLITERAL
-000081 0100 .dw usart_rx_data
-000082 399d .dw XT_PLUS
-000083 3898 .dw XT_CFETCH
-000084 38c4 .dw XT_SWAP
-000085 3a2f .dw XT_1PLUS
-000086 383d .dw XT_DOLITERAL
-000087 000f .dw usart_rx_mask
-000088 3a13 .dw XT_AND
-000089 383d .dw XT_DOLITERAL
-00008a 0111 .dw usart_rx_out
-00008b 388d .dw XT_CSTORE
-00008c 3820 .dw XT_EXIT
-
- ; ( -- f)
- ; MCU
- ; check if unread characters are in the input queue
- VE_RXQ_BUFFER:
-00008d ff07 .dw $ff07
-00008e 7872
-00008f 2d3f
-000090 7562
-000091 0066 .db "rx?-buf",0
-000092 0073 .dw VE_HEAD
- .set VE_HEAD = VE_RXQ_BUFFER
- XT_RXQ_BUFFER:
-000093 3801 .dw DO_COLON
- PFA_RXQ_BUFFER:
-000094 3d30 .dw XT_PAUSE
-000095 383d .dw XT_DOLITERAL
-000096 0111 .dw usart_rx_out
-000097 3898 .dw XT_CFETCH
-000098 383d .dw XT_DOLITERAL
-000099 0110 .dw usart_rx_in
-00009a 3898 .dw XT_CFETCH
-00009b 3913 .dw XT_NOTEQUAL
-00009c 3820 .dw XT_EXIT
- ; .include "drivers/timer-usart-isr.asm"
- .set XT_RX = XT_RX_BUFFER
- .set XT_RXQ = XT_RXQ_BUFFER
- .set XT_USART_INIT_RX = XT_USART_INIT_RX_BUFFER
- .else
- .endif
-
- .include "words/usart-tx-poll.asm"
-
- ; MCU
- ; check availability and send one character to the terminal using register poll
- VE_TX_POLL:
-00009d ff07 .dw $ff07
-00009e 7874
-00009f 702d
-0000a0 6c6f
-0000a1 006c .db "tx-poll",0
-0000a2 008d .dw VE_HEAD
- .set VE_HEAD = VE_TX_POLL
- XT_TX_POLL:
-0000a3 3801 .dw DO_COLON
- PFA_TX_POLL:
- ; wait for data ready
-0000a4 00b1 .dw XT_TXQ_POLL
-0000a5 3836 .dw XT_DOCONDBRANCH
-0000a6 00a4 .dw PFA_TX_POLL
- ; send to usart
-0000a7 383d .dw XT_DOLITERAL
-0000a8 00c6 .dw USART_DATA
-0000a9 388d .dw XT_CSTORE
-0000aa 3820 .dw XT_EXIT
-
- ; ( -- f) MCU
- ; MCU
- ; check if a character can be send using register poll
- VE_TXQ_POLL:
-0000ab ff08 .dw $ff08
-0000ac 7874
-0000ad 2d3f
-0000ae 6f70
-0000af 6c6c .db "tx?-poll"
-0000b0 009d .dw VE_HEAD
- .set VE_HEAD = VE_TXQ_POLL
- XT_TXQ_POLL:
-0000b1 3801 .dw DO_COLON
- PFA_TXQ_POLL:
-0000b2 3d30 .dw XT_PAUSE
-0000b3 383d .dw XT_DOLITERAL
-0000b4 00c0 .dw USART_A
-0000b5 3898 .dw XT_CFETCH
-0000b6 383d .dw XT_DOLITERAL
-0000b7 0020 .dw bm_USART_TXRD
-0000b8 3a13 .dw XT_AND
-0000b9 3820 .dw XT_EXIT
- .set XT_TX = XT_TX_POLL
- .set XT_TXQ = XT_TXQ_POLL
- .set XT_USART_INIT_TX = 0
-
- .include "words/ubrr.asm"
-
- ; MCU
- ; returns usart UBRR settings
- VE_UBRR:
-0000ba ff04 .dw $ff04
-0000bb 6275
-0000bc 7272 .db "ubrr"
-0000bd 00ab .dw VE_HEAD
- .set VE_HEAD = VE_UBRR
- XT_UBRR:
-0000be 386f .dw PFA_DOVALUE1
- PFA_UBRR: ; ( -- )
-0000bf 008c .dw EE_UBRRVAL
-0000c0 3da0 .dw XT_EDEFERFETCH
-0000c1 3daa .dw XT_EDEFERSTORE
- .include "words/usart.asm"
-
- ; MCU
- ; initialize usart
- VE_USART:
-0000c2 ff06 .dw $ff06
-0000c3 752b
-0000c4 6173
-0000c5 7472 .db "+usart"
-0000c6 00ba .dw VE_HEAD
- .set VE_HEAD = VE_USART
- XT_USART:
-0000c7 3801 .dw DO_COLON
- PFA_USART: ; ( -- )
-
-0000c8 383d .dw XT_DOLITERAL
-0000c9 0098 .dw USART_B_VALUE
-0000ca 383d .dw XT_DOLITERAL
-0000cb 00c1 .dw USART_B
-0000cc 388d .dw XT_CSTORE
-
-0000cd 383d .dw XT_DOLITERAL
-0000ce 0006 .dw USART_C_VALUE
-0000cf 383d .dw XT_DOLITERAL
-0000d0 00c2 .dw USART_C | bm_USARTC_en
-0000d1 388d .dw XT_CSTORE
-
-0000d2 00be .dw XT_UBRR
-0000d3 38b1 .dw XT_DUP
-0000d4 3af9 .dw XT_BYTESWAP
-0000d5 383d .dw XT_DOLITERAL
-0000d6 00c5 .dw BAUDRATE_HIGH
-0000d7 388d .dw XT_CSTORE
-0000d8 383d .dw XT_DOLITERAL
-0000d9 00c4 .dw BAUDRATE_LOW
-0000da 388d .dw XT_CSTORE
- .if XT_USART_INIT_RX!=0
-0000db 0066 .dw XT_USART_INIT_RX
- .endif
- .if XT_USART_INIT_TX!=0
- .endif
-
-0000dc 3820 .dw XT_EXIT
-
- ; settings for 1wire interface
- .equ OW_PORT=PORTB
- .EQU OW_BIT=4
- .include "drivers/1wire.asm"
-
- ; B. J. Rodriguez (MSP 430)
- ; Matthias Trute (AVR Atmega)
- ; COPYRIGHT
- ; (c) 2012 Bradford J. Rodriguez for the 430 code and API
-
- ; adapted 430 assembly code to AVR
- ; wishlist:
- ; use a configurable pin at runtime, compatible with bitnames.frt
- ; no external pull up, no external power supply for devices
- ; ???
- ;
- ;.EQU OW_BIT=4
- ;.equ OW_PORT=PORTE
- .set OW_DDR=(OW_PORT-1)
- .set OW_PIN=(OW_DDR-1)
-
- ;****f* 1W.RESET
- ; NAME
- ; 1W.RESET
- ; SYNOPSIS
- ; 1W.RESET ( -- f ) Initialize 1-wire devices; return true if present
- ; DESCRIPTION
- ; This configures the port pin used by the 1-wire interface, and then
- ; sends an "initialize" sequence to the 1-wire devices. If any device
- ; is present, it will be detected.
- ;
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" (drive output low) for >480 usec.
- ; b) Output "1" (let output float).
- ; c) After 15 to 60 usec, device will drive pin low for 60 to 240 usec.
- ; So, wait 75 usec and sample input.
- ; d) Leave output high (floating) for at least 480 usec.
- ;******
- ; ( -- f )
- ; Hardware
- ; Initialize 1-wire devices; return true if present
- VE_OW_RESET:
-0000dd ff08 .dw $ff08
-0000de 7731
-0000df 722e
-0000e0 7365
-0000e1 7465 .db "1w.reset"
-0000e2 00c2 .dw VE_HEAD
- .set VE_HEAD = VE_OW_RESET
- XT_OW_RESET:
-0000e3 00e4 .dw PFA_OW_RESET
- PFA_OW_RESET:
-0000e4 939a
-0000e5 938a savetos
- ; setup to output
-0000e6 9a24 sbi OW_DDR, OW_BIT
- ; Pull output low
-0000e7 982c cbi OW_PORT, OW_BIT
- ; Delay >480 usec
-0000e8 e8e0
-0000e9 e0f7
-0000ea 9731
-0000eb f7f1 DELAY 480
- ; Critical timing period, disable interrupts.
-0000ec b71f in temp1, SREG
-0000ed 94f8 cli
- ; Pull output high
-0000ee 9a2c sbi OW_PORT, OW_BIT
- ; make pin input, sends "1"
-0000ef 9824 cbi OW_DDR, OW_BIT
-0000f0 e0e0
-0000f1 e0f1
-0000f2 9731
-0000f3 f7f1 DELAY 64 ; delayB
- ; Sample input pin, set TOS if input is zero
-0000f4 b183 in tosl, OW_PIN
-0000f5 ff84 sbrs tosl, OW_BIT
-0000f6 ef9f ser tosh
- ; End critical timing period, enable interrupts
-0000f7 bf1f out SREG, temp1
- ; release bus
-0000f8 9824 cbi OW_DDR, OW_BIT
-0000f9 982c cbi OW_PORT, OW_BIT
-
- ; Delay rest of 480 usec
-0000fa e8e0
-0000fb e0f6
-0000fc 9731
-0000fd f7f1 DELAY 416
- ; we now have the result flag in TOS
-0000fe 2f89 mov tosl, tosh
-0000ff 940c 3805 jmp_ DO_NEXT
-
- ;****f* 1W.SLOT
- ; NAME
- ; 1W.SLOT
- ; SYNOPSIS
- ; 1W.SLOT ( c -- c' ) Write and read one bit to/from 1-wire.
- ; DESCRIPTION
- ; The "touch byte" function is described in Dallas App Note 74.
- ; It outputs a byte to the 1-wire pin, LSB first, and reads back
- ; the state of the 1-wire pin after a suitable delay.
- ; To read a byte, output $FF and read the reply data.
- ; To write a byte, output that byte and discard the reply.
- ;
- ; This function performs one bit of the "touch" operation --
- ; one read/write "slot" in Dallas jargon. Perform this eight
- ; times in a row to get the "touch byte" function.
- ;
- ; PARAMETERS
- ; The input parameter is xxxxxxxxbbbbbbbo where
- ; 'xxxxxxxx' are don't cares,
- ; 'bbbbbbb' are bits to be shifted down, and
- ; 'o' is the bit to be output in the slot. This must be 1
- ; to create a read slot.
- ;
- ; The returned value is xxxxxxxxibbbbbbb where
- ; 'xxxxxxxx' are not known (the input shifted down 1 position),
- ; 'i' is the bit read during the slot. This has no meaning
- ; if it was a write slot.
- ; 'bbbbbbb' are the 7 input bits, shifted down one position.
- ;
- ; This peculiar parameter usage allows OWTOUCH to be written as
- ; OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT
- ;
- ; NOTES
- ; Interrupts are disabled during each bit.
-
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" for start period. (> 1 us, < 15 us, typ. 6 us*)
- ; b) Output data bit (0 or 1), open drain
- ; c) After MS from start of cycle, sample input (15 to 60 us, typ. 25 us*)
- ; d) After write-0 period from start of cycle, output "1" (>60 us)
- ; e) After recovery period, loop or return. (> 1 us)
- ; For writes, DS18B20 samples input 15 to 60 usec from start of cycle.
- ; * "Typical" values are per App Note 132 for a 300m cable length.
-
- ; --------- -------------------------------
- ; \ / /
- ; -------------------------------
- ; a b c d e
- ; | 6us | 19us | 35us | 2us |
- ;******
- ; ( c -- c' )
- ; Hardware
- ; Write and read one bit to/from 1-wire.
- VE_OW_SLOT:
-000101 ff07 .dw $ff07
-000102 7731
-000103 732e
-000104 6f6c
-000105 0074 .db "1w.slot",0
-000106 00dd .dw VE_HEAD
- .set VE_HEAD = VE_OW_SLOT
- XT_OW_SLOT:
-000107 0108 .dw PFA_OW_SLOT
- PFA_OW_SLOT:
- ; pull low
-000108 982c cbi OW_PORT, OW_BIT
-000109 9a24 sbi OW_DDR, OW_BIT
- ; disable interrupts
-00010a b71f in temp1, SREG
-00010b 94f8 cli
-00010c e1e8
-00010d e0f0
-00010e 9731
-00010f f7f1 DELAY 6 ; DELAY A
- ; check bit
-000110 9488 clc
-000111 9587 ror tosl
-000112 f410 brcc PFA_OW_SLOT0 ; a 0 keeps the bus low
- ; release bus, a 1 is written
-000113 9a2c sbi OW_PORT, OW_BIT
-000114 9824 cbi OW_DDR, OW_BIT
- PFA_OW_SLOT0:
- ; sample the input (no action required if zero)
-000115 e2e4
-000116 e0f0
-000117 9731
-000118 f7f1 DELAY 9 ; wait DELAY E to sample
-000119 b103 in temp0, OW_PIN
-00011a fd04 sbrc temp0, OW_BIT
-00011b 6880 ori tosl, $80
-
-00011c ecec
-00011d e0f0
-00011e 9731
-00011f f7f1 DELAY 51 ; DELAY B
-000120 9a2c sbi OW_PORT, OW_BIT ; release bus
-000121 9824 cbi OW_DDR, OW_BIT
-000122 e0e8
-000123 e0f0
-000124 9731
-000125 f7f1 delay 2
- ; re-enable interrupts
-000126 bf1f out SREG, temp1
-000127 940c 3805 jmp_ DO_NEXT
-
- .include "amforth.asm"
-
- ;;;;
- ;;;; GPL V2 (only)
-
- .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2
-
- .set corepc = pc
- .org $0000
-000000 940c 3d39 jmp_ PFA_COLD
-
- .org corepc
- .include "drivers/generic-isr.asm"
-
- .eseg
-000000 intvec: .byte INTVECTORS * CELLSIZE
- .dseg
-000112 intcnt: .byte INTVECTORS
- .cseg
-
- ; interrupt routine gets called (again) by rcall! This gives the
- ; address of the int-vector on the stack.
- isr:
-000129 920a st -Y, r0
-00012a b60f in r0, SREG
-00012b 920a st -Y, r0
- .if (pclen==3)
- .endif
-00012c 900f pop r0
-00012d 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall)
-00012e 940a dec r0
- .if intvecsize == 1 ;
- .endif
-00012f 2cb0 mov isrflag, r0
-000130 93ff push zh
-000131 93ef push zl
-000132 e1e2 ldi zl, low(intcnt)
-000133 e0f1 ldi zh, high(intcnt)
-000134 9406 lsr r0 ; we use byte addresses in the counter array, not words
-000135 0de0 add zl, r0
-000136 1df3 adc zh, zeroh
-000137 8000 ld r0, Z
-000138 9403 inc r0
-000139 8200 st Z, r0
-00013a 91ef pop zl
-00013b 91ff pop zh
-
-00013c 9009 ld r0, Y+
-00013d be0f out SREG, r0
-00013e 9009 ld r0, Y+
-00013f 9508 ret ; returns the interrupt, the rcall stack frame is removed!
- ; no reti here, see words/isr-end.asm
- ; lower part of the dictionary
- .include "dict/rww.inc"
-
-
- ; Arithmetics
- ; add a number to a double cell
- VE_MPLUS:
-000140 ff02 .dw $ff02
-000141 2b6d .db "m+"
-000142 0101 .dw VE_HEAD
- .set VE_HEAD = VE_MPLUS
- XT_MPLUS:
-000143 3801 .dw DO_COLON
- PFA_MPLUS:
-000144 3fc7 .dw XT_S2D
-000145 3c15 .dw XT_DPLUS
-000146 3820 .dw XT_EXIT
- .include "words/ud-star.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSTAR:
-000147 ff03 .dw $ff03
-000148 6475
-../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte
-000149 002a .db "ud*"
-00014a 0140 .dw VE_HEAD
- .set VE_HEAD = VE_UDSTAR
- XT_UDSTAR:
-00014b 3801 .dw DO_COLON
- PFA_UDSTAR:
-
- .endif
- ;Z UD* ud1 d2 -- ud3 32*16->32 multiply
- ; XT_DUP >R UM* DROP XT_SWAP R> UM* ROT + ;
-
-00014c 38b1
-00014d 38ff
-00014e 39e0
-00014f 38d9 .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP
-000150 38c4
-000151 38f6
-000152 39e0
-000153 38e1
-000154 399d
-000155 3820 .DW XT_SWAP,XT_R_FROM,XT_UMSTAR,XT_ROT,XT_PLUS,XT_EXIT
- .include "words/umax.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMAX:
-000156 ff04 .dw $ff04
-000157 6d75
-000158 7861 .db "umax"
-000159 0147 .dw VE_HEAD
- .set VE_HEAD = VE_UMAX
- XT_UMAX:
-00015a 3801 .dw DO_COLON
- PFA_UMAX:
- .endif
-
-00015b 3ec9
-00015c 395c .DW XT_2DUP,XT_ULESS
-00015d 3836 .dw XT_DOCONDBRANCH
-00015e 0160 DEST(UMAX1)
-00015f 38c4 .DW XT_SWAP
-000160 38d9 UMAX1: .DW XT_DROP
-000161 3820 .dw XT_EXIT
- .include "words/umin.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMIN:
-000162 ff04 .dw $ff04
-000163 6d75
-000164 6e69 .db "umin"
-000165 0156 .dw VE_HEAD
- .set VE_HEAD = VE_UMIN
- XT_UMIN:
-000166 3801 .dw DO_COLON
- PFA_UMIN:
- .endif
-000167 3ec9
-000168 3967 .DW XT_2DUP,XT_UGREATER
-000169 3836 .dw XT_DOCONDBRANCH
-00016a 016c DEST(UMIN1)
-00016b 38c4 .DW XT_SWAP
-00016c 38d9 UMIN1: .DW XT_DROP
-00016d 3820 .dw XT_EXIT
- .include "words/immediate-q.asm"
-
- ; Tools
- ; return +1 if immediate, -1 otherwise, flag from name>flags
- ;VE_IMMEDIATEQ:
- ; .dw $ff06
- ; .db "immediate?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_IMMEDIATEQ
- XT_IMMEDIATEQ:
-00016e 3801 .dw DO_COLON
- PFA_IMMEDIATEQ:
-00016f 383d .dw XT_DOLITERAL
-000170 8000 .dw $8000
-000171 3a13 .dw XT_AND
-000172 391a .dw XT_ZEROEQUAL
-000173 3836 .dw XT_DOCONDBRANCH
-000174 0177 DEST(IMMEDIATEQ1)
-000175 3fe6 .dw XT_ONE
-000176 3820 .dw XT_EXIT
- IMMEDIATEQ1:
- ; not immediate
-000177 394b .dw XT_TRUE
-000178 3820 .dw XT_EXIT
- .include "words/name2flags.asm"
-
- ; Tools
- ; get the flags from a name token
- VE_NAME2FLAGS:
-000179 ff0a .dw $ff0a
-00017a 616e
-00017b 656d
-00017c 663e
-00017d 616c
-00017e 7367 .db "name>flags"
-00017f 0162 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2FLAGS
- XT_NAME2FLAGS:
-000180 3801 .dw DO_COLON
- PFA_NAME2FLAGS:
-000181 3bcb .dw XT_FETCHI ; skip to link field
-000182 383d .dw XT_DOLITERAL
-000183 ff00 .dw $ff00
-000184 3a13 .dw XT_AND
-000185 3820 .dw XT_EXIT
-
- .if AMFORTH_NRWW_SIZE > 8000
- .elif AMFORTH_NRWW_SIZE > 4000
- .include "dict/appl_4k.inc"
-
-
- ; Tools
- ; print the version string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOT_VER:
-000186 ff03 .dw $ff03
-000187 6576
-../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte
-000188 0072 .db "ver"
-000189 0179 .dw VE_HEAD
- .set VE_HEAD = VE_DOT_VER
- XT_DOT_VER:
-00018a 3801 .dw DO_COLON
- PFA_DOT_VER:
- .endif
-00018b 02da .dw XT_ENV_FORTHNAME
-00018c 0403 .dw XT_ITYPE
-00018d 3fae .dw XT_SPACE
-00018e 3ebd .dw XT_BASE
-00018f 3879 .dw XT_FETCH
-
-000190 02e8 .dw XT_ENV_FORTHVERSION
-000191 3f41 .dw XT_DECIMAL
-000192 3fc7 .dw XT_S2D
-000193 0321 .dw XT_L_SHARP
-000194 0329 .dw XT_SHARP
-000195 383d .dw XT_DOLITERAL
-000196 002e .dw '.'
-000197 0312 .dw XT_HOLD
-000198 033f .dw XT_SHARP_S
-000199 034a .dw XT_SHARP_G
-00019a 0439 .dw XT_TYPE
-00019b 3ebd .dw XT_BASE
-00019c 3881 .dw XT_STORE
-00019d 3fae .dw XT_SPACE
-00019e 02f0 .dw XT_ENV_CPU
-00019f 0403 .dw XT_ITYPE
-
-0001a0 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/noop.asm"
-
- ; Tools
- ; do nothing
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOOP:
-0001a1 ff04 .dw $ff04
-0001a2 6f6e
-0001a3 706f .db "noop"
-0001a4 0186 .dw VE_HEAD
- .set VE_HEAD = VE_NOOP
- XT_NOOP:
-0001a5 3801 .dw DO_COLON
- PFA_NOOP:
- .endif
-0001a6 3820 .DW XT_EXIT
- .include "words/unused.asm"
-
- ; Tools
- ; Amount of available RAM (incl. PAD)
- VE_UNUSED:
-0001a7 ff06 .dw $ff06
-0001a8 6e75
-0001a9 7375
-0001aa 6465 .db "unused"
-0001ab 01a1 .dw VE_HEAD
- .set VE_HEAD = VE_UNUSED
- XT_UNUSED:
-0001ac 3801 .dw DO_COLON
- PFA_UNUSED:
-0001ad 3a8d .dw XT_SP_FETCH
-0001ae 3f23 .dw XT_HERE
-0001af 3993 .dw XT_MINUS
-0001b0 3820 .dw XT_EXIT
- .include "words/to.asm"
-
- ; Tools
- ; store the TOS to the named value (eeprom cell)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO:
-0001b1 0002 .dw $0002
-0001b2 6f74 .db "to"
-0001b3 01a7 .dw VE_HEAD
- .set VE_HEAD = VE_TO
- XT_TO:
-0001b4 3801 .dw DO_COLON
- PFA_TO:
- .endif
-0001b5 0448 .dw XT_TICK
-0001b6 3fd0 .dw XT_TO_BODY
-0001b7 3eb7 .dw XT_STATE
-0001b8 3879 .dw XT_FETCH
-0001b9 3836 .dw XT_DOCONDBRANCH
-0001ba 01c5 DEST(PFA_TO1)
-0001bb 075c .dw XT_COMPILE
-0001bc 01bf .dw XT_DOTO
-0001bd 0767 .dw XT_COMMA
-0001be 3820 .dw XT_EXIT
-
- ; ( n -- ) (R: IP -- IP+1)
- ; Tools
- ; runtime portion of to
- ;VE_DOTO:
- ; .dw $ff04
- ; .db "(to)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOTO
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_DOTO:
-0001bf 3801 .dw DO_COLON
- PFA_DOTO:
- .endif
-0001c0 38f6 .dw XT_R_FROM
-0001c1 38b1 .dw XT_DUP
-0001c2 01d1 .dw XT_ICELLPLUS
-0001c3 38ff .dw XT_TO_R
-0001c4 3bcb .dw XT_FETCHI
- PFA_TO1:
-0001c5 38b1 .dw XT_DUP
-0001c6 01d1 .dw XT_ICELLPLUS
-0001c7 01d1 .dw XT_ICELLPLUS
-0001c8 3bcb .dw XT_FETCHI
-0001c9 382a .dw XT_EXECUTE
-0001ca 3820 .dw XT_EXIT
- .include "words/i-cellplus.asm"
-
- ; Compiler
- ; skip to the next cell in flash
- VE_ICELLPLUS:
-0001cb ff07 .dw $FF07
-0001cc 2d69
-0001cd 6563
-0001ce 6c6c
-0001cf 002b .db "i-cell+",0
-0001d0 01b1 .dw VE_HEAD
- .set VE_HEAD = VE_ICELLPLUS
- XT_ICELLPLUS:
-0001d1 3801 .dw DO_COLON
- PFA_ICELLPLUS:
-0001d2 3a2f .dw XT_1PLUS
-0001d3 3820 .dw XT_EXIT
- .include "words/icompare.asm"
-
- ; Tools
- ; compares string in RAM with string in flash. f is zero if equal like COMPARE
- VE_ICOMPARE:
-0001d4 ff08 .dw $ff08
-0001d5 6369
-0001d6 6d6f
-0001d7 6170
-0001d8 6572 .db "icompare"
-0001d9 01cb .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
- XT_ICOMPARE:
-0001da 3801 .dw DO_COLON
- PFA_ICOMPARE:
-0001db 38ff .dw XT_TO_R ; ( -- r-addr r-len f-addr)
-0001dc 38cf .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
-0001dd 38f6 .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
-0001de 3913 .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
-0001df 3836 .dw XT_DOCONDBRANCH
-0001e0 01e5 .dw PFA_ICOMPARE_SAMELEN
-0001e1 3ed2 .dw XT_2DROP
-0001e2 38d9 .dw XT_DROP
-0001e3 394b .dw XT_TRUE
-0001e4 3820 .dw XT_EXIT
- PFA_ICOMPARE_SAMELEN:
-0001e5 38c4 .dw XT_SWAP ; ( -- r-addr f-addr len )
-0001e6 3954 .dw XT_ZERO
-0001e7 0826 .dw XT_QDOCHECK
-0001e8 3836 .dw XT_DOCONDBRANCH
-0001e9 0208 .dw PFA_ICOMPARE_DONE
-0001ea 3a9b .dw XT_DODO
- PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
-0001eb 38cf .dw XT_OVER
-0001ec 3879 .dw XT_FETCH
- .if WANT_IGNORECASE == 1
- .endif
-0001ed 38cf .dw XT_OVER
-0001ee 3bcb .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
- .if WANT_IGNORECASE == 1
- .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
-0001ef 38b1 .dw XT_DUP
- ;.dw XT_BYTESWAP
-0001f0 383d .dw XT_DOLITERAL
-0001f1 0100 .dw $100
-0001f2 395c .dw XT_ULESS
-0001f3 3836 .dw XT_DOCONDBRANCH
-0001f4 01f9 .dw PFA_ICOMPARE_LASTCELL
-0001f5 38c4 .dw XT_SWAP
-0001f6 383d .dw XT_DOLITERAL
-0001f7 00ff .dw $00FF
-0001f8 3a13 .dw XT_AND ; the final swap can be omitted
- PFA_ICOMPARE_LASTCELL:
-0001f9 3913 .dw XT_NOTEQUAL
-0001fa 3836 .dw XT_DOCONDBRANCH
-0001fb 0200 .dw PFA_ICOMPARE_NEXTLOOP
-0001fc 3ed2 .dw XT_2DROP
-0001fd 394b .dw XT_TRUE
-0001fe 3ad4 .dw XT_UNLOOP
-0001ff 3820 .dw XT_EXIT
- PFA_ICOMPARE_NEXTLOOP:
-000200 3a2f .dw XT_1PLUS
-000201 38c4 .dw XT_SWAP
-000202 3c90 .dw XT_CELLPLUS
-000203 38c4 .dw XT_SWAP
-000204 383d .dw XT_DOLITERAL
-000205 0002 .dw 2
-000206 3aba .dw XT_DOPLUSLOOP
-000207 01eb .dw PFA_ICOMPARE_LOOP
- PFA_ICOMPARE_DONE:
-000208 3ed2 .dw XT_2DROP
-000209 3954 .dw XT_ZERO
-00020a 3820 .dw XT_EXIT
-
- .if WANT_IGNORECASE == 1
- .endif
- .include "words/star.asm"
-
- ; Arithmetics
- ; multiply routine
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_STAR:
-00020b ff01 .dw $ff01
-00020c 002a .db "*",0
-00020d 01d4 .dw VE_HEAD
- .set VE_HEAD = VE_STAR
- XT_STAR:
-00020e 3801 .dw DO_COLON
- PFA_STAR:
- .endif
-
-00020f 39a6 .dw XT_MSTAR
-000210 38d9 .dw XT_DROP
-000211 3820 .dw XT_EXIT
- .include "words/j.asm"
-
- ; Compiler
- ; loop counter of outer loop
- VE_J:
-000212 ff01 .dw $FF01
-000213 006a .db "j",0
-000214 020b .dw VE_HEAD
- .set VE_HEAD = VE_J
- XT_J:
-000215 3801 .dw DO_COLON
- PFA_J:
-000216 3a76 .dw XT_RP_FETCH
-000217 383d .dw XT_DOLITERAL
-000218 0007 .dw 7
-000219 399d .dw XT_PLUS
-00021a 3879 .dw XT_FETCH
-00021b 3a76 .dw XT_RP_FETCH
-00021c 383d .dw XT_DOLITERAL
-00021d 0009 .dw 9
-00021e 399d .dw XT_PLUS
-00021f 3879 .dw XT_FETCH
-000220 399d .dw XT_PLUS
-000221 3820 .dw XT_EXIT
- .include "words/dabs.asm"
-
- ; Arithmetics
- ; double cell absolute value
- VE_DABS:
-000222 ff04 .dw $ff04
-000223 6164
-000224 7362 .db "dabs"
-000225 0212 .dw VE_HEAD
- .set VE_HEAD = VE_DABS
- XT_DABS:
-000226 3801 .dw DO_COLON
- PFA_DABS:
-000227 38b1 .dw XT_DUP
-000228 3921 .dw XT_ZEROLESS
-000229 3836 .dw XT_DOCONDBRANCH
-00022a 022c .dw PFA_DABS1
-00022b 0233 .dw XT_DNEGATE
- PFA_DABS1:
-00022c 3820 .dw XT_EXIT
- ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ;
- .include "words/dnegate.asm"
-
- ; Arithmetics
- ; double cell negation
- VE_DNEGATE:
-00022d ff07 .dw $ff07
-00022e 6e64
-00022f 6765
-000230 7461
-000231 0065 .db "dnegate",0
-000232 0222 .dw VE_HEAD
- .set VE_HEAD = VE_DNEGATE
- XT_DNEGATE:
-000233 3801 .dw DO_COLON
- PFA_DNEGATE:
-000234 3c3b .dw XT_DINVERT
-000235 3fe6 .dw XT_ONE
-000236 3954 .dw XT_ZERO
-000237 3c15 .dw XT_DPLUS
-000238 3820 .dw XT_EXIT
- ; : dnegate ( ud1 -- ud2 ) dinvert 1. d+ ;
- .include "words/cmove.asm"
-
- ; Memory
- ; copy data in RAM, from lower to higher addresses
- VE_CMOVE:
-000239 ff05 .dw $ff05
-00023a 6d63
-00023b 766f
-00023c 0065 .db "cmove",0
-00023d 022d .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE
- XT_CMOVE:
-00023e 023f .dw PFA_CMOVE
- PFA_CMOVE:
-00023f 93bf push xh
-000240 93af push xl
-000241 91e9 ld zl, Y+
-000242 91f9 ld zh, Y+ ; addr-to
-000243 91a9 ld xl, Y+
-000244 91b9 ld xh, Y+ ; addr-from
-000245 2f09 mov temp0, tosh
-000246 2b08 or temp0, tosl
-000247 f021 brbs 1, PFA_CMOVE1
- PFA_CMOVE2:
-000248 911d ld temp1, X+
-000249 9311 st Z+, temp1
-00024a 9701 sbiw tosl, 1
-00024b f7e1 brbc 1, PFA_CMOVE2
- PFA_CMOVE1:
-00024c 91af pop xl
-00024d 91bf pop xh
-00024e 9189
-00024f 9199 loadtos
-000250 940c 3805 jmp_ DO_NEXT
- .include "words/2swap.asm"
-
- ; Stack
- ; Exchange the two top cell pairs
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2SWAP:
-000252 ff05 .dw $ff05
-000253 7332
-000254 6177
-000255 0070 .db "2swap",0
-000256 0239 .dw VE_HEAD
- .set VE_HEAD = VE_2SWAP
- XT_2SWAP:
-000257 3801 .dw DO_COLON
- PFA_2SWAP:
-
- .endif
-000258 38e1 .dw XT_ROT
-000259 38ff .dw XT_TO_R
-00025a 38e1 .dw XT_ROT
-00025b 38f6 .dw XT_R_FROM
-00025c 3820 .dw XT_EXIT
- .include "words/tib.asm"
-
- ; System
- ; refills the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILLTIB:
-00025d ff0a .dw $ff0a
-00025e 6572
-00025f 6966
-000260 6c6c
-000261 742d
-000262 6269 .db "refill-tib"
-000263 0252 .dw VE_HEAD
- .set VE_HEAD = VE_REFILLTIB
- XT_REFILLTIB:
-000264 3801 .dw DO_COLON
- PFA_REFILLTIB:
- .endif
-000265 0280 .dw XT_TIB
-000266 383d .dw XT_DOLITERAL
-000267 005a .dw TIB_SIZE
-000268 0498 .dw XT_ACCEPT
-000269 0286 .dw XT_NUMBERTIB
-00026a 3881 .dw XT_STORE
-00026b 3954 .dw XT_ZERO
-00026c 3ee2 .dw XT_TO_IN
-00026d 3881 .dw XT_STORE
-00026e 394b .dw XT_TRUE ; -1
-00026f 3820 .dw XT_EXIT
-
- ; ( -- addr n )
- ; System
- ; address and current length of the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCETIB:
-000270 ff0a .dw $FF0A
-000271 6f73
-000272 7275
-000273 6563
-000274 742d
-000275 6269 .db "source-tib"
-000276 025d .dw VE_HEAD
- .set VE_HEAD = VE_SOURCETIB
- XT_SOURCETIB:
-000277 3801 .dw DO_COLON
- PFA_SOURCETIB:
- .endif
-000278 0280 .dw XT_TIB
-000279 0286 .dw XT_NUMBERTIB
-00027a 3879 .dw XT_FETCH
-00027b 3820 .dw XT_EXIT
-
- ; ( -- addr )
- ; System Variable
- ; terminal input buffer address
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TIB:
-00027c ff03 .dw $ff03
-00027d 6974
-00027e 0062 .db "tib",0
-00027f 0270 .dw VE_HEAD
- .set VE_HEAD = VE_TIB
- XT_TIB:
-000280 3848 .dw PFA_DOVARIABLE
- PFA_TIB:
-000281 012c .dw ram_tib
- .dseg
-00012c ram_tib: .byte TIB_SIZE
- .cseg
- .endif
-
- ; ( -- addr )
- ; System Variable
- ; variable holding the number of characters in TIB
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBERTIB:
-000282 ff04 .dw $ff04
-000283 7423
-000284 6269 .db "#tib"
-000285 027c .dw VE_HEAD
- .set VE_HEAD = VE_NUMBERTIB
- XT_NUMBERTIB:
-000286 3848 .dw PFA_DOVARIABLE
- PFA_NUMBERTIB:
-000287 0186 .dw ram_sharptib
- .dseg
-000186 ram_sharptib: .byte 2
- .cseg
- .endif
- .include "words/init-ram.asm"
-
- ; Tools
- ; copy len cells from eeprom to ram
- VE_EE2RAM:
-000288 ff06 .dw $ff06
-000289 6565
-00028a 723e
-00028b 6d61 .db "ee>ram"
-00028c 0282 .dw VE_HEAD
- .set VE_HEAD = VE_EE2RAM
- XT_EE2RAM:
-00028d 3801 .dw DO_COLON
- PFA_EE2RAM: ; ( -- )
-00028e 3954 .dw XT_ZERO
-00028f 3a9b .dw XT_DODO
- PFA_EE2RAM_1:
- ; ( -- e-addr r-addr )
-000290 38cf .dw XT_OVER
-000291 3b5f .dw XT_FETCHE
-000292 38cf .dw XT_OVER
-000293 3881 .dw XT_STORE
-000294 3c90 .dw XT_CELLPLUS
-000295 38c4 .dw XT_SWAP
-000296 3c90 .dw XT_CELLPLUS
-000297 38c4 .dw XT_SWAP
-000298 3ac9 .dw XT_DOLOOP
-000299 0290 .dw PFA_EE2RAM_1
- PFA_EE2RAM_2:
-00029a 3ed2 .dw XT_2DROP
-00029b 3820 .dw XT_EXIT
-
- ; ( -- )
- ; Tools
- ; setup the default user area from eeprom
- VE_INIT_RAM:
-00029c ff08 .dw $ff08
-00029d 6e69
-00029e 7469
-00029f 722d
-0002a0 6d61 .db "init-ram"
-0002a1 0288 .dw VE_HEAD
- .set VE_HEAD = VE_INIT_RAM
- XT_INIT_RAM:
-0002a2 3801 .dw DO_COLON
- PFA_INI_RAM: ; ( -- )
-0002a3 383d .dw XT_DOLITERAL
-0002a4 006a .dw EE_INITUSER
-0002a5 3b02 .dw XT_UP_FETCH
-0002a6 383d .dw XT_DOLITERAL
-0002a7 0022 .dw SYSUSERSIZE
-0002a8 3a04 .dw XT_2SLASH
-0002a9 028d .dw XT_EE2RAM
-0002aa 3820 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
- .include "words/environment.asm"
-
- ; System Value
- ; word list identifier of the environmental search list
- VE_ENVIRONMENT:
-0002ab ff0b .dw $ff0b
-0002ac 6e65
-0002ad 6976
-0002ae 6f72
-0002af 6d6e
-0002b0 6e65
-0002b1 0074 .db "environment",0
-0002b2 029c .dw VE_HEAD
- .set VE_HEAD = VE_ENVIRONMENT
- XT_ENVIRONMENT:
-0002b3 3848 .dw PFA_DOVARIABLE
- PFA_ENVIRONMENT:
-0002b4 0044 .dw CFG_ENVIRONMENT
- .include "words/env-wordlists.asm"
-
- ; Environment
- ; maximum number of wordlists in the dictionary search order
- VE_ENVWORDLISTS:
-0002b5 ff09 .dw $ff09
-0002b6 6f77
-0002b7 6472
-0002b8 696c
-0002b9 7473
-0002ba 0073 .db "wordlists",0
-0002bb 0000 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVWORDLISTS
- XT_ENVWORDLISTS:
-0002bc 3801 .dw DO_COLON
- PFA_ENVWORDLISTS:
-0002bd 383d .dw XT_DOLITERAL
-0002be 0008 .dw NUMWORDLISTS
-0002bf 3820 .dw XT_EXIT
- .include "words/env-slashpad.asm"
-
- ; Environment
- ; Size of the PAD buffer in bytes
- VE_ENVSLASHPAD:
-0002c0 ff04 .dw $ff04
-0002c1 702f
-0002c2 6461 .db "/pad"
-0002c3 02b5 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHPAD
- XT_ENVSLASHPAD:
-0002c4 3801 .dw DO_COLON
- PFA_ENVSLASHPAD:
-0002c5 3a8d .dw XT_SP_FETCH
-0002c6 3ee8 .dw XT_PAD
-0002c7 3993 .dw XT_MINUS
-0002c8 3820 .dw XT_EXIT
- .include "words/env-slashhold.asm"
-
- ; Environment
- ; size of the pictured numeric output buffer in bytes
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENVSLASHHOLD:
-0002c9 ff05 .dw $ff05
-0002ca 682f
-0002cb 6c6f
-0002cc 0064 .db "/hold",0
-0002cd 02c0 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHHOLD
- XT_ENVSLASHHOLD:
-0002ce 3801 .dw DO_COLON
- PFA_ENVSLASHHOLD:
- .endif
-0002cf 3ee8 .dw XT_PAD
-0002d0 3f23 .dw XT_HERE
-0002d1 3993 .dw XT_MINUS
-0002d2 3820 .dw XT_EXIT
- .include "words/env-forthname.asm"
-
- ; Environment
- ; flash address of the amforth name string
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHNAME:
-0002d3 ff0a .dw $ff0a
-0002d4 6f66
-0002d5 7472
-0002d6 2d68
-0002d7 616e
-0002d8 656d .db "forth-name"
-0002d9 02c9 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHNAME
- XT_ENV_FORTHNAME:
-0002da 3801 .dw DO_COLON
- PFA_EN_FORTHNAME:
-0002db 03d0 .dw XT_DOSLITERAL
-0002dc 0007 .dw 7
- .endif
-0002dd 6d61
-0002de 6f66
-0002df 7472
-../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte
-0002e0 0068 .db "amforth"
- .if cpu_msp430==1
- .endif
-0002e1 3820 .dw XT_EXIT
- .include "words/env-forthversion.asm"
-
- ; Environment
- ; version number of amforth
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHVERSION:
-0002e2 ff07 .dw $ff07
-0002e3 6576
-0002e4 7372
-0002e5 6f69
-0002e6 006e .db "version",0
-0002e7 02d3 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHVERSION
- XT_ENV_FORTHVERSION:
-0002e8 3801 .dw DO_COLON
- PFA_EN_FORTHVERSION:
- .endif
-0002e9 383d .dw XT_DOLITERAL
-0002ea 0041 .dw 65
-0002eb 3820 .dw XT_EXIT
- .include "words/env-cpu.asm"
-
- ; Environment
- ; flash address of the CPU identification string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_CPU:
-0002ec ff03 .dw $ff03
-0002ed 7063
-0002ee 0075 .db "cpu",0
-0002ef 02e2 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_CPU
- XT_ENV_CPU:
-0002f0 3801 .dw DO_COLON
- PFA_EN_CPU:
- .endif
-0002f1 383d .dw XT_DOLITERAL
-0002f2 0037 .dw mcu_name
-0002f3 042f .dw XT_ICOUNT
-0002f4 3820 .dw XT_EXIT
- .include "words/env-mcuinfo.asm"
-
- ; Environment
- ; flash address of some CPU specific parameters
- VE_ENV_MCUINFO:
-0002f5 ff08 .dw $ff08
-0002f6 636d
-0002f7 2d75
-0002f8 6e69
-0002f9 6f66 .db "mcu-info"
-0002fa 02ec .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_MCUINFO
- XT_ENV_MCUINFO:
-0002fb 3801 .dw DO_COLON
- PFA_EN_MCUINFO:
-0002fc 383d .dw XT_DOLITERAL
-0002fd 0033 .dw mcu_info
-0002fe 3820 .dw XT_EXIT
- .include "words/env-usersize.asm"
-
- ; Environment
- ; size of the USER area in bytes
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_ENVUSERSIZE:
-0002ff ff05 .dw $ff05
-000300 752f
-000301 6573
-000302 0072 .db "/user",0
-000303 02f5 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVUSERSIZE
- XT_ENVUSERSIZE:
-000304 3801 .dw DO_COLON
- PFA_ENVUSERSIZE:
- .endif
-000305 383d .dw XT_DOLITERAL
-000306 002c .dw SYSUSERSIZE + APPUSERSIZE
-000307 3820 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/hld.asm"
-
- ; Numeric IO
- ; pointer to current write position in the Pictured Numeric Output buffer
- VE_HLD:
-000308 ff03 .dw $ff03
-000309 6c68
-00030a 0064 .db "hld",0
-00030b 02ab .dw VE_HEAD
- .set VE_HEAD = VE_HLD
- XT_HLD:
-00030c 3848 .dw PFA_DOVARIABLE
- PFA_HLD:
-00030d 0188 .dw ram_hld
-
- .dseg
-000188 ram_hld: .byte 2
- .cseg
- .include "words/hold.asm"
-
- ; Numeric IO
- ; prepend character to pictured numeric output buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HOLD:
-00030e ff04 .dw $ff04
-00030f 6f68
-000310 646c .db "hold"
-000311 0308 .dw VE_HEAD
- .set VE_HEAD = VE_HOLD
- XT_HOLD:
-000312 3801 .dw DO_COLON
- PFA_HOLD:
- .endif
-000313 030c .dw XT_HLD
-000314 38b1 .dw XT_DUP
-000315 3879 .dw XT_FETCH
-000316 3a35 .dw XT_1MINUS
-000317 38b1 .dw XT_DUP
-000318 38ff .dw XT_TO_R
-000319 38c4 .dw XT_SWAP
-00031a 3881 .dw XT_STORE
-00031b 38f6 .dw XT_R_FROM
-00031c 388d .dw XT_CSTORE
-00031d 3820 .dw XT_EXIT
- .include "words/less-sharp.asm" ; <#
-
- ; Numeric IO
- ; initialize the pictured numeric output conversion process
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_SHARP:
-00031e ff02 .dw $ff02
-00031f 233c .db "<#"
-000320 030e .dw VE_HEAD
- .set VE_HEAD = VE_L_SHARP
- XT_L_SHARP:
-000321 3801 .dw DO_COLON
- PFA_L_SHARP:
- .endif
-000322 3ee8 .dw XT_PAD
-000323 030c .dw XT_HLD
-000324 3881 .dw XT_STORE
-000325 3820 .dw XT_EXIT
- .include "words/sharp.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert one digit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SHARP:
-000326 ff01 .dw $ff01
-000327 0023 .db "#",0
-000328 031e .dw VE_HEAD
- .set VE_HEAD = VE_SHARP
- XT_SHARP:
-000329 3801 .dw DO_COLON
- PFA_SHARP:
- .endif
-00032a 3ebd .dw XT_BASE
-00032b 3879 .dw XT_FETCH
-00032c 03a6 .dw XT_UDSLASHMOD
-00032d 38e1 .dw XT_ROT
-00032e 383d .dw XT_DOLITERAL
-00032f 0009 .dw 9
-000330 38cf .dw XT_OVER
-000331 396e .dw XT_LESS
-000332 3836 .dw XT_DOCONDBRANCH
-000333 0337 DEST(PFA_SHARP1)
-000334 383d .dw XT_DOLITERAL
-000335 0007 .dw 7
-000336 399d .dw XT_PLUS
- PFA_SHARP1:
-000337 383d .dw XT_DOLITERAL
-000338 0030 .dw 48 ; ASCII 0
-000339 399d .dw XT_PLUS
-00033a 0312 .dw XT_HOLD
-00033b 3820 .dw XT_EXIT
- ; : # ( ud1 -- ud2 )
- ; base @ ud/mod rot 9 over < if 7 + then 30 + hold ;
- .include "words/sharp-s.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert all digits until 0 (zero) is reached
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_S:
-00033c ff02 .dw $ff02
-00033d 7323 .db "#s"
-00033e 0326 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_S
- XT_SHARP_S:
-00033f 3801 .dw DO_COLON
- PFA_SHARP_S:
- .endif
- NUMS1:
-000340 0329 .dw XT_SHARP
-000341 3ec9 .dw XT_2DUP
-000342 3a1c .dw XT_OR
-000343 391a .dw XT_ZEROEQUAL
-000344 3836 .dw XT_DOCONDBRANCH
-000345 0340 DEST(NUMS1) ; PFA_SHARP_S
-000346 3820 .dw XT_EXIT
- .include "words/sharp-greater.asm" ; #>
-
- ; Numeric IO
- ; Pictured Numeric Output: convert PNO buffer into an string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_G:
-000347 ff02 .dw $ff02
-000348 3e23 .db "#>"
-000349 033c .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_G
- XT_SHARP_G:
-00034a 3801 .dw DO_COLON
- PFA_SHARP_G:
- .endif
-00034b 3ed2 .dw XT_2DROP
-00034c 030c .dw XT_HLD
-00034d 3879 .dw XT_FETCH
-00034e 3ee8 .dw XT_PAD
-00034f 38cf .dw XT_OVER
-000350 3993 .dw XT_MINUS
-000351 3820 .dw XT_EXIT
- .include "words/sign.asm"
-
- ; Numeric IO
- ; place a - in HLD if n is negative
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SIGN:
-000352 ff04 .dw $ff04
-000353 6973
-000354 6e67 .db "sign"
-000355 0347 .dw VE_HEAD
- .set VE_HEAD = VE_SIGN
- XT_SIGN:
-000356 3801 .dw DO_COLON
- PFA_SIGN:
- .endif
-000357 3921 .dw XT_ZEROLESS
-000358 3836 .dw XT_DOCONDBRANCH
-000359 035d DEST(PFA_SIGN1)
-00035a 383d .dw XT_DOLITERAL
-00035b 002d .dw 45 ; ascii -
-00035c 0312 .dw XT_HOLD
- PFA_SIGN1:
-00035d 3820 .dw XT_EXIT
- .include "words/d-dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOTR:
-00035e ff03 .dw $ff03
-00035f 2e64
-000360 0072 .db "d.r",0
-000361 0352 .dw VE_HEAD
- .set VE_HEAD = VE_DDOTR
- XT_DDOTR:
-000362 3801 .dw DO_COLON
- PFA_DDOTR:
-
- .endif
-000363 38ff .dw XT_TO_R
-000364 3eda .dw XT_TUCK
-000365 0226 .dw XT_DABS
-000366 0321 .dw XT_L_SHARP
-000367 033f .dw XT_SHARP_S
-000368 38e1 .dw XT_ROT
-000369 0356 .dw XT_SIGN
-00036a 034a .dw XT_SHARP_G
-00036b 38f6 .dw XT_R_FROM
-00036c 38cf .dw XT_OVER
-00036d 3993 .dw XT_MINUS
-00036e 3fb7 .dw XT_SPACES
-00036f 0439 .dw XT_TYPE
-000370 3820 .dw XT_EXIT
- ; : d.r ( d n -- )
- ; >r swap over dabs <# #s rot sign #> r> over - spaces type ;
- .include "words/dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTR:
-000371 ff02 .dw $ff02
-000372 722e .db ".r"
-000373 035e .dw VE_HEAD
- .set VE_HEAD = VE_DOTR
- XT_DOTR:
-000374 3801 .dw DO_COLON
- PFA_DOTR:
-
- .endif
-000375 38ff .dw XT_TO_R
-000376 3fc7 .dw XT_S2D
-000377 38f6 .dw XT_R_FROM
-000378 0362 .dw XT_DDOTR
-000379 3820 .dw XT_EXIT
- ; : .r ( s n -- ) >r s>d r> d.r ;
- .include "words/d-dot.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOT:
-00037a ff02 .dw $ff02
-00037b 2e64 .db "d."
-00037c 0371 .dw VE_HEAD
- .set VE_HEAD = VE_DDOT
- XT_DDOT:
-00037d 3801 .dw DO_COLON
- PFA_DDOT:
-
- .endif
-00037e 3954 .dw XT_ZERO
-00037f 0362 .dw XT_DDOTR
-000380 3fae .dw XT_SPACE
-000381 3820 .dw XT_EXIT
- ; : d. ( d -- ) 0 d.r space ;
- .include "words/dot.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOT:
-000382 ff01 .dw $ff01
-000383 002e .db ".",0
-000384 037a .dw VE_HEAD
- .set VE_HEAD = VE_DOT
- XT_DOT:
-000385 3801 .dw DO_COLON
- PFA_DOT:
- .endif
-000386 3fc7 .dw XT_S2D
-000387 037d .dw XT_DDOT
-000388 3820 .dw XT_EXIT
- ; : . ( s -- ) s>d d. ;
- .include "words/ud-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDDOT:
-000389 ff03 .dw $ff03
-00038a 6475
-00038b 002e .db "ud.",0
-00038c 0382 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOT
- XT_UDDOT:
-00038d 3801 .dw DO_COLON
- PFA_UDDOT:
- .endif
-00038e 3954 .dw XT_ZERO
-00038f 0396 .dw XT_UDDOTR
-000390 3fae .dw XT_SPACE
-000391 3820 .dw XT_EXIT
- .include "words/ud-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDDOTR:
-000392 ff04 .dw $ff04
-000393 6475
-000394 722e .db "ud.r"
-000395 0389 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOTR
- XT_UDDOTR:
-000396 3801 .dw DO_COLON
- PFA_UDDOTR:
- .endif
-000397 38ff .dw XT_TO_R
-000398 0321 .dw XT_L_SHARP
-000399 033f .dw XT_SHARP_S
-00039a 034a .dw XT_SHARP_G
-00039b 38f6 .dw XT_R_FROM
-00039c 38cf .dw XT_OVER
-00039d 3993 .dw XT_MINUS
-00039e 3fb7 .dw XT_SPACES
-00039f 0439 .dw XT_TYPE
-0003a0 3820 .dw XT_EXIT
- .include "words/ud-slash-mod.asm"
-
- ; Arithmetics
- ; unsigned double cell division with remainder
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSLASHMOD:
-0003a1 ff06 .dw $ff06
-0003a2 6475
-0003a3 6d2f
-0003a4 646f .db "ud/mod"
-0003a5 0392 .dw VE_HEAD
- .set VE_HEAD = VE_UDSLASHMOD
- XT_UDSLASHMOD:
-0003a6 3801 .dw DO_COLON
- PFA_UDSLASHMOD:
- .endif
-0003a7 38ff .dw XT_TO_R
-0003a8 3954 .dw XT_ZERO
-0003a9 3908 .dw XT_R_FETCH
-0003aa 39c2 .dw XT_UMSLASHMOD
-0003ab 38f6 .dw XT_R_FROM
-0003ac 38c4 .dw XT_SWAP
-0003ad 38ff .dw XT_TO_R
-0003ae 39c2 .dw XT_UMSLASHMOD
-0003af 38f6 .dw XT_R_FROM
-0003b0 3820 .dw XT_EXIT
- .include "words/digit-q.asm"
-
- ; Numeric IO
- ; tries to convert a character to a number, set flag accordingly
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DIGITQ:
-0003b1 ff06 .dw $ff06
-0003b2 6964
-0003b3 6967
-0003b4 3f74 .db "digit?"
-0003b5 03a1 .dw VE_HEAD
- .set VE_HEAD = VE_DIGITQ
- XT_DIGITQ:
-0003b6 3801 .dw DO_COLON
- PFA_DIGITQ:
- .endif
-0003b7 3f66 .dw XT_TOUPPER
-0003b8 38b1
-0003b9 383d
-0003ba 0039
-0003bb 3978
-0003bc 383d
-0003bd 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256
-0003be 3a13
-0003bf 399d
-0003c0 38b1
-0003c1 383d
-0003c2 0140
-0003c3 3978 .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER
-0003c4 383d
-0003c5 0107
-0003c6 3a13
-0003c7 3993
-0003c8 383d
-0003c9 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48
-0003ca 3993
-0003cb 38b1
-0003cc 3ebd
-0003cd 3879
-0003ce 395c .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS
-0003cf 3820 .DW XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/do-sliteral.asm"
-
- ; String
- ; runtime portion of sliteral
- ;VE_DOSLITERAL:
- ; .dw $ff0a
- ; .db "(sliteral)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSLITERAL
- XT_DOSLITERAL:
-0003d0 3801 .dw DO_COLON
- PFA_DOSLITERAL:
-0003d1 3908 .dw XT_R_FETCH ; ( -- addr )
-0003d2 042f .dw XT_ICOUNT
-0003d3 38f6 .dw XT_R_FROM
-0003d4 38cf .dw XT_OVER ; ( -- addr' n addr n)
-0003d5 3a2f .dw XT_1PLUS
-0003d6 3a04 .dw XT_2SLASH ; ( -- addr' n addr k )
-0003d7 399d .dw XT_PLUS ; ( -- addr' n addr'' )
-0003d8 3a2f .dw XT_1PLUS
-0003d9 38ff .dw XT_TO_R ; ( -- )
-0003da 3820 .dw XT_EXIT
- .include "words/scomma.asm"
-
- ; Compiler
- ; compiles a string from RAM to Flash
- VE_SCOMMA:
-0003db ff02 .dw $ff02
-0003dc 2c73 .db "s",$2c
-0003dd 03b1 .dw VE_HEAD
- .set VE_HEAD = VE_SCOMMA
- XT_SCOMMA:
-0003de 3801 .dw DO_COLON
- PFA_SCOMMA:
-0003df 38b1 .dw XT_DUP
-0003e0 03e2 .dw XT_DOSCOMMA
-0003e1 3820 .dw XT_EXIT
-
- ; ( addr len len' -- )
- ; Compiler
- ; compiles a string from RAM to Flash
- ;VE_DOSCOMMA:
- ; .dw $ff04
- ; .db "(s",$2c,")"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSCOMMA
- XT_DOSCOMMA:
-0003e2 3801 .dw DO_COLON
- PFA_DOSCOMMA:
-0003e3 0767 .dw XT_COMMA
-0003e4 38b1 .dw XT_DUP ; ( --addr len len)
-0003e5 3a04 .dw XT_2SLASH ; ( -- addr len len/2
-0003e6 3eda .dw XT_TUCK ; ( -- addr len/2 len len/2
-0003e7 3a0b .dw XT_2STAR ; ( -- addr len/2 len len'
-0003e8 3993 .dw XT_MINUS ; ( -- addr len/2 rem
-0003e9 38ff .dw XT_TO_R
-0003ea 3954 .dw XT_ZERO
-0003eb 0826 .dw XT_QDOCHECK
-0003ec 3836 .dw XT_DOCONDBRANCH
-0003ed 03f5 .dw PFA_SCOMMA2
-0003ee 3a9b .dw XT_DODO
- PFA_SCOMMA1:
-0003ef 38b1 .dw XT_DUP ; ( -- addr addr )
-0003f0 3879 .dw XT_FETCH ; ( -- addr c1c2 )
-0003f1 0767 .dw XT_COMMA ; ( -- addr )
-0003f2 3c90 .dw XT_CELLPLUS ; ( -- addr+cell )
-0003f3 3ac9 .dw XT_DOLOOP
-0003f4 03ef .dw PFA_SCOMMA1
- PFA_SCOMMA2:
-0003f5 38f6 .dw XT_R_FROM
-0003f6 3928 .dw XT_GREATERZERO
-0003f7 3836 .dw XT_DOCONDBRANCH
-0003f8 03fc .dw PFA_SCOMMA3
-0003f9 38b1 .dw XT_DUP ; well, tricky
-0003fa 3898 .dw XT_CFETCH
-0003fb 0767 .dw XT_COMMA
- PFA_SCOMMA3:
-0003fc 38d9 .dw XT_DROP ; ( -- )
-0003fd 3820 .dw XT_EXIT
- .include "words/itype.asm"
-
- ; Tools
- ; reads string from flash and prints it
- VE_ITYPE:
-0003fe ff05 .dw $ff05
-0003ff 7469
-000400 7079
-000401 0065 .db "itype",0
-000402 03db .dw VE_HEAD
- .set VE_HEAD = VE_ITYPE
- XT_ITYPE:
-000403 3801 .dw DO_COLON
- PFA_ITYPE:
-000404 38b1 .dw XT_DUP ; ( --addr len len)
-000405 3a04 .dw XT_2SLASH ; ( -- addr len len/2
-000406 3eda .dw XT_TUCK ; ( -- addr len/2 len len/2
-000407 3a0b .dw XT_2STAR ; ( -- addr len/2 len len'
-000408 3993 .dw XT_MINUS ; ( -- addr len/2 rem
-000409 38ff .dw XT_TO_R
-00040a 3954 .dw XT_ZERO
-00040b 0826 .dw XT_QDOCHECK
-00040c 3836 .dw XT_DOCONDBRANCH
-00040d 0417 .dw PFA_ITYPE2
-00040e 3a9b .dw XT_DODO
- PFA_ITYPE1:
-00040f 38b1 .dw XT_DUP ; ( -- addr addr )
-000410 3bcb .dw XT_FETCHI ; ( -- addr c1c2 )
-000411 38b1 .dw XT_DUP
-000412 0424 .dw XT_LOWEMIT
-000413 0420 .dw XT_HIEMIT
-000414 3a2f .dw XT_1PLUS ; ( -- addr+cell )
-000415 3ac9 .dw XT_DOLOOP
-000416 040f .dw PFA_ITYPE1
- PFA_ITYPE2:
-000417 38f6 .dw XT_R_FROM
-000418 3928 .dw XT_GREATERZERO
-000419 3836 .dw XT_DOCONDBRANCH
-00041a 041e .dw PFA_ITYPE3
-00041b 38b1 .dw XT_DUP ; make sure the drop below has always something to do
-00041c 3bcb .dw XT_FETCHI
-00041d 0424 .dw XT_LOWEMIT
- PFA_ITYPE3:
-00041e 38d9 .dw XT_DROP
-00041f 3820 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_HIEMIT:
- ; .dw $ff06
- ; .db "hiemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_HIEMIT
- XT_HIEMIT:
-000420 3801 .dw DO_COLON
- PFA_HIEMIT:
-000421 3af9 .dw XT_BYTESWAP
-000422 0424 .dw XT_LOWEMIT
-000423 3820 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_LOWEMIT:
- ; .dw $ff07
- ; .db "lowemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LOWEMIT
- XT_LOWEMIT:
-000424 3801 .dw DO_COLON
- PFA_LOWEMIT:
-000425 383d .dw XT_DOLITERAL
-000426 00ff .dw $00ff
-000427 3a13 .dw XT_AND
-000428 3ef2 .dw XT_EMIT
-000429 3820 .dw XT_EXIT
- .include "words/icount.asm"
-
- ; Tools
- ; get count information out of a counted string in flash
- VE_ICOUNT:
-00042a ff06 .dw $ff06
-00042b 6369
-00042c 756f
-00042d 746e .db "icount"
-00042e 03fe .dw VE_HEAD
- .set VE_HEAD = VE_ICOUNT
- XT_ICOUNT:
-00042f 3801 .dw DO_COLON
- PFA_ICOUNT:
-000430 38b1 .dw XT_DUP
-000431 3a2f .dw XT_1PLUS
-000432 38c4 .dw XT_SWAP
-000433 3bcb .dw XT_FETCHI
-000434 3820 .dw XT_EXIT
- .include "words/type.asm"
-
- ; Character IO
- ; print a RAM based string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TYPE:
-000435 ff04 .dw $ff04
-000436 7974
-000437 6570 .db "type"
-000438 042a .dw VE_HEAD
- .set VE_HEAD = VE_TYPE
- XT_TYPE:
-000439 3801 .dw DO_COLON
- PFA_TYPE:
-
- .endif
-00043a 3f99 .dw XT_BOUNDS
-00043b 0826 .dw XT_QDOCHECK
-00043c 3836 .dw XT_DOCONDBRANCH
-00043d 0444 DEST(PFA_TYPE2)
-00043e 3a9b .dw XT_DODO
- PFA_TYPE1:
-00043f 3aac .dw XT_I
-000440 3898 .dw XT_CFETCH
-000441 3ef2 .dw XT_EMIT
-000442 3ac9 .dw XT_DOLOOP
-000443 043f DEST(PFA_TYPE1)
- PFA_TYPE2:
-000444 3820 .dw XT_EXIT
- .include "words/tick.asm"
-
- ; Dictionary
- ; search dictionary for name, return XT or throw an exception -13
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TICK:
-000445 ff01 .dw $ff01
-000446 0027 .db "'",0
-000447 0435 .dw VE_HEAD
- .set VE_HEAD = VE_TICK
- XT_TICK:
-000448 3801 .dw DO_COLON
- PFA_TICK:
- .endif
-000449 05bb .dw XT_PARSENAME
-00044a 05fe .dw XT_FORTHRECOGNIZER
-00044b 0609 .dw XT_RECOGNIZE
- ; a word is tickable unless DT:TOKEN is DT:NULL or
- ; the interpret action is a NOOP
-00044c 38b1 .dw XT_DUP
-00044d 0696 .dw XT_DT_NULL
-00044e 3fdf .dw XT_EQUAL
-00044f 38c4 .dw XT_SWAP
-000450 3bcb .dw XT_FETCHI
-000451 383d .dw XT_DOLITERAL
-000452 01a5 .dw XT_NOOP
-000453 3fdf .dw XT_EQUAL
-000454 3a1c .dw XT_OR
-000455 3836 .dw XT_DOCONDBRANCH
-000456 045a DEST(PFA_TICK1)
-000457 383d .dw XT_DOLITERAL
-000458 fff3 .dw -13
-000459 3d86 .dw XT_THROW
- PFA_TICK1:
-00045a 38d9 .dw XT_DROP
-00045b 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/cskip.asm"
-
- ; String
- ; skips leading occurancies in string at addr1/n1 leaving addr2/n2 pointing to the 1st non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSKIP:
-00045c ff05 .dw $ff05
-00045d 7363
-00045e 696b
-00045f 0070 .db "cskip",0
-000460 0445 .dw VE_HEAD
- .set VE_HEAD = VE_CSKIP
- XT_CSKIP:
-000461 3801 .dw DO_COLON
- PFA_CSKIP:
- .endif
-000462 38ff .dw XT_TO_R ; ( -- addr1 n1 )
- PFA_CSKIP1:
-000463 38b1 .dw XT_DUP ; ( -- addr' n' n' )
-000464 3836 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-000465 0470 DEST(PFA_CSKIP2)
-000466 38cf .dw XT_OVER ; ( -- addr' n' addr' )
-000467 3898 .dw XT_CFETCH ; ( -- addr' n' c' )
-000468 3908 .dw XT_R_FETCH ; ( -- addr' n' c' c )
-000469 3fdf .dw XT_EQUAL ; ( -- addr' n' f )
-00046a 3836 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-00046b 0470 DEST(PFA_CSKIP2)
-00046c 3fe6 .dw XT_ONE
-00046d 05ac .dw XT_SLASHSTRING
-00046e 382f .dw XT_DOBRANCH
-00046f 0463 DEST(PFA_CSKIP1)
- PFA_CSKIP2:
-000470 38f6 .dw XT_R_FROM
-000471 38d9 .dw XT_DROP ; ( -- addr2 n2)
-000472 3820 .dw XT_EXIT
- .include "words/cscan.asm"
-
- ; String
- ; Scan string at addr1/n1 for the first occurance of c, leaving addr1/n2, char at n2 is first non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSCAN:
-000473 ff05 .dw $ff05
-000474 7363
-000475 6163
-../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte
-000476 006e .db "cscan"
-000477 045c .dw VE_HEAD
- .set VE_HEAD = VE_CSCAN
- XT_CSCAN:
-000478 3801 .dw DO_COLON
- PFA_CSCAN:
- .endif
-000479 38ff .dw XT_TO_R
-00047a 38cf .dw XT_OVER
- PFA_CSCAN1:
-00047b 38b1 .dw XT_DUP
-00047c 3898 .dw XT_CFETCH
-00047d 3908 .dw XT_R_FETCH
-00047e 3fdf .dw XT_EQUAL
-00047f 391a .dw XT_ZEROEQUAL
-000480 3836 .dw XT_DOCONDBRANCH
-000481 048d DEST(PFA_CSCAN2)
-000482 38c4 .dw XT_SWAP
-000483 3a35 .dw XT_1MINUS
-000484 38c4 .dw XT_SWAP
-000485 38cf .dw XT_OVER
-000486 3921 .dw XT_ZEROLESS ; not negative
-000487 391a .dw XT_ZEROEQUAL
-000488 3836 .dw XT_DOCONDBRANCH
-000489 048d DEST(PFA_CSCAN2)
-00048a 3a2f .dw XT_1PLUS
-00048b 382f .dw XT_DOBRANCH
-00048c 047b DEST(PFA_CSCAN1)
- PFA_CSCAN2:
-00048d 38f0 .dw XT_NIP
-00048e 38cf .dw XT_OVER
-00048f 3993 .dw XT_MINUS
-000490 38f6 .dw XT_R_FROM
-000491 38d9 .dw XT_DROP
-000492 3820 .dw XT_EXIT
-
- ; : my-cscan ( addr len c -- addr len' )
- ; >r over ( -- addr len addr )
- ; begin
- ; dup c@ r@ <> while
- ; swap 1- swap over 0 >= while
- ; 1+
- ; repeat then
- ; nip over - r> drop
- ; ;
- .include "words/accept.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ACCEPT:
-000493 ff06 .dw $ff06
-000494 6361
-000495 6563
-000496 7470 .db "accept"
-000497 0473 .dw VE_HEAD
- .set VE_HEAD = VE_ACCEPT
- XT_ACCEPT:
-000498 3801 .dw DO_COLON
- PFA_ACCEPT:
-
- .endif
-000499 38cf
-00049a 399d
-00049b 3a35
-00049c 38cf .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER
-00049d 3f03
-00049e 38b1
-00049f 04d9
-0004a0 391a
-0004a1 3836 ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH
-0004a2 04cb DEST(ACC5)
-0004a3 38b1
-0004a4 383d
-0004a5 0008
-0004a6 3fdf
-0004a7 3836 .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH
-0004a8 04bb DEST(ACC3)
-0004a9 38d9
-0004aa 38e1
-0004ab 3ec9
-0004ac 3978
-0004ad 38ff
-0004ae 38e1
-0004af 38e1
-0004b0 38f6
-0004b1 3836 .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH
-0004b2 04b9 DEST(ACC6)
-0004b3 04d1
-0004b4 3a35
-0004b5 38ff
-0004b6 38cf
-0004b7 38f6
-0004b8 015a .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX
-0004b9 382f ACC6: .DW XT_DOBRANCH
-0004ba 04c9 DEST(ACC4)
-
-
- ACC3: ; check for remaining control characters, replace them with blank
-0004bb 38b1 .dw XT_DUP ; ( -- addr k k )
-0004bc 3f54 .dw XT_BL
-0004bd 396e .dw XT_LESS
-0004be 3836 .dw XT_DOCONDBRANCH
-0004bf 04c2 DEST(PFA_ACCEPT6)
-0004c0 38d9 .dw XT_DROP
-0004c1 3f54 .dw XT_BL
- PFA_ACCEPT6:
-0004c2 38b1
-0004c3 3ef2
-0004c4 38cf
-0004c5 388d
-0004c6 3a2f
-0004c7 38cf
-0004c8 0166 .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN
-0004c9 382f ACC4: .DW XT_DOBRANCH
-0004ca 049d DEST(ACC1)
-0004cb 38d9
-0004cc 38f0
-0004cd 38c4
-0004ce 3993
-0004cf 3fa1
-0004d0 3820 ACC5: .DW XT_DROP,XT_NIP,XT_SWAP,XT_MINUS,XT_CR,XT_EXIT
-
-
- ; ( -- )
- ; System
- ; send a backspace character to overwrite the current char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- ;VE_BS:
- ; .dw $ff02
- ; .db "bs"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_BS
- XT_BS:
-0004d1 3801 .dw DO_COLON
- .endif
-0004d2 383d .dw XT_DOLITERAL
-0004d3 0008 .dw 8
-0004d4 38b1 .dw XT_DUP
-0004d5 3ef2 .dw XT_EMIT
-0004d6 3fae .dw XT_SPACE
-0004d7 3ef2 .dw XT_EMIT
-0004d8 3820 .dw XT_EXIT
-
-
- ; ( c -- f )
- ; System
- ; is the character a line end character?
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_CRLFQ:
- ; .dw $ff02
- ; .db "crlf?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_CRLFQ
- XT_CRLFQ:
-0004d9 3801 .dw DO_COLON
- .endif
-0004da 38b1 .dw XT_DUP
-0004db 383d .dw XT_DOLITERAL
-0004dc 000d .dw 13
-0004dd 3fdf .dw XT_EQUAL
-0004de 38c4 .dw XT_SWAP
-0004df 383d .dw XT_DOLITERAL
-0004e0 000a .dw 10
-0004e1 3fdf .dw XT_EQUAL
-0004e2 3a1c .dw XT_OR
-0004e3 3820 .dw XT_EXIT
- .include "words/refill.asm"
-
- ; System
- ; refills the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILL:
-0004e4 ff06 .dw $ff06
-0004e5 6572
-0004e6 6966
-0004e7 6c6c .db "refill"
-0004e8 0493 .dw VE_HEAD
- .set VE_HEAD = VE_REFILL
- XT_REFILL:
-0004e9 3dff .dw PFA_DODEFER1
- PFA_REFILL:
- .endif
-0004ea 001a .dw USER_REFILL
-0004eb 3dc8 .dw XT_UDEFERFETCH
-0004ec 3dd4 .dw XT_UDEFERSTORE
- .include "words/char.asm"
-
- ; Tools
- ; copy the first character of the next word onto the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CHAR:
-0004ed ff04 .dw $ff04
-0004ee 6863
-0004ef 7261 .db "char"
-0004f0 04e4 .dw VE_HEAD
- .set VE_HEAD = VE_CHAR
- XT_CHAR:
-0004f1 3801 .dw DO_COLON
- PFA_CHAR:
- .endif
-0004f2 05bb .dw XT_PARSENAME
-0004f3 38d9 .dw XT_DROP
-0004f4 3898 .dw XT_CFETCH
-0004f5 3820 .dw XT_EXIT
- .include "words/number.asm"
-
- ; Numeric IO
- ; convert a string at addr to a number
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBER:
-0004f6 ff06 .dw $ff06
-0004f7 756e
-0004f8 626d
-0004f9 7265 .db "number"
-0004fa 04ed .dw VE_HEAD
- .set VE_HEAD = VE_NUMBER
- XT_NUMBER:
-0004fb 3801 .dw DO_COLON
- PFA_NUMBER:
- .endif
-0004fc 3ebd .dw XT_BASE
-0004fd 3879 .dw XT_FETCH
-0004fe 38ff .dw XT_TO_R
-0004ff 053f .dw XT_QSIGN
-000500 38ff .dw XT_TO_R
-000501 0552 .dw XT_SET_BASE
-000502 053f .dw XT_QSIGN
-000503 38f6 .dw XT_R_FROM
-000504 3a1c .dw XT_OR
-000505 38ff .dw XT_TO_R
- ; check whether something is left
-000506 38b1 .dw XT_DUP
-000507 391a .dw XT_ZEROEQUAL
-000508 3836 .dw XT_DOCONDBRANCH
-000509 0512 DEST(PFA_NUMBER0)
- ; nothing is left. It cannot be a number at all
-00050a 3ed2 .dw XT_2DROP
-00050b 38f6 .dw XT_R_FROM
-00050c 38d9 .dw XT_DROP
-00050d 38f6 .dw XT_R_FROM
-00050e 3ebd .dw XT_BASE
-00050f 3881 .dw XT_STORE
-000510 3954 .dw XT_ZERO
-000511 3820 .dw XT_EXIT
- PFA_NUMBER0:
-000512 3b1e .dw XT_2TO_R
-000513 3954 .dw XT_ZERO ; starting value
-000514 3954 .dw XT_ZERO
-000515 3b2d .dw XT_2R_FROM
-000516 0570 .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len'
- ; check length of the remaining string.
- ; if zero: a single cell number is entered
-000517 38b9 .dw XT_QDUP
-000518 3836 .dw XT_DOCONDBRANCH
-000519 0534 DEST(PFA_NUMBER1)
- ; if equal 1: mayba a trailing dot? --> double cell number
-00051a 3fe6 .dw XT_ONE
-00051b 3fdf .dw XT_EQUAL
-00051c 3836 .dw XT_DOCONDBRANCH
-00051d 052b DEST(PFA_NUMBER2)
- ; excatly one character is left
-00051e 3898 .dw XT_CFETCH
-00051f 383d .dw XT_DOLITERAL
-000520 002e .dw 46 ; .
-000521 3fdf .dw XT_EQUAL
-000522 3836 .dw XT_DOCONDBRANCH
-000523 052c DEST(PFA_NUMBER6)
- ; its a double cell number
- ; incorporate sign into number
-000524 38f6 .dw XT_R_FROM
-000525 3836 .dw XT_DOCONDBRANCH
-000526 0528 DEST(PFA_NUMBER3)
-000527 0233 .dw XT_DNEGATE
- PFA_NUMBER3:
-000528 3feb .dw XT_TWO
-000529 382f .dw XT_DOBRANCH
-00052a 053a DEST(PFA_NUMBER5)
- PFA_NUMBER2:
-00052b 38d9 .dw XT_DROP
- PFA_NUMBER6:
-00052c 3ed2 .dw XT_2DROP
-00052d 38f6 .dw XT_R_FROM
-00052e 38d9 .dw XT_DROP
-00052f 38f6 .dw XT_R_FROM
-000530 3ebd .dw XT_BASE
-000531 3881 .dw XT_STORE
-000532 3954 .dw XT_ZERO
-000533 3820 .dw XT_EXIT
- PFA_NUMBER1:
-000534 3ed2 .dw XT_2DROP ; remove the address
- ; incorporate sign into number
-000535 38f6 .dw XT_R_FROM
-000536 3836 .dw XT_DOCONDBRANCH
-000537 0539 DEST(PFA_NUMBER4)
-000538 3e27 .dw XT_NEGATE
- PFA_NUMBER4:
-000539 3fe6 .dw XT_ONE
- PFA_NUMBER5:
-00053a 38f6 .dw XT_R_FROM
-00053b 3ebd .dw XT_BASE
-00053c 3881 .dw XT_STORE
-00053d 394b .dw XT_TRUE
-00053e 3820 .dw XT_EXIT
- .include "words/q-sign.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QSIGN:
-00053f 3801 .dw DO_COLON
- PFA_QSIGN: ; ( c -- )
- .endif
-000540 38cf .dw XT_OVER ; ( -- addr len addr )
-000541 3898 .dw XT_CFETCH
-000542 383d .dw XT_DOLITERAL
-000543 002d .dw '-'
-000544 3fdf .dw XT_EQUAL ; ( -- addr len flag )
-000545 38b1 .dw XT_DUP
-000546 38ff .dw XT_TO_R
-000547 3836 .dw XT_DOCONDBRANCH
-000548 054b DEST(PFA_NUMBERSIGN_DONE)
-000549 3fe6 .dw XT_ONE ; skip sign character
-00054a 05ac .dw XT_SLASHSTRING
- PFA_NUMBERSIGN_DONE:
-00054b 38f6 .dw XT_R_FROM
-00054c 3820 .dw XT_EXIT
- .include "words/set-base.asm"
-
- ; Numeric IO
- ; skip a numeric prefix character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_BASES:
-00054d 3852 .dw PFA_DOCONSTANT
- .endif
-00054e 000a
-00054f 0010
-000550 0002
-000551 000a .dw 10,16,2,10 ; last one could a 8 instead.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SET_BASE:
-000552 3801 .dw DO_COLON
- PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 )
- .endif
-000553 38cf .dw XT_OVER
-000554 3898 .dw XT_CFETCH
-000555 383d .dw XT_DOLITERAL
-000556 0023 .dw 35
-000557 3993 .dw XT_MINUS
-000558 38b1 .dw XT_DUP
-000559 3954 .dw XT_ZERO
-00055a 383d .dw XT_DOLITERAL
-00055b 0004 .dw 4
-00055c 3e57 .dw XT_WITHIN
-00055d 3836 .dw XT_DOCONDBRANCH
-00055e 0568 DEST(SET_BASE1)
- .if cpu_msp430==1
- .endif
-00055f 054d .dw XT_BASES
-000560 399d .dw XT_PLUS
-000561 3bcb .dw XT_FETCHI
-000562 3ebd .dw XT_BASE
-000563 3881 .dw XT_STORE
-000564 3fe6 .dw XT_ONE
-000565 05ac .dw XT_SLASHSTRING
-000566 382f .dw XT_DOBRANCH
-000567 0569 DEST(SET_BASE2)
- SET_BASE1:
-000568 38d9 .dw XT_DROP
- SET_BASE2:
-000569 3820 .dw XT_EXIT
-
- ; create bases 10 , 16 , 2 , 8 ,
- ; : set-base 35 - dup 0 4 within if
- ; bases + @i base ! 1 /string
- ; else
- ; drop
- ; then ;
- .include "words/to-number.asm"
-
- ; Numeric IO
- ; convert a string to a number c-addr2/u2 is the unconverted string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_NUMBER:
-00056a ff07 .dw $ff07
-00056b 6e3e
-00056c 6d75
-00056d 6562
-00056e 0072 .db ">number",0
-00056f 04f6 .dw VE_HEAD
- .set VE_HEAD = VE_TO_NUMBER
- XT_TO_NUMBER:
-000570 3801 .dw DO_COLON
-
- .endif
-
-000571 38b1
-000572 3836 TONUM1: .DW XT_DUP,XT_DOCONDBRANCH
-000573 0588 DEST(TONUM3)
-000574 38cf
-000575 3898
-000576 03b6 .DW XT_OVER,XT_CFETCH,XT_DIGITQ
-000577 391a
-000578 3836 .DW XT_ZEROEQUAL,XT_DOCONDBRANCH
-000579 057c DEST(TONUM2)
-00057a 38d9
-00057b 3820 .DW XT_DROP,XT_EXIT
-00057c 38ff
-00057d 0257
-00057e 3ebd
-00057f 3879
-000580 014b TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR
-000581 38f6
-000582 0143
-000583 0257 .DW XT_R_FROM,XT_MPLUS,XT_2SWAP
-000584 3fe6
-000585 05ac
-000586 382f .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH
-000587 0571 DEST(TONUM1)
-000588 3820 TONUM3: .DW XT_EXIT
-
- ;C >NUMBER ud adr u -- ud' adr' u'
- ;C convert string to number
- ; BEGIN
- ; DUP WHILE
- ; OVER C@ DIGIT?
- ; 0= IF DROP EXIT THEN
- ; >R 2SWAP BASE @ UD*
- ; R> M+ 2SWAP
- ; 1 /STRING
- ; REPEAT ;
- .include "words/parse.asm"
-
- ; String
- ; in input buffer parse ccc delimited string by the delimiter char.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PARSE:
-000589 ff05 .dw $ff05
-00058a 6170
-00058b 7372
-00058c 0065 .db "parse",0
-00058d 056a .dw VE_HEAD
- .set VE_HEAD = VE_PARSE
- XT_PARSE:
-00058e 3801 .dw DO_COLON
- PFA_PARSE:
- .endif
-00058f 38ff .dw XT_TO_R ; ( -- )
-000590 05a2 .dw XT_SOURCE ; ( -- addr len)
-000591 3ee2 .dw XT_TO_IN ; ( -- addr len >in)
-000592 3879 .dw XT_FETCH
-000593 05ac .dw XT_SLASHSTRING ; ( -- addr' len' )
-
-000594 38f6 .dw XT_R_FROM ; ( -- addr' len' c)
-000595 0478 .dw XT_CSCAN ; ( -- addr' len'')
-000596 38b1 .dw XT_DUP ; ( -- addr' len'' len'')
-000597 3a2f .dw XT_1PLUS
-000598 3ee2 .dw XT_TO_IN ; ( -- addr' len'' len'' >in)
-000599 3a65 .dw XT_PLUSSTORE ; ( -- addr' len')
-00059a 3fe6 .dw XT_ONE
-00059b 05ac .dw XT_SLASHSTRING
-00059c 3820 .dw XT_EXIT
- .include "words/source.asm"
-
- ; System
- ; address and current length of the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCE:
-00059d ff06 .dw $FF06
-00059e 6f73
-00059f 7275
-0005a0 6563 .db "source"
-0005a1 0589 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCE
- XT_SOURCE:
-0005a2 3dff .dw PFA_DODEFER1
- PFA_SOURCE:
- .endif
-0005a3 0016 .dw USER_SOURCE
-0005a4 3dc8 .dw XT_UDEFERFETCH
-0005a5 3dd4 .dw XT_UDEFERSTORE
-
-
- .include "words/slash-string.asm"
-
- ; String
- ; adjust string from addr1 to addr1+n, reduce length from u1 to u2 by n
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLASHSTRING:
-0005a6 ff07 .dw $ff07
-0005a7 732f
-0005a8 7274
-0005a9 6e69
-0005aa 0067 .db "/string",0
-0005ab 059d .dw VE_HEAD
- .set VE_HEAD = VE_SLASHSTRING
- XT_SLASHSTRING:
-0005ac 3801 .dw DO_COLON
- PFA_SLASHSTRING:
- .endif
-0005ad 38e1 .dw XT_ROT
-0005ae 38cf .dw XT_OVER
-0005af 399d .dw XT_PLUS
-0005b0 38e1 .dw XT_ROT
-0005b1 38e1 .dw XT_ROT
-0005b2 3993 .dw XT_MINUS
-0005b3 3820 .dw XT_EXIT
-
- .include "words/parse-name.asm"
-
- ; String
- ; In the SOURCE buffer parse whitespace delimited string. Returns string address within SOURCE.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_PARSENAME:
-0005b4 ff0a .dw $FF0A
-0005b5 6170
-0005b6 7372
-0005b7 2d65
-0005b8 616e
-0005b9 656d .db "parse-name"
-0005ba 05a6 .dw VE_HEAD
- .set VE_HEAD = VE_PARSENAME
- XT_PARSENAME:
-0005bb 3801 .dw DO_COLON
- PFA_PARSENAME:
- .endif
-0005bc 3f54 .dw XT_BL
-0005bd 05bf .dw XT_SKIPSCANCHAR
-0005be 3820 .dw XT_EXIT
-
- ; ( c -- addr2 len2 )
- ; String
- ; skips char and scan what's left in source for char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_SKIPSCANCHAR:
- ; .dw $FF0A
- ; .db "skipscanchar"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_SKIPSCANCHAR
- XT_SKIPSCANCHAR:
-0005bf 3801 .dw DO_COLON
- PFA_SKIPSCANCHAR:
- .endif
-0005c0 38ff .dw XT_TO_R
-0005c1 05a2 .dw XT_SOURCE
-0005c2 3ee2 .dw XT_TO_IN
-0005c3 3879 .dw XT_FETCH
-0005c4 05ac .dw XT_SLASHSTRING
-
-0005c5 3908 .dw XT_R_FETCH
-0005c6 0461 .dw XT_CSKIP
-0005c7 38f6 .dw XT_R_FROM
-0005c8 0478 .dw XT_CSCAN
-
- ; adjust >IN
-0005c9 3ec9 .dw XT_2DUP
-0005ca 399d .dw XT_PLUS
-0005cb 05a2 .dw XT_SOURCE
-0005cc 38d9 .dw XT_DROP
-0005cd 3993 .dw XT_MINUS
-0005ce 3ee2 .dw XT_TO_IN
-0005cf 3881 .dw XT_STORE
-0005d0 3820 .dw XT_EXIT
- .include "words/sp0.asm"
-
- ; Stack
- ; start address of the data stack
- VE_SP0:
-0005d1 ff03 .dw $ff03
-0005d2 7073
-0005d3 0030 .db "sp0",0
-0005d4 05b4 .dw VE_HEAD
- .set VE_HEAD = VE_SP0
- XT_SP0:
-0005d5 386f .dw PFA_DOVALUE1
- PFA_SP0:
-0005d6 0006 .dw USER_SP0
-0005d7 3dc8 .dw XT_UDEFERFETCH
-0005d8 3dd4 .dw XT_UDEFERSTORE
-
- ; ( -- addr)
- ; Stack
- ; address of user variable to store top-of-stack for inactive tasks
- VE_SP:
-0005d9 ff02 .dw $ff02
-0005da 7073 .db "sp"
-0005db 05d1 .dw VE_HEAD
- .set VE_HEAD = VE_SP
- XT_SP:
-0005dc 3858 .dw PFA_DOUSER
- PFA_SP:
-0005dd 0008 .dw USER_SP
- .include "words/rp0.asm"
-
- ; Stack
- ; start address of return stack
- VE_RP0:
-0005de ff03 .dw $ff03
-0005df 7072
-0005e0 0030 .db "rp0",0
-0005e1 05d9 .dw VE_HEAD
- .set VE_HEAD = VE_RP0
- XT_RP0:
-0005e2 3801 .dw DO_COLON
- PFA_RP0:
-0005e3 05e6 .dw XT_DORP0
-0005e4 3879 .dw XT_FETCH
-0005e5 3820 .dw XT_EXIT
-
- ; ( -- addr)
- ; Stack
- ; user variable of the address of the initial return stack
- ;VE_DORP0:
- ; .dw $ff05
- ; .db "(rp0)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DORP0
- XT_DORP0:
-0005e6 3858 .dw PFA_DOUSER
- PFA_DORP0:
-0005e7 0004 .dw USER_RP
- .include "words/depth.asm"
-
- ; Stack
- ; number of single-cell values contained in the data stack before n was placed on the stack.
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEPTH:
-0005e8 ff05 .dw $ff05
-0005e9 6564
-0005ea 7470
-0005eb 0068 .db "depth",0
-0005ec 05de .dw VE_HEAD
- .set VE_HEAD = VE_DEPTH
- XT_DEPTH:
-0005ed 3801 .dw DO_COLON
- PFA_DEPTH:
- .endif
-0005ee 05d5 .dw XT_SP0
-0005ef 3a8d .dw XT_SP_FETCH
-0005f0 3993 .dw XT_MINUS
-0005f1 3a04 .dw XT_2SLASH
-0005f2 3a35 .dw XT_1MINUS
-0005f3 3820 .dw XT_EXIT
- .include "words/forth-recognizer.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_FORTHRECOGNIZER:
-0005f4 ff10 .dw $ff10
-0005f5 6f66
-0005f6 7472
-0005f7 2d68
-0005f8 6572
-0005f9 6f63
-0005fa 6e67
-0005fb 7a69
-0005fc 7265 .db "forth-recognizer"
-0005fd 05e8 .dw VE_HEAD
- .set VE_HEAD = VE_FORTHRECOGNIZER
- XT_FORTHRECOGNIZER:
-0005fe 386f .dw PFA_DOVALUE1
- PFA_FORTHRECOGNIZER:
-0005ff 003e .dw CFG_FORTHRECOGNIZER
-000600 3da0 .dw XT_EDEFERFETCH
-000601 3daa .dw XT_EDEFERSTORE
- .include "words/recognize.asm"
-
- ; System
- ; walk the recognizer stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECOGNIZE:
-000602 ff09 .dw $ff09
-000603 6572
-000604 6f63
-000605 6e67
-000606 7a69
-000607 0065 .db "recognize",0
-000608 05f4 .dw VE_HEAD
- .set VE_HEAD = VE_RECOGNIZE
- XT_RECOGNIZE:
-000609 3801 .dw DO_COLON
- PFA_RECOGNIZE:
- .endif
-00060a 383d .dw XT_DOLITERAL
-00060b 0614 .dw XT_RECOGNIZE_A
-00060c 38c4 .dw XT_SWAP
-00060d 09a7 .dw XT_MAPSTACK
-00060e 391a .dw XT_ZEROEQUAL
-00060f 3836 .dw XT_DOCONDBRANCH
-000610 0613 DEST(PFA_RECOGNIZE1)
-000611 3ed2 .dw XT_2DROP
-000612 0696 .dw XT_DT_NULL
- PFA_RECOGNIZE1:
-000613 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] )
- XT_RECOGNIZE_A:
-000614 3801 .dw DO_COLON
- PFA_RECOGNIZE_A:
- .endif
-000615 38e1 .dw XT_ROT ; -- len xt addr
-000616 38e1 .dw XT_ROT ; -- xt addr len
-000617 3ec9 .dw XT_2DUP
-000618 3b1e .dw XT_2TO_R
-000619 38e1 .dw XT_ROT ; -- addr len xt
-00061a 382a .dw XT_EXECUTE ; -- i*x dt:* | dt:null
-00061b 3b2d .dw XT_2R_FROM
-00061c 38e1 .dw XT_ROT
-00061d 38b1 .dw XT_DUP
-00061e 0696 .dw XT_DT_NULL
-00061f 3fdf .dw XT_EQUAL
-000620 3836 .dw XT_DOCONDBRANCH
-000621 0625 DEST(PFA_RECOGNIZE_A1)
-000622 38d9 .dw XT_DROP
-000623 3954 .dw XT_ZERO
-000624 3820 .dw XT_EXIT
- PFA_RECOGNIZE_A1:
-000625 38f0 .dw XT_NIP
-000626 38f0 .dw XT_NIP
-000627 394b .dw XT_TRUE
-000628 3820 .dw XT_EXIT
-
- ; : recognize ( addr len stack-id -- i*x dt:* | dt:null )
- ; [: ( addr len -- addr len 0 | i*x dt:* -1 )
- ; rot rot 2dup 2>r rot execute 2r> rot
- ; dup dt:null = ( -- addr len dt:* f )
- ; if drop 0 else nip nip -1 then
- ; ;]
- ; map-stack ( -- i*x addr len dt:* f )
- ; 0= if \ a recognizer did the job, remove addr/len
- ; 2drop dt:null
- ; then ;
- ;
- .include "words/interpret.asm"
-
- ; System
- ; Interpret SOURCE word by word.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_INTERPRET:
-000629 ff09 .dw $ff09
-00062a 6e69
-00062b 6574
-00062c 7072
-00062d 6572
-00062e 0074 .db "interpret",0
-00062f 0602 .dw VE_HEAD
- .set VE_HEAD = VE_INTERPRET
- XT_INTERPRET:
-000630 3801 .dw DO_COLON
- .endif
- PFA_INTERPRET:
-000631 05bb .dw XT_PARSENAME ; ( -- addr len )
-000632 38b1 .dw XT_DUP ; ( -- addr len flag)
-000633 3836 .dw XT_DOCONDBRANCH
-000634 0641 DEST(PFA_INTERPRET2)
-000635 05fe .dw XT_FORTHRECOGNIZER
-000636 0609 .dw XT_RECOGNIZE
-000637 3eb7 .dw XT_STATE
-000638 3879 .dw XT_FETCH
-000639 3836 .dw XT_DOCONDBRANCH
-00063a 063c DEST(PFA_INTERPRET1)
-00063b 01d1 .dw XT_ICELLPLUS ; we need the compile action
- PFA_INTERPRET1:
-00063c 3bcb .dw XT_FETCHI
-00063d 382a .dw XT_EXECUTE
-00063e 3f8b .dw XT_QSTACK
-00063f 382f .dw XT_DOBRANCH
-000640 0631 DEST(PFA_INTERPRET)
- PFA_INTERPRET2:
-000641 3ed2 .dw XT_2DROP
-000642 3820 .dw XT_EXIT
- .include "words/rec-intnum.asm"
-
- ; Interpreter
- ; Method table for single cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NUM:
-000643 ff06 .dw $ff06
-000644 7464
-000645 6e3a
-000646 6d75 .db "dt:num"
-000647 0629 .dw VE_HEAD
- .set VE_HEAD = VE_DT_NUM
- XT_DT_NUM:
-000648 3852 .dw PFA_DOCONSTANT
- PFA_DT_NUM:
- .endif
-000649 01a5 .dw XT_NOOP ; interpret
-00064a 077d .dw XT_LITERAL ; compile
-00064b 077d .dw XT_LITERAL ; postpone
-
- ; ( -- addr )
- ; Interpreter
- ; Method table for double cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_DNUM:
-00064c ff07 .dw $ff07
-00064d 7464
-00064e 643a
-00064f 756e
-000650 006d .db "dt:dnum",0
-000651 0643 .dw VE_HEAD
- .set VE_HEAD = VE_DT_DNUM
- XT_DT_DNUM:
-000652 3852 .dw PFA_DOCONSTANT
- PFA_DT_DNUM:
- .endif
-000653 01a5 .dw XT_NOOP ; interpret
-000654 3fd7 .dw XT_2LITERAL ; compile
-000655 3fd7 .dw XT_2LITERAL ; postpone
-
- ; ( addr len -- f )
- ; Interpreter
- ; recognizer for integer numbers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_REC_NUM:
-000656 ff07 .dw $ff07
-000657 6572
-000658 3a63
-000659 756e
-00065a 006d .db "rec:num",0
-00065b 064c .dw VE_HEAD
- .set VE_HEAD = VE_REC_NUM
- XT_REC_NUM:
-00065c 3801 .dw DO_COLON
- PFA_REC_NUM:
- .endif
- ; try converting to a number
-00065d 04fb .dw XT_NUMBER
-00065e 3836 .dw XT_DOCONDBRANCH
-00065f 0668 DEST(PFA_REC_NONUMBER)
-000660 3fe6 .dw XT_ONE
-000661 3fdf .dw XT_EQUAL
-000662 3836 .dw XT_DOCONDBRANCH
-000663 0666 DEST(PFA_REC_INTNUM2)
-000664 0648 .dw XT_DT_NUM
-000665 3820 .dw XT_EXIT
- PFA_REC_INTNUM2:
-000666 0652 .dw XT_DT_DNUM
-000667 3820 .dw XT_EXIT
- PFA_REC_NONUMBER:
-000668 0696 .dw XT_DT_NULL
-000669 3820 .dw XT_EXIT
- .include "words/rec-find.asm"
-
- ; Interpreter
- ; search for a word
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- VE_REC_FIND:
-00066a ff08 .dw $ff08
-00066b 6572
-00066c 3a63
-00066d 6966
-00066e 646e .db "rec:find"
-00066f 0656 .dw VE_HEAD
- .set VE_HEAD = VE_REC_FIND
- XT_REC_FIND:
-000670 3801 .dw DO_COLON
- PFA_REC_FIND:
- .endif
-000671 070b .DW XT_FINDXT
-000672 38b1 .dw XT_DUP
-000673 391a .dw XT_ZEROEQUAL
-000674 3836 .dw XT_DOCONDBRANCH
-000675 0679 DEST(PFA_REC_WORD_FOUND)
-000676 38d9 .dw XT_DROP
-000677 0696 .dw XT_DT_NULL
-000678 3820 .dw XT_EXIT
- PFA_REC_WORD_FOUND:
-000679 0680 .dw XT_DT_XT
-
-00067a 3820 .dw XT_EXIT
-
- ; ( -- addr )
- ; Interpreter
- ; actions to handle execution tokens and their flags
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_XT:
-00067b ff05 .dw $ff05
-00067c 7464
-00067d 783a
-00067e 0074 .db "dt:xt",0
-00067f 066a .dw VE_HEAD
- .set VE_HEAD = VE_DT_XT
- XT_DT_XT:
-000680 3852 .dw PFA_DOCONSTANT
- PFA_DT_XT:
- .endif
-000681 0684 .dw XT_R_WORD_INTERPRET
-000682 0688 .dw XT_R_WORD_COMPILE
-000683 3fd7 .dw XT_2LITERAL
-
- ; ( XT flags -- )
- ; Interpreter
- ; interpret method for WORD recognizer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_R_WORD_INTERPRET:
-000684 3801 .dw DO_COLON
- PFA_R_WORD_INTERPRET:
- .endif
-000685 38d9 .dw XT_DROP ; the flags are in the way
-000686 382a .dw XT_EXECUTE
-000687 3820 .dw XT_EXIT
-
- ; ( XT flags -- )
- ; Interpreter
- ; Compile method for WORD recognizer
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- XT_R_WORD_COMPILE:
-000688 3801 .dw DO_COLON
- PFA_R_WORD_COMPILE:
- .endif
-000689 3921 .dw XT_ZEROLESS
-00068a 3836 .dw XT_DOCONDBRANCH
-00068b 068e DEST(PFA_R_WORD_COMPILE1)
-00068c 0767 .dw XT_COMMA
-00068d 3820 .dw XT_EXIT
- PFA_R_WORD_COMPILE1:
-00068e 382a .dw XT_EXECUTE
-00068f 3820 .dw XT_EXIT
- .include "words/dt-null.asm"
-
- ; Interpreter
- ; there is no parser for this recognizer, this is the default and failsafe part
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NULL:
-000690 ff07 .dw $ff07
-000691 7464
-000692 6e3a
-000693 6c75
-../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte
-000694 006c .db "dt:null"
-000695 067b .dw VE_HEAD
- .set VE_HEAD = VE_DT_NULL
- XT_DT_NULL:
-000696 3852 .dw PFA_DOCONSTANT
- PFA_DT_NULL:
- .endif
-000697 069a .dw XT_FAIL ; interpret
-000698 069a .dw XT_FAIL ; compile
-000699 069a .dw XT_FAIL ; postpone
-
- ; ( addr len -- )
- ; Interpreter
- ; default failure action: throw exception -13.
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- ;VE_FAIL:
- ; .dw $ff04
- ; .db "fail"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_FAIL
- XT_FAIL:
-00069a 3801 .dw DO_COLON
- PFA_FAIL:
- .endif
-00069b 383d .dw XT_DOLITERAL
-00069c fff3 .dw -13
-00069d 3d86 .dw XT_THROW
- .include "words/search-wordlist.asm"
-
- ; Search Order
- ; searches the word list wid for the word at c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SEARCH_WORDLIST:
-00069e ff0f .dw $ff0f
-00069f 6573
-0006a0 7261
-0006a1 6863
-0006a2 772d
-0006a3 726f
-0006a4 6c64
-0006a5 7369
-0006a6 0074 .db "search-wordlist",0
-0006a7 0690 .dw VE_HEAD
- .set VE_HEAD = VE_SEARCH_WORDLIST
- XT_SEARCH_WORDLIST:
-0006a8 3801 .dw DO_COLON
- PFA_SEARCH_WORDLIST:
- .endif
-0006a9 38ff .dw XT_TO_R
-0006aa 3954 .dw XT_ZERO
-0006ab 383d .dw XT_DOLITERAL
-0006ac 06bd .dw XT_ISWORD
-0006ad 38f6 .dw XT_R_FROM
-0006ae 06da .dw XT_TRAVERSEWORDLIST
-0006af 38b1 .dw XT_DUP
-0006b0 391a .dw XT_ZEROEQUAL
-0006b1 3836 .dw XT_DOCONDBRANCH
-0006b2 06b7 DEST(PFA_SEARCH_WORDLIST1)
-0006b3 3ed2 .dw XT_2DROP
-0006b4 38d9 .dw XT_DROP
-0006b5 3954 .dw XT_ZERO
-0006b6 3820 .dw XT_EXIT
- PFA_SEARCH_WORDLIST1:
- ; ... get the XT ...
-0006b7 38b1 .dw XT_DUP
-0006b8 0701 .dw XT_NFA2CFA
- ; .. and get the header flag
-0006b9 38c4 .dw XT_SWAP
-0006ba 0180 .dw XT_NAME2FLAGS
-0006bb 016e .dw XT_IMMEDIATEQ
-0006bc 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_ISWORD:
-0006bd 3801 .dw DO_COLON
- PFA_ISWORD:
- .endif
- ; ( c-addr len 0 nt -- c-addr len 0 true| nt false )
-0006be 38ff .dw XT_TO_R
-0006bf 38d9 .dw XT_DROP
-0006c0 3ec9 .dw XT_2DUP
-0006c1 3908 .dw XT_R_FETCH ; -- addr len addr len nt
-0006c2 06f5 .dw XT_NAME2STRING
-0006c3 01da .dw XT_ICOMPARE ; (-- addr len f )
-0006c4 3836 .dw XT_DOCONDBRANCH
-0006c5 06cb DEST(PFA_ISWORD3)
- ; not now
-0006c6 38f6 .dw XT_R_FROM
-0006c7 38d9 .dw XT_DROP
-0006c8 3954 .dw XT_ZERO
-0006c9 394b .dw XT_TRUE ; maybe next word
-0006ca 3820 .dw XT_EXIT
- PFA_ISWORD3:
- ; we found the word, now clean up iteration data ...
-0006cb 3ed2 .dw XT_2DROP
-0006cc 38f6 .dw XT_R_FROM
-0006cd 3954 .dw XT_ZERO ; finish traverse-wordlist
-0006ce 3820 .dw XT_EXIT
- .include "words/traverse-wordlist.asm"
-
- ; Tools Ext (2012)
- ; call the xt for every member of the wordlist wid until xt returns false
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TRAVERSEWORDLIST:
-0006cf ff11 .dw $ff11
-0006d0 7274
-0006d1 7661
-0006d2 7265
-0006d3 6573
-0006d4 772d
-0006d5 726f
-0006d6 6c64
-0006d7 7369
-0006d8 0074 .db "traverse-wordlist",0
-0006d9 069e .dw VE_HEAD
- .set VE_HEAD = VE_TRAVERSEWORDLIST
- XT_TRAVERSEWORDLIST:
-0006da 3801 .dw DO_COLON
- PFA_TRAVERSEWORDLIST:
-
- .endif
-0006db 3b5f .dw XT_FETCHE
- PFA_TRAVERSEWORDLIST1:
-0006dc 38b1 .dw XT_DUP ; ( -- xt nt nt )
-0006dd 3836 .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string
-0006de 06eb DEST(PFA_TRAVERSEWORDLIST2)
-0006df 3ec9 .dw XT_2DUP
-0006e0 3b1e .dw XT_2TO_R
-0006e1 38c4 .dw XT_SWAP
-0006e2 382a .dw XT_EXECUTE
-0006e3 3b2d .dw XT_2R_FROM
-0006e4 38e1 .dw XT_ROT
-0006e5 3836 .dw XT_DOCONDBRANCH
-0006e6 06eb DEST(PFA_TRAVERSEWORDLIST2)
-0006e7 0a16 .dw XT_NFA2LFA
-0006e8 3bcb .dw XT_FETCHI
-0006e9 382f .dw XT_DOBRANCH ; ( -- addr )
-0006ea 06dc DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr )
- PFA_TRAVERSEWORDLIST2:
-0006eb 3ed2 .dw XT_2DROP
-0006ec 3820 .dw XT_EXIT
-
- ; : traverse-wordlist ( i*x xt wid -- i*x' )
- ; begin @ dup
- ; while
- ; 2dup 2>r
- ; swap execute ( i*x nt -- i*x' f )
- ; 2r> rot
- ; while
- ; nfa>lfa @i
- ; repeat then 2drop ;
- .include "words/name2string.asm"
-
- ; Tools Ext (2012)
- ; get a (flash) string from a name token nt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NAME2STRING:
-0006ed ff0b .dw $ff0b
-0006ee 616e
-0006ef 656d
-0006f0 733e
-0006f1 7274
-0006f2 6e69
-0006f3 0067 .db "name>string",0
-0006f4 06cf .dw VE_HEAD
- .set VE_HEAD = VE_NAME2STRING
- XT_NAME2STRING:
-0006f5 3801 .dw DO_COLON
- PFA_NAME2STRING:
-
- .endif
-0006f6 042f .dw XT_ICOUNT ; ( -- addr n )
-0006f7 383d .dw XT_DOLITERAL
-0006f8 00ff .dw 255
-0006f9 3a13 .dw XT_AND ; mask immediate bit
-0006fa 3820 .dw XT_EXIT
- .include "words/nfa2cfa.asm"
-
- ; Tools
- ; get the XT from a name token
- VE_NFA2CFA:
-0006fb ff07 .dw $ff07
-0006fc 666e
-0006fd 3e61
-0006fe 6663
-../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte
-0006ff 0061 .db "nfa>cfa"
-000700 06ed .dw VE_HEAD
- .set VE_HEAD = VE_NFA2CFA
- XT_NFA2CFA:
-000701 3801 .dw DO_COLON
- PFA_NFA2CFA:
-000702 0a16 .dw XT_NFA2LFA ; skip to link field
-000703 3a2f .dw XT_1PLUS ; next is the execution token
-000704 3820 .dw XT_EXIT
- .include "words/find-xt.asm"
-
- ; Tools
- ; search wordlists for an entry with the xt from c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_FINDXT:
-000705 ff07 .dw $ff07
-000706 6966
-000707 646e
-000708 782d
-000709 0074 .db "find-xt",0
-00070a 06fb .dw VE_HEAD
- .set VE_HEAD = VE_FINDXT
- XT_FINDXT:
-00070b 3801 .dw DO_COLON
- PFA_FINDXT:
- .endif
-00070c 383d .dw XT_DOLITERAL
-00070d 0717 .dw XT_FINDXTA
-00070e 383d .dw XT_DOLITERAL
-00070f 004a .dw CFG_ORDERLISTLEN
-000710 09a7 .dw XT_MAPSTACK
-000711 391a .dw XT_ZEROEQUAL
-000712 3836 .dw XT_DOCONDBRANCH
-000713 0716 DEST(PFA_FINDXT1)
-000714 3ed2 .dw XT_2DROP
-000715 3954 .dw XT_ZERO
- PFA_FINDXT1:
-000716 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_FINDXTA:
-000717 3801 .dw DO_COLON
- PFA_FINDXTA:
- .endif
-000718 38ff .dw XT_TO_R
-000719 3ec9 .dw XT_2DUP
-00071a 38f6 .dw XT_R_FROM
-00071b 06a8 .dw XT_SEARCH_WORDLIST
-00071c 38b1 .dw XT_DUP
-00071d 3836 .dw XT_DOCONDBRANCH
-00071e 0724 DEST(PFA_FINDXTA1)
-00071f 38ff .dw XT_TO_R
-000720 38f0 .dw XT_NIP
-000721 38f0 .dw XT_NIP
-000722 38f6 .dw XT_R_FROM
-000723 394b .dw XT_TRUE
- PFA_FINDXTA1:
-000724 3820 .dw XT_EXIT
-
- .include "dict/compiler1.inc"
-
- .include "words/newest.asm"
-
- ; System Variable
- ; system state
- VE_NEWEST:
-000725 ff06 .dw $ff06
-000726 656e
-000727 6577
-000728 7473 .db "newest"
-000729 0705 .dw VE_HEAD
- .set VE_HEAD = VE_NEWEST
- XT_NEWEST:
-00072a 3848 .dw PFA_DOVARIABLE
- PFA_NEWEST:
-00072b 018a .dw ram_newest
-
- .dseg
-00018a ram_newest: .byte 4
- .include "words/latest.asm"
-
- ; System Variable
- ; system state
- VE_LATEST:
-00072c ff06 .dw $ff06
-00072d 616c
-00072e 6574
-00072f 7473 .db "latest"
-000730 0725 .dw VE_HEAD
- .set VE_HEAD = VE_LATEST
- XT_LATEST:
-000731 3848 .dw PFA_DOVARIABLE
- PFA_LATEST:
-000732 018e .dw ram_latest
-
- .dseg
-00018e ram_latest: .byte 2
- .include "words/do-create.asm"
-
- ; Compiler
- ; parse the input and create an empty vocabulary entry without XT and data field (PF)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOCREATE:
-000733 ff08 .dw $ff08
-000734 6328
-000735 6572
-000736 7461
-000737 2965 .db "(create)"
-000738 072c .dw VE_HEAD
- .set VE_HEAD = VE_DOCREATE
- XT_DOCREATE:
-000739 3801 .dw DO_COLON
- PFA_DOCREATE:
- .endif
-00073a 05bb
-00073b 0890 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid)
-00073c 38b1
-00073d 072a
-00073e 3c90
-00073f 3881 .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid
-000740 0875
-000741 072a
-000742 3881 .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt
-000743 3820 .DW XT_EXIT
- .include "words/backslash.asm"
-
- ; Compiler
- ; everything up to the end of the current line is a comment
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BACKSLASH:
-000744 0001 .dw $0001
-000745 005c .db $5c,0
-000746 0733 .dw VE_HEAD
- .set VE_HEAD = VE_BACKSLASH
- XT_BACKSLASH:
-000747 3801 .dw DO_COLON
- PFA_BACKSLASH:
- .endif
-000748 05a2 .dw XT_SOURCE
-000749 38f0 .dw XT_NIP
-00074a 3ee2 .dw XT_TO_IN
-00074b 3881 .dw XT_STORE
-00074c 3820 .dw XT_EXIT
- .include "words/l-paren.asm"
-
- ; Compiler
- ; skip everything up to the closing bracket on the same line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LPAREN:
-00074d 0001 .dw $0001
-00074e 0028 .db "(" ,0
-00074f 0744 .dw VE_HEAD
- .set VE_HEAD = VE_LPAREN
- XT_LPAREN:
-000750 3801 .dw DO_COLON
- PFA_LPAREN:
- .endif
-000751 383d .dw XT_DOLITERAL
-000752 0029 .dw ')'
-000753 058e .dw XT_PARSE
-000754 3ed2 .dw XT_2DROP
-000755 3820 .dw XT_EXIT
-
- .include "words/compile.asm"
-
- ; Dictionary
- ; read the following cell from the dictionary and append it to the current dictionary position.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COMPILE:
-000756 ff07 .dw $ff07
-000757 6f63
-000758 706d
-000759 6c69
-00075a 0065 .db "compile",0
-00075b 074d .dw VE_HEAD
- .set VE_HEAD = VE_COMPILE
- XT_COMPILE:
-00075c 3801 .dw DO_COLON
- PFA_COMPILE:
- .endif
-00075d 38f6 .dw XT_R_FROM
-00075e 38b1 .dw XT_DUP
-00075f 01d1 .dw XT_ICELLPLUS
-000760 38ff .dw XT_TO_R
-000761 3bcb .dw XT_FETCHI
-000762 0767 .dw XT_COMMA
-000763 3820 .dw XT_EXIT
- .include "words/comma.asm"
-
- ; Dictionary
- ; compile 16 bit into flash at DP
- VE_COMMA:
-000764 ff01 .dw $ff01
-000765 002c .db ',',0 ; ,
-000766 0756 .dw VE_HEAD
- .set VE_HEAD = VE_COMMA
- XT_COMMA:
-000767 3801 .dw DO_COLON
- PFA_COMMA:
-000768 3f12 .dw XT_DP
-000769 3b73 .dw XT_STOREI
-00076a 3f12 .dw XT_DP
-00076b 3a2f .dw XT_1PLUS
-00076c 01bf .dw XT_DOTO
-00076d 3f13 .dw PFA_DP
-00076e 3820 .dw XT_EXIT
- .include "words/brackettick.asm"
-
- ; Compiler
- ; what ' does in the interpreter mode, do in colon definitions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETTICK:
-00076f 0003 .dw $0003
-000770 275b
-000771 005d .db "[']",0
-000772 0764 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETTICK
- XT_BRACKETTICK:
-000773 3801 .dw DO_COLON
- PFA_BRACKETTICK:
- .endif
-000774 0448 .dw XT_TICK
-000775 077d .dw XT_LITERAL
-000776 3820 .dw XT_EXIT
-
-
- .include "words/literal.asm"
-
- ; Compiler
- ; compile a literal in colon defintions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LITERAL:
-000777 0007 .dw $0007
-000778 696c
-000779 6574
-00077a 6172
-00077b 006c .db "literal",0
-00077c 076f .dw VE_HEAD
- .set VE_HEAD = VE_LITERAL
- XT_LITERAL:
-00077d 3801 .dw DO_COLON
- PFA_LITERAL:
- .endif
-00077e 075c .DW XT_COMPILE
-00077f 383d .DW XT_DOLITERAL
-000780 0767 .DW XT_COMMA
-000781 3820 .DW XT_EXIT
- .include "words/sliteral.asm"
-
- ; String
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLITERAL:
-000782 0008 .dw $0008
-000783 6c73
-000784 7469
-000785 7265
-000786 6c61 .db "sliteral"
-000787 0777 .dw VE_HEAD
- .set VE_HEAD = VE_SLITERAL
- XT_SLITERAL:
-000788 3801 .dw DO_COLON
- PFA_SLITERAL:
- .endif
-000789 075c .dw XT_COMPILE
-00078a 03d0 .dw XT_DOSLITERAL ; ( -- addr n)
-00078b 03de .dw XT_SCOMMA
-00078c 3820 .dw XT_EXIT
- .include "words/g-mark.asm"
-
- ; Compiler
- ; places current dictionary position for backward resolves
- ;VE_GMARK:
- ; .dw $ff05
- ; .db ">mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GMARK
- XT_GMARK:
-00078d 3801 .dw DO_COLON
- PFA_GMARK:
-00078e 3f12 .dw XT_DP
-00078f 075c .dw XT_COMPILE
-000790 ffff .dw -1 ; ffff does not erase flash
-000791 3820 .dw XT_EXIT
- .include "words/g-resolve.asm"
-
- ; Compiler
- ; resolve backward jumps
- ;VE_GRESOLVE:
- ; .dw $ff08
- ; .db ">resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GRESOLVE
- XT_GRESOLVE:
-000792 3801 .dw DO_COLON
- PFA_GRESOLVE:
-000793 3f8b .dw XT_QSTACK
-000794 3f12 .dw XT_DP
-000795 38c4 .dw XT_SWAP
-000796 3b73 .dw XT_STOREI
-000797 3820 .dw XT_EXIT
- .include "words/l_mark.asm"
-
- ; Compiler
- ; place destination for backward branch
- ;VE_LMARK:
- ; .dw $ff05
- ; .db "<mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LMARK
- XT_LMARK:
-000798 3801 .dw DO_COLON
- PFA_LMARK:
-000799 3f12 .dw XT_DP
-00079a 3820 .dw XT_EXIT
- .include "words/l_resolve.asm"
-
- ; Compiler
- ; resolve backward branch
- ;VE_LRESOLVE:
- ; .dw $ff08
- ; .db "<resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LRESOLVE
- XT_LRESOLVE:
-00079b 3801 .dw DO_COLON
- PFA_LRESOLVE:
-00079c 3f8b .dw XT_QSTACK
-00079d 0767 .dw XT_COMMA
-00079e 3820 .dw XT_EXIT
-
- .include "words/ahead.asm"
-
- ; Compiler
- ; do a unconditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AHEAD:
-00079f 0005 .dw $0005
-0007a0 6861
-0007a1 6165
-0007a2 0064 .db "ahead",0
-0007a3 0782 .dw VE_HEAD
- .set VE_HEAD = VE_AHEAD
- XT_AHEAD:
-0007a4 3801 .dw DO_COLON
- PFA_AHEAD:
- .endif
-0007a5 075c .dw XT_COMPILE
-0007a6 382f .dw XT_DOBRANCH
-0007a7 078d .dw XT_GMARK
-0007a8 3820 .dw XT_EXIT
- .include "words/if.asm"
-
- ; Compiler
- ; start conditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_IF:
-0007a9 0002 .dw $0002
-0007aa 6669 .db "if"
-0007ab 079f .dw VE_HEAD
- .set VE_HEAD = VE_IF
- XT_IF:
-0007ac 3801 .dw DO_COLON
- PFA_IF:
- .endif
-0007ad 075c .dw XT_COMPILE
-0007ae 3836 .dw XT_DOCONDBRANCH
-0007af 078d .dw XT_GMARK
-0007b0 3820 .dw XT_EXIT
- .include "words/else.asm"
-
- ; Compiler
- ; resolve the forward reference and place a new unresolved forward reference
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ELSE:
-0007b1 0004 .dw $0004
-0007b2 6c65
-0007b3 6573 .db "else"
-0007b4 07a9 .dw VE_HEAD
- .set VE_HEAD = VE_ELSE
- XT_ELSE:
-0007b5 3801 .dw DO_COLON
- PFA_ELSE:
- .endif
-0007b6 075c .dw XT_COMPILE
-0007b7 382f .dw XT_DOBRANCH
-0007b8 078d .dw XT_GMARK
-0007b9 38c4 .dw XT_SWAP
-0007ba 0792 .dw XT_GRESOLVE
-0007bb 3820 .dw XT_EXIT
- .include "words/then.asm"
-
- ; Compiler
- ; finish if
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THEN:
-0007bc 0004 .dw $0004
-0007bd 6874
-0007be 6e65 .db "then"
-0007bf 07b1 .dw VE_HEAD
- .set VE_HEAD = VE_THEN
- XT_THEN:
-0007c0 3801 .dw DO_COLON
- PFA_THEN:
- .endif
-0007c1 0792 .dw XT_GRESOLVE
-0007c2 3820 .dw XT_EXIT
- .include "words/begin.asm"
-
- ; Compiler
- ; put the next location for a transfer of control onto the control flow stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BEGIN:
-0007c3 0005 .dw $0005
-0007c4 6562
-0007c5 6967
-0007c6 006e .db "begin",0
-0007c7 07bc .dw VE_HEAD
- .set VE_HEAD = VE_BEGIN
- XT_BEGIN:
-0007c8 3801 .dw DO_COLON
- PFA_BEGIN:
- .endif
-0007c9 0798 .dw XT_LMARK
-0007ca 3820 .dw XT_EXIT
- .include "words/while.asm"
-
- ; Compiler
- ; at runtime skip until repeat if non-true
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WHILE:
-0007cb 0005 .dw $0005
-0007cc 6877
-0007cd 6c69
-0007ce 0065 .db "while",0
-0007cf 07c3 .dw VE_HEAD
- .set VE_HEAD = VE_WHILE
- XT_WHILE:
-0007d0 3801 .dw DO_COLON
- PFA_WHILE:
- .endif
-0007d1 07ac .dw XT_IF
-0007d2 38c4 .dw XT_SWAP
-0007d3 3820 .dw XT_EXIT
- .include "words/repeat.asm"
-
- ; Compiler
- ; continue execution at dest, resolve orig
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REPEAT:
-0007d4 0006 .dw $0006
-0007d5 6572
-0007d6 6570
-0007d7 7461 .db "repeat"
-0007d8 07cb .dw VE_HEAD
- .set VE_HEAD = VE_REPEAT
- XT_REPEAT:
-0007d9 3801 .dw DO_COLON
- PFA_REPEAT:
- .endif
-0007da 07ed .dw XT_AGAIN
-0007db 07c0 .dw XT_THEN
-0007dc 3820 .dw XT_EXIT
- .include "words/until.asm"
-
- ; Compiler
- ; finish begin with conditional branch, leaves the loop if true flag at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UNTIL:
-0007dd 0005 .dw $0005
-0007de 6e75
-0007df 6974
-0007e0 006c .db "until",0
-0007e1 07d4 .dw VE_HEAD
- .set VE_HEAD = VE_UNTIL
- XT_UNTIL:
-0007e2 3801 .dw DO_COLON
- PFA_UNTIL:
- .endif
-0007e3 383d .dw XT_DOLITERAL
-0007e4 3836 .dw XT_DOCONDBRANCH
-0007e5 0767 .dw XT_COMMA
-
-0007e6 079b .dw XT_LRESOLVE
-0007e7 3820 .dw XT_EXIT
- .include "words/again.asm"
-
- ; Compiler
- ; compile a jump back to dest
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AGAIN:
-0007e8 0005 .dw $0005
-0007e9 6761
-0007ea 6961
-0007eb 006e .db "again",0
-0007ec 07dd .dw VE_HEAD
- .set VE_HEAD = VE_AGAIN
- XT_AGAIN:
-0007ed 3801 .dw DO_COLON
- PFA_AGAIN:
- .endif
-0007ee 075c .dw XT_COMPILE
-0007ef 382f .dw XT_DOBRANCH
-0007f0 079b .dw XT_LRESOLVE
-0007f1 3820 .dw XT_EXIT
- .include "words/do.asm"
-
- ; Compiler
- ; start do .. [+]loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DO:
-0007f2 0002 .dw $0002
-0007f3 6f64 .db "do"
-0007f4 07e8 .dw VE_HEAD
- .set VE_HEAD = VE_DO
- XT_DO:
-0007f5 3801 .dw DO_COLON
- PFA_DO:
-
- .endif
-0007f6 075c .dw XT_COMPILE
-0007f7 3a9b .dw XT_DODO
-0007f8 0798 .dw XT_LMARK
-0007f9 3954 .dw XT_ZERO
-0007fa 0850 .dw XT_TO_L
-0007fb 3820 .dw XT_EXIT
- .include "words/loop.asm"
-
- ; Compiler
- ; compile (loop) and resolve the backward branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LOOP:
-0007fc 0004 .dw $0004
-0007fd 6f6c
-0007fe 706f .db "loop"
-0007ff 07f2 .dw VE_HEAD
- .set VE_HEAD = VE_LOOP
- XT_LOOP:
-000800 3801 .dw DO_COLON
- PFA_LOOP:
- .endif
-000801 075c .dw XT_COMPILE
-000802 3ac9 .dw XT_DOLOOP
-000803 0837 .dw XT_ENDLOOP
-000804 3820 .dw XT_EXIT
- .include "words/plusloop.asm"
-
- ; Compiler
- ; compile (+loop) and resolve branches
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PLUSLOOP:
-000805 0005 .dw $0005
-000806 6c2b
-000807 6f6f
-000808 0070 .db "+loop",0
-000809 07fc .dw VE_HEAD
- .set VE_HEAD = VE_PLUSLOOP
- XT_PLUSLOOP:
-00080a 3801 .dw DO_COLON
- PFA_PLUSLOOP:
- .endif
-00080b 075c .dw XT_COMPILE
-00080c 3aba .dw XT_DOPLUSLOOP
-00080d 0837 .dw XT_ENDLOOP
-00080e 3820 .dw XT_EXIT
- .include "words/leave.asm"
-
- ; Compiler
- ; immediatly leave the current DO..LOOP
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LEAVE:
-00080f 0005 .dw $0005
-000810 656c
-000811 7661
-000812 0065 .db "leave",0
-000813 0805 .dw VE_HEAD
- .set VE_HEAD = VE_LEAVE
- XT_LEAVE:
-000814 3801 .dw DO_COLON
- PFA_LEAVE:
- .endif
-000815 075c
-000816 3ad4 .DW XT_COMPILE,XT_UNLOOP
-000817 07a4
-000818 0850
-000819 3820 .DW XT_AHEAD,XT_TO_L,XT_EXIT
- .include "words/qdo.asm"
-
- ; Compiler
- ; start a ?do .. [+]loop control structure
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_QDO:
-00081a 0003 .dw $0003
-00081b 643f
-00081c 006f .db "?do",0
-00081d 080f .dw VE_HEAD
- .set VE_HEAD = VE_QDO
- XT_QDO:
-00081e 3801 .dw DO_COLON
- PFA_QDO:
- .endif
-00081f 075c .dw XT_COMPILE
-000820 0826 .dw XT_QDOCHECK
-000821 07ac .dw XT_IF
-000822 07f5 .dw XT_DO
-000823 38c4 .dw XT_SWAP ; DO sets a 0 marker on the leave stack
-000824 0850 .dw XT_TO_L ; then follows at the end.
-000825 3820 .dw XT_EXIT
-
- ; there is no special runtime for ?do, the do runtime
- ; gets wrapped with the sequence
- ; ... ?do-check if do ..... loop then
- ; with
- ; : ?do-check ( n1 n2 -- n1 n2 true | false )
- ; 2dup = dup >r if 2drop then r> invert ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QDOCHECK:
-000826 3801 .dw DO_COLON
- PFA_QDOCHECK:
- .endif
-000827 3ec9 .dw XT_2DUP
-000828 3fdf .dw XT_EQUAL
-000829 38b1 .dw XT_DUP
-00082a 38ff .dw XT_TO_R
-00082b 3836 .dw XT_DOCONDBRANCH
-00082c 082e DEST(PFA_QDOCHECK1)
-00082d 3ed2 .dw XT_2DROP
- PFA_QDOCHECK1:
-00082e 38f6 .dw XT_R_FROM
-00082f 39fd .dw XT_INVERT
-000830 3820 .dw XT_EXIT
- .include "words/endloop.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENDLOOP:
-000831 ff07 .dw $ff07
-000832 6e65
-000833 6c64
-000834 6f6f
-000835 0070 .db "endloop",0
-000836 081a .dw VE_HEAD
- .set VE_HEAD = VE_ENDLOOP
- XT_ENDLOOP:
-000837 3801 .dw DO_COLON
- PFA_ENDLOOP:
- .endif
- ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN --
- ; <resolve backward loop
- ; BEGIN L> ?DUP WHILE POSTPONE THEN REPEAT ;
- ; resolve LEAVEs
- ; This is a common factor of LOOP and +LOOP.
-
-000838 079b .DW XT_LRESOLVE
-000839 0844
-00083a 38b9
-00083b 3836 LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH
-00083c 0840 DEST(LOOP2)
-00083d 07c0 .DW XT_THEN
-00083e 382f .dw XT_DOBRANCH
-00083f 0839 DEST(LOOP1)
-000840 3820 LOOP2: .DW XT_EXIT
- ; leave address stack
- .include "words/l-from.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_FROM:
-000841 ff02 .dw $ff02
-000842 3e6c .db "l>"
-000843 0831 .dw VE_HEAD
- .set VE_HEAD = VE_L_FROM
- XT_L_FROM:
-000844 3801 .dw DO_COLON
- PFA_L_FROM:
-
- .endif
- ;Z L> -- x L: x -- move from leave stack
- ; LP @ @ -2 LP +! ;
-
-000845 0863 .dw XT_LP
-000846 3879 .dw XT_FETCH
-000847 3879 .dw XT_FETCH
-000848 383d .dw XT_DOLITERAL
-000849 fffe .dw -2
-00084a 0863 .dw XT_LP
-00084b 3a65 .dw XT_PLUSSTORE
-00084c 3820 .dw XT_EXIT
- .include "words/to-l.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_L:
-00084d ff02 .dw $ff02
-00084e 6c3e .db ">l"
-00084f 0841 .dw VE_HEAD
- .set VE_HEAD = VE_TO_L
- XT_TO_L:
-000850 3801 .dw DO_COLON
- PFA_TO_L:
- .endif
- ;Z >L x -- L: -- x move to leave stack
- ; CELL LP +! LP @ ! ; (L stack grows up)
-
-000851 3feb .dw XT_TWO
-000852 0863 .dw XT_LP
-000853 3a65 .dw XT_PLUSSTORE
-000854 0863 .dw XT_LP
-000855 3879 .dw XT_FETCH
-000856 3881 .dw XT_STORE
-000857 3820 .dw XT_EXIT
- .include "words/lp0.asm"
-
- ; Stack
- ; start address of leave stack
- VE_LP0:
-000858 ff03 .dw $ff03
-000859 706c
-00085a 0030 .db "lp0",0
-00085b 084d .dw VE_HEAD
- .set VE_HEAD = VE_LP0
- XT_LP0:
-00085c 386f .dw PFA_DOVALUE1
- PFA_LP0:
-00085d 0040 .dw CFG_LP0
-00085e 3da0 .dw XT_EDEFERFETCH
-00085f 3daa .dw XT_EDEFERSTORE
- .include "words/lp.asm"
-
- ; System Variable
- ; leave stack pointer
- VE_LP:
-000860 ff02 .dw $ff02
-000861 706c .db "lp"
-000862 0858 .dw VE_HEAD
- .set VE_HEAD = VE_LP
- XT_LP:
-000863 3848 .dw PFA_DOVARIABLE
- PFA_LP:
-000864 0190 .dw ram_lp
-
- .dseg
-000190 ram_lp: .byte 2
- .cseg
-
-
- .include "words/create.asm"
-
- ; Dictionary
- ; create a dictionary header. XT is (constant), with the address of the data field of name
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CREATE:
-000865 ff06 .dw $ff06
-000866 7263
-000867 6165
-000868 6574 .db "create"
-000869 0860 .dw VE_HEAD
- .set VE_HEAD = VE_CREATE
- XT_CREATE:
-00086a 3801 .dw DO_COLON
- PFA_CREATE:
- .endif
-00086b 0739 .dw XT_DOCREATE
-00086c 0899 .dw XT_REVEAL
-00086d 075c .dw XT_COMPILE
-00086e 3852 .dw PFA_DOCONSTANT
-00086f 3820 .dw XT_EXIT
- .include "words/header.asm"
-
- ; Compiler
- ; creates the vocabulary header without XT and data field (PF) in the wordlist wid
- VE_HEADER:
-000870 ff06 .dw $ff06
-000871 6568
-000872 6461
-000873 7265 .db "header"
-000874 0865 .dw VE_HEAD
- .set VE_HEAD = VE_HEADER
- XT_HEADER:
-000875 3801 .dw DO_COLON
- PFA_HEADER:
-000876 3f12 .dw XT_DP ; the new Name Field
-000877 38ff .dw XT_TO_R
-000878 38ff .dw XT_TO_R ; ( R: NFA WID )
-000879 38b1 .dw XT_DUP
-00087a 3928 .dw XT_GREATERZERO
-00087b 3836 .dw XT_DOCONDBRANCH
-00087c 0887 .dw PFA_HEADER1
-00087d 38b1 .dw XT_DUP
-00087e 383d .dw XT_DOLITERAL
-00087f ff00 .dw $ff00 ; all flags are off (e.g. immediate)
-000880 3a1c .dw XT_OR
-000881 03e2 .dw XT_DOSCOMMA
- ; make the link to the previous entry in this wordlist
-000882 38f6 .dw XT_R_FROM
-000883 3b5f .dw XT_FETCHE
-000884 0767 .dw XT_COMMA
-000885 38f6 .dw XT_R_FROM
-000886 3820 .dw XT_EXIT
-
- PFA_HEADER1:
- ; -16: attempt to use zero length string as a name
-000887 383d .dw XT_DOLITERAL
-000888 fff0 .dw -16
-000889 3d86 .dw XT_THROW
-
- .include "words/wlscope.asm"
-
- ; Compiler
- ; dynamically place a word in a wordlist. The word name may be changed.
- VE_WLSCOPE:
-00088a ff07 .dw $ff07
-00088b 6c77
-00088c 6373
-00088d 706f
-00088e 0065 .db "wlscope",0
-00088f 0870 .dw VE_HEAD
- .set VE_HEAD = VE_WLSCOPE
- XT_WLSCOPE:
-000890 3dff .dw PFA_DODEFER1
- PFA_WLSCOPE:
-000891 003c .dw CFG_WLSCOPE
-000892 3da0 .dw XT_EDEFERFETCH
-000893 3daa .dw XT_EDEFERSTORE
-
- ; wlscope, "wordlist scope" ( addr len -- addr' len' wid ), is a deferred word
- ; which enables the AmForth application to choose the wordlist ( wid ) for the
- ; new voc entry based on the input ( addr len ) string. The name of the new voc
- ; entry ( addr' len' ) may be different from the input string. Note that all
- ; created voc entry types pass through the wlscope mechanism. The default
- ; wlscope action passes the input string to the output without modification and
- ; uses get-current to select the wid.
- .include "words/reveal.asm"
-
- ; Dictionary
- ; makes an entry in a wordlist visible, if not already done.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REVEAL:
-000894 ff06 .dw $ff06
-000895 6572
-000896 6576
-000897 6c61 .db "reveal"
-000898 088a .dw VE_HEAD
- .set VE_HEAD = VE_REVEAL
- XT_REVEAL:
-000899 3801 .dw DO_COLON
- PFA_REVEAL:
- .endif
-00089a 072a
-00089b 3c90
-00089c 3879 .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use
-00089d 38b9
-00089e 3836 .DW XT_QDUP,XT_DOCONDBRANCH
-00089f 08a4 DEST(REVEAL1)
-0008a0 072a
-0008a1 3879
-0008a2 38c4
-0008a3 3b3b .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE
- ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry
- REVEAL1:
-0008a4 3820 .DW XT_EXIT
- .include "words/does.asm"
-
- ; Compiler
- ; organize the XT replacement to call other colon code
- VE_DOES:
-0008a5 0005 .dw $0005
-0008a6 6f64
-0008a7 7365
-0008a8 003e .db "does>",0
-0008a9 0894 .dw VE_HEAD
- .set VE_HEAD = VE_DOES
- XT_DOES:
-0008aa 3801 .dw DO_COLON
- PFA_DOES:
-0008ab 075c .dw XT_COMPILE
-0008ac 08bd .dw XT_DODOES
-0008ad 075c .dw XT_COMPILE ; create a code snippet to be used in an embedded XT
-0008ae 940e .dw $940e ; the address of this compiled
-0008af 075c .dw XT_COMPILE ; code will replace the XT of the
-0008b0 08b2 .dw DO_DODOES ; word that CREATE created
-0008b1 3820 .dw XT_EXIT ;
-
- DO_DODOES: ; ( -- PFA )
-0008b2 939a
-0008b3 938a savetos
-0008b4 01cb movw tosl, wl
-0008b5 9601 adiw tosl, 1
- ; the following takes the address from a real uC-call
- .if (pclen==3)
- .endif
-0008b6 917f pop wh
-0008b7 916f pop wl
-
-0008b8 93bf push XH
-0008b9 93af push XL
-0008ba 01db movw XL, wl
-0008bb 940c 3805 jmp_ DO_NEXT
-
- ; ( -- )
- ; System
- ; replace the XT written by CREATE to call the code that follows does>
- ;VE_DODOES:
- ; .dw $ff07
- ; .db "(does>)"
- ; .set VE_HEAD = VE_DODOES
- XT_DODOES:
-0008bd 3801 .dw DO_COLON
- PFA_DODOES:
-0008be 38f6 .dw XT_R_FROM
-0008bf 072a .dw XT_NEWEST
-0008c0 3c90 .dw XT_CELLPLUS
-0008c1 3879 .dw XT_FETCH
-0008c2 3b5f .dw XT_FETCHE
-0008c3 0701 .dw XT_NFA2CFA
-0008c4 3b73 .dw XT_STOREI
-0008c5 3820 .dw XT_EXIT
- .include "words/colon.asm"
-
- ; Compiler
- ; create a named entry in the dictionary, XT is DO_COLON
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COLON:
-0008c6 ff01 .dw $ff01
-0008c7 003a .db ":",0
-0008c8 08a5 .dw VE_HEAD
- .set VE_HEAD = VE_COLON
- XT_COLON:
-0008c9 3801 .dw DO_COLON
- PFA_COLON:
- .endif
-0008ca 0739 .dw XT_DOCREATE
-0008cb 08d4 .dw XT_COLONNONAME
-0008cc 38d9 .dw XT_DROP
-0008cd 3820 .dw XT_EXIT
- .include "words/colon-noname.asm"
-
- ; Compiler
- ; create an unnamed entry in the dictionary, XT is DO_COLON
- VE_COLONNONAME:
-0008ce ff07 .dw $ff07
-0008cf 6e3a
-0008d0 6e6f
-0008d1 6d61
-0008d2 0065 .db ":noname",0
-0008d3 08c6 .dw VE_HEAD
- .set VE_HEAD = VE_COLONNONAME
- XT_COLONNONAME:
-0008d4 3801 .dw DO_COLON
- PFA_COLONNONAME:
-0008d5 3f12 .dw XT_DP
-0008d6 38b1 .dw XT_DUP
-0008d7 0731 .dw XT_LATEST
-0008d8 3881 .dw XT_STORE
-
-0008d9 075c .dw XT_COMPILE
-0008da 3801 .dw DO_COLON
-
-0008db 08e9 .dw XT_RBRACKET
-0008dc 3820 .dw XT_EXIT
- .include "words/semicolon.asm"
-
- ; Compiler
- ; finish colon defintion, compiles (exit) and returns to interpret state
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SEMICOLON:
-0008dd 0001 .dw $0001
-0008de 003b .db $3b,0
-0008df 08ce .dw VE_HEAD
- .set VE_HEAD = VE_SEMICOLON
- XT_SEMICOLON:
-0008e0 3801 .dw DO_COLON
- PFA_SEMICOLON:
- .endif
-0008e1 075c .dw XT_COMPILE
-0008e2 3820 .dw XT_EXIT
-0008e3 08f1 .dw XT_LBRACKET
-0008e4 0899 .dw XT_REVEAL
-0008e5 3820 .dw XT_EXIT
- .include "words/right-bracket.asm"
-
- ; Compiler
- ; enter compiler mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RBRACKET:
-0008e6 ff01 .dw $ff01
-0008e7 005d .db "]",0
-0008e8 08dd .dw VE_HEAD
- .set VE_HEAD = VE_RBRACKET
- XT_RBRACKET:
-0008e9 3801 .dw DO_COLON
- PFA_RBRACKET:
- .endif
-0008ea 3fe6 .dw XT_ONE
-0008eb 3eb7 .dw XT_STATE
-0008ec 3881 .dw XT_STORE
-0008ed 3820 .dw XT_EXIT
- .include "words/left-bracket.asm"
-
- ; Compiler
- ; enter interpreter mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LBRACKET:
-0008ee 0001 .dw $0001
-0008ef 005b .db "[",0
-0008f0 08e6 .dw VE_HEAD
- .set VE_HEAD = VE_LBRACKET
- XT_LBRACKET:
-0008f1 3801 .dw DO_COLON
- PFA_LBRACKET:
- .endif
-0008f2 3954 .dw XT_ZERO
-0008f3 3eb7 .dw XT_STATE
-0008f4 3881 .dw XT_STORE
-0008f5 3820 .dw XT_EXIT
- .include "words/variable.asm"
-
- ; Compiler
- ; create a dictionary entry for a variable and allocate 1 cell RAM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_VARIABLE:
-0008f6 ff08 .dw $ff08
-0008f7 6176
-0008f8 6972
-0008f9 6261
-0008fa 656c .db "variable"
-0008fb 08ee .dw VE_HEAD
- .set VE_HEAD = VE_VARIABLE
- XT_VARIABLE:
-0008fc 3801 .dw DO_COLON
- PFA_VARIABLE:
- .endif
-0008fd 3f23 .dw XT_HERE
-0008fe 0908 .dw XT_CONSTANT
-0008ff 3feb .dw XT_TWO
-000900 3f2c .dw XT_ALLOT
-000901 3820 .dw XT_EXIT
- .include "words/constant.asm"
-
- ; Compiler
- ; create a constant in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_CONSTANT:
-000902 ff08 .dw $ff08
-000903 6f63
-000904 736e
-000905 6174
-000906 746e .db "constant"
-000907 08f6 .dw VE_HEAD
- .set VE_HEAD = VE_CONSTANT
- XT_CONSTANT:
-000908 3801 .dw DO_COLON
- PFA_CONSTANT:
- .endif
-000909 0739 .dw XT_DOCREATE
-00090a 0899 .dw XT_REVEAL
-00090b 075c .dw XT_COMPILE
-00090c 3848 .dw PFA_DOVARIABLE
-00090d 0767 .dw XT_COMMA
-00090e 3820 .dw XT_EXIT
- .include "words/user.asm"
-
- ; Compiler
- ; create a dictionary entry for a user variable at offset n
- VE_USER:
-00090f ff04 .dw $ff04
-000910 7375
-000911 7265 .db "user"
-000912 0902 .dw VE_HEAD
- .set VE_HEAD = VE_USER
- XT_USER:
-000913 3801 .dw DO_COLON
- PFA_USER:
-000914 0739 .dw XT_DOCREATE
-000915 0899 .dw XT_REVEAL
-
-000916 075c .dw XT_COMPILE
-000917 3858 .dw PFA_DOUSER
-000918 0767 .dw XT_COMMA
-000919 3820 .dw XT_EXIT
-
- .include "words/recurse.asm"
-
- ; Compiler
- ; compile the XT of the word currently being defined into the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECURSE:
-00091a 0007 .dw $0007
-00091b 6572
-00091c 7563
-00091d 7372
-00091e 0065 .db "recurse",0
-00091f 090f .dw VE_HEAD
- .set VE_HEAD = VE_RECURSE
- XT_RECURSE:
-000920 3801 .dw DO_COLON
- PFA_RECURSE:
- .endif
-000921 0731 .dw XT_LATEST
-000922 3879 .dw XT_FETCH
-000923 0767 .dw XT_COMMA
-000924 3820 .dw XT_EXIT
- .include "words/immediate.asm"
-
- ; Compiler
- ; set immediate flag for the most recent word definition
- VE_IMMEDIATE:
-000925 ff09 .dw $ff09
-000926 6d69
-000927 656d
-000928 6964
-000929 7461
-00092a 0065 .db "immediate",0
-00092b 091a .dw VE_HEAD
- .set VE_HEAD = VE_IMMEDIATE
- XT_IMMEDIATE:
-00092c 3801 .dw DO_COLON
- PFA_IMMEDIATE:
-00092d 09ce .dw XT_GET_CURRENT
-00092e 3b5f .dw XT_FETCHE
-00092f 38b1 .dw XT_DUP
-000930 3bcb .dw XT_FETCHI
-000931 383d .dw XT_DOLITERAL
-000932 7fff .dw $7fff
-000933 3a13 .dw XT_AND
-000934 38c4 .dw XT_SWAP
-000935 3b73 .dw XT_STOREI
-000936 3820 .dw XT_EXIT
-
- .include "words/bracketchar.asm"
-
- ; Tools
- ; skip leading space delimites, place the first character of the word on the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETCHAR:
-000937 0006 .dw $0006
-000938 635b
-000939 6168
-00093a 5d72 .db "[char]"
-00093b 0925 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETCHAR
- XT_BRACKETCHAR:
-00093c 3801 .dw DO_COLON
- PFA_BRACKETCHAR:
- .endif
-00093d 075c .dw XT_COMPILE
-00093e 383d .dw XT_DOLITERAL
-00093f 04f1 .dw XT_CHAR
-000940 0767 .dw XT_COMMA
-000941 3820 .dw XT_EXIT
- .include "words/abort-string.asm"
-
- ;C i*x x1 -- R: j*x -- x1<>0
- ; POSTPONE IS" POSTPONE ?ABORT ; IMMEDIATE
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORTQUOTE:
-000942 0006 .dw $0006
-000943 6261
-000944 726f
-000945 2274 .db "abort",'"'
-000946 0937 .dw VE_HEAD
- .set VE_HEAD = VE_ABORTQUOTE
- XT_ABORTQUOTE:
-000947 3801 .dw DO_COLON
- PFA_ABORTQUOTE:
- .endif
-000948 3e8a .dw XT_SQUOTE
-000949 075c .dw XT_COMPILE
-00094a 0959 .dw XT_QABORT
-00094b 3820 .DW XT_EXIT
- .include "words/abort.asm"
-
- ; Exceptions
- ; send an exception -1
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORT:
-00094c ff05 .dw $ff05
-00094d 6261
-00094e 726f
-00094f 0074 .db "abort",0
-000950 0942 .dw VE_HEAD
- .set VE_HEAD = VE_ABORT
- XT_ABORT:
-000951 3801 .dw DO_COLON
- PFA_ABORT:
- .endif
-000952 394b .dw XT_TRUE
-000953 3d86 .dw XT_THROW
- .include "words/q-abort.asm"
-
- ; ROT IF ITYPE ABORT THEN 2DROP ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QABORT:
-000954 ff06 .dw $ff06
-000955 613f
-000956 6f62
-000957 7472 .db "?abort"
-000958 094c .dw VE_HEAD
- .set VE_HEAD = VE_QABORT
- XT_QABORT:
-000959 3801 .dw DO_COLON
- PFA_QABORT:
-
- .endif
-00095a 38e1
-00095b 3836 .DW XT_ROT,XT_DOCONDBRANCH
-00095c 095f DEST(QABO1)
-00095d 0403
-00095e 0951 .DW XT_ITYPE,XT_ABORT
-00095f 3ed2
-000960 3820 QABO1: .DW XT_2DROP,XT_EXIT
-
- .include "words/get-stack.asm"
-
- ; Tools
- ; Get a stack from EEPROM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_STACK:
-000961 ff09 .dw $ff09
-000962 6567
-000963 2d74
-000964 7473
-000965 6361
-000966 006b .db "get-stack",0
-000967 0954 .dw VE_HEAD
- .set VE_HEAD = VE_GET_STACK
- XT_GET_STACK:
-000968 3801 .dw DO_COLON
- .endif
-000969 38b1 .dw XT_DUP
-00096a 3c90 .dw XT_CELLPLUS
-00096b 38c4 .dw XT_SWAP
-00096c 3b5f .dw XT_FETCHE
-00096d 38b1 .dw XT_DUP
-00096e 38ff .dw XT_TO_R
-00096f 3954 .dw XT_ZERO
-000970 38c4 .dw XT_SWAP ; go from bigger to smaller addresses
-000971 0826 .dw XT_QDOCHECK
-000972 3836 .dw XT_DOCONDBRANCH
-000973 097f DEST(PFA_N_FETCH_E2)
-000974 3a9b .dw XT_DODO
- PFA_N_FETCH_E1:
- ; ( ee-addr )
-000975 3aac .dw XT_I
-000976 3a35 .dw XT_1MINUS
-000977 3ec4 .dw XT_CELLS ; ( -- ee-addr i*2 )
-000978 38cf .dw XT_OVER ; ( -- ee-addr i*2 ee-addr )
-000979 399d .dw XT_PLUS ; ( -- ee-addr ee-addr+i
-00097a 3b5f .dw XT_FETCHE ;( -- ee-addr item_i )
-00097b 38c4 .dw XT_SWAP ;( -- item_i ee-addr )
-00097c 394b .dw XT_TRUE ; shortcut for -1
-00097d 3aba .dw XT_DOPLUSLOOP
-00097e 0975 DEST(PFA_N_FETCH_E1)
- PFA_N_FETCH_E2:
-00097f 3ed2 .dw XT_2DROP
-000980 38f6 .dw XT_R_FROM
-000981 3820 .dw XT_EXIT
-
- .include "words/set-stack.asm"
-
- ; Tools
- ; Write a stack to EEPROM
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_STACK:
-000982 ff09 .dw $ff09
-000983 6573
-000984 2d74
-000985 7473
-000986 6361
-000987 006b .db "set-stack",0
-000988 0961 .dw VE_HEAD
- .set VE_HEAD = VE_SET_STACK
- XT_SET_STACK:
-000989 3801 .dw DO_COLON
- PFA_SET_STACK:
- .endif
-00098a 38cf .dw XT_OVER
-00098b 3921 .dw XT_ZEROLESS
-00098c 3836 .dw XT_DOCONDBRANCH
-00098d 0991 DEST(PFA_SET_STACK0)
-00098e 383d .dw XT_DOLITERAL
-00098f fffc .dw -4
-000990 3d86 .dw XT_THROW
- PFA_SET_STACK0:
-000991 3ec9 .dw XT_2DUP
-000992 3b3b .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr )
-000993 38c4 .dw XT_SWAP
-000994 3954 .dw XT_ZERO
-000995 0826 .dw XT_QDOCHECK
-000996 3836 .dw XT_DOCONDBRANCH
-000997 099e DEST(PFA_SET_STACK2)
-000998 3a9b .dw XT_DODO
- PFA_SET_STACK1:
-000999 3c90 .dw XT_CELLPLUS ; ( -- i_x e-addr )
-00099a 3eda .dw XT_TUCK ; ( -- e-addr i_x e-addr
-00099b 3b3b .dw XT_STOREE
-00099c 3ac9 .dw XT_DOLOOP
-00099d 0999 DEST(PFA_SET_STACK1)
- PFA_SET_STACK2:
-00099e 38d9 .dw XT_DROP
-00099f 3820 .dw XT_EXIT
-
- .include "words/map-stack.asm"
-
- ; Tools
- ; Iterate over a stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAPSTACK:
-0009a0 ff09 .dw $ff09
-0009a1 616d
-0009a2 2d70
-0009a3 7473
-0009a4 6361
-0009a5 006b .db "map-stack",0
-0009a6 0982 .dw VE_HEAD
- .set VE_HEAD = VE_MAPSTACK
- XT_MAPSTACK:
-0009a7 3801 .dw DO_COLON
- PFA_MAPSTACK:
- .endif
-0009a8 38b1 .dw XT_DUP
-0009a9 3c90 .dw XT_CELLPLUS
-0009aa 38c4 .dw XT_SWAP
-0009ab 3b5f .dw XT_FETCHE
-0009ac 3ec4 .dw XT_CELLS
-0009ad 3f99 .dw XT_BOUNDS
-0009ae 0826 .dw XT_QDOCHECK
-0009af 3836 .dw XT_DOCONDBRANCH
-0009b0 09c3 DEST(PFA_MAPSTACK3)
-0009b1 3a9b .dw XT_DODO
- PFA_MAPSTACK1:
-0009b2 3aac .dw XT_I
-0009b3 3b5f .dw XT_FETCHE ; -- i*x XT id
-0009b4 38c4 .dw XT_SWAP
-0009b5 38ff .dw XT_TO_R
-0009b6 3908 .dw XT_R_FETCH
-0009b7 382a .dw XT_EXECUTE ; i*x id -- j*y true | i*x false
-0009b8 38b9 .dw XT_QDUP
-0009b9 3836 .dw XT_DOCONDBRANCH
-0009ba 09bf DEST(PFA_MAPSTACK2)
-0009bb 38f6 .dw XT_R_FROM
-0009bc 38d9 .dw XT_DROP
-0009bd 3ad4 .dw XT_UNLOOP
-0009be 3820 .dw XT_EXIT
- PFA_MAPSTACK2:
-0009bf 38f6 .dw XT_R_FROM
-0009c0 3feb .dw XT_TWO
-0009c1 3aba .dw XT_DOPLUSLOOP
-0009c2 09b2 DEST(PFA_MAPSTACK1)
- PFA_MAPSTACK3:
-0009c3 38d9 .dw XT_DROP
-0009c4 3954 .dw XT_ZERO
-0009c5 3820 .dw XT_EXIT
-
- ;
- ; : map-stack ( i*x XT e-addr -- j*y )
- ; dup cell+ swap @e cells bounds ?do
- ; ( -- i*x XT )
- ; i @e swap >r r@ execute
- ; ?dup if r> drop unloop exit then
- ; r>
- ; 2 +loop drop 0
- ; ;
- .include "words/get-current.asm"
-
- ; Search Order
- ; get the wid of the current compilation word list
- VE_GET_CURRENT:
-0009c6 ff0b .dw $ff0b
-0009c7 6567
-0009c8 2d74
-0009c9 7563
-0009ca 7272
-0009cb 6e65
-0009cc 0074 .db "get-current",0
-0009cd 09a0 .dw VE_HEAD
- .set VE_HEAD = VE_GET_CURRENT
- XT_GET_CURRENT:
-0009ce 3801 .dw DO_COLON
- PFA_GET_CURRENT:
-0009cf 383d .dw XT_DOLITERAL
-0009d0 0046 .dw CFG_CURRENT
-0009d1 3b5f .dw XT_FETCHE
-0009d2 3820 .dw XT_EXIT
- .include "words/get-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_ORDER:
-0009d3 ff09 .dw $ff09
-0009d4 6567
-0009d5 2d74
-0009d6 726f
-0009d7 6564
-0009d8 0072 .db "get-order",0
-0009d9 09c6 .dw VE_HEAD
- .set VE_HEAD = VE_GET_ORDER
- XT_GET_ORDER:
-0009da 3801 .dw DO_COLON
- PFA_GET_ORDER:
- .endif
-0009db 383d .dw XT_DOLITERAL
-0009dc 004a .dw CFG_ORDERLISTLEN
-0009dd 0968 .dw XT_GET_STACK
-0009de 3820 .dw XT_EXIT
- .include "words/cfg-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CFG_ORDER:
-0009df ff09 .dw $ff09
-0009e0 6663
-0009e1 2d67
-0009e2 726f
-0009e3 6564
-0009e4 0072 .db "cfg-order",0
-0009e5 09d3 .dw VE_HEAD
- .set VE_HEAD = VE_CFG_ORDER
- XT_CFG_ORDER:
-0009e6 3848 .dw PFA_DOVARIABLE
- PFA_CFG_ORDER:
- .endif
-0009e7 004a .dw CFG_ORDERLISTLEN
- .include "words/compare.asm"
-
- ; String
- ; compares two strings in RAM
- VE_COMPARE:
-0009e8 ff07 .dw $ff07
-0009e9 6f63
-0009ea 706d
-0009eb 7261
-0009ec 0065 .db "compare",0
-0009ed 09df .dw VE_HEAD
- .set VE_HEAD = VE_COMPARE
- XT_COMPARE:
-0009ee 09ef .dw PFA_COMPARE
- PFA_COMPARE:
-0009ef 93bf push xh
-0009f0 93af push xl
-0009f1 018c movw temp0, tosl
-0009f2 9189
-0009f3 9199 loadtos
-0009f4 01dc movw xl, tosl
-0009f5 9189
-0009f6 9199 loadtos
-0009f7 019c movw temp2, tosl
-0009f8 9189
-0009f9 9199 loadtos
-0009fa 01fc movw zl, tosl
- PFA_COMPARE_LOOP:
-0009fb 90ed ld temp4, X+
-0009fc 90f1 ld temp5, Z+
-0009fd 14ef cp temp4, temp5
-0009fe f451 brne PFA_COMPARE_NOTEQUAL
-0009ff 950a dec temp0
-000a00 f019 breq PFA_COMPARE_ENDREACHED2
-000a01 952a dec temp2
-000a02 f7c1 brne PFA_COMPARE_LOOP
-000a03 c001 rjmp PFA_COMPARE_ENDREACHED
- PFA_COMPARE_ENDREACHED2:
-000a04 952a dec temp2
- PFA_COMPARE_ENDREACHED:
-000a05 2b02 or temp0, temp2
-000a06 f411 brne PFA_COMPARE_CHECKLASTCHAR
-000a07 2788 clr tosl
-000a08 c002 rjmp PFA_COMPARE_DONE
- PFA_COMPARE_CHECKLASTCHAR:
- PFA_COMPARE_NOTEQUAL:
-000a09 ef8f ser tosl
-000a0a c000 rjmp PFA_COMPARE_DONE
-
- PFA_COMPARE_DONE:
-000a0b 2f98 mov tosh, tosl
-000a0c 91af pop xl
-000a0d 91bf pop xh
-000a0e 940c 3805 jmp_ DO_NEXT
- .include "words/nfa2lfa.asm"
-
- ; System
- ; get the link field address from the name field address
- VE_NFA2LFA:
-000a10 ff07 .dw $ff07
-000a11 666e
-000a12 3e61
-000a13 666c
-000a14 0061 .db "nfa>lfa",0
-000a15 09e8 .dw VE_HEAD
- .set VE_HEAD = VE_NFA2LFA
- XT_NFA2LFA:
-000a16 3801 .dw DO_COLON
- PFA_NFA2LFA:
-000a17 06f5 .dw XT_NAME2STRING
-000a18 3a2f .dw XT_1PLUS
-000a19 3a04 .dw XT_2SLASH
-000a1a 399d .dw XT_PLUS
-000a1b 3820 .dw XT_EXIT
- .elif AMFORTH_NRWW_SIZE > 2000
- .else
- .endif
- .include "dict_appl.inc"
-
- ; they may be moved to the core dictionary if needed
- .include "words/dot-s.asm"
-
- ; Tools
- ; stack dump
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTS:
-000a1c ff02 .dw $ff02
-000a1d 732e .db ".s"
-000a1e 0a10 .dw VE_HEAD
- .set VE_HEAD = VE_DOTS
- XT_DOTS:
-000a1f 3801 .dw DO_COLON
- PFA_DOTS:
- .endif
-000a20 05ed .dw XT_DEPTH
-000a21 3e0a .dw XT_UDOT
-000a22 3fae .dw XT_SPACE
-000a23 05ed .dw XT_DEPTH
-000a24 3954 .dw XT_ZERO
-000a25 0826 .dw XT_QDOCHECK
-000a26 3836 .dw XT_DOCONDBRANCH
-000a27 0a2e DEST(PFA_DOTS2)
-000a28 3a9b .dw XT_DODO
- PFA_DOTS1:
-000a29 3aac .dw XT_I
-000a2a 3c84 .dw XT_PICK
-000a2b 3e0a .dw XT_UDOT
-000a2c 3ac9 .dw XT_DOLOOP
-000a2d 0a29 DEST(PFA_DOTS1)
- PFA_DOTS2:
-000a2e 3820 .dw XT_EXIT
- .include "words/spirw.asm"
-
- ; MCU
- ; SPI exchange of 1 byte
- VE_SPIRW:
-000a2f ff06 .dw $ff06
-000a30 2163
-000a31 7340
-000a32 6970 .db "c!@spi"
-000a33 0a1c .dw VE_HEAD
- .set VE_HEAD = VE_SPIRW
- XT_SPIRW:
-000a34 0a35 .dw PFA_SPIRW
- PFA_SPIRW:
-000a35 d003 rcall do_spirw
-000a36 2799 clr tosh
-000a37 940c 3805 jmp_ DO_NEXT
-
- do_spirw:
-000a39 bd8e out_ SPDR, tosl
- do_spirw1:
-000a3a b50d in_ temp0, SPSR
-000a3b 7f08 cbr temp0,7
-000a3c bd0d out_ SPSR, temp0
-000a3d b50d in_ temp0, SPSR
-000a3e ff07 sbrs temp0, 7
-000a3f cffa rjmp do_spirw1 ; wait until complete
-000a40 b58e in_ tosl, SPDR
-000a41 9508 ret
- .include "words/n-spi.asm"
-
- ; MCU
- ; read len bytes from SPI to addr
- VE_N_SPIR:
-000a42 ff05 .dw $ff05
-000a43 406e
-000a44 7073
-000a45 0069 .db "n@spi",0
-000a46 0a2f .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIR
- XT_N_SPIR:
-000a47 0a48 .dw PFA_N_SPIR
- PFA_N_SPIR:
-000a48 018c movw temp0, tosl
-000a49 9189
-000a4a 9199 loadtos
-000a4b 01fc movw zl, tosl
-000a4c 01c8 movw tosl, temp0
- PFA_N_SPIR_LOOP:
-000a4d bc2e out_ SPDR, zerol
- PFA_N_SPIR_LOOP1:
-000a4e b52d in_ temp2, SPSR
-000a4f ff27 sbrs temp2, SPIF
-000a50 cffd rjmp PFA_N_SPIR_LOOP1
-000a51 b52e in_ temp2, SPDR
-000a52 9321 st Z+, temp2
-000a53 9701 sbiw tosl, 1
-000a54 f7c1 brne PFA_N_SPIR_LOOP
-000a55 9189
-000a56 9199 loadtos
-000a57 940c 3805 jmp_ DO_NEXT
-
- ; ( addr len -- )
- ; MCU
- ; write len bytes to SPI from addr
- VE_N_SPIW:
-000a59 ff05 .dw $ff05
-000a5a 216e
-000a5b 7073
-000a5c 0069 .db "n!spi",0
-000a5d 0a42 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIW
- XT_N_SPIW:
-000a5e 0a5f .dw PFA_N_SPIW
- PFA_N_SPIW:
-000a5f 018c movw temp0, tosl
-000a60 9189
-000a61 9199 loadtos
-000a62 01fc movw zl, tosl
-000a63 01c8 movw tosl, temp0
- PFA_N_SPIW_LOOP:
-000a64 9121 ld temp2, Z+
-000a65 bd2e out_ SPDR, temp2
- PFA_N_SPIW_LOOP1:
-000a66 b52d in_ temp2, SPSR
-000a67 ff27 sbrs temp2, SPIF
-000a68 cffd rjmp PFA_N_SPIW_LOOP1
-000a69 b52e in_ temp2, SPDR ; ignore the data
-000a6a 9701 sbiw tosl, 1
-000a6b f7c1 brne PFA_N_SPIW_LOOP
-000a6c 9189
-000a6d 9199 loadtos
-000a6e 940c 3805 jmp_ DO_NEXT
- .include "words/applturnkey.asm"
-
- ; R( -- )
- ; application specific turnkey action
- VE_APPLTURNKEY:
-000a70 ff0b .dw $ff0b
-000a71 7061
-000a72 6c70
-000a73 7574
-000a74 6e72
-000a75 656b
-000a76 0079 .db "applturnkey",0
-000a77 0a59 .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
- XT_APPLTURNKEY:
-000a78 3801 .dw DO_COLON
- PFA_APPLTURNKEY:
-000a79 00c7 .dw XT_USART
-
- .if WANT_INTERRUPTS == 1
-000a7a 3c97 .dw XT_INTON
- .endif
-000a7b 018a .dw XT_DOT_VER
-000a7c 3fae .dw XT_SPACE
-000a7d 3eac .dw XT_F_CPU
-000a7e 383d .dw XT_DOLITERAL
-000a7f 03e8 .dw 1000
-000a80 39c2 .dw XT_UMSLASHMOD
-000a81 38f0 .dw XT_NIP
-000a82 3f41 .dw XT_DECIMAL
-000a83 0385 .dw XT_DOT
-000a84 03d0 .dw XT_DOSLITERAL
-000a85 0004 .dw 4
-000a86 486b
-000a87 207a .db "kHz "
-000a88 0403 .dw XT_ITYPE
-000a89 3820 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .set DICT_COMPILER2 = 1
-
- .include "words/set-current.asm"
-
- ; Search Order
- ; set current word list to the given word list wid
- VE_SET_CURRENT:
-000a8a ff0b .dw $ff0b
-000a8b 6573
-000a8c 2d74
-000a8d 7563
-000a8e 7272
-000a8f 6e65
-000a90 0074 .db "set-current",0
-000a91 0a70 .dw VE_HEAD
- .set VE_HEAD = VE_SET_CURRENT
- XT_SET_CURRENT:
-000a92 3801 .dw DO_COLON
- PFA_SET_CURRENT:
-000a93 383d .dw XT_DOLITERAL
-000a94 0046 .dw CFG_CURRENT
-000a95 3b3b .dw XT_STOREE
-000a96 3820 .dw XT_EXIT
- .include "words/wordlist.asm"
-
- ; Search Order
- ; create a new, empty wordlist
- VE_WORDLIST:
-000a97 ff08 .dw $ff08
-000a98 6f77
-000a99 6472
-000a9a 696c
-000a9b 7473 .db "wordlist"
-000a9c 0a8a .dw VE_HEAD
- .set VE_HEAD = VE_WORDLIST
- XT_WORDLIST:
-000a9d 3801 .dw DO_COLON
- PFA_WORDLIST:
-000a9e 3f1b .dw XT_EHERE
-000a9f 3954 .dw XT_ZERO
-000aa0 38cf .dw XT_OVER
-000aa1 3b3b .dw XT_STOREE
-000aa2 38b1 .dw XT_DUP
-000aa3 3c90 .dw XT_CELLPLUS
-000aa4 01bf .dw XT_DOTO
-000aa5 3f1c .dw PFA_EHERE
-000aa6 3820 .dw XT_EXIT
-
- .include "words/forth-wordlist.asm"
-
- ; Search Order
- ; get the system default word list
- VE_FORTHWORDLIST:
-000aa7 ff0e .dw $ff0e
-000aa8 6f66
-000aa9 7472
-000aaa 2d68
-000aab 6f77
-000aac 6472
-000aad 696c
-000aae 7473 .db "forth-wordlist"
-000aaf 0a97 .dw VE_HEAD
- .set VE_HEAD = VE_FORTHWORDLIST
- XT_FORTHWORDLIST:
-000ab0 3848 .dw PFA_DOVARIABLE
- PFA_FORTHWORDLIST:
-000ab1 0048 .dw CFG_FORTHWORDLIST
- .include "words/set-order.asm"
-
- ; Search Order
- ; replace the search order list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_ORDER:
-000ab2 ff09 .dw $ff09
-000ab3 6573
-000ab4 2d74
-000ab5 726f
-000ab6 6564
-000ab7 0072 .db "set-order",0
-000ab8 0aa7 .dw VE_HEAD
- .set VE_HEAD = VE_SET_ORDER
- XT_SET_ORDER:
-000ab9 3801 .dw DO_COLON
- PFA_SET_ORDER:
- .endif
-000aba 383d .dw XT_DOLITERAL
-000abb 004a .dw CFG_ORDERLISTLEN
-000abc 0989 .dw XT_SET_STACK
-000abd 3820 .dw XT_EXIT
-
- .include "words/set-recognizer.asm"
-
- ; Interpreter
- ; replace the recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_RECOGNIZERS:
-000abe ff0f .dw $ff0f
-000abf 6573
-000ac0 2d74
-000ac1 6572
-000ac2 6f63
-000ac3 6e67
-000ac4 7a69
-000ac5 7265
-000ac6 0073 .db "set-recognizers",0
-000ac7 0ab2 .dw VE_HEAD
- .set VE_HEAD = VE_SET_RECOGNIZERS
- XT_SET_RECOGNIZERS:
-000ac8 3801 .dw DO_COLON
- PFA_SET_RECOGNIZERS:
- .endif
-000ac9 383d .dw XT_DOLITERAL
-000aca 005c .dw CFG_RECOGNIZERLISTLEN
-000acb 0989 .dw XT_SET_STACK
-000acc 3820 .dw XT_EXIT
-
- .include "words/get-recognizer.asm"
-
- ; Interpreter
- ; Get the current recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_RECOGNIZERS:
-000acd ff0f .dw $ff0f
-000ace 6567
-000acf 2d74
-000ad0 6572
-000ad1 6f63
-000ad2 6e67
-000ad3 7a69
-000ad4 7265
-000ad5 0073 .db "get-recognizers",0
-000ad6 0abe .dw VE_HEAD
- .set VE_HEAD = VE_GET_RECOGNIZERS
- XT_GET_RECOGNIZERS:
-000ad7 3801 .dw DO_COLON
- PFA_GET_RECOGNIZERS:
- .endif
-000ad8 383d .dw XT_DOLITERAL
-000ad9 005c .dw CFG_RECOGNIZERLISTLEN
-000ada 0968 .dw XT_GET_STACK
-000adb 3820 .dw XT_EXIT
- .include "words/code.asm"
-
- ; Compiler
- ; create named entry in the dictionary, XT is the data field
- VE_CODE:
-000adc ff04 .dw $ff04
-000add 6f63
-000ade 6564 .db "code"
-000adf 0acd .dw VE_HEAD
- .set VE_HEAD = VE_CODE
- XT_CODE:
-000ae0 3801 .dw DO_COLON
- PFA_CODE:
-000ae1 0739 .dw XT_DOCREATE
-000ae2 0899 .dw XT_REVEAL
-000ae3 3f12 .dw XT_DP
-000ae4 01d1 .dw XT_ICELLPLUS
-000ae5 0767 .dw XT_COMMA
-000ae6 3820 .dw XT_EXIT
- .include "words/end-code.asm"
-
- ; Compiler
- ; finish a code definition
- VE_ENDCODE:
-000ae7 ff08 .dw $ff08
-000ae8 6e65
-000ae9 2d64
-000aea 6f63
-000aeb 6564 .db "end-code"
-000aec 0adc .dw VE_HEAD
- .set VE_HEAD = VE_ENDCODE
- XT_ENDCODE:
-000aed 3801 .dw DO_COLON
- PFA_ENDCODE:
-000aee 075c .dw XT_COMPILE
-000aef 940c .dw $940c
-000af0 075c .dw XT_COMPILE
-000af1 3805 .dw DO_NEXT
-000af2 3820 .dw XT_EXIT
- .include "words/marker.asm"
-
- ; System Value
- ; The eeprom address until which MARKER saves and restores the eeprom data.
- VE_MARKER:
-000af3 ff08 .dw $ff08
-000af4 6d28
-000af5 7261
-000af6 656b
-000af7 2972 .db "(marker)"
-000af8 0ae7 .dw VE_HEAD
- .set VE_HEAD = VE_MARKER
- XT_MARKER:
-000af9 386f .dw PFA_DOVALUE1
- PFA_MARKER:
-000afa 0068 .dw EE_MARKER
-000afb 3da0 .dw XT_EDEFERFETCH
-000afc 3daa .dw XT_EDEFERSTORE
- .include "words/postpone.asm"
-
- ; Compiler
- ; Append the compilation semantics of "name" to the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_POSTPONE:
-000afd 0008 .dw $0008
-000afe 6f70
-000aff 7473
-000b00 6f70
-000b01 656e .db "postpone"
-000b02 0af3 .dw VE_HEAD
- .set VE_HEAD = VE_POSTPONE
- XT_POSTPONE:
-000b03 3801 .dw DO_COLON
- PFA_POSTPONE:
- .endif
-000b04 05bb .dw XT_PARSENAME
-000b05 05fe .dw XT_FORTHRECOGNIZER
-000b06 0609 .dw XT_RECOGNIZE
-000b07 38b1 .dw XT_DUP
-000b08 38ff .dw XT_TO_R
-000b09 01d1 .dw XT_ICELLPLUS
-000b0a 01d1 .dw XT_ICELLPLUS
-000b0b 3bcb .dw XT_FETCHI
-000b0c 382a .dw XT_EXECUTE
-000b0d 38f6 .dw XT_R_FROM
-000b0e 01d1 .dw XT_ICELLPLUS
-000b0f 3bcb .dw XT_FETCHI
-000b10 0767 .dw XT_COMMA
-000b11 3820 .dw XT_EXIT
- .endif
- .include "words/2r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_2R_FETCH:
-000b12 ff03 .dw $ff03
-000b13 7232
-000b14 0040 .db "2r@",0
-000b15 0afd .dw VE_HEAD
- .set VE_HEAD = VE_2R_FETCH
- XT_2R_FETCH:
-000b16 0b17 .dw PFA_2R_FETCH
- PFA_2R_FETCH:
-000b17 939a
-000b18 938a savetos
-000b19 91ef pop zl
-000b1a 91ff pop zh
-000b1b 918f pop tosl
-000b1c 919f pop tosh
-000b1d 939f push tosh
-000b1e 938f push tosl
-000b1f 93ff push zh
-000b20 93ef push zl
-000b21 939a
-000b22 938a savetos
-000b23 01cf movw tosl, zl
-000b24 940c 3805 jmp_ DO_NEXT
-
- .set DPSTART = pc
- .if(pc>AMFORTH_RO_SEG)
- .endif
-
- .org AMFORTH_RO_SEG
- .include "amforth-interpreter.asm"
-
-
- DO_COLON:
-003801 93bf push XH
-003802 93af push XL ; PUSH IP
-003803 01db movw XL, wl
-003804 9611 adiw xl, 1
- DO_NEXT:
- .if WANT_INTERRUPTS == 1
-003805 14b2 cp isrflag, zerol
-003806 f469 brne DO_INTERRUPT
- .endif
-003807 01fd movw zl, XL ; READ IP
-003808 0fee
-003809 1fff
-00380a 9165
-00380b 9175 readflashcell wl, wh
-00380c 9611 adiw XL, 1 ; INC IP
-
- DO_EXECUTE:
-00380d 01fb movw zl, wl
-00380e 0fee
-00380f 1fff
-003810 9105
-003811 9115 readflashcell temp0,temp1
-003812 01f8 movw zl, temp0
-003813 9409 ijmp
-
- .if WANT_INTERRUPTS == 1
- DO_INTERRUPT:
- ; here we deal with interrupts the forth way
-003814 939a
-003815 938a savetos
-003816 2d8b mov tosl, isrflag
-003817 2799 clr tosh
-003818 24bb clr isrflag
-003819 ec60 ldi wl, LOW(XT_ISREXEC)
-00381a e37c ldi wh, HIGH(XT_ISREXEC)
-00381b cff1 rjmp DO_EXECUTE
- .include "dict/nrww.inc"
-
- ; section together with the forth inner interpreter
-
- .include "words/exit.asm"
-
- ; Compiler
- ; end of current colon word
- VE_EXIT:
-00381c ff04 .dw $ff04
-00381d 7865
-00381e 7469 .db "exit"
-00381f 0b12 .dw VE_HEAD
- .set VE_HEAD = VE_EXIT
- XT_EXIT:
-003820 3821 .dw PFA_EXIT
- PFA_EXIT:
-003821 91af pop XL
-003822 91bf pop XH
-003823 cfe1 jmp_ DO_NEXT
- .include "words/execute.asm"
-
- ; System
- ; execute XT
- VE_EXECUTE:
-003824 ff07 .dw $ff07
-003825 7865
-003826 6365
-003827 7475
-003828 0065 .db "execute",0
-003829 381c .dw VE_HEAD
- .set VE_HEAD = VE_EXECUTE
- XT_EXECUTE:
-00382a 382b .dw PFA_EXECUTE
- PFA_EXECUTE:
-00382b 01bc movw wl, tosl
-00382c 9189
-00382d 9199 loadtos
-00382e cfde jmp_ DO_EXECUTE
- .include "words/dobranch.asm"
-
- ; System
- ; runtime of branch
- ;VE_DOBRANCH:
- ; .dw $ff08
- ; .db "(branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOBRANCH
- XT_DOBRANCH:
-00382f 3830 .dw PFA_DOBRANCH
- PFA_DOBRANCH:
-003830 01fd movw zl, XL
-003831 0fee
-003832 1fff
-003833 91a5
-003834 91b5 readflashcell XL,XH
-003835 cfcf jmp_ DO_NEXT
- .include "words/docondbranch.asm"
-
- ; System
- ; runtime of ?branch
- ;VE_DOCONDBRANCH:
- ; .dw $ff09
- ; .db "(?branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONDBRANCH
- XT_DOCONDBRANCH:
-003836 3837 .dw PFA_DOCONDBRANCH
- PFA_DOCONDBRANCH:
-003837 2b98 or tosh, tosl
-003838 9189
-003839 9199 loadtos
-00383a f3a9 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch
-00383b 9611 adiw XL, 1
-00383c cfc8 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/doliteral.asm"
-
- ; System
- ; runtime of literal
- ;VE_DOLITERAL:
- ; .dw $ff09
- ; .db "(literal)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLITERAL
- XT_DOLITERAL:
-00383d 383e .dw PFA_DOLITERAL
- PFA_DOLITERAL:
-00383e 939a
-00383f 938a savetos
-003840 01fd movw zl, xl
-003841 0fee
-003842 1fff
-003843 9185
-003844 9195 readflashcell tosl,tosh
-003845 9611 adiw xl, 1
-003846 cfbe jmp_ DO_NEXT
-
- .include "words/dovariable.asm"
-
- ; System
- ; puts content of parameter field (1 cell) to TOS
- ;VE_DOVARIABLE:
- ; .dw $ff0a
- ; .db "(variable)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOVARIABLE
- XT_DOVARIABLE:
-003847 3848 .dw PFA_DOVARIABLE
- PFA_DOVARIABLE:
-003848 939a
-003849 938a savetos
-00384a 01fb movw zl, wl
-00384b 9631 adiw zl,1
-00384c 0fee
-00384d 1fff
-00384e 9185
-00384f 9195 readflashcell tosl,tosh
-003850 cfb4 jmp_ DO_NEXT
- .include "words/doconstant.asm"
-
- ; System
- ; place data field address on TOS
- ;VE_DOCONSTANT:
- ; .dw $ff0a
- ; .db "(constant)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONSTANT
- XT_DOCONSTANT:
-003851 3852 .dw PFA_DOCONSTANT
- PFA_DOCONSTANT:
-003852 939a
-003853 938a savetos
-003854 01cb movw tosl, wl
-003855 9601 adiw tosl, 1
-003856 cfae jmp_ DO_NEXT
- .include "words/douser.asm"
-
- ; System
- ; runtime part of user
- ;VE_DOUSER:
- ; .dw $ff06
- ; .db "(user)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOUSER
- XT_DOUSER:
-003857 3858 .dw PFA_DOUSER
- PFA_DOUSER:
-003858 939a
-003859 938a savetos
-00385a 01fb movw zl, wl
-00385b 9631 adiw zl, 1
-00385c 0fee
-00385d 1fff
-00385e 9185
-00385f 9195 readflashcell tosl,tosh
-003860 0d84 add tosl, upl
-003861 1d95 adc tosh, uph
-003862 cfa2 jmp_ DO_NEXT
- .include "words/do-value.asm"
-
- ; System
- ; runtime of value
- VE_DOVALUE:
-003863 ff07 .dw $ff07
-003864 7628
-003865 6c61
-003866 6575
-003867 0029 .db "(value)", 0
-003868 3824 .dw VE_HEAD
- .set VE_HEAD = VE_DOVALUE
- XT_DOVALUE:
-003869 3801 .dw DO_COLON
- PFA_DOVALUE:
-00386a 0739 .dw XT_DOCREATE
-00386b 0899 .dw XT_REVEAL
-00386c 075c .dw XT_COMPILE
-00386d 386f .dw PFA_DOVALUE1
-00386e 3820 .dw XT_EXIT
- PFA_DOVALUE1:
-00386f 940e 08b2 call_ DO_DODOES
-003871 38b1 .dw XT_DUP
-003872 01d1 .dw XT_ICELLPLUS
-003873 3bcb .dw XT_FETCHI
-003874 382a .dw XT_EXECUTE
-003875 3820 .dw XT_EXIT
-
- ; : (value) <builds does> dup icell+ @i execute ;
- .include "words/fetch.asm"
-
- ; Memory
- ; read 1 cell from RAM address
- VE_FETCH:
-003876 ff01 .dw $ff01
-003877 0040 .db "@",0
-003878 3863 .dw VE_HEAD
- .set VE_HEAD = VE_FETCH
- XT_FETCH:
-003879 387a .dw PFA_FETCH
- PFA_FETCH:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHRAM:
-00387a 01fc movw zl, tosl
- ; low byte is read before the high byte
-00387b 9181 ld tosl, z+
-00387c 9191 ld tosh, z+
-00387d cf87 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store.asm"
-
- ; Memory
- ; write n to RAM memory at addr, low byte first
- VE_STORE:
-00387e ff01 .dw $ff01
-00387f 0021 .db "!",0
-003880 3876 .dw VE_HEAD
- .set VE_HEAD = VE_STORE
- XT_STORE:
-003881 3882 .dw PFA_STORE
- PFA_STORE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STORERAM:
-003882 01fc movw zl, tosl
-003883 9189
-003884 9199 loadtos
- ; the high byte is written before the low byte
-003885 8391 std Z+1, tosh
-003886 8380 std Z+0, tosl
-003887 9189
-003888 9199 loadtos
-003889 cf7b jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/cstore.asm"
-
- ; Memory
- ; store a single byte to RAM address
- VE_CSTORE:
-00388a ff02 .dw $ff02
-00388b 2163 .db "c!"
-00388c 387e .dw VE_HEAD
- .set VE_HEAD = VE_CSTORE
- XT_CSTORE:
-00388d 388e .dw PFA_CSTORE
- PFA_CSTORE:
-00388e 01fc movw zl, tosl
-00388f 9189
-003890 9199 loadtos
-003891 8380 st Z, tosl
-003892 9189
-003893 9199 loadtos
-003894 cf70 jmp_ DO_NEXT
- .include "words/cfetch.asm"
-
- ; Memory
- ; fetch a single byte from memory mapped locations
- VE_CFETCH:
-003895 ff02 .dw $ff02
-003896 4063 .db "c@"
-003897 388a .dw VE_HEAD
- .set VE_HEAD = VE_CFETCH
- XT_CFETCH:
-003898 3899 .dw PFA_CFETCH
- PFA_CFETCH:
-003899 01fc movw zl, tosl
-00389a 2799 clr tosh
-00389b 8180 ld tosl, Z
-00389c cf68 jmp_ DO_NEXT
- .include "words/fetch-u.asm"
-
- ; Memory
- ; read 1 cell from USER area
- VE_FETCHU:
-00389d ff02 .dw $ff02
-00389e 7540 .db "@u"
-00389f 3895 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHU
- XT_FETCHU:
-0038a0 3801 .dw DO_COLON
- PFA_FETCHU:
-0038a1 3b02 .dw XT_UP_FETCH
-0038a2 399d .dw XT_PLUS
-0038a3 3879 .dw XT_FETCH
-0038a4 3820 .dw XT_EXIT
- .include "words/store-u.asm"
-
- ; Memory
- ; write n to USER area at offset
- VE_STOREU:
-0038a5 ff02 .dw $ff02
-0038a6 7521 .db "!u"
-0038a7 389d .dw VE_HEAD
- .set VE_HEAD = VE_STOREU
- XT_STOREU:
-0038a8 3801 .dw DO_COLON
- PFA_STOREU:
-0038a9 3b02 .dw XT_UP_FETCH
-0038aa 399d .dw XT_PLUS
-0038ab 3881 .dw XT_STORE
-0038ac 3820 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/dup.asm"
-
- ; Stack
- ; duplicate TOS
- VE_DUP:
-0038ad ff03 .dw $ff03
-0038ae 7564
-0038af 0070 .db "dup",0
-0038b0 38a5 .dw VE_HEAD
- .set VE_HEAD = VE_DUP
- XT_DUP:
-0038b1 38b2 .dw PFA_DUP
- PFA_DUP:
-0038b2 939a
-0038b3 938a savetos
-0038b4 cf50 jmp_ DO_NEXT
- .include "words/qdup.asm"
-
- ; Stack
- ; duplicate TOS if non-zero
- VE_QDUP:
-0038b5 ff04 .dw $ff04
-0038b6 643f
-0038b7 7075 .db "?dup"
-0038b8 38ad .dw VE_HEAD
- .set VE_HEAD = VE_QDUP
- XT_QDUP:
-0038b9 38ba .dw PFA_QDUP
- PFA_QDUP:
-0038ba 2f08 mov temp0, tosl
-0038bb 2b09 or temp0, tosh
-0038bc f011 breq PFA_QDUP1
-0038bd 939a
-0038be 938a savetos
- PFA_QDUP1:
-0038bf cf45 jmp_ DO_NEXT
- .include "words/swap.asm"
-
- ; Stack
- ; swaps the two top level stack cells
- VE_SWAP:
-0038c0 ff04 .dw $ff04
-0038c1 7773
-0038c2 7061 .db "swap"
-0038c3 38b5 .dw VE_HEAD
- .set VE_HEAD = VE_SWAP
- XT_SWAP:
-0038c4 38c5 .dw PFA_SWAP
- PFA_SWAP:
-0038c5 018c movw temp0, tosl
-0038c6 9189
-0038c7 9199 loadtos
-0038c8 931a st -Y, temp1
-0038c9 930a st -Y, temp0
-0038ca cf3a jmp_ DO_NEXT
- .include "words/over.asm"
-
- ; Stack
- ; Place a copy of x1 on top of the stack
- VE_OVER:
-0038cb ff04 .dw $ff04
-0038cc 766f
-0038cd 7265 .db "over"
-0038ce 38c0 .dw VE_HEAD
- .set VE_HEAD = VE_OVER
- XT_OVER:
-0038cf 38d0 .dw PFA_OVER
- PFA_OVER:
-0038d0 939a
-0038d1 938a savetos
-0038d2 818a ldd tosl, Y+2
-0038d3 819b ldd tosh, Y+3
-
-0038d4 cf30 jmp_ DO_NEXT
- .include "words/drop.asm"
-
- ; Stack
- ; drop TOS
- VE_DROP:
-0038d5 ff04 .dw $ff04
-0038d6 7264
-0038d7 706f .db "drop"
-0038d8 38cb .dw VE_HEAD
- .set VE_HEAD = VE_DROP
- XT_DROP:
-0038d9 38da .dw PFA_DROP
- PFA_DROP:
-0038da 9189
-0038db 9199 loadtos
-0038dc cf28 jmp_ DO_NEXT
- .include "words/rot.asm"
-
- ; Stack
- ; rotate the three top level cells
- VE_ROT:
-0038dd ff03 .dw $ff03
-0038de 6f72
-0038df 0074 .db "rot",0
-0038e0 38d5 .dw VE_HEAD
- .set VE_HEAD = VE_ROT
- XT_ROT:
-0038e1 38e2 .dw PFA_ROT
- PFA_ROT:
-0038e2 018c movw temp0, tosl
-0038e3 9129 ld temp2, Y+
-0038e4 9139 ld temp3, Y+
-0038e5 9189
-0038e6 9199 loadtos
-
-0038e7 933a st -Y, temp3
-0038e8 932a st -Y, temp2
-0038e9 931a st -Y, temp1
-0038ea 930a st -Y, temp0
-
-0038eb cf19 jmp_ DO_NEXT
- .include "words/nip.asm"
-
- ; Stack
- ; Remove Second of Stack
- VE_NIP:
-0038ec ff03 .dw $ff03
-0038ed 696e
-0038ee 0070 .db "nip",0
-0038ef 38dd .dw VE_HEAD
- .set VE_HEAD = VE_NIP
- XT_NIP:
-0038f0 38f1 .dw PFA_NIP
- PFA_NIP:
-0038f1 9622 adiw yl, 2
-0038f2 cf12 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/r_from.asm"
-
- ; Stack
- ; move TOR to TOS
- VE_R_FROM:
-0038f3 ff02 .dw $ff02
-0038f4 3e72 .db "r>"
-0038f5 38ec .dw VE_HEAD
- .set VE_HEAD = VE_R_FROM
- XT_R_FROM:
-0038f6 38f7 .dw PFA_R_FROM
- PFA_R_FROM:
-0038f7 939a
-0038f8 938a savetos
-0038f9 918f pop tosl
-0038fa 919f pop tosh
-0038fb cf09 jmp_ DO_NEXT
- .include "words/to_r.asm"
-
- ; Stack
- ; move TOS to TOR
- VE_TO_R:
-0038fc ff02 .dw $ff02
-0038fd 723e .db ">r"
-0038fe 38f3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_R
- XT_TO_R:
-0038ff 3900 .dw PFA_TO_R
- PFA_TO_R:
-003900 939f push tosh
-003901 938f push tosl
-003902 9189
-003903 9199 loadtos
-003904 cf00 jmp_ DO_NEXT
- .include "words/r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_R_FETCH:
-003905 ff02 .dw $ff02
-003906 4072 .db "r@"
-003907 38fc .dw VE_HEAD
- .set VE_HEAD = VE_R_FETCH
- XT_R_FETCH:
-003908 3909 .dw PFA_R_FETCH
- PFA_R_FETCH:
-003909 939a
-00390a 938a savetos
-00390b 918f pop tosl
-00390c 919f pop tosh
-00390d 939f push tosh
-00390e 938f push tosl
-00390f cef5 jmp_ DO_NEXT
-
-
- .include "words/not-equal.asm"
-
- ; Compare
- ; true if n1 is not equal to n2
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOTEQUAL:
-003910 ff02 .dw $ff02
-003911 3e3c .db "<>"
-003912 3905 .dw VE_HEAD
- .set VE_HEAD = VE_NOTEQUAL
- XT_NOTEQUAL:
-003913 3801 .dw DO_COLON
- PFA_NOTEQUAL:
- .endif
-
-003914 3fdf
-003915 391a
-003916 3820 .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT
- .include "words/equalzero.asm"
-
- ; Compare
- ; compare with 0 (zero)
- VE_ZEROEQUAL:
-003917 ff02 .dw $ff02
-003918 3d30 .db "0="
-003919 3910 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROEQUAL
- XT_ZEROEQUAL:
-00391a 391b .dw PFA_ZEROEQUAL
- PFA_ZEROEQUAL:
-00391b 2b98 or tosh, tosl
-00391c f5d1 brne PFA_ZERO1
-00391d c030 rjmp PFA_TRUE1
- .include "words/lesszero.asm"
-
- ; Compare
- ; compare with zero
- VE_ZEROLESS:
-00391e ff02 .dw $ff02
-00391f 3c30 .db "0<"
-003920 3917 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROLESS
- XT_ZEROLESS:
-003921 3922 .dw PFA_ZEROLESS
- PFA_ZEROLESS:
-003922 fd97 sbrc tosh,7
-003923 c02a rjmp PFA_TRUE1
-003924 c032 rjmp PFA_ZERO1
- .include "words/greaterzero.asm"
-
- ; Compare
- ; true if n1 is greater than 0
- VE_GREATERZERO:
-003925 ff02 .dw $ff02
-003926 3e30 .db "0>"
-003927 391e .dw VE_HEAD
- .set VE_HEAD = VE_GREATERZERO
- XT_GREATERZERO:
-003928 3929 .dw PFA_GREATERZERO
- PFA_GREATERZERO:
-003929 1582 cp tosl, zerol
-00392a 0593 cpc tosh, zeroh
-00392b f15c brlt PFA_ZERO1
-00392c f151 brbs 1, PFA_ZERO1
-00392d c020 rjmp PFA_TRUE1
- .include "words/d-greaterzero.asm"
-
- ; Compare
- ; compares if a double double cell number is greater 0
- VE_DGREATERZERO:
-00392e ff03 .dw $ff03
-00392f 3064
-003930 003e .db "d0>",0
-003931 3925 .dw VE_HEAD
- .set VE_HEAD = VE_DGREATERZERO
- XT_DGREATERZERO:
-003932 3933 .dw PFA_DGREATERZERO
- PFA_DGREATERZERO:
-003933 1582 cp tosl, zerol
-003934 0593 cpc tosh, zeroh
-003935 9189
-003936 9199 loadtos
-003937 0582 cpc tosl, zerol
-003938 0593 cpc tosh, zeroh
-003939 f0ec brlt PFA_ZERO1
-00393a f0e1 brbs 1, PFA_ZERO1
-00393b c012 rjmp PFA_TRUE1
- .include "words/d-lesszero.asm"
-
- ; Compare
- ; compares if a double double cell number is less than 0
- VE_DXT_ZEROLESS:
-00393c ff03 .dw $ff03
-00393d 3064
-00393e 003c .db "d0<",0
-00393f 392e .dw VE_HEAD
- .set VE_HEAD = VE_DXT_ZEROLESS
- XT_DXT_ZEROLESS:
-003940 3941 .dw PFA_DXT_ZEROLESS
- PFA_DXT_ZEROLESS:
-003941 9622 adiw Y,2
-003942 fd97 sbrc tosh,7
-003943 940c 394e jmp PFA_TRUE1
-003945 940c 3957 jmp PFA_ZERO1
-
- .include "words/true.asm"
-
- ; Arithmetics
- ; leaves the value -1 (true) on TOS
- VE_TRUE:
-003947 ff04 .dw $ff04
-003948 7274
-003949 6575 .db "true"
-00394a 393c .dw VE_HEAD
- .set VE_HEAD = VE_TRUE
- XT_TRUE:
-00394b 394c .dw PFA_TRUE
- PFA_TRUE:
-00394c 939a
-00394d 938a savetos
- PFA_TRUE1:
-00394e ef8f ser tosl
-00394f ef9f ser tosh
-003950 ceb4 jmp_ DO_NEXT
- .include "words/zero.asm"
-
- ; Arithmetics
- ; place a value 0 on TOS
- VE_ZERO:
-003951 ff01 .dw $ff01
-003952 0030 .db "0",0
-003953 3947 .dw VE_HEAD
- .set VE_HEAD = VE_ZERO
- XT_ZERO:
-003954 3955 .dw PFA_ZERO
- PFA_ZERO:
-003955 939a
-003956 938a savetos
- PFA_ZERO1:
-003957 01c1 movw tosl, zerol
-003958 ceac jmp_ DO_NEXT
- .include "words/uless.asm"
-
- ; Compare
- ; true if u1 < u2 (unsigned)
- VE_ULESS:
-003959 ff02 .dw $ff02
-00395a 3c75 .db "u<"
-00395b 3951 .dw VE_HEAD
- .set VE_HEAD = VE_ULESS
- XT_ULESS:
-00395c 395d .dw PFA_ULESS
- PFA_ULESS:
-00395d 9129 ld temp2, Y+
-00395e 9139 ld temp3, Y+
-00395f 1782 cp tosl, temp2
-003960 0793 cpc tosh, temp3
-003961 f3a8 brlo PFA_ZERO1
-003962 f3a1 brbs 1, PFA_ZERO1
-003963 cfea jmp_ PFA_TRUE1
- .include "words/u-greater.asm"
-
- ; Compare
- ; true if u1 > u2 (unsigned)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UGREATER:
-003964 ff02 .dw $ff02
-003965 3e75 .db "u>"
-003966 3959 .dw VE_HEAD
- .set VE_HEAD = VE_UGREATER
- XT_UGREATER:
-003967 3801 .dw DO_COLON
- PFA_UGREATER:
- .endif
-003968 38c4 .DW XT_SWAP
-003969 395c .dw XT_ULESS
-00396a 3820 .dw XT_EXIT
- .include "words/less.asm"
-
- ; Compare
- ; true if n1 is less than n2
- VE_LESS:
-00396b ff01 .dw $ff01
-00396c 003c .db "<",0
-00396d 3964 .dw VE_HEAD
- .set VE_HEAD = VE_LESS
- XT_LESS:
-00396e 396f .dw PFA_LESS
- PFA_LESS:
-00396f 9129 ld temp2, Y+
-003970 9139 ld temp3, Y+
-003971 1728 cp temp2, tosl
-003972 0739 cpc temp3, tosh
- PFA_LESSDONE:
-003973 f71c brge PFA_ZERO1
-003974 cfd9 rjmp PFA_TRUE1
- .include "words/greater.asm"
-
- ; Compare
- ; flag is true if n1 is greater than n2
- VE_GREATER:
-003975 ff01 .dw $ff01
-003976 003e .db ">",0
-003977 396b .dw VE_HEAD
- .set VE_HEAD = VE_GREATER
- XT_GREATER:
-003978 3979 .dw PFA_GREATER
- PFA_GREATER:
-003979 9129 ld temp2, Y+
-00397a 9139 ld temp3, Y+
-00397b 1728 cp temp2, tosl
-00397c 0739 cpc temp3, tosh
- PFA_GREATERDONE:
-00397d f2cc brlt PFA_ZERO1
-00397e f2c1 brbs 1, PFA_ZERO1
-00397f cfce rjmp PFA_TRUE1
-
- .include "words/log2.asm"
-
- ; Arithmetics
- ; logarithm to base 2 or highest set bitnumber
- VE_LOG2:
-003980 ff04 .dw $ff04
-003981 6f6c
-003982 3267 .db "log2"
-003983 3975 .dw VE_HEAD
- .set VE_HEAD = VE_LOG2
- XT_LOG2:
-003984 3985 .dw PFA_LOG2
- PFA_LOG2:
-003985 01fc movw zl, tosl
-003986 2799 clr tosh
-003987 e180 ldi tosl, 16
- PFA_LOG2_1:
-003988 958a dec tosl
-003989 f022 brmi PFA_LOG2_2 ; wrong data
-00398a 0fee lsl zl
-00398b 1fff rol zh
-00398c f7d8 brcc PFA_LOG2_1
-00398d ce77 jmp_ DO_NEXT
-
- PFA_LOG2_2:
-00398e 959a dec tosh
-00398f ce75 jmp_ DO_NEXT
- .include "words/minus.asm"
-
- ; Arithmetics
- ; subtract n2 from n1
- VE_MINUS:
-003990 ff01 .dw $ff01
-003991 002d .db "-",0
-003992 3980 .dw VE_HEAD
- .set VE_HEAD = VE_MINUS
- XT_MINUS:
-003993 3994 .dw PFA_MINUS
- PFA_MINUS:
-003994 9109 ld temp0, Y+
-003995 9119 ld temp1, Y+
-003996 1b08 sub temp0, tosl
-003997 0b19 sbc temp1, tosh
-003998 01c8 movw tosl, temp0
-003999 ce6b jmp_ DO_NEXT
- .include "words/plus.asm"
-
- ; Arithmetics
- ; add n1 and n2
- VE_PLUS:
-00399a ff01 .dw $ff01
-00399b 002b .db "+",0
-00399c 3990 .dw VE_HEAD
- .set VE_HEAD = VE_PLUS
- XT_PLUS:
-00399d 399e .dw PFA_PLUS
- PFA_PLUS:
-00399e 9109 ld temp0, Y+
-00399f 9119 ld temp1, Y+
-0039a0 0f80 add tosl, temp0
-0039a1 1f91 adc tosh, temp1
-0039a2 ce62 jmp_ DO_NEXT
- .include "words/mstar.asm"
-
- ; Arithmetics
- ; multiply 2 cells to a double cell
- VE_MSTAR:
-0039a3 ff02 .dw $ff02
-0039a4 2a6d .db "m*"
-0039a5 399a .dw VE_HEAD
- .set VE_HEAD = VE_MSTAR
- XT_MSTAR:
-0039a6 39a7 .dw PFA_MSTAR
- PFA_MSTAR:
-0039a7 018c movw temp0, tosl
-0039a8 9189
-0039a9 9199 loadtos
-0039aa 019c movw temp2, tosl
- ; high cell ah*bh
-0039ab 0231 muls temp3, temp1
-0039ac 0170 movw temp4, r0
- ; low cell al*bl
-0039ad 9f20 mul temp2, temp0
-0039ae 01c0 movw tosl, r0
- ; signed ah*bl
-0039af 0330 mulsu temp3, temp0
-0039b0 08f3 sbc temp5, zeroh
-0039b1 0d90 add tosh, r0
-0039b2 1ce1 adc temp4, r1
-0039b3 1cf3 adc temp5, zeroh
-
- ; signed al*bh
-0039b4 0312 mulsu temp1, temp2
-0039b5 08f3 sbc temp5, zeroh
-0039b6 0d90 add tosh, r0
-0039b7 1ce1 adc temp4, r1
-0039b8 1cf3 adc temp5, zeroh
-
-0039b9 939a
-0039ba 938a savetos
-0039bb 01c7 movw tosl, temp4
-0039bc ce48 jmp_ DO_NEXT
- .include "words/umslashmod.asm"
-
- ; Arithmetics
- ; unsigned division ud / u2 with remainder
- VE_UMSLASHMOD:
-0039bd ff06 .dw $ff06
-0039be 6d75
-0039bf 6d2f
-0039c0 646f .db "um/mod"
-0039c1 39a3 .dw VE_HEAD
- .set VE_HEAD = VE_UMSLASHMOD
- XT_UMSLASHMOD:
-0039c2 39c3 .dw PFA_UMSLASHMOD
- PFA_UMSLASHMOD:
-0039c3 017c movw temp4, tosl
-
-0039c4 9129 ld temp2, Y+
-0039c5 9139 ld temp3, Y+
-
-0039c6 9109 ld temp0, Y+
-0039c7 9119 ld temp1, Y+
-
- ;; unsigned 32/16 -> 16r16 divide
-
- PFA_UMSLASHMODmod:
-
- ; set loop counter
-0039c8 e140 ldi temp6,$10
-
- PFA_UMSLASHMODmod_loop:
- ; shift left, saving high bit
-0039c9 2755 clr temp7
-0039ca 0f00 lsl temp0
-0039cb 1f11 rol temp1
-0039cc 1f22 rol temp2
-0039cd 1f33 rol temp3
-0039ce 1f55 rol temp7
-
- ; try subtracting divisor
-0039cf 152e cp temp2, temp4
-0039d0 053f cpc temp3, temp5
-0039d1 0552 cpc temp7,zerol
-
-0039d2 f018 brcs PFA_UMSLASHMODmod_loop_control
-
- PFA_UMSLASHMODmod_subtract:
- ; dividend is large enough
- ; do the subtraction for real
- ; and set lowest bit
-0039d3 9503 inc temp0
-0039d4 192e sub temp2, temp4
-0039d5 093f sbc temp3, temp5
-
- PFA_UMSLASHMODmod_loop_control:
-0039d6 954a dec temp6
-0039d7 f789 brne PFA_UMSLASHMODmod_loop
-
- PFA_UMSLASHMODmod_done:
- ; put remainder on stack
-0039d8 933a st -Y,temp3
-0039d9 932a st -Y,temp2
-
- ; put quotient on stack
-0039da 01c8 movw tosl, temp0
-0039db ce29 jmp_ DO_NEXT
- .include "words/umstar.asm"
-
- ; Arithmetics
- ; multiply 2 unsigned cells to a double cell
- VE_UMSTAR:
-0039dc ff03 .dw $ff03
-0039dd 6d75
-0039de 002a .db "um*",0
-0039df 39bd .dw VE_HEAD
- .set VE_HEAD = VE_UMSTAR
- XT_UMSTAR:
-0039e0 39e1 .dw PFA_UMSTAR
- PFA_UMSTAR:
-0039e1 018c movw temp0, tosl
-0039e2 9189
-0039e3 9199 loadtos
- ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
- ; low bytes
-0039e4 9f80 mul tosl,temp0
-0039e5 01f0 movw zl, r0
-0039e6 2722 clr temp2
-0039e7 2733 clr temp3
- ; middle bytes
-0039e8 9f90 mul tosh, temp0
-0039e9 0df0 add zh, r0
-0039ea 1d21 adc temp2, r1
-0039eb 1d33 adc temp3, zeroh
-
-0039ec 9f81 mul tosl, temp1
-0039ed 0df0 add zh, r0
-0039ee 1d21 adc temp2, r1
-0039ef 1d33 adc temp3, zeroh
-
-0039f0 9f91 mul tosh, temp1
-0039f1 0d20 add temp2, r0
-0039f2 1d31 adc temp3, r1
-0039f3 01cf movw tosl, zl
-0039f4 939a
-0039f5 938a savetos
-0039f6 01c9 movw tosl, temp2
-0039f7 ce0d jmp_ DO_NEXT
-
- .include "words/invert.asm"
-
- ; Arithmetics
- ; 1-complement of TOS
- VE_INVERT:
-0039f8 ff06 .dw $ff06
-0039f9 6e69
-0039fa 6576
-0039fb 7472 .db "invert"
-0039fc 39dc .dw VE_HEAD
- .set VE_HEAD = VE_INVERT
- XT_INVERT:
-0039fd 39fe .dw PFA_INVERT
- PFA_INVERT:
-0039fe 9580 com tosl
-0039ff 9590 com tosh
-003a00 ce04 jmp_ DO_NEXT
- .include "words/2slash.asm"
-
- ; Arithmetics
- ; arithmetic shift right
- VE_2SLASH:
-003a01 ff02 .dw $ff02
-003a02 2f32 .db "2/"
-003a03 39f8 .dw VE_HEAD
- .set VE_HEAD = VE_2SLASH
- XT_2SLASH:
-003a04 3a05 .dw PFA_2SLASH
- PFA_2SLASH:
-003a05 9595 asr tosh
-003a06 9587 ror tosl
-003a07 cdfd jmp_ DO_NEXT
- .include "words/2star.asm"
-
- ; Arithmetics
- ; arithmetic shift left, filling with zero
- VE_2STAR:
-003a08 ff02 .dw $ff02
-003a09 2a32 .db "2*"
-003a0a 3a01 .dw VE_HEAD
- .set VE_HEAD = VE_2STAR
- XT_2STAR:
-003a0b 3a0c .dw PFA_2STAR
- PFA_2STAR:
-003a0c 0f88 lsl tosl
-003a0d 1f99 rol tosh
-003a0e cdf6 jmp_ DO_NEXT
- .include "words/and.asm"
-
- ; Logic
- ; bitwise and
- VE_AND:
-003a0f ff03 .dw $ff03
-003a10 6e61
-003a11 0064 .db "and",0
-003a12 3a08 .dw VE_HEAD
- .set VE_HEAD = VE_AND
- XT_AND:
-003a13 3a14 .dw PFA_AND
- PFA_AND:
-003a14 9109 ld temp0, Y+
-003a15 9119 ld temp1, Y+
-003a16 2380 and tosl, temp0
-003a17 2391 and tosh, temp1
-003a18 cdec jmp_ DO_NEXT
- .include "words/or.asm"
-
- ; Logic
- ; logical or
- VE_OR:
-003a19 ff02 .dw $ff02
-003a1a 726f .db "or"
-003a1b 3a0f .dw VE_HEAD
- .set VE_HEAD = VE_OR
- XT_OR:
-003a1c 3a1d .dw PFA_OR
- PFA_OR:
-003a1d 9109 ld temp0, Y+
-003a1e 9119 ld temp1, Y+
-003a1f 2b80 or tosl, temp0
-003a20 2b91 or tosh, temp1
-003a21 cde3 jmp_ DO_NEXT
-
- .include "words/xor.asm"
-
- ; Logic
- ; exclusive or
- VE_XOR:
-003a22 ff03 .dw $ff03
-003a23 6f78
-003a24 0072 .db "xor",0
-003a25 3a19 .dw VE_HEAD
- .set VE_HEAD = VE_XOR
- XT_XOR:
-003a26 3a27 .dw PFA_XOR
- PFA_XOR:
-003a27 9109 ld temp0, Y+
-003a28 9119 ld temp1, Y+
-003a29 2780 eor tosl, temp0
-003a2a 2791 eor tosh, temp1
-003a2b cdd9 jmp_ DO_NEXT
-
- .include "words/1plus.asm"
-
- ; Arithmetics
- ; optimized increment
- VE_1PLUS:
-003a2c ff02 .dw $ff02
-003a2d 2b31 .db "1+"
-003a2e 3a22 .dw VE_HEAD
- .set VE_HEAD = VE_1PLUS
- XT_1PLUS:
-003a2f 3a30 .dw PFA_1PLUS
- PFA_1PLUS:
-003a30 9601 adiw tosl,1
-003a31 cdd3 jmp_ DO_NEXT
- .include "words/1minus.asm"
-
- ; Arithmetics
- ; optimized decrement
- VE_1MINUS:
-003a32 ff02 .dw $ff02
-003a33 2d31 .db "1-"
-003a34 3a2c .dw VE_HEAD
- .set VE_HEAD = VE_1MINUS
- XT_1MINUS:
-003a35 3a36 .dw PFA_1MINUS
- PFA_1MINUS:
-003a36 9701 sbiw tosl, 1
-003a37 cdcd jmp_ DO_NEXT
- .include "words/q-negate.asm"
-
- ; 0< IF NEGATE THEN ; ...a common factor
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QNEGATE:
-003a38 ff07 .dw $ff07
-003a39 6e3f
-003a3a 6765
-003a3b 7461
-../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte
-003a3c 0065 .db "?negate"
-003a3d 3a32 .dw VE_HEAD
- .set VE_HEAD = VE_QNEGATE
- XT_QNEGATE:
-003a3e 3801 .dw DO_COLON
- PFA_QNEGATE:
-
- .endif
-003a3f 3921
-003a40 3836 .DW XT_ZEROLESS,XT_DOCONDBRANCH
-003a41 3a43 DEST(QNEG1)
-003a42 3e27 .DW XT_NEGATE
-003a43 3820 QNEG1: .DW XT_EXIT
- .include "words/lshift.asm"
-
- ; Arithmetics
- ; logically shift n1 left n2 times
- VE_LSHIFT:
-003a44 ff06 .dw $ff06
-003a45 736c
-003a46 6968
-003a47 7466 .db "lshift"
-003a48 3a38 .dw VE_HEAD
- .set VE_HEAD = VE_LSHIFT
- XT_LSHIFT:
-003a49 3a4a .dw PFA_LSHIFT
- PFA_LSHIFT:
-003a4a 01fc movw zl, tosl
-003a4b 9189
-003a4c 9199 loadtos
- PFA_LSHIFT1:
-003a4d 9731 sbiw zl, 1
-003a4e f01a brmi PFA_LSHIFT2
-003a4f 0f88 lsl tosl
-003a50 1f99 rol tosh
-003a51 cffb rjmp PFA_LSHIFT1
- PFA_LSHIFT2:
-003a52 cdb2 jmp_ DO_NEXT
-
- .include "words/rshift.asm"
-
- ; Arithmetics
- ; shift n1 n2-times logically right
- VE_RSHIFT:
-003a53 ff06 .dw $ff06
-003a54 7372
-003a55 6968
-003a56 7466 .db "rshift"
-003a57 3a44 .dw VE_HEAD
- .set VE_HEAD = VE_RSHIFT
- XT_RSHIFT:
-003a58 3a59 .dw PFA_RSHIFT
- PFA_RSHIFT:
-003a59 01fc movw zl, tosl
-003a5a 9189
-003a5b 9199 loadtos
- PFA_RSHIFT1:
-003a5c 9731 sbiw zl, 1
-003a5d f01a brmi PFA_RSHIFT2
-003a5e 9596 lsr tosh
-003a5f 9587 ror tosl
-003a60 cffb rjmp PFA_RSHIFT1
- PFA_RSHIFT2:
-003a61 cda3 jmp_ DO_NEXT
-
- .include "words/plusstore.asm"
-
- ; Arithmetics
- ; add n to content of RAM address a-addr
- VE_PLUSSTORE:
-003a62 ff02 .dw $ff02
-003a63 212b .db "+!"
-003a64 3a53 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSSTORE
- XT_PLUSSTORE:
-003a65 3a66 .dw PFA_PLUSSTORE
- PFA_PLUSSTORE:
-003a66 01fc movw zl, tosl
-003a67 9189
-003a68 9199 loadtos
-003a69 8120 ldd temp2, Z+0
-003a6a 8131 ldd temp3, Z+1
-003a6b 0f82 add tosl, temp2
-003a6c 1f93 adc tosh, temp3
-003a6d 8380 std Z+0, tosl
-003a6e 8391 std Z+1, tosh
-003a6f 9189
-003a70 9199 loadtos
-003a71 cd93 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/rpfetch.asm"
-
- ; Stack
- ; current return stack pointer address
- VE_RP_FETCH:
-003a72 ff03 .dw $ff03
-003a73 7072
-003a74 0040 .db "rp@",0
-003a75 3a62 .dw VE_HEAD
- .set VE_HEAD = VE_RP_FETCH
- XT_RP_FETCH:
-003a76 3a77 .dw PFA_RP_FETCH
- PFA_RP_FETCH:
-003a77 939a
-003a78 938a savetos
-003a79 b78d in tosl, SPL
-003a7a b79e in tosh, SPH
-003a7b cd89 jmp_ DO_NEXT
- .include "words/rpstore.asm"
-
- ; Stack
- ; set return stack pointer
- VE_RP_STORE:
-003a7c ff03 .dw $ff03
-003a7d 7072
-003a7e 0021 .db "rp!",0
-003a7f 3a72 .dw VE_HEAD
- .set VE_HEAD = VE_RP_STORE
- XT_RP_STORE:
-003a80 3a81 .dw PFA_RP_STORE
- PFA_RP_STORE:
-003a81 b72f in temp2, SREG
-003a82 94f8 cli
-003a83 bf8d out SPL, tosl
-003a84 bf9e out SPH, tosh
-003a85 bf2f out SREG, temp2
-003a86 9189
-003a87 9199 loadtos
-003a88 cd7c jmp_ DO_NEXT
- .include "words/spfetch.asm"
-
- ; Stack
- ; current data stack pointer
- VE_SP_FETCH:
-003a89 ff03 .dw $ff03
-003a8a 7073
-003a8b 0040 .db "sp@",0
-003a8c 3a7c .dw VE_HEAD
- .set VE_HEAD = VE_SP_FETCH
- XT_SP_FETCH:
-003a8d 3a8e .dw PFA_SP_FETCH
- PFA_SP_FETCH:
-003a8e 939a
-003a8f 938a savetos
-003a90 01ce movw tosl, yl
-003a91 cd73 jmp_ DO_NEXT
- .include "words/spstore.asm"
-
- ; Stack
- ; set data stack pointer to addr
- VE_SP_STORE:
-003a92 ff03 .dw $ff03
-003a93 7073
-003a94 0021 .db "sp!",0
-003a95 3a89 .dw VE_HEAD
- .set VE_HEAD = VE_SP_STORE
- XT_SP_STORE:
-003a96 3a97 .dw PFA_SP_STORE
- PFA_SP_STORE:
-003a97 01ec movw yl, tosl
-003a98 9189
-003a99 9199 loadtos
-003a9a cd6a jmp_ DO_NEXT
-
- .include "words/dodo.asm"
-
- ; System
- ; runtime of do
- ;VE_DODO:
- ; .dw $ff04
- ; .db "(do)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DODO
- XT_DODO:
-003a9b 3a9c .dw PFA_DODO
- PFA_DODO:
-003a9c 9129 ld temp2, Y+
-003a9d 9139 ld temp3, Y+ ; limit
- PFA_DODO1:
-003a9e e8e0 ldi zl, $80
-003a9f 0f3e add temp3, zl
-003aa0 1b82 sub tosl, temp2
-003aa1 0b93 sbc tosh, temp3
-
-003aa2 933f push temp3
-003aa3 932f push temp2 ; limit ( --> limit + $8000)
-003aa4 939f push tosh
-003aa5 938f push tosl ; start -> index ( --> index - (limit - $8000)
-003aa6 9189
-003aa7 9199 loadtos
-003aa8 cd5c jmp_ DO_NEXT
- .include "words/i.asm"
-
- ; Compiler
- ; current loop counter
- VE_I:
-003aa9 ff01 .dw $FF01
-003aaa 0069 .db "i",0
-003aab 3a92 .dw VE_HEAD
- .set VE_HEAD = VE_I
- XT_I:
-003aac 3aad .dw PFA_I
- PFA_I:
-003aad 939a
-003aae 938a savetos
-003aaf 918f pop tosl
-003ab0 919f pop tosh ; index
-003ab1 91ef pop zl
-003ab2 91ff pop zh ; limit
-003ab3 93ff push zh
-003ab4 93ef push zl
-003ab5 939f push tosh
-003ab6 938f push tosl
-003ab7 0f8e add tosl, zl
-003ab8 1f9f adc tosh, zh
-003ab9 cd4b jmp_ DO_NEXT
- .include "words/doplusloop.asm"
-
- ; System
- ; runtime of +loop
- ;VE_DOPLUSLOOP:
- ; .dw $ff07
- ; .db "(+loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOPLUSLOOP
- XT_DOPLUSLOOP:
-003aba 3abb .dw PFA_DOPLUSLOOP
- PFA_DOPLUSLOOP:
-003abb 91ef pop zl
-003abc 91ff pop zh
-003abd 0fe8 add zl, tosl
-003abe 1ff9 adc zh, tosh
-003abf 9189
-003ac0 9199 loadtos
-003ac1 f01b brvs PFA_DOPLUSLOOP_LEAVE
- ; next cycle
- PFA_DOPLUSLOOP_NEXT:
- ; next iteration
-003ac2 93ff push zh
-003ac3 93ef push zl
-003ac4 cd6b rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
- PFA_DOPLUSLOOP_LEAVE:
-003ac5 910f pop temp0
-003ac6 911f pop temp1 ; remove limit
-003ac7 9611 adiw xl, 1 ; skip branch-back address
-003ac8 cd3c jmp_ DO_NEXT
- .include "words/doloop.asm"
-
- ; System
- ; runtime of loop
- ;VE_DOLOOP:
- ; .dw $ff06
- ; .db "(loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLOOP
- XT_DOLOOP:
-003ac9 3aca .dw PFA_DOLOOP
- PFA_DOLOOP:
-003aca 91ef pop zl
-003acb 91ff pop zh
-003acc 9631 adiw zl,1
-003acd f3bb brvs PFA_DOPLUSLOOP_LEAVE
-003ace cff3 jmp_ PFA_DOPLUSLOOP_NEXT
- .include "words/unloop.asm"
-
- ; Compiler
- ; remove loop-sys, exit the loop and continue execution after it
- VE_UNLOOP:
-003acf ff06 .dw $ff06
-003ad0 6e75
-003ad1 6f6c
-003ad2 706f .db "unloop"
-003ad3 3aa9 .dw VE_HEAD
- .set VE_HEAD = VE_UNLOOP
- XT_UNLOOP:
-003ad4 3ad5 .dw PFA_UNLOOP
- PFA_UNLOOP:
-003ad5 911f pop temp1
-003ad6 910f pop temp0
-003ad7 911f pop temp1
-003ad8 910f pop temp0
-003ad9 cd2b jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .include "words/cmove_g.asm"
-
- ; Memory
- ; copy data in RAM from higher to lower addresses.
- VE_CMOVE_G:
-003ada ff06 .dw $ff06
-003adb 6d63
-003adc 766f
-003add 3e65 .db "cmove>"
-003ade 3acf .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE_G
- XT_CMOVE_G:
-003adf 3ae0 .dw PFA_CMOVE_G
- PFA_CMOVE_G:
-003ae0 93bf push xh
-003ae1 93af push xl
-003ae2 91e9 ld zl, Y+
-003ae3 91f9 ld zh, Y+ ; addr-to
-003ae4 91a9 ld xl, Y+
-003ae5 91b9 ld xh, Y+ ; addr-from
-003ae6 2f09 mov temp0, tosh
-003ae7 2b08 or temp0, tosl
-003ae8 f041 brbs 1, PFA_CMOVE_G1
-003ae9 0fe8 add zl, tosl
-003aea 1ff9 adc zh, tosh
-003aeb 0fa8 add xl, tosl
-003aec 1fb9 adc xh, tosh
- PFA_CMOVE_G2:
-003aed 911e ld temp1, -X
-003aee 9312 st -Z, temp1
-003aef 9701 sbiw tosl, 1
-003af0 f7e1 brbc 1, PFA_CMOVE_G2
- PFA_CMOVE_G1:
-003af1 91af pop xl
-003af2 91bf pop xh
-003af3 9189
-003af4 9199 loadtos
-003af5 cd0f jmp_ DO_NEXT
- .include "words/byteswap.asm"
-
- ; Arithmetics
- ; exchange the bytes of the TOS
- VE_BYTESWAP:
-003af6 ff02 .dw $ff02
-003af7 3c3e .db "><"
-003af8 3ada .dw VE_HEAD
- .set VE_HEAD = VE_BYTESWAP
- XT_BYTESWAP:
-003af9 3afa .dw PFA_BYTESWAP
- PFA_BYTESWAP:
-003afa 2f09 mov temp0, tosh
-003afb 2f98 mov tosh, tosl
-003afc 2f80 mov tosl, temp0
-003afd cd07 jmp_ DO_NEXT
- .include "words/up.asm"
-
- ; System Variable
- ; get user area pointer
- VE_UP_FETCH:
-003afe ff03 .dw $ff03
-003aff 7075
-003b00 0040 .db "up@",0
-003b01 3af6 .dw VE_HEAD
- .set VE_HEAD = VE_UP_FETCH
- XT_UP_FETCH:
-003b02 3b03 .dw PFA_UP_FETCH
- PFA_UP_FETCH:
-003b03 939a
-003b04 938a savetos
-003b05 01c2 movw tosl, upl
-003b06 ccfe jmp_ DO_NEXT
-
- ; ( addr -- )
- ; System Variable
- ; set user area pointer
- VE_UP_STORE:
-003b07 ff03 .dw $ff03
-003b08 7075
-003b09 0021 .db "up!",0
-003b0a 3afe .dw VE_HEAD
- .set VE_HEAD = VE_UP_STORE
- XT_UP_STORE:
-003b0b 3b0c .dw PFA_UP_STORE
- PFA_UP_STORE:
-003b0c 012c movw upl, tosl
-003b0d 9189
-003b0e 9199 loadtos
-003b0f ccf5 jmp_ DO_NEXT
- .include "words/1ms.asm"
-
- ; Time
- ; busy waits (almost) exactly 1 millisecond
- VE_1MS:
-003b10 ff03 .dw $ff03
-003b11 6d31
-003b12 0073 .db "1ms",0
-003b13 3b07 .dw VE_HEAD
- .set VE_HEAD = VE_1MS
- XT_1MS:
-003b14 3b15 .dw PFA_1MS
- PFA_1MS:
-003b15 eae0
-003b16 e0ff
-003b17 9731
-003b18 f7f1 delay 1000
-003b19 cceb jmp_ DO_NEXT
- .include "words/2to_r.asm"
-
- ; Stack
- ; move DTOS to TOR
- VE_2TO_R:
-003b1a ff03 .dw $ff03
-003b1b 3e32
-003b1c 0072 .db "2>r",0
-003b1d 3b10 .dw VE_HEAD
- .set VE_HEAD = VE_2TO_R
- XT_2TO_R:
-003b1e 3b1f .dw PFA_2TO_R
- PFA_2TO_R:
-003b1f 01fc movw zl, tosl
-003b20 9189
-003b21 9199 loadtos
-003b22 939f push tosh
-003b23 938f push tosl
-003b24 93ff push zh
-003b25 93ef push zl
-003b26 9189
-003b27 9199 loadtos
-003b28 ccdc jmp_ DO_NEXT
- .include "words/2r_from.asm"
-
- ; Stack
- ; move DTOR to TOS
- VE_2R_FROM:
-003b29 ff03 .dw $ff03
-003b2a 7232
-003b2b 003e .db "2r>",0
-003b2c 3b1a .dw VE_HEAD
- .set VE_HEAD = VE_2R_FROM
- XT_2R_FROM:
-003b2d 3b2e .dw PFA_2R_FROM
- PFA_2R_FROM:
-003b2e 939a
-003b2f 938a savetos
-003b30 91ef pop zl
-003b31 91ff pop zh
-003b32 918f pop tosl
-003b33 919f pop tosh
-003b34 939a
-003b35 938a savetos
-003b36 01cf movw tosl, zl
-003b37 cccd jmp_ DO_NEXT
-
- .include "words/store-e.asm"
-
- ; Memory
- ; write n (2bytes) to eeprom address
- VE_STOREE:
-003b38 ff02 .dw $ff02
-003b39 6521 .db "!e"
-003b3a 3b29 .dw VE_HEAD
- .set VE_HEAD = VE_STOREE
- XT_STOREE:
-003b3b 3b3c .dw PFA_STOREE
- PFA_STOREE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STOREE0:
-003b3c 01fc movw zl, tosl
-003b3d 9189
-003b3e 9199 loadtos
-003b3f b72f in_ temp2, SREG
-003b40 94f8 cli
-003b41 d028 rcall PFA_FETCHE2
-003b42 b500 in_ temp0, EEDR
-003b43 1708 cp temp0,tosl
-003b44 f009 breq PFA_STOREE3
-003b45 d00b rcall PFA_STOREE1
- PFA_STOREE3:
-003b46 9631 adiw zl,1
-003b47 d022 rcall PFA_FETCHE2
-003b48 b500 in_ temp0, EEDR
-003b49 1709 cp temp0,tosh
-003b4a f011 breq PFA_STOREE4
-003b4b 2f89 mov tosl, tosh
-003b4c d004 rcall PFA_STOREE1
- PFA_STOREE4:
-003b4d bf2f out_ SREG, temp2
-003b4e 9189
-003b4f 9199 loadtos
-003b50 ccb4 jmp_ DO_NEXT
-
- PFA_STOREE1:
-003b51 99f9 sbic EECR, EEPE
-003b52 cffe rjmp PFA_STOREE1
-
- PFA_STOREE2: ; estore_wait_low_spm:
-003b53 b707 in_ temp0, SPMCSR
-003b54 fd00 sbrc temp0,SPMEN
-003b55 cffd rjmp PFA_STOREE2
-
-003b56 bdf2 out_ EEARH,zh
-003b57 bde1 out_ EEARL,zl
-003b58 bd80 out_ EEDR, tosl
-003b59 9afa sbi EECR,EEMPE
-003b5a 9af9 sbi EECR,EEPE
-
-003b5b 9508 ret
- .if WANT_UNIFIED == 1
- .endif
- .include "words/fetch-e.asm"
-
- ; Memory
- ; read 1 cell from eeprom
- VE_FETCHE:
-003b5c ff02 .dw $ff02
-003b5d 6540 .db "@e"
-003b5e 3b38 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHE
- XT_FETCHE:
-003b5f 3b60 .dw PFA_FETCHE
- PFA_FETCHE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHE1:
-003b60 b72f in_ temp2, SREG
-003b61 94f8 cli
-003b62 01fc movw zl, tosl
-003b63 d006 rcall PFA_FETCHE2
-003b64 b580 in_ tosl, EEDR
-
-003b65 9631 adiw zl,1
-
-003b66 d003 rcall PFA_FETCHE2
-003b67 b590 in_ tosh, EEDR
-003b68 bf2f out_ SREG, temp2
-003b69 cc9b jmp_ DO_NEXT
-
- PFA_FETCHE2:
-003b6a 99f9 sbic EECR, EEPE
-003b6b cffe rjmp PFA_FETCHE2
-
-003b6c bdf2 out_ EEARH,zh
-003b6d bde1 out_ EEARL,zl
-
-003b6e 9af8 sbi EECR,EERE
-003b6f 9508 ret
-
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store-i.asm"
-
- ; System Value
- ; Deferred action to write a single 16bit cell to flash
- VE_STOREI:
-003b70 ff02 .dw $ff02
-003b71 6921 .db "!i"
-003b72 3b5c .dw VE_HEAD
- .set VE_HEAD = VE_STOREI
- XT_STOREI:
-003b73 3dff .dw PFA_DODEFER1
- PFA_STOREI:
-003b74 0066 .dw EE_STOREI
-003b75 3da0 .dw XT_EDEFERFETCH
-003b76 3daa .dw XT_EDEFERSTORE
- .if FLASHEND > $10000
- .else
- .include "words/store-i_nrww.asm"
-
- ; Memory
- ; writes n to flash memory using assembly code (code to be placed in boot loader section)
- VE_DO_STOREI_NRWW:
-003b77 ff09 .dw $ff09
-003b78 2128
-003b79 2d69
-003b7a 726e
-003b7b 7777
-003b7c 0029 .db "(!i-nrww)",0
-003b7d 3b70 .dw VE_HEAD
- .set VE_HEAD = VE_DO_STOREI_NRWW
- XT_DO_STOREI:
-003b7e 3b7f .dw PFA_DO_STOREI_NRWW
- PFA_DO_STOREI_NRWW:
- ; store status register
-003b7f b71f in temp1,SREG
-003b80 931f push temp1
-003b81 94f8 cli
-
-003b82 019c movw temp2, tosl ; save the (word) address
-003b83 9189
-003b84 9199 loadtos ; get the new value for the flash cell
-003b85 93af push xl
-003b86 93bf push xh
-003b87 93cf push yl
-003b88 93df push yh
-003b89 d009 rcall DO_STOREI_atmega
-003b8a 91df pop yh
-003b8b 91cf pop yl
-003b8c 91bf pop xh
-003b8d 91af pop xl
- ; finally clear the stack
-003b8e 9189
-003b8f 9199 loadtos
-003b90 911f pop temp1
- ; restore status register (and interrupt enable flag)
-003b91 bf1f out SREG,temp1
-
-003b92 cc72 jmp_ DO_NEXT
-
- ;
- DO_STOREI_atmega:
- ; write data to temp page buffer
- ; use the values in tosl/tosh at the
- ; appropiate place
-003b93 d010 rcall pageload
-
- ; erase page if needed
- ; it is needed if a bit goes from 0 to 1
-003b94 94e0 com temp4
-003b95 94f0 com temp5
-003b96 218e and tosl, temp4
-003b97 219f and tosh, temp5
-003b98 2b98 or tosh, tosl
-003b99 f019 breq DO_STOREI_writepage
-003b9a 01f9 movw zl, temp2
-003b9b e002 ldi temp0,(1<<PGERS)
-003b9c d020 rcall dospm
-
- DO_STOREI_writepage:
- ; write page
-003b9d 01f9 movw zl, temp2
-003b9e e004 ldi temp0,(1<<PGWRT)
-003b9f d01d rcall dospm
-
- ; reenable RWW section
-003ba0 01f9 movw zl, temp2
-003ba1 e100 ldi temp0,(1<<RWWSRE)
-003ba2 d01a rcall dospm
-003ba3 9508 ret
-
- ; load the desired page
- .equ pagemask = ~ ( PAGESIZE - 1 )
- pageload:
-003ba4 01f9 movw zl, temp2
- ; get the beginning of page
-003ba5 7ce0 andi zl,low(pagemask)
-003ba6 7fff andi zh,high(pagemask)
-003ba7 01ef movw y, z
- ; loop counter (in words)
-003ba8 e4a0 ldi xl,low(pagesize)
-003ba9 e0b0 ldi xh,high(pagesize)
- pageload_loop:
- ; we need the current flash value anyways
-003baa 01fe movw z, y
-003bab 0fee
-003bac 1fff
-003bad 9145
-003bae 9155 readflashcell temp6, temp7 ; destroys Z
- ; now check: if Z points to the same cell as temp2/3, we want the new data
-003baf 01fe movw z, y
-003bb0 17e2 cp zl, temp2
-003bb1 07f3 cpc zh, temp3
-003bb2 f011 breq pageload_newdata
-003bb3 010a movw r0, temp6
-003bb4 c002 rjmp pageload_cont
- pageload_newdata:
-003bb5 017a movw temp4, temp6
-003bb6 010c movw r0, tosl
- pageload_cont:
-003bb7 2700 clr temp0
-003bb8 d004 rcall dospm
-003bb9 9621 adiw y, 1
-003bba 9711 sbiw x, 1
-003bbb f771 brne pageload_loop
-
- pageload_done:
-003bbc 9508 ret
-
-
- ;; dospm
- ;;
- ;; execute spm instruction
- ;; temp0 holds the value for SPMCR
-
- dospm:
- dospm_wait_ee:
-003bbd 99f9 sbic EECR, EEPE
-003bbe cffe rjmp dospm_wait_ee
- dospm_wait_spm:
-003bbf b717 in_ temp1, SPMCSR
-003bc0 fd10 sbrc temp1, SPMEN
-003bc1 cffd rjmp dospm_wait_spm
-
- ; turn the word addres into a byte address
-003bc2 0fee
-003bc3 1fff writeflashcell
- ; execute spm
-003bc4 6001 ori temp0, (1<<SPMEN)
-003bc5 bf07 out_ SPMCSR,temp0
-003bc6 95e8 spm
-003bc7 9508 ret
- .endif
- .include "words/fetch-i.asm"
-
- ; Memory
- ; read 1 cell from flash
- VE_FETCHI:
-003bc8 ff02 .dw $ff02
-003bc9 6940 .db "@i"
-003bca 3b77 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHI
- XT_FETCHI:
-003bcb 3bcc .dw PFA_FETCHI
- PFA_FETCHI:
-003bcc 01fc movw zl, tosl
-003bcd 0fee
-003bce 1fff
-003bcf 9185
-003bd0 9195 readflashcell tosl,tosh
-003bd1 cc33 jmp_ DO_NEXT
-
- .if AMFORTH_NRWW_SIZE>8000
- .elif AMFORTH_NRWW_SIZE>4000
- .include "dict/core_4k.inc"
-
- ; in a short distance to DO_NEXT
- .include "words/n_to_r.asm"
-
- ; Stack
- ; move n items from data stack to return stack
- VE_N_TO_R:
-003bd2 ff03 .dw $ff03
-003bd3 3e6e
-003bd4 0072 .db "n>r",0
-003bd5 3bc8 .dw VE_HEAD
- .set VE_HEAD = VE_N_TO_R
- XT_N_TO_R:
-003bd6 3bd7 .dw PFA_N_TO_R
- PFA_N_TO_R:
-003bd7 01fc movw zl, tosl
-003bd8 2f08 mov temp0, tosl
- PFA_N_TO_R1:
-003bd9 9189
-003bda 9199 loadtos
-003bdb 939f push tosh
-003bdc 938f push tosl
-003bdd 950a dec temp0
-003bde f7d1 brne PFA_N_TO_R1
-003bdf 93ef push zl
-003be0 93ff push zh
-003be1 9189
-003be2 9199 loadtos
-003be3 cc21 jmp_ DO_NEXT
- .include "words/n_r_from.asm"
-
- ; Stack
- ; move n items from return stack to data stack
- VE_N_R_FROM:
-003be4 ff03 .dw $ff03
-003be5 726e
-003be6 003e .db "nr>",0
-003be7 3bd2 .dw VE_HEAD
- .set VE_HEAD = VE_N_R_FROM
- XT_N_R_FROM:
-003be8 3be9 .dw PFA_N_R_FROM
- PFA_N_R_FROM:
-003be9 939a
-003bea 938a savetos
-003beb 91ff pop zh
-003bec 91ef pop zl
-003bed 2f0e mov temp0, zl
- PFA_N_R_FROM1:
-003bee 918f pop tosl
-003bef 919f pop tosh
-003bf0 939a
-003bf1 938a savetos
-003bf2 950a dec temp0
-003bf3 f7d1 brne PFA_N_R_FROM1
-003bf4 01cf movw tosl, zl
-003bf5 cc0f jmp_ DO_NEXT
- .include "words/d-2star.asm"
-
- ; Arithmetics
- ; shift a double cell left
- VE_D2STAR:
-003bf6 ff03 .dw $ff03
-003bf7 3264
-003bf8 002a .db "d2*",0
-003bf9 3be4 .dw VE_HEAD
- .set VE_HEAD = VE_D2STAR
- XT_D2STAR:
-003bfa 3bfb .dw PFA_D2STAR
- PFA_D2STAR:
-003bfb 9109 ld temp0, Y+
-003bfc 9119 ld temp1, Y+
-003bfd 0f00 lsl temp0
-003bfe 1f11 rol temp1
-003bff 1f88 rol tosl
-003c00 1f99 rol tosh
-003c01 931a st -Y, temp1
-003c02 930a st -Y, temp0
-003c03 cc01 jmp_ DO_NEXT
- .include "words/d-2slash.asm"
-
- ; Arithmetics
- ; shift a double cell value right
- VE_D2SLASH:
-003c04 ff03 .dw $ff03
-003c05 3264
-003c06 002f .db "d2/",0
-003c07 3bf6 .dw VE_HEAD
- .set VE_HEAD = VE_D2SLASH
- XT_D2SLASH:
-003c08 3c09 .dw PFA_D2SLASH
- PFA_D2SLASH:
-003c09 9109 ld temp0, Y+
-003c0a 9119 ld temp1, Y+
-003c0b 9595 asr tosh
-003c0c 9587 ror tosl
-003c0d 9517 ror temp1
-003c0e 9507 ror temp0
-003c0f 931a st -Y, temp1
-003c10 930a st -Y, temp0
-003c11 cbf3 jmp_ DO_NEXT
- .include "words/d-plus.asm"
-
- ; Arithmetics
- ; add 2 double cell values
- VE_DPLUS:
-003c12 ff02 .dw $ff02
-003c13 2b64 .db "d+"
-003c14 3c04 .dw VE_HEAD
- .set VE_HEAD = VE_DPLUS
- XT_DPLUS:
-003c15 3c16 .dw PFA_DPLUS
- PFA_DPLUS:
-003c16 9129 ld temp2, Y+
-003c17 9139 ld temp3, Y+
-
-003c18 90e9 ld temp4, Y+
-003c19 90f9 ld temp5, Y+
-003c1a 9149 ld temp6, Y+
-003c1b 9159 ld temp7, Y+
-
-003c1c 0f24 add temp2, temp6
-003c1d 1f35 adc temp3, temp7
-003c1e 1d8e adc tosl, temp4
-003c1f 1d9f adc tosh, temp5
-
-003c20 933a st -Y, temp3
-003c21 932a st -Y, temp2
-003c22 cbe2 jmp_ DO_NEXT
- .include "words/d-minus.asm"
-
- ; Arithmetics
- ; subtract d2 from d1
- VE_DMINUS:
-003c23 ff02 .dw $ff02
-003c24 2d64 .db "d-"
-003c25 3c12 .dw VE_HEAD
- .set VE_HEAD = VE_DMINUS
- XT_DMINUS:
-003c26 3c27 .dw PFA_DMINUS
- PFA_DMINUS:
-003c27 9129 ld temp2, Y+
-003c28 9139 ld temp3, Y+
-
-003c29 90e9 ld temp4, Y+
-003c2a 90f9 ld temp5, Y+
-003c2b 9149 ld temp6, Y+
-003c2c 9159 ld temp7, Y+
-
-003c2d 1b42 sub temp6, temp2
-003c2e 0b53 sbc temp7, temp3
-003c2f 0ae8 sbc temp4, tosl
-003c30 0af9 sbc temp5, tosh
-
-003c31 935a st -Y, temp7
-003c32 934a st -Y, temp6
-003c33 01c7 movw tosl, temp4
-003c34 cbd0 jmp_ DO_NEXT
- .include "words/d-invert.asm"
-
- ; Arithmetics
- ; invert all bits in the double cell value
- VE_DINVERT:
-003c35 ff07 .dw $ff07
-003c36 6964
-003c37 766e
-003c38 7265
-003c39 0074 .db "dinvert",0
-003c3a 3c23 .dw VE_HEAD
- .set VE_HEAD = VE_DINVERT
- XT_DINVERT:
-003c3b 3c3c .dw PFA_DINVERT
- PFA_DINVERT:
-003c3c 9109 ld temp0, Y+
-003c3d 9119 ld temp1, Y+
-003c3e 9580 com tosl
-003c3f 9590 com tosh
-003c40 9500 com temp0
-003c41 9510 com temp1
-003c42 931a st -Y, temp1
-003c43 930a st -Y, temp0
-003c44 cbc0 jmp_ DO_NEXT
- .include "words/slashmod.asm"
-
- ; Arithmetics
- ; signed division n1/n2 with remainder and quotient
- VE_SLASHMOD:
-003c45 ff04 .dw $ff04
-003c46 6d2f
-003c47 646f .db "/mod"
-003c48 3c35 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHMOD
- XT_SLASHMOD:
-003c49 3c4a .dw PFA_SLASHMOD
- PFA_SLASHMOD:
-003c4a 019c movw temp2, tosl
-
-003c4b 9109 ld temp0, Y+
-003c4c 9119 ld temp1, Y+
-
-003c4d 2f41 mov temp6,temp1 ;move dividend High to sign register
-003c4e 2743 eor temp6,temp3 ;xor divisor High with sign register
-003c4f ff17 sbrs temp1,7 ;if MSB in dividend set
-003c50 c004 rjmp PFA_SLASHMOD_1
-003c51 9510 com temp1 ; change sign of dividend
-003c52 9500 com temp0
-003c53 5f0f subi temp0,low(-1)
-003c54 4f1f sbci temp1,high(-1)
- PFA_SLASHMOD_1:
-003c55 ff37 sbrs temp3,7 ;if MSB in divisor set
-003c56 c004 rjmp PFA_SLASHMOD_2
-003c57 9530 com temp3 ; change sign of divisor
-003c58 9520 com temp2
-003c59 5f2f subi temp2,low(-1)
-003c5a 4f3f sbci temp3,high(-1)
-003c5b 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte
-003c5c 18ff sub temp5,temp5;clear remainder High byte and carry
-003c5d e151 ldi temp7,17 ;init loop counter
-
-003c5e 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend
-003c5f 1f11 rol temp1
-003c60 955a dec temp7 ;decrement counter
-003c61 f439 brne PFA_SLASHMOD_5 ;if done
-003c62 ff47 sbrs temp6,7 ; if MSB in sign register set
-003c63 c004 rjmp PFA_SLASHMOD_4
-003c64 9510 com temp1 ; change sign of result
-003c65 9500 com temp0
-003c66 5f0f subi temp0,low(-1)
-003c67 4f1f sbci temp1,high(-1)
-003c68 c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return
-003c69 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder
-003c6a 1cff rol temp5
-003c6b 1ae2 sub temp4,temp2 ;remainder = remainder - divisor
-003c6c 0af3 sbc temp5,temp3 ;
-003c6d f420 brcc PFA_SLASHMOD_6 ;if result negative
-003c6e 0ee2 add temp4,temp2 ; restore remainder
-003c6f 1ef3 adc temp5,temp3
-003c70 9488 clc ; clear carry to be shifted into result
-003c71 cfec rjmp PFA_SLASHMOD_3 ;else
-003c72 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result
-003c73 cfea rjmp PFA_SLASHMOD_3
-
- PFA_SLASHMODmod_done:
- ; put remainder on stack
-003c74 92fa st -Y,temp5
-003c75 92ea st -Y,temp4
-
- ; put quotient on stack
-003c76 01c8 movw tosl, temp0
-003c77 cb8d jmp_ DO_NEXT
- .include "words/abs.asm"
-
- ; DUP ?NEGATE ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABS:
-003c78 ff03 .dw $ff03
-003c79 6261
-003c7a 0073 .db "abs",0
-003c7b 3c45 .dw VE_HEAD
- .set VE_HEAD = VE_ABS
- XT_ABS:
-003c7c 3801 .dw DO_COLON
- PFA_ABS:
-
- .endif
-
-003c7d 38b1
-003c7e 3a3e
-003c7f 3820 .DW XT_DUP,XT_QNEGATE,XT_EXIT
- .include "words/pick.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PICK:
-003c80 ff04 .dw $ff04
-003c81 6970
-003c82 6b63 .db "pick"
-003c83 3c78 .dw VE_HEAD
- .set VE_HEAD = VE_PICK
- XT_PICK:
-003c84 3801 .dw DO_COLON
- PFA_PICK:
- .endif
-003c85 3a2f .dw XT_1PLUS
-003c86 3ec4 .dw XT_CELLS
-003c87 3a8d .dw XT_SP_FETCH
-003c88 399d .dw XT_PLUS
-003c89 3879 .dw XT_FETCH
-003c8a 3820 .dw XT_EXIT
- .include "words/cellplus.asm"
-
- ; Arithmetics
- ; add the size of an address-unit to a-addr1
- VE_CELLPLUS:
-003c8b ff05 .dw $ff05
-003c8c 6563
-003c8d 6c6c
-003c8e 002b .db "cell+",0
-003c8f 3c80 .dw VE_HEAD
- .set VE_HEAD = VE_CELLPLUS
- XT_CELLPLUS:
-003c90 3c91 .dw PFA_CELLPLUS
- PFA_CELLPLUS:
-003c91 9602 adiw tosl, CELLSIZE
-003c92 cb72 jmp_ DO_NEXT
- .include "dict/interrupt.inc"
-
- .if WANT_INTERRUPTS == 1
-
- .if WANT_INTERRUPT_COUNTERS == 1
- .endif
-
- .include "words/int-on.asm"
-
- ; Interrupt
- ; turns on all interrupts
- VE_INTON:
-003c93 ff04 .dw $ff04
-003c94 692b
-003c95 746e .db "+int"
-003c96 3c8b .dw VE_HEAD
- .set VE_HEAD = VE_INTON
- XT_INTON:
-003c97 3c98 .dw PFA_INTON
- PFA_INTON:
-003c98 9478 sei
-003c99 cb6b jmp_ DO_NEXT
- .include "words/int-off.asm"
-
- ; Interrupt
- ; turns off all interrupts
- VE_INTOFF:
-003c9a ff04 .dw $ff04
-003c9b 692d
-003c9c 746e .db "-int"
-003c9d 3c93 .dw VE_HEAD
- .set VE_HEAD = VE_INTOFF
- XT_INTOFF:
-003c9e 3c9f .dw PFA_INTOFF
- PFA_INTOFF:
-003c9f 94f8 cli
-003ca0 cb64 jmp_ DO_NEXT
- .include "words/int-store.asm"
-
- ; Interrupt
- ; stores XT as interrupt vector i
- VE_INTSTORE:
-003ca1 ff04 .dw $ff04
-003ca2 6e69
-003ca3 2174 .db "int!"
-003ca4 3c9a .dw VE_HEAD
- .set VE_HEAD = VE_INTSTORE
- XT_INTSTORE:
-003ca5 3801 .dw DO_COLON
- PFA_INTSTORE:
-003ca6 383d .dw XT_DOLITERAL
-003ca7 0000 .dw intvec
-003ca8 399d .dw XT_PLUS
-003ca9 3b3b .dw XT_STOREE
-003caa 3820 .dw XT_EXIT
- .include "words/int-fetch.asm"
-
- ; Interrupt
- ; fetches XT from interrupt vector i
- VE_INTFETCH:
-003cab ff04 .dw $ff04
-003cac 6e69
-003cad 4074 .db "int@"
-003cae 3ca1 .dw VE_HEAD
- .set VE_HEAD = VE_INTFETCH
- XT_INTFETCH:
-003caf 3801 .dw DO_COLON
- PFA_INTFETCH:
-003cb0 383d .dw XT_DOLITERAL
-003cb1 0000 .dw intvec
-003cb2 399d .dw XT_PLUS
-003cb3 3b5f .dw XT_FETCHE
-003cb4 3820 .dw XT_EXIT
- .include "words/int-trap.asm"
-
- ; Interrupt
- ; trigger an interrupt
- VE_INTTRAP:
-003cb5 ff08 .dw $ff08
-003cb6 6e69
-003cb7 2d74
-003cb8 7274
-003cb9 7061 .db "int-trap"
-003cba 3cab .dw VE_HEAD
- .set VE_HEAD = VE_INTTRAP
- XT_INTTRAP:
-003cbb 3cbc .dw PFA_INTTRAP
- PFA_INTTRAP:
-003cbc 2eb8 mov isrflag, tosl
-003cbd 9189
-003cbe 9199 loadtos
-003cbf cb45 jmp_ DO_NEXT
-
- .include "words/isr-exec.asm"
-
- ; Interrupt
- ; executes an interrupt service routine
- ;VE_ISREXEC:
- ; .dw $ff08
- ; .db "isr-exec"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREXEC
- XT_ISREXEC:
-003cc0 3801 .dw DO_COLON
- PFA_ISREXEC:
-003cc1 3caf .dw XT_INTFETCH
-003cc2 382a .dw XT_EXECUTE
-003cc3 3cc5 .dw XT_ISREND
-003cc4 3820 .dw XT_EXIT
- .include "words/isr-end.asm"
-
- ; Interrupt
- ; re-enables interrupts in an ISR
- ;VE_ISREND:
- ; .dw $ff07
- ; .db "isr-end",0
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREND
- XT_ISREND:
-003cc5 3cc6 .dw PFA_ISREND
- PFA_ISREND:
-003cc6 d001 rcall PFA_ISREND1 ; clear the interrupt flag for the controller
-003cc7 cb3d jmp_ DO_NEXT
- PFA_ISREND1:
-003cc8 9518 reti
- .endif
-
- ; now the relocatable colon words
- .include "words/prompt-ok.asm"
-
- ; System
- ; send the READY prompt to the command line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTOK:
- ; .dw $ff02
- ; .db "ok"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTOK
- XT_DEFAULT_PROMPTOK:
-003cc9 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTOK:
-003cca 03d0 .dw XT_DOSLITERAL
-003ccb 0003 .dw 3
-003ccc 6f20
-003ccd 006b .db " ok",0
- .endif
-003cce 0403 .dw XT_ITYPE
-003ccf 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTOK:
-003cd0 ff03 .dw $FF03
-003cd1 6f2e
-../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte
-003cd2 006b .db ".ok"
-003cd3 3cb5 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTOK
- XT_PROMPTOK:
-003cd4 3dff .dw PFA_DODEFER1
- PFA_PROMPTOK:
- .endif
-003cd5 001c .dw USER_P_OK
-003cd6 3dc8 .dw XT_UDEFERFETCH
-003cd7 3dd4 .dw XT_UDEFERSTORE
- .include "words/prompt-ready.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTRDY:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTRDY
- XT_DEFAULT_PROMPTREADY:
-003cd8 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTREADY:
-003cd9 03d0 .dw XT_DOSLITERAL
-003cda 0002 .dw 2
-003cdb 203e .db "> "
- .endif
-003cdc 3fa1 .dw XT_CR
-003cdd 0403 .dw XT_ITYPE
-003cde 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTREADY:
-003cdf ff06 .dw $FF06
-003ce0 722e
-003ce1 6165
-003ce2 7964 .db ".ready"
-003ce3 3cd0 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTREADY
- XT_PROMPTREADY:
-003ce4 3dff .dw PFA_DODEFER1
- PFA_PROMPTREADY:
- .endif
-003ce5 0020 .dw USER_P_RDY
-003ce6 3dc8 .dw XT_UDEFERFETCH
-003ce7 3dd4 .dw XT_UDEFERSTORE
- .include "words/prompt-error.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTERROR:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTERROR
- XT_DEFAULT_PROMPTERROR:
-003ce8 3801 .dw DO_COLON
- PFA_DEFAULT_PROMPTERROR:
-003ce9 03d0 .dw XT_DOSLITERAL
-003cea 0004 .dw 4
-003ceb 3f20
-003cec 203f .db " ?? "
- .endif
-003ced 0403 .dw XT_ITYPE
-003cee 3ebd .dw XT_BASE
-003cef 3879 .dw XT_FETCH
-003cf0 38ff .dw XT_TO_R
-003cf1 3f41 .dw XT_DECIMAL
-003cf2 0385 .dw XT_DOT
-003cf3 3ee2 .dw XT_TO_IN
-003cf4 3879 .dw XT_FETCH
-003cf5 0385 .dw XT_DOT
-003cf6 38f6 .dw XT_R_FROM
-003cf7 3ebd .dw XT_BASE
-003cf8 3881 .dw XT_STORE
-003cf9 3820 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTERROR:
-003cfa ff06 .dw $FF06
-003cfb 652e
-003cfc 7272
-003cfd 726f .db ".error"
-003cfe 3cdf .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTERROR
- XT_PROMPTERROR:
-003cff 3dff .dw PFA_DODEFER1
- PFA_PROMPTERROR:
- .endif
-003d00 001e .dw USER_P_ERR
-003d01 3dc8 .dw XT_UDEFERFETCH
-003d02 3dd4 .dw XT_UDEFERSTORE
-
- .include "words/quit.asm"
-
- ; System
- ; main loop of amforth. accept - interpret in an endless loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QUIT:
-003d03 ff04 .dw $ff04
-003d04 7571
-003d05 7469 .db "quit"
-003d06 3cfa .dw VE_HEAD
- .set VE_HEAD = VE_QUIT
- XT_QUIT:
-003d07 3801 .dw DO_COLON
- .endif
- PFA_QUIT:
-003d08 085c
-003d09 0863
-003d0a 3881 .dw XT_LP0,XT_LP,XT_STORE
-003d0b 05d5 .dw XT_SP0
-003d0c 3a96 .dw XT_SP_STORE
-003d0d 05e2 .dw XT_RP0
-003d0e 3a80 .dw XT_RP_STORE
-003d0f 08f1 .dw XT_LBRACKET
-
- PFA_QUIT2:
-003d10 3eb7 .dw XT_STATE
-003d11 3879 .dw XT_FETCH
-003d12 391a .dw XT_ZEROEQUAL
-003d13 3836 .dw XT_DOCONDBRANCH
-003d14 3d16 DEST(PFA_QUIT4)
-003d15 3ce4 .dw XT_PROMPTREADY
- PFA_QUIT4:
-003d16 04e9 .dw XT_REFILL
-003d17 3836 .dw XT_DOCONDBRANCH
-003d18 3d28 DEST(PFA_QUIT3)
-003d19 383d .dw XT_DOLITERAL
-003d1a 0630 .dw XT_INTERPRET
-003d1b 3d70 .dw XT_CATCH
-003d1c 38b9 .dw XT_QDUP
-003d1d 3836 .dw XT_DOCONDBRANCH
-003d1e 3d28 DEST(PFA_QUIT3)
-003d1f 38b1 .dw XT_DUP
-003d20 383d .dw XT_DOLITERAL
-003d21 fffe .dw -2
-003d22 396e .dw XT_LESS
-003d23 3836 .dw XT_DOCONDBRANCH
-003d24 3d26 DEST(PFA_QUIT5)
-003d25 3cff .dw XT_PROMPTERROR
- PFA_QUIT5:
-003d26 382f .dw XT_DOBRANCH
-003d27 3d08 DEST(PFA_QUIT)
- PFA_QUIT3:
-003d28 3cd4 .dw XT_PROMPTOK
-003d29 382f .dw XT_DOBRANCH
-003d2a 3d10 DEST(PFA_QUIT2)
- ; .dw XT_EXIT ; never reached
-
- .include "words/pause.asm"
-
- ; Multitasking
- ; Fetch pause vector and execute it. may make a context/task switch
- VE_PAUSE:
-003d2b ff05 .dw $ff05
-003d2c 6170
-003d2d 7375
-003d2e 0065 .db "pause",0
-003d2f 3d03 .dw VE_HEAD
- .set VE_HEAD = VE_PAUSE
- XT_PAUSE:
-003d30 3dff .dw PFA_DODEFER1
- PFA_PAUSE:
-003d31 0192 .dw ram_pause
-003d32 3db4 .dw XT_RDEFERFETCH
-003d33 3dbe .dw XT_RDEFERSTORE
-
- .dseg
-000192 ram_pause: .byte 2
- .cseg
- .include "words/cold.asm"
-
- ; System
- ; start up amforth.
- VE_COLD:
-003d34 ff04 .dw $ff04
-003d35 6f63
-003d36 646c .db "cold"
-003d37 3d2b .dw VE_HEAD
- .set VE_HEAD = VE_COLD
- XT_COLD:
-003d38 3d39 .dw PFA_COLD
- PFA_COLD:
-003d39 b6a4 in_ mcu_boot, MCUSR
-003d3a 2422 clr zerol
-003d3b 2433 clr zeroh
-003d3c 24bb clr isrflag
-003d3d be24 out_ MCUSR, zerol
- ; clear RAM
-003d3e e0e0 ldi zl, low(ramstart)
-003d3f e0f1 ldi zh, high(ramstart)
- clearloop:
-003d40 9221 st Z+, zerol
-003d41 30e0 cpi zl, low(sram_size+ramstart)
-003d42 f7e9 brne clearloop
-003d43 30f9 cpi zh, high(sram_size+ramstart)
-003d44 f7d9 brne clearloop
- ; init first user data area
- ; allocate space for User Area
- .dseg
-000194 ram_user1: .byte SYSUSERSIZE + APPUSERSIZE
- .cseg
-003d45 e9e4 ldi zl, low(ram_user1)
-003d46 e0f1 ldi zh, high(ram_user1)
-003d47 012f movw upl, zl
- ; init return stack pointer
-003d48 ef0f ldi temp0,low(rstackstart)
-003d49 bf0d out_ SPL,temp0
-003d4a 8304 std Z+4, temp0
-003d4b e018 ldi temp1,high(rstackstart)
-003d4c bf1e out_ SPH,temp1
-003d4d 8315 std Z+5, temp1
-
- ; init parameter stack pointer
-003d4e eacf ldi yl,low(stackstart)
-003d4f 83c6 std Z+6, yl
-003d50 e0d8 ldi yh,high(stackstart)
-003d51 83d7 std Z+7, yh
-
- ; load Forth IP with starting word
-003d52 e5aa ldi XL, low(PFA_WARM)
-003d53 e3bd ldi XH, high(PFA_WARM)
- ; its a far jump...
-003d54 cab0 jmp_ DO_NEXT
- .include "words/warm.asm"
-
- ; System
- ; initialize amforth further. executes turnkey operation and go to quit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WARM:
-003d55 ff04 .dw $ff04
-003d56 6177
-003d57 6d72 .db "warm"
-003d58 3d34 .dw VE_HEAD
- .set VE_HEAD = VE_WARM
- XT_WARM:
-003d59 3801 .dw DO_COLON
- PFA_WARM:
- .endif
-003d5a 02a2 .dw XT_INIT_RAM
-003d5b 383d .dw XT_DOLITERAL
-003d5c 01a5 .dw XT_NOOP
-003d5d 383d .dw XT_DOLITERAL
-003d5e 3d30 .dw XT_PAUSE
-003d5f 3ddf .dw XT_DEFERSTORE
-003d60 08f1 .dw XT_LBRACKET
-003d61 3f5c .dw XT_TURNKEY
-003d62 3d07 .dw XT_QUIT ; never returns
-
- .include "words/handler.asm"
-
- ; Exceptions
- ; USER variable used by catch/throw
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HANDLER:
-003d63 ff07 .dw $ff07
-003d64 6168
-003d65 646e
-003d66 656c
-003d67 0072 .db "handler",0
-003d68 3d55 .dw VE_HEAD
- .set VE_HEAD = VE_HANDLER
- XT_HANDLER:
-003d69 3858 .dw PFA_DOUSER
- PFA_HANDLER:
- .endif
-003d6a 000a .dw USER_HANDLER
- .include "words/catch.asm"
-
- ; Exceptions
- ; execute XT and check for exceptions.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CATCH:
-003d6b ff05 .dw $ff05
-003d6c 6163
-003d6d 6374
-003d6e 0068 .db "catch",0
-003d6f 3d63 .dw VE_HEAD
- .set VE_HEAD = VE_CATCH
- XT_CATCH:
-003d70 3801 .dw DO_COLON
- PFA_CATCH:
- .endif
-
- ; sp@ >r
-003d71 3a8d .dw XT_SP_FETCH
-003d72 38ff .dw XT_TO_R
- ; handler @ >r
-003d73 3d69 .dw XT_HANDLER
-003d74 3879 .dw XT_FETCH
-003d75 38ff .dw XT_TO_R
- ; rp@ handler !
-003d76 3a76 .dw XT_RP_FETCH
-003d77 3d69 .dw XT_HANDLER
-003d78 3881 .dw XT_STORE
-003d79 382a .dw XT_EXECUTE
- ; r> handler !
-003d7a 38f6 .dw XT_R_FROM
-003d7b 3d69 .dw XT_HANDLER
-003d7c 3881 .dw XT_STORE
-003d7d 38f6 .dw XT_R_FROM
-003d7e 38d9 .dw XT_DROP
-003d7f 3954 .dw XT_ZERO
-003d80 3820 .dw XT_EXIT
- .include "words/throw.asm"
-
- ; Exceptions
- ; throw an exception
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THROW:
-003d81 ff05 .dw $ff05
-003d82 6874
-003d83 6f72
-003d84 0077 .db "throw",0
-003d85 3d6b .dw VE_HEAD
- .set VE_HEAD = VE_THROW
- XT_THROW:
-003d86 3801 .dw DO_COLON
- PFA_THROW:
- .endif
-003d87 38b1 .dw XT_DUP
-003d88 391a .dw XT_ZEROEQUAL
-003d89 3836 .dw XT_DOCONDBRANCH
-003d8a 3d8d DEST(PFA_THROW1)
-003d8b 38d9 .dw XT_DROP
-003d8c 3820 .dw XT_EXIT
- PFA_THROW1:
-003d8d 3d69 .dw XT_HANDLER
-003d8e 3879 .dw XT_FETCH
-003d8f 3a80 .dw XT_RP_STORE
-003d90 38f6 .dw XT_R_FROM
-003d91 3d69 .dw XT_HANDLER
-003d92 3881 .dw XT_STORE
-003d93 38f6 .dw XT_R_FROM
-003d94 38c4 .dw XT_SWAP
-003d95 38ff .dw XT_TO_R
-003d96 3a96 .dw XT_SP_STORE
-003d97 38d9 .dw XT_DROP
-003d98 38f6 .dw XT_R_FROM
-003d99 3820 .dw XT_EXIT
-
-
-
- .include "words/edefer-fetch.asm"
-
- ; System
- ; does the real defer@ for eeprom defers
- VE_EDEFERFETCH:
-003d9a ff07 .dw $ff07
-003d9b 6445
-003d9c 6665
-003d9d 7265
-003d9e 0040 .db "Edefer@",0
-003d9f 3d81 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERFETCH
- XT_EDEFERFETCH:
-003da0 3801 .dw DO_COLON
- PFA_EDEFERFETCH:
-003da1 3bcb .dw XT_FETCHI
-003da2 3b5f .dw XT_FETCHE
-003da3 3820 .dw XT_EXIT
- .include "words/edefer-store.asm"
-
- ; System
- ; does the real defer! for eeprom defers
- VE_EDEFERSTORE:
-003da4 ff07 .dw $ff07
-003da5 6445
-003da6 6665
-003da7 7265
-003da8 0021 .db "Edefer!",0
-003da9 3d9a .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERSTORE
- XT_EDEFERSTORE:
-003daa 3801 .dw DO_COLON
- PFA_EDEFERSTORE:
-003dab 3bcb .dw XT_FETCHI
-003dac 3b3b .dw XT_STOREE
-003dad 3820 .dw XT_EXIT
- .include "words/rdefer-fetch.asm"
-
- ; System
- ; The defer@ for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERFETCH:
-003dae ff07 .dw $ff07
-003daf 6452
-003db0 6665
-003db1 7265
-003db2 0040 .db "Rdefer@",0
-003db3 3da4 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERFETCH
- XT_RDEFERFETCH:
-003db4 3801 .dw DO_COLON
- PFA_RDEFERFETCH:
- .endif
-003db5 3bcb .dw XT_FETCHI
-003db6 3879 .dw XT_FETCH
-003db7 3820 .dw XT_EXIT
- .include "words/rdefer-store.asm"
-
- ; System
- ; The defer! for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERSTORE:
-003db8 ff07 .dw $ff07
-003db9 6452
-003dba 6665
-003dbb 7265
-003dbc 0021 .db "Rdefer!",0
-003dbd 3dae .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERSTORE
- XT_RDEFERSTORE:
-003dbe 3801 .dw DO_COLON
- PFA_RDEFERSTORE:
- .endif
-003dbf 3bcb .dw XT_FETCHI
-003dc0 3881 .dw XT_STORE
-003dc1 3820 .dw XT_EXIT
-
- .include "words/udefer-fetch.asm"
-
- ; System
- ; does the real defer@ for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERFETCH:
-003dc2 ff07 .dw $ff07
-003dc3 6455
-003dc4 6665
-003dc5 7265
-003dc6 0040 .db "Udefer@",0
-003dc7 3db8 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERFETCH
- XT_UDEFERFETCH:
-003dc8 3801 .dw DO_COLON
- PFA_UDEFERFETCH:
- .endif
-003dc9 3bcb .dw XT_FETCHI
-003dca 3b02 .dw XT_UP_FETCH
-003dcb 399d .dw XT_PLUS
-003dcc 3879 .dw XT_FETCH
-003dcd 3820 .dw XT_EXIT
- .include "words/udefer-store.asm"
-
- ; System
- ; does the real defer! for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERSTORE:
-003dce ff07 .dw $ff07
-003dcf 6455
-003dd0 6665
-003dd1 7265
-003dd2 0021 .db "Udefer!",0
-003dd3 3dc2 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERSTORE
- XT_UDEFERSTORE:
-003dd4 3801 .dw DO_COLON
- PFA_UDEFERSTORE:
- .endif
-
-003dd5 3bcb .dw XT_FETCHI
-003dd6 3b02 .dw XT_UP_FETCH
-003dd7 399d .dw XT_PLUS
-003dd8 3881 .dw XT_STORE
-003dd9 3820 .dw XT_EXIT
-
- .include "words/defer-store.asm"
-
- ; System
- ; stores xt1 as the xt to be executed when xt2 is called
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERSTORE:
-003dda ff06 .dw $ff06
-003ddb 6564
-003ddc 6566
-003ddd 2172 .db "defer!"
-003dde 3dce .dw VE_HEAD
- .set VE_HEAD = VE_DEFERSTORE
- XT_DEFERSTORE:
-003ddf 3801 .dw DO_COLON
- PFA_DEFERSTORE:
- .endif
-003de0 3fd0 .dw XT_TO_BODY
-003de1 38b1 .dw XT_DUP
-003de2 01d1 .dw XT_ICELLPLUS
-003de3 01d1 .dw XT_ICELLPLUS
-003de4 3bcb .dw XT_FETCHI
-003de5 382a .dw XT_EXECUTE
-003de6 3820 .dw XT_EXIT
-
- .include "words/defer-fetch.asm"
-
- ; System
- ; returns the XT associated with the given XT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERFETCH:
-003de7 ff06 .dw $ff06
-003de8 6564
-003de9 6566
-003dea 4072 .db "defer@"
-003deb 3dda .dw VE_HEAD
- .set VE_HEAD = VE_DEFERFETCH
- XT_DEFERFETCH:
-003dec 3801 .dw DO_COLON
- PFA_DEFERFETCH:
- .endif
-003ded 3fd0 .dw XT_TO_BODY
-003dee 38b1 .dw XT_DUP
-003def 01d1 .dw XT_ICELLPLUS
-003df0 3bcb .dw XT_FETCHI
-003df1 382a .dw XT_EXECUTE
-003df2 3820 .dw XT_EXIT
- .include "words/do-defer.asm"
-
- ; System
- ; runtime of defer
- VE_DODEFER:
-003df3 ff07 .dw $ff07
-003df4 6428
-003df5 6665
-003df6 7265
-003df7 0029 .db "(defer)", 0
-003df8 3de7 .dw VE_HEAD
- .set VE_HEAD = VE_DODEFER
- XT_DODEFER:
-003df9 3801 .dw DO_COLON
- PFA_DODEFER:
-003dfa 0739 .dw XT_DOCREATE
-003dfb 0899 .dw XT_REVEAL
-003dfc 075c .dw XT_COMPILE
-003dfd 3dff .dw PFA_DODEFER1
-003dfe 3820 .dw XT_EXIT
- PFA_DODEFER1:
-003dff 940e 08b2 call_ DO_DODOES
-003e01 38b1 .dw XT_DUP
-003e02 01d1 .dw XT_ICELLPLUS
-003e03 3bcb .dw XT_FETCHI
-003e04 382a .dw XT_EXECUTE
-003e05 382a .dw XT_EXECUTE
-003e06 3820 .dw XT_EXIT
-
- ; : (defer) <builds does> dup i-cell+ @i execute execute ;
-
-
- .include "words/u-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDOT:
-003e07 ff02 .dw $ff02
-003e08 2e75 .db "u."
-003e09 3df3 .dw VE_HEAD
- .set VE_HEAD = VE_UDOT
- XT_UDOT:
-003e0a 3801 .dw DO_COLON
- PFA_UDOT:
- .endif
-003e0b 3954 .dw XT_ZERO
-003e0c 038d .dw XT_UDDOT
-003e0d 3820 .dw XT_EXIT
- ; : u. ( us -- ) 0 ud. ;
- .include "words/u-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cells numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDOTR:
-003e0e ff03 .dw $ff03
-003e0f 2e75
-003e10 0072 .db "u.r",0
-003e11 3e07 .dw VE_HEAD
- .set VE_HEAD = VE_UDOTR
- XT_UDOTR:
-003e12 3801 .dw DO_COLON
- PFA_UDOTR:
- .endif
-003e13 3954 .dw XT_ZERO
-003e14 38c4 .dw XT_SWAP
-003e15 0396 .dw XT_UDDOTR
-003e16 3820 .dw XT_EXIT
- ; : u.r ( s n -- ) 0 swap ud.r ;
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/uslashmod.asm"
-
- ; Arithmetics
- ; unsigned division with remainder
- VE_USLASHMOD:
-003e17 ff05 .dw $ff05
-003e18 2f75
-003e19 6f6d
-003e1a 0064 .db "u/mod",0
-003e1b 3e0e .dw VE_HEAD
- .set VE_HEAD = VE_USLASHMOD
- XT_USLASHMOD:
-003e1c 3801 .dw DO_COLON
- PFA_USLASHMOD:
-003e1d 38ff .dw XT_TO_R
-003e1e 3954 .dw XT_ZERO
-003e1f 38f6 .dw XT_R_FROM
-003e20 39c2 .dw XT_UMSLASHMOD
-003e21 3820 .dw XT_EXIT
- .include "words/negate.asm"
-
- ; Logic
- ; 2-complement
- VE_NEGATE:
-003e22 ff06 .dw $ff06
-003e23 656e
-003e24 6167
-003e25 6574 .db "negate"
-003e26 3e17 .dw VE_HEAD
- .set VE_HEAD = VE_NEGATE
- XT_NEGATE:
-003e27 3801 .dw DO_COLON
- PFA_NEGATE:
-003e28 39fd .dw XT_INVERT
-003e29 3a2f .dw XT_1PLUS
-003e2a 3820 .dw XT_EXIT
- .include "words/slash.asm"
-
- ; Arithmetics
- ; divide n1 by n2. giving the quotient
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SLASH:
-003e2b ff01 .dw $ff01
-003e2c 002f .db "/",0
-003e2d 3e22 .dw VE_HEAD
- .set VE_HEAD = VE_SLASH
- XT_SLASH:
-003e2e 3801 .dw DO_COLON
- PFA_SLASH:
- .endif
-003e2f 3c49 .dw XT_SLASHMOD
-003e30 38f0 .dw XT_NIP
-003e31 3820 .dw XT_EXIT
-
- .include "words/mod.asm"
-
- ; Arithmetics
- ; divide n1 by n2 giving the remainder n3
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MOD:
-003e32 ff03 .dw $ff03
-003e33 6f6d
-003e34 0064 .db "mod",0
-003e35 3e2b .dw VE_HEAD
- .set VE_HEAD = VE_MOD
- XT_MOD:
-003e36 3801 .dw DO_COLON
- PFA_MOD:
- .endif
-003e37 3c49 .dw XT_SLASHMOD
-003e38 38d9 .dw XT_DROP
-003e39 3820 .dw XT_EXIT
-
- .include "words/min.asm"
-
- ; Compare
- ; compare two values leave the smaller one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MIN:
-003e3a ff03 .dw $ff03
-003e3b 696d
-003e3c 006e .db "min",0
-003e3d 3e32 .dw VE_HEAD
- .set VE_HEAD = VE_MIN
- XT_MIN:
-003e3e 3801 .dw DO_COLON
- PFA_MIN:
- .endif
-003e3f 3ec9 .dw XT_2DUP
-003e40 3978 .dw XT_GREATER
-003e41 3836 .dw XT_DOCONDBRANCH
-003e42 3e44 DEST(PFA_MIN1)
-003e43 38c4 .dw XT_SWAP
- PFA_MIN1:
-003e44 38d9 .dw XT_DROP
-003e45 3820 .dw XT_EXIT
- .include "words/max.asm"
-
- ; Compare
- ; compare two values, leave the bigger one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAX:
-003e46 ff03 .dw $ff03
-003e47 616d
-003e48 0078 .db "max",0
-003e49 3e3a .dw VE_HEAD
- .set VE_HEAD = VE_MAX
- XT_MAX:
-003e4a 3801 .dw DO_COLON
- PFA_MAX:
-
- .endif
-003e4b 3ec9 .dw XT_2DUP
-003e4c 396e .dw XT_LESS
-003e4d 3836 .dw XT_DOCONDBRANCH
-003e4e 3e50 DEST(PFA_MAX1)
-003e4f 38c4 .dw XT_SWAP
- PFA_MAX1:
-003e50 38d9 .dw XT_DROP
-003e51 3820 .dw XT_EXIT
- .include "words/within.asm"
-
- ; Compare
- ; check if n is within min..max
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WITHIN:
-003e52 ff06 .dw $ff06
-003e53 6977
-003e54 6874
-003e55 6e69 .db "within"
-003e56 3e46 .dw VE_HEAD
- .set VE_HEAD = VE_WITHIN
- XT_WITHIN:
-003e57 3801 .dw DO_COLON
- PFA_WITHIN:
- .endif
-003e58 38cf .dw XT_OVER
-003e59 3993 .dw XT_MINUS
-003e5a 38ff .dw XT_TO_R
-003e5b 3993 .dw XT_MINUS
-003e5c 38f6 .dw XT_R_FROM
-003e5d 395c .dw XT_ULESS
-003e5e 3820 .dw XT_EXIT
-
- .include "words/show-wordlist.asm"
-
- ; Tools
- ; prints the name of the words in a wordlist
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHOWWORDLIST:
-003e5f ff0d .dw $ff0d
-003e60 6873
-003e61 776f
-003e62 772d
-003e63 726f
-003e64 6c64
-003e65 7369
-003e66 0074 .db "show-wordlist",0
-003e67 3e52 .dw VE_HEAD
- .set VE_HEAD = VE_SHOWWORDLIST
- XT_SHOWWORDLIST:
-003e68 3801 .dw DO_COLON
- PFA_SHOWWORDLIST:
- .endif
-003e69 383d .dw XT_DOLITERAL
-003e6a 3e6e .dw XT_SHOWWORD
-003e6b 38c4 .dw XT_SWAP
-003e6c 06da .dw XT_TRAVERSEWORDLIST
-003e6d 3820 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SHOWWORD:
-003e6e 3801 .dw DO_COLON
- PFA_SHOWWORD:
- .endif
-003e6f 06f5 .dw XT_NAME2STRING
-003e70 0403 .dw XT_ITYPE
-003e71 3fae .dw XT_SPACE ; ( -- addr n)
-003e72 394b .dw XT_TRUE
-003e73 3820 .dw XT_EXIT
- .include "words/words.asm"
-
- ; Tools
- ; prints a list of all (visible) words in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_WORDS:
-003e74 ff05 .dw $ff05
-003e75 6f77
-003e76 6472
-003e77 0073 .db "words",0
-003e78 3e5f .dw VE_HEAD
- .set VE_HEAD = VE_WORDS
- XT_WORDS:
-003e79 3801 .dw DO_COLON
- PFA_WORDS:
- .endif
-003e7a 383d .dw XT_DOLITERAL
-003e7b 004c .dw CFG_ORDERLISTLEN+2
-003e7c 3b5f .dw XT_FETCHE
-003e7d 3e68 .dw XT_SHOWWORDLIST
-003e7e 3820 .dw XT_EXIT
-
- .include "words/dot-quote.asm"
-
- ; Compiler
- ; compiles string into dictionary to be printed at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOTSTRING:
-003e7f 0002 .dw $0002
-003e80 222e .db ".",$22
-003e81 3e74 .dw VE_HEAD
- .set VE_HEAD = VE_DOTSTRING
- XT_DOTSTRING:
-003e82 3801 .dw DO_COLON
- PFA_DOTSTRING:
- .endif
-003e83 3e8a .dw XT_SQUOTE
-003e84 075c .dw XT_COMPILE
-003e85 0403 .dw XT_ITYPE
-003e86 3820 .dw XT_EXIT
- .include "words/squote.asm"
-
- ; Compiler
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SQUOTE:
-003e87 0002 .dw $0002
-003e88 2273 .db "s",$22
-003e89 3e7f .dw VE_HEAD
- .set VE_HEAD = VE_SQUOTE
- XT_SQUOTE:
-003e8a 3801 .dw DO_COLON
- PFA_SQUOTE:
- .endif
-003e8b 383d .dw XT_DOLITERAL
-003e8c 0022 .dw 34 ; 0x22
-003e8d 058e .dw XT_PARSE ; ( -- addr n)
-003e8e 3eb7 .dw XT_STATE
-003e8f 3879 .dw XT_FETCH
-003e90 3836 .dw XT_DOCONDBRANCH
-003e91 3e93 DEST(PFA_SQUOTE1)
-003e92 0788 .dw XT_SLITERAL
- PFA_SQUOTE1:
-003e93 3820 .dw XT_EXIT
- .include "words/fill.asm"
-
- ; Memory
- ; fill u bytes memory beginning at a-addr with character c
- VE_FILL:
-003e94 ff04 .dw $ff04
-003e95 6966
-003e96 6c6c .db "fill"
-003e97 3e87 .dw VE_HEAD
- .set VE_HEAD = VE_FILL
- XT_FILL:
-003e98 3801 .dw DO_COLON
- PFA_FILL:
-003e99 38e1 .dw XT_ROT
-003e9a 38e1 .dw XT_ROT
-003e9b 38b9
-003e9c 3836 .dw XT_QDUP,XT_DOCONDBRANCH
-003e9d 3ea5 DEST(PFA_FILL2)
-003e9e 3f99 .dw XT_BOUNDS
-003e9f 3a9b .dw XT_DODO
- PFA_FILL1:
-003ea0 38b1 .dw XT_DUP
-003ea1 3aac .dw XT_I
-003ea2 388d .dw XT_CSTORE ; ( -- c c-addr)
-003ea3 3ac9 .dw XT_DOLOOP
-003ea4 3ea0 .dw PFA_FILL1
- PFA_FILL2:
-003ea5 38d9 .dw XT_DROP
-003ea6 3820 .dw XT_EXIT
-
- .include "words/f_cpu.asm"
-
- ; System
- ; put the cpu frequency in Hz on stack
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_F_CPU:
-003ea7 ff05 .dw $ff05
-003ea8 5f66
-003ea9 7063
-003eaa 0075 .db "f_cpu",0
-003eab 3e94 .dw VE_HEAD
- .set VE_HEAD = VE_F_CPU
- XT_F_CPU:
-003eac 3801 .dw DO_COLON
- PFA_F_CPU:
- .endif
-003ead 383d .dw XT_DOLITERAL
-003eae 2400 .dw (F_CPU % 65536)
-003eaf 383d .dw XT_DOLITERAL
-003eb0 00f4 .dw (F_CPU / 65536)
-003eb1 3820 .dw XT_EXIT
- .include "words/state.asm"
-
- ; System Variable
- ; system state
- VE_STATE:
-003eb2 ff05 .dw $ff05
-003eb3 7473
-003eb4 7461
-003eb5 0065 .db "state",0
-003eb6 3ea7 .dw VE_HEAD
- .set VE_HEAD = VE_STATE
- XT_STATE:
-003eb7 3848 .dw PFA_DOVARIABLE
- PFA_STATE:
-003eb8 01c0 .dw ram_state
-
- .dseg
-0001c0 ram_state: .byte 2
- .include "words/base.asm"
-
- ; Numeric IO
- ; location of the cell containing the number conversion radix
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BASE:
-003eb9 ff04 .dw $ff04
-003eba 6162
-003ebb 6573 .db "base"
-003ebc 3eb2 .dw VE_HEAD
- .set VE_HEAD = VE_BASE
- XT_BASE:
-003ebd 3858 .dw PFA_DOUSER
- PFA_BASE:
- .endif
-003ebe 000c .dw USER_BASE
-
- .include "words/cells.asm"
-
- ; Arithmetics
- ; n2 is the size in address units of n1 cells
- VE_CELLS:
-003ebf ff05 .dw $ff05
-003ec0 6563
-003ec1 6c6c
-003ec2 0073 .db "cells",0
-003ec3 3eb9 .dw VE_HEAD
- .set VE_HEAD = VE_CELLS
- XT_CELLS:
-003ec4 3a0c .dw PFA_2STAR
-
- .include "words/2dup.asm"
-
- ; Stack
- ; Duplicate the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DUP:
-003ec5 ff04 .dw $ff04
-003ec6 6432
-003ec7 7075 .db "2dup"
-003ec8 3ebf .dw VE_HEAD
- .set VE_HEAD = VE_2DUP
- XT_2DUP:
-003ec9 3801 .dw DO_COLON
- PFA_2DUP:
- .endif
-
-003eca 38cf .dw XT_OVER
-003ecb 38cf .dw XT_OVER
-003ecc 3820 .dw XT_EXIT
- .include "words/2drop.asm"
-
- ; Stack
- ; Remove the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DROP:
-003ecd ff05 .dw $ff05
-003ece 6432
-003ecf 6f72
-003ed0 0070 .db "2drop",0
-003ed1 3ec5 .dw VE_HEAD
- .set VE_HEAD = VE_2DROP
- XT_2DROP:
-003ed2 3801 .dw DO_COLON
- PFA_2DROP:
- .endif
-003ed3 38d9 .dw XT_DROP
-003ed4 38d9 .dw XT_DROP
-003ed5 3820 .dw XT_EXIT
- .include "words/tuck.asm"
-
- ; Stack
- ; Copy the first (top) stack item below the second stack item.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TUCK:
-003ed6 ff04 .dw $ff04
-003ed7 7574
-003ed8 6b63 .db "tuck"
-003ed9 3ecd .dw VE_HEAD
- .set VE_HEAD = VE_TUCK
- XT_TUCK:
-003eda 3801 .dw DO_COLON
- PFA_TUCK:
- .endif
-003edb 38c4 .dw XT_SWAP
-003edc 38cf .dw XT_OVER
-003edd 3820 .dw XT_EXIT
-
- .include "words/to-in.asm"
-
- ; System Variable
- ; pointer to current read position in input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_IN:
-003ede ff03 .dw $ff03
-003edf 693e
-003ee0 006e .db ">in",0
-003ee1 3ed6 .dw VE_HEAD
- .set VE_HEAD = VE_TO_IN
- XT_TO_IN:
-003ee2 3858 .dw PFA_DOUSER
- PFA_TO_IN:
- .endif
-003ee3 0018 .dw USER_TO_IN
- .include "words/pad.asm"
-
- ; System Variable
- ; Address of the temporary scratch buffer.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PAD:
-003ee4 ff03 .dw $ff03
-003ee5 6170
-003ee6 0064 .db "pad",0
-003ee7 3ede .dw VE_HEAD
- .set VE_HEAD = VE_PAD
- XT_PAD:
-003ee8 3801 .dw DO_COLON
- PFA_PAD:
- .endif
-003ee9 3f23 .dw XT_HERE
-003eea 383d .dw XT_DOLITERAL
-003eeb 0028 .dw 40
-003eec 399d .dw XT_PLUS
-003eed 3820 .dw XT_EXIT
- .include "words/emit.asm"
-
- ; Character IO
- ; fetch the emit vector and execute it. should emit a character from TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMIT:
-003eee ff04 .dw $ff04
-003eef 6d65
-003ef0 7469 .db "emit"
-003ef1 3ee4 .dw VE_HEAD
- .set VE_HEAD = VE_EMIT
- XT_EMIT:
-003ef2 3dff .dw PFA_DODEFER1
- PFA_EMIT:
- .endif
-003ef3 000e .dw USER_EMIT
-003ef4 3dc8 .dw XT_UDEFERFETCH
-003ef5 3dd4 .dw XT_UDEFERSTORE
- .include "words/emitq.asm"
-
- ; Character IO
- ; fetch emit? vector and execute it. should return the ready-to-send condition
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMITQ:
-003ef6 ff05 .dw $ff05
-003ef7 6d65
-003ef8 7469
-003ef9 003f .db "emit?",0
-003efa 3eee .dw VE_HEAD
- .set VE_HEAD = VE_EMITQ
- XT_EMITQ:
-003efb 3dff .dw PFA_DODEFER1
- PFA_EMITQ:
- .endif
-003efc 0010 .dw USER_EMITQ
-003efd 3dc8 .dw XT_UDEFERFETCH
-003efe 3dd4 .dw XT_UDEFERSTORE
- .include "words/key.asm"
-
- ; Character IO
- ; fetch key vector and execute it, should leave a single character on TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEY:
-003eff ff03 .dw $ff03
-003f00 656b
-003f01 0079 .db "key",0
-003f02 3ef6 .dw VE_HEAD
- .set VE_HEAD = VE_KEY
- XT_KEY:
-003f03 3dff .dw PFA_DODEFER1
- PFA_KEY:
- .endif
-003f04 0012 .dw USER_KEY
-003f05 3dc8 .dw XT_UDEFERFETCH
-003f06 3dd4 .dw XT_UDEFERSTORE
- .include "words/keyq.asm"
-
- ; Character IO
- ; fetch key? vector and execute it. should turn on key sender, if it is disabled/stopped
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEYQ:
-003f07 ff04 .dw $ff04
-003f08 656b
-003f09 3f79 .db "key?"
-003f0a 3eff .dw VE_HEAD
- .set VE_HEAD = VE_KEYQ
- XT_KEYQ:
-003f0b 3dff .dw PFA_DODEFER1
- PFA_KEYQ:
- .endif
-003f0c 0014 .dw USER_KEYQ
-003f0d 3dc8 .dw XT_UDEFERFETCH
-003f0e 3dd4 .dw XT_UDEFERSTORE
-
- .include "words/dp.asm"
-
- ; System Value
- ; address of the next free dictionary cell
- VE_DP:
-003f0f ff02 .dw $ff02
-003f10 7064 .db "dp"
-003f11 3f07 .dw VE_HEAD
- .set VE_HEAD = VE_DP
- XT_DP:
-003f12 386f .dw PFA_DOVALUE1
- PFA_DP:
-003f13 0036 .dw CFG_DP
-003f14 3da0 .dw XT_EDEFERFETCH
-003f15 3daa .dw XT_EDEFERSTORE
- .include "words/ehere.asm"
-
- ; System Value
- ; address of the next free address in eeprom
- VE_EHERE:
-003f16 ff05 .dw $ff05
-003f17 6865
-003f18 7265
-003f19 0065 .db "ehere",0
-003f1a 3f0f .dw VE_HEAD
- .set VE_HEAD = VE_EHERE
- XT_EHERE:
-003f1b 386f .dw PFA_DOVALUE1
- PFA_EHERE:
-003f1c 003a .dw EE_EHERE
-003f1d 3da0 .dw XT_EDEFERFETCH
-003f1e 3daa .dw XT_EDEFERSTORE
- .include "words/here.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_HERE:
-003f1f ff04 .dw $ff04
-003f20 6568
-003f21 6572 .db "here"
-003f22 3f16 .dw VE_HEAD
- .set VE_HEAD = VE_HERE
- XT_HERE:
-003f23 386f .dw PFA_DOVALUE1
- PFA_HERE:
-003f24 0038 .dw EE_HERE
-003f25 3da0 .dw XT_EDEFERFETCH
-003f26 3daa .dw XT_EDEFERSTORE
- .include "words/allot.asm"
-
- ; System
- ; allocate or release memory in RAM
- VE_ALLOT:
-003f27 ff05 .dw $ff05
-003f28 6c61
-003f29 6f6c
-003f2a 0074 .db "allot",0
-003f2b 3f1f .dw VE_HEAD
- .set VE_HEAD = VE_ALLOT
- XT_ALLOT:
-003f2c 3801 .dw DO_COLON
- PFA_ALLOT:
-003f2d 3f23 .dw XT_HERE
-003f2e 399d .dw XT_PLUS
-003f2f 01bf .dw XT_DOTO
-003f30 3f24 .dw PFA_HERE
-003f31 3820 .dw XT_EXIT
-
- .include "words/bin.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BIN:
-003f32 ff03 .dw $ff03
-003f33 6962
-003f34 006e .db "bin",0
-003f35 3f27 .dw VE_HEAD
- .set VE_HEAD = VE_BIN
- XT_BIN:
-003f36 3801 .dw DO_COLON
- PFA_BIN:
- .endif
-003f37 3feb .dw XT_TWO
-003f38 3ebd .dw XT_BASE
-003f39 3881 .dw XT_STORE
-003f3a 3820 .dw XT_EXIT
- .include "words/decimal.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DECIMAL:
-003f3b ff07 .dw $ff07
-003f3c 6564
-003f3d 6963
-003f3e 616d
-003f3f 006c .db "decimal",0
-003f40 3f32 .dw VE_HEAD
- .set VE_HEAD = VE_DECIMAL
- XT_DECIMAL:
-003f41 3801 .dw DO_COLON
- PFA_DECIMAL:
- .endif
-003f42 383d .dw XT_DOLITERAL
-003f43 000a .dw 10
-003f44 3ebd .dw XT_BASE
-003f45 3881 .dw XT_STORE
-003f46 3820 .dw XT_EXIT
- .include "words/hex.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HEX:
-003f47 ff03 .dw $ff03
-003f48 6568
-003f49 0078 .db "hex",0
-003f4a 3f3b .dw VE_HEAD
- .set VE_HEAD = VE_HEX
- XT_HEX:
-003f4b 3801 .dw DO_COLON
- PFA_HEX:
- .endif
-003f4c 383d .dw XT_DOLITERAL
-003f4d 0010 .dw 16
-003f4e 3ebd .dw XT_BASE
-003f4f 3881 .dw XT_STORE
-003f50 3820 .dw XT_EXIT
- .include "words/bl.asm"
-
- ; Character IO
- ; put ascii code of the blank to the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BL:
-003f51 ff02 .dw $ff02
-003f52 6c62 .db "bl"
-003f53 3f47 .dw VE_HEAD
- .set VE_HEAD = VE_BL
- XT_BL:
-003f54 3848 .dw PFA_DOVARIABLE
- PFA_BL:
- .endif
-003f55 0020 .dw 32
-
- .include "words/turnkey.asm"
-
- ; System Value
- ; Deferred action during startup/reset
- VE_TURNKEY:
-003f56 ff07 .dw $ff07
-003f57 7574
-003f58 6e72
-003f59 656b
-003f5a 0079 .db "turnkey",0
-003f5b 3f51 .dw VE_HEAD
- .set VE_HEAD = VE_TURNKEY
- XT_TURNKEY:
-003f5c 3dff .dw PFA_DODEFER1
- PFA_TURNKEY:
-003f5d 0042 .dw CFG_TURNKEY
-003f5e 3da0 .dw XT_EDEFERFETCH
-003f5f 3daa .dw XT_EDEFERSTORE
- .include "words/to-upper.asm"
-
- ; String
- ; if c is a lowercase letter convert it to uppercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TOUPPER:
-003f60 ff07 .dw $ff07
-003f61 6f74
-003f62 7075
-003f63 6570
-003f64 0072 .db "toupper",0
-003f65 3f56 .dw VE_HEAD
- .set VE_HEAD = VE_TOUPPER
- XT_TOUPPER:
-003f66 3801 .dw DO_COLON
- PFA_TOUPPER:
- .endif
-003f67 38b1 .dw XT_DUP
-003f68 383d .dw XT_DOLITERAL
-003f69 0061 .dw 'a'
-003f6a 383d .dw XT_DOLITERAL
-003f6b 007b .dw 'z'+1
-003f6c 3e57 .dw XT_WITHIN
-003f6d 3836 .dw XT_DOCONDBRANCH
-003f6e 3f72 DEST(PFA_TOUPPER0)
-003f6f 383d .dw XT_DOLITERAL
-003f70 00df .dw 223 ; inverse of 0x20: 0xdf
-003f71 3a13 .dw XT_AND
- PFA_TOUPPER0:
-003f72 3820 .dw XT_EXIT
- .include "words/to-lower.asm"
-
- ; String
- ; if C is an uppercase letter convert it to lowercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_TOLOWER:
-003f73 ff07 .dw $ff07
-003f74 6f74
-003f75 6f6c
-003f76 6577
-003f77 0072 .db "tolower",0
-003f78 3f60 .dw VE_HEAD
- .set VE_HEAD = VE_TOLOWER
- XT_TOLOWER:
-003f79 3801 .dw DO_COLON
- PFA_TOLOWER:
- .endif
-003f7a 38b1 .dw XT_DUP
-003f7b 383d .dw XT_DOLITERAL
-003f7c 0041 .dw 'A'
-003f7d 383d .dw XT_DOLITERAL
-003f7e 005b .dw 'Z'+1
-003f7f 3e57 .dw XT_WITHIN
-003f80 3836 .dw XT_DOCONDBRANCH
-003f81 3f85 DEST(PFA_TOLOWER0)
-003f82 383d .dw XT_DOLITERAL
-003f83 0020 .dw 32
-003f84 3a1c .dw XT_OR
- PFA_TOLOWER0:
-003f85 3820 .dw XT_EXIT
-
- .include "words/q-stack.asm"
-
- ; Tools
- ; check data stack depth and exit to quit if underrun
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QSTACK:
-003f86 ff06 .dw $ff06
-003f87 733f
-003f88 6174
-003f89 6b63 .db "?stack"
-003f8a 3f73 .dw VE_HEAD
- .set VE_HEAD = VE_QSTACK
- XT_QSTACK:
-003f8b 3801 .dw DO_COLON
- PFA_QSTACK:
- .endif
-003f8c 05ed .dw XT_DEPTH
-003f8d 3921 .dw XT_ZEROLESS
-003f8e 3836 .dw XT_DOCONDBRANCH
-003f8f 3f93 DEST(PFA_QSTACK1)
-003f90 383d .dw XT_DOLITERAL
-003f91 fffc .dw -4
-003f92 3d86 .dw XT_THROW
- PFA_QSTACK1:
-003f93 3820 .dw XT_EXIT
- .include "words/bounds.asm"
-
- ; Tools
- ; convert a string to an address range
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BOUNDS:
-003f94 ff06 .dw $ff06
-003f95 6f62
-003f96 6e75
-003f97 7364 .db "bounds"
-003f98 3f86 .dw VE_HEAD
- .set VE_HEAD = VE_BOUNDS
- XT_BOUNDS:
-003f99 3801 .dw DO_COLON
- PFA_BOUNDS:
- .endif
-003f9a 38cf .dw XT_OVER
-003f9b 399d .dw XT_PLUS
-003f9c 38c4 .dw XT_SWAP
-003f9d 3820 .dw XT_EXIT
- .include "words/cr.asm"
-
- ; Character IO
- ; cause subsequent output appear at the beginning of the next line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CR:
-003f9e ff02 .dw 0xff02
-003f9f 7263 .db "cr"
-003fa0 3f94 .dw VE_HEAD
- .set VE_HEAD = VE_CR
- XT_CR:
-003fa1 3801 .dw DO_COLON
- PFA_CR:
- .endif
-
-003fa2 383d .dw XT_DOLITERAL
-003fa3 000d .dw 13
-003fa4 3ef2 .dw XT_EMIT
-003fa5 383d .dw XT_DOLITERAL
-003fa6 000a .dw 10
-003fa7 3ef2 .dw XT_EMIT
-003fa8 3820 .dw XT_EXIT
- .include "words/space.asm"
-
- ; Character IO
- ; emits a space (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACE:
-003fa9 ff05 .dw $ff05
-003faa 7073
-003fab 6361
-003fac 0065 .db "space",0
-003fad 3f9e .dw VE_HEAD
- .set VE_HEAD = VE_SPACE
- XT_SPACE:
-003fae 3801 .dw DO_COLON
- PFA_SPACE:
- .endif
-003faf 3f54 .dw XT_BL
-003fb0 3ef2 .dw XT_EMIT
-003fb1 3820 .dw XT_EXIT
- .include "words/spaces.asm"
-
- ; Character IO
- ; emits n space(s) (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACES:
-003fb2 ff06 .dw $ff06
-003fb3 7073
-003fb4 6361
-003fb5 7365 .db "spaces"
-003fb6 3fa9 .dw VE_HEAD
- .set VE_HEAD = VE_SPACES
- XT_SPACES:
-003fb7 3801 .dw DO_COLON
- PFA_SPACES:
-
- .endif
- ;C SPACES n -- output n spaces
- ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ;
-003fb8 3954
-003fb9 3e4a .DW XT_ZERO, XT_MAX
-003fba 38b1
-003fbb 3836 SPCS1: .DW XT_DUP,XT_DOCONDBRANCH
-003fbc 3fc1 DEST(SPCS2)
-003fbd 3fae
-003fbe 3a35
-003fbf 382f .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH
-003fc0 3fba DEST(SPCS1)
-003fc1 38d9
-003fc2 3820 SPCS2: .DW XT_DROP,XT_EXIT
- .include "words/s-to-d.asm"
-
- ; Conversion
- ; extend (signed) single cell value to double cell
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_S2D:
-003fc3 ff03 .dw $ff03
-003fc4 3e73
-003fc5 0064 .db "s>d",0
-003fc6 3fb2 .dw VE_HEAD
- .set VE_HEAD = VE_S2D
- XT_S2D:
-003fc7 3801 .dw DO_COLON
- PFA_S2D:
- .endif
-003fc8 38b1 .dw XT_DUP
-003fc9 3921 .dw XT_ZEROLESS
-003fca 3820 .dw XT_EXIT
- .include "words/to-body.asm"
-
- ; Core
- ; get body from XT
- VE_TO_BODY:
-003fcb ff05 .dw $ff05
-003fcc 623e
-003fcd 646f
-003fce 0079 .db ">body",0
-003fcf 3fc3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_BODY
- XT_TO_BODY:
-003fd0 3a30 .dw PFA_1PLUS
- .elif AMFORTH_NRWW_SIZE>2000
- .else
- .endif
- ; now colon words
- ;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/2literal.asm"
-
- ; Compiler
- ; compile a cell pair literal in colon definitions
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2LITERAL:
-003fd1 0008 .dw $0008
-003fd2 6c32
-003fd3 7469
-003fd4 7265
-003fd5 6c61 .db "2literal"
-003fd6 3fcb .dw VE_HEAD
- .set VE_HEAD = VE_2LITERAL
- XT_2LITERAL:
-003fd7 3801 .dw DO_COLON
- PFA_2LITERAL:
- .endif
-003fd8 38c4 .dw XT_SWAP
-003fd9 077d .dw XT_LITERAL
-003fda 077d .dw XT_LITERAL
-003fdb 3820 .dw XT_EXIT
- .include "words/equal.asm"
-
- ; Compare
- ; compares two values for equality
- VE_EQUAL:
-003fdc ff01 .dw $ff01
-003fdd 003d .db "=",0
-003fde 3fd1 .dw VE_HEAD
- .set VE_HEAD = VE_EQUAL
- XT_EQUAL:
-003fdf 3801 .dw DO_COLON
- PFA_EQUAL:
-003fe0 3993 .dw XT_MINUS
-003fe1 391a .dw XT_ZEROEQUAL
-003fe2 3820 .dw XT_EXIT
- .include "words/num-constants.asm"
-
- .endif
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ONE:
-003fe3 ff01 .dw $ff01
-003fe4 0031 .db "1",0
-003fe5 3fdc .dw VE_HEAD
- .set VE_HEAD = VE_ONE
- XT_ONE:
-003fe6 3848 .dw PFA_DOVARIABLE
- PFA_ONE:
- .endif
-003fe7 0001 .DW 1
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TWO:
-003fe8 ff01 .dw $ff01
-003fe9 0032 .db "2",0
-003fea 3fe3 .dw VE_HEAD
- .set VE_HEAD = VE_TWO
- XT_TWO:
-003feb 3848 .dw PFA_DOVARIABLE
- PFA_TWO:
- .endif
-003fec 0002 .DW 2
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MINUSONE:
-003fed ff02 .dw $ff02
-003fee 312d .db "-1"
-003fef 3fe8 .dw VE_HEAD
- .set VE_HEAD = VE_MINUSONE
- XT_MINUSONE:
-003ff0 3848 .dw PFA_DOVARIABLE
- PFA_MINUSONE:
- .endif
-003ff1 ffff .DW -1
- .include "dict_appl_core.inc"
-
- ; do not delete it!
-
- .set flashlast = pc
- .if (pc>FLASHEND)
- .endif
-
- .dseg
- ; define a label for the 1st free ram address
- HERESTART:
- .eseg
- .include "amforth-eeprom.inc"
-000034 ff ff
- ; some configs
-000036 26 0b CFG_DP: .dw DPSTART ; Dictionary Pointer
-000038 c2 01 EE_HERE: .dw HERESTART ; Memory Allocation
-00003a 8e 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation
-00003c ce 09 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope
-00003e 5c 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set
- ; LEAVE stack is between data stack and return stack.
-000040 b0 08 CFG_LP0: .dw stackstart+1
-000042 78 0a CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY
-000044 ff 02 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries
-000046 48 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist
-000048 ed 3f CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist
- CFG_ORDERLISTLEN:
-00004a 01 00 .dw 1
- CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries
-00004c 48 00 .dw CFG_FORTHWORDLIST ; get/set-order
-00004e .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used
- CFG_RECOGNIZERLISTLEN:
-00005c 02 00 .dw 2
- CFG_RECOGNIZERLIST:
-00005e 70 06 .dw XT_REC_FIND
-000060 5c 06 .dw XT_REC_NUM
-000062 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used
-
- EE_STOREI:
-000066 7e 3b .dw XT_DO_STOREI ; Store a cell into flash
-
- ; MARKER saves everything up to here. Nothing beyond gets saved
- EE_MARKER:
-000068 68 00 .dw EE_MARKER
-
- ; default user area
- EE_INITUSER:
-00006a 00 00 .dw 0 ; USER_STATE
-00006c 00 00 .dw 0 ; USER_FOLLOWER
-00006e ff 08 .dw rstackstart ; USER_RP
-000070 af 08 .dw stackstart ; USER_SP0
-000072 af 08 .dw stackstart ; USER_SP
-
-000074 00 00 .dw 0 ; USER_HANDLER
-000076 0a 00 .dw 10 ; USER_BASE
-
-000078 a3 00 .dw XT_TX ; USER_EMIT
-00007a b1 00 .dw XT_TXQ ; USER_EMITQ
-00007c 78 00 .dw XT_RX ; USER_KEY
-00007e 93 00 .dw XT_RXQ ; USER_KEYQ
-000080 77 02 .dw XT_SOURCETIB ; USER_SOURCE
-000082 00 00 .dw 0 ; USER_G_IN
-000084 64 02 .dw XT_REFILLTIB ; USER_REFILL
-000086 c9 3c .dw XT_DEFAULT_PROMPTOK
-000088 e8 3c .dw XT_DEFAULT_PROMPTERROR
-00008a d8 3c .dw XT_DEFAULT_PROMPTREADY
-
- ; calculate baud rate error
- .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; smart round
- .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; effective baud rate
- .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; error in pro mille
-
- .if ((BAUD_ERROR>BAUD_MAXERROR) || (BAUD_ERROR<-BAUD_MAXERROR))
- .endif
- EE_UBRRVAL:
-00008c 19 00 .dw UBRR_VAL ; BAUDRATE
- ; 1st free address in EEPROM.
- EHERESTART:
- .cseg
-
-
-RESOURCE USE INFORMATION
-------------------------
-
-Notice:
-The register and instruction counts are symbol table hit counts,
-and hence implicitly used resources are not counted, eg, the
-'lpm' instruction without operands implicitly uses r0 and z,
-none of which are counted.
-
-x,y,z are separate entities in the symbol table and are
-counted separately from r26..r31 here.
-
-.dseg memory usage only counts static data declared with .byte
-
-"ATmega328P" register use summary:
-r0 : 25 r1 : 5 r2 : 10 r3 : 12 r4 : 4 r5 : 1 r6 : 0 r7 : 0
-r8 : 0 r9 : 0 r10: 1 r11: 6 r12: 0 r13: 0 r14: 22 r15: 20
-r16: 89 r17: 61 r18: 61 r19: 37 r20: 13 r21: 11 r22: 11 r23: 3
-r24: 212 r25: 145 r26: 28 r27: 17 r28: 7 r29: 4 r30: 90 r31: 49
-x : 4 y : 217 z : 50
-Registers used: 29 out of 35 (82.9%)
-
-"ATmega328P" instruction use summary:
-.lds : 0 .sts : 0 adc : 22 add : 17 adiw : 17 and : 4
-andi : 3 asr : 2 bclr : 0 bld : 0 brbc : 2 brbs : 7
-brcc : 3 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0
-brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3
-brne : 22 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
-brvs : 2 bset : 0 bst : 0 call : 2 cbi : 7 cbr : 1
-clc : 2 clh : 0 cli : 7 cln : 0 clr : 14 cls : 0
-clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10
-cpi : 2 cpse : 0 dec : 10 eor : 3 fmul : 0 fmuls : 0
-fmulsu: 0 icall : 0 ijmp : 1 in : 25 inc : 3 jmp : 13
-ld : 145 ldd : 4 ldi : 41 lds : 1 lpm : 16 lsl : 14
-lsr : 2 mov : 16 movw : 72 mul : 5 muls : 1 mulsu : 2
-neg : 0 nop : 0 or : 9 ori : 2 out : 22 pop : 49
-push : 43 rcall : 39 ret : 7 reti : 1 rjmp : 106 rol : 23
-ror : 6 sbc : 9 sbci : 3 sbi : 8 sbic : 3 sbis : 0
-sbiw : 16 sbr : 0 sbrc : 5 sbrs : 7 sec : 1 seh : 0
-sei : 1 sen : 0 ser : 4 ses : 0 set : 0 sev : 0
-sez : 0 sleep : 0 spm : 2 st : 81 std : 8 sts : 1
-sub : 6 subi : 3 swap : 0 tst : 0 wdr : 0
-Instructions used: 72 out of 113 (63.7%)
-
-"ATmega328P" memory use summary [bytes]:
-Segment Begin End Code Data Used Size Use%
----------------------------------------------------------------
-[.cseg] 0x000000 0x007fe4 2082 11710 13792 32768 42.1%
-[.dseg] 0x000100 0x0001c2 0 194 194 2048 9.5%
-[.eseg] 0x000000 0x00008e 0 142 142 1024 13.9%
-
-Assembly complete, 0 errors, 8 warnings
diff --git a/amforth-6.5/appl/eval-pollin/p328-16.map b/amforth-6.5/appl/eval-pollin/p328-16.map
deleted file mode 100644
index 4d9ad44..0000000
--- a/amforth-6.5/appl/eval-pollin/p328-16.map
+++ /dev/null
@@ -1,2054 +0,0 @@
-
-AVRASM ver. 2.1.52 p328-16.asm Sun Apr 30 20:10:15 2017
-
-
-SET DICT_COMPILER2 00000001
-SET cpu_msp430 00000000
-SET cpu_avr8 00000001
-SET USER_STATE 00000000
-SET USER_FOLLOWER 00000002
-SET USER_RP 00000004
-SET USER_SP0 00000006
-SET USER_SP 00000008
-SET USER_HANDLER 0000000a
-SET USER_BASE 0000000c
-SET USER_EMIT 0000000e
-SET USER_EMITQ 00000010
-SET USER_KEY 00000012
-SET USER_KEYQ 00000014
-SET USER_SOURCE 00000016
-SET USER_TO_IN 00000018
-SET USER_REFILL 0000001a
-SET USER_P_OK 0000001c
-SET USER_P_ERR 0000001e
-SET USER_P_RDY 00000020
-SET SYSUSERSIZE 00000022
-DEF zerol r2
-DEF zeroh r3
-DEF upl r4
-DEF uph r5
-DEF al r6
-DEF ah r7
-DEF bl r8
-DEF bh r9
-DEF mcu_boot r10
-DEF isrflag r11
-DEF temp4 r14
-DEF temp5 r15
-DEF temp0 r16
-DEF temp1 r17
-DEF temp2 r18
-DEF temp3 r19
-DEF temp6 r20
-DEF temp7 r21
-DEF tosl r24
-DEF tosh r25
-DEF wl r22
-DEF wh r23
-EQU SIGNATURE_000 0000001e
-EQU SIGNATURE_001 00000095
-EQU SIGNATURE_002 0000000f
-EQU UDR0 000000c6
-EQU UBRR0L 000000c4
-EQU UBRR0H 000000c5
-EQU UCSR0C 000000c2
-EQU UCSR0B 000000c1
-EQU UCSR0A 000000c0
-EQU TWAMR 000000bd
-EQU TWCR 000000bc
-EQU TWDR 000000bb
-EQU TWAR 000000ba
-EQU TWSR 000000b9
-EQU TWBR 000000b8
-EQU ASSR 000000b6
-EQU OCR2B 000000b4
-EQU OCR2A 000000b3
-EQU TCNT2 000000b2
-EQU TCCR2B 000000b1
-EQU TCCR2A 000000b0
-EQU OCR1BL 0000008a
-EQU OCR1BH 0000008b
-EQU OCR1AL 00000088
-EQU OCR1AH 00000089
-EQU ICR1L 00000086
-EQU ICR1H 00000087
-EQU TCNT1L 00000084
-EQU TCNT1H 00000085
-EQU TCCR1C 00000082
-EQU TCCR1B 00000081
-EQU TCCR1A 00000080
-EQU DIDR1 0000007f
-EQU DIDR0 0000007e
-EQU ADMUX 0000007c
-EQU ADCSRB 0000007b
-EQU ADCSRA 0000007a
-EQU ADCH 00000079
-EQU ADCL 00000078
-EQU TIMSK2 00000070
-EQU TIMSK1 0000006f
-EQU TIMSK0 0000006e
-EQU PCMSK1 0000006c
-EQU PCMSK2 0000006d
-EQU PCMSK0 0000006b
-EQU EICRA 00000069
-EQU PCICR 00000068
-EQU OSCCAL 00000066
-EQU PRR 00000064
-EQU CLKPR 00000061
-EQU WDTCSR 00000060
-EQU SREG 0000003f
-EQU SPL 0000003d
-EQU SPH 0000003e
-EQU SPMCSR 00000037
-EQU MCUCR 00000035
-EQU MCUSR 00000034
-EQU SMCR 00000033
-EQU ACSR 00000030
-EQU SPDR 0000002e
-EQU SPSR 0000002d
-EQU SPCR 0000002c
-EQU GPIOR2 0000002b
-EQU GPIOR1 0000002a
-EQU OCR0B 00000028
-EQU OCR0A 00000027
-EQU TCNT0 00000026
-EQU TCCR0B 00000025
-EQU TCCR0A 00000024
-EQU GTCCR 00000023
-EQU EEARH 00000022
-EQU EEARL 00000021
-EQU EEDR 00000020
-EQU EECR 0000001f
-EQU GPIOR0 0000001e
-EQU EIMSK 0000001d
-EQU EIFR 0000001c
-EQU PCIFR 0000001b
-EQU TIFR2 00000017
-EQU TIFR1 00000016
-EQU TIFR0 00000015
-EQU PORTD 0000000b
-EQU DDRD 0000000a
-EQU PIND 00000009
-EQU PORTC 00000008
-EQU DDRC 00000007
-EQU PINC 00000006
-EQU PORTB 00000005
-EQU DDRB 00000004
-EQU PINB 00000003
-EQU UDR0_0 00000000
-EQU UDR0_1 00000001
-EQU UDR0_2 00000002
-EQU UDR0_3 00000003
-EQU UDR0_4 00000004
-EQU UDR0_5 00000005
-EQU UDR0_6 00000006
-EQU UDR0_7 00000007
-EQU MPCM0 00000000
-EQU U2X0 00000001
-EQU UPE0 00000002
-EQU DOR0 00000003
-EQU FE0 00000004
-EQU UDRE0 00000005
-EQU TXC0 00000006
-EQU RXC0 00000007
-EQU TXB80 00000000
-EQU RXB80 00000001
-EQU UCSZ02 00000002
-EQU TXEN0 00000003
-EQU RXEN0 00000004
-EQU UDRIE0 00000005
-EQU TXCIE0 00000006
-EQU RXCIE0 00000007
-EQU UCPOL0 00000000
-EQU UCSZ00 00000001
-EQU UCPHA0 00000001
-EQU UCSZ01 00000002
-EQU UDORD0 00000002
-EQU USBS0 00000003
-EQU UPM00 00000004
-EQU UPM01 00000005
-EQU UMSEL00 00000006
-EQU UMSEL0 00000006
-EQU UMSEL01 00000007
-EQU UMSEL1 00000007
-EQU UBRR8 00000000
-EQU UBRR9 00000001
-EQU UBRR10 00000002
-EQU UBRR11 00000003
-EQU _UBRR0 00000000
-EQU _UBRR1 00000001
-EQU UBRR2 00000002
-EQU UBRR3 00000003
-EQU UBRR4 00000004
-EQU UBRR5 00000005
-EQU UBRR6 00000006
-EQU UBRR7 00000007
-EQU TWAM0 00000001
-EQU TWAMR0 00000001
-EQU TWAM1 00000002
-EQU TWAMR1 00000002
-EQU TWAM2 00000003
-EQU TWAMR2 00000003
-EQU TWAM3 00000004
-EQU TWAMR3 00000004
-EQU TWAM4 00000005
-EQU TWAMR4 00000005
-EQU TWAM5 00000006
-EQU TWAMR5 00000006
-EQU TWAM6 00000007
-EQU TWAMR6 00000007
-EQU TWBR0 00000000
-EQU TWBR1 00000001
-EQU TWBR2 00000002
-EQU TWBR3 00000003
-EQU TWBR4 00000004
-EQU TWBR5 00000005
-EQU TWBR6 00000006
-EQU TWBR7 00000007
-EQU TWIE 00000000
-EQU TWEN 00000002
-EQU TWWC 00000003
-EQU TWSTO 00000004
-EQU TWSTA 00000005
-EQU TWEA 00000006
-EQU TWINT 00000007
-EQU TWPS0 00000000
-EQU TWPS1 00000001
-EQU TWS3 00000003
-EQU TWS4 00000004
-EQU TWS5 00000005
-EQU TWS6 00000006
-EQU TWS7 00000007
-EQU TWD0 00000000
-EQU TWD1 00000001
-EQU TWD2 00000002
-EQU TWD3 00000003
-EQU TWD4 00000004
-EQU TWD5 00000005
-EQU TWD6 00000006
-EQU TWD7 00000007
-EQU TWGCE 00000000
-EQU TWA0 00000001
-EQU TWA1 00000002
-EQU TWA2 00000003
-EQU TWA3 00000004
-EQU TWA4 00000005
-EQU TWA5 00000006
-EQU TWA6 00000007
-EQU TOIE1 00000000
-EQU OCIE1A 00000001
-EQU OCIE1B 00000002
-EQU ICIE1 00000005
-EQU TOV1 00000000
-EQU OCF1A 00000001
-EQU OCF1B 00000002
-EQU ICF1 00000005
-EQU WGM10 00000000
-EQU WGM11 00000001
-EQU COM1B0 00000004
-EQU COM1B1 00000005
-EQU COM1A0 00000006
-EQU COM1A1 00000007
-EQU CS10 00000000
-EQU CS11 00000001
-EQU CS12 00000002
-EQU WGM12 00000003
-EQU WGM13 00000004
-EQU ICES1 00000006
-EQU ICNC1 00000007
-EQU FOC1B 00000006
-EQU FOC1A 00000007
-EQU PSRSYNC 00000000
-EQU TSM 00000007
-EQU TOIE2 00000000
-EQU TOIE2A 00000000
-EQU OCIE2A 00000001
-EQU OCIE2B 00000002
-EQU TOV2 00000000
-EQU OCF2A 00000001
-EQU OCF2B 00000002
-EQU WGM20 00000000
-EQU WGM21 00000001
-EQU COM2B0 00000004
-EQU COM2B1 00000005
-EQU COM2A0 00000006
-EQU COM2A1 00000007
-EQU CS20 00000000
-EQU CS21 00000001
-EQU CS22 00000002
-EQU WGM22 00000003
-EQU FOC2B 00000006
-EQU FOC2A 00000007
-EQU TCNT2_0 00000000
-EQU TCNT2_1 00000001
-EQU TCNT2_2 00000002
-EQU TCNT2_3 00000003
-EQU TCNT2_4 00000004
-EQU TCNT2_5 00000005
-EQU TCNT2_6 00000006
-EQU TCNT2_7 00000007
-EQU OCR2A_0 00000000
-EQU OCR2A_1 00000001
-EQU OCR2A_2 00000002
-EQU OCR2A_3 00000003
-EQU OCR2A_4 00000004
-EQU OCR2A_5 00000005
-EQU OCR2A_6 00000006
-EQU OCR2A_7 00000007
-EQU OCR2B_0 00000000
-EQU OCR2B_1 00000001
-EQU OCR2B_2 00000002
-EQU OCR2B_3 00000003
-EQU OCR2B_4 00000004
-EQU OCR2B_5 00000005
-EQU OCR2B_6 00000006
-EQU OCR2B_7 00000007
-EQU TCR2BUB 00000000
-EQU TCR2AUB 00000001
-EQU OCR2BUB 00000002
-EQU OCR2AUB 00000003
-EQU TCN2UB 00000004
-EQU AS2 00000005
-EQU EXCLK 00000006
-EQU PSRASY 00000001
-EQU PSR2 00000001
-EQU MUX0 00000000
-EQU MUX1 00000001
-EQU MUX2 00000002
-EQU MUX3 00000003
-EQU ADLAR 00000005
-EQU REFS0 00000006
-EQU REFS1 00000007
-EQU ADPS0 00000000
-EQU ADPS1 00000001
-EQU ADPS2 00000002
-EQU ADIE 00000003
-EQU ADIF 00000004
-EQU ADATE 00000005
-EQU ADSC 00000006
-EQU ADEN 00000007
-EQU ADTS0 00000000
-EQU ADTS1 00000001
-EQU ADTS2 00000002
-EQU ACME 00000006
-EQU ADCH0 00000000
-EQU ADCH1 00000001
-EQU ADCH2 00000002
-EQU ADCH3 00000003
-EQU ADCH4 00000004
-EQU ADCH5 00000005
-EQU ADCH6 00000006
-EQU ADCH7 00000007
-EQU ADCL0 00000000
-EQU ADCL1 00000001
-EQU ADCL2 00000002
-EQU ADCL3 00000003
-EQU ADCL4 00000004
-EQU ADCL5 00000005
-EQU ADCL6 00000006
-EQU ADCL7 00000007
-EQU ADC0D 00000000
-EQU ADC1D 00000001
-EQU ADC2D 00000002
-EQU ADC3D 00000003
-EQU ADC4D 00000004
-EQU ADC5D 00000005
-EQU ACIS0 00000000
-EQU ACIS1 00000001
-EQU ACIC 00000002
-EQU ACIE 00000003
-EQU ACI 00000004
-EQU ACO 00000005
-EQU ACBG 00000006
-EQU ACD 00000007
-EQU AIN0D 00000000
-EQU AIN1D 00000001
-EQU PORTB0 00000000
-EQU PB0 00000000
-EQU PORTB1 00000001
-EQU PB1 00000001
-EQU PORTB2 00000002
-EQU PB2 00000002
-EQU PORTB3 00000003
-EQU PB3 00000003
-EQU PORTB4 00000004
-EQU PB4 00000004
-EQU PORTB5 00000005
-EQU PB5 00000005
-EQU PORTB6 00000006
-EQU PB6 00000006
-EQU PORTB7 00000007
-EQU PB7 00000007
-EQU DDB0 00000000
-EQU DDB1 00000001
-EQU DDB2 00000002
-EQU DDB3 00000003
-EQU DDB4 00000004
-EQU DDB5 00000005
-EQU DDB6 00000006
-EQU DDB7 00000007
-EQU PINB0 00000000
-EQU PINB1 00000001
-EQU PINB2 00000002
-EQU PINB3 00000003
-EQU PINB4 00000004
-EQU PINB5 00000005
-EQU PINB6 00000006
-EQU PINB7 00000007
-EQU PORTC0 00000000
-EQU PC0 00000000
-EQU PORTC1 00000001
-EQU PC1 00000001
-EQU PORTC2 00000002
-EQU PC2 00000002
-EQU PORTC3 00000003
-EQU PC3 00000003
-EQU PORTC4 00000004
-EQU PC4 00000004
-EQU PORTC5 00000005
-EQU PC5 00000005
-EQU PORTC6 00000006
-EQU PC6 00000006
-EQU DDC0 00000000
-EQU DDC1 00000001
-EQU DDC2 00000002
-EQU DDC3 00000003
-EQU DDC4 00000004
-EQU DDC5 00000005
-EQU DDC6 00000006
-EQU PINC0 00000000
-EQU PINC1 00000001
-EQU PINC2 00000002
-EQU PINC3 00000003
-EQU PINC4 00000004
-EQU PINC5 00000005
-EQU PINC6 00000006
-EQU PORTD0 00000000
-EQU PD0 00000000
-EQU PORTD1 00000001
-EQU PD1 00000001
-EQU PORTD2 00000002
-EQU PD2 00000002
-EQU PORTD3 00000003
-EQU PD3 00000003
-EQU PORTD4 00000004
-EQU PD4 00000004
-EQU PORTD5 00000005
-EQU PD5 00000005
-EQU PORTD6 00000006
-EQU PD6 00000006
-EQU PORTD7 00000007
-EQU PD7 00000007
-EQU DDD0 00000000
-EQU DDD1 00000001
-EQU DDD2 00000002
-EQU DDD3 00000003
-EQU DDD4 00000004
-EQU DDD5 00000005
-EQU DDD6 00000006
-EQU DDD7 00000007
-EQU PIND0 00000000
-EQU PIND1 00000001
-EQU PIND2 00000002
-EQU PIND3 00000003
-EQU PIND4 00000004
-EQU PIND5 00000005
-EQU PIND6 00000006
-EQU PIND7 00000007
-EQU TOIE0 00000000
-EQU OCIE0A 00000001
-EQU OCIE0B 00000002
-EQU TOV0 00000000
-EQU OCF0A 00000001
-EQU OCF0B 00000002
-EQU WGM00 00000000
-EQU WGM01 00000001
-EQU COM0B0 00000004
-EQU COM0B1 00000005
-EQU COM0A0 00000006
-EQU COM0A1 00000007
-EQU CS00 00000000
-EQU CS01 00000001
-EQU CS02 00000002
-EQU WGM02 00000003
-EQU FOC0B 00000006
-EQU FOC0A 00000007
-EQU TCNT0_0 00000000
-EQU TCNT0_1 00000001
-EQU TCNT0_2 00000002
-EQU TCNT0_3 00000003
-EQU TCNT0_4 00000004
-EQU TCNT0_5 00000005
-EQU TCNT0_6 00000006
-EQU TCNT0_7 00000007
-EQU OCR0A_0 00000000
-EQU OCR0A_1 00000001
-EQU OCR0A_2 00000002
-EQU OCR0A_3 00000003
-EQU OCR0A_4 00000004
-EQU OCR0A_5 00000005
-EQU OCR0A_6 00000006
-EQU OCR0A_7 00000007
-EQU OCR0B_0 00000000
-EQU OCR0B_1 00000001
-EQU OCR0B_2 00000002
-EQU OCR0B_3 00000003
-EQU OCR0B_4 00000004
-EQU OCR0B_5 00000005
-EQU OCR0B_6 00000006
-EQU OCR0B_7 00000007
-EQU PSR10 00000000
-EQU ISC00 00000000
-EQU ISC01 00000001
-EQU ISC10 00000002
-EQU ISC11 00000003
-EQU INT0 00000000
-EQU INT1 00000001
-EQU INTF0 00000000
-EQU INTF1 00000001
-EQU PCIE0 00000000
-EQU PCIE1 00000001
-EQU PCIE2 00000002
-EQU PCINT16 00000000
-EQU PCINT17 00000001
-EQU PCINT18 00000002
-EQU PCINT19 00000003
-EQU PCINT20 00000004
-EQU PCINT21 00000005
-EQU PCINT22 00000006
-EQU PCINT23 00000007
-EQU PCINT8 00000000
-EQU PCINT9 00000001
-EQU PCINT10 00000002
-EQU PCINT11 00000003
-EQU PCINT12 00000004
-EQU PCINT13 00000005
-EQU PCINT14 00000006
-EQU PCINT0 00000000
-EQU PCINT1 00000001
-EQU PCINT2 00000002
-EQU PCINT3 00000003
-EQU PCINT4 00000004
-EQU PCINT5 00000005
-EQU PCINT6 00000006
-EQU PCINT7 00000007
-EQU PCIF0 00000000
-EQU PCIF1 00000001
-EQU PCIF2 00000002
-EQU SPDR0 00000000
-EQU SPDR1 00000001
-EQU SPDR2 00000002
-EQU SPDR3 00000003
-EQU SPDR4 00000004
-EQU SPDR5 00000005
-EQU SPDR6 00000006
-EQU SPDR7 00000007
-EQU SPI2X 00000000
-EQU WCOL 00000006
-EQU SPIF 00000007
-EQU SPR0 00000000
-EQU SPR1 00000001
-EQU CPHA 00000002
-EQU CPOL 00000003
-EQU MSTR 00000004
-EQU DORD 00000005
-EQU SPE 00000006
-EQU SPIE 00000007
-EQU WDP0 00000000
-EQU WDP1 00000001
-EQU WDP2 00000002
-EQU WDE 00000003
-EQU WDCE 00000004
-EQU WDP3 00000005
-EQU WDIE 00000006
-EQU WDIF 00000007
-EQU SREG_C 00000000
-EQU SREG_Z 00000001
-EQU SREG_N 00000002
-EQU SREG_V 00000003
-EQU SREG_S 00000004
-EQU SREG_H 00000005
-EQU SREG_T 00000006
-EQU SREG_I 00000007
-EQU CAL0 00000000
-EQU CAL1 00000001
-EQU CAL2 00000002
-EQU CAL3 00000003
-EQU CAL4 00000004
-EQU CAL5 00000005
-EQU CAL6 00000006
-EQU CAL7 00000007
-EQU CLKPS0 00000000
-EQU CLKPS1 00000001
-EQU CLKPS2 00000002
-EQU CLKPS3 00000003
-EQU CLKPCE 00000007
-EQU SELFPRGEN 00000000
-EQU PGERS 00000001
-EQU PGWRT 00000002
-EQU BLBSET 00000003
-EQU RWWSRE 00000004
-EQU RWWSB 00000006
-EQU SPMIE 00000007
-EQU IVCE 00000000
-EQU IVSEL 00000001
-EQU PUD 00000004
-EQU BODSE 00000005
-EQU BODS 00000006
-EQU PORF 00000000
-EQU EXTRF 00000001
-EQU EXTREF 00000001
-EQU BORF 00000002
-EQU WDRF 00000003
-EQU SE 00000000
-EQU SM0 00000001
-EQU SM1 00000002
-EQU SM2 00000003
-EQU GPIOR20 00000000
-EQU GPIOR21 00000001
-EQU GPIOR22 00000002
-EQU GPIOR23 00000003
-EQU GPIOR24 00000004
-EQU GPIOR25 00000005
-EQU GPIOR26 00000006
-EQU GPIOR27 00000007
-EQU GPIOR10 00000000
-EQU GPIOR11 00000001
-EQU GPIOR12 00000002
-EQU GPIOR13 00000003
-EQU GPIOR14 00000004
-EQU GPIOR15 00000005
-EQU GPIOR16 00000006
-EQU GPIOR17 00000007
-EQU GPIOR00 00000000
-EQU GPIOR01 00000001
-EQU GPIOR02 00000002
-EQU GPIOR03 00000003
-EQU GPIOR04 00000004
-EQU GPIOR05 00000005
-EQU GPIOR06 00000006
-EQU GPIOR07 00000007
-EQU PRADC 00000000
-EQU PRUSART0 00000001
-EQU PRSPI 00000002
-EQU PRTIM1 00000003
-EQU PRTIM0 00000005
-EQU PRTIM2 00000006
-EQU PRTWI 00000007
-EQU EEAR0 00000000
-EQU EEAR1 00000001
-EQU EEAR2 00000002
-EQU EEAR3 00000003
-EQU EEAR4 00000004
-EQU EEAR5 00000005
-EQU EEAR6 00000006
-EQU EEAR7 00000007
-EQU EEAR8 00000000
-EQU EEAR9 00000001
-EQU EEDR0 00000000
-EQU EEDR1 00000001
-EQU EEDR2 00000002
-EQU EEDR3 00000003
-EQU EEDR4 00000004
-EQU EEDR5 00000005
-EQU EEDR6 00000006
-EQU EEDR7 00000007
-EQU EERE 00000000
-EQU EEPE 00000001
-EQU EEMPE 00000002
-EQU EERIE 00000003
-EQU EEPM0 00000004
-EQU EEPM1 00000005
-EQU LB1 00000000
-EQU LB2 00000001
-EQU BLB01 00000002
-EQU BLB02 00000003
-EQU BLB11 00000004
-EQU BLB12 00000005
-EQU CKSEL0 00000000
-EQU CKSEL1 00000001
-EQU CKSEL2 00000002
-EQU CKSEL3 00000003
-EQU SUT0 00000004
-EQU SUT1 00000005
-EQU CKOUT 00000006
-EQU CKDIV8 00000007
-EQU BOOTRST 00000000
-EQU BOOTSZ0 00000001
-EQU BOOTSZ1 00000002
-EQU EESAVE 00000003
-EQU WDTON 00000004
-EQU SPIEN 00000005
-EQU DWEN 00000006
-EQU RSTDISBL 00000007
-EQU BODLEVEL0 00000000
-EQU BODLEVEL1 00000001
-EQU BODLEVEL2 00000002
-DEF XH r27
-DEF XL r26
-DEF YH r29
-DEF YL r28
-DEF ZH r31
-DEF ZL r30
-EQU FLASHEND 00003fff
-EQU IOEND 000000ff
-EQU SRAM_START 00000100
-EQU SRAM_SIZE 00000800
-EQU RAMEND 000008ff
-EQU XRAMEND 00000000
-EQU E2END 000003ff
-EQU EEPROMEND 000003ff
-EQU EEADRBITS 0000000a
-EQU NRWW_START_ADDR 00003800
-EQU NRWW_STOP_ADDR 00003fff
-EQU RWW_START_ADDR 00000000
-EQU RWW_STOP_ADDR 000037ff
-EQU PAGESIZE 00000040
-EQU FIRSTBOOTSTART 00003f00
-EQU SECONDBOOTSTART 00003e00
-EQU THIRDBOOTSTART 00003c00
-EQU FOURTHBOOTSTART 00003800
-EQU SMALLBOOTSTART 00003f00
-EQU LARGEBOOTSTART 00003800
-EQU INT0addr 00000002
-EQU INT1addr 00000004
-EQU PCI0addr 00000006
-EQU PCI1addr 00000008
-EQU PCI2addr 0000000a
-EQU WDTaddr 0000000c
-EQU OC2Aaddr 0000000e
-EQU OC2Baddr 00000010
-EQU OVF2addr 00000012
-EQU ICP1addr 00000014
-EQU OC1Aaddr 00000016
-EQU OC1Baddr 00000018
-EQU OVF1addr 0000001a
-EQU OC0Aaddr 0000001c
-EQU OC0Baddr 0000001e
-EQU OVF0addr 00000020
-EQU SPIaddr 00000022
-EQU URXCaddr 00000024
-EQU UDREaddr 00000026
-EQU UTXCaddr 00000028
-EQU ADCCaddr 0000002a
-EQU ERDYaddr 0000002c
-EQU ACIaddr 0000002e
-EQU TWIaddr 00000030
-EQU SPMRaddr 00000032
-EQU INT_VECTORS_SIZE 00000034
-EQU ramstart 00000100
-EQU CELLSIZE 00000002
-SET WANT_USART0 00000000
-SET WANT_TWI 00000000
-SET WANT_TIMER_COUNTER_1 00000000
-SET WANT_TIMER_COUNTER_2 00000000
-SET WANT_AD_CONVERTER 00000000
-SET WANT_ANALOG_COMPARATOR 00000000
-SET WANT_PORTB 00000000
-SET WANT_PORTC 00000000
-SET WANT_PORTD 00000000
-SET WANT_TIMER_COUNTER_0 00000000
-SET WANT_EXTERNAL_INTERRUPT 00000000
-SET WANT_SPI 00000000
-SET WANT_WATCHDOG 00000000
-SET WANT_CPU 00000000
-SET WANT_EEPROM 00000000
-EQU intvecsize 00000002
-EQU pclen 00000002
-CSEG isr 00000129
-EQU INTVECTORS 0000001a
-EQU SPMEN 00000000
-CSEG mcu_info 00000033
-CSEG mcu_ramsize 00000033
-CSEG mcu_eepromsize 00000034
-CSEG mcu_maxdp 00000035
-CSEG mcu_numints 00000036
-CSEG mcu_name 00000037
-SET codestart 0000003d
-SET WANT_INTERRUPTS 00000001
-SET WANT_INTERRUPT_COUNTERS 00000000
-SET WANT_ISR_RX 00000001
-SET WANT_IGNORECASE 00000000
-SET WANT_UNIFIED 00000000
-SET TIB_SIZE 0000005a
-SET APPUSERSIZE 0000000a
-SET rstackstart 000008ff
-SET stackstart 000008af
-SET NUMWORDLISTS 00000008
-SET NUMRECOGNIZERS 00000004
-SET BAUD 00009600
-SET BAUD_MAXERROR 0000001e
-SET VE_HEAD 00003fed
-SET VE_ENVHEAD 000002ff
-SET AMFORTH_RO_SEG 00003801
-EQU F_CPU 00f42400
-EQU TIMER_INT 00000012
-EQU BAUDRATE_LOW 000000c4
-EQU BAUDRATE_HIGH 000000c5
-EQU USART_C 000000c2
-EQU USART_B 000000c1
-EQU USART_A 000000c0
-EQU USART_DATA 000000c6
-EQU bm_USART_RXRD 00000080
-EQU bm_USART_TXRD 00000020
-EQU bm_ENABLE_TX 00000008
-EQU bm_ENABLE_RX 00000010
-EQU bm_ENABLE_INT_RX 00000080
-EQU bm_ENABLE_INT_TX 00000020
-EQU bm_USARTC_en 00000000
-EQU bm_ASYNC 00000000
-EQU bm_SYNC 00000040
-EQU bm_NO_PARITY 00000000
-EQU bm_EVEN_PARITY 00000020
-EQU bm_ODD_PARITY 00000030
-EQU bm_1STOPBIT 00000000
-EQU bm_2STOPBIT 00000008
-EQU bm_5BIT 00000000
-EQU bm_6BIT 00000002
-EQU bm_7BIT 00000004
-EQU bm_8BIT 00000006
-SET USART_C_VALUE 00000006
-SET USART_B_VALUE 00000098
-EQU usart_rx_size 00000010
-EQU usart_rx_mask 0000000f
-DSEG usart_rx_data 00000100
-DSEG usart_rx_in 00000110
-DSEG usart_rx_out 00000111
-CSEG VE_TO_RXBUF 0000003d
-CSEG XT_TO_RXBUF 00000043
-CSEG PFA_rx_tobuf 00000044
-CSEG DO_NEXT 00003805
-CSEG VE_ISR_RX 00000054
-CSEG XT_ISR_RX 00000059
-CSEG DO_COLON 00003801
-CSEG usart_rx_isr 0000005a
-CSEG XT_DOLITERAL 0000383d
-CSEG XT_CFETCH 00003898
-CSEG XT_DUP 000038b1
-CSEG XT_EQUAL 00003fdf
-CSEG XT_DOCONDBRANCH 00003836
-CSEG usart_rx_isr1 00000064
-CSEG XT_COLD 00003d38
-CSEG XT_EXIT 00003820
-CSEG XT_USART_INIT_RX_BUFFER 00000066
-CSEG PFA_USART_INIT_RX_BUFFER 00000067
-CSEG XT_INTSTORE 00003ca5
-CSEG XT_ZERO 00003954
-CSEG XT_FILL 00003e98
-CSEG VE_RX_BUFFER 00000073
-CSEG XT_RX_BUFFER 00000078
-CSEG PFA_RX_BUFFER 00000079
-CSEG XT_RXQ_BUFFER 00000093
-CSEG XT_PLUS 0000399d
-CSEG XT_SWAP 000038c4
-CSEG XT_1PLUS 00003a2f
-CSEG XT_AND 00003a13
-CSEG XT_CSTORE 0000388d
-CSEG VE_RXQ_BUFFER 0000008d
-CSEG PFA_RXQ_BUFFER 00000094
-CSEG XT_PAUSE 00003d30
-CSEG XT_NOTEQUAL 00003913
-SET XT_RX 00000078
-SET XT_RXQ 00000093
-SET XT_USART_INIT_RX 00000066
-CSEG VE_TX_POLL 0000009d
-CSEG XT_TX_POLL 000000a3
-CSEG PFA_TX_POLL 000000a4
-CSEG XT_TXQ_POLL 000000b1
-CSEG VE_TXQ_POLL 000000ab
-CSEG PFA_TXQ_POLL 000000b2
-SET XT_TX 000000a3
-SET XT_TXQ 000000b1
-SET XT_USART_INIT_TX 00000000
-CSEG VE_UBRR 000000ba
-CSEG XT_UBRR 000000be
-CSEG PFA_DOVALUE1 0000386f
-CSEG PFA_UBRR 000000bf
-ESEG EE_UBRRVAL 0000008c
-CSEG XT_EDEFERFETCH 00003da0
-CSEG XT_EDEFERSTORE 00003daa
-CSEG VE_USART 000000c2
-CSEG XT_USART 000000c7
-CSEG PFA_USART 000000c8
-CSEG XT_BYTESWAP 00003af9
-EQU OW_PORT 00000005
-EQU OW_BIT 00000004
-SET OW_DDR 00000004
-SET OW_PIN 00000003
-CSEG VE_OW_RESET 000000dd
-CSEG XT_OW_RESET 000000e3
-CSEG PFA_OW_RESET 000000e4
-SET cycles 00000000
-SET loop_cycles 00000fa0
-CSEG VE_OW_SLOT 00000101
-CSEG XT_OW_SLOT 00000107
-CSEG PFA_OW_SLOT 00000108
-CSEG PFA_OW_SLOT0 00000115
-SET AMFORTH_NRWW_SIZE 00000ffc
-SET corepc 00000129
-CSEG PFA_COLD 00003d39
-ESEG intvec 00000000
-DSEG intcnt 00000112
-CSEG VE_MPLUS 00000140
-CSEG XT_MPLUS 00000143
-CSEG PFA_MPLUS 00000144
-CSEG XT_S2D 00003fc7
-CSEG XT_DPLUS 00003c15
-CSEG VE_UDSTAR 00000147
-CSEG XT_UDSTAR 0000014b
-CSEG PFA_UDSTAR 0000014c
-CSEG XT_TO_R 000038ff
-CSEG XT_UMSTAR 000039e0
-CSEG XT_DROP 000038d9
-CSEG XT_R_FROM 000038f6
-CSEG XT_ROT 000038e1
-CSEG VE_UMAX 00000156
-CSEG XT_UMAX 0000015a
-CSEG PFA_UMAX 0000015b
-CSEG XT_2DUP 00003ec9
-CSEG XT_ULESS 0000395c
-CSEG UMAX1 00000160
-CSEG VE_UMIN 00000162
-CSEG XT_UMIN 00000166
-CSEG PFA_UMIN 00000167
-CSEG XT_UGREATER 00003967
-CSEG UMIN1 0000016c
-CSEG XT_IMMEDIATEQ 0000016e
-CSEG PFA_IMMEDIATEQ 0000016f
-CSEG XT_ZEROEQUAL 0000391a
-CSEG IMMEDIATEQ1 00000177
-CSEG XT_ONE 00003fe6
-CSEG XT_TRUE 0000394b
-CSEG VE_NAME2FLAGS 00000179
-CSEG XT_NAME2FLAGS 00000180
-CSEG PFA_NAME2FLAGS 00000181
-CSEG XT_FETCHI 00003bcb
-CSEG VE_DOT_VER 00000186
-CSEG XT_DOT_VER 0000018a
-CSEG PFA_DOT_VER 0000018b
-CSEG XT_ENV_FORTHNAME 000002da
-CSEG XT_ITYPE 00000403
-CSEG XT_SPACE 00003fae
-CSEG XT_BASE 00003ebd
-CSEG XT_FETCH 00003879
-CSEG XT_ENV_FORTHVERSION 000002e8
-CSEG XT_DECIMAL 00003f41
-CSEG XT_L_SHARP 00000321
-CSEG XT_SHARP 00000329
-CSEG XT_HOLD 00000312
-CSEG XT_SHARP_S 0000033f
-CSEG XT_SHARP_G 0000034a
-CSEG XT_TYPE 00000439
-CSEG XT_STORE 00003881
-CSEG XT_ENV_CPU 000002f0
-CSEG VE_NOOP 000001a1
-CSEG XT_NOOP 000001a5
-CSEG PFA_NOOP 000001a6
-CSEG VE_UNUSED 000001a7
-CSEG XT_UNUSED 000001ac
-CSEG PFA_UNUSED 000001ad
-CSEG XT_SP_FETCH 00003a8d
-CSEG XT_HERE 00003f23
-CSEG XT_MINUS 00003993
-CSEG VE_TO 000001b1
-CSEG XT_TO 000001b4
-CSEG PFA_TO 000001b5
-CSEG XT_TICK 00000448
-CSEG XT_TO_BODY 00003fd0
-CSEG XT_STATE 00003eb7
-CSEG PFA_TO1 000001c5
-CSEG XT_COMPILE 0000075c
-CSEG XT_DOTO 000001bf
-CSEG XT_COMMA 00000767
-CSEG PFA_DOTO 000001c0
-CSEG XT_ICELLPLUS 000001d1
-CSEG XT_EXECUTE 0000382a
-CSEG VE_ICELLPLUS 000001cb
-CSEG PFA_ICELLPLUS 000001d2
-CSEG VE_ICOMPARE 000001d4
-CSEG XT_ICOMPARE 000001da
-CSEG PFA_ICOMPARE 000001db
-CSEG XT_OVER 000038cf
-CSEG PFA_ICOMPARE_SAMELEN 000001e5
-CSEG XT_2DROP 00003ed2
-CSEG XT_QDOCHECK 00000826
-CSEG PFA_ICOMPARE_DONE 00000208
-CSEG XT_DODO 00003a9b
-CSEG PFA_ICOMPARE_LOOP 000001eb
-CSEG PFA_ICOMPARE_LASTCELL 000001f9
-CSEG PFA_ICOMPARE_NEXTLOOP 00000200
-CSEG XT_UNLOOP 00003ad4
-CSEG XT_CELLPLUS 00003c90
-CSEG XT_DOPLUSLOOP 00003aba
-CSEG VE_STAR 0000020b
-CSEG XT_STAR 0000020e
-CSEG PFA_STAR 0000020f
-CSEG XT_MSTAR 000039a6
-CSEG VE_J 00000212
-CSEG XT_J 00000215
-CSEG PFA_J 00000216
-CSEG XT_RP_FETCH 00003a76
-CSEG VE_DABS 00000222
-CSEG XT_DABS 00000226
-CSEG PFA_DABS 00000227
-CSEG XT_ZEROLESS 00003921
-CSEG PFA_DABS1 0000022c
-CSEG XT_DNEGATE 00000233
-CSEG VE_DNEGATE 0000022d
-CSEG PFA_DNEGATE 00000234
-CSEG XT_DINVERT 00003c3b
-CSEG VE_CMOVE 00000239
-CSEG XT_CMOVE 0000023e
-CSEG PFA_CMOVE 0000023f
-CSEG PFA_CMOVE1 0000024c
-CSEG PFA_CMOVE2 00000248
-CSEG VE_2SWAP 00000252
-CSEG XT_2SWAP 00000257
-CSEG PFA_2SWAP 00000258
-CSEG VE_REFILLTIB 0000025d
-CSEG XT_REFILLTIB 00000264
-CSEG PFA_REFILLTIB 00000265
-CSEG XT_TIB 00000280
-CSEG XT_ACCEPT 00000498
-CSEG XT_NUMBERTIB 00000286
-CSEG XT_TO_IN 00003ee2
-CSEG VE_SOURCETIB 00000270
-CSEG XT_SOURCETIB 00000277
-CSEG PFA_SOURCETIB 00000278
-CSEG VE_TIB 0000027c
-CSEG PFA_DOVARIABLE 00003848
-CSEG PFA_TIB 00000281
-DSEG ram_tib 0000012c
-CSEG VE_NUMBERTIB 00000282
-CSEG PFA_NUMBERTIB 00000287
-DSEG ram_sharptib 00000186
-CSEG VE_EE2RAM 00000288
-CSEG XT_EE2RAM 0000028d
-CSEG PFA_EE2RAM 0000028e
-CSEG PFA_EE2RAM_1 00000290
-CSEG XT_FETCHE 00003b5f
-CSEG XT_DOLOOP 00003ac9
-CSEG PFA_EE2RAM_2 0000029a
-CSEG VE_INIT_RAM 0000029c
-CSEG XT_INIT_RAM 000002a2
-CSEG PFA_INI_RAM 000002a3
-ESEG EE_INITUSER 0000006a
-CSEG XT_UP_FETCH 00003b02
-CSEG XT_2SLASH 00003a04
-CSEG VE_ENVIRONMENT 000002ab
-CSEG XT_ENVIRONMENT 000002b3
-CSEG PFA_ENVIRONMENT 000002b4
-ESEG CFG_ENVIRONMENT 00000044
-CSEG VE_ENVWORDLISTS 000002b5
-CSEG XT_ENVWORDLISTS 000002bc
-CSEG PFA_ENVWORDLISTS 000002bd
-CSEG VE_ENVSLASHPAD 000002c0
-CSEG XT_ENVSLASHPAD 000002c4
-CSEG PFA_ENVSLASHPAD 000002c5
-CSEG XT_PAD 00003ee8
-CSEG VE_ENVSLASHHOLD 000002c9
-CSEG XT_ENVSLASHHOLD 000002ce
-CSEG PFA_ENVSLASHHOLD 000002cf
-CSEG VE_ENV_FORTHNAME 000002d3
-CSEG PFA_EN_FORTHNAME 000002db
-CSEG XT_DOSLITERAL 000003d0
-CSEG VE_ENV_FORTHVERSION 000002e2
-CSEG PFA_EN_FORTHVERSION 000002e9
-CSEG VE_ENV_CPU 000002ec
-CSEG PFA_EN_CPU 000002f1
-CSEG XT_ICOUNT 0000042f
-CSEG VE_ENV_MCUINFO 000002f5
-CSEG XT_ENV_MCUINFO 000002fb
-CSEG PFA_EN_MCUINFO 000002fc
-CSEG VE_ENVUSERSIZE 000002ff
-CSEG XT_ENVUSERSIZE 00000304
-CSEG PFA_ENVUSERSIZE 00000305
-CSEG VE_HLD 00000308
-CSEG XT_HLD 0000030c
-CSEG PFA_HLD 0000030d
-DSEG ram_hld 00000188
-CSEG VE_HOLD 0000030e
-CSEG PFA_HOLD 00000313
-CSEG XT_1MINUS 00003a35
-CSEG VE_L_SHARP 0000031e
-CSEG PFA_L_SHARP 00000322
-CSEG VE_SHARP 00000326
-CSEG PFA_SHARP 0000032a
-CSEG XT_UDSLASHMOD 000003a6
-CSEG XT_LESS 0000396e
-CSEG PFA_SHARP1 00000337
-CSEG VE_SHARP_S 0000033c
-CSEG PFA_SHARP_S 00000340
-CSEG NUMS1 00000340
-CSEG XT_OR 00003a1c
-CSEG VE_SHARP_G 00000347
-CSEG PFA_SHARP_G 0000034b
-CSEG VE_SIGN 00000352
-CSEG XT_SIGN 00000356
-CSEG PFA_SIGN 00000357
-CSEG PFA_SIGN1 0000035d
-CSEG VE_DDOTR 0000035e
-CSEG XT_DDOTR 00000362
-CSEG PFA_DDOTR 00000363
-CSEG XT_TUCK 00003eda
-CSEG XT_SPACES 00003fb7
-CSEG VE_DOTR 00000371
-CSEG XT_DOTR 00000374
-CSEG PFA_DOTR 00000375
-CSEG VE_DDOT 0000037a
-CSEG XT_DDOT 0000037d
-CSEG PFA_DDOT 0000037e
-CSEG VE_DOT 00000382
-CSEG XT_DOT 00000385
-CSEG PFA_DOT 00000386
-CSEG VE_UDDOT 00000389
-CSEG XT_UDDOT 0000038d
-CSEG PFA_UDDOT 0000038e
-CSEG XT_UDDOTR 00000396
-CSEG VE_UDDOTR 00000392
-CSEG PFA_UDDOTR 00000397
-CSEG VE_UDSLASHMOD 000003a1
-CSEG PFA_UDSLASHMOD 000003a7
-CSEG XT_R_FETCH 00003908
-CSEG XT_UMSLASHMOD 000039c2
-CSEG VE_DIGITQ 000003b1
-CSEG XT_DIGITQ 000003b6
-CSEG PFA_DIGITQ 000003b7
-CSEG XT_TOUPPER 00003f66
-CSEG XT_GREATER 00003978
-CSEG PFA_DOSLITERAL 000003d1
-CSEG VE_SCOMMA 000003db
-CSEG XT_SCOMMA 000003de
-CSEG PFA_SCOMMA 000003df
-CSEG XT_DOSCOMMA 000003e2
-CSEG PFA_DOSCOMMA 000003e3
-CSEG XT_2STAR 00003a0b
-CSEG PFA_SCOMMA2 000003f5
-CSEG PFA_SCOMMA1 000003ef
-CSEG XT_GREATERZERO 00003928
-CSEG PFA_SCOMMA3 000003fc
-CSEG VE_ITYPE 000003fe
-CSEG PFA_ITYPE 00000404
-CSEG PFA_ITYPE2 00000417
-CSEG PFA_ITYPE1 0000040f
-CSEG XT_LOWEMIT 00000424
-CSEG XT_HIEMIT 00000420
-CSEG PFA_ITYPE3 0000041e
-CSEG PFA_HIEMIT 00000421
-CSEG PFA_LOWEMIT 00000425
-CSEG XT_EMIT 00003ef2
-CSEG VE_ICOUNT 0000042a
-CSEG PFA_ICOUNT 00000430
-CSEG VE_TYPE 00000435
-CSEG PFA_TYPE 0000043a
-CSEG XT_BOUNDS 00003f99
-CSEG PFA_TYPE2 00000444
-CSEG PFA_TYPE1 0000043f
-CSEG XT_I 00003aac
-CSEG VE_TICK 00000445
-CSEG PFA_TICK 00000449
-CSEG XT_PARSENAME 000005bb
-CSEG XT_FORTHRECOGNIZER 000005fe
-CSEG XT_RECOGNIZE 00000609
-CSEG XT_DT_NULL 00000696
-CSEG PFA_TICK1 0000045a
-CSEG XT_THROW 00003d86
-CSEG VE_CSKIP 0000045c
-CSEG XT_CSKIP 00000461
-CSEG PFA_CSKIP 00000462
-CSEG PFA_CSKIP1 00000463
-CSEG PFA_CSKIP2 00000470
-CSEG XT_SLASHSTRING 000005ac
-CSEG XT_DOBRANCH 0000382f
-CSEG VE_CSCAN 00000473
-CSEG XT_CSCAN 00000478
-CSEG PFA_CSCAN 00000479
-CSEG PFA_CSCAN1 0000047b
-CSEG PFA_CSCAN2 0000048d
-CSEG XT_NIP 000038f0
-CSEG VE_ACCEPT 00000493
-CSEG PFA_ACCEPT 00000499
-CSEG ACC1 0000049d
-CSEG XT_KEY 00003f03
-CSEG XT_CRLFQ 000004d9
-CSEG ACC5 000004cb
-CSEG ACC3 000004bb
-CSEG ACC6 000004b9
-CSEG XT_BS 000004d1
-CSEG ACC4 000004c9
-CSEG XT_BL 00003f54
-CSEG PFA_ACCEPT6 000004c2
-CSEG XT_CR 00003fa1
-CSEG VE_REFILL 000004e4
-CSEG XT_REFILL 000004e9
-CSEG PFA_DODEFER1 00003dff
-CSEG PFA_REFILL 000004ea
-CSEG XT_UDEFERFETCH 00003dc8
-CSEG XT_UDEFERSTORE 00003dd4
-CSEG VE_CHAR 000004ed
-CSEG XT_CHAR 000004f1
-CSEG PFA_CHAR 000004f2
-CSEG VE_NUMBER 000004f6
-CSEG XT_NUMBER 000004fb
-CSEG PFA_NUMBER 000004fc
-CSEG XT_QSIGN 0000053f
-CSEG XT_SET_BASE 00000552
-CSEG PFA_NUMBER0 00000512
-CSEG XT_2TO_R 00003b1e
-CSEG XT_2R_FROM 00003b2d
-CSEG XT_TO_NUMBER 00000570
-CSEG XT_QDUP 000038b9
-CSEG PFA_NUMBER1 00000534
-CSEG PFA_NUMBER2 0000052b
-CSEG PFA_NUMBER6 0000052c
-CSEG PFA_NUMBER3 00000528
-CSEG XT_TWO 00003feb
-CSEG PFA_NUMBER5 0000053a
-CSEG PFA_NUMBER4 00000539
-CSEG XT_NEGATE 00003e27
-CSEG PFA_QSIGN 00000540
-CSEG PFA_NUMBERSIGN_DONE 0000054b
-CSEG XT_BASES 0000054d
-CSEG PFA_DOCONSTANT 00003852
-CSEG PFA_SET_BASE 00000553
-CSEG XT_WITHIN 00003e57
-CSEG SET_BASE1 00000568
-CSEG SET_BASE2 00000569
-CSEG VE_TO_NUMBER 0000056a
-CSEG TONUM1 00000571
-CSEG TONUM3 00000588
-CSEG TONUM2 0000057c
-CSEG VE_PARSE 00000589
-CSEG XT_PARSE 0000058e
-CSEG PFA_PARSE 0000058f
-CSEG XT_SOURCE 000005a2
-CSEG XT_PLUSSTORE 00003a65
-CSEG VE_SOURCE 0000059d
-CSEG PFA_SOURCE 000005a3
-CSEG VE_SLASHSTRING 000005a6
-CSEG PFA_SLASHSTRING 000005ad
-CSEG VE_PARSENAME 000005b4
-CSEG PFA_PARSENAME 000005bc
-CSEG XT_SKIPSCANCHAR 000005bf
-CSEG PFA_SKIPSCANCHAR 000005c0
-CSEG VE_SP0 000005d1
-CSEG XT_SP0 000005d5
-CSEG PFA_SP0 000005d6
-CSEG VE_SP 000005d9
-CSEG XT_SP 000005dc
-CSEG PFA_DOUSER 00003858
-CSEG PFA_SP 000005dd
-CSEG VE_RP0 000005de
-CSEG XT_RP0 000005e2
-CSEG PFA_RP0 000005e3
-CSEG XT_DORP0 000005e6
-CSEG PFA_DORP0 000005e7
-CSEG VE_DEPTH 000005e8
-CSEG XT_DEPTH 000005ed
-CSEG PFA_DEPTH 000005ee
-CSEG VE_FORTHRECOGNIZER 000005f4
-CSEG PFA_FORTHRECOGNIZER 000005ff
-ESEG CFG_FORTHRECOGNIZER 0000003e
-CSEG VE_RECOGNIZE 00000602
-CSEG PFA_RECOGNIZE 0000060a
-CSEG XT_RECOGNIZE_A 00000614
-CSEG XT_MAPSTACK 000009a7
-CSEG PFA_RECOGNIZE1 00000613
-CSEG PFA_RECOGNIZE_A 00000615
-CSEG PFA_RECOGNIZE_A1 00000625
-CSEG VE_INTERPRET 00000629
-CSEG XT_INTERPRET 00000630
-CSEG PFA_INTERPRET 00000631
-CSEG PFA_INTERPRET2 00000641
-CSEG PFA_INTERPRET1 0000063c
-CSEG XT_QSTACK 00003f8b
-CSEG VE_DT_NUM 00000643
-CSEG XT_DT_NUM 00000648
-CSEG PFA_DT_NUM 00000649
-CSEG XT_LITERAL 0000077d
-CSEG VE_DT_DNUM 0000064c
-CSEG XT_DT_DNUM 00000652
-CSEG PFA_DT_DNUM 00000653
-CSEG XT_2LITERAL 00003fd7
-CSEG VE_REC_NUM 00000656
-CSEG XT_REC_NUM 0000065c
-CSEG PFA_REC_NUM 0000065d
-CSEG PFA_REC_NONUMBER 00000668
-CSEG PFA_REC_INTNUM2 00000666
-CSEG VE_REC_FIND 0000066a
-CSEG XT_REC_FIND 00000670
-CSEG PFA_REC_FIND 00000671
-CSEG XT_FINDXT 0000070b
-CSEG PFA_REC_WORD_FOUND 00000679
-CSEG XT_DT_XT 00000680
-CSEG VE_DT_XT 0000067b
-CSEG PFA_DT_XT 00000681
-CSEG XT_R_WORD_INTERPRET 00000684
-CSEG XT_R_WORD_COMPILE 00000688
-CSEG PFA_R_WORD_INTERPRET 00000685
-CSEG PFA_R_WORD_COMPILE 00000689
-CSEG PFA_R_WORD_COMPILE1 0000068e
-CSEG VE_DT_NULL 00000690
-CSEG PFA_DT_NULL 00000697
-CSEG XT_FAIL 0000069a
-CSEG PFA_FAIL 0000069b
-CSEG VE_SEARCH_WORDLIST 0000069e
-CSEG XT_SEARCH_WORDLIST 000006a8
-CSEG PFA_SEARCH_WORDLIST 000006a9
-CSEG XT_ISWORD 000006bd
-CSEG XT_TRAVERSEWORDLIST 000006da
-CSEG PFA_SEARCH_WORDLIST1 000006b7
-CSEG XT_NFA2CFA 00000701
-CSEG PFA_ISWORD 000006be
-CSEG XT_NAME2STRING 000006f5
-CSEG PFA_ISWORD3 000006cb
-CSEG VE_TRAVERSEWORDLIST 000006cf
-CSEG PFA_TRAVERSEWORDLIST 000006db
-CSEG PFA_TRAVERSEWORDLIST1 000006dc
-CSEG PFA_TRAVERSEWORDLIST2 000006eb
-CSEG XT_NFA2LFA 00000a16
-CSEG VE_NAME2STRING 000006ed
-CSEG PFA_NAME2STRING 000006f6
-CSEG VE_NFA2CFA 000006fb
-CSEG PFA_NFA2CFA 00000702
-CSEG VE_FINDXT 00000705
-CSEG PFA_FINDXT 0000070c
-CSEG XT_FINDXTA 00000717
-ESEG CFG_ORDERLISTLEN 0000004a
-CSEG PFA_FINDXT1 00000716
-CSEG PFA_FINDXTA 00000718
-CSEG PFA_FINDXTA1 00000724
-CSEG VE_NEWEST 00000725
-CSEG XT_NEWEST 0000072a
-CSEG PFA_NEWEST 0000072b
-DSEG ram_newest 0000018a
-CSEG VE_LATEST 0000072c
-CSEG XT_LATEST 00000731
-CSEG PFA_LATEST 00000732
-DSEG ram_latest 0000018e
-CSEG VE_DOCREATE 00000733
-CSEG XT_DOCREATE 00000739
-CSEG PFA_DOCREATE 0000073a
-CSEG XT_WLSCOPE 00000890
-CSEG XT_HEADER 00000875
-CSEG VE_BACKSLASH 00000744
-CSEG XT_BACKSLASH 00000747
-CSEG PFA_BACKSLASH 00000748
-CSEG VE_LPAREN 0000074d
-CSEG XT_LPAREN 00000750
-CSEG PFA_LPAREN 00000751
-CSEG VE_COMPILE 00000756
-CSEG PFA_COMPILE 0000075d
-CSEG VE_COMMA 00000764
-CSEG PFA_COMMA 00000768
-CSEG XT_DP 00003f12
-CSEG XT_STOREI 00003b73
-CSEG PFA_DP 00003f13
-CSEG VE_BRACKETTICK 0000076f
-CSEG XT_BRACKETTICK 00000773
-CSEG PFA_BRACKETTICK 00000774
-CSEG VE_LITERAL 00000777
-CSEG PFA_LITERAL 0000077e
-CSEG VE_SLITERAL 00000782
-CSEG XT_SLITERAL 00000788
-CSEG PFA_SLITERAL 00000789
-CSEG XT_GMARK 0000078d
-CSEG PFA_GMARK 0000078e
-CSEG XT_GRESOLVE 00000792
-CSEG PFA_GRESOLVE 00000793
-CSEG XT_LMARK 00000798
-CSEG PFA_LMARK 00000799
-CSEG XT_LRESOLVE 0000079b
-CSEG PFA_LRESOLVE 0000079c
-CSEG VE_AHEAD 0000079f
-CSEG XT_AHEAD 000007a4
-CSEG PFA_AHEAD 000007a5
-CSEG VE_IF 000007a9
-CSEG XT_IF 000007ac
-CSEG PFA_IF 000007ad
-CSEG VE_ELSE 000007b1
-CSEG XT_ELSE 000007b5
-CSEG PFA_ELSE 000007b6
-CSEG VE_THEN 000007bc
-CSEG XT_THEN 000007c0
-CSEG PFA_THEN 000007c1
-CSEG VE_BEGIN 000007c3
-CSEG XT_BEGIN 000007c8
-CSEG PFA_BEGIN 000007c9
-CSEG VE_WHILE 000007cb
-CSEG XT_WHILE 000007d0
-CSEG PFA_WHILE 000007d1
-CSEG VE_REPEAT 000007d4
-CSEG XT_REPEAT 000007d9
-CSEG PFA_REPEAT 000007da
-CSEG XT_AGAIN 000007ed
-CSEG VE_UNTIL 000007dd
-CSEG XT_UNTIL 000007e2
-CSEG PFA_UNTIL 000007e3
-CSEG VE_AGAIN 000007e8
-CSEG PFA_AGAIN 000007ee
-CSEG VE_DO 000007f2
-CSEG XT_DO 000007f5
-CSEG PFA_DO 000007f6
-CSEG XT_TO_L 00000850
-CSEG VE_LOOP 000007fc
-CSEG XT_LOOP 00000800
-CSEG PFA_LOOP 00000801
-CSEG XT_ENDLOOP 00000837
-CSEG VE_PLUSLOOP 00000805
-CSEG XT_PLUSLOOP 0000080a
-CSEG PFA_PLUSLOOP 0000080b
-CSEG VE_LEAVE 0000080f
-CSEG XT_LEAVE 00000814
-CSEG PFA_LEAVE 00000815
-CSEG VE_QDO 0000081a
-CSEG XT_QDO 0000081e
-CSEG PFA_QDO 0000081f
-CSEG PFA_QDOCHECK 00000827
-CSEG PFA_QDOCHECK1 0000082e
-CSEG XT_INVERT 000039fd
-CSEG VE_ENDLOOP 00000831
-CSEG PFA_ENDLOOP 00000838
-CSEG LOOP1 00000839
-CSEG XT_L_FROM 00000844
-CSEG LOOP2 00000840
-CSEG VE_L_FROM 00000841
-CSEG PFA_L_FROM 00000845
-CSEG XT_LP 00000863
-CSEG VE_TO_L 0000084d
-CSEG PFA_TO_L 00000851
-CSEG VE_LP0 00000858
-CSEG XT_LP0 0000085c
-CSEG PFA_LP0 0000085d
-ESEG CFG_LP0 00000040
-CSEG VE_LP 00000860
-CSEG PFA_LP 00000864
-DSEG ram_lp 00000190
-CSEG VE_CREATE 00000865
-CSEG XT_CREATE 0000086a
-CSEG PFA_CREATE 0000086b
-CSEG XT_REVEAL 00000899
-CSEG VE_HEADER 00000870
-CSEG PFA_HEADER 00000876
-CSEG PFA_HEADER1 00000887
-CSEG VE_WLSCOPE 0000088a
-CSEG PFA_WLSCOPE 00000891
-ESEG CFG_WLSCOPE 0000003c
-CSEG VE_REVEAL 00000894
-CSEG PFA_REVEAL 0000089a
-CSEG REVEAL1 000008a4
-CSEG XT_STOREE 00003b3b
-CSEG VE_DOES 000008a5
-CSEG XT_DOES 000008aa
-CSEG PFA_DOES 000008ab
-CSEG XT_DODOES 000008bd
-CSEG DO_DODOES 000008b2
-CSEG PFA_DODOES 000008be
-CSEG VE_COLON 000008c6
-CSEG XT_COLON 000008c9
-CSEG PFA_COLON 000008ca
-CSEG XT_COLONNONAME 000008d4
-CSEG VE_COLONNONAME 000008ce
-CSEG PFA_COLONNONAME 000008d5
-CSEG XT_RBRACKET 000008e9
-CSEG VE_SEMICOLON 000008dd
-CSEG XT_SEMICOLON 000008e0
-CSEG PFA_SEMICOLON 000008e1
-CSEG XT_LBRACKET 000008f1
-CSEG VE_RBRACKET 000008e6
-CSEG PFA_RBRACKET 000008ea
-CSEG VE_LBRACKET 000008ee
-CSEG PFA_LBRACKET 000008f2
-CSEG VE_VARIABLE 000008f6
-CSEG XT_VARIABLE 000008fc
-CSEG PFA_VARIABLE 000008fd
-CSEG XT_CONSTANT 00000908
-CSEG XT_ALLOT 00003f2c
-CSEG VE_CONSTANT 00000902
-CSEG PFA_CONSTANT 00000909
-CSEG VE_USER 0000090f
-CSEG XT_USER 00000913
-CSEG PFA_USER 00000914
-CSEG VE_RECURSE 0000091a
-CSEG XT_RECURSE 00000920
-CSEG PFA_RECURSE 00000921
-CSEG VE_IMMEDIATE 00000925
-CSEG XT_IMMEDIATE 0000092c
-CSEG PFA_IMMEDIATE 0000092d
-CSEG XT_GET_CURRENT 000009ce
-CSEG VE_BRACKETCHAR 00000937
-CSEG XT_BRACKETCHAR 0000093c
-CSEG PFA_BRACKETCHAR 0000093d
-CSEG VE_ABORTQUOTE 00000942
-CSEG XT_ABORTQUOTE 00000947
-CSEG PFA_ABORTQUOTE 00000948
-CSEG XT_SQUOTE 00003e8a
-CSEG XT_QABORT 00000959
-CSEG VE_ABORT 0000094c
-CSEG XT_ABORT 00000951
-CSEG PFA_ABORT 00000952
-CSEG VE_QABORT 00000954
-CSEG PFA_QABORT 0000095a
-CSEG QABO1 0000095f
-CSEG VE_GET_STACK 00000961
-CSEG XT_GET_STACK 00000968
-CSEG PFA_N_FETCH_E2 0000097f
-CSEG PFA_N_FETCH_E1 00000975
-CSEG XT_CELLS 00003ec4
-CSEG VE_SET_STACK 00000982
-CSEG XT_SET_STACK 00000989
-CSEG PFA_SET_STACK 0000098a
-CSEG PFA_SET_STACK0 00000991
-CSEG PFA_SET_STACK2 0000099e
-CSEG PFA_SET_STACK1 00000999
-CSEG VE_MAPSTACK 000009a0
-CSEG PFA_MAPSTACK 000009a8
-CSEG PFA_MAPSTACK3 000009c3
-CSEG PFA_MAPSTACK1 000009b2
-CSEG PFA_MAPSTACK2 000009bf
-CSEG VE_GET_CURRENT 000009c6
-CSEG PFA_GET_CURRENT 000009cf
-ESEG CFG_CURRENT 00000046
-CSEG VE_GET_ORDER 000009d3
-CSEG XT_GET_ORDER 000009da
-CSEG PFA_GET_ORDER 000009db
-CSEG VE_CFG_ORDER 000009df
-CSEG XT_CFG_ORDER 000009e6
-CSEG PFA_CFG_ORDER 000009e7
-CSEG VE_COMPARE 000009e8
-CSEG XT_COMPARE 000009ee
-CSEG PFA_COMPARE 000009ef
-CSEG PFA_COMPARE_LOOP 000009fb
-CSEG PFA_COMPARE_NOTEQUAL 00000a09
-CSEG PFA_COMPARE_ENDREACHED2 00000a04
-CSEG PFA_COMPARE_ENDREACHED 00000a05
-CSEG PFA_COMPARE_CHECKLASTCHAR 00000a09
-CSEG PFA_COMPARE_DONE 00000a0b
-CSEG VE_NFA2LFA 00000a10
-CSEG PFA_NFA2LFA 00000a17
-CSEG VE_DOTS 00000a1c
-CSEG XT_DOTS 00000a1f
-CSEG PFA_DOTS 00000a20
-CSEG XT_UDOT 00003e0a
-CSEG PFA_DOTS2 00000a2e
-CSEG PFA_DOTS1 00000a29
-CSEG XT_PICK 00003c84
-CSEG VE_SPIRW 00000a2f
-CSEG XT_SPIRW 00000a34
-CSEG PFA_SPIRW 00000a35
-CSEG do_spirw 00000a39
-CSEG do_spirw1 00000a3a
-CSEG VE_N_SPIR 00000a42
-CSEG XT_N_SPIR 00000a47
-CSEG PFA_N_SPIR 00000a48
-CSEG PFA_N_SPIR_LOOP 00000a4d
-CSEG PFA_N_SPIR_LOOP1 00000a4e
-CSEG VE_N_SPIW 00000a59
-CSEG XT_N_SPIW 00000a5e
-CSEG PFA_N_SPIW 00000a5f
-CSEG PFA_N_SPIW_LOOP 00000a64
-CSEG PFA_N_SPIW_LOOP1 00000a66
-CSEG VE_APPLTURNKEY 00000a70
-CSEG XT_APPLTURNKEY 00000a78
-CSEG PFA_APPLTURNKEY 00000a79
-CSEG XT_INTON 00003c97
-CSEG XT_F_CPU 00003eac
-CSEG VE_SET_CURRENT 00000a8a
-CSEG XT_SET_CURRENT 00000a92
-CSEG PFA_SET_CURRENT 00000a93
-CSEG VE_WORDLIST 00000a97
-CSEG XT_WORDLIST 00000a9d
-CSEG PFA_WORDLIST 00000a9e
-CSEG XT_EHERE 00003f1b
-CSEG PFA_EHERE 00003f1c
-CSEG VE_FORTHWORDLIST 00000aa7
-CSEG XT_FORTHWORDLIST 00000ab0
-CSEG PFA_FORTHWORDLIST 00000ab1
-ESEG CFG_FORTHWORDLIST 00000048
-CSEG VE_SET_ORDER 00000ab2
-CSEG XT_SET_ORDER 00000ab9
-CSEG PFA_SET_ORDER 00000aba
-CSEG VE_SET_RECOGNIZERS 00000abe
-CSEG XT_SET_RECOGNIZERS 00000ac8
-CSEG PFA_SET_RECOGNIZERS 00000ac9
-ESEG CFG_RECOGNIZERLISTLEN 0000005c
-CSEG VE_GET_RECOGNIZERS 00000acd
-CSEG XT_GET_RECOGNIZERS 00000ad7
-CSEG PFA_GET_RECOGNIZERS 00000ad8
-CSEG VE_CODE 00000adc
-CSEG XT_CODE 00000ae0
-CSEG PFA_CODE 00000ae1
-CSEG VE_ENDCODE 00000ae7
-CSEG XT_ENDCODE 00000aed
-CSEG PFA_ENDCODE 00000aee
-CSEG VE_MARKER 00000af3
-CSEG XT_MARKER 00000af9
-CSEG PFA_MARKER 00000afa
-ESEG EE_MARKER 00000068
-CSEG VE_POSTPONE 00000afd
-CSEG XT_POSTPONE 00000b03
-CSEG PFA_POSTPONE 00000b04
-CSEG VE_2R_FETCH 00000b12
-CSEG XT_2R_FETCH 00000b16
-CSEG PFA_2R_FETCH 00000b17
-SET DPSTART 00000b26
-CSEG DO_INTERRUPT 00003814
-CSEG DO_EXECUTE 0000380d
-CSEG XT_ISREXEC 00003cc0
-CSEG VE_EXIT 0000381c
-CSEG PFA_EXIT 00003821
-CSEG VE_EXECUTE 00003824
-CSEG PFA_EXECUTE 0000382b
-CSEG PFA_DOBRANCH 00003830
-CSEG PFA_DOCONDBRANCH 00003837
-CSEG PFA_DOLITERAL 0000383e
-CSEG XT_DOVARIABLE 00003847
-CSEG XT_DOCONSTANT 00003851
-CSEG XT_DOUSER 00003857
-CSEG VE_DOVALUE 00003863
-CSEG XT_DOVALUE 00003869
-CSEG PFA_DOVALUE 0000386a
-CSEG VE_FETCH 00003876
-CSEG PFA_FETCH 0000387a
-CSEG PFA_FETCHRAM 0000387a
-CSEG VE_STORE 0000387e
-CSEG PFA_STORE 00003882
-CSEG PFA_STORERAM 00003882
-CSEG VE_CSTORE 0000388a
-CSEG PFA_CSTORE 0000388e
-CSEG VE_CFETCH 00003895
-CSEG PFA_CFETCH 00003899
-CSEG VE_FETCHU 0000389d
-CSEG XT_FETCHU 000038a0
-CSEG PFA_FETCHU 000038a1
-CSEG VE_STOREU 000038a5
-CSEG XT_STOREU 000038a8
-CSEG PFA_STOREU 000038a9
-CSEG VE_DUP 000038ad
-CSEG PFA_DUP 000038b2
-CSEG VE_QDUP 000038b5
-CSEG PFA_QDUP 000038ba
-CSEG PFA_QDUP1 000038bf
-CSEG VE_SWAP 000038c0
-CSEG PFA_SWAP 000038c5
-CSEG VE_OVER 000038cb
-CSEG PFA_OVER 000038d0
-CSEG VE_DROP 000038d5
-CSEG PFA_DROP 000038da
-CSEG VE_ROT 000038dd
-CSEG PFA_ROT 000038e2
-CSEG VE_NIP 000038ec
-CSEG PFA_NIP 000038f1
-CSEG VE_R_FROM 000038f3
-CSEG PFA_R_FROM 000038f7
-CSEG VE_TO_R 000038fc
-CSEG PFA_TO_R 00003900
-CSEG VE_R_FETCH 00003905
-CSEG PFA_R_FETCH 00003909
-CSEG VE_NOTEQUAL 00003910
-CSEG PFA_NOTEQUAL 00003914
-CSEG VE_ZEROEQUAL 00003917
-CSEG PFA_ZEROEQUAL 0000391b
-CSEG PFA_ZERO1 00003957
-CSEG PFA_TRUE1 0000394e
-CSEG VE_ZEROLESS 0000391e
-CSEG PFA_ZEROLESS 00003922
-CSEG VE_GREATERZERO 00003925
-CSEG PFA_GREATERZERO 00003929
-CSEG VE_DGREATERZERO 0000392e
-CSEG XT_DGREATERZERO 00003932
-CSEG PFA_DGREATERZERO 00003933
-CSEG VE_DXT_ZEROLESS 0000393c
-CSEG XT_DXT_ZEROLESS 00003940
-CSEG PFA_DXT_ZEROLESS 00003941
-CSEG VE_TRUE 00003947
-CSEG PFA_TRUE 0000394c
-CSEG VE_ZERO 00003951
-CSEG PFA_ZERO 00003955
-CSEG VE_ULESS 00003959
-CSEG PFA_ULESS 0000395d
-CSEG VE_UGREATER 00003964
-CSEG PFA_UGREATER 00003968
-CSEG VE_LESS 0000396b
-CSEG PFA_LESS 0000396f
-CSEG PFA_LESSDONE 00003973
-CSEG VE_GREATER 00003975
-CSEG PFA_GREATER 00003979
-CSEG PFA_GREATERDONE 0000397d
-CSEG VE_LOG2 00003980
-CSEG XT_LOG2 00003984
-CSEG PFA_LOG2 00003985
-CSEG PFA_LOG2_1 00003988
-CSEG PFA_LOG2_2 0000398e
-CSEG VE_MINUS 00003990
-CSEG PFA_MINUS 00003994
-CSEG VE_PLUS 0000399a
-CSEG PFA_PLUS 0000399e
-CSEG VE_MSTAR 000039a3
-CSEG PFA_MSTAR 000039a7
-CSEG VE_UMSLASHMOD 000039bd
-CSEG PFA_UMSLASHMOD 000039c3
-CSEG PFA_UMSLASHMODmod 000039c8
-CSEG PFA_UMSLASHMODmod_loop 000039c9
-CSEG PFA_UMSLASHMODmod_loop_control 000039d6
-CSEG PFA_UMSLASHMODmod_subtract 000039d3
-CSEG PFA_UMSLASHMODmod_done 000039d8
-CSEG VE_UMSTAR 000039dc
-CSEG PFA_UMSTAR 000039e1
-CSEG VE_INVERT 000039f8
-CSEG PFA_INVERT 000039fe
-CSEG VE_2SLASH 00003a01
-CSEG PFA_2SLASH 00003a05
-CSEG VE_2STAR 00003a08
-CSEG PFA_2STAR 00003a0c
-CSEG VE_AND 00003a0f
-CSEG PFA_AND 00003a14
-CSEG VE_OR 00003a19
-CSEG PFA_OR 00003a1d
-CSEG VE_XOR 00003a22
-CSEG XT_XOR 00003a26
-CSEG PFA_XOR 00003a27
-CSEG VE_1PLUS 00003a2c
-CSEG PFA_1PLUS 00003a30
-CSEG VE_1MINUS 00003a32
-CSEG PFA_1MINUS 00003a36
-CSEG VE_QNEGATE 00003a38
-CSEG XT_QNEGATE 00003a3e
-CSEG PFA_QNEGATE 00003a3f
-CSEG QNEG1 00003a43
-CSEG VE_LSHIFT 00003a44
-CSEG XT_LSHIFT 00003a49
-CSEG PFA_LSHIFT 00003a4a
-CSEG PFA_LSHIFT1 00003a4d
-CSEG PFA_LSHIFT2 00003a52
-CSEG VE_RSHIFT 00003a53
-CSEG XT_RSHIFT 00003a58
-CSEG PFA_RSHIFT 00003a59
-CSEG PFA_RSHIFT1 00003a5c
-CSEG PFA_RSHIFT2 00003a61
-CSEG VE_PLUSSTORE 00003a62
-CSEG PFA_PLUSSTORE 00003a66
-CSEG VE_RP_FETCH 00003a72
-CSEG PFA_RP_FETCH 00003a77
-CSEG VE_RP_STORE 00003a7c
-CSEG XT_RP_STORE 00003a80
-CSEG PFA_RP_STORE 00003a81
-CSEG VE_SP_FETCH 00003a89
-CSEG PFA_SP_FETCH 00003a8e
-CSEG VE_SP_STORE 00003a92
-CSEG XT_SP_STORE 00003a96
-CSEG PFA_SP_STORE 00003a97
-CSEG PFA_DODO 00003a9c
-CSEG PFA_DODO1 00003a9e
-CSEG VE_I 00003aa9
-CSEG PFA_I 00003aad
-CSEG PFA_DOPLUSLOOP 00003abb
-CSEG PFA_DOPLUSLOOP_LEAVE 00003ac5
-CSEG PFA_DOPLUSLOOP_NEXT 00003ac2
-CSEG PFA_DOLOOP 00003aca
-CSEG VE_UNLOOP 00003acf
-CSEG PFA_UNLOOP 00003ad5
-CSEG VE_CMOVE_G 00003ada
-CSEG XT_CMOVE_G 00003adf
-CSEG PFA_CMOVE_G 00003ae0
-CSEG PFA_CMOVE_G1 00003af1
-CSEG PFA_CMOVE_G2 00003aed
-CSEG VE_BYTESWAP 00003af6
-CSEG PFA_BYTESWAP 00003afa
-CSEG VE_UP_FETCH 00003afe
-CSEG PFA_UP_FETCH 00003b03
-CSEG VE_UP_STORE 00003b07
-CSEG XT_UP_STORE 00003b0b
-CSEG PFA_UP_STORE 00003b0c
-CSEG VE_1MS 00003b10
-CSEG XT_1MS 00003b14
-CSEG PFA_1MS 00003b15
-CSEG VE_2TO_R 00003b1a
-CSEG PFA_2TO_R 00003b1f
-CSEG VE_2R_FROM 00003b29
-CSEG PFA_2R_FROM 00003b2e
-CSEG VE_STOREE 00003b38
-CSEG PFA_STOREE 00003b3c
-CSEG PFA_STOREE0 00003b3c
-CSEG PFA_FETCHE2 00003b6a
-CSEG PFA_STOREE3 00003b46
-CSEG PFA_STOREE1 00003b51
-CSEG PFA_STOREE4 00003b4d
-CSEG PFA_STOREE2 00003b53
-CSEG VE_FETCHE 00003b5c
-CSEG PFA_FETCHE 00003b60
-CSEG PFA_FETCHE1 00003b60
-CSEG VE_STOREI 00003b70
-CSEG PFA_STOREI 00003b74
-ESEG EE_STOREI 00000066
-CSEG VE_DO_STOREI_NRWW 00003b77
-CSEG XT_DO_STOREI 00003b7e
-CSEG PFA_DO_STOREI_NRWW 00003b7f
-CSEG DO_STOREI_atmega 00003b93
-CSEG pageload 00003ba4
-CSEG DO_STOREI_writepage 00003b9d
-CSEG dospm 00003bbd
-EQU pagemask ffffffc0
-CSEG pageload_loop 00003baa
-CSEG pageload_newdata 00003bb5
-CSEG pageload_cont 00003bb7
-CSEG pageload_done 00003bbc
-CSEG dospm_wait_ee 00003bbd
-CSEG dospm_wait_spm 00003bbf
-CSEG VE_FETCHI 00003bc8
-CSEG PFA_FETCHI 00003bcc
-CSEG VE_N_TO_R 00003bd2
-CSEG XT_N_TO_R 00003bd6
-CSEG PFA_N_TO_R 00003bd7
-CSEG PFA_N_TO_R1 00003bd9
-CSEG VE_N_R_FROM 00003be4
-CSEG XT_N_R_FROM 00003be8
-CSEG PFA_N_R_FROM 00003be9
-CSEG PFA_N_R_FROM1 00003bee
-CSEG VE_D2STAR 00003bf6
-CSEG XT_D2STAR 00003bfa
-CSEG PFA_D2STAR 00003bfb
-CSEG VE_D2SLASH 00003c04
-CSEG XT_D2SLASH 00003c08
-CSEG PFA_D2SLASH 00003c09
-CSEG VE_DPLUS 00003c12
-CSEG PFA_DPLUS 00003c16
-CSEG VE_DMINUS 00003c23
-CSEG XT_DMINUS 00003c26
-CSEG PFA_DMINUS 00003c27
-CSEG VE_DINVERT 00003c35
-CSEG PFA_DINVERT 00003c3c
-CSEG VE_SLASHMOD 00003c45
-CSEG XT_SLASHMOD 00003c49
-CSEG PFA_SLASHMOD 00003c4a
-CSEG PFA_SLASHMOD_1 00003c55
-CSEG PFA_SLASHMOD_2 00003c5b
-CSEG PFA_SLASHMOD_3 00003c5e
-CSEG PFA_SLASHMOD_5 00003c69
-CSEG PFA_SLASHMOD_4 00003c68
-CSEG PFA_SLASHMODmod_done 00003c74
-CSEG PFA_SLASHMOD_6 00003c72
-CSEG VE_ABS 00003c78
-CSEG XT_ABS 00003c7c
-CSEG PFA_ABS 00003c7d
-CSEG VE_PICK 00003c80
-CSEG PFA_PICK 00003c85
-CSEG VE_CELLPLUS 00003c8b
-CSEG PFA_CELLPLUS 00003c91
-CSEG VE_INTON 00003c93
-CSEG PFA_INTON 00003c98
-CSEG VE_INTOFF 00003c9a
-CSEG XT_INTOFF 00003c9e
-CSEG PFA_INTOFF 00003c9f
-CSEG VE_INTSTORE 00003ca1
-CSEG PFA_INTSTORE 00003ca6
-CSEG VE_INTFETCH 00003cab
-CSEG XT_INTFETCH 00003caf
-CSEG PFA_INTFETCH 00003cb0
-CSEG VE_INTTRAP 00003cb5
-CSEG XT_INTTRAP 00003cbb
-CSEG PFA_INTTRAP 00003cbc
-CSEG PFA_ISREXEC 00003cc1
-CSEG XT_ISREND 00003cc5
-CSEG PFA_ISREND 00003cc6
-CSEG PFA_ISREND1 00003cc8
-CSEG XT_DEFAULT_PROMPTOK 00003cc9
-CSEG PFA_DEFAULT_PROMPTOK 00003cca
-CSEG VE_PROMPTOK 00003cd0
-CSEG XT_PROMPTOK 00003cd4
-CSEG PFA_PROMPTOK 00003cd5
-CSEG XT_DEFAULT_PROMPTREADY 00003cd8
-CSEG PFA_DEFAULT_PROMPTREADY 00003cd9
-CSEG VE_PROMPTREADY 00003cdf
-CSEG XT_PROMPTREADY 00003ce4
-CSEG PFA_PROMPTREADY 00003ce5
-CSEG XT_DEFAULT_PROMPTERROR 00003ce8
-CSEG PFA_DEFAULT_PROMPTERROR 00003ce9
-CSEG VE_PROMPTERROR 00003cfa
-CSEG XT_PROMPTERROR 00003cff
-CSEG PFA_PROMPTERROR 00003d00
-CSEG VE_QUIT 00003d03
-CSEG XT_QUIT 00003d07
-CSEG PFA_QUIT 00003d08
-CSEG PFA_QUIT2 00003d10
-CSEG PFA_QUIT4 00003d16
-CSEG PFA_QUIT3 00003d28
-CSEG XT_CATCH 00003d70
-CSEG PFA_QUIT5 00003d26
-CSEG VE_PAUSE 00003d2b
-CSEG PFA_PAUSE 00003d31
-DSEG ram_pause 00000192
-CSEG XT_RDEFERFETCH 00003db4
-CSEG XT_RDEFERSTORE 00003dbe
-CSEG VE_COLD 00003d34
-CSEG clearloop 00003d40
-DSEG ram_user1 00000194
-CSEG PFA_WARM 00003d5a
-CSEG VE_WARM 00003d55
-CSEG XT_WARM 00003d59
-CSEG XT_DEFERSTORE 00003ddf
-CSEG XT_TURNKEY 00003f5c
-CSEG VE_HANDLER 00003d63
-CSEG XT_HANDLER 00003d69
-CSEG PFA_HANDLER 00003d6a
-CSEG VE_CATCH 00003d6b
-CSEG PFA_CATCH 00003d71
-CSEG VE_THROW 00003d81
-CSEG PFA_THROW 00003d87
-CSEG PFA_THROW1 00003d8d
-CSEG VE_EDEFERFETCH 00003d9a
-CSEG PFA_EDEFERFETCH 00003da1
-CSEG VE_EDEFERSTORE 00003da4
-CSEG PFA_EDEFERSTORE 00003dab
-CSEG VE_RDEFERFETCH 00003dae
-CSEG PFA_RDEFERFETCH 00003db5
-CSEG VE_RDEFERSTORE 00003db8
-CSEG PFA_RDEFERSTORE 00003dbf
-CSEG VE_UDEFERFETCH 00003dc2
-CSEG PFA_UDEFERFETCH 00003dc9
-CSEG VE_UDEFERSTORE 00003dce
-CSEG PFA_UDEFERSTORE 00003dd5
-CSEG VE_DEFERSTORE 00003dda
-CSEG PFA_DEFERSTORE 00003de0
-CSEG VE_DEFERFETCH 00003de7
-CSEG XT_DEFERFETCH 00003dec
-CSEG PFA_DEFERFETCH 00003ded
-CSEG VE_DODEFER 00003df3
-CSEG XT_DODEFER 00003df9
-CSEG PFA_DODEFER 00003dfa
-CSEG VE_UDOT 00003e07
-CSEG PFA_UDOT 00003e0b
-CSEG VE_UDOTR 00003e0e
-CSEG XT_UDOTR 00003e12
-CSEG PFA_UDOTR 00003e13
-CSEG VE_USLASHMOD 00003e17
-CSEG XT_USLASHMOD 00003e1c
-CSEG PFA_USLASHMOD 00003e1d
-CSEG VE_NEGATE 00003e22
-CSEG PFA_NEGATE 00003e28
-CSEG VE_SLASH 00003e2b
-CSEG XT_SLASH 00003e2e
-CSEG PFA_SLASH 00003e2f
-CSEG VE_MOD 00003e32
-CSEG XT_MOD 00003e36
-CSEG PFA_MOD 00003e37
-CSEG VE_MIN 00003e3a
-CSEG XT_MIN 00003e3e
-CSEG PFA_MIN 00003e3f
-CSEG PFA_MIN1 00003e44
-CSEG VE_MAX 00003e46
-CSEG XT_MAX 00003e4a
-CSEG PFA_MAX 00003e4b
-CSEG PFA_MAX1 00003e50
-CSEG VE_WITHIN 00003e52
-CSEG PFA_WITHIN 00003e58
-CSEG VE_SHOWWORDLIST 00003e5f
-CSEG XT_SHOWWORDLIST 00003e68
-CSEG PFA_SHOWWORDLIST 00003e69
-CSEG XT_SHOWWORD 00003e6e
-CSEG PFA_SHOWWORD 00003e6f
-CSEG VE_WORDS 00003e74
-CSEG XT_WORDS 00003e79
-CSEG PFA_WORDS 00003e7a
-CSEG VE_DOTSTRING 00003e7f
-CSEG XT_DOTSTRING 00003e82
-CSEG PFA_DOTSTRING 00003e83
-CSEG VE_SQUOTE 00003e87
-CSEG PFA_SQUOTE 00003e8b
-CSEG PFA_SQUOTE1 00003e93
-CSEG VE_FILL 00003e94
-CSEG PFA_FILL 00003e99
-CSEG PFA_FILL2 00003ea5
-CSEG PFA_FILL1 00003ea0
-CSEG VE_F_CPU 00003ea7
-CSEG PFA_F_CPU 00003ead
-CSEG VE_STATE 00003eb2
-CSEG PFA_STATE 00003eb8
-DSEG ram_state 000001c0
-CSEG VE_BASE 00003eb9
-CSEG PFA_BASE 00003ebe
-CSEG VE_CELLS 00003ebf
-CSEG VE_2DUP 00003ec5
-CSEG PFA_2DUP 00003eca
-CSEG VE_2DROP 00003ecd
-CSEG PFA_2DROP 00003ed3
-CSEG VE_TUCK 00003ed6
-CSEG PFA_TUCK 00003edb
-CSEG VE_TO_IN 00003ede
-CSEG PFA_TO_IN 00003ee3
-CSEG VE_PAD 00003ee4
-CSEG PFA_PAD 00003ee9
-CSEG VE_EMIT 00003eee
-CSEG PFA_EMIT 00003ef3
-CSEG VE_EMITQ 00003ef6
-CSEG XT_EMITQ 00003efb
-CSEG PFA_EMITQ 00003efc
-CSEG VE_KEY 00003eff
-CSEG PFA_KEY 00003f04
-CSEG VE_KEYQ 00003f07
-CSEG XT_KEYQ 00003f0b
-CSEG PFA_KEYQ 00003f0c
-CSEG VE_DP 00003f0f
-ESEG CFG_DP 00000036
-CSEG VE_EHERE 00003f16
-ESEG EE_EHERE 0000003a
-CSEG VE_HERE 00003f1f
-CSEG PFA_HERE 00003f24
-ESEG EE_HERE 00000038
-CSEG VE_ALLOT 00003f27
-CSEG PFA_ALLOT 00003f2d
-CSEG VE_BIN 00003f32
-CSEG XT_BIN 00003f36
-CSEG PFA_BIN 00003f37
-CSEG VE_DECIMAL 00003f3b
-CSEG PFA_DECIMAL 00003f42
-CSEG VE_HEX 00003f47
-CSEG XT_HEX 00003f4b
-CSEG PFA_HEX 00003f4c
-CSEG VE_BL 00003f51
-CSEG PFA_BL 00003f55
-CSEG VE_TURNKEY 00003f56
-CSEG PFA_TURNKEY 00003f5d
-ESEG CFG_TURNKEY 00000042
-CSEG VE_TOUPPER 00003f60
-CSEG PFA_TOUPPER 00003f67
-CSEG PFA_TOUPPER0 00003f72
-CSEG VE_TOLOWER 00003f73
-CSEG XT_TOLOWER 00003f79
-CSEG PFA_TOLOWER 00003f7a
-CSEG PFA_TOLOWER0 00003f85
-CSEG VE_QSTACK 00003f86
-CSEG PFA_QSTACK 00003f8c
-CSEG PFA_QSTACK1 00003f93
-CSEG VE_BOUNDS 00003f94
-CSEG PFA_BOUNDS 00003f9a
-CSEG VE_CR 00003f9e
-CSEG PFA_CR 00003fa2
-CSEG VE_SPACE 00003fa9
-CSEG PFA_SPACE 00003faf
-CSEG VE_SPACES 00003fb2
-CSEG PFA_SPACES 00003fb8
-CSEG SPCS1 00003fba
-CSEG SPCS2 00003fc1
-CSEG VE_S2D 00003fc3
-CSEG PFA_S2D 00003fc8
-CSEG VE_TO_BODY 00003fcb
-CSEG VE_2LITERAL 00003fd1
-CSEG PFA_2LITERAL 00003fd8
-CSEG VE_EQUAL 00003fdc
-CSEG PFA_EQUAL 00003fe0
-CSEG VE_ONE 00003fe3
-CSEG PFA_ONE 00003fe7
-CSEG VE_TWO 00003fe8
-CSEG PFA_TWO 00003fec
-CSEG VE_MINUSONE 00003fed
-CSEG XT_MINUSONE 00003ff0
-CSEG PFA_MINUSONE 00003ff1
-SET flashlast 00003ff2
-DSEG HERESTART 000001c2
-ESEG EHERESTART 0000008e
-ESEG CFG_ORDERLIST 0000004c
-ESEG CFG_RECOGNIZERLIST 0000005e
-EQU UBRR_VAL 00000019
-EQU BAUD_REAL 0000963d
-EQU BAUD_ERROR 00000001
diff --git a/amforth-6.5/appl/eval-pollin/p328-16.xml b/amforth-6.5/appl/eval-pollin/p328-16.xml
deleted file mode 100644
index 1d8cdb5..0000000
--- a/amforth-6.5/appl/eval-pollin/p328-16.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<project name="pollins-328-16" basedir="." default="Help">
- <target name="p328-16.asm">
- <copy tofile="p328-16.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="16000000"/>
- <filter token="USART" value="_0"/>
- </filterset>
- </copy>
- </target>
-
- <target name="p328-16.hex" depends="p328-16.asm" description="Hexfiles for p328-16">
- <avrasm2 projectname="p328-16" mcu="atmega328p"/>
- <delete file="p328-16.asm"/>
- </target>
-
- <target name="p328-16" depends="p328-16.hex" description="Atmega328 @ 16 MHz">
- <echo>Uploading Hexfiles for p328-16</echo>
- <avrdude
- type="stk200"
- mcu="atmega328p"
- flashfile="p328-16.hex"
- eepromfile="p328-16.eep.hex"
- />
- </target>
- <target name="p328-16.fuses" description="Set fuses for P16-8">
- <echo>Writing fuses</echo>
- <avrdude-3fuses
- type="${programmer}"
- mcu="${mcu}"
- efuse="0xff"
- hfuse="0xd9"
- lfuse="0xc6"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p644-16.eep.hex b/amforth-6.5/appl/eval-pollin/p644-16.eep.hex
deleted file mode 100644
index f9365bf..0000000
--- a/amforth-6.5/appl/eval-pollin/p644-16.eep.hex
+++ /dev/null
@@ -1,7 +0,0 @@
-:10003800FFFF8B05C401920033046000B010DD049B
-:0A00480032754C008D7D01004C0064
-:060060000200247B107B6E
-:10006A007E736C0000000000FF10AF10AF1000009C
-:10007A000A00A700B5007C009700257D0000127DCC
-:08008A00EA79097AF9791900FD
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p644-16.hex b/amforth-6.5/appl/eval-pollin/p644-16.hex
deleted file mode 100644
index 3da58b1..0000000
--- a/amforth-6.5/appl/eval-pollin/p644-16.hex
+++ /dev/null
@@ -1,635 +0,0 @@
-:020000020000FC
-:020004002AD1FF
-:0200080028D1FD
-:02000C0026D1FB
-:0200100024D1F9
-:0200140022D1F7
-:0200180020D1F5
-:02001C001ED1F3
-:020020001CD1F1
-:020024001AD1EF
-:0200280018D1ED
-:02002C0016D1EB
-:0200300014D1E9
-:0200340012D1E7
-:0200380010D1E5
-:02003C000ED1E3
-:020040000CD1E1
-:020044000AD1DF
-:0200480008D1DD
-:02004C0006D1DB
-:0200500004D1D9
-:0200540002D1D7
-:0200580000D1D5
-:02005C00FED0D4
-:02006000FCD0D2
-:02006400FAD0D0
-:02006800F8D0CE
-:10006C00F6D00010000800E01C00090041546D653A
-:10007C0067613634340007FF3E72782D6275660076
-:10008C0000004800082F10911001E0E0F1E0E10FB2
-:10009C00F31D008313951F70109310018991999192
-:1000AC000C94057006FF6973722D72784100017013
-:1000BC003D70C6009870B1703D7003007F7D367046
-:1000CC006800597A4700207001703D705D003D70EA
-:1000DC00280087743D7000013D7016005471CF7478
-:1000EC00207006FF72782D627566580001709700BB
-:1000FC0036707D003D7011019870B1703D7000013B
-:10010C009D719870C4702F723D700F0013723D700A
-:10011C0011018D70207007FF72783F2D627566009B
-:10012C0077000170517A3D70110198703D7010018B
-:10013C0098701371207007FF74782D706F6C6C00C1
-:10014C0091000170B5003670A8003D70C6008D702E
-:10015C00207008FF74783F2D706F6C6CA1000170DB
-:10016C00517A3D70C00098703D7020001372207061
-:10017C0004FF75627272AF006F709000B47BBE7B2F
-:10018C0006FF2B7573617274BE0001703D70980090
-:10019C003D70C1008D703D7006003D70C2008D70C9
-:1001AC00C200B170F9723D70C5008D703D70C40015
-:1001BC008D706A00207008FF31772E72657365743C
-:1001CC00C600E8009A938A93249A2C98E0E8F7E00A
-:1001DC003197F1F71FB7F8942C9A2498E0E0F1E0EE
-:1001EC003197F1F783B184FF9FEF1FBF24982C98B0
-:1001FC00E0E8F6E03197F1F7892F0C94057007FFD2
-:10020C0031772E736C6F7400E1000C012C98249ADA
-:10021C001FB7F894E8E1F0E03197F1F788948795EF
-:10022C0010F42C9A2498E4E2F0E03197F1F703B142
-:10023C0004FD8068ECECF0E03197F1F72C9A2498EF
-:0E024C00E8E0F0E03197F1F71FBF0C94057069
-:040000000C945A7A88
-:10025A000A920FB60A920F900F900A94B02CFF934D
-:10026A00EF93E2E1F1E00694E00DF31D00800394C0
-:10027A000082EF91FF9109900FBE0990089502FF45
-:10028A006D2B05010170677D1574207003FF75647D
-:10029A002A0044010170B170FF70E071D970C47016
-:1002AA00F670E071E1709D71207004FF756D6178E0
-:1002BA004B01017065755C7136706401C470D97048
-:1002CA00207004FF756D696E5A010170657567715A
-:1002DA0036707001C470D970207001703D70008052
-:1002EA0013721A7136707B01867D20704B712070F3
-:1002FA000AFF6E616D653E666C6167736601017027
-:10030A00CB733D7000FF1372207006FF6E65776530
-:10031A0073747D0148702E0106FF6C6174657374F5
-:10032A008A014870320108FF286372656174652981
-:10033A0091010170B479F502B1708F015E75817017
-:10034A00DA028F018170207001005C00980101704F
-:10035A009B79F0707E758170207001002800A901D8
-:10036A0001703D70290087796E75207007FF636FF1
-:10037A006D70696C6500B2010170F670B170AB7B8B
-:10038A00FF70CB73CC01207001FF2C00BB01017000
-:10039A00AE757373AE752F72997BAF7520700300BB
-:1003AA005B275D00C90101700A78E201207007002D
-:1003BA006C69746572616C00D4010170C1013D7091
-:1003CA00CC0120700800736C69746572616CDC0181
-:1003DA000170C1016D777B7720700170AE75C10124
-:1003EA00FFFF20700170577BAE75C4707373207065
-:1003FA000170AE7520700170577BCC01207005002A
-:10040A00616865616400E7010170C1012F70F20142
-:10041A0020700200696604020170C1013670F2019F
-:10042A0020700400656C73650E020170C1012F70A3
-:10043A00F201C470F701207004007468656E160238
-:10044A000170F70120700500626567696E0021027C
-:10045A000170FD01207005007768696C650028024B
-:10046A0001701102C47020700600726570656174B3
-:10047A00300201705202250220700500756E7469FF
-:10048A006C00390201703D703670CC010002207098
-:10049A000500616761696E0042020170C1012F7037
-:1004AA00000220700200646F4D020170C1019B724C
-:1004BA00FD015471B502207004006C6F6F70570211
-:1004CA000170C101C9729C02207005002B6C6F6F0C
-:1004DA00700061020170C101BA729C0220700500AD
-:1004EA006C65617665006A020170C101D472090205
-:1004FA00B502207003003F646F0074020170C101ED
-:10050A008B0211025A02C470B5022070017065751F
-:10051A007F7DB170FF70367093026E75F670FD7153
-:10052A00207007FF656E646C6F6F70007F02017048
-:10053A000002A902B9703670A50225022F709E0228
-:10054A00207002FF6C3E96020170C80279707970C1
-:10055A003D70FEFFC8026572207002FF3E6CA60263
-:10056A0001708B7DC8026572C80279708170207033
-:10057A0003FF6C703000B2026F704400B47BBE7B24
-:10058A0002FF6C70BD024870340106FF6372656138
-:10059A007465C50201709E01FE02C101527020708D
-:1005AA0006FF686561646572CA020170AE75FF7004
-:1005BA00FF70B17028713670EC02B1703D7000FFA7
-:1005CA001C727F77F6705F73CC01F67020703D70F5
-:1005DA00F0FF417807FF776C73636F706500D5028F
-:1005EA00137C4000B47BBE7B06FF72657665616C46
-:1005FA00EF0201708F015E757970B9703670090368
-:10060A008F017970C4703B7320700500646F657345
-:10061A003E00F9020170C1012203C1010E94C10119
-:10062A00170320709A938A93CB0101967F916F9159
-:10063A00BF93AF93DB010C9405700170F6708F01C4
-:10064A005E7579705F737E7C7373207001FF3A0068
-:10065A000A0301709E013903D970207007FF3A6EB0
-:10066A006F6E616D65002B030170AE75B1709601F6
-:10067A008170C10101704E03207001003B003303F9
-:10068A000170C10120705603FE02207001FF5D0057
-:10069A0042030170867D4B758170207001005B00FA
-:1006AA004B03017054714B758170207008FF76619D
-:1006BA00726961626C6553030170BF756D038B7D4E
-:1006CA00C875207008FF636F6E7374616E745B0384
-:1006DA0001709E01FE02C1014870CC01207004FF26
-:1006EA0075736572670301709E01FE02C10158703D
-:1006FA00CC0120700700726563757273650074031C
-:10070A00017096017970CC01207009FF696D6D65E1
-:10071A006469617465007F03017033045F73B170AB
-:10072A00CB733D70FF7F1372C47073732070060021
-:10073A005B636861725D8A030170C1013D70EA788A
-:10074A00CC012070060061626F7274229C030170F2
-:10075A00C174C101BE03207005FF61626F7274002B
-:10076A00A70301704B71417806FF3F61626F727493
-:10077A00B1030170E1703670C403A077B6036E75D9
-:10078A00207009FF6765742D737461636B00B90388
-:10079A000170B1705E75C4705F73B170FF7054718F
-:1007AA00C4708B023670E4039B72AC723572587552
-:1007BA00CF709D715F73C4704B71BA72DA036E7534
-:1007CA00F670207009FF7365742D737461636B0092
-:1007DA00C6030170CF7021713670F6033D70FCFFBD
-:1007EA00417865753B73C47054718B02367003048B
-:1007FA009B725E7576753B73C972FE03D970207061
-:10080A0009FF6D61702D737461636B00E7030170FA
-:10081A00B1705E75C4705F7358755E7D8B023670F9
-:10082A0028049B72AC725F73C470FF7008712A70DF
-:10083A00B97036702404F670D970D4722070F670CC
-:10084A008B7DBA721704D970547120700BFF6765DB
-:10085A00742D63757272656E7400050401703D70C3
-:10086A004A005F73207009FF6765742D6F726465B3
-:10087A0072002B0401703D704E00CD03207009FFF9
-:10088A006366672D6F7264657200380448704E00A3
-:10089A0007FF636F6D706172650044045404BF936F
-:1008AA00AF938C0189919991DC01899199919C016D
-:1008BA0089919991FC01ED90F190EF1451F40A9508
-:1008CA0019F02A95C1F701C02A95022B11F488273D
-:1008DA0002C08FEF00C0982FAF91BF910C940570A2
-:1008EA0007FF6E66613E6C6661004D040170727CA2
-:1008FA002F7204729D71207002FF2E7375040170AD
-:10090A00A17A4874E277A17A54718B023670930403
-:10091A009B72AC72AF744874C9728E04207006FF61
-:10092A0063214073706981049A0403D099270C9457
-:10093A0005708EBD0DB5087F0DBD0DB507FFFACF49
-:10094A008EB5089505FF6E40737069009404AD0476
-:10095A008C0189919991FC01C8012EBC2DB527FF04
-:10096A00FDCF2EB521930197C1F7899199910C94E6
-:10097A00057005FF6E2173706900A704C4048C0119
-:10098A0089919991FC01C80121912EBD2DB527FFAE
-:10099A00FDCF2EB50197C1F7899199910C940570F5
-:1009AA000BFF6170706C7475726E6B657900BE04B2
-:1009BA000170CB007974647BE27740753D70E8037F
-:1009CA00C271F070DD7522776D7704006B487A206A
-:1009DA00A07720700BFF7365742D63757272656E54
-:1009EA007400D50401703D704A003B73207008FF03
-:1009FA00776F72646C697374EF040170B775547120
-:100A0A00CF703B73B1705E75997BB87520700EFF1D
-:100A1A00666F7274682D776F72646C697374FC0404
-:100A2A0048704C0009FF7365742D6F72646572001B
-:100A3A000C0501703D704E00EE0320700FFF7365C8
-:100A4A00742D7265636F676E697A65727300170534
-:100A5A0001703D706000EE0320700FFF6765742D12
-:100A6A007265636F676E697A657273002305017038
-:100A7A003D706000CD03207004FF636F646532052A
-:100A8A0001709E01FE02AE75AB7BCC01207008FF9F
-:100A9A00656E642D636F646541050170C1010C9434
-:100AAA00C1010570207008FF286D61726B6572299B
-:100ABA004C056F706C00B47BBE7B0800706F73745A
-:100ACA00706F6E6558050170B479CC7AD77AB170B7
-:100ADA00FF70AB7BAB7BCB732A70F670AB7BCB73AF
-:100AEA00CC01207003FF3272400062057C059A93A4
-:100AFA008A93EF91FF918F919F919F938F93FF9389
-:0C0B0A00EF939A938A93CF010C9405702E
-:10E00200BF93AF93DB011196B21469F4FD01EE0FD9
-:10E01200FF1F659175911196FB01EE0FFF1F059190
-:10E022001591F80109949A938A938B2D9927BB2411
-:10E0320062EA74E7F1CF04FF6578697477052170AD
-:10E04200AF91BF91E1CF07FF657865637574650095
-:10E052001C702B70BC0189919991DECF3070FD014B
-:10E06200EE0FFF1FA591B591CFCF3770982B8991F5
-:10E072009991A9F31196C8CF3E709A938A93FD01A4
-:10E08200EE0FFF1F859195911196BECF48709A931E
-:10E092008A93FB013196EE0FFF1F85919591B4CFC4
-:10E0A20052709A938A93CB010196AECF58709A938D
-:10E0B2008A93FB013196EE0FFF1F85919591840D96
-:10E0C200951DA2CF07FF2876616C75652900247023
-:10E0D20001709E01FE02C1016F7020700E94170341
-:10E0E200B170AB7BCB732A70207001FF400063706C
-:10E0F2007A70FC018191919187CF01FF21007670A6
-:10E102008270FC018991999191838083899199917F
-:10E112007BCF02FF63217E708E70FC018991999101
-:10E1220080838991999170CF02FF63408A709970C0
-:10E13200FC019927808168CF02FF407595700170BC
-:10E1420002739D717970207002FF21759D700170BC
-:10E1520002739D718170207003FF64757000A57059
-:10E16200B2709A938A9350CF04FF3F647570AD707A
-:10E17200BA70082F092B11F09A938A9345CF04FFA6
-:10E1820073776170B570C5708C01899199911A93FA
-:10E192000A933ACF04FF6F766572C070D0709A937B
-:10E1A2008A938A819B8130CF04FF64726F70CB7037
-:10E1B200DA708991999128CF03FF726F7400D5703C
-:10E1C200E2708C0129913991899199913A932A931C
-:10E1D2001A930A9319CF03FF6E697000DD70F17014
-:10E1E200229612CF02FF723EEC70F7709A938A93D6
-:10E1F2008F919F9109CF02FF3E72F37000719F933E
-:10E202008F938991999100CF02FF7240FC7009713E
-:10E212009A938A938F919F919F938F93F5CE02FF4A
-:10E222003C3E057101707F7D1A71207002FF303D06
-:10E2320010711B71982BD1F530C002FF303C177161
-:10E24200227197FD2AC032C002FF303E1E71297131
-:10E25200821593055CF151F120C003FF64303E004A
-:10E2620025713371821593058991999182059305E0
-:10E27200ECF0E1F012C003FF64303C002E714171FA
-:10E28200229697FD0C944E710C94577104FF747290
-:10E2920075653C714C719A938A938FEF9FEFB4CE60
-:10E2A20001FF3000477155719A938A93C101ACCE38
-:10E2B20002FF753C51715D71299139918217930763
-:10E2C200A8F3A1F3EACF02FF753E59710170C47041
-:10E2D2005C71207001FF3C0064716F71299139916A
-:10E2E200281739071CF7D9CF01FF3E006B717971EE
-:10E2F2002991399128173907CCF2C1F2CECF04FF08
-:10E302006C6F673275718571FC01992780E18A957E
-:10E3120022F0EE0FFF1FD8F777CE9A9575CE01FF48
-:10E322002D008071947109911991081B190BC80174
-:10E332006BCE01FF2B0090719E7109911991800F94
-:10E34200911F62CE02FF6D2A9A71A7718C01899189
-:10E3520099919C0131027001209FC0013003F308A2
-:10E36200900DE11CF31C1203F308900DE11CF31C49
-:10E372009A938A93C70148CE06FF756D2F6D6F641D
-:10E38200A371C3717C01299139910991199140E1DD
-:10E392005527000F111F221F331F551F2E153F0532
-:10E3A200520518F003952E193F094A9589F73A93B9
-:10E3B2002A93C80129CE03FF756D2A00BD71E17150
-:10E3C2008C0189919991809FF00122273327909F98
-:10E3D200F00D211D331D819FF00D211D331D919FD5
-:10E3E200200D311DCF019A938A93C9010DCE06FFEC
-:10E3F200696E76657274DC71FE718095909504CEBB
-:10E4020002FF322FF871057295958795FDCD02FFB7
-:10E41200322A01720C72880F991FF6CD03FF616ECA
-:10E422006400087214720991199180239123ECCD32
-:10E4320002FF6F720F721D7209911991802B912B3D
-:10E44200E3CD03FF786F7200197227720991199157
-:10E4520080279127D9CD02FF312B2272307201968B
-:10E46200D3CD02FF312D2C7236720197CDCD07FF2D
-:10E472003F6E65676174650032720170217136709A
-:10E4820043723F76207006FF6C7368696674387257
-:10E492004A72FC018991999131971AF0880F991F5C
-:10E4A200FBCFB2CD06FF727368696674447259720B
-:10E4B200FC018991999131971AF096958795FBCF36
-:10E4C200A3CD02FF2B2153726672FC0189919991AF
-:10E4D20020813181820F931F808391838991999149
-:10E4E20093CD03FF72704000627277729A938A939F
-:10E4F2008DB79EB789CD03FF72702100727281724F
-:10E502002FB7F8948DBF9EBF2FBF899199917CCD73
-:10E5120003FF737040007C728E729A938A93CE01CD
-:10E5220073CD03FF7370210089729772EC01899198
-:10E5320099916ACD9C7229913991E0E83E0F821B34
-:10E54200930B3F932F939F938F93899199915CCDD6
-:10E5520001FF69009272AD729A938A938F919F9193
-:10E56200EF91FF91FF93EF939F938F938E0F9F1FD6
-:10E572004BCDBB72EF91FF91E80FF91F89919991F1
-:10E582001BF0FF93EF936BCD0F911F9111963CCD32
-:10E59200CA72EF91FF913196BBF3F3CF06FF756E0E
-:10E5A2006C6F6F70A972D5721F910F911F910F91AD
-:10E5B2002BCD06FF636D6F76653ECF72E072BF931F
-:10E5C200AF93E991F991A991B991092F082B41F0E3
-:10E5D200E80FF91FA80FB91F1E9112930197E1F7D7
-:10E5E200AF91BF91899199910FCD02FF3E3CDA72B2
-:10E5F200FA72092F982F802F07CD03FF7570400004
-:10E60200F67203739A938A93C201FECC03FF75706C
-:10E612002100FE720C732C0189919991F5CC03FFB4
-:10E62200316D730007731573E0EAFFE03197F1F77C
-:10E63200EBCC03FF323E720010731F73FC01899111
-:10E6420099919F938F93FF93EF9389919991DCCC4A
-:10E6520003FF32723E001A732E739A938A93EF91DC
-:10E66200FF918F919F919A938A93CF01CDCC02FF14
-:10E67200216529733C73FC01899199912FB7F89414
-:10E6820028D000B5081709F00BD0319622D000B57A
-:10E69200091711F0892F04D02FBF89919991B4CC19
-:10E6A200F999FECF07B700FDFDCFF2BDE1BD80BDF8
-:10E6B200FA9AF99A089502FF4065387360732FB78A
-:10E6C200F894FC0106D080B5319603D090B52FBFE7
-:10E6D2009BCCF999FECFF2BDE1BDF89A089502FFF5
-:10E6E20021695C73137C6A00B47BBE7B09FF28211D
-:10E6F200692D6E727777290070737F731FB71F932E
-:10E70200F8949C0189919991AF93BF93CF93DF9332
-:10E7120009D0DF91CF91BF91AF91899199911F91CA
-:10E722001FBF72CC10D0E094F0948E219F21982BC1
-:10E7320019F0F90102E020D0F90104E01DD0F9013D
-:10E7420000E11AD00895F901E078FF7FEF01A0E817
-:10E75200B0E0FE01EE0FFF1F45915591FE01E21759
-:10E76200F30711F00A0102C07A010C01002704D05C
-:10E772002196119771F70895F999FECF17B710FDF9
-:10E78200FDCFEE0FFF1F016007BFE895089502FF5E
-:10E7920040697773CC73FC01EE0FFF1F8591959151
-:10E7A20033CC03FF6E3E7200C873D773FC01082F8F
-:10E7B200899199919F938F930A95D1F7EF93FF9344
-:10E7C2008991999121CC03FF6E723E00D273E97355
-:10E7D2009A938A93FF91EF910E2F8F919F919A9323
-:10E7E2008A930A95D1F7CF010FCC03FF64322A0036
-:10E7F200E473FB7309911991000F111F881F991F70
-:10E802001A930A9301CC03FF64322F00F673097442
-:10E812000991199195958795179507951A930A93DA
-:10E82200F3CB02FF642B0474167429913991E99099
-:10E83200F99049915991240F351F8E1D9F1D3A93CE
-:10E842002A93E2CB02FF642D127427742991399125
-:10E85200E990F99049915991421B530BE80AF90A40
-:10E862005A934A93C701D0CB07FF64696E766572EB
-:10E87200740023743C7409911991809590950095C8
-:10E8820010951A930A93C0CB02FF752E357401704E
-:10E8920054712A77207003FF752E7200457401703F
-:10E8A2005471C470337720700DFF73686F772D77C2
-:10E8B2006F72646C697374004C7401703D7064749F
-:10E8C200C470577C20700170727CA077E2774B7124
-:10E8D200207005FF776F72647300557401703D708C
-:10E8E20050005F735E74207004FF2B696E746A744B
-:10E8F2007A74789489CB04FF2D696E74757481746F
-:10E90200F89482CB04FF696E74217C7401703D70AF
-:10E9120000009D713B73207004FF696E7440837424
-:10E9220001703D7000009D715F73207008FF696E79
-:10E93200742D747261708D749E74B82E8991999140
-:10E9420063CB017091742A70A7742070A87401D0EF
-:10E952005BCB189504FF7069636B977401702F721B
-:10E9620058758D729D717970207002002E22AB74E1
-:10E972000170C174C101A077207002007322B674C5
-:10E9820001703D70220087794B7579703670CA74B8
-:10E99200ED01207004FF66696C6CBE740170E17059
-:10E9A200E170B9703670DC745E7D9B72B170AC72CE
-:10E9B2008D70C972D774D97020700BFF656E76693D
-:10E9C200726F6E6D656E7400CB744870480009FFFB
-:10E9D200776F72646C6973747300000001703D702C
-:10E9E2000800207004FF2F706164E87401708D725A
-:10E9F20084759371207005FF2F686F6C6400F37447
-:10EA020001708475BF75937120700AFF666F72740E
-:10EA1200682D6E616D65FC7401706D770700616D24
-:10EA2200666F72746800207007FF76657273696F93
-:10EA32006E00067501703D704100207003FF637027
-:10EA42007500157501703D703B00CC77207008FF92
-:10EA52006D63752D696E666F1F7501703D703700AD
-:10EA6200207005FF2F7573657200287501703D7067
-:10EA72002C00207005FF665F63707500DE74017004
-:10EA82003D7000243D70F400207005FF73746174C2
-:10EA920065003B754870360104FF62617365467517
-:10EAA20058700C0005FF63656C6C73004D750C7239
-:10EAB20005FF63656C6C2B0053755F750296A4CAE3
-:10EAC20004FF3264757059750170CF70CF70207079
-:10EAD20005FF3264726F700061750170D970D97070
-:10EAE200207004FF7475636B69750170C470CF7018
-:10EAF200207003FF3E696E0072755870180003FFA4
-:10EB0200706164007A750170BF753D7028009D7157
-:10EB1200207004FF656D69748075137C0E00DC7BC8
-:10EB2200E87B05FF656D69743F008A75137C1000F0
-:10EB3200DC7BE87B03FF6B6579009275137C120026
-:10EB4200DC7BE87B04FF6B65793F9B75137C1400CB
-:10EB5200DC7BE87B02FF6470A3756F703A00B47BC4
-:10EB6200BE7B05FF656865726500AB756F703E0020
-:10EB7200B47BBE7B04FF68657265B2756F703C0042
-:10EB8200B47BBE7B05FF616C6C6F7400BB7501705A
-:10EB9200BF759D71997BC075207003FF62696E001D
-:10EBA200C37501708B7D51758170207007FF64659C
-:10EBB20063696D616C00CE7501703D700A0051751C
-:10EBC2008170207003FF68657800D77501703D7011
-:10EBD200100051758170207002FF626CE3754870FD
-:10EBE200200007FF7475726E6B657900ED75137CFA
-:10EBF2004600B47BBE7B04FF2F6D6F64F275017615
-:10EC02009C0109911991412F432717FF04C01095C8
-:10EC120000950F5F1F4F37FF04C0309520952F5F7F
-:10EC22003F4FEE24FF1851E1001F111F5A9539F48E
-:10EC320047FF04C0109500950F5F1F4F0BC0EE1CDD
-:10EC4200FF1CE21AF30A20F4E20EF31E8894ECCFC2
-:10EC52000894EACFFA92EA92C801D6C905FF752F45
-:10EC62006D6F6400FC750170FF705471F670C271B3
-:10EC7200207006FF6E65676174652F760170FD7105
-:10EC82002F72207001FF2F003A7601700076F0702B
-:10EC9200207003FF6D6F6400437601700076D970B7
-:10ECA200207003FF616273004A760170B1703E7298
-:10ECB200207003FF6D696E00527601706575787180
-:10ECC20036706476C470D970207003FF6D6178006D
-:10ECD2005A76017065756E7136707076C470D9702F
-:10ECE200207006FF77697468696E66760170CF706E
-:10ECF2009371FF709371F6705C71207007FF746FEF
-:10ED020075707065720072760170B1703D7061004D
-:10ED12003D707B007776367091763D70DF0013721E
-:10ED2200207007FF746F6C6F776572007F760170D9
-:10ED3200B1703D7041003D705B0077763670A4760D
-:10ED42003D7020001C72207003FF686C6400927694
-:10ED52004870380104FF686F6C64A5760170A9766B
-:10ED6200B17079703572B170FF70C4708170F670D5
-:10ED72008D70207002FF3C23AB7601708475A976FA
-:10ED82008170207001FF2300BB760170517579708C
-:10ED92004377E1703D700900CF706E713670D476A2
-:10EDA2003D7007009D713D7030009D71AF762070FF
-:10EDB20002FF2373C3760170C67665751C721A71E1
-:10EDC2003670DD76207002FF233ED97601706E75B3
-:10EDD200A97679708475CF709371207004FF73697E
-:10EDE200676EE476017021713670FA763D702D00FF
-:10EDF200AF76207003FF642E7200EF760170FF7011
-:10EE02007675D47CBE76DC76E170F376E776F670C2
-:10EE1200CF709371EB77FB77207002FF2E72FB7637
-:10EE22000170FF70677DF670FF76207002FF642E1E
-:10EE32000E7701705471FF76E277207001FF2E0089
-:10EE420017770170677D1A77207003FF75642E00B3
-:10EE52001F77017054713377E277207004FF756475
-:10EE62002E7226770170FF70BE76DC76E776F6703A
-:10EE7200CF709371EB77FB77207006FF75642F6D6F
-:10EE82006F642F770170FF7054710871C271F67050
-:10EE9200C470FF70C271F670207006FF6469676902
-:10EEA200743F3E7701708576B1703D70390078719C
-:10EEB2003D70000113729D71B1703D704001787117
-:10EEC2003D700701137293713D7030009371B17000
-:10EED200517579705C71207001700871CC77F67091
-:10EEE200CF702F7204729D712F72FF70207002FF1B
-:10EEF200732C4E770170B1707F7720700170CC0156
-:10EF0200B170047276750B729371FF7054718B023B
-:10EF1200367092779B72B1707970CC015E75C9724E
-:10EF22008C77F670287136709977B1709870CC0131
-:10EF3200D970207005FF6974797065007877017067
-:10EF4200B170047276750B729371FF7054718B02FB
-:10EF52003670B4779B72B170CB73B170C177BD77E5
-:10EF62002F72C972AC77F67028713670BB77B170A8
-:10EF7200CB73C177D97020700170F972C17720709C
-:10EF820001703D70FF0013728E75207006FF696379
-:10EF92006F756E749B770170B1702F72C470CB73F2
-:10EFA200207002FF6372C77701703D700D008E758D
-:10EFB2003D700A008E75207005FF737061636500F5
-:10EFC200D2770170F0758E75207006FF73706163E1
-:10EFD2006573DD77017054716A76B1703670F577BA
-:10EFE200E27735722F70EE77D970207004FF747952
-:10EFF2007065E67701705E7D8B02367006789B72D3
-:10F00200AC7298708E75C9720178207001FF27006A
-:10F01200F7770170B479CC7AD77AB1704A7B7F7D69
-:10F02200C470CB733D707F7B7F7D1C7236701C7801
-:10F032003D70F3FF4178D970207007FF68616E64FC
-:10F042006C657200077858700A0005FF636174638B
-:10F0520068001E7801708D72FF7024787970FF70DD
-:10F062007672247881702A70F67024788170F67036
-:10F07200D9705471207005FF7468726F770026781A
-:10F082000170B1701A7136704878D9702070247886
-:10F0920079708072F67024788170F670C470FF7097
-:10F0A2009672D970F670207005FF63736B697000F9
-:10F0B2003C780170FF70B17036706978CF709870CB
-:10F0C20008717F7D36706978867DA5792F705C78AE
-:10F0D200F670D970207005FF637363616E00557816
-:10F0E2000170FF70CF70B170987008717F7D1A71D6
-:10F0F20036708678C4703572C470CF7021711A71FF
-:10F10200367086782F722F707478F070CF7093718A
-:10F11200F670D970207006FF6163636570746C7855
-:10F122000170CF709D713572CF709F75B170D278BA
-:10F132001A713670C478B1703D7008007F7D3670E8
-:10F14200B478D970E17065757871FF70E170E17023
-:10F15200F6703670B278CA783572FF70CF70F6707A
-:10F162005E012F70C278B170F0756E713670BB7827
-:10F17200D970F075B1708E75CF708D702F72CF709F
-:10F182006A012F709678D970F070C4709371D57738
-:10F19200207001703D700800B1708E75E2778E7537
-:10F1A20020700170B1703D700D007F7DC4703D70A4
-:10F1B2000A007F7D1C72207006FF726566696C6CA6
-:10F1C2008C78137C1A00DC7BE87B04FF6368617235
-:10F1D200DD780170B479D9709870207006FF6E7571
-:10F1E2006D626572E678017051757970FF703879D9
-:10F1F200FF704B793879F6701C72FF70B1701A711A
-:10F2020036700B796E75F670D970F6705175817023
-:10F21200547120701E73547154712D736979B970D1
-:10F2220036702D79867D7F7D3670247998703D7099
-:10F232002E007F7D36702579F67036702179E17C5B
-:10F242008B7D2F703379D9706E75F670D970F67028
-:10F2520051758170547120706E75F6703670327906
-:10F262003F76867DF670517581704B71207001700A
-:10F27200CF7098703D702D007F7DB170FF70367039
-:10F282004479867DA579F670207052700A001000CC
-:10F2920002000A000170CF7098703D7023009371D4
-:10F2A200B17054713D700400777636706179467999
-:10F2B2009D71CB7351758170867DA5792F706279AE
-:10F2C200D970207007FF3E6E756D62657200EF782F
-:10F2D2000170B17036708179CF70987053771A715E
-:10F2E20036707579D9702070FF70057D517579700F
-:10F2F2004F01F6704701057D867DA5792F706A79E9
-:10F30200207005FF70617273650063790170FF7090
-:10F312009B797E757970A579F6707178B1702F72CC
-:10F322007E756572867DA579207006FF736F757292
-:10F3320063658279137C1600DC7BE87B07FF2F7301
-:10F342007472696E670096790170E170CF709D7179
-:10F35200E170E170937120700AFF70617273652D24
-:10F362006E616D659F790170F075B87920700170DA
-:10F37200FF709B797E757970A57908715A78F6705D
-:10F38200717865759D719B79D97093717E75817065
-:10F39200207007FF66696E642D787400AD79017084
-:10F3A2003D70DC793D704E000C041A713670DB79C9
-:10F3B2006E75547120700170FF706575F670257C52
-:10F3C200B1703670E979FF70F070F070F6704B71C1
-:10F3D200207001706D770300206F6B00A0772070A2
-:10F3E20003FF2E6F6B00CA79137C1C00DC7BE87B69
-:10F3F20001706D7702003E20D577A077207006FF5E
-:10F402002E7265616479F179137C2000DC7BE87BE4
-:10F4120001706D770400203F3F20A077517579700D
-:10F42200FF70DD7522777E7579702277F6705175DF
-:10F432008170207006FF2E6572726F72007A137CE3
-:10F442001E00DC7BE87B04FF717569741B7A017016
-:10F45200C102C8028170897A9672967A80725603C6
-:10F462004B7579701A713670377A057AE278367090
-:10F47200497A3D70AF7A2B78B9703670497AB1709B
-:10F482003D70FEFF6E713670477A207A2F70297AAE
-:10F49200F5792F70317A05FF706175736500247AF2
-:10F4A200137C3A01C87BD27B04FF636F6C644C7A95
-:10F4B2005A7AA4B622243324BB2424BEE0E0F1E02D
-:10F4C2002192E030E9F7F131D9F7ECE3F1E02F01D5
-:10F4D2000FEF0DBF048310E11EBF1583CFEAC68371
-:10F4E200D0E1D783ACE7BAE70C94057004FF7761EB
-:10F4F200726D557A0170507D3D707F7B3D70517AFF
-:10F50200F37B5603F875287A03FF73703000777A1D
-:10F512006F700600DC7BE87B02FF7370857A58709F
-:10F52200080003FF727030008D7A01709A7A797048
-:10F5320020705870040005FF646570746800927A48
-:10F542000170897A8D72937104723572207009FF8D
-:10F55200696E74657270726574009C7A0170B47918
-:10F56200B1703670C07ACC7AD77A4B7579703670B2
-:10F57200BB7AAB7BCB732A70577B2F70B07A6E75D8
-:10F58200207010FF666F7274682D7265636F676E0C
-:10F59200697A6572A87A6F704200B47BBE7B09FFFC
-:10F5A2007265636F676E697A6500C27A01703D7039
-:10F5B200E27AC4700C041A713670E17A6E754A7B75
-:10F5C20020700170E170E17065751E73E1702A7040
-:10F5D2002D73E170B1704A7B7F7D3670F37AD970FA
-:10F5E20054712070F070F0704B71207006FF6474DB
-:10F5F2003A6E756DD07A52707F7BE201E20107FFAD
-:10F6020064743A646E756D00F77A52707F7B777D11
-:10F61200777D07FF7265633A6E756D00007B01703E
-:10F62200F47836701C7B867D7F7D36701A7BFC7A7F
-:10F632002070067B20704A7B207008FF7265633A57
-:10F6420066696E640A7B0170D079B1701A71367086
-:10F652002D7BD9704A7B2070347B207005FF647447
-:10F662003A7874001E7B5270387B3C7B777D017048
-:10F67200D9702A702070017021713670427BCC01E2
-:10F6820020702A70207007FF64743A6E756C6C00EB
-:10F692002F7B52704E7B4E7B4E7B01703D70F3FF91
-:10F6A200417806FF3F737461636B447B0170A17AFA
-:10F6B200217136705F7B3D70FCFF4178207003FF43
-:10F6C20076657200527B01700D75A077E2775175F5
-:10F6D20079701B75DD75677DBE76C6763D702E002E
-:10F6E200AF76DC76E776FB7751758170E27723752A
-:10F6F200A077207004FF6E6F6F70607B01702070C6
-:10F7020006FF756E757365647B7B01708D72BF75C4
-:10F71200937120700200746F817B01700A78707D92
-:10F722004B75797036709F7BC101997BCC0120703B
-:10F732000170F670B170AB7BFF70CB73B170AB7BB5
-:10F74200AB7BCB732A70207007FF692D63656C6CED
-:10F752002B008B7B01702F72207007FF456465665A
-:10F7620065724000A57B0170CB735F73207007FF49
-:10F772004564656665722100AE7B0170CB733B7395
-:10F78200207007FF5264656665724000B87B0170A5
-:10F79200CB737970207007FF526465666572210031
-:10F7A200C27B0170CB738170207007FF5564656660
-:10F7B20065724000CC7B0170CB7302739D717970CE
-:10F7C200207007FF5564656665722100D67B017063
-:10F7D200CB7302739D718170207006FF646566654C
-:10F7E2007221E27B0170707DB170AB7BAB7BCB731E
-:10F7F2002A70207006FF646566657240EE7B0170B8
-:10F80200707DB170AB7BCB732A70207007FF2864C8
-:10F81200656665722900FB7B01709E01FE02C101D3
-:10F82200137C20700E941703B170AB7BCB732A70DC
-:10F832002A7020700FFF7365617263682D776F7293
-:10F84200646C69737400077C0170FF7054713D70C1
-:10F852003A7CF670577CB1701A713670347C6E75D2
-:10F86200D97054712070B1707E7CC47084017201B1
-:10F8720020700170FF70D97065750871727C887C88
-:10F882003670487CF670D97054714B7120706E7569
-:10F89200F6705471207011FF74726176657273652F
-:10F8A2002D776F72646C697374001B7C01705F73D7
-:10F8B200B1703670687C65751E73C4702A702D73C2
-:10F8C200E1703670687C7B04CB732F70597C6E7547
-:10F8D20020700BFF6E616D653E737472696E670016
-:10F8E2004C7C0170CC773D70FF001372207007FFD3
-:10F8F2006E66613E636661006A7C01707B042F72F2
-:10F90200207008FF69636F6D70617265787C0170A9
-:10F91200FF70CF70F67013713670937C6E75D9706C
-:10F922004B712070C47054718B023670B67C9B721E
-:10F93200CF707970CF70CB73B1703D7000015C7184
-:10F942003670A77CC4703D70FF001372137136705D
-:10F95200AE7C6E754B71D47220702F72C4705E755E
-:10F96200C4703D700200BA72997C6E755471207039
-:10F9720001FF2A00827C0170A671D970207001FFFC
-:10F982006A00B97C017076723D7007009D717970D2
-:10F9920076723D7009009D7179709D71207004FF2F
-:10F9A20064616273C07C0170B17021713670DA7C5F
-:10F9B200E17C207007FF646E656761746500D07C2E
-:10F9C20001703B74867D54711574207005FF636D60
-:10F9D2006F766500DB7CED7CBF93AF93E991F99183
-:10F9E200A991B991092F082B21F01D91119301972B
-:10F9F200E1F7AF91BF91899199910C94057005FF40
-:10FA0200327377617000E77C0170E170FF70E17022
-:10FA1200F67020700AFF726566696C6C2D746962FB
-:10FA2200007D01702E7D3D705A009178347D817089
-:10FA320054717E7581704B7120700AFF736F7572FD
-:10FA420063652D7469620B7D01702E7D347D797042
-:10FA5200207003FF746962001E7D4870680104FF14
-:10FA6200237469622A7D4870C20106FF65653E7291
-:10FA7200616D307D017054719B72CF705F73CF7076
-:10FA820081705E75C4705E75C470C9723E7D6E759C
-:10FA9200207008FF696E69742D72616D367D017088
-:10FAA2003D706E0002733D70220004723B7D207037
-:10FAB20006FF626F756E64734A7D0170CF709D712F
-:10FAC200C470207003FF733E6400597D0170B170F1
-:10FAD2002171207005FF3E626F647900637D307290
-:10FAE2000800326C69746572616C6B7D0170C47060
-:10FAF200E201E201207001FF3D00717D017093710E
-:10FB02001A71207001FF31007C7D4870010001FFF5
-:10FB12003200837D4870020002FF2D31887D4870DB
-:02FB2200FFFFE3
-:00000001FF
diff --git a/amforth-6.5/appl/eval-pollin/p644-16.lst b/amforth-6.5/appl/eval-pollin/p644-16.lst
deleted file mode 100644
index 2c8872a..0000000
--- a/amforth-6.5/appl/eval-pollin/p644-16.lst
+++ /dev/null
@@ -1,10444 +0,0 @@
-
-AVRASM ver. 2.1.52 p644-16.asm Sun Apr 30 20:10:15 2017
-
-p644-16.asm(5): Including file '../../avr8\preamble.inc'
-../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm'
-../../avr8\macros.asm(6): Including file '../../avr8\user.inc'
-../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega644\device.asm'
-../../avr8/devices/atmega644\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m644def.inc'
-p644-16.asm(14): Including file '../../avr8\drivers/usart_0.asm'
-../../avr8\drivers/usart_0.asm(32): Including file '../../avr8\drivers/usart_common.asm'
-../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm'
-../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm'
-../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm'
-../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm'
-p644-16.asm(19): Including file '../../avr8\drivers/1wire.asm'
-p644-16.asm(21): Including file '../../avr8\amforth.asm'
-../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm'
-../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc'
-../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm'
-../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm'
-../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm'
-../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm'
-../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm'
-../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm'
-../../avr8\dict/rww.inc(9): Including file '../../avr8\dict/appl_8k.inc'
-../../avr8\dict/appl_8k.inc(1): Including file '../../avr8\dict/compiler1.inc'
-../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm'
-../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm'
-../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm'
-../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm'
-../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm'
-../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm'
-../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm'
-../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm'
-../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm'
-../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm'
-../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm'
-../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm'
-../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm'
-../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm'
-../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm'
-../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm'
-../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm'
-../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm'
-../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm'
-../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm'
-../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm'
-../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm'
-../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm'
-../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm'
-../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm'
-../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm'
-../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm'
-../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm'
-../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm'
-../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm'
-../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm'
-../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm'
-../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm'
-../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm'
-../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm'
-../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm'
-../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm'
-../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm'
-../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm'
-../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm'
-../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm'
-../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm'
-../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm'
-../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm'
-../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm'
-../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm'
-../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm'
-../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm'
-../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm'
-../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm'
-../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm'
-../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm'
-../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm'
-../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm'
-../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm'
-../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm'
-../../avr8\dict/compiler1.inc(67): Including file '../../common\words/get-order.asm'
-../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-order.asm'
-../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm'
-../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm'
-../../avr8\amforth.asm(15): Including file 'dict_appl.inc'
-dict_appl.inc(3): Including file '../../common\words/dot-s.asm'
-dict_appl.inc(4): Including file '../../avr8\words/spirw.asm'
-dict_appl.inc(5): Including file '../../avr8\words/n-spi.asm'
-dict_appl.inc(6): Including file 'words/applturnkey.asm'
-dict_appl.inc(7): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm'
-../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm'
-../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm'
-../../avr8\dict/compiler2.inc(12): Including file '../../common\words/set-order.asm'
-../../avr8\dict/compiler2.inc(13): Including file '../../common\words/set-recognizer.asm'
-../../avr8\dict/compiler2.inc(14): Including file '../../common\words/get-recognizer.asm'
-../../avr8\dict/compiler2.inc(15): Including file '../../avr8\words/code.asm'
-../../avr8\dict/compiler2.inc(16): Including file '../../avr8\words/end-code.asm'
-../../avr8\dict/compiler2.inc(17): Including file '../../avr8\words/marker.asm'
-../../avr8\dict/compiler2.inc(18): Including file '../../common\words/postpone.asm'
-dict_appl.inc(8): Including file '../../avr8\words/2r_fetch.asm'
-../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm'
-../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc'
-../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm'
-../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm'
-../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm'
-../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm'
-../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm'
-../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm'
-../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm'
-../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm'
-../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm'
-../../avr8\dict/nrww.inc(15): Including file '../../avr8\words/fetch.asm'
-../../avr8\dict/nrww.inc(16): Including file '../../avr8\words/store.asm'
-../../avr8\dict/nrww.inc(17): Including file '../../avr8\words/cstore.asm'
-../../avr8\dict/nrww.inc(18): Including file '../../avr8\words/cfetch.asm'
-../../avr8\dict/nrww.inc(19): Including file '../../avr8\words/fetch-u.asm'
-../../avr8\dict/nrww.inc(20): Including file '../../avr8\words/store-u.asm'
-../../avr8\dict/nrww.inc(23): Including file '../../avr8\words/dup.asm'
-../../avr8\dict/nrww.inc(24): Including file '../../avr8\words/qdup.asm'
-../../avr8\dict/nrww.inc(25): Including file '../../avr8\words/swap.asm'
-../../avr8\dict/nrww.inc(26): Including file '../../avr8\words/over.asm'
-../../avr8\dict/nrww.inc(27): Including file '../../avr8\words/drop.asm'
-../../avr8\dict/nrww.inc(28): Including file '../../avr8\words/rot.asm'
-../../avr8\dict/nrww.inc(29): Including file '../../avr8\words/nip.asm'
-../../avr8\dict/nrww.inc(31): Including file '../../avr8\words/r_from.asm'
-../../avr8\dict/nrww.inc(32): Including file '../../avr8\words/to_r.asm'
-../../avr8\dict/nrww.inc(33): Including file '../../avr8\words/r_fetch.asm'
-../../avr8\dict/nrww.inc(36): Including file '../../common\words/not-equal.asm'
-../../avr8\dict/nrww.inc(37): Including file '../../avr8\words/equalzero.asm'
-../../avr8\dict/nrww.inc(38): Including file '../../avr8\words/lesszero.asm'
-../../avr8\dict/nrww.inc(39): Including file '../../avr8\words/greaterzero.asm'
-../../avr8\dict/nrww.inc(40): Including file '../../avr8\words/d-greaterzero.asm'
-../../avr8\dict/nrww.inc(41): Including file '../../avr8\words/d-lesszero.asm'
-../../avr8\dict/nrww.inc(43): Including file '../../avr8\words/true.asm'
-../../avr8\dict/nrww.inc(44): Including file '../../avr8\words/zero.asm'
-../../avr8\dict/nrww.inc(45): Including file '../../avr8\words/uless.asm'
-../../avr8\dict/nrww.inc(46): Including file '../../common\words/u-greater.asm'
-../../avr8\dict/nrww.inc(47): Including file '../../avr8\words/less.asm'
-../../avr8\dict/nrww.inc(48): Including file '../../avr8\words/greater.asm'
-../../avr8\dict/nrww.inc(50): Including file '../../avr8\words/log2.asm'
-../../avr8\dict/nrww.inc(51): Including file '../../avr8\words/minus.asm'
-../../avr8\dict/nrww.inc(52): Including file '../../avr8\words/plus.asm'
-../../avr8\dict/nrww.inc(53): Including file '../../avr8\words/mstar.asm'
-../../avr8\dict/nrww.inc(54): Including file '../../avr8\words/umslashmod.asm'
-../../avr8\dict/nrww.inc(55): Including file '../../avr8\words/umstar.asm'
-../../avr8\dict/nrww.inc(57): Including file '../../avr8\words/invert.asm'
-../../avr8\dict/nrww.inc(58): Including file '../../avr8\words/2slash.asm'
-../../avr8\dict/nrww.inc(59): Including file '../../avr8\words/2star.asm'
-../../avr8\dict/nrww.inc(60): Including file '../../avr8\words/and.asm'
-../../avr8\dict/nrww.inc(61): Including file '../../avr8\words/or.asm'
-../../avr8\dict/nrww.inc(62): Including file '../../avr8\words/xor.asm'
-../../avr8\dict/nrww.inc(64): Including file '../../avr8\words/1plus.asm'
-../../avr8\dict/nrww.inc(65): Including file '../../avr8\words/1minus.asm'
-../../avr8\dict/nrww.inc(66): Including file '../../common\words/q-negate.asm'
-../../avr8\dict/nrww.inc(67): Including file '../../avr8\words/lshift.asm'
-../../avr8\dict/nrww.inc(68): Including file '../../avr8\words/rshift.asm'
-../../avr8\dict/nrww.inc(69): Including file '../../avr8\words/plusstore.asm'
-../../avr8\dict/nrww.inc(71): Including file '../../avr8\words/rpfetch.asm'
-../../avr8\dict/nrww.inc(72): Including file '../../avr8\words/rpstore.asm'
-../../avr8\dict/nrww.inc(73): Including file '../../avr8\words/spfetch.asm'
-../../avr8\dict/nrww.inc(74): Including file '../../avr8\words/spstore.asm'
-../../avr8\dict/nrww.inc(76): Including file '../../avr8\words/dodo.asm'
-../../avr8\dict/nrww.inc(77): Including file '../../avr8\words/i.asm'
-../../avr8\dict/nrww.inc(78): Including file '../../avr8\words/doplusloop.asm'
-../../avr8\dict/nrww.inc(79): Including file '../../avr8\words/doloop.asm'
-../../avr8\dict/nrww.inc(80): Including file '../../avr8\words/unloop.asm'
-../../avr8\dict/nrww.inc(84): Including file '../../avr8\words/cmove_g.asm'
-../../avr8\dict/nrww.inc(85): Including file '../../avr8\words/byteswap.asm'
-../../avr8\dict/nrww.inc(86): Including file '../../avr8\words/up.asm'
-../../avr8\dict/nrww.inc(87): Including file '../../avr8\words/1ms.asm'
-../../avr8\dict/nrww.inc(88): Including file '../../avr8\words/2to_r.asm'
-../../avr8\dict/nrww.inc(89): Including file '../../avr8\words/2r_from.asm'
-../../avr8\dict/nrww.inc(91): Including file '../../avr8\words/store-e.asm'
-../../avr8\dict/nrww.inc(92): Including file '../../avr8\words/fetch-e.asm'
-../../avr8\dict/nrww.inc(93): Including file '../../avr8\words/store-i.asm'
-../../avr8\dict/nrww.inc(97): Including file '../../avr8\words/store-i_nrww.asm'
-../../avr8\dict/nrww.inc(99): Including file '../../avr8\words/fetch-i.asm'
-../../avr8\dict/nrww.inc(102): Including file '../../avr8\dict/core_8k.inc'
-../../avr8\dict/core_8k.inc(2): Including file '../../avr8\words/n_to_r.asm'
-../../avr8\dict/core_8k.inc(3): Including file '../../avr8\words/n_r_from.asm'
-../../avr8\dict/core_8k.inc(5): Including file '../../avr8\words/d-2star.asm'
-../../avr8\dict/core_8k.inc(6): Including file '../../avr8\words/d-2slash.asm'
-../../avr8\dict/core_8k.inc(7): Including file '../../avr8\words/d-plus.asm'
-../../avr8\dict/core_8k.inc(8): Including file '../../avr8\words/d-minus.asm'
-../../avr8\dict/core_8k.inc(9): Including file '../../avr8\words/d-invert.asm'
-../../avr8\dict/core_8k.inc(10): Including file '../../common\words/u-dot.asm'
-../../avr8\dict/core_8k.inc(11): Including file '../../common\words/u-dot-r.asm'
-../../avr8\dict/core_8k.inc(13): Including file '../../common\words/show-wordlist.asm'
-../../avr8\dict/core_8k.inc(14): Including file '../../common\words/words.asm'
-../../avr8\dict/core_8k.inc(15): Including file '../../avr8\dict/interrupt.inc'
-../../avr8\dict/interrupt.inc(8): Including file '../../avr8\words/int-on.asm'
-../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-off.asm'
-../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-store.asm'
-../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-fetch.asm'
-../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-trap.asm'
-../../avr8\dict/interrupt.inc(14): Including file '../../avr8\words/isr-exec.asm'
-../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-end.asm'
-../../avr8\dict/core_8k.inc(17): Including file '../../common\words/pick.asm'
-../../avr8\dict/core_8k.inc(18): Including file '../../common\words/dot-quote.asm'
-../../avr8\dict/core_8k.inc(19): Including file '../../common\words/squote.asm'
-../../avr8\dict/core_8k.inc(21): Including file '../../avr8\words/fill.asm'
-../../avr8\dict/core_8k.inc(23): Including file '../../avr8\words/environment.asm'
-../../avr8\dict/core_8k.inc(24): Including file '../../avr8\words/env-wordlists.asm'
-../../avr8\dict/core_8k.inc(25): Including file '../../avr8\words/env-slashpad.asm'
-../../avr8\dict/core_8k.inc(26): Including file '../../common\words/env-slashhold.asm'
-../../avr8\dict/core_8k.inc(27): Including file '../../common\words/env-forthname.asm'
-../../avr8\dict/core_8k.inc(28): Including file '../../common\words/env-forthversion.asm'
-../../avr8\dict/core_8k.inc(29): Including file '../../common\words/env-cpu.asm'
-../../avr8\dict/core_8k.inc(30): Including file '../../avr8\words/env-mcuinfo.asm'
-../../avr8\dict/core_8k.inc(31): Including file '../../common\words/env-usersize.asm'
-../../avr8\dict/core_8k.inc(33): Including file '../../common\words/f_cpu.asm'
-../../avr8\dict/core_8k.inc(34): Including file '../../avr8\words/state.asm'
-../../avr8\dict/core_8k.inc(35): Including file '../../common\words/base.asm'
-../../avr8\dict/core_8k.inc(37): Including file '../../avr8\words/cells.asm'
-../../avr8\dict/core_8k.inc(38): Including file '../../avr8\words/cellplus.asm'
-../../avr8\dict/core_8k.inc(40): Including file '../../common\words/2dup.asm'
-../../avr8\dict/core_8k.inc(41): Including file '../../common\words/2drop.asm'
-../../avr8\dict/core_8k.inc(43): Including file '../../common\words/tuck.asm'
-../../avr8\dict/core_8k.inc(45): Including file '../../common\words/to-in.asm'
-../../avr8\dict/core_8k.inc(46): Including file '../../common\words/pad.asm'
-../../avr8\dict/core_8k.inc(47): Including file '../../common\words/emit.asm'
-../../avr8\dict/core_8k.inc(48): Including file '../../common\words/emitq.asm'
-../../avr8\dict/core_8k.inc(49): Including file '../../common\words/key.asm'
-../../avr8\dict/core_8k.inc(50): Including file '../../common\words/keyq.asm'
-../../avr8\dict/core_8k.inc(52): Including file '../../avr8\words/dp.asm'
-../../avr8\dict/core_8k.inc(53): Including file '../../avr8\words/ehere.asm'
-../../avr8\dict/core_8k.inc(54): Including file '../../avr8\words/here.asm'
-../../avr8\dict/core_8k.inc(55): Including file '../../avr8\words/allot.asm'
-../../avr8\dict/core_8k.inc(57): Including file '../../common\words/bin.asm'
-../../avr8\dict/core_8k.inc(58): Including file '../../common\words/decimal.asm'
-../../avr8\dict/core_8k.inc(59): Including file '../../common\words/hex.asm'
-../../avr8\dict/core_8k.inc(60): Including file '../../common\words/bl.asm'
-../../avr8\dict/core_8k.inc(62): Including file '../../avr8\words/turnkey.asm'
-../../avr8\dict/core_8k.inc(64): Including file '../../avr8\words/slashmod.asm'
-../../avr8\dict/core_8k.inc(65): Including file '../../avr8\words/uslashmod.asm'
-../../avr8\dict/core_8k.inc(66): Including file '../../avr8\words/negate.asm'
-../../avr8\dict/core_8k.inc(67): Including file '../../common\words/slash.asm'
-../../avr8\dict/core_8k.inc(68): Including file '../../common\words/mod.asm'
-../../avr8\dict/core_8k.inc(69): Including file '../../common\words/abs.asm'
-../../avr8\dict/core_8k.inc(70): Including file '../../common\words/min.asm'
-../../avr8\dict/core_8k.inc(71): Including file '../../common\words/max.asm'
-../../avr8\dict/core_8k.inc(72): Including file '../../common\words/within.asm'
-../../avr8\dict/core_8k.inc(74): Including file '../../common\words/to-upper.asm'
-../../avr8\dict/core_8k.inc(75): Including file '../../common\words/to-lower.asm'
-../../avr8\dict/core_8k.inc(77): Including file '../../avr8\words/hld.asm'
-../../avr8\dict/core_8k.inc(78): Including file '../../common\words/hold.asm'
-../../avr8\dict/core_8k.inc(79): Including file '../../common\words/less-sharp.asm'
-../../avr8\dict/core_8k.inc(80): Including file '../../common\words/sharp.asm'
-../../avr8\dict/core_8k.inc(81): Including file '../../common\words/sharp-s.asm'
-../../avr8\dict/core_8k.inc(82): Including file '../../common\words/sharp-greater.asm'
-../../avr8\dict/core_8k.inc(83): Including file '../../common\words/sign.asm'
-../../avr8\dict/core_8k.inc(84): Including file '../../common\words/d-dot-r.asm'
-../../avr8\dict/core_8k.inc(85): Including file '../../common\words/dot-r.asm'
-../../avr8\dict/core_8k.inc(86): Including file '../../common\words/d-dot.asm'
-../../avr8\dict/core_8k.inc(87): Including file '../../common\words/dot.asm'
-../../avr8\dict/core_8k.inc(88): Including file '../../common\words/ud-dot.asm'
-../../avr8\dict/core_8k.inc(89): Including file '../../common\words/ud-dot-r.asm'
-../../avr8\dict/core_8k.inc(90): Including file '../../common\words/ud-slash-mod.asm'
-../../avr8\dict/core_8k.inc(91): Including file '../../common\words/digit-q.asm'
-../../avr8\dict/core_8k.inc(93): Including file '../../avr8\words/do-sliteral.asm'
-../../avr8\dict/core_8k.inc(94): Including file '../../avr8\words/scomma.asm'
-../../avr8\dict/core_8k.inc(95): Including file '../../avr8\words/itype.asm'
-../../avr8\dict/core_8k.inc(96): Including file '../../avr8\words/icount.asm'
-../../avr8\dict/core_8k.inc(97): Including file '../../common\words/cr.asm'
-../../avr8\dict/core_8k.inc(98): Including file '../../common\words/space.asm'
-../../avr8\dict/core_8k.inc(99): Including file '../../common\words/spaces.asm'
-../../avr8\dict/core_8k.inc(100): Including file '../../common\words/type.asm'
-../../avr8\dict/core_8k.inc(101): Including file '../../common\words/tick.asm'
-../../avr8\dict/core_8k.inc(103): Including file '../../common\words/handler.asm'
-../../avr8\dict/core_8k.inc(104): Including file '../../common\words/catch.asm'
-../../avr8\dict/core_8k.inc(105): Including file '../../common\words/throw.asm'
-../../avr8\dict/core_8k.inc(107): Including file '../../common\words/cskip.asm'
-../../avr8\dict/core_8k.inc(108): Including file '../../common\words/cscan.asm'
-../../avr8\dict/core_8k.inc(109): Including file '../../common\words/accept.asm'
-../../avr8\dict/core_8k.inc(110): Including file '../../common\words/refill.asm'
-../../avr8\dict/core_8k.inc(111): Including file '../../common\words/char.asm'
-../../avr8\dict/core_8k.inc(112): Including file '../../common\words/number.asm'
-../../avr8\dict/core_8k.inc(113): Including file '../../common\words/q-sign.asm'
-../../avr8\dict/core_8k.inc(114): Including file '../../common\words/set-base.asm'
-../../avr8\dict/core_8k.inc(115): Including file '../../common\words/to-number.asm'
-../../avr8\dict/core_8k.inc(116): Including file '../../common\words/parse.asm'
-../../avr8\dict/core_8k.inc(117): Including file '../../common\words/source.asm'
-../../avr8\dict/core_8k.inc(118): Including file '../../common\words/slash-string.asm'
-../../avr8\dict/core_8k.inc(119): Including file '../../common\words/parse-name.asm'
-../../avr8\dict/core_8k.inc(120): Including file '../../common\words/find-xt.asm'
-../../avr8\dict/core_8k.inc(122): Including file '../../common\words/prompt-ok.asm'
-../../avr8\dict/core_8k.inc(123): Including file '../../common\words/prompt-ready.asm'
-../../avr8\dict/core_8k.inc(124): Including file '../../common\words/prompt-error.asm'
-../../avr8\dict/core_8k.inc(126): Including file '../../common\words/quit.asm'
-../../avr8\dict/core_8k.inc(127): Including file '../../avr8\words/pause.asm'
-../../avr8\dict/core_8k.inc(128): Including file '../../avr8\words/cold.asm'
-../../avr8\dict/core_8k.inc(129): Including file '../../common\words/warm.asm'
-../../avr8\dict/core_8k.inc(131): Including file '../../avr8\words/sp0.asm'
-../../avr8\dict/core_8k.inc(132): Including file '../../avr8\words/rp0.asm'
-../../avr8\dict/core_8k.inc(133): Including file '../../common\words/depth.asm'
-../../avr8\dict/core_8k.inc(134): Including file '../../common\words/interpret.asm'
-../../avr8\dict/core_8k.inc(135): Including file '../../avr8\words/forth-recognizer.asm'
-../../avr8\dict/core_8k.inc(136): Including file '../../common\words/recognize.asm'
-../../avr8\dict/core_8k.inc(137): Including file '../../common\words/rec-intnum.asm'
-../../avr8\dict/core_8k.inc(138): Including file '../../common\words/rec-find.asm'
-../../avr8\dict/core_8k.inc(139): Including file '../../common\words/dt-null.asm'
-../../avr8\dict/core_8k.inc(141): Including file '../../common\words/q-stack.asm'
-../../avr8\dict/core_8k.inc(142): Including file '../../common\words/ver.asm'
-../../avr8\dict/core_8k.inc(144): Including file '../../common\words/noop.asm'
-../../avr8\dict/core_8k.inc(145): Including file '../../avr8\words/unused.asm'
-../../avr8\dict/core_8k.inc(147): Including file '../../common\words/to.asm'
-../../avr8\dict/core_8k.inc(148): Including file '../../avr8\words/i-cellplus.asm'
-../../avr8\dict/core_8k.inc(150): Including file '../../avr8\words/edefer-fetch.asm'
-../../avr8\dict/core_8k.inc(151): Including file '../../avr8\words/edefer-store.asm'
-../../avr8\dict/core_8k.inc(152): Including file '../../common\words/rdefer-fetch.asm'
-../../avr8\dict/core_8k.inc(153): Including file '../../common\words/rdefer-store.asm'
-../../avr8\dict/core_8k.inc(154): Including file '../../common\words/udefer-fetch.asm'
-../../avr8\dict/core_8k.inc(155): Including file '../../common\words/udefer-store.asm'
-../../avr8\dict/core_8k.inc(156): Including file '../../common\words/defer-store.asm'
-../../avr8\dict/core_8k.inc(157): Including file '../../common\words/defer-fetch.asm'
-../../avr8\dict/core_8k.inc(158): Including file '../../avr8\words/do-defer.asm'
-../../avr8\dict/core_8k.inc(160): Including file '../../common\words/search-wordlist.asm'
-../../avr8\dict/core_8k.inc(161): Including file '../../common\words/traverse-wordlist.asm'
-../../avr8\dict/core_8k.inc(162): Including file '../../common\words/name2string.asm'
-../../avr8\dict/core_8k.inc(163): Including file '../../avr8\words/nfa2cfa.asm'
-../../avr8\dict/core_8k.inc(164): Including file '../../avr8\words/icompare.asm'
-../../avr8\dict/core_8k.inc(166): Including file '../../common\words/star.asm'
-../../avr8\dict/core_8k.inc(167): Including file '../../avr8\words/j.asm'
-../../avr8\dict/core_8k.inc(169): Including file '../../avr8\words/dabs.asm'
-../../avr8\dict/core_8k.inc(170): Including file '../../avr8\words/dnegate.asm'
-../../avr8\dict/core_8k.inc(171): Including file '../../avr8\words/cmove.asm'
-../../avr8\dict/core_8k.inc(172): Including file '../../common\words/2swap.asm'
-../../avr8\dict/core_8k.inc(174): Including file '../../common\words/tib.asm'
-../../avr8\dict/core_8k.inc(176): Including file '../../avr8\words/init-ram.asm'
-../../avr8\dict/core_8k.inc(177): Including file '../../avr8\dict/compiler2.inc'
-../../avr8\dict/core_8k.inc(178): Including file '../../common\words/bounds.asm'
-../../avr8\dict/core_8k.inc(179): Including file '../../common\words/s-to-d.asm'
-../../avr8\dict/core_8k.inc(180): Including file '../../avr8\words/to-body.asm'
-../../avr8\dict/nrww.inc(112): Including file '../../common\words/2literal.asm'
-../../avr8\dict/nrww.inc(113): Including file '../../avr8\words/equal.asm'
-../../avr8\dict/nrww.inc(114): Including file '../../common\words/num-constants.asm'
-../../avr8\amforth.asm(25): Including file 'dict_appl_core.inc'
-../../avr8\amforth.asm(36): Including file '../../avr8\amforth-eeprom.inc'
-
-
- ; file see ../template/template.asm. You may want to
- ; copy that file to this one and edit it afterwards.
-
- .include "preamble.inc"
-
- .include "macros.asm"
-
- .set DICT_COMPILER2 = 0 ;
- .set cpu_msp430 = 0
- .set cpu_avr8 = 1
-
- .include "user.inc"
-
- ;
-
- ; used by the multitasker
- .set USER_STATE = 0
- .set USER_FOLLOWER = 2
-
- ; stackpointer, used by mulitasker
- .set USER_RP = 4
- .set USER_SP0 = 6
- .set USER_SP = 8
-
- ; excpection handling
- .set USER_HANDLER = 10
-
- ; numeric IO
- .set USER_BASE = 12
-
- ; character IO
- .set USER_EMIT = 14
- .set USER_EMITQ = 16
- .set USER_KEY = 18
- .set USER_KEYQ = 20
-
- .set USER_SOURCE = 22
- .set USER_TO_IN = 24
- .set USER_REFILL = 26
-
- .set USER_P_OK = 28
- .set USER_P_ERR = 30
- .set USER_P_RDY = 32
-
- .set SYSUSERSIZE = 34
- ;
-
- .def zerol = r2
- .def zeroh = r3
- .def upl = r4
- .def uph = r5
-
- .def al = r6
- .def ah = r7
- .def bl = r8
- .def bh = r9
-
- ; internal
- .def mcu_boot = r10
- .def isrflag = r11
-
- .def temp4 = r14
- .def temp5 = r15
-
- .def temp0 = r16
- .def temp1 = r17
- .def temp2 = r18
- .def temp3 = r19
-
- .def temp6 = r20
- .def temp7 = r21
-
- .def tosl = r24
- .def tosh = r25
-
- .def wl = r22
- .def wh = r23
-
- .macro loadtos
- ld tosl, Y+
- ld tosh, Y+
- .endmacro
-
- .macro savetos
- st -Y, tosh
- st -Y, tosl
- .endmacro
-
- .macro in_
- .if (@1 < $40)
- in @0,@1
- .else
- lds @0,@1
- .endif
- .endmacro
-
- .macro out_
- .if (@0 < $40)
- out @0,@1
- .else
- sts @0,@1
- .endif
- .endmacro
-
- .macro sbi_
- .if (@0 < $40)
- sbi @0,@1
- .else
- in_ @2,@0
- ori @2,exp2(@1)
- out_ @0,@2
- .endif
- .endmacro
-
- .macro cbi_
- .if (@0 < $40)
- cbi @0,@1
- .else
- in_ @2,@0
- andi @2,~(exp2(@1))
- out_ @0,@2
- .endif
- .endmacro
-
- .macro jmp_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- jmp @0
- .else
- rjmp @0
- .endif
- .else
- jmp @0
- .endif
- .endmacro
- .macro call_
- ; a more flexible macro
- .ifdef @0
- .if (@0-pc > 2040) || (pc-@0>2040)
- call @0
- .else
- rcall @0
- .endif
- .else
- call @0
- .endif
- .endmacro
-
- ; F_CPU
- ; µsec 16000000 14745600 8000000 1000000
- ; 1 16 14,74 8 1
- ; 10 160 147,45 80 10
- ; 100 1600 1474,56 800 100
- ; 1000 16000 14745,6 8000 1000
- ;
- ; cycles = µsec * f_cpu / 1e6
- ; n_loops=cycles/5
- ;
- ; cycles already used will be subtracted from the delay
- ; the waittime resolution is 1 cycle (delay from exact to +1 cycle)
- ; the maximum delay at 20MHz (50ns/clock) is 38350ns
- ; waitcount register must specify an immediate register
- ;
- ; busy waits a specfied amount of microseconds
- .macro delay
- .set cycles = ( ( @0 * F_CPU ) / 1000000 )
- .if (cycles > ( 256 * 255 * 4 + 2))
- .error "MACRO delay - too many cycles to burn"
- .else
- .if (cycles > 6)
- .set loop_cycles = (cycles / 4)
- ldi zl,low(loop_cycles)
- ldi zh,high(loop_cycles)
- sbiw Z, 1
- brne pc-1
- .set cycles = (cycles - (loop_cycles * 4))
- .endif
- .if (cycles > 0)
- .if (cycles & 4)
- rjmp pc+1
- rjmp pc+1
- .endif
- .if (cycles & 2)
- rjmp pc+1
- .endif
- .if (cycles & 1)
- nop
- .endif
- .endif
- .endif
- .endmacro
-
- ; portability macros, they come from the msp430 branches
-
- .macro DEST
- .dw @0
- .endm
-
- ; controller specific file selected via include
- ; directory definition when calling the assembler (-I)
- .include "device.asm"
-
- ; generated automatically, do not edit
-
- .list
-
- .equ ramstart = 256
- .equ CELLSIZE = 2
- .macro readflashcell
- lsl zl
- rol zh
- lpm @0, Z+
- lpm @1, Z+
- .endmacro
- .macro writeflashcell
- lsl zl
- rol zh
- .endmacro
- .set WANT_ANALOG_COMPARATOR = 0
- .set WANT_USART0 = 0
- .set WANT_PORTA = 0
- .set WANT_PORTB = 0
- .set WANT_PORTC = 0
- .set WANT_PORTD = 0
- .set WANT_TIMER_COUNTER_0 = 0
- .set WANT_TIMER_COUNTER_2 = 0
- .set WANT_WATCHDOG = 0
- .set WANT_JTAG = 0
- .set WANT_BOOT_LOAD = 0
- .set WANT_EXTERNAL_INTERRUPT = 0
- .set WANT_AD_CONVERTER = 0
- .set WANT_TIMER_COUNTER_1 = 0
- .set WANT_EEPROM = 0
- .set WANT_TWI = 0
- .set WANT_SPI = 0
- .set WANT_CPU = 0
- .equ intvecsize = 2 ; please verify; flash size: 65536 bytes
- .equ pclen = 2 ; please verify
- .overlap
- .org 2
-000002 d12a rcall isr ; External Interrupt Request 0
- .org 4
-000004 d128 rcall isr ; External Interrupt Request 1
- .org 6
-000006 d126 rcall isr ; External Interrupt Request 2
- .org 8
-000008 d124 rcall isr ; Pin Change Interrupt Request 0
- .org 10
-00000a d122 rcall isr ; Pin Change Interrupt Request 1
- .org 12
-00000c d120 rcall isr ; Pin Change Interrupt Request 2
- .org 14
-00000e d11e rcall isr ; Pin Change Interrupt Request 3
- .org 16
-000010 d11c rcall isr ; Watchdog Time-out Interrupt
- .org 18
-000012 d11a rcall isr ; Timer/Counter2 Compare Match A
- .org 20
-000014 d118 rcall isr ; Timer/Counter2 Compare Match B
- .org 22
-000016 d116 rcall isr ; Timer/Counter2 Overflow
- .org 24
-000018 d114 rcall isr ; Timer/Counter1 Capture Event
- .org 26
-00001a d112 rcall isr ; Timer/Counter1 Compare Match A
- .org 28
-00001c d110 rcall isr ; Timer/Counter1 Compare Match B
- .org 30
-00001e d10e rcall isr ; Timer/Counter1 Overflow
- .org 32
-000020 d10c rcall isr ; Timer/Counter0 Compare Match A
- .org 34
-000022 d10a rcall isr ; Timer/Counter0 Compare Match B
- .org 36
-000024 d108 rcall isr ; Timer/Counter0 Overflow
- .org 38
-000026 d106 rcall isr ; SPI Serial Transfer Complete
- .org 40
-000028 d104 rcall isr ; USART0, Rx Complete
- .org 42
-00002a d102 rcall isr ; USART0 Data register Empty
- .org 44
-00002c d100 rcall isr ; USART0, Tx Complete
- .org 46
-00002e d0fe rcall isr ; Analog Comparator
- .org 48
-000030 d0fc rcall isr ; ADC Conversion Complete
- .org 50
-000032 d0fa rcall isr ; EEPROM Ready
- .org 52
-000034 d0f8 rcall isr ; 2-wire Serial Interface
- .org 54
-000036 d0f6 rcall isr ; Store Program Memory Read
- .equ INTVECTORS = 28
- .nooverlap
-
- ; compatability layer (maybe empty)
-
- ; controller data area, environment query mcu-info
- mcu_info:
- mcu_ramsize:
-000037 1000 .dw 4096
- mcu_eepromsize:
-000038 0800 .dw 2048
- mcu_maxdp:
-000039 e000 .dw 57344
- mcu_numints:
-00003a 001c .dw 28
- mcu_name:
-00003b 0009 .dw 9
-00003c 5441
-00003d 656d
-00003e 6167
-00003f 3436
-000040 0034 .db "ATmega644",0
- .set codestart=pc
-
- ; some defaults, change them in your application master file
- ; see template.asm for an example
-
- ; enabling Interrupts, disabling them affects
- ; other settings as well.
- .set WANT_INTERRUPTS = 1
-
- ; count the number of interrupts individually.
- ; requires a lot of RAM (one byte per interrupt)
- ; disabled by default.
- .set WANT_INTERRUPT_COUNTERS = 0
-
- ; receiving is asynchronously, so an interrupt queue is useful.
- .set WANT_ISR_RX = 1
-
- ; case insensitve dictionary lookup.
- .set WANT_IGNORECASE = 0
-
- ; map all memories to one address space. Details in the
- ; technical guide
- .set WANT_UNIFIED = 0
-
- ; terminal input buffer
- .set TIB_SIZE = 90 ; ANS94 needs at least 80 characters per line
-
- ; USER variables *in addition* to system ones
- .set APPUSERSIZE = 10 ; size of application specific user area in bytes
-
- ; addresses of various data segments
- .set rstackstart = RAMEND ; start address of return stack, grows downward
- .set stackstart = RAMEND - 80 ; start address of data stack, grows downward
- ; change only if you know what to you do
- .set NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8
- .set NUMRECOGNIZERS = 4 ; total number of recognizers, two are always used.
-
- ; 10 per mille (1 per cent) is ok.
- .set BAUD = 38400
- .set BAUD_MAXERROR = 10
-
- ; Dictionary setup
- .set VE_HEAD = $0000
- .set VE_ENVHEAD = $0000
-
- .set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
- ; cpu clock in hertz
- .equ F_CPU = 16000000
- .set BAUD_MAXERROR = 30
- .equ TIMER_INT = OVF2addr
-
- .include "drivers/usart_0.asm"
-
- .equ BAUDRATE_HIGH = UBRR0H
- .equ USART_C = UCSR0C
- .equ USART_B = UCSR0B
- .equ USART_A = UCSR0A
- .equ USART_DATA = UDR0
- .ifndef URXCaddr
- .equ URXCaddr = URXC0addr
- .equ UDREaddr = UDRE0addr
- .endif
-
- .equ bm_USART_RXRD = 1 << RXC0
- .equ bm_USART_TXRD = 1 << UDRE0
- .equ bm_ENABLE_TX = 1 << TXEN0
- .equ bm_ENABLE_RX = 1 << RXEN0
- .equ bm_ENABLE_INT_RX = 1<<RXCIE0
- .equ bm_ENABLE_INT_TX = 1<<UDRIE0
-
- .equ bm_USARTC_en = 0
- .equ bm_ASYNC = 0 << 6
- .equ bm_SYNC = 1 << 6
- .equ bm_NO_PARITY = 0 << 4
- .equ bm_EVEN_PARITY = 2 << 4
- .equ bm_ODD_PARITY = 3 << 4
- .equ bm_1STOPBIT = 0 << 3
- .equ bm_2STOPBIT = 1 << 3
- .equ bm_5BIT = 0 << 1
- .equ bm_6BIT = 1 << 1
- .equ bm_7BIT = 2 << 1
- .equ bm_8BIT = 3 << 1
-
- .include "drivers/usart_common.asm"
-
- .set USART_C_VALUE = bm_ASYNC | bm_NO_PARITY | bm_1STOPBIT | bm_8BIT
- .if WANT_INTERRUPTS == 0
- .if WANT_ISR_RX == 1
- .endif
- .endif
-
- .if WANT_ISR_RX == 1
- .set USART_B_VALUE = bm_ENABLE_TX | bm_ENABLE_RX | bm_ENABLE_INT_RX
- .include "drivers/usart-rx-buffer.asm"
-
-
- ; sizes have to be powers of 2!
- .equ usart_rx_size = $10
- .equ usart_rx_mask = usart_rx_size - 1
- .dseg
-000100 usart_rx_data: .byte usart_rx_size
-000110 usart_rx_in: .byte 1
-000111 usart_rx_out: .byte 1
- .cseg
-
- VE_TO_RXBUF:
-000041 ff07 .dw $ff07
-000042 723e
-000043 2d78
-000044 7562
-000045 0066 .db ">rx-buf",0
-000046 0000 .dw VE_HEAD
- .set VE_HEAD = VE_TO_RXBUF
- XT_TO_RXBUF:
-000047 0048 .dw PFA_rx_tobuf
- PFA_rx_tobuf:
-000048 2f08 mov temp0, tosl
-000049 9110 0110 lds temp1, usart_rx_in
-00004b e0e0 ldi zl, low(usart_rx_data)
-00004c e0f1 ldi zh, high(usart_rx_data)
-00004d 0fe1 add zl, temp1
-00004e 1df3 adc zh, zeroh
-00004f 8300 st Z, temp0
-000050 9513 inc temp1
-000051 701f andi temp1,usart_rx_mask
-000052 9310 0110 sts usart_rx_in, temp1
-000054 9189
-000055 9199 loadtos
-000056 940c 7005 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; setup with
- ; ' isr-rx URXCaddr int!
- VE_ISR_RX:
-000058 ff06 .dw $ff06
-000059 7369
-00005a 2d72
-00005b 7872 .db "isr-rx"
-00005c 0041 .dw VE_HEAD
- .set VE_HEAD = VE_ISR_RX
- XT_ISR_RX:
-00005d 7001 .dw DO_COLON
- usart_rx_isr:
-00005e 703d .dw XT_DOLITERAL
-00005f 00c6 .dw usart_data
-000060 7098 .dw XT_CFETCH
-000061 70b1 .dw XT_DUP
-000062 703d .dw XT_DOLITERAL
-000063 0003 .dw 3
-000064 7d7f .dw XT_EQUAL
-000065 7036 .dw XT_DOCONDBRANCH
-000066 0068 .dw usart_rx_isr1
-000067 7a59 .dw XT_COLD
- usart_rx_isr1:
-000068 0047 .dw XT_TO_RXBUF
-000069 7020 .dw XT_EXIT
-
- ; ( -- ) Hardware Access
- ; R( --)
- ; initialize usart
- ;VE_USART_INIT_RXBUFFER:
- ; .dw $ff0x
- ; .db "+usart-buffer"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_USART_INIT_RXBUFFER
- XT_USART_INIT_RX_BUFFER:
-00006a 7001 .dw DO_COLON
- PFA_USART_INIT_RX_BUFFER: ; ( -- )
-00006b 703d
-00006c 005d .dw XT_DOLITERAL, XT_ISR_RX
-00006d 703d
-00006e 0028 .dw XT_DOLITERAL, URXCaddr
-00006f 7487 .dw XT_INTSTORE
-
-000070 703d .dw XT_DOLITERAL
-000071 0100 .dw usart_rx_data
-000072 703d .dw XT_DOLITERAL
-000073 0016 .dw usart_rx_size + 6
-000074 7154 .dw XT_ZERO
-000075 74cf .dw XT_FILL
-000076 7020 .dw XT_EXIT
-
- ; ( -- c)
- ; MCU
- ; get 1 character from input queue, wait if needed using interrupt driver
- VE_RX_BUFFER:
-000077 ff06 .dw $ff06
-000078 7872
-000079 622d
-00007a 6675 .db "rx-buf"
-00007b 0058 .dw VE_HEAD
- .set VE_HEAD = VE_RX_BUFFER
- XT_RX_BUFFER:
-00007c 7001 .dw DO_COLON
- PFA_RX_BUFFER:
-00007d 0097 .dw XT_RXQ_BUFFER
-00007e 7036 .dw XT_DOCONDBRANCH
-00007f 007d .dw PFA_RX_BUFFER
-000080 703d .dw XT_DOLITERAL
-000081 0111 .dw usart_rx_out
-000082 7098 .dw XT_CFETCH
-000083 70b1 .dw XT_DUP
-000084 703d .dw XT_DOLITERAL
-000085 0100 .dw usart_rx_data
-000086 719d .dw XT_PLUS
-000087 7098 .dw XT_CFETCH
-000088 70c4 .dw XT_SWAP
-000089 722f .dw XT_1PLUS
-00008a 703d .dw XT_DOLITERAL
-00008b 000f .dw usart_rx_mask
-00008c 7213 .dw XT_AND
-00008d 703d .dw XT_DOLITERAL
-00008e 0111 .dw usart_rx_out
-00008f 708d .dw XT_CSTORE
-000090 7020 .dw XT_EXIT
-
- ; ( -- f)
- ; MCU
- ; check if unread characters are in the input queue
- VE_RXQ_BUFFER:
-000091 ff07 .dw $ff07
-000092 7872
-000093 2d3f
-000094 7562
-000095 0066 .db "rx?-buf",0
-000096 0077 .dw VE_HEAD
- .set VE_HEAD = VE_RXQ_BUFFER
- XT_RXQ_BUFFER:
-000097 7001 .dw DO_COLON
- PFA_RXQ_BUFFER:
-000098 7a51 .dw XT_PAUSE
-000099 703d .dw XT_DOLITERAL
-00009a 0111 .dw usart_rx_out
-00009b 7098 .dw XT_CFETCH
-00009c 703d .dw XT_DOLITERAL
-00009d 0110 .dw usart_rx_in
-00009e 7098 .dw XT_CFETCH
-00009f 7113 .dw XT_NOTEQUAL
-0000a0 7020 .dw XT_EXIT
- ; .include "drivers/timer-usart-isr.asm"
- .set XT_RX = XT_RX_BUFFER
- .set XT_RXQ = XT_RXQ_BUFFER
- .set XT_USART_INIT_RX = XT_USART_INIT_RX_BUFFER
- .else
- .endif
-
- .include "words/usart-tx-poll.asm"
-
- ; MCU
- ; check availability and send one character to the terminal using register poll
- VE_TX_POLL:
-0000a1 ff07 .dw $ff07
-0000a2 7874
-0000a3 702d
-0000a4 6c6f
-0000a5 006c .db "tx-poll",0
-0000a6 0091 .dw VE_HEAD
- .set VE_HEAD = VE_TX_POLL
- XT_TX_POLL:
-0000a7 7001 .dw DO_COLON
- PFA_TX_POLL:
- ; wait for data ready
-0000a8 00b5 .dw XT_TXQ_POLL
-0000a9 7036 .dw XT_DOCONDBRANCH
-0000aa 00a8 .dw PFA_TX_POLL
- ; send to usart
-0000ab 703d .dw XT_DOLITERAL
-0000ac 00c6 .dw USART_DATA
-0000ad 708d .dw XT_CSTORE
-0000ae 7020 .dw XT_EXIT
-
- ; ( -- f) MCU
- ; MCU
- ; check if a character can be send using register poll
- VE_TXQ_POLL:
-0000af ff08 .dw $ff08
-0000b0 7874
-0000b1 2d3f
-0000b2 6f70
-0000b3 6c6c .db "tx?-poll"
-0000b4 00a1 .dw VE_HEAD
- .set VE_HEAD = VE_TXQ_POLL
- XT_TXQ_POLL:
-0000b5 7001 .dw DO_COLON
- PFA_TXQ_POLL:
-0000b6 7a51 .dw XT_PAUSE
-0000b7 703d .dw XT_DOLITERAL
-0000b8 00c0 .dw USART_A
-0000b9 7098 .dw XT_CFETCH
-0000ba 703d .dw XT_DOLITERAL
-0000bb 0020 .dw bm_USART_TXRD
-0000bc 7213 .dw XT_AND
-0000bd 7020 .dw XT_EXIT
- .set XT_TX = XT_TX_POLL
- .set XT_TXQ = XT_TXQ_POLL
- .set XT_USART_INIT_TX = 0
-
- .include "words/ubrr.asm"
-
- ; MCU
- ; returns usart UBRR settings
- VE_UBRR:
-0000be ff04 .dw $ff04
-0000bf 6275
-0000c0 7272 .db "ubrr"
-0000c1 00af .dw VE_HEAD
- .set VE_HEAD = VE_UBRR
- XT_UBRR:
-0000c2 706f .dw PFA_DOVALUE1
- PFA_UBRR: ; ( -- )
-0000c3 0090 .dw EE_UBRRVAL
-0000c4 7bb4 .dw XT_EDEFERFETCH
-0000c5 7bbe .dw XT_EDEFERSTORE
- .include "words/usart.asm"
-
- ; MCU
- ; initialize usart
- VE_USART:
-0000c6 ff06 .dw $ff06
-0000c7 752b
-0000c8 6173
-0000c9 7472 .db "+usart"
-0000ca 00be .dw VE_HEAD
- .set VE_HEAD = VE_USART
- XT_USART:
-0000cb 7001 .dw DO_COLON
- PFA_USART: ; ( -- )
-
-0000cc 703d .dw XT_DOLITERAL
-0000cd 0098 .dw USART_B_VALUE
-0000ce 703d .dw XT_DOLITERAL
-0000cf 00c1 .dw USART_B
-0000d0 708d .dw XT_CSTORE
-
-0000d1 703d .dw XT_DOLITERAL
-0000d2 0006 .dw USART_C_VALUE
-0000d3 703d .dw XT_DOLITERAL
-0000d4 00c2 .dw USART_C | bm_USARTC_en
-0000d5 708d .dw XT_CSTORE
-
-0000d6 00c2 .dw XT_UBRR
-0000d7 70b1 .dw XT_DUP
-0000d8 72f9 .dw XT_BYTESWAP
-0000d9 703d .dw XT_DOLITERAL
-0000da 00c5 .dw BAUDRATE_HIGH
-0000db 708d .dw XT_CSTORE
-0000dc 703d .dw XT_DOLITERAL
-0000dd 00c4 .dw BAUDRATE_LOW
-0000de 708d .dw XT_CSTORE
- .if XT_USART_INIT_RX!=0
-0000df 006a .dw XT_USART_INIT_RX
- .endif
- .if XT_USART_INIT_TX!=0
- .endif
-
-0000e0 7020 .dw XT_EXIT
-
- ; settings for 1wire interface
- .equ OW_PORT=PORTB
- .EQU OW_BIT=4
- .include "drivers/1wire.asm"
-
- ; B. J. Rodriguez (MSP 430)
- ; Matthias Trute (AVR Atmega)
- ; COPYRIGHT
- ; (c) 2012 Bradford J. Rodriguez for the 430 code and API
-
- ; adapted 430 assembly code to AVR
- ; wishlist:
- ; use a configurable pin at runtime, compatible with bitnames.frt
- ; no external pull up, no external power supply for devices
- ; ???
- ;
- ;.EQU OW_BIT=4
- ;.equ OW_PORT=PORTE
- .set OW_DDR=(OW_PORT-1)
- .set OW_PIN=(OW_DDR-1)
-
- ;****f* 1W.RESET
- ; NAME
- ; 1W.RESET
- ; SYNOPSIS
- ; 1W.RESET ( -- f ) Initialize 1-wire devices; return true if present
- ; DESCRIPTION
- ; This configures the port pin used by the 1-wire interface, and then
- ; sends an "initialize" sequence to the 1-wire devices. If any device
- ; is present, it will be detected.
- ;
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" (drive output low) for >480 usec.
- ; b) Output "1" (let output float).
- ; c) After 15 to 60 usec, device will drive pin low for 60 to 240 usec.
- ; So, wait 75 usec and sample input.
- ; d) Leave output high (floating) for at least 480 usec.
- ;******
- ; ( -- f )
- ; Hardware
- ; Initialize 1-wire devices; return true if present
- VE_OW_RESET:
-0000e1 ff08 .dw $ff08
-0000e2 7731
-0000e3 722e
-0000e4 7365
-0000e5 7465 .db "1w.reset"
-0000e6 00c6 .dw VE_HEAD
- .set VE_HEAD = VE_OW_RESET
- XT_OW_RESET:
-0000e7 00e8 .dw PFA_OW_RESET
- PFA_OW_RESET:
-0000e8 939a
-0000e9 938a savetos
- ; setup to output
-0000ea 9a24 sbi OW_DDR, OW_BIT
- ; Pull output low
-0000eb 982c cbi OW_PORT, OW_BIT
- ; Delay >480 usec
-0000ec e8e0
-0000ed e0f7
-0000ee 9731
-0000ef f7f1 DELAY 480
- ; Critical timing period, disable interrupts.
-0000f0 b71f in temp1, SREG
-0000f1 94f8 cli
- ; Pull output high
-0000f2 9a2c sbi OW_PORT, OW_BIT
- ; make pin input, sends "1"
-0000f3 9824 cbi OW_DDR, OW_BIT
-0000f4 e0e0
-0000f5 e0f1
-0000f6 9731
-0000f7 f7f1 DELAY 64 ; delayB
- ; Sample input pin, set TOS if input is zero
-0000f8 b183 in tosl, OW_PIN
-0000f9 ff84 sbrs tosl, OW_BIT
-0000fa ef9f ser tosh
- ; End critical timing period, enable interrupts
-0000fb bf1f out SREG, temp1
- ; release bus
-0000fc 9824 cbi OW_DDR, OW_BIT
-0000fd 982c cbi OW_PORT, OW_BIT
-
- ; Delay rest of 480 usec
-0000fe e8e0
-0000ff e0f6
-000100 9731
-000101 f7f1 DELAY 416
- ; we now have the result flag in TOS
-000102 2f89 mov tosl, tosh
-000103 940c 7005 jmp_ DO_NEXT
-
- ;****f* 1W.SLOT
- ; NAME
- ; 1W.SLOT
- ; SYNOPSIS
- ; 1W.SLOT ( c -- c' ) Write and read one bit to/from 1-wire.
- ; DESCRIPTION
- ; The "touch byte" function is described in Dallas App Note 74.
- ; It outputs a byte to the 1-wire pin, LSB first, and reads back
- ; the state of the 1-wire pin after a suitable delay.
- ; To read a byte, output $FF and read the reply data.
- ; To write a byte, output that byte and discard the reply.
- ;
- ; This function performs one bit of the "touch" operation --
- ; one read/write "slot" in Dallas jargon. Perform this eight
- ; times in a row to get the "touch byte" function.
- ;
- ; PARAMETERS
- ; The input parameter is xxxxxxxxbbbbbbbo where
- ; 'xxxxxxxx' are don't cares,
- ; 'bbbbbbb' are bits to be shifted down, and
- ; 'o' is the bit to be output in the slot. This must be 1
- ; to create a read slot.
- ;
- ; The returned value is xxxxxxxxibbbbbbb where
- ; 'xxxxxxxx' are not known (the input shifted down 1 position),
- ; 'i' is the bit read during the slot. This has no meaning
- ; if it was a write slot.
- ; 'bbbbbbb' are the 7 input bits, shifted down one position.
- ;
- ; This peculiar parameter usage allows OWTOUCH to be written as
- ; OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT OWSLOT
- ;
- ; NOTES
- ; Interrupts are disabled during each bit.
-
- ; Timing, per DS18B20 data sheet:
- ; a) Output "0" for start period. (> 1 us, < 15 us, typ. 6 us*)
- ; b) Output data bit (0 or 1), open drain
- ; c) After MS from start of cycle, sample input (15 to 60 us, typ. 25 us*)
- ; d) After write-0 period from start of cycle, output "1" (>60 us)
- ; e) After recovery period, loop or return. (> 1 us)
- ; For writes, DS18B20 samples input 15 to 60 usec from start of cycle.
- ; * "Typical" values are per App Note 132 for a 300m cable length.
-
- ; --------- -------------------------------
- ; \ / /
- ; -------------------------------
- ; a b c d e
- ; | 6us | 19us | 35us | 2us |
- ;******
- ; ( c -- c' )
- ; Hardware
- ; Write and read one bit to/from 1-wire.
- VE_OW_SLOT:
-000105 ff07 .dw $ff07
-000106 7731
-000107 732e
-000108 6f6c
-000109 0074 .db "1w.slot",0
-00010a 00e1 .dw VE_HEAD
- .set VE_HEAD = VE_OW_SLOT
- XT_OW_SLOT:
-00010b 010c .dw PFA_OW_SLOT
- PFA_OW_SLOT:
- ; pull low
-00010c 982c cbi OW_PORT, OW_BIT
-00010d 9a24 sbi OW_DDR, OW_BIT
- ; disable interrupts
-00010e b71f in temp1, SREG
-00010f 94f8 cli
-000110 e1e8
-000111 e0f0
-000112 9731
-000113 f7f1 DELAY 6 ; DELAY A
- ; check bit
-000114 9488 clc
-000115 9587 ror tosl
-000116 f410 brcc PFA_OW_SLOT0 ; a 0 keeps the bus low
- ; release bus, a 1 is written
-000117 9a2c sbi OW_PORT, OW_BIT
-000118 9824 cbi OW_DDR, OW_BIT
- PFA_OW_SLOT0:
- ; sample the input (no action required if zero)
-000119 e2e4
-00011a e0f0
-00011b 9731
-00011c f7f1 DELAY 9 ; wait DELAY E to sample
-00011d b103 in temp0, OW_PIN
-00011e fd04 sbrc temp0, OW_BIT
-00011f 6880 ori tosl, $80
-
-000120 ecec
-000121 e0f0
-000122 9731
-000123 f7f1 DELAY 51 ; DELAY B
-000124 9a2c sbi OW_PORT, OW_BIT ; release bus
-000125 9824 cbi OW_DDR, OW_BIT
-000126 e0e8
-000127 e0f0
-000128 9731
-000129 f7f1 delay 2
- ; re-enable interrupts
-00012a bf1f out SREG, temp1
-00012b 940c 7005 jmp_ DO_NEXT
-
- .include "amforth.asm"
-
- ;;;;
- ;;;; GPL V2 (only)
-
- .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2
-
- .set corepc = pc
- .org $0000
-000000 940c 7a5a jmp_ PFA_COLD
-
- .org corepc
- .include "drivers/generic-isr.asm"
-
- .eseg
-000000 intvec: .byte INTVECTORS * CELLSIZE
- .dseg
-000112 intcnt: .byte INTVECTORS
- .cseg
-
- ; interrupt routine gets called (again) by rcall! This gives the
- ; address of the int-vector on the stack.
- isr:
-00012d 920a st -Y, r0
-00012e b60f in r0, SREG
-00012f 920a st -Y, r0
- .if (pclen==3)
- .endif
-000130 900f pop r0
-000131 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall)
-000132 940a dec r0
- .if intvecsize == 1 ;
- .endif
-000133 2cb0 mov isrflag, r0
-000134 93ff push zh
-000135 93ef push zl
-000136 e1e2 ldi zl, low(intcnt)
-000137 e0f1 ldi zh, high(intcnt)
-000138 9406 lsr r0 ; we use byte addresses in the counter array, not words
-000139 0de0 add zl, r0
-00013a 1df3 adc zh, zeroh
-00013b 8000 ld r0, Z
-00013c 9403 inc r0
-00013d 8200 st Z, r0
-00013e 91ef pop zl
-00013f 91ff pop zh
-
-000140 9009 ld r0, Y+
-000141 be0f out SREG, r0
-000142 9009 ld r0, Y+
-000143 9508 ret ; returns the interrupt, the rcall stack frame is removed!
- ; no reti here, see words/isr-end.asm
- ; lower part of the dictionary
- .include "dict/rww.inc"
-
-
- ; Arithmetics
- ; add a number to a double cell
- VE_MPLUS:
-000144 ff02 .dw $ff02
-000145 2b6d .db "m+"
-000146 0105 .dw VE_HEAD
- .set VE_HEAD = VE_MPLUS
- XT_MPLUS:
-000147 7001 .dw DO_COLON
- PFA_MPLUS:
-000148 7d67 .dw XT_S2D
-000149 7415 .dw XT_DPLUS
-00014a 7020 .dw XT_EXIT
- .include "words/ud-star.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSTAR:
-00014b ff03 .dw $ff03
-00014c 6475
-../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte
-00014d 002a .db "ud*"
-00014e 0144 .dw VE_HEAD
- .set VE_HEAD = VE_UDSTAR
- XT_UDSTAR:
-00014f 7001 .dw DO_COLON
- PFA_UDSTAR:
-
- .endif
- ;Z UD* ud1 d2 -- ud3 32*16->32 multiply
- ; XT_DUP >R UM* DROP XT_SWAP R> UM* ROT + ;
-
-000150 70b1
-000151 70ff
-000152 71e0
-000153 70d9 .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP
-000154 70c4
-000155 70f6
-000156 71e0
-000157 70e1
-000158 719d
-000159 7020 .DW XT_SWAP,XT_R_FROM,XT_UMSTAR,XT_ROT,XT_PLUS,XT_EXIT
- .include "words/umax.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMAX:
-00015a ff04 .dw $ff04
-00015b 6d75
-00015c 7861 .db "umax"
-00015d 014b .dw VE_HEAD
- .set VE_HEAD = VE_UMAX
- XT_UMAX:
-00015e 7001 .dw DO_COLON
- PFA_UMAX:
- .endif
-
-00015f 7565
-000160 715c .DW XT_2DUP,XT_ULESS
-000161 7036 .dw XT_DOCONDBRANCH
-000162 0164 DEST(UMAX1)
-000163 70c4 .DW XT_SWAP
-000164 70d9 UMAX1: .DW XT_DROP
-000165 7020 .dw XT_EXIT
- .include "words/umin.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UMIN:
-000166 ff04 .dw $ff04
-000167 6d75
-000168 6e69 .db "umin"
-000169 015a .dw VE_HEAD
- .set VE_HEAD = VE_UMIN
- XT_UMIN:
-00016a 7001 .dw DO_COLON
- PFA_UMIN:
- .endif
-00016b 7565
-00016c 7167 .DW XT_2DUP,XT_UGREATER
-00016d 7036 .dw XT_DOCONDBRANCH
-00016e 0170 DEST(UMIN1)
-00016f 70c4 .DW XT_SWAP
-000170 70d9 UMIN1: .DW XT_DROP
-000171 7020 .dw XT_EXIT
- .include "words/immediate-q.asm"
-
- ; Tools
- ; return +1 if immediate, -1 otherwise, flag from name>flags
- ;VE_IMMEDIATEQ:
- ; .dw $ff06
- ; .db "immediate?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_IMMEDIATEQ
- XT_IMMEDIATEQ:
-000172 7001 .dw DO_COLON
- PFA_IMMEDIATEQ:
-000173 703d .dw XT_DOLITERAL
-000174 8000 .dw $8000
-000175 7213 .dw XT_AND
-000176 711a .dw XT_ZEROEQUAL
-000177 7036 .dw XT_DOCONDBRANCH
-000178 017b DEST(IMMEDIATEQ1)
-000179 7d86 .dw XT_ONE
-00017a 7020 .dw XT_EXIT
- IMMEDIATEQ1:
- ; not immediate
-00017b 714b .dw XT_TRUE
-00017c 7020 .dw XT_EXIT
- .include "words/name2flags.asm"
-
- ; Tools
- ; get the flags from a name token
- VE_NAME2FLAGS:
-00017d ff0a .dw $ff0a
-00017e 616e
-00017f 656d
-000180 663e
-000181 616c
-000182 7367 .db "name>flags"
-000183 0166 .dw VE_HEAD
- .set VE_HEAD = VE_NAME2FLAGS
- XT_NAME2FLAGS:
-000184 7001 .dw DO_COLON
- PFA_NAME2FLAGS:
-000185 73cb .dw XT_FETCHI ; skip to link field
-000186 703d .dw XT_DOLITERAL
-000187 ff00 .dw $ff00
-000188 7213 .dw XT_AND
-000189 7020 .dw XT_EXIT
-
- .if AMFORTH_NRWW_SIZE > 8000
- .include "dict/appl_8k.inc"
-
-
- .include "words/newest.asm"
-
- ; System Variable
- ; system state
- VE_NEWEST:
-00018a ff06 .dw $ff06
-00018b 656e
-00018c 6577
-00018d 7473 .db "newest"
-00018e 017d .dw VE_HEAD
- .set VE_HEAD = VE_NEWEST
- XT_NEWEST:
-00018f 7048 .dw PFA_DOVARIABLE
- PFA_NEWEST:
-000190 012e .dw ram_newest
-
- .dseg
-00012e ram_newest: .byte 4
- .include "words/latest.asm"
-
- ; System Variable
- ; system state
- VE_LATEST:
-000191 ff06 .dw $ff06
-000192 616c
-000193 6574
-000194 7473 .db "latest"
-000195 018a .dw VE_HEAD
- .set VE_HEAD = VE_LATEST
- XT_LATEST:
-000196 7048 .dw PFA_DOVARIABLE
- PFA_LATEST:
-000197 0132 .dw ram_latest
-
- .dseg
-000132 ram_latest: .byte 2
- .include "words/do-create.asm"
-
- ; Compiler
- ; parse the input and create an empty vocabulary entry without XT and data field (PF)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOCREATE:
-000198 ff08 .dw $ff08
-000199 6328
-00019a 6572
-00019b 7461
-00019c 2965 .db "(create)"
-00019d 0191 .dw VE_HEAD
- .set VE_HEAD = VE_DOCREATE
- XT_DOCREATE:
-00019e 7001 .dw DO_COLON
- PFA_DOCREATE:
- .endif
-00019f 79b4
-0001a0 02f5 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid)
-0001a1 70b1
-0001a2 018f
-0001a3 755e
-0001a4 7081 .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid
-0001a5 02da
-0001a6 018f
-0001a7 7081 .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt
-0001a8 7020 .DW XT_EXIT
- .include "words/backslash.asm"
-
- ; Compiler
- ; everything up to the end of the current line is a comment
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BACKSLASH:
-0001a9 0001 .dw $0001
-0001aa 005c .db $5c,0
-0001ab 0198 .dw VE_HEAD
- .set VE_HEAD = VE_BACKSLASH
- XT_BACKSLASH:
-0001ac 7001 .dw DO_COLON
- PFA_BACKSLASH:
- .endif
-0001ad 799b .dw XT_SOURCE
-0001ae 70f0 .dw XT_NIP
-0001af 757e .dw XT_TO_IN
-0001b0 7081 .dw XT_STORE
-0001b1 7020 .dw XT_EXIT
- .include "words/l-paren.asm"
-
- ; Compiler
- ; skip everything up to the closing bracket on the same line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LPAREN:
-0001b2 0001 .dw $0001
-0001b3 0028 .db "(" ,0
-0001b4 01a9 .dw VE_HEAD
- .set VE_HEAD = VE_LPAREN
- XT_LPAREN:
-0001b5 7001 .dw DO_COLON
- PFA_LPAREN:
- .endif
-0001b6 703d .dw XT_DOLITERAL
-0001b7 0029 .dw ')'
-0001b8 7987 .dw XT_PARSE
-0001b9 756e .dw XT_2DROP
-0001ba 7020 .dw XT_EXIT
-
- .include "words/compile.asm"
-
- ; Dictionary
- ; read the following cell from the dictionary and append it to the current dictionary position.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COMPILE:
-0001bb ff07 .dw $ff07
-0001bc 6f63
-0001bd 706d
-0001be 6c69
-0001bf 0065 .db "compile",0
-0001c0 01b2 .dw VE_HEAD
- .set VE_HEAD = VE_COMPILE
- XT_COMPILE:
-0001c1 7001 .dw DO_COLON
- PFA_COMPILE:
- .endif
-0001c2 70f6 .dw XT_R_FROM
-0001c3 70b1 .dw XT_DUP
-0001c4 7bab .dw XT_ICELLPLUS
-0001c5 70ff .dw XT_TO_R
-0001c6 73cb .dw XT_FETCHI
-0001c7 01cc .dw XT_COMMA
-0001c8 7020 .dw XT_EXIT
- .include "words/comma.asm"
-
- ; Dictionary
- ; compile 16 bit into flash at DP
- VE_COMMA:
-0001c9 ff01 .dw $ff01
-0001ca 002c .db ',',0 ; ,
-0001cb 01bb .dw VE_HEAD
- .set VE_HEAD = VE_COMMA
- XT_COMMA:
-0001cc 7001 .dw DO_COLON
- PFA_COMMA:
-0001cd 75ae .dw XT_DP
-0001ce 7373 .dw XT_STOREI
-0001cf 75ae .dw XT_DP
-0001d0 722f .dw XT_1PLUS
-0001d1 7b99 .dw XT_DOTO
-0001d2 75af .dw PFA_DP
-0001d3 7020 .dw XT_EXIT
- .include "words/brackettick.asm"
-
- ; Compiler
- ; what ' does in the interpreter mode, do in colon definitions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETTICK:
-0001d4 0003 .dw $0003
-0001d5 275b
-0001d6 005d .db "[']",0
-0001d7 01c9 .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETTICK
- XT_BRACKETTICK:
-0001d8 7001 .dw DO_COLON
- PFA_BRACKETTICK:
- .endif
-0001d9 780a .dw XT_TICK
-0001da 01e2 .dw XT_LITERAL
-0001db 7020 .dw XT_EXIT
-
-
- .include "words/literal.asm"
-
- ; Compiler
- ; compile a literal in colon defintions
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LITERAL:
-0001dc 0007 .dw $0007
-0001dd 696c
-0001de 6574
-0001df 6172
-0001e0 006c .db "literal",0
-0001e1 01d4 .dw VE_HEAD
- .set VE_HEAD = VE_LITERAL
- XT_LITERAL:
-0001e2 7001 .dw DO_COLON
- PFA_LITERAL:
- .endif
-0001e3 01c1 .DW XT_COMPILE
-0001e4 703d .DW XT_DOLITERAL
-0001e5 01cc .DW XT_COMMA
-0001e6 7020 .DW XT_EXIT
- .include "words/sliteral.asm"
-
- ; String
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLITERAL:
-0001e7 0008 .dw $0008
-0001e8 6c73
-0001e9 7469
-0001ea 7265
-0001eb 6c61 .db "sliteral"
-0001ec 01dc .dw VE_HEAD
- .set VE_HEAD = VE_SLITERAL
- XT_SLITERAL:
-0001ed 7001 .dw DO_COLON
- PFA_SLITERAL:
- .endif
-0001ee 01c1 .dw XT_COMPILE
-0001ef 776d .dw XT_DOSLITERAL ; ( -- addr n)
-0001f0 777b .dw XT_SCOMMA
-0001f1 7020 .dw XT_EXIT
- .include "words/g-mark.asm"
-
- ; Compiler
- ; places current dictionary position for backward resolves
- ;VE_GMARK:
- ; .dw $ff05
- ; .db ">mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GMARK
- XT_GMARK:
-0001f2 7001 .dw DO_COLON
- PFA_GMARK:
-0001f3 75ae .dw XT_DP
-0001f4 01c1 .dw XT_COMPILE
-0001f5 ffff .dw -1 ; ffff does not erase flash
-0001f6 7020 .dw XT_EXIT
- .include "words/g-resolve.asm"
-
- ; Compiler
- ; resolve backward jumps
- ;VE_GRESOLVE:
- ; .dw $ff08
- ; .db ">resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_GRESOLVE
- XT_GRESOLVE:
-0001f7 7001 .dw DO_COLON
- PFA_GRESOLVE:
-0001f8 7b57 .dw XT_QSTACK
-0001f9 75ae .dw XT_DP
-0001fa 70c4 .dw XT_SWAP
-0001fb 7373 .dw XT_STOREI
-0001fc 7020 .dw XT_EXIT
- .include "words/l_mark.asm"
-
- ; Compiler
- ; place destination for backward branch
- ;VE_LMARK:
- ; .dw $ff05
- ; .db "<mark"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LMARK
- XT_LMARK:
-0001fd 7001 .dw DO_COLON
- PFA_LMARK:
-0001fe 75ae .dw XT_DP
-0001ff 7020 .dw XT_EXIT
- .include "words/l_resolve.asm"
-
- ; Compiler
- ; resolve backward branch
- ;VE_LRESOLVE:
- ; .dw $ff08
- ; .db "<resolve"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LRESOLVE
- XT_LRESOLVE:
-000200 7001 .dw DO_COLON
- PFA_LRESOLVE:
-000201 7b57 .dw XT_QSTACK
-000202 01cc .dw XT_COMMA
-000203 7020 .dw XT_EXIT
-
- .include "words/ahead.asm"
-
- ; Compiler
- ; do a unconditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AHEAD:
-000204 0005 .dw $0005
-000205 6861
-000206 6165
-000207 0064 .db "ahead",0
-000208 01e7 .dw VE_HEAD
- .set VE_HEAD = VE_AHEAD
- XT_AHEAD:
-000209 7001 .dw DO_COLON
- PFA_AHEAD:
- .endif
-00020a 01c1 .dw XT_COMPILE
-00020b 702f .dw XT_DOBRANCH
-00020c 01f2 .dw XT_GMARK
-00020d 7020 .dw XT_EXIT
- .include "words/if.asm"
-
- ; Compiler
- ; start conditional branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_IF:
-00020e 0002 .dw $0002
-00020f 6669 .db "if"
-000210 0204 .dw VE_HEAD
- .set VE_HEAD = VE_IF
- XT_IF:
-000211 7001 .dw DO_COLON
- PFA_IF:
- .endif
-000212 01c1 .dw XT_COMPILE
-000213 7036 .dw XT_DOCONDBRANCH
-000214 01f2 .dw XT_GMARK
-000215 7020 .dw XT_EXIT
- .include "words/else.asm"
-
- ; Compiler
- ; resolve the forward reference and place a new unresolved forward reference
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ELSE:
-000216 0004 .dw $0004
-000217 6c65
-000218 6573 .db "else"
-000219 020e .dw VE_HEAD
- .set VE_HEAD = VE_ELSE
- XT_ELSE:
-00021a 7001 .dw DO_COLON
- PFA_ELSE:
- .endif
-00021b 01c1 .dw XT_COMPILE
-00021c 702f .dw XT_DOBRANCH
-00021d 01f2 .dw XT_GMARK
-00021e 70c4 .dw XT_SWAP
-00021f 01f7 .dw XT_GRESOLVE
-000220 7020 .dw XT_EXIT
- .include "words/then.asm"
-
- ; Compiler
- ; finish if
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THEN:
-000221 0004 .dw $0004
-000222 6874
-000223 6e65 .db "then"
-000224 0216 .dw VE_HEAD
- .set VE_HEAD = VE_THEN
- XT_THEN:
-000225 7001 .dw DO_COLON
- PFA_THEN:
- .endif
-000226 01f7 .dw XT_GRESOLVE
-000227 7020 .dw XT_EXIT
- .include "words/begin.asm"
-
- ; Compiler
- ; put the next location for a transfer of control onto the control flow stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BEGIN:
-000228 0005 .dw $0005
-000229 6562
-00022a 6967
-00022b 006e .db "begin",0
-00022c 0221 .dw VE_HEAD
- .set VE_HEAD = VE_BEGIN
- XT_BEGIN:
-00022d 7001 .dw DO_COLON
- PFA_BEGIN:
- .endif
-00022e 01fd .dw XT_LMARK
-00022f 7020 .dw XT_EXIT
- .include "words/while.asm"
-
- ; Compiler
- ; at runtime skip until repeat if non-true
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WHILE:
-000230 0005 .dw $0005
-000231 6877
-000232 6c69
-000233 0065 .db "while",0
-000234 0228 .dw VE_HEAD
- .set VE_HEAD = VE_WHILE
- XT_WHILE:
-000235 7001 .dw DO_COLON
- PFA_WHILE:
- .endif
-000236 0211 .dw XT_IF
-000237 70c4 .dw XT_SWAP
-000238 7020 .dw XT_EXIT
- .include "words/repeat.asm"
-
- ; Compiler
- ; continue execution at dest, resolve orig
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REPEAT:
-000239 0006 .dw $0006
-00023a 6572
-00023b 6570
-00023c 7461 .db "repeat"
-00023d 0230 .dw VE_HEAD
- .set VE_HEAD = VE_REPEAT
- XT_REPEAT:
-00023e 7001 .dw DO_COLON
- PFA_REPEAT:
- .endif
-00023f 0252 .dw XT_AGAIN
-000240 0225 .dw XT_THEN
-000241 7020 .dw XT_EXIT
- .include "words/until.asm"
-
- ; Compiler
- ; finish begin with conditional branch, leaves the loop if true flag at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UNTIL:
-000242 0005 .dw $0005
-000243 6e75
-000244 6974
-000245 006c .db "until",0
-000246 0239 .dw VE_HEAD
- .set VE_HEAD = VE_UNTIL
- XT_UNTIL:
-000247 7001 .dw DO_COLON
- PFA_UNTIL:
- .endif
-000248 703d .dw XT_DOLITERAL
-000249 7036 .dw XT_DOCONDBRANCH
-00024a 01cc .dw XT_COMMA
-
-00024b 0200 .dw XT_LRESOLVE
-00024c 7020 .dw XT_EXIT
- .include "words/again.asm"
-
- ; Compiler
- ; compile a jump back to dest
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_AGAIN:
-00024d 0005 .dw $0005
-00024e 6761
-00024f 6961
-000250 006e .db "again",0
-000251 0242 .dw VE_HEAD
- .set VE_HEAD = VE_AGAIN
- XT_AGAIN:
-000252 7001 .dw DO_COLON
- PFA_AGAIN:
- .endif
-000253 01c1 .dw XT_COMPILE
-000254 702f .dw XT_DOBRANCH
-000255 0200 .dw XT_LRESOLVE
-000256 7020 .dw XT_EXIT
- .include "words/do.asm"
-
- ; Compiler
- ; start do .. [+]loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DO:
-000257 0002 .dw $0002
-000258 6f64 .db "do"
-000259 024d .dw VE_HEAD
- .set VE_HEAD = VE_DO
- XT_DO:
-00025a 7001 .dw DO_COLON
- PFA_DO:
-
- .endif
-00025b 01c1 .dw XT_COMPILE
-00025c 729b .dw XT_DODO
-00025d 01fd .dw XT_LMARK
-00025e 7154 .dw XT_ZERO
-00025f 02b5 .dw XT_TO_L
-000260 7020 .dw XT_EXIT
- .include "words/loop.asm"
-
- ; Compiler
- ; compile (loop) and resolve the backward branch
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LOOP:
-000261 0004 .dw $0004
-000262 6f6c
-000263 706f .db "loop"
-000264 0257 .dw VE_HEAD
- .set VE_HEAD = VE_LOOP
- XT_LOOP:
-000265 7001 .dw DO_COLON
- PFA_LOOP:
- .endif
-000266 01c1 .dw XT_COMPILE
-000267 72c9 .dw XT_DOLOOP
-000268 029c .dw XT_ENDLOOP
-000269 7020 .dw XT_EXIT
- .include "words/plusloop.asm"
-
- ; Compiler
- ; compile (+loop) and resolve branches
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PLUSLOOP:
-00026a 0005 .dw $0005
-00026b 6c2b
-00026c 6f6f
-00026d 0070 .db "+loop",0
-00026e 0261 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSLOOP
- XT_PLUSLOOP:
-00026f 7001 .dw DO_COLON
- PFA_PLUSLOOP:
- .endif
-000270 01c1 .dw XT_COMPILE
-000271 72ba .dw XT_DOPLUSLOOP
-000272 029c .dw XT_ENDLOOP
-000273 7020 .dw XT_EXIT
- .include "words/leave.asm"
-
- ; Compiler
- ; immediatly leave the current DO..LOOP
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LEAVE:
-000274 0005 .dw $0005
-000275 656c
-000276 7661
-000277 0065 .db "leave",0
-000278 026a .dw VE_HEAD
- .set VE_HEAD = VE_LEAVE
- XT_LEAVE:
-000279 7001 .dw DO_COLON
- PFA_LEAVE:
- .endif
-00027a 01c1
-00027b 72d4 .DW XT_COMPILE,XT_UNLOOP
-00027c 0209
-00027d 02b5
-00027e 7020 .DW XT_AHEAD,XT_TO_L,XT_EXIT
- .include "words/qdo.asm"
-
- ; Compiler
- ; start a ?do .. [+]loop control structure
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_QDO:
-00027f 0003 .dw $0003
-000280 643f
-000281 006f .db "?do",0
-000282 0274 .dw VE_HEAD
- .set VE_HEAD = VE_QDO
- XT_QDO:
-000283 7001 .dw DO_COLON
- PFA_QDO:
- .endif
-000284 01c1 .dw XT_COMPILE
-000285 028b .dw XT_QDOCHECK
-000286 0211 .dw XT_IF
-000287 025a .dw XT_DO
-000288 70c4 .dw XT_SWAP ; DO sets a 0 marker on the leave stack
-000289 02b5 .dw XT_TO_L ; then follows at the end.
-00028a 7020 .dw XT_EXIT
-
- ; there is no special runtime for ?do, the do runtime
- ; gets wrapped with the sequence
- ; ... ?do-check if do ..... loop then
- ; with
- ; : ?do-check ( n1 n2 -- n1 n2 true | false )
- ; 2dup = dup >r if 2drop then r> invert ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QDOCHECK:
-00028b 7001 .dw DO_COLON
- PFA_QDOCHECK:
- .endif
-00028c 7565 .dw XT_2DUP
-00028d 7d7f .dw XT_EQUAL
-00028e 70b1 .dw XT_DUP
-00028f 70ff .dw XT_TO_R
-000290 7036 .dw XT_DOCONDBRANCH
-000291 0293 DEST(PFA_QDOCHECK1)
-000292 756e .dw XT_2DROP
- PFA_QDOCHECK1:
-000293 70f6 .dw XT_R_FROM
-000294 71fd .dw XT_INVERT
-000295 7020 .dw XT_EXIT
- .include "words/endloop.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENDLOOP:
-000296 ff07 .dw $ff07
-000297 6e65
-000298 6c64
-000299 6f6f
-00029a 0070 .db "endloop",0
-00029b 027f .dw VE_HEAD
- .set VE_HEAD = VE_ENDLOOP
- XT_ENDLOOP:
-00029c 7001 .dw DO_COLON
- PFA_ENDLOOP:
- .endif
- ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN --
- ; <resolve backward loop
- ; BEGIN L> ?DUP WHILE POSTPONE THEN REPEAT ;
- ; resolve LEAVEs
- ; This is a common factor of LOOP and +LOOP.
-
-00029d 0200 .DW XT_LRESOLVE
-00029e 02a9
-00029f 70b9
-0002a0 7036 LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH
-0002a1 02a5 DEST(LOOP2)
-0002a2 0225 .DW XT_THEN
-0002a3 702f .dw XT_DOBRANCH
-0002a4 029e DEST(LOOP1)
-0002a5 7020 LOOP2: .DW XT_EXIT
- ; leave address stack
- .include "words/l-from.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_FROM:
-0002a6 ff02 .dw $ff02
-0002a7 3e6c .db "l>"
-0002a8 0296 .dw VE_HEAD
- .set VE_HEAD = VE_L_FROM
- XT_L_FROM:
-0002a9 7001 .dw DO_COLON
- PFA_L_FROM:
-
- .endif
- ;Z L> -- x L: x -- move from leave stack
- ; LP @ @ -2 LP +! ;
-
-0002aa 02c8 .dw XT_LP
-0002ab 7079 .dw XT_FETCH
-0002ac 7079 .dw XT_FETCH
-0002ad 703d .dw XT_DOLITERAL
-0002ae fffe .dw -2
-0002af 02c8 .dw XT_LP
-0002b0 7265 .dw XT_PLUSSTORE
-0002b1 7020 .dw XT_EXIT
- .include "words/to-l.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_L:
-0002b2 ff02 .dw $ff02
-0002b3 6c3e .db ">l"
-0002b4 02a6 .dw VE_HEAD
- .set VE_HEAD = VE_TO_L
- XT_TO_L:
-0002b5 7001 .dw DO_COLON
- PFA_TO_L:
- .endif
- ;Z >L x -- L: -- x move to leave stack
- ; CELL LP +! LP @ ! ; (L stack grows up)
-
-0002b6 7d8b .dw XT_TWO
-0002b7 02c8 .dw XT_LP
-0002b8 7265 .dw XT_PLUSSTORE
-0002b9 02c8 .dw XT_LP
-0002ba 7079 .dw XT_FETCH
-0002bb 7081 .dw XT_STORE
-0002bc 7020 .dw XT_EXIT
- .include "words/lp0.asm"
-
- ; Stack
- ; start address of leave stack
- VE_LP0:
-0002bd ff03 .dw $ff03
-0002be 706c
-0002bf 0030 .db "lp0",0
-0002c0 02b2 .dw VE_HEAD
- .set VE_HEAD = VE_LP0
- XT_LP0:
-0002c1 706f .dw PFA_DOVALUE1
- PFA_LP0:
-0002c2 0044 .dw CFG_LP0
-0002c3 7bb4 .dw XT_EDEFERFETCH
-0002c4 7bbe .dw XT_EDEFERSTORE
- .include "words/lp.asm"
-
- ; System Variable
- ; leave stack pointer
- VE_LP:
-0002c5 ff02 .dw $ff02
-0002c6 706c .db "lp"
-0002c7 02bd .dw VE_HEAD
- .set VE_HEAD = VE_LP
- XT_LP:
-0002c8 7048 .dw PFA_DOVARIABLE
- PFA_LP:
-0002c9 0134 .dw ram_lp
-
- .dseg
-000134 ram_lp: .byte 2
- .cseg
-
-
- .include "words/create.asm"
-
- ; Dictionary
- ; create a dictionary header. XT is (constant), with the address of the data field of name
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CREATE:
-0002ca ff06 .dw $ff06
-0002cb 7263
-0002cc 6165
-0002cd 6574 .db "create"
-0002ce 02c5 .dw VE_HEAD
- .set VE_HEAD = VE_CREATE
- XT_CREATE:
-0002cf 7001 .dw DO_COLON
- PFA_CREATE:
- .endif
-0002d0 019e .dw XT_DOCREATE
-0002d1 02fe .dw XT_REVEAL
-0002d2 01c1 .dw XT_COMPILE
-0002d3 7052 .dw PFA_DOCONSTANT
-0002d4 7020 .dw XT_EXIT
- .include "words/header.asm"
-
- ; Compiler
- ; creates the vocabulary header without XT and data field (PF) in the wordlist wid
- VE_HEADER:
-0002d5 ff06 .dw $ff06
-0002d6 6568
-0002d7 6461
-0002d8 7265 .db "header"
-0002d9 02ca .dw VE_HEAD
- .set VE_HEAD = VE_HEADER
- XT_HEADER:
-0002da 7001 .dw DO_COLON
- PFA_HEADER:
-0002db 75ae .dw XT_DP ; the new Name Field
-0002dc 70ff .dw XT_TO_R
-0002dd 70ff .dw XT_TO_R ; ( R: NFA WID )
-0002de 70b1 .dw XT_DUP
-0002df 7128 .dw XT_GREATERZERO
-0002e0 7036 .dw XT_DOCONDBRANCH
-0002e1 02ec .dw PFA_HEADER1
-0002e2 70b1 .dw XT_DUP
-0002e3 703d .dw XT_DOLITERAL
-0002e4 ff00 .dw $ff00 ; all flags are off (e.g. immediate)
-0002e5 721c .dw XT_OR
-0002e6 777f .dw XT_DOSCOMMA
- ; make the link to the previous entry in this wordlist
-0002e7 70f6 .dw XT_R_FROM
-0002e8 735f .dw XT_FETCHE
-0002e9 01cc .dw XT_COMMA
-0002ea 70f6 .dw XT_R_FROM
-0002eb 7020 .dw XT_EXIT
-
- PFA_HEADER1:
- ; -16: attempt to use zero length string as a name
-0002ec 703d .dw XT_DOLITERAL
-0002ed fff0 .dw -16
-0002ee 7841 .dw XT_THROW
-
- .include "words/wlscope.asm"
-
- ; Compiler
- ; dynamically place a word in a wordlist. The word name may be changed.
- VE_WLSCOPE:
-0002ef ff07 .dw $ff07
-0002f0 6c77
-0002f1 6373
-0002f2 706f
-0002f3 0065 .db "wlscope",0
-0002f4 02d5 .dw VE_HEAD
- .set VE_HEAD = VE_WLSCOPE
- XT_WLSCOPE:
-0002f5 7c13 .dw PFA_DODEFER1
- PFA_WLSCOPE:
-0002f6 0040 .dw CFG_WLSCOPE
-0002f7 7bb4 .dw XT_EDEFERFETCH
-0002f8 7bbe .dw XT_EDEFERSTORE
-
- ; wlscope, "wordlist scope" ( addr len -- addr' len' wid ), is a deferred word
- ; which enables the AmForth application to choose the wordlist ( wid ) for the
- ; new voc entry based on the input ( addr len ) string. The name of the new voc
- ; entry ( addr' len' ) may be different from the input string. Note that all
- ; created voc entry types pass through the wlscope mechanism. The default
- ; wlscope action passes the input string to the output without modification and
- ; uses get-current to select the wid.
- .include "words/reveal.asm"
-
- ; Dictionary
- ; makes an entry in a wordlist visible, if not already done.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REVEAL:
-0002f9 ff06 .dw $ff06
-0002fa 6572
-0002fb 6576
-0002fc 6c61 .db "reveal"
-0002fd 02ef .dw VE_HEAD
- .set VE_HEAD = VE_REVEAL
- XT_REVEAL:
-0002fe 7001 .dw DO_COLON
- PFA_REVEAL:
- .endif
-0002ff 018f
-000300 755e
-000301 7079 .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use
-000302 70b9
-000303 7036 .DW XT_QDUP,XT_DOCONDBRANCH
-000304 0309 DEST(REVEAL1)
-000305 018f
-000306 7079
-000307 70c4
-000308 733b .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE
- ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry
- REVEAL1:
-000309 7020 .DW XT_EXIT
- .include "words/does.asm"
-
- ; Compiler
- ; organize the XT replacement to call other colon code
- VE_DOES:
-00030a 0005 .dw $0005
-00030b 6f64
-00030c 7365
-00030d 003e .db "does>",0
-00030e 02f9 .dw VE_HEAD
- .set VE_HEAD = VE_DOES
- XT_DOES:
-00030f 7001 .dw DO_COLON
- PFA_DOES:
-000310 01c1 .dw XT_COMPILE
-000311 0322 .dw XT_DODOES
-000312 01c1 .dw XT_COMPILE ; create a code snippet to be used in an embedded XT
-000313 940e .dw $940e ; the address of this compiled
-000314 01c1 .dw XT_COMPILE ; code will replace the XT of the
-000315 0317 .dw DO_DODOES ; word that CREATE created
-000316 7020 .dw XT_EXIT ;
-
- DO_DODOES: ; ( -- PFA )
-000317 939a
-000318 938a savetos
-000319 01cb movw tosl, wl
-00031a 9601 adiw tosl, 1
- ; the following takes the address from a real uC-call
- .if (pclen==3)
- .endif
-00031b 917f pop wh
-00031c 916f pop wl
-
-00031d 93bf push XH
-00031e 93af push XL
-00031f 01db movw XL, wl
-000320 940c 7005 jmp_ DO_NEXT
-
- ; ( -- )
- ; System
- ; replace the XT written by CREATE to call the code that follows does>
- ;VE_DODOES:
- ; .dw $ff07
- ; .db "(does>)"
- ; .set VE_HEAD = VE_DODOES
- XT_DODOES:
-000322 7001 .dw DO_COLON
- PFA_DODOES:
-000323 70f6 .dw XT_R_FROM
-000324 018f .dw XT_NEWEST
-000325 755e .dw XT_CELLPLUS
-000326 7079 .dw XT_FETCH
-000327 735f .dw XT_FETCHE
-000328 7c7e .dw XT_NFA2CFA
-000329 7373 .dw XT_STOREI
-00032a 7020 .dw XT_EXIT
- .include "words/colon.asm"
-
- ; Compiler
- ; create a named entry in the dictionary, XT is DO_COLON
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_COLON:
-00032b ff01 .dw $ff01
-00032c 003a .db ":",0
-00032d 030a .dw VE_HEAD
- .set VE_HEAD = VE_COLON
- XT_COLON:
-00032e 7001 .dw DO_COLON
- PFA_COLON:
- .endif
-00032f 019e .dw XT_DOCREATE
-000330 0339 .dw XT_COLONNONAME
-000331 70d9 .dw XT_DROP
-000332 7020 .dw XT_EXIT
- .include "words/colon-noname.asm"
-
- ; Compiler
- ; create an unnamed entry in the dictionary, XT is DO_COLON
- VE_COLONNONAME:
-000333 ff07 .dw $ff07
-000334 6e3a
-000335 6e6f
-000336 6d61
-000337 0065 .db ":noname",0
-000338 032b .dw VE_HEAD
- .set VE_HEAD = VE_COLONNONAME
- XT_COLONNONAME:
-000339 7001 .dw DO_COLON
- PFA_COLONNONAME:
-00033a 75ae .dw XT_DP
-00033b 70b1 .dw XT_DUP
-00033c 0196 .dw XT_LATEST
-00033d 7081 .dw XT_STORE
-
-00033e 01c1 .dw XT_COMPILE
-00033f 7001 .dw DO_COLON
-
-000340 034e .dw XT_RBRACKET
-000341 7020 .dw XT_EXIT
- .include "words/semicolon.asm"
-
- ; Compiler
- ; finish colon defintion, compiles (exit) and returns to interpret state
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SEMICOLON:
-000342 0001 .dw $0001
-000343 003b .db $3b,0
-000344 0333 .dw VE_HEAD
- .set VE_HEAD = VE_SEMICOLON
- XT_SEMICOLON:
-000345 7001 .dw DO_COLON
- PFA_SEMICOLON:
- .endif
-000346 01c1 .dw XT_COMPILE
-000347 7020 .dw XT_EXIT
-000348 0356 .dw XT_LBRACKET
-000349 02fe .dw XT_REVEAL
-00034a 7020 .dw XT_EXIT
- .include "words/right-bracket.asm"
-
- ; Compiler
- ; enter compiler mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RBRACKET:
-00034b ff01 .dw $ff01
-00034c 005d .db "]",0
-00034d 0342 .dw VE_HEAD
- .set VE_HEAD = VE_RBRACKET
- XT_RBRACKET:
-00034e 7001 .dw DO_COLON
- PFA_RBRACKET:
- .endif
-00034f 7d86 .dw XT_ONE
-000350 754b .dw XT_STATE
-000351 7081 .dw XT_STORE
-000352 7020 .dw XT_EXIT
- .include "words/left-bracket.asm"
-
- ; Compiler
- ; enter interpreter mode
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_LBRACKET:
-000353 0001 .dw $0001
-000354 005b .db "[",0
-000355 034b .dw VE_HEAD
- .set VE_HEAD = VE_LBRACKET
- XT_LBRACKET:
-000356 7001 .dw DO_COLON
- PFA_LBRACKET:
- .endif
-000357 7154 .dw XT_ZERO
-000358 754b .dw XT_STATE
-000359 7081 .dw XT_STORE
-00035a 7020 .dw XT_EXIT
- .include "words/variable.asm"
-
- ; Compiler
- ; create a dictionary entry for a variable and allocate 1 cell RAM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_VARIABLE:
-00035b ff08 .dw $ff08
-00035c 6176
-00035d 6972
-00035e 6261
-00035f 656c .db "variable"
-000360 0353 .dw VE_HEAD
- .set VE_HEAD = VE_VARIABLE
- XT_VARIABLE:
-000361 7001 .dw DO_COLON
- PFA_VARIABLE:
- .endif
-000362 75bf .dw XT_HERE
-000363 036d .dw XT_CONSTANT
-000364 7d8b .dw XT_TWO
-000365 75c8 .dw XT_ALLOT
-000366 7020 .dw XT_EXIT
- .include "words/constant.asm"
-
- ; Compiler
- ; create a constant in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_CONSTANT:
-000367 ff08 .dw $ff08
-000368 6f63
-000369 736e
-00036a 6174
-00036b 746e .db "constant"
-00036c 035b .dw VE_HEAD
- .set VE_HEAD = VE_CONSTANT
- XT_CONSTANT:
-00036d 7001 .dw DO_COLON
- PFA_CONSTANT:
- .endif
-00036e 019e .dw XT_DOCREATE
-00036f 02fe .dw XT_REVEAL
-000370 01c1 .dw XT_COMPILE
-000371 7048 .dw PFA_DOVARIABLE
-000372 01cc .dw XT_COMMA
-000373 7020 .dw XT_EXIT
- .include "words/user.asm"
-
- ; Compiler
- ; create a dictionary entry for a user variable at offset n
- VE_USER:
-000374 ff04 .dw $ff04
-000375 7375
-000376 7265 .db "user"
-000377 0367 .dw VE_HEAD
- .set VE_HEAD = VE_USER
- XT_USER:
-000378 7001 .dw DO_COLON
- PFA_USER:
-000379 019e .dw XT_DOCREATE
-00037a 02fe .dw XT_REVEAL
-
-00037b 01c1 .dw XT_COMPILE
-00037c 7058 .dw PFA_DOUSER
-00037d 01cc .dw XT_COMMA
-00037e 7020 .dw XT_EXIT
-
- .include "words/recurse.asm"
-
- ; Compiler
- ; compile the XT of the word currently being defined into the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECURSE:
-00037f 0007 .dw $0007
-000380 6572
-000381 7563
-000382 7372
-000383 0065 .db "recurse",0
-000384 0374 .dw VE_HEAD
- .set VE_HEAD = VE_RECURSE
- XT_RECURSE:
-000385 7001 .dw DO_COLON
- PFA_RECURSE:
- .endif
-000386 0196 .dw XT_LATEST
-000387 7079 .dw XT_FETCH
-000388 01cc .dw XT_COMMA
-000389 7020 .dw XT_EXIT
- .include "words/immediate.asm"
-
- ; Compiler
- ; set immediate flag for the most recent word definition
- VE_IMMEDIATE:
-00038a ff09 .dw $ff09
-00038b 6d69
-00038c 656d
-00038d 6964
-00038e 7461
-00038f 0065 .db "immediate",0
-000390 037f .dw VE_HEAD
- .set VE_HEAD = VE_IMMEDIATE
- XT_IMMEDIATE:
-000391 7001 .dw DO_COLON
- PFA_IMMEDIATE:
-000392 0433 .dw XT_GET_CURRENT
-000393 735f .dw XT_FETCHE
-000394 70b1 .dw XT_DUP
-000395 73cb .dw XT_FETCHI
-000396 703d .dw XT_DOLITERAL
-000397 7fff .dw $7fff
-000398 7213 .dw XT_AND
-000399 70c4 .dw XT_SWAP
-00039a 7373 .dw XT_STOREI
-00039b 7020 .dw XT_EXIT
-
- .include "words/bracketchar.asm"
-
- ; Tools
- ; skip leading space delimites, place the first character of the word on the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BRACKETCHAR:
-00039c 0006 .dw $0006
-00039d 635b
-00039e 6168
-00039f 5d72 .db "[char]"
-0003a0 038a .dw VE_HEAD
- .set VE_HEAD = VE_BRACKETCHAR
- XT_BRACKETCHAR:
-0003a1 7001 .dw DO_COLON
- PFA_BRACKETCHAR:
- .endif
-0003a2 01c1 .dw XT_COMPILE
-0003a3 703d .dw XT_DOLITERAL
-0003a4 78ea .dw XT_CHAR
-0003a5 01cc .dw XT_COMMA
-0003a6 7020 .dw XT_EXIT
- .include "words/abort-string.asm"
-
- ;C i*x x1 -- R: j*x -- x1<>0
- ; POSTPONE IS" POSTPONE ?ABORT ; IMMEDIATE
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORTQUOTE:
-0003a7 0006 .dw $0006
-0003a8 6261
-0003a9 726f
-0003aa 2274 .db "abort",'"'
-0003ab 039c .dw VE_HEAD
- .set VE_HEAD = VE_ABORTQUOTE
- XT_ABORTQUOTE:
-0003ac 7001 .dw DO_COLON
- PFA_ABORTQUOTE:
- .endif
-0003ad 74c1 .dw XT_SQUOTE
-0003ae 01c1 .dw XT_COMPILE
-0003af 03be .dw XT_QABORT
-0003b0 7020 .DW XT_EXIT
- .include "words/abort.asm"
-
- ; Exceptions
- ; send an exception -1
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABORT:
-0003b1 ff05 .dw $ff05
-0003b2 6261
-0003b3 726f
-0003b4 0074 .db "abort",0
-0003b5 03a7 .dw VE_HEAD
- .set VE_HEAD = VE_ABORT
- XT_ABORT:
-0003b6 7001 .dw DO_COLON
- PFA_ABORT:
- .endif
-0003b7 714b .dw XT_TRUE
-0003b8 7841 .dw XT_THROW
- .include "words/q-abort.asm"
-
- ; ROT IF ITYPE ABORT THEN 2DROP ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QABORT:
-0003b9 ff06 .dw $ff06
-0003ba 613f
-0003bb 6f62
-0003bc 7472 .db "?abort"
-0003bd 03b1 .dw VE_HEAD
- .set VE_HEAD = VE_QABORT
- XT_QABORT:
-0003be 7001 .dw DO_COLON
- PFA_QABORT:
-
- .endif
-0003bf 70e1
-0003c0 7036 .DW XT_ROT,XT_DOCONDBRANCH
-0003c1 03c4 DEST(QABO1)
-0003c2 77a0
-0003c3 03b6 .DW XT_ITYPE,XT_ABORT
-0003c4 756e
-0003c5 7020 QABO1: .DW XT_2DROP,XT_EXIT
-
- .include "words/get-stack.asm"
-
- ; Tools
- ; Get a stack from EEPROM
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_STACK:
-0003c6 ff09 .dw $ff09
-0003c7 6567
-0003c8 2d74
-0003c9 7473
-0003ca 6361
-0003cb 006b .db "get-stack",0
-0003cc 03b9 .dw VE_HEAD
- .set VE_HEAD = VE_GET_STACK
- XT_GET_STACK:
-0003cd 7001 .dw DO_COLON
- .endif
-0003ce 70b1 .dw XT_DUP
-0003cf 755e .dw XT_CELLPLUS
-0003d0 70c4 .dw XT_SWAP
-0003d1 735f .dw XT_FETCHE
-0003d2 70b1 .dw XT_DUP
-0003d3 70ff .dw XT_TO_R
-0003d4 7154 .dw XT_ZERO
-0003d5 70c4 .dw XT_SWAP ; go from bigger to smaller addresses
-0003d6 028b .dw XT_QDOCHECK
-0003d7 7036 .dw XT_DOCONDBRANCH
-0003d8 03e4 DEST(PFA_N_FETCH_E2)
-0003d9 729b .dw XT_DODO
- PFA_N_FETCH_E1:
- ; ( ee-addr )
-0003da 72ac .dw XT_I
-0003db 7235 .dw XT_1MINUS
-0003dc 7558 .dw XT_CELLS ; ( -- ee-addr i*2 )
-0003dd 70cf .dw XT_OVER ; ( -- ee-addr i*2 ee-addr )
-0003de 719d .dw XT_PLUS ; ( -- ee-addr ee-addr+i
-0003df 735f .dw XT_FETCHE ;( -- ee-addr item_i )
-0003e0 70c4 .dw XT_SWAP ;( -- item_i ee-addr )
-0003e1 714b .dw XT_TRUE ; shortcut for -1
-0003e2 72ba .dw XT_DOPLUSLOOP
-0003e3 03da DEST(PFA_N_FETCH_E1)
- PFA_N_FETCH_E2:
-0003e4 756e .dw XT_2DROP
-0003e5 70f6 .dw XT_R_FROM
-0003e6 7020 .dw XT_EXIT
-
- .include "words/set-stack.asm"
-
- ; Tools
- ; Write a stack to EEPROM
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_STACK:
-0003e7 ff09 .dw $ff09
-0003e8 6573
-0003e9 2d74
-0003ea 7473
-0003eb 6361
-0003ec 006b .db "set-stack",0
-0003ed 03c6 .dw VE_HEAD
- .set VE_HEAD = VE_SET_STACK
- XT_SET_STACK:
-0003ee 7001 .dw DO_COLON
- PFA_SET_STACK:
- .endif
-0003ef 70cf .dw XT_OVER
-0003f0 7121 .dw XT_ZEROLESS
-0003f1 7036 .dw XT_DOCONDBRANCH
-0003f2 03f6 DEST(PFA_SET_STACK0)
-0003f3 703d .dw XT_DOLITERAL
-0003f4 fffc .dw -4
-0003f5 7841 .dw XT_THROW
- PFA_SET_STACK0:
-0003f6 7565 .dw XT_2DUP
-0003f7 733b .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr )
-0003f8 70c4 .dw XT_SWAP
-0003f9 7154 .dw XT_ZERO
-0003fa 028b .dw XT_QDOCHECK
-0003fb 7036 .dw XT_DOCONDBRANCH
-0003fc 0403 DEST(PFA_SET_STACK2)
-0003fd 729b .dw XT_DODO
- PFA_SET_STACK1:
-0003fe 755e .dw XT_CELLPLUS ; ( -- i_x e-addr )
-0003ff 7576 .dw XT_TUCK ; ( -- e-addr i_x e-addr
-000400 733b .dw XT_STOREE
-000401 72c9 .dw XT_DOLOOP
-000402 03fe DEST(PFA_SET_STACK1)
- PFA_SET_STACK2:
-000403 70d9 .dw XT_DROP
-000404 7020 .dw XT_EXIT
-
- .include "words/map-stack.asm"
-
- ; Tools
- ; Iterate over a stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAPSTACK:
-000405 ff09 .dw $ff09
-000406 616d
-000407 2d70
-000408 7473
-000409 6361
-00040a 006b .db "map-stack",0
-00040b 03e7 .dw VE_HEAD
- .set VE_HEAD = VE_MAPSTACK
- XT_MAPSTACK:
-00040c 7001 .dw DO_COLON
- PFA_MAPSTACK:
- .endif
-00040d 70b1 .dw XT_DUP
-00040e 755e .dw XT_CELLPLUS
-00040f 70c4 .dw XT_SWAP
-000410 735f .dw XT_FETCHE
-000411 7558 .dw XT_CELLS
-000412 7d5e .dw XT_BOUNDS
-000413 028b .dw XT_QDOCHECK
-000414 7036 .dw XT_DOCONDBRANCH
-000415 0428 DEST(PFA_MAPSTACK3)
-000416 729b .dw XT_DODO
- PFA_MAPSTACK1:
-000417 72ac .dw XT_I
-000418 735f .dw XT_FETCHE ; -- i*x XT id
-000419 70c4 .dw XT_SWAP
-00041a 70ff .dw XT_TO_R
-00041b 7108 .dw XT_R_FETCH
-00041c 702a .dw XT_EXECUTE ; i*x id -- j*y true | i*x false
-00041d 70b9 .dw XT_QDUP
-00041e 7036 .dw XT_DOCONDBRANCH
-00041f 0424 DEST(PFA_MAPSTACK2)
-000420 70f6 .dw XT_R_FROM
-000421 70d9 .dw XT_DROP
-000422 72d4 .dw XT_UNLOOP
-000423 7020 .dw XT_EXIT
- PFA_MAPSTACK2:
-000424 70f6 .dw XT_R_FROM
-000425 7d8b .dw XT_TWO
-000426 72ba .dw XT_DOPLUSLOOP
-000427 0417 DEST(PFA_MAPSTACK1)
- PFA_MAPSTACK3:
-000428 70d9 .dw XT_DROP
-000429 7154 .dw XT_ZERO
-00042a 7020 .dw XT_EXIT
-
- ;
- ; : map-stack ( i*x XT e-addr -- j*y )
- ; dup cell+ swap @e cells bounds ?do
- ; ( -- i*x XT )
- ; i @e swap >r r@ execute
- ; ?dup if r> drop unloop exit then
- ; r>
- ; 2 +loop drop 0
- ; ;
- .include "words/get-current.asm"
-
- ; Search Order
- ; get the wid of the current compilation word list
- VE_GET_CURRENT:
-00042b ff0b .dw $ff0b
-00042c 6567
-00042d 2d74
-00042e 7563
-00042f 7272
-000430 6e65
-000431 0074 .db "get-current",0
-000432 0405 .dw VE_HEAD
- .set VE_HEAD = VE_GET_CURRENT
- XT_GET_CURRENT:
-000433 7001 .dw DO_COLON
- PFA_GET_CURRENT:
-000434 703d .dw XT_DOLITERAL
-000435 004a .dw CFG_CURRENT
-000436 735f .dw XT_FETCHE
-000437 7020 .dw XT_EXIT
- .include "words/get-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_ORDER:
-000438 ff09 .dw $ff09
-000439 6567
-00043a 2d74
-00043b 726f
-00043c 6564
-00043d 0072 .db "get-order",0
-00043e 042b .dw VE_HEAD
- .set VE_HEAD = VE_GET_ORDER
- XT_GET_ORDER:
-00043f 7001 .dw DO_COLON
- PFA_GET_ORDER:
- .endif
-000440 703d .dw XT_DOLITERAL
-000441 004e .dw CFG_ORDERLISTLEN
-000442 03cd .dw XT_GET_STACK
-000443 7020 .dw XT_EXIT
- .include "words/cfg-order.asm"
-
- ; Search Order
- ; Get the current search order word list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CFG_ORDER:
-000444 ff09 .dw $ff09
-000445 6663
-000446 2d67
-000447 726f
-000448 6564
-000449 0072 .db "cfg-order",0
-00044a 0438 .dw VE_HEAD
- .set VE_HEAD = VE_CFG_ORDER
- XT_CFG_ORDER:
-00044b 7048 .dw PFA_DOVARIABLE
- PFA_CFG_ORDER:
- .endif
-00044c 004e .dw CFG_ORDERLISTLEN
- .include "words/compare.asm"
-
- ; String
- ; compares two strings in RAM
- VE_COMPARE:
-00044d ff07 .dw $ff07
-00044e 6f63
-00044f 706d
-000450 7261
-000451 0065 .db "compare",0
-000452 0444 .dw VE_HEAD
- .set VE_HEAD = VE_COMPARE
- XT_COMPARE:
-000453 0454 .dw PFA_COMPARE
- PFA_COMPARE:
-000454 93bf push xh
-000455 93af push xl
-000456 018c movw temp0, tosl
-000457 9189
-000458 9199 loadtos
-000459 01dc movw xl, tosl
-00045a 9189
-00045b 9199 loadtos
-00045c 019c movw temp2, tosl
-00045d 9189
-00045e 9199 loadtos
-00045f 01fc movw zl, tosl
- PFA_COMPARE_LOOP:
-000460 90ed ld temp4, X+
-000461 90f1 ld temp5, Z+
-000462 14ef cp temp4, temp5
-000463 f451 brne PFA_COMPARE_NOTEQUAL
-000464 950a dec temp0
-000465 f019 breq PFA_COMPARE_ENDREACHED2
-000466 952a dec temp2
-000467 f7c1 brne PFA_COMPARE_LOOP
-000468 c001 rjmp PFA_COMPARE_ENDREACHED
- PFA_COMPARE_ENDREACHED2:
-000469 952a dec temp2
- PFA_COMPARE_ENDREACHED:
-00046a 2b02 or temp0, temp2
-00046b f411 brne PFA_COMPARE_CHECKLASTCHAR
-00046c 2788 clr tosl
-00046d c002 rjmp PFA_COMPARE_DONE
- PFA_COMPARE_CHECKLASTCHAR:
- PFA_COMPARE_NOTEQUAL:
-00046e ef8f ser tosl
-00046f c000 rjmp PFA_COMPARE_DONE
-
- PFA_COMPARE_DONE:
-000470 2f98 mov tosh, tosl
-000471 91af pop xl
-000472 91bf pop xh
-000473 940c 7005 jmp_ DO_NEXT
- .include "words/nfa2lfa.asm"
-
- ; System
- ; get the link field address from the name field address
- VE_NFA2LFA:
-000475 ff07 .dw $ff07
-000476 666e
-000477 3e61
-000478 666c
-000479 0061 .db "nfa>lfa",0
-00047a 044d .dw VE_HEAD
- .set VE_HEAD = VE_NFA2LFA
- XT_NFA2LFA:
-00047b 7001 .dw DO_COLON
- PFA_NFA2LFA:
-00047c 7c72 .dw XT_NAME2STRING
-00047d 722f .dw XT_1PLUS
-00047e 7204 .dw XT_2SLASH
-00047f 719d .dw XT_PLUS
-000480 7020 .dw XT_EXIT
- .elif AMFORTH_NRWW_SIZE > 4000
- .elif AMFORTH_NRWW_SIZE > 2000
- .else
- .endif
- .include "dict_appl.inc"
-
- ; they may be moved to the core dictionary if needed
- .include "words/dot-s.asm"
-
- ; Tools
- ; stack dump
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTS:
-000481 ff02 .dw $ff02
-000482 732e .db ".s"
-000483 0475 .dw VE_HEAD
- .set VE_HEAD = VE_DOTS
- XT_DOTS:
-000484 7001 .dw DO_COLON
- PFA_DOTS:
- .endif
-000485 7aa1 .dw XT_DEPTH
-000486 7448 .dw XT_UDOT
-000487 77e2 .dw XT_SPACE
-000488 7aa1 .dw XT_DEPTH
-000489 7154 .dw XT_ZERO
-00048a 028b .dw XT_QDOCHECK
-00048b 7036 .dw XT_DOCONDBRANCH
-00048c 0493 DEST(PFA_DOTS2)
-00048d 729b .dw XT_DODO
- PFA_DOTS1:
-00048e 72ac .dw XT_I
-00048f 74af .dw XT_PICK
-000490 7448 .dw XT_UDOT
-000491 72c9 .dw XT_DOLOOP
-000492 048e DEST(PFA_DOTS1)
- PFA_DOTS2:
-000493 7020 .dw XT_EXIT
- .include "words/spirw.asm"
-
- ; MCU
- ; SPI exchange of 1 byte
- VE_SPIRW:
-000494 ff06 .dw $ff06
-000495 2163
-000496 7340
-000497 6970 .db "c!@spi"
-000498 0481 .dw VE_HEAD
- .set VE_HEAD = VE_SPIRW
- XT_SPIRW:
-000499 049a .dw PFA_SPIRW
- PFA_SPIRW:
-00049a d003 rcall do_spirw
-00049b 2799 clr tosh
-00049c 940c 7005 jmp_ DO_NEXT
-
- do_spirw:
-00049e bd8e out_ SPDR, tosl
- do_spirw1:
-00049f b50d in_ temp0, SPSR
-0004a0 7f08 cbr temp0,7
-0004a1 bd0d out_ SPSR, temp0
-0004a2 b50d in_ temp0, SPSR
-0004a3 ff07 sbrs temp0, 7
-0004a4 cffa rjmp do_spirw1 ; wait until complete
-0004a5 b58e in_ tosl, SPDR
-0004a6 9508 ret
- .include "words/n-spi.asm"
-
- ; MCU
- ; read len bytes from SPI to addr
- VE_N_SPIR:
-0004a7 ff05 .dw $ff05
-0004a8 406e
-0004a9 7073
-0004aa 0069 .db "n@spi",0
-0004ab 0494 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIR
- XT_N_SPIR:
-0004ac 04ad .dw PFA_N_SPIR
- PFA_N_SPIR:
-0004ad 018c movw temp0, tosl
-0004ae 9189
-0004af 9199 loadtos
-0004b0 01fc movw zl, tosl
-0004b1 01c8 movw tosl, temp0
- PFA_N_SPIR_LOOP:
-0004b2 bc2e out_ SPDR, zerol
- PFA_N_SPIR_LOOP1:
-0004b3 b52d in_ temp2, SPSR
-0004b4 ff27 sbrs temp2, SPIF
-0004b5 cffd rjmp PFA_N_SPIR_LOOP1
-0004b6 b52e in_ temp2, SPDR
-0004b7 9321 st Z+, temp2
-0004b8 9701 sbiw tosl, 1
-0004b9 f7c1 brne PFA_N_SPIR_LOOP
-0004ba 9189
-0004bb 9199 loadtos
-0004bc 940c 7005 jmp_ DO_NEXT
-
- ; ( addr len -- )
- ; MCU
- ; write len bytes to SPI from addr
- VE_N_SPIW:
-0004be ff05 .dw $ff05
-0004bf 216e
-0004c0 7073
-0004c1 0069 .db "n!spi",0
-0004c2 04a7 .dw VE_HEAD
- .set VE_HEAD = VE_N_SPIW
- XT_N_SPIW:
-0004c3 04c4 .dw PFA_N_SPIW
- PFA_N_SPIW:
-0004c4 018c movw temp0, tosl
-0004c5 9189
-0004c6 9199 loadtos
-0004c7 01fc movw zl, tosl
-0004c8 01c8 movw tosl, temp0
- PFA_N_SPIW_LOOP:
-0004c9 9121 ld temp2, Z+
-0004ca bd2e out_ SPDR, temp2
- PFA_N_SPIW_LOOP1:
-0004cb b52d in_ temp2, SPSR
-0004cc ff27 sbrs temp2, SPIF
-0004cd cffd rjmp PFA_N_SPIW_LOOP1
-0004ce b52e in_ temp2, SPDR ; ignore the data
-0004cf 9701 sbiw tosl, 1
-0004d0 f7c1 brne PFA_N_SPIW_LOOP
-0004d1 9189
-0004d2 9199 loadtos
-0004d3 940c 7005 jmp_ DO_NEXT
- .include "words/applturnkey.asm"
-
- ; R( -- )
- ; application specific turnkey action
- VE_APPLTURNKEY:
-0004d5 ff0b .dw $ff0b
-0004d6 7061
-0004d7 6c70
-0004d8 7574
-0004d9 6e72
-0004da 656b
-0004db 0079 .db "applturnkey",0
-0004dc 04be .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
- XT_APPLTURNKEY:
-0004dd 7001 .dw DO_COLON
- PFA_APPLTURNKEY:
-0004de 00cb .dw XT_USART
-
- .if WANT_INTERRUPTS == 1
-0004df 7479 .dw XT_INTON
- .endif
-0004e0 7b64 .dw XT_DOT_VER
-0004e1 77e2 .dw XT_SPACE
-0004e2 7540 .dw XT_F_CPU
-0004e3 703d .dw XT_DOLITERAL
-0004e4 03e8 .dw 1000
-0004e5 71c2 .dw XT_UMSLASHMOD
-0004e6 70f0 .dw XT_NIP
-0004e7 75dd .dw XT_DECIMAL
-0004e8 7722 .dw XT_DOT
-0004e9 776d .dw XT_DOSLITERAL
-0004ea 0004 .dw 4
-0004eb 486b
-0004ec 207a .db "kHz "
-0004ed 77a0 .dw XT_ITYPE
-0004ee 7020 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .set DICT_COMPILER2 = 1
-
- .include "words/set-current.asm"
-
- ; Search Order
- ; set current word list to the given word list wid
- VE_SET_CURRENT:
-0004ef ff0b .dw $ff0b
-0004f0 6573
-0004f1 2d74
-0004f2 7563
-0004f3 7272
-0004f4 6e65
-0004f5 0074 .db "set-current",0
-0004f6 04d5 .dw VE_HEAD
- .set VE_HEAD = VE_SET_CURRENT
- XT_SET_CURRENT:
-0004f7 7001 .dw DO_COLON
- PFA_SET_CURRENT:
-0004f8 703d .dw XT_DOLITERAL
-0004f9 004a .dw CFG_CURRENT
-0004fa 733b .dw XT_STOREE
-0004fb 7020 .dw XT_EXIT
- .include "words/wordlist.asm"
-
- ; Search Order
- ; create a new, empty wordlist
- VE_WORDLIST:
-0004fc ff08 .dw $ff08
-0004fd 6f77
-0004fe 6472
-0004ff 696c
-000500 7473 .db "wordlist"
-000501 04ef .dw VE_HEAD
- .set VE_HEAD = VE_WORDLIST
- XT_WORDLIST:
-000502 7001 .dw DO_COLON
- PFA_WORDLIST:
-000503 75b7 .dw XT_EHERE
-000504 7154 .dw XT_ZERO
-000505 70cf .dw XT_OVER
-000506 733b .dw XT_STOREE
-000507 70b1 .dw XT_DUP
-000508 755e .dw XT_CELLPLUS
-000509 7b99 .dw XT_DOTO
-00050a 75b8 .dw PFA_EHERE
-00050b 7020 .dw XT_EXIT
-
- .include "words/forth-wordlist.asm"
-
- ; Search Order
- ; get the system default word list
- VE_FORTHWORDLIST:
-00050c ff0e .dw $ff0e
-00050d 6f66
-00050e 7472
-00050f 2d68
-000510 6f77
-000511 6472
-000512 696c
-000513 7473 .db "forth-wordlist"
-000514 04fc .dw VE_HEAD
- .set VE_HEAD = VE_FORTHWORDLIST
- XT_FORTHWORDLIST:
-000515 7048 .dw PFA_DOVARIABLE
- PFA_FORTHWORDLIST:
-000516 004c .dw CFG_FORTHWORDLIST
- .include "words/set-order.asm"
-
- ; Search Order
- ; replace the search order list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_ORDER:
-000517 ff09 .dw $ff09
-000518 6573
-000519 2d74
-00051a 726f
-00051b 6564
-00051c 0072 .db "set-order",0
-00051d 050c .dw VE_HEAD
- .set VE_HEAD = VE_SET_ORDER
- XT_SET_ORDER:
-00051e 7001 .dw DO_COLON
- PFA_SET_ORDER:
- .endif
-00051f 703d .dw XT_DOLITERAL
-000520 004e .dw CFG_ORDERLISTLEN
-000521 03ee .dw XT_SET_STACK
-000522 7020 .dw XT_EXIT
-
- .include "words/set-recognizer.asm"
-
- ; Interpreter
- ; replace the recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SET_RECOGNIZERS:
-000523 ff0f .dw $ff0f
-000524 6573
-000525 2d74
-000526 6572
-000527 6f63
-000528 6e67
-000529 7a69
-00052a 7265
-00052b 0073 .db "set-recognizers",0
-00052c 0517 .dw VE_HEAD
- .set VE_HEAD = VE_SET_RECOGNIZERS
- XT_SET_RECOGNIZERS:
-00052d 7001 .dw DO_COLON
- PFA_SET_RECOGNIZERS:
- .endif
-00052e 703d .dw XT_DOLITERAL
-00052f 0060 .dw CFG_RECOGNIZERLISTLEN
-000530 03ee .dw XT_SET_STACK
-000531 7020 .dw XT_EXIT
-
- .include "words/get-recognizer.asm"
-
- ; Interpreter
- ; Get the current recognizer list
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_GET_RECOGNIZERS:
-000532 ff0f .dw $ff0f
-000533 6567
-000534 2d74
-000535 6572
-000536 6f63
-000537 6e67
-000538 7a69
-000539 7265
-00053a 0073 .db "get-recognizers",0
-00053b 0523 .dw VE_HEAD
- .set VE_HEAD = VE_GET_RECOGNIZERS
- XT_GET_RECOGNIZERS:
-00053c 7001 .dw DO_COLON
- PFA_GET_RECOGNIZERS:
- .endif
-00053d 703d .dw XT_DOLITERAL
-00053e 0060 .dw CFG_RECOGNIZERLISTLEN
-00053f 03cd .dw XT_GET_STACK
-000540 7020 .dw XT_EXIT
- .include "words/code.asm"
-
- ; Compiler
- ; create named entry in the dictionary, XT is the data field
- VE_CODE:
-000541 ff04 .dw $ff04
-000542 6f63
-000543 6564 .db "code"
-000544 0532 .dw VE_HEAD
- .set VE_HEAD = VE_CODE
- XT_CODE:
-000545 7001 .dw DO_COLON
- PFA_CODE:
-000546 019e .dw XT_DOCREATE
-000547 02fe .dw XT_REVEAL
-000548 75ae .dw XT_DP
-000549 7bab .dw XT_ICELLPLUS
-00054a 01cc .dw XT_COMMA
-00054b 7020 .dw XT_EXIT
- .include "words/end-code.asm"
-
- ; Compiler
- ; finish a code definition
- VE_ENDCODE:
-00054c ff08 .dw $ff08
-00054d 6e65
-00054e 2d64
-00054f 6f63
-000550 6564 .db "end-code"
-000551 0541 .dw VE_HEAD
- .set VE_HEAD = VE_ENDCODE
- XT_ENDCODE:
-000552 7001 .dw DO_COLON
- PFA_ENDCODE:
-000553 01c1 .dw XT_COMPILE
-000554 940c .dw $940c
-000555 01c1 .dw XT_COMPILE
-000556 7005 .dw DO_NEXT
-000557 7020 .dw XT_EXIT
- .include "words/marker.asm"
-
- ; System Value
- ; The eeprom address until which MARKER saves and restores the eeprom data.
- VE_MARKER:
-000558 ff08 .dw $ff08
-000559 6d28
-00055a 7261
-00055b 656b
-00055c 2972 .db "(marker)"
-00055d 054c .dw VE_HEAD
- .set VE_HEAD = VE_MARKER
- XT_MARKER:
-00055e 706f .dw PFA_DOVALUE1
- PFA_MARKER:
-00055f 006c .dw EE_MARKER
-000560 7bb4 .dw XT_EDEFERFETCH
-000561 7bbe .dw XT_EDEFERSTORE
- .include "words/postpone.asm"
-
- ; Compiler
- ; Append the compilation semantics of "name" to the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_POSTPONE:
-000562 0008 .dw $0008
-000563 6f70
-000564 7473
-000565 6f70
-000566 656e .db "postpone"
-000567 0558 .dw VE_HEAD
- .set VE_HEAD = VE_POSTPONE
- XT_POSTPONE:
-000568 7001 .dw DO_COLON
- PFA_POSTPONE:
- .endif
-000569 79b4 .dw XT_PARSENAME
-00056a 7acc .dw XT_FORTHRECOGNIZER
-00056b 7ad7 .dw XT_RECOGNIZE
-00056c 70b1 .dw XT_DUP
-00056d 70ff .dw XT_TO_R
-00056e 7bab .dw XT_ICELLPLUS
-00056f 7bab .dw XT_ICELLPLUS
-000570 73cb .dw XT_FETCHI
-000571 702a .dw XT_EXECUTE
-000572 70f6 .dw XT_R_FROM
-000573 7bab .dw XT_ICELLPLUS
-000574 73cb .dw XT_FETCHI
-000575 01cc .dw XT_COMMA
-000576 7020 .dw XT_EXIT
- .endif
- .include "words/2r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_2R_FETCH:
-000577 ff03 .dw $ff03
-000578 7232
-000579 0040 .db "2r@",0
-00057a 0562 .dw VE_HEAD
- .set VE_HEAD = VE_2R_FETCH
- XT_2R_FETCH:
-00057b 057c .dw PFA_2R_FETCH
- PFA_2R_FETCH:
-00057c 939a
-00057d 938a savetos
-00057e 91ef pop zl
-00057f 91ff pop zh
-000580 918f pop tosl
-000581 919f pop tosh
-000582 939f push tosh
-000583 938f push tosl
-000584 93ff push zh
-000585 93ef push zl
-000586 939a
-000587 938a savetos
-000588 01cf movw tosl, zl
-000589 940c 7005 jmp_ DO_NEXT
-
- .set DPSTART = pc
- .if(pc>AMFORTH_RO_SEG)
- .endif
-
- .org AMFORTH_RO_SEG
- .include "amforth-interpreter.asm"
-
-
- DO_COLON:
-007001 93bf push XH
-007002 93af push XL ; PUSH IP
-007003 01db movw XL, wl
-007004 9611 adiw xl, 1
- DO_NEXT:
- .if WANT_INTERRUPTS == 1
-007005 14b2 cp isrflag, zerol
-007006 f469 brne DO_INTERRUPT
- .endif
-007007 01fd movw zl, XL ; READ IP
-007008 0fee
-007009 1fff
-00700a 9165
-00700b 9175 readflashcell wl, wh
-00700c 9611 adiw XL, 1 ; INC IP
-
- DO_EXECUTE:
-00700d 01fb movw zl, wl
-00700e 0fee
-00700f 1fff
-007010 9105
-007011 9115 readflashcell temp0,temp1
-007012 01f8 movw zl, temp0
-007013 9409 ijmp
-
- .if WANT_INTERRUPTS == 1
- DO_INTERRUPT:
- ; here we deal with interrupts the forth way
-007014 939a
-007015 938a savetos
-007016 2d8b mov tosl, isrflag
-007017 2799 clr tosh
-007018 24bb clr isrflag
-007019 ea62 ldi wl, LOW(XT_ISREXEC)
-00701a e774 ldi wh, HIGH(XT_ISREXEC)
-00701b cff1 rjmp DO_EXECUTE
- .include "dict/nrww.inc"
-
- ; section together with the forth inner interpreter
-
- .include "words/exit.asm"
-
- ; Compiler
- ; end of current colon word
- VE_EXIT:
-00701c ff04 .dw $ff04
-00701d 7865
-00701e 7469 .db "exit"
-00701f 0577 .dw VE_HEAD
- .set VE_HEAD = VE_EXIT
- XT_EXIT:
-007020 7021 .dw PFA_EXIT
- PFA_EXIT:
-007021 91af pop XL
-007022 91bf pop XH
-007023 cfe1 jmp_ DO_NEXT
- .include "words/execute.asm"
-
- ; System
- ; execute XT
- VE_EXECUTE:
-007024 ff07 .dw $ff07
-007025 7865
-007026 6365
-007027 7475
-007028 0065 .db "execute",0
-007029 701c .dw VE_HEAD
- .set VE_HEAD = VE_EXECUTE
- XT_EXECUTE:
-00702a 702b .dw PFA_EXECUTE
- PFA_EXECUTE:
-00702b 01bc movw wl, tosl
-00702c 9189
-00702d 9199 loadtos
-00702e cfde jmp_ DO_EXECUTE
- .include "words/dobranch.asm"
-
- ; System
- ; runtime of branch
- ;VE_DOBRANCH:
- ; .dw $ff08
- ; .db "(branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOBRANCH
- XT_DOBRANCH:
-00702f 7030 .dw PFA_DOBRANCH
- PFA_DOBRANCH:
-007030 01fd movw zl, XL
-007031 0fee
-007032 1fff
-007033 91a5
-007034 91b5 readflashcell XL,XH
-007035 cfcf jmp_ DO_NEXT
- .include "words/docondbranch.asm"
-
- ; System
- ; runtime of ?branch
- ;VE_DOCONDBRANCH:
- ; .dw $ff09
- ; .db "(?branch)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONDBRANCH
- XT_DOCONDBRANCH:
-007036 7037 .dw PFA_DOCONDBRANCH
- PFA_DOCONDBRANCH:
-007037 2b98 or tosh, tosl
-007038 9189
-007039 9199 loadtos
-00703a f3a9 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch
-00703b 9611 adiw XL, 1
-00703c cfc8 jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/doliteral.asm"
-
- ; System
- ; runtime of literal
- ;VE_DOLITERAL:
- ; .dw $ff09
- ; .db "(literal)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLITERAL
- XT_DOLITERAL:
-00703d 703e .dw PFA_DOLITERAL
- PFA_DOLITERAL:
-00703e 939a
-00703f 938a savetos
-007040 01fd movw zl, xl
-007041 0fee
-007042 1fff
-007043 9185
-007044 9195 readflashcell tosl,tosh
-007045 9611 adiw xl, 1
-007046 cfbe jmp_ DO_NEXT
-
- .include "words/dovariable.asm"
-
- ; System
- ; puts content of parameter field (1 cell) to TOS
- ;VE_DOVARIABLE:
- ; .dw $ff0a
- ; .db "(variable)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOVARIABLE
- XT_DOVARIABLE:
-007047 7048 .dw PFA_DOVARIABLE
- PFA_DOVARIABLE:
-007048 939a
-007049 938a savetos
-00704a 01fb movw zl, wl
-00704b 9631 adiw zl,1
-00704c 0fee
-00704d 1fff
-00704e 9185
-00704f 9195 readflashcell tosl,tosh
-007050 cfb4 jmp_ DO_NEXT
- .include "words/doconstant.asm"
-
- ; System
- ; place data field address on TOS
- ;VE_DOCONSTANT:
- ; .dw $ff0a
- ; .db "(constant)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOCONSTANT
- XT_DOCONSTANT:
-007051 7052 .dw PFA_DOCONSTANT
- PFA_DOCONSTANT:
-007052 939a
-007053 938a savetos
-007054 01cb movw tosl, wl
-007055 9601 adiw tosl, 1
-007056 cfae jmp_ DO_NEXT
- .include "words/douser.asm"
-
- ; System
- ; runtime part of user
- ;VE_DOUSER:
- ; .dw $ff06
- ; .db "(user)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOUSER
- XT_DOUSER:
-007057 7058 .dw PFA_DOUSER
- PFA_DOUSER:
-007058 939a
-007059 938a savetos
-00705a 01fb movw zl, wl
-00705b 9631 adiw zl, 1
-00705c 0fee
-00705d 1fff
-00705e 9185
-00705f 9195 readflashcell tosl,tosh
-007060 0d84 add tosl, upl
-007061 1d95 adc tosh, uph
-007062 cfa2 jmp_ DO_NEXT
- .include "words/do-value.asm"
-
- ; System
- ; runtime of value
- VE_DOVALUE:
-007063 ff07 .dw $ff07
-007064 7628
-007065 6c61
-007066 6575
-007067 0029 .db "(value)", 0
-007068 7024 .dw VE_HEAD
- .set VE_HEAD = VE_DOVALUE
- XT_DOVALUE:
-007069 7001 .dw DO_COLON
- PFA_DOVALUE:
-00706a 019e .dw XT_DOCREATE
-00706b 02fe .dw XT_REVEAL
-00706c 01c1 .dw XT_COMPILE
-00706d 706f .dw PFA_DOVALUE1
-00706e 7020 .dw XT_EXIT
- PFA_DOVALUE1:
-00706f 940e 0317 call_ DO_DODOES
-007071 70b1 .dw XT_DUP
-007072 7bab .dw XT_ICELLPLUS
-007073 73cb .dw XT_FETCHI
-007074 702a .dw XT_EXECUTE
-007075 7020 .dw XT_EXIT
-
- ; : (value) <builds does> dup icell+ @i execute ;
- .include "words/fetch.asm"
-
- ; Memory
- ; read 1 cell from RAM address
- VE_FETCH:
-007076 ff01 .dw $ff01
-007077 0040 .db "@",0
-007078 7063 .dw VE_HEAD
- .set VE_HEAD = VE_FETCH
- XT_FETCH:
-007079 707a .dw PFA_FETCH
- PFA_FETCH:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHRAM:
-00707a 01fc movw zl, tosl
- ; low byte is read before the high byte
-00707b 9181 ld tosl, z+
-00707c 9191 ld tosh, z+
-00707d cf87 jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store.asm"
-
- ; Memory
- ; write n to RAM memory at addr, low byte first
- VE_STORE:
-00707e ff01 .dw $ff01
-00707f 0021 .db "!",0
-007080 7076 .dw VE_HEAD
- .set VE_HEAD = VE_STORE
- XT_STORE:
-007081 7082 .dw PFA_STORE
- PFA_STORE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STORERAM:
-007082 01fc movw zl, tosl
-007083 9189
-007084 9199 loadtos
- ; the high byte is written before the low byte
-007085 8391 std Z+1, tosh
-007086 8380 std Z+0, tosl
-007087 9189
-007088 9199 loadtos
-007089 cf7b jmp_ DO_NEXT
- .if WANT_UNIFIED == 1
- .endif
- .include "words/cstore.asm"
-
- ; Memory
- ; store a single byte to RAM address
- VE_CSTORE:
-00708a ff02 .dw $ff02
-00708b 2163 .db "c!"
-00708c 707e .dw VE_HEAD
- .set VE_HEAD = VE_CSTORE
- XT_CSTORE:
-00708d 708e .dw PFA_CSTORE
- PFA_CSTORE:
-00708e 01fc movw zl, tosl
-00708f 9189
-007090 9199 loadtos
-007091 8380 st Z, tosl
-007092 9189
-007093 9199 loadtos
-007094 cf70 jmp_ DO_NEXT
- .include "words/cfetch.asm"
-
- ; Memory
- ; fetch a single byte from memory mapped locations
- VE_CFETCH:
-007095 ff02 .dw $ff02
-007096 4063 .db "c@"
-007097 708a .dw VE_HEAD
- .set VE_HEAD = VE_CFETCH
- XT_CFETCH:
-007098 7099 .dw PFA_CFETCH
- PFA_CFETCH:
-007099 01fc movw zl, tosl
-00709a 2799 clr tosh
-00709b 8180 ld tosl, Z
-00709c cf68 jmp_ DO_NEXT
- .include "words/fetch-u.asm"
-
- ; Memory
- ; read 1 cell from USER area
- VE_FETCHU:
-00709d ff02 .dw $ff02
-00709e 7540 .db "@u"
-00709f 7095 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHU
- XT_FETCHU:
-0070a0 7001 .dw DO_COLON
- PFA_FETCHU:
-0070a1 7302 .dw XT_UP_FETCH
-0070a2 719d .dw XT_PLUS
-0070a3 7079 .dw XT_FETCH
-0070a4 7020 .dw XT_EXIT
- .include "words/store-u.asm"
-
- ; Memory
- ; write n to USER area at offset
- VE_STOREU:
-0070a5 ff02 .dw $ff02
-0070a6 7521 .db "!u"
-0070a7 709d .dw VE_HEAD
- .set VE_HEAD = VE_STOREU
- XT_STOREU:
-0070a8 7001 .dw DO_COLON
- PFA_STOREU:
-0070a9 7302 .dw XT_UP_FETCH
-0070aa 719d .dw XT_PLUS
-0070ab 7081 .dw XT_STORE
-0070ac 7020 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/dup.asm"
-
- ; Stack
- ; duplicate TOS
- VE_DUP:
-0070ad ff03 .dw $ff03
-0070ae 7564
-0070af 0070 .db "dup",0
-0070b0 70a5 .dw VE_HEAD
- .set VE_HEAD = VE_DUP
- XT_DUP:
-0070b1 70b2 .dw PFA_DUP
- PFA_DUP:
-0070b2 939a
-0070b3 938a savetos
-0070b4 cf50 jmp_ DO_NEXT
- .include "words/qdup.asm"
-
- ; Stack
- ; duplicate TOS if non-zero
- VE_QDUP:
-0070b5 ff04 .dw $ff04
-0070b6 643f
-0070b7 7075 .db "?dup"
-0070b8 70ad .dw VE_HEAD
- .set VE_HEAD = VE_QDUP
- XT_QDUP:
-0070b9 70ba .dw PFA_QDUP
- PFA_QDUP:
-0070ba 2f08 mov temp0, tosl
-0070bb 2b09 or temp0, tosh
-0070bc f011 breq PFA_QDUP1
-0070bd 939a
-0070be 938a savetos
- PFA_QDUP1:
-0070bf cf45 jmp_ DO_NEXT
- .include "words/swap.asm"
-
- ; Stack
- ; swaps the two top level stack cells
- VE_SWAP:
-0070c0 ff04 .dw $ff04
-0070c1 7773
-0070c2 7061 .db "swap"
-0070c3 70b5 .dw VE_HEAD
- .set VE_HEAD = VE_SWAP
- XT_SWAP:
-0070c4 70c5 .dw PFA_SWAP
- PFA_SWAP:
-0070c5 018c movw temp0, tosl
-0070c6 9189
-0070c7 9199 loadtos
-0070c8 931a st -Y, temp1
-0070c9 930a st -Y, temp0
-0070ca cf3a jmp_ DO_NEXT
- .include "words/over.asm"
-
- ; Stack
- ; Place a copy of x1 on top of the stack
- VE_OVER:
-0070cb ff04 .dw $ff04
-0070cc 766f
-0070cd 7265 .db "over"
-0070ce 70c0 .dw VE_HEAD
- .set VE_HEAD = VE_OVER
- XT_OVER:
-0070cf 70d0 .dw PFA_OVER
- PFA_OVER:
-0070d0 939a
-0070d1 938a savetos
-0070d2 818a ldd tosl, Y+2
-0070d3 819b ldd tosh, Y+3
-
-0070d4 cf30 jmp_ DO_NEXT
- .include "words/drop.asm"
-
- ; Stack
- ; drop TOS
- VE_DROP:
-0070d5 ff04 .dw $ff04
-0070d6 7264
-0070d7 706f .db "drop"
-0070d8 70cb .dw VE_HEAD
- .set VE_HEAD = VE_DROP
- XT_DROP:
-0070d9 70da .dw PFA_DROP
- PFA_DROP:
-0070da 9189
-0070db 9199 loadtos
-0070dc cf28 jmp_ DO_NEXT
- .include "words/rot.asm"
-
- ; Stack
- ; rotate the three top level cells
- VE_ROT:
-0070dd ff03 .dw $ff03
-0070de 6f72
-0070df 0074 .db "rot",0
-0070e0 70d5 .dw VE_HEAD
- .set VE_HEAD = VE_ROT
- XT_ROT:
-0070e1 70e2 .dw PFA_ROT
- PFA_ROT:
-0070e2 018c movw temp0, tosl
-0070e3 9129 ld temp2, Y+
-0070e4 9139 ld temp3, Y+
-0070e5 9189
-0070e6 9199 loadtos
-
-0070e7 933a st -Y, temp3
-0070e8 932a st -Y, temp2
-0070e9 931a st -Y, temp1
-0070ea 930a st -Y, temp0
-
-0070eb cf19 jmp_ DO_NEXT
- .include "words/nip.asm"
-
- ; Stack
- ; Remove Second of Stack
- VE_NIP:
-0070ec ff03 .dw $ff03
-0070ed 696e
-0070ee 0070 .db "nip",0
-0070ef 70dd .dw VE_HEAD
- .set VE_HEAD = VE_NIP
- XT_NIP:
-0070f0 70f1 .dw PFA_NIP
- PFA_NIP:
-0070f1 9622 adiw yl, 2
-0070f2 cf12 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/r_from.asm"
-
- ; Stack
- ; move TOR to TOS
- VE_R_FROM:
-0070f3 ff02 .dw $ff02
-0070f4 3e72 .db "r>"
-0070f5 70ec .dw VE_HEAD
- .set VE_HEAD = VE_R_FROM
- XT_R_FROM:
-0070f6 70f7 .dw PFA_R_FROM
- PFA_R_FROM:
-0070f7 939a
-0070f8 938a savetos
-0070f9 918f pop tosl
-0070fa 919f pop tosh
-0070fb cf09 jmp_ DO_NEXT
- .include "words/to_r.asm"
-
- ; Stack
- ; move TOS to TOR
- VE_TO_R:
-0070fc ff02 .dw $ff02
-0070fd 723e .db ">r"
-0070fe 70f3 .dw VE_HEAD
- .set VE_HEAD = VE_TO_R
- XT_TO_R:
-0070ff 7100 .dw PFA_TO_R
- PFA_TO_R:
-007100 939f push tosh
-007101 938f push tosl
-007102 9189
-007103 9199 loadtos
-007104 cf00 jmp_ DO_NEXT
- .include "words/r_fetch.asm"
-
- ; Stack
- ; fetch content of TOR
- VE_R_FETCH:
-007105 ff02 .dw $ff02
-007106 4072 .db "r@"
-007107 70fc .dw VE_HEAD
- .set VE_HEAD = VE_R_FETCH
- XT_R_FETCH:
-007108 7109 .dw PFA_R_FETCH
- PFA_R_FETCH:
-007109 939a
-00710a 938a savetos
-00710b 918f pop tosl
-00710c 919f pop tosh
-00710d 939f push tosh
-00710e 938f push tosl
-00710f cef5 jmp_ DO_NEXT
-
-
- .include "words/not-equal.asm"
-
- ; Compare
- ; true if n1 is not equal to n2
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOTEQUAL:
-007110 ff02 .dw $ff02
-007111 3e3c .db "<>"
-007112 7105 .dw VE_HEAD
- .set VE_HEAD = VE_NOTEQUAL
- XT_NOTEQUAL:
-007113 7001 .dw DO_COLON
- PFA_NOTEQUAL:
- .endif
-
-007114 7d7f
-007115 711a
-007116 7020 .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT
- .include "words/equalzero.asm"
-
- ; Compare
- ; compare with 0 (zero)
- VE_ZEROEQUAL:
-007117 ff02 .dw $ff02
-007118 3d30 .db "0="
-007119 7110 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROEQUAL
- XT_ZEROEQUAL:
-00711a 711b .dw PFA_ZEROEQUAL
- PFA_ZEROEQUAL:
-00711b 2b98 or tosh, tosl
-00711c f5d1 brne PFA_ZERO1
-00711d c030 rjmp PFA_TRUE1
- .include "words/lesszero.asm"
-
- ; Compare
- ; compare with zero
- VE_ZEROLESS:
-00711e ff02 .dw $ff02
-00711f 3c30 .db "0<"
-007120 7117 .dw VE_HEAD
- .set VE_HEAD = VE_ZEROLESS
- XT_ZEROLESS:
-007121 7122 .dw PFA_ZEROLESS
- PFA_ZEROLESS:
-007122 fd97 sbrc tosh,7
-007123 c02a rjmp PFA_TRUE1
-007124 c032 rjmp PFA_ZERO1
- .include "words/greaterzero.asm"
-
- ; Compare
- ; true if n1 is greater than 0
- VE_GREATERZERO:
-007125 ff02 .dw $ff02
-007126 3e30 .db "0>"
-007127 711e .dw VE_HEAD
- .set VE_HEAD = VE_GREATERZERO
- XT_GREATERZERO:
-007128 7129 .dw PFA_GREATERZERO
- PFA_GREATERZERO:
-007129 1582 cp tosl, zerol
-00712a 0593 cpc tosh, zeroh
-00712b f15c brlt PFA_ZERO1
-00712c f151 brbs 1, PFA_ZERO1
-00712d c020 rjmp PFA_TRUE1
- .include "words/d-greaterzero.asm"
-
- ; Compare
- ; compares if a double double cell number is greater 0
- VE_DGREATERZERO:
-00712e ff03 .dw $ff03
-00712f 3064
-007130 003e .db "d0>",0
-007131 7125 .dw VE_HEAD
- .set VE_HEAD = VE_DGREATERZERO
- XT_DGREATERZERO:
-007132 7133 .dw PFA_DGREATERZERO
- PFA_DGREATERZERO:
-007133 1582 cp tosl, zerol
-007134 0593 cpc tosh, zeroh
-007135 9189
-007136 9199 loadtos
-007137 0582 cpc tosl, zerol
-007138 0593 cpc tosh, zeroh
-007139 f0ec brlt PFA_ZERO1
-00713a f0e1 brbs 1, PFA_ZERO1
-00713b c012 rjmp PFA_TRUE1
- .include "words/d-lesszero.asm"
-
- ; Compare
- ; compares if a double double cell number is less than 0
- VE_DXT_ZEROLESS:
-00713c ff03 .dw $ff03
-00713d 3064
-00713e 003c .db "d0<",0
-00713f 712e .dw VE_HEAD
- .set VE_HEAD = VE_DXT_ZEROLESS
- XT_DXT_ZEROLESS:
-007140 7141 .dw PFA_DXT_ZEROLESS
- PFA_DXT_ZEROLESS:
-007141 9622 adiw Y,2
-007142 fd97 sbrc tosh,7
-007143 940c 714e jmp PFA_TRUE1
-007145 940c 7157 jmp PFA_ZERO1
-
- .include "words/true.asm"
-
- ; Arithmetics
- ; leaves the value -1 (true) on TOS
- VE_TRUE:
-007147 ff04 .dw $ff04
-007148 7274
-007149 6575 .db "true"
-00714a 713c .dw VE_HEAD
- .set VE_HEAD = VE_TRUE
- XT_TRUE:
-00714b 714c .dw PFA_TRUE
- PFA_TRUE:
-00714c 939a
-00714d 938a savetos
- PFA_TRUE1:
-00714e ef8f ser tosl
-00714f ef9f ser tosh
-007150 ceb4 jmp_ DO_NEXT
- .include "words/zero.asm"
-
- ; Arithmetics
- ; place a value 0 on TOS
- VE_ZERO:
-007151 ff01 .dw $ff01
-007152 0030 .db "0",0
-007153 7147 .dw VE_HEAD
- .set VE_HEAD = VE_ZERO
- XT_ZERO:
-007154 7155 .dw PFA_ZERO
- PFA_ZERO:
-007155 939a
-007156 938a savetos
- PFA_ZERO1:
-007157 01c1 movw tosl, zerol
-007158 ceac jmp_ DO_NEXT
- .include "words/uless.asm"
-
- ; Compare
- ; true if u1 < u2 (unsigned)
- VE_ULESS:
-007159 ff02 .dw $ff02
-00715a 3c75 .db "u<"
-00715b 7151 .dw VE_HEAD
- .set VE_HEAD = VE_ULESS
- XT_ULESS:
-00715c 715d .dw PFA_ULESS
- PFA_ULESS:
-00715d 9129 ld temp2, Y+
-00715e 9139 ld temp3, Y+
-00715f 1782 cp tosl, temp2
-007160 0793 cpc tosh, temp3
-007161 f3a8 brlo PFA_ZERO1
-007162 f3a1 brbs 1, PFA_ZERO1
-007163 cfea jmp_ PFA_TRUE1
- .include "words/u-greater.asm"
-
- ; Compare
- ; true if u1 > u2 (unsigned)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UGREATER:
-007164 ff02 .dw $ff02
-007165 3e75 .db "u>"
-007166 7159 .dw VE_HEAD
- .set VE_HEAD = VE_UGREATER
- XT_UGREATER:
-007167 7001 .dw DO_COLON
- PFA_UGREATER:
- .endif
-007168 70c4 .DW XT_SWAP
-007169 715c .dw XT_ULESS
-00716a 7020 .dw XT_EXIT
- .include "words/less.asm"
-
- ; Compare
- ; true if n1 is less than n2
- VE_LESS:
-00716b ff01 .dw $ff01
-00716c 003c .db "<",0
-00716d 7164 .dw VE_HEAD
- .set VE_HEAD = VE_LESS
- XT_LESS:
-00716e 716f .dw PFA_LESS
- PFA_LESS:
-00716f 9129 ld temp2, Y+
-007170 9139 ld temp3, Y+
-007171 1728 cp temp2, tosl
-007172 0739 cpc temp3, tosh
- PFA_LESSDONE:
-007173 f71c brge PFA_ZERO1
-007174 cfd9 rjmp PFA_TRUE1
- .include "words/greater.asm"
-
- ; Compare
- ; flag is true if n1 is greater than n2
- VE_GREATER:
-007175 ff01 .dw $ff01
-007176 003e .db ">",0
-007177 716b .dw VE_HEAD
- .set VE_HEAD = VE_GREATER
- XT_GREATER:
-007178 7179 .dw PFA_GREATER
- PFA_GREATER:
-007179 9129 ld temp2, Y+
-00717a 9139 ld temp3, Y+
-00717b 1728 cp temp2, tosl
-00717c 0739 cpc temp3, tosh
- PFA_GREATERDONE:
-00717d f2cc brlt PFA_ZERO1
-00717e f2c1 brbs 1, PFA_ZERO1
-00717f cfce rjmp PFA_TRUE1
-
- .include "words/log2.asm"
-
- ; Arithmetics
- ; logarithm to base 2 or highest set bitnumber
- VE_LOG2:
-007180 ff04 .dw $ff04
-007181 6f6c
-007182 3267 .db "log2"
-007183 7175 .dw VE_HEAD
- .set VE_HEAD = VE_LOG2
- XT_LOG2:
-007184 7185 .dw PFA_LOG2
- PFA_LOG2:
-007185 01fc movw zl, tosl
-007186 2799 clr tosh
-007187 e180 ldi tosl, 16
- PFA_LOG2_1:
-007188 958a dec tosl
-007189 f022 brmi PFA_LOG2_2 ; wrong data
-00718a 0fee lsl zl
-00718b 1fff rol zh
-00718c f7d8 brcc PFA_LOG2_1
-00718d ce77 jmp_ DO_NEXT
-
- PFA_LOG2_2:
-00718e 959a dec tosh
-00718f ce75 jmp_ DO_NEXT
- .include "words/minus.asm"
-
- ; Arithmetics
- ; subtract n2 from n1
- VE_MINUS:
-007190 ff01 .dw $ff01
-007191 002d .db "-",0
-007192 7180 .dw VE_HEAD
- .set VE_HEAD = VE_MINUS
- XT_MINUS:
-007193 7194 .dw PFA_MINUS
- PFA_MINUS:
-007194 9109 ld temp0, Y+
-007195 9119 ld temp1, Y+
-007196 1b08 sub temp0, tosl
-007197 0b19 sbc temp1, tosh
-007198 01c8 movw tosl, temp0
-007199 ce6b jmp_ DO_NEXT
- .include "words/plus.asm"
-
- ; Arithmetics
- ; add n1 and n2
- VE_PLUS:
-00719a ff01 .dw $ff01
-00719b 002b .db "+",0
-00719c 7190 .dw VE_HEAD
- .set VE_HEAD = VE_PLUS
- XT_PLUS:
-00719d 719e .dw PFA_PLUS
- PFA_PLUS:
-00719e 9109 ld temp0, Y+
-00719f 9119 ld temp1, Y+
-0071a0 0f80 add tosl, temp0
-0071a1 1f91 adc tosh, temp1
-0071a2 ce62 jmp_ DO_NEXT
- .include "words/mstar.asm"
-
- ; Arithmetics
- ; multiply 2 cells to a double cell
- VE_MSTAR:
-0071a3 ff02 .dw $ff02
-0071a4 2a6d .db "m*"
-0071a5 719a .dw VE_HEAD
- .set VE_HEAD = VE_MSTAR
- XT_MSTAR:
-0071a6 71a7 .dw PFA_MSTAR
- PFA_MSTAR:
-0071a7 018c movw temp0, tosl
-0071a8 9189
-0071a9 9199 loadtos
-0071aa 019c movw temp2, tosl
- ; high cell ah*bh
-0071ab 0231 muls temp3, temp1
-0071ac 0170 movw temp4, r0
- ; low cell al*bl
-0071ad 9f20 mul temp2, temp0
-0071ae 01c0 movw tosl, r0
- ; signed ah*bl
-0071af 0330 mulsu temp3, temp0
-0071b0 08f3 sbc temp5, zeroh
-0071b1 0d90 add tosh, r0
-0071b2 1ce1 adc temp4, r1
-0071b3 1cf3 adc temp5, zeroh
-
- ; signed al*bh
-0071b4 0312 mulsu temp1, temp2
-0071b5 08f3 sbc temp5, zeroh
-0071b6 0d90 add tosh, r0
-0071b7 1ce1 adc temp4, r1
-0071b8 1cf3 adc temp5, zeroh
-
-0071b9 939a
-0071ba 938a savetos
-0071bb 01c7 movw tosl, temp4
-0071bc ce48 jmp_ DO_NEXT
- .include "words/umslashmod.asm"
-
- ; Arithmetics
- ; unsigned division ud / u2 with remainder
- VE_UMSLASHMOD:
-0071bd ff06 .dw $ff06
-0071be 6d75
-0071bf 6d2f
-0071c0 646f .db "um/mod"
-0071c1 71a3 .dw VE_HEAD
- .set VE_HEAD = VE_UMSLASHMOD
- XT_UMSLASHMOD:
-0071c2 71c3 .dw PFA_UMSLASHMOD
- PFA_UMSLASHMOD:
-0071c3 017c movw temp4, tosl
-
-0071c4 9129 ld temp2, Y+
-0071c5 9139 ld temp3, Y+
-
-0071c6 9109 ld temp0, Y+
-0071c7 9119 ld temp1, Y+
-
- ;; unsigned 32/16 -> 16r16 divide
-
- PFA_UMSLASHMODmod:
-
- ; set loop counter
-0071c8 e140 ldi temp6,$10
-
- PFA_UMSLASHMODmod_loop:
- ; shift left, saving high bit
-0071c9 2755 clr temp7
-0071ca 0f00 lsl temp0
-0071cb 1f11 rol temp1
-0071cc 1f22 rol temp2
-0071cd 1f33 rol temp3
-0071ce 1f55 rol temp7
-
- ; try subtracting divisor
-0071cf 152e cp temp2, temp4
-0071d0 053f cpc temp3, temp5
-0071d1 0552 cpc temp7,zerol
-
-0071d2 f018 brcs PFA_UMSLASHMODmod_loop_control
-
- PFA_UMSLASHMODmod_subtract:
- ; dividend is large enough
- ; do the subtraction for real
- ; and set lowest bit
-0071d3 9503 inc temp0
-0071d4 192e sub temp2, temp4
-0071d5 093f sbc temp3, temp5
-
- PFA_UMSLASHMODmod_loop_control:
-0071d6 954a dec temp6
-0071d7 f789 brne PFA_UMSLASHMODmod_loop
-
- PFA_UMSLASHMODmod_done:
- ; put remainder on stack
-0071d8 933a st -Y,temp3
-0071d9 932a st -Y,temp2
-
- ; put quotient on stack
-0071da 01c8 movw tosl, temp0
-0071db ce29 jmp_ DO_NEXT
- .include "words/umstar.asm"
-
- ; Arithmetics
- ; multiply 2 unsigned cells to a double cell
- VE_UMSTAR:
-0071dc ff03 .dw $ff03
-0071dd 6d75
-0071de 002a .db "um*",0
-0071df 71bd .dw VE_HEAD
- .set VE_HEAD = VE_UMSTAR
- XT_UMSTAR:
-0071e0 71e1 .dw PFA_UMSTAR
- PFA_UMSTAR:
-0071e1 018c movw temp0, tosl
-0071e2 9189
-0071e3 9199 loadtos
- ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
- ; low bytes
-0071e4 9f80 mul tosl,temp0
-0071e5 01f0 movw zl, r0
-0071e6 2722 clr temp2
-0071e7 2733 clr temp3
- ; middle bytes
-0071e8 9f90 mul tosh, temp0
-0071e9 0df0 add zh, r0
-0071ea 1d21 adc temp2, r1
-0071eb 1d33 adc temp3, zeroh
-
-0071ec 9f81 mul tosl, temp1
-0071ed 0df0 add zh, r0
-0071ee 1d21 adc temp2, r1
-0071ef 1d33 adc temp3, zeroh
-
-0071f0 9f91 mul tosh, temp1
-0071f1 0d20 add temp2, r0
-0071f2 1d31 adc temp3, r1
-0071f3 01cf movw tosl, zl
-0071f4 939a
-0071f5 938a savetos
-0071f6 01c9 movw tosl, temp2
-0071f7 ce0d jmp_ DO_NEXT
-
- .include "words/invert.asm"
-
- ; Arithmetics
- ; 1-complement of TOS
- VE_INVERT:
-0071f8 ff06 .dw $ff06
-0071f9 6e69
-0071fa 6576
-0071fb 7472 .db "invert"
-0071fc 71dc .dw VE_HEAD
- .set VE_HEAD = VE_INVERT
- XT_INVERT:
-0071fd 71fe .dw PFA_INVERT
- PFA_INVERT:
-0071fe 9580 com tosl
-0071ff 9590 com tosh
-007200 ce04 jmp_ DO_NEXT
- .include "words/2slash.asm"
-
- ; Arithmetics
- ; arithmetic shift right
- VE_2SLASH:
-007201 ff02 .dw $ff02
-007202 2f32 .db "2/"
-007203 71f8 .dw VE_HEAD
- .set VE_HEAD = VE_2SLASH
- XT_2SLASH:
-007204 7205 .dw PFA_2SLASH
- PFA_2SLASH:
-007205 9595 asr tosh
-007206 9587 ror tosl
-007207 cdfd jmp_ DO_NEXT
- .include "words/2star.asm"
-
- ; Arithmetics
- ; arithmetic shift left, filling with zero
- VE_2STAR:
-007208 ff02 .dw $ff02
-007209 2a32 .db "2*"
-00720a 7201 .dw VE_HEAD
- .set VE_HEAD = VE_2STAR
- XT_2STAR:
-00720b 720c .dw PFA_2STAR
- PFA_2STAR:
-00720c 0f88 lsl tosl
-00720d 1f99 rol tosh
-00720e cdf6 jmp_ DO_NEXT
- .include "words/and.asm"
-
- ; Logic
- ; bitwise and
- VE_AND:
-00720f ff03 .dw $ff03
-007210 6e61
-007211 0064 .db "and",0
-007212 7208 .dw VE_HEAD
- .set VE_HEAD = VE_AND
- XT_AND:
-007213 7214 .dw PFA_AND
- PFA_AND:
-007214 9109 ld temp0, Y+
-007215 9119 ld temp1, Y+
-007216 2380 and tosl, temp0
-007217 2391 and tosh, temp1
-007218 cdec jmp_ DO_NEXT
- .include "words/or.asm"
-
- ; Logic
- ; logical or
- VE_OR:
-007219 ff02 .dw $ff02
-00721a 726f .db "or"
-00721b 720f .dw VE_HEAD
- .set VE_HEAD = VE_OR
- XT_OR:
-00721c 721d .dw PFA_OR
- PFA_OR:
-00721d 9109 ld temp0, Y+
-00721e 9119 ld temp1, Y+
-00721f 2b80 or tosl, temp0
-007220 2b91 or tosh, temp1
-007221 cde3 jmp_ DO_NEXT
-
- .include "words/xor.asm"
-
- ; Logic
- ; exclusive or
- VE_XOR:
-007222 ff03 .dw $ff03
-007223 6f78
-007224 0072 .db "xor",0
-007225 7219 .dw VE_HEAD
- .set VE_HEAD = VE_XOR
- XT_XOR:
-007226 7227 .dw PFA_XOR
- PFA_XOR:
-007227 9109 ld temp0, Y+
-007228 9119 ld temp1, Y+
-007229 2780 eor tosl, temp0
-00722a 2791 eor tosh, temp1
-00722b cdd9 jmp_ DO_NEXT
-
- .include "words/1plus.asm"
-
- ; Arithmetics
- ; optimized increment
- VE_1PLUS:
-00722c ff02 .dw $ff02
-00722d 2b31 .db "1+"
-00722e 7222 .dw VE_HEAD
- .set VE_HEAD = VE_1PLUS
- XT_1PLUS:
-00722f 7230 .dw PFA_1PLUS
- PFA_1PLUS:
-007230 9601 adiw tosl,1
-007231 cdd3 jmp_ DO_NEXT
- .include "words/1minus.asm"
-
- ; Arithmetics
- ; optimized decrement
- VE_1MINUS:
-007232 ff02 .dw $ff02
-007233 2d31 .db "1-"
-007234 722c .dw VE_HEAD
- .set VE_HEAD = VE_1MINUS
- XT_1MINUS:
-007235 7236 .dw PFA_1MINUS
- PFA_1MINUS:
-007236 9701 sbiw tosl, 1
-007237 cdcd jmp_ DO_NEXT
- .include "words/q-negate.asm"
-
- ; 0< IF NEGATE THEN ; ...a common factor
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QNEGATE:
-007238 ff07 .dw $ff07
-007239 6e3f
-00723a 6765
-00723b 7461
-../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte
-00723c 0065 .db "?negate"
-00723d 7232 .dw VE_HEAD
- .set VE_HEAD = VE_QNEGATE
- XT_QNEGATE:
-00723e 7001 .dw DO_COLON
- PFA_QNEGATE:
-
- .endif
-00723f 7121
-007240 7036 .DW XT_ZEROLESS,XT_DOCONDBRANCH
-007241 7243 DEST(QNEG1)
-007242 763f .DW XT_NEGATE
-007243 7020 QNEG1: .DW XT_EXIT
- .include "words/lshift.asm"
-
- ; Arithmetics
- ; logically shift n1 left n2 times
- VE_LSHIFT:
-007244 ff06 .dw $ff06
-007245 736c
-007246 6968
-007247 7466 .db "lshift"
-007248 7238 .dw VE_HEAD
- .set VE_HEAD = VE_LSHIFT
- XT_LSHIFT:
-007249 724a .dw PFA_LSHIFT
- PFA_LSHIFT:
-00724a 01fc movw zl, tosl
-00724b 9189
-00724c 9199 loadtos
- PFA_LSHIFT1:
-00724d 9731 sbiw zl, 1
-00724e f01a brmi PFA_LSHIFT2
-00724f 0f88 lsl tosl
-007250 1f99 rol tosh
-007251 cffb rjmp PFA_LSHIFT1
- PFA_LSHIFT2:
-007252 cdb2 jmp_ DO_NEXT
-
- .include "words/rshift.asm"
-
- ; Arithmetics
- ; shift n1 n2-times logically right
- VE_RSHIFT:
-007253 ff06 .dw $ff06
-007254 7372
-007255 6968
-007256 7466 .db "rshift"
-007257 7244 .dw VE_HEAD
- .set VE_HEAD = VE_RSHIFT
- XT_RSHIFT:
-007258 7259 .dw PFA_RSHIFT
- PFA_RSHIFT:
-007259 01fc movw zl, tosl
-00725a 9189
-00725b 9199 loadtos
- PFA_RSHIFT1:
-00725c 9731 sbiw zl, 1
-00725d f01a brmi PFA_RSHIFT2
-00725e 9596 lsr tosh
-00725f 9587 ror tosl
-007260 cffb rjmp PFA_RSHIFT1
- PFA_RSHIFT2:
-007261 cda3 jmp_ DO_NEXT
-
- .include "words/plusstore.asm"
-
- ; Arithmetics
- ; add n to content of RAM address a-addr
- VE_PLUSSTORE:
-007262 ff02 .dw $ff02
-007263 212b .db "+!"
-007264 7253 .dw VE_HEAD
- .set VE_HEAD = VE_PLUSSTORE
- XT_PLUSSTORE:
-007265 7266 .dw PFA_PLUSSTORE
- PFA_PLUSSTORE:
-007266 01fc movw zl, tosl
-007267 9189
-007268 9199 loadtos
-007269 8120 ldd temp2, Z+0
-00726a 8131 ldd temp3, Z+1
-00726b 0f82 add tosl, temp2
-00726c 1f93 adc tosh, temp3
-00726d 8380 std Z+0, tosl
-00726e 8391 std Z+1, tosh
-00726f 9189
-007270 9199 loadtos
-007271 cd93 jmp_ DO_NEXT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/rpfetch.asm"
-
- ; Stack
- ; current return stack pointer address
- VE_RP_FETCH:
-007272 ff03 .dw $ff03
-007273 7072
-007274 0040 .db "rp@",0
-007275 7262 .dw VE_HEAD
- .set VE_HEAD = VE_RP_FETCH
- XT_RP_FETCH:
-007276 7277 .dw PFA_RP_FETCH
- PFA_RP_FETCH:
-007277 939a
-007278 938a savetos
-007279 b78d in tosl, SPL
-00727a b79e in tosh, SPH
-00727b cd89 jmp_ DO_NEXT
- .include "words/rpstore.asm"
-
- ; Stack
- ; set return stack pointer
- VE_RP_STORE:
-00727c ff03 .dw $ff03
-00727d 7072
-00727e 0021 .db "rp!",0
-00727f 7272 .dw VE_HEAD
- .set VE_HEAD = VE_RP_STORE
- XT_RP_STORE:
-007280 7281 .dw PFA_RP_STORE
- PFA_RP_STORE:
-007281 b72f in temp2, SREG
-007282 94f8 cli
-007283 bf8d out SPL, tosl
-007284 bf9e out SPH, tosh
-007285 bf2f out SREG, temp2
-007286 9189
-007287 9199 loadtos
-007288 cd7c jmp_ DO_NEXT
- .include "words/spfetch.asm"
-
- ; Stack
- ; current data stack pointer
- VE_SP_FETCH:
-007289 ff03 .dw $ff03
-00728a 7073
-00728b 0040 .db "sp@",0
-00728c 727c .dw VE_HEAD
- .set VE_HEAD = VE_SP_FETCH
- XT_SP_FETCH:
-00728d 728e .dw PFA_SP_FETCH
- PFA_SP_FETCH:
-00728e 939a
-00728f 938a savetos
-007290 01ce movw tosl, yl
-007291 cd73 jmp_ DO_NEXT
- .include "words/spstore.asm"
-
- ; Stack
- ; set data stack pointer to addr
- VE_SP_STORE:
-007292 ff03 .dw $ff03
-007293 7073
-007294 0021 .db "sp!",0
-007295 7289 .dw VE_HEAD
- .set VE_HEAD = VE_SP_STORE
- XT_SP_STORE:
-007296 7297 .dw PFA_SP_STORE
- PFA_SP_STORE:
-007297 01ec movw yl, tosl
-007298 9189
-007299 9199 loadtos
-00729a cd6a jmp_ DO_NEXT
-
- .include "words/dodo.asm"
-
- ; System
- ; runtime of do
- ;VE_DODO:
- ; .dw $ff04
- ; .db "(do)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DODO
- XT_DODO:
-00729b 729c .dw PFA_DODO
- PFA_DODO:
-00729c 9129 ld temp2, Y+
-00729d 9139 ld temp3, Y+ ; limit
- PFA_DODO1:
-00729e e8e0 ldi zl, $80
-00729f 0f3e add temp3, zl
-0072a0 1b82 sub tosl, temp2
-0072a1 0b93 sbc tosh, temp3
-
-0072a2 933f push temp3
-0072a3 932f push temp2 ; limit ( --> limit + $8000)
-0072a4 939f push tosh
-0072a5 938f push tosl ; start -> index ( --> index - (limit - $8000)
-0072a6 9189
-0072a7 9199 loadtos
-0072a8 cd5c jmp_ DO_NEXT
- .include "words/i.asm"
-
- ; Compiler
- ; current loop counter
- VE_I:
-0072a9 ff01 .dw $FF01
-0072aa 0069 .db "i",0
-0072ab 7292 .dw VE_HEAD
- .set VE_HEAD = VE_I
- XT_I:
-0072ac 72ad .dw PFA_I
- PFA_I:
-0072ad 939a
-0072ae 938a savetos
-0072af 918f pop tosl
-0072b0 919f pop tosh ; index
-0072b1 91ef pop zl
-0072b2 91ff pop zh ; limit
-0072b3 93ff push zh
-0072b4 93ef push zl
-0072b5 939f push tosh
-0072b6 938f push tosl
-0072b7 0f8e add tosl, zl
-0072b8 1f9f adc tosh, zh
-0072b9 cd4b jmp_ DO_NEXT
- .include "words/doplusloop.asm"
-
- ; System
- ; runtime of +loop
- ;VE_DOPLUSLOOP:
- ; .dw $ff07
- ; .db "(+loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOPLUSLOOP
- XT_DOPLUSLOOP:
-0072ba 72bb .dw PFA_DOPLUSLOOP
- PFA_DOPLUSLOOP:
-0072bb 91ef pop zl
-0072bc 91ff pop zh
-0072bd 0fe8 add zl, tosl
-0072be 1ff9 adc zh, tosh
-0072bf 9189
-0072c0 9199 loadtos
-0072c1 f01b brvs PFA_DOPLUSLOOP_LEAVE
- ; next cycle
- PFA_DOPLUSLOOP_NEXT:
- ; next iteration
-0072c2 93ff push zh
-0072c3 93ef push zl
-0072c4 cd6b rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
- PFA_DOPLUSLOOP_LEAVE:
-0072c5 910f pop temp0
-0072c6 911f pop temp1 ; remove limit
-0072c7 9611 adiw xl, 1 ; skip branch-back address
-0072c8 cd3c jmp_ DO_NEXT
- .include "words/doloop.asm"
-
- ; System
- ; runtime of loop
- ;VE_DOLOOP:
- ; .dw $ff06
- ; .db "(loop)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOLOOP
- XT_DOLOOP:
-0072c9 72ca .dw PFA_DOLOOP
- PFA_DOLOOP:
-0072ca 91ef pop zl
-0072cb 91ff pop zh
-0072cc 9631 adiw zl,1
-0072cd f3bb brvs PFA_DOPLUSLOOP_LEAVE
-0072ce cff3 jmp_ PFA_DOPLUSLOOP_NEXT
- .include "words/unloop.asm"
-
- ; Compiler
- ; remove loop-sys, exit the loop and continue execution after it
- VE_UNLOOP:
-0072cf ff06 .dw $ff06
-0072d0 6e75
-0072d1 6f6c
-0072d2 706f .db "unloop"
-0072d3 72a9 .dw VE_HEAD
- .set VE_HEAD = VE_UNLOOP
- XT_UNLOOP:
-0072d4 72d5 .dw PFA_UNLOOP
- PFA_UNLOOP:
-0072d5 911f pop temp1
-0072d6 910f pop temp0
-0072d7 911f pop temp1
-0072d8 910f pop temp0
-0072d9 cd2b jmp_ DO_NEXT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- .include "words/cmove_g.asm"
-
- ; Memory
- ; copy data in RAM from higher to lower addresses.
- VE_CMOVE_G:
-0072da ff06 .dw $ff06
-0072db 6d63
-0072dc 766f
-0072dd 3e65 .db "cmove>"
-0072de 72cf .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE_G
- XT_CMOVE_G:
-0072df 72e0 .dw PFA_CMOVE_G
- PFA_CMOVE_G:
-0072e0 93bf push xh
-0072e1 93af push xl
-0072e2 91e9 ld zl, Y+
-0072e3 91f9 ld zh, Y+ ; addr-to
-0072e4 91a9 ld xl, Y+
-0072e5 91b9 ld xh, Y+ ; addr-from
-0072e6 2f09 mov temp0, tosh
-0072e7 2b08 or temp0, tosl
-0072e8 f041 brbs 1, PFA_CMOVE_G1
-0072e9 0fe8 add zl, tosl
-0072ea 1ff9 adc zh, tosh
-0072eb 0fa8 add xl, tosl
-0072ec 1fb9 adc xh, tosh
- PFA_CMOVE_G2:
-0072ed 911e ld temp1, -X
-0072ee 9312 st -Z, temp1
-0072ef 9701 sbiw tosl, 1
-0072f0 f7e1 brbc 1, PFA_CMOVE_G2
- PFA_CMOVE_G1:
-0072f1 91af pop xl
-0072f2 91bf pop xh
-0072f3 9189
-0072f4 9199 loadtos
-0072f5 cd0f jmp_ DO_NEXT
- .include "words/byteswap.asm"
-
- ; Arithmetics
- ; exchange the bytes of the TOS
- VE_BYTESWAP:
-0072f6 ff02 .dw $ff02
-0072f7 3c3e .db "><"
-0072f8 72da .dw VE_HEAD
- .set VE_HEAD = VE_BYTESWAP
- XT_BYTESWAP:
-0072f9 72fa .dw PFA_BYTESWAP
- PFA_BYTESWAP:
-0072fa 2f09 mov temp0, tosh
-0072fb 2f98 mov tosh, tosl
-0072fc 2f80 mov tosl, temp0
-0072fd cd07 jmp_ DO_NEXT
- .include "words/up.asm"
-
- ; System Variable
- ; get user area pointer
- VE_UP_FETCH:
-0072fe ff03 .dw $ff03
-0072ff 7075
-007300 0040 .db "up@",0
-007301 72f6 .dw VE_HEAD
- .set VE_HEAD = VE_UP_FETCH
- XT_UP_FETCH:
-007302 7303 .dw PFA_UP_FETCH
- PFA_UP_FETCH:
-007303 939a
-007304 938a savetos
-007305 01c2 movw tosl, upl
-007306 ccfe jmp_ DO_NEXT
-
- ; ( addr -- )
- ; System Variable
- ; set user area pointer
- VE_UP_STORE:
-007307 ff03 .dw $ff03
-007308 7075
-007309 0021 .db "up!",0
-00730a 72fe .dw VE_HEAD
- .set VE_HEAD = VE_UP_STORE
- XT_UP_STORE:
-00730b 730c .dw PFA_UP_STORE
- PFA_UP_STORE:
-00730c 012c movw upl, tosl
-00730d 9189
-00730e 9199 loadtos
-00730f ccf5 jmp_ DO_NEXT
- .include "words/1ms.asm"
-
- ; Time
- ; busy waits (almost) exactly 1 millisecond
- VE_1MS:
-007310 ff03 .dw $ff03
-007311 6d31
-007312 0073 .db "1ms",0
-007313 7307 .dw VE_HEAD
- .set VE_HEAD = VE_1MS
- XT_1MS:
-007314 7315 .dw PFA_1MS
- PFA_1MS:
-007315 eae0
-007316 e0ff
-007317 9731
-007318 f7f1 delay 1000
-007319 cceb jmp_ DO_NEXT
- .include "words/2to_r.asm"
-
- ; Stack
- ; move DTOS to TOR
- VE_2TO_R:
-00731a ff03 .dw $ff03
-00731b 3e32
-00731c 0072 .db "2>r",0
-00731d 7310 .dw VE_HEAD
- .set VE_HEAD = VE_2TO_R
- XT_2TO_R:
-00731e 731f .dw PFA_2TO_R
- PFA_2TO_R:
-00731f 01fc movw zl, tosl
-007320 9189
-007321 9199 loadtos
-007322 939f push tosh
-007323 938f push tosl
-007324 93ff push zh
-007325 93ef push zl
-007326 9189
-007327 9199 loadtos
-007328 ccdc jmp_ DO_NEXT
- .include "words/2r_from.asm"
-
- ; Stack
- ; move DTOR to TOS
- VE_2R_FROM:
-007329 ff03 .dw $ff03
-00732a 7232
-00732b 003e .db "2r>",0
-00732c 731a .dw VE_HEAD
- .set VE_HEAD = VE_2R_FROM
- XT_2R_FROM:
-00732d 732e .dw PFA_2R_FROM
- PFA_2R_FROM:
-00732e 939a
-00732f 938a savetos
-007330 91ef pop zl
-007331 91ff pop zh
-007332 918f pop tosl
-007333 919f pop tosh
-007334 939a
-007335 938a savetos
-007336 01cf movw tosl, zl
-007337 cccd jmp_ DO_NEXT
-
- .include "words/store-e.asm"
-
- ; Memory
- ; write n (2bytes) to eeprom address
- VE_STOREE:
-007338 ff02 .dw $ff02
-007339 6521 .db "!e"
-00733a 7329 .dw VE_HEAD
- .set VE_HEAD = VE_STOREE
- XT_STOREE:
-00733b 733c .dw PFA_STOREE
- PFA_STOREE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_STOREE0:
-00733c 01fc movw zl, tosl
-00733d 9189
-00733e 9199 loadtos
-00733f b72f in_ temp2, SREG
-007340 94f8 cli
-007341 d028 rcall PFA_FETCHE2
-007342 b500 in_ temp0, EEDR
-007343 1708 cp temp0,tosl
-007344 f009 breq PFA_STOREE3
-007345 d00b rcall PFA_STOREE1
- PFA_STOREE3:
-007346 9631 adiw zl,1
-007347 d022 rcall PFA_FETCHE2
-007348 b500 in_ temp0, EEDR
-007349 1709 cp temp0,tosh
-00734a f011 breq PFA_STOREE4
-00734b 2f89 mov tosl, tosh
-00734c d004 rcall PFA_STOREE1
- PFA_STOREE4:
-00734d bf2f out_ SREG, temp2
-00734e 9189
-00734f 9199 loadtos
-007350 ccb4 jmp_ DO_NEXT
-
- PFA_STOREE1:
-007351 99f9 sbic EECR, EEPE
-007352 cffe rjmp PFA_STOREE1
-
- PFA_STOREE2: ; estore_wait_low_spm:
-007353 b707 in_ temp0, SPMCSR
-007354 fd00 sbrc temp0,SPMEN
-007355 cffd rjmp PFA_STOREE2
-
-007356 bdf2 out_ EEARH,zh
-007357 bde1 out_ EEARL,zl
-007358 bd80 out_ EEDR, tosl
-007359 9afa sbi EECR,EEMPE
-00735a 9af9 sbi EECR,EEPE
-
-00735b 9508 ret
- .if WANT_UNIFIED == 1
- .endif
- .include "words/fetch-e.asm"
-
- ; Memory
- ; read 1 cell from eeprom
- VE_FETCHE:
-00735c ff02 .dw $ff02
-00735d 6540 .db "@e"
-00735e 7338 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHE
- XT_FETCHE:
-00735f 7360 .dw PFA_FETCHE
- PFA_FETCHE:
- .if WANT_UNIFIED == 1
- .endif
- PFA_FETCHE1:
-007360 b72f in_ temp2, SREG
-007361 94f8 cli
-007362 01fc movw zl, tosl
-007363 d006 rcall PFA_FETCHE2
-007364 b580 in_ tosl, EEDR
-
-007365 9631 adiw zl,1
-
-007366 d003 rcall PFA_FETCHE2
-007367 b590 in_ tosh, EEDR
-007368 bf2f out_ SREG, temp2
-007369 cc9b jmp_ DO_NEXT
-
- PFA_FETCHE2:
-00736a 99f9 sbic EECR, EEPE
-00736b cffe rjmp PFA_FETCHE2
-
-00736c bdf2 out_ EEARH,zh
-00736d bde1 out_ EEARL,zl
-
-00736e 9af8 sbi EECR,EERE
-00736f 9508 ret
-
- .if WANT_UNIFIED == 1
- .endif
- .include "words/store-i.asm"
-
- ; System Value
- ; Deferred action to write a single 16bit cell to flash
- VE_STOREI:
-007370 ff02 .dw $ff02
-007371 6921 .db "!i"
-007372 735c .dw VE_HEAD
- .set VE_HEAD = VE_STOREI
- XT_STOREI:
-007373 7c13 .dw PFA_DODEFER1
- PFA_STOREI:
-007374 006a .dw EE_STOREI
-007375 7bb4 .dw XT_EDEFERFETCH
-007376 7bbe .dw XT_EDEFERSTORE
- .if FLASHEND > $10000
- .else
- .include "words/store-i_nrww.asm"
-
- ; Memory
- ; writes n to flash memory using assembly code (code to be placed in boot loader section)
- VE_DO_STOREI_NRWW:
-007377 ff09 .dw $ff09
-007378 2128
-007379 2d69
-00737a 726e
-00737b 7777
-00737c 0029 .db "(!i-nrww)",0
-00737d 7370 .dw VE_HEAD
- .set VE_HEAD = VE_DO_STOREI_NRWW
- XT_DO_STOREI:
-00737e 737f .dw PFA_DO_STOREI_NRWW
- PFA_DO_STOREI_NRWW:
- ; store status register
-00737f b71f in temp1,SREG
-007380 931f push temp1
-007381 94f8 cli
-
-007382 019c movw temp2, tosl ; save the (word) address
-007383 9189
-007384 9199 loadtos ; get the new value for the flash cell
-007385 93af push xl
-007386 93bf push xh
-007387 93cf push yl
-007388 93df push yh
-007389 d009 rcall DO_STOREI_atmega
-00738a 91df pop yh
-00738b 91cf pop yl
-00738c 91bf pop xh
-00738d 91af pop xl
- ; finally clear the stack
-00738e 9189
-00738f 9199 loadtos
-007390 911f pop temp1
- ; restore status register (and interrupt enable flag)
-007391 bf1f out SREG,temp1
-
-007392 cc72 jmp_ DO_NEXT
-
- ;
- DO_STOREI_atmega:
- ; write data to temp page buffer
- ; use the values in tosl/tosh at the
- ; appropiate place
-007393 d010 rcall pageload
-
- ; erase page if needed
- ; it is needed if a bit goes from 0 to 1
-007394 94e0 com temp4
-007395 94f0 com temp5
-007396 218e and tosl, temp4
-007397 219f and tosh, temp5
-007398 2b98 or tosh, tosl
-007399 f019 breq DO_STOREI_writepage
-00739a 01f9 movw zl, temp2
-00739b e002 ldi temp0,(1<<PGERS)
-00739c d020 rcall dospm
-
- DO_STOREI_writepage:
- ; write page
-00739d 01f9 movw zl, temp2
-00739e e004 ldi temp0,(1<<PGWRT)
-00739f d01d rcall dospm
-
- ; reenable RWW section
-0073a0 01f9 movw zl, temp2
-0073a1 e100 ldi temp0,(1<<RWWSRE)
-0073a2 d01a rcall dospm
-0073a3 9508 ret
-
- ; load the desired page
- .equ pagemask = ~ ( PAGESIZE - 1 )
- pageload:
-0073a4 01f9 movw zl, temp2
- ; get the beginning of page
-0073a5 78e0 andi zl,low(pagemask)
-0073a6 7fff andi zh,high(pagemask)
-0073a7 01ef movw y, z
- ; loop counter (in words)
-0073a8 e8a0 ldi xl,low(pagesize)
-0073a9 e0b0 ldi xh,high(pagesize)
- pageload_loop:
- ; we need the current flash value anyways
-0073aa 01fe movw z, y
-0073ab 0fee
-0073ac 1fff
-0073ad 9145
-0073ae 9155 readflashcell temp6, temp7 ; destroys Z
- ; now check: if Z points to the same cell as temp2/3, we want the new data
-0073af 01fe movw z, y
-0073b0 17e2 cp zl, temp2
-0073b1 07f3 cpc zh, temp3
-0073b2 f011 breq pageload_newdata
-0073b3 010a movw r0, temp6
-0073b4 c002 rjmp pageload_cont
- pageload_newdata:
-0073b5 017a movw temp4, temp6
-0073b6 010c movw r0, tosl
- pageload_cont:
-0073b7 2700 clr temp0
-0073b8 d004 rcall dospm
-0073b9 9621 adiw y, 1
-0073ba 9711 sbiw x, 1
-0073bb f771 brne pageload_loop
-
- pageload_done:
-0073bc 9508 ret
-
-
- ;; dospm
- ;;
- ;; execute spm instruction
- ;; temp0 holds the value for SPMCR
-
- dospm:
- dospm_wait_ee:
-0073bd 99f9 sbic EECR, EEPE
-0073be cffe rjmp dospm_wait_ee
- dospm_wait_spm:
-0073bf b717 in_ temp1, SPMCSR
-0073c0 fd10 sbrc temp1, SPMEN
-0073c1 cffd rjmp dospm_wait_spm
-
- ; turn the word addres into a byte address
-0073c2 0fee
-0073c3 1fff writeflashcell
- ; execute spm
-0073c4 6001 ori temp0, (1<<SPMEN)
-0073c5 bf07 out_ SPMCSR,temp0
-0073c6 95e8 spm
-0073c7 9508 ret
- .endif
- .include "words/fetch-i.asm"
-
- ; Memory
- ; read 1 cell from flash
- VE_FETCHI:
-0073c8 ff02 .dw $ff02
-0073c9 6940 .db "@i"
-0073ca 7377 .dw VE_HEAD
- .set VE_HEAD = VE_FETCHI
- XT_FETCHI:
-0073cb 73cc .dw PFA_FETCHI
- PFA_FETCHI:
-0073cc 01fc movw zl, tosl
-0073cd 0fee
-0073ce 1fff
-0073cf 9185
-0073d0 9195 readflashcell tosl,tosh
-0073d1 cc33 jmp_ DO_NEXT
-
- .if AMFORTH_NRWW_SIZE>8000
- .include "dict/core_8k.inc"
-
- .include "words/n_to_r.asm"
-
- ; Stack
- ; move n items from data stack to return stack
- VE_N_TO_R:
-0073d2 ff03 .dw $ff03
-0073d3 3e6e
-0073d4 0072 .db "n>r",0
-0073d5 73c8 .dw VE_HEAD
- .set VE_HEAD = VE_N_TO_R
- XT_N_TO_R:
-0073d6 73d7 .dw PFA_N_TO_R
- PFA_N_TO_R:
-0073d7 01fc movw zl, tosl
-0073d8 2f08 mov temp0, tosl
- PFA_N_TO_R1:
-0073d9 9189
-0073da 9199 loadtos
-0073db 939f push tosh
-0073dc 938f push tosl
-0073dd 950a dec temp0
-0073de f7d1 brne PFA_N_TO_R1
-0073df 93ef push zl
-0073e0 93ff push zh
-0073e1 9189
-0073e2 9199 loadtos
-0073e3 cc21 jmp_ DO_NEXT
- .include "words/n_r_from.asm"
-
- ; Stack
- ; move n items from return stack to data stack
- VE_N_R_FROM:
-0073e4 ff03 .dw $ff03
-0073e5 726e
-0073e6 003e .db "nr>",0
-0073e7 73d2 .dw VE_HEAD
- .set VE_HEAD = VE_N_R_FROM
- XT_N_R_FROM:
-0073e8 73e9 .dw PFA_N_R_FROM
- PFA_N_R_FROM:
-0073e9 939a
-0073ea 938a savetos
-0073eb 91ff pop zh
-0073ec 91ef pop zl
-0073ed 2f0e mov temp0, zl
- PFA_N_R_FROM1:
-0073ee 918f pop tosl
-0073ef 919f pop tosh
-0073f0 939a
-0073f1 938a savetos
-0073f2 950a dec temp0
-0073f3 f7d1 brne PFA_N_R_FROM1
-0073f4 01cf movw tosl, zl
-0073f5 cc0f jmp_ DO_NEXT
-
- .include "words/d-2star.asm"
-
- ; Arithmetics
- ; shift a double cell left
- VE_D2STAR:
-0073f6 ff03 .dw $ff03
-0073f7 3264
-0073f8 002a .db "d2*",0
-0073f9 73e4 .dw VE_HEAD
- .set VE_HEAD = VE_D2STAR
- XT_D2STAR:
-0073fa 73fb .dw PFA_D2STAR
- PFA_D2STAR:
-0073fb 9109 ld temp0, Y+
-0073fc 9119 ld temp1, Y+
-0073fd 0f00 lsl temp0
-0073fe 1f11 rol temp1
-0073ff 1f88 rol tosl
-007400 1f99 rol tosh
-007401 931a st -Y, temp1
-007402 930a st -Y, temp0
-007403 cc01 jmp_ DO_NEXT
- .include "words/d-2slash.asm"
-
- ; Arithmetics
- ; shift a double cell value right
- VE_D2SLASH:
-007404 ff03 .dw $ff03
-007405 3264
-007406 002f .db "d2/",0
-007407 73f6 .dw VE_HEAD
- .set VE_HEAD = VE_D2SLASH
- XT_D2SLASH:
-007408 7409 .dw PFA_D2SLASH
- PFA_D2SLASH:
-007409 9109 ld temp0, Y+
-00740a 9119 ld temp1, Y+
-00740b 9595 asr tosh
-00740c 9587 ror tosl
-00740d 9517 ror temp1
-00740e 9507 ror temp0
-00740f 931a st -Y, temp1
-007410 930a st -Y, temp0
-007411 cbf3 jmp_ DO_NEXT
- .include "words/d-plus.asm"
-
- ; Arithmetics
- ; add 2 double cell values
- VE_DPLUS:
-007412 ff02 .dw $ff02
-007413 2b64 .db "d+"
-007414 7404 .dw VE_HEAD
- .set VE_HEAD = VE_DPLUS
- XT_DPLUS:
-007415 7416 .dw PFA_DPLUS
- PFA_DPLUS:
-007416 9129 ld temp2, Y+
-007417 9139 ld temp3, Y+
-
-007418 90e9 ld temp4, Y+
-007419 90f9 ld temp5, Y+
-00741a 9149 ld temp6, Y+
-00741b 9159 ld temp7, Y+
-
-00741c 0f24 add temp2, temp6
-00741d 1f35 adc temp3, temp7
-00741e 1d8e adc tosl, temp4
-00741f 1d9f adc tosh, temp5
-
-007420 933a st -Y, temp3
-007421 932a st -Y, temp2
-007422 cbe2 jmp_ DO_NEXT
- .include "words/d-minus.asm"
-
- ; Arithmetics
- ; subtract d2 from d1
- VE_DMINUS:
-007423 ff02 .dw $ff02
-007424 2d64 .db "d-"
-007425 7412 .dw VE_HEAD
- .set VE_HEAD = VE_DMINUS
- XT_DMINUS:
-007426 7427 .dw PFA_DMINUS
- PFA_DMINUS:
-007427 9129 ld temp2, Y+
-007428 9139 ld temp3, Y+
-
-007429 90e9 ld temp4, Y+
-00742a 90f9 ld temp5, Y+
-00742b 9149 ld temp6, Y+
-00742c 9159 ld temp7, Y+
-
-00742d 1b42 sub temp6, temp2
-00742e 0b53 sbc temp7, temp3
-00742f 0ae8 sbc temp4, tosl
-007430 0af9 sbc temp5, tosh
-
-007431 935a st -Y, temp7
-007432 934a st -Y, temp6
-007433 01c7 movw tosl, temp4
-007434 cbd0 jmp_ DO_NEXT
- .include "words/d-invert.asm"
-
- ; Arithmetics
- ; invert all bits in the double cell value
- VE_DINVERT:
-007435 ff07 .dw $ff07
-007436 6964
-007437 766e
-007438 7265
-007439 0074 .db "dinvert",0
-00743a 7423 .dw VE_HEAD
- .set VE_HEAD = VE_DINVERT
- XT_DINVERT:
-00743b 743c .dw PFA_DINVERT
- PFA_DINVERT:
-00743c 9109 ld temp0, Y+
-00743d 9119 ld temp1, Y+
-00743e 9580 com tosl
-00743f 9590 com tosh
-007440 9500 com temp0
-007441 9510 com temp1
-007442 931a st -Y, temp1
-007443 930a st -Y, temp0
-007444 cbc0 jmp_ DO_NEXT
- .include "words/u-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDOT:
-007445 ff02 .dw $ff02
-007446 2e75 .db "u."
-007447 7435 .dw VE_HEAD
- .set VE_HEAD = VE_UDOT
- XT_UDOT:
-007448 7001 .dw DO_COLON
- PFA_UDOT:
- .endif
-007449 7154 .dw XT_ZERO
-00744a 772a .dw XT_UDDOT
-00744b 7020 .dw XT_EXIT
- ; : u. ( us -- ) 0 ud. ;
- .include "words/u-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with single cells numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDOTR:
-00744c ff03 .dw $ff03
-00744d 2e75
-00744e 0072 .db "u.r",0
-00744f 7445 .dw VE_HEAD
- .set VE_HEAD = VE_UDOTR
- XT_UDOTR:
-007450 7001 .dw DO_COLON
- PFA_UDOTR:
- .endif
-007451 7154 .dw XT_ZERO
-007452 70c4 .dw XT_SWAP
-007453 7733 .dw XT_UDDOTR
-007454 7020 .dw XT_EXIT
- ; : u.r ( s n -- ) 0 swap ud.r ;
-
- .include "words/show-wordlist.asm"
-
- ; Tools
- ; prints the name of the words in a wordlist
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHOWWORDLIST:
-007455 ff0d .dw $ff0d
-007456 6873
-007457 776f
-007458 772d
-007459 726f
-00745a 6c64
-00745b 7369
-00745c 0074 .db "show-wordlist",0
-00745d 744c .dw VE_HEAD
- .set VE_HEAD = VE_SHOWWORDLIST
- XT_SHOWWORDLIST:
-00745e 7001 .dw DO_COLON
- PFA_SHOWWORDLIST:
- .endif
-00745f 703d .dw XT_DOLITERAL
-007460 7464 .dw XT_SHOWWORD
-007461 70c4 .dw XT_SWAP
-007462 7c57 .dw XT_TRAVERSEWORDLIST
-007463 7020 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SHOWWORD:
-007464 7001 .dw DO_COLON
- PFA_SHOWWORD:
- .endif
-007465 7c72 .dw XT_NAME2STRING
-007466 77a0 .dw XT_ITYPE
-007467 77e2 .dw XT_SPACE ; ( -- addr n)
-007468 714b .dw XT_TRUE
-007469 7020 .dw XT_EXIT
- .include "words/words.asm"
-
- ; Tools
- ; prints a list of all (visible) words in the dictionary
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_WORDS:
-00746a ff05 .dw $ff05
-00746b 6f77
-00746c 6472
-00746d 0073 .db "words",0
-00746e 7455 .dw VE_HEAD
- .set VE_HEAD = VE_WORDS
- XT_WORDS:
-00746f 7001 .dw DO_COLON
- PFA_WORDS:
- .endif
-007470 703d .dw XT_DOLITERAL
-007471 0050 .dw CFG_ORDERLISTLEN+2
-007472 735f .dw XT_FETCHE
-007473 745e .dw XT_SHOWWORDLIST
-007474 7020 .dw XT_EXIT
- .include "dict/interrupt.inc"
-
- .if WANT_INTERRUPTS == 1
-
- .if WANT_INTERRUPT_COUNTERS == 1
- .endif
-
- .include "words/int-on.asm"
-
- ; Interrupt
- ; turns on all interrupts
- VE_INTON:
-007475 ff04 .dw $ff04
-007476 692b
-007477 746e .db "+int"
-007478 746a .dw VE_HEAD
- .set VE_HEAD = VE_INTON
- XT_INTON:
-007479 747a .dw PFA_INTON
- PFA_INTON:
-00747a 9478 sei
-00747b cb89 jmp_ DO_NEXT
- .include "words/int-off.asm"
-
- ; Interrupt
- ; turns off all interrupts
- VE_INTOFF:
-00747c ff04 .dw $ff04
-00747d 692d
-00747e 746e .db "-int"
-00747f 7475 .dw VE_HEAD
- .set VE_HEAD = VE_INTOFF
- XT_INTOFF:
-007480 7481 .dw PFA_INTOFF
- PFA_INTOFF:
-007481 94f8 cli
-007482 cb82 jmp_ DO_NEXT
- .include "words/int-store.asm"
-
- ; Interrupt
- ; stores XT as interrupt vector i
- VE_INTSTORE:
-007483 ff04 .dw $ff04
-007484 6e69
-007485 2174 .db "int!"
-007486 747c .dw VE_HEAD
- .set VE_HEAD = VE_INTSTORE
- XT_INTSTORE:
-007487 7001 .dw DO_COLON
- PFA_INTSTORE:
-007488 703d .dw XT_DOLITERAL
-007489 0000 .dw intvec
-00748a 719d .dw XT_PLUS
-00748b 733b .dw XT_STOREE
-00748c 7020 .dw XT_EXIT
- .include "words/int-fetch.asm"
-
- ; Interrupt
- ; fetches XT from interrupt vector i
- VE_INTFETCH:
-00748d ff04 .dw $ff04
-00748e 6e69
-00748f 4074 .db "int@"
-007490 7483 .dw VE_HEAD
- .set VE_HEAD = VE_INTFETCH
- XT_INTFETCH:
-007491 7001 .dw DO_COLON
- PFA_INTFETCH:
-007492 703d .dw XT_DOLITERAL
-007493 0000 .dw intvec
-007494 719d .dw XT_PLUS
-007495 735f .dw XT_FETCHE
-007496 7020 .dw XT_EXIT
- .include "words/int-trap.asm"
-
- ; Interrupt
- ; trigger an interrupt
- VE_INTTRAP:
-007497 ff08 .dw $ff08
-007498 6e69
-007499 2d74
-00749a 7274
-00749b 7061 .db "int-trap"
-00749c 748d .dw VE_HEAD
- .set VE_HEAD = VE_INTTRAP
- XT_INTTRAP:
-00749d 749e .dw PFA_INTTRAP
- PFA_INTTRAP:
-00749e 2eb8 mov isrflag, tosl
-00749f 9189
-0074a0 9199 loadtos
-0074a1 cb63 jmp_ DO_NEXT
-
- .include "words/isr-exec.asm"
-
- ; Interrupt
- ; executes an interrupt service routine
- ;VE_ISREXEC:
- ; .dw $ff08
- ; .db "isr-exec"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREXEC
- XT_ISREXEC:
-0074a2 7001 .dw DO_COLON
- PFA_ISREXEC:
-0074a3 7491 .dw XT_INTFETCH
-0074a4 702a .dw XT_EXECUTE
-0074a5 74a7 .dw XT_ISREND
-0074a6 7020 .dw XT_EXIT
- .include "words/isr-end.asm"
-
- ; Interrupt
- ; re-enables interrupts in an ISR
- ;VE_ISREND:
- ; .dw $ff07
- ; .db "isr-end",0
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_ISREND
- XT_ISREND:
-0074a7 74a8 .dw PFA_ISREND
- PFA_ISREND:
-0074a8 d001 rcall PFA_ISREND1 ; clear the interrupt flag for the controller
-0074a9 cb5b jmp_ DO_NEXT
- PFA_ISREND1:
-0074aa 9518 reti
- .endif
-
- .include "words/pick.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PICK:
-0074ab ff04 .dw $ff04
-0074ac 6970
-0074ad 6b63 .db "pick"
-0074ae 7497 .dw VE_HEAD
- .set VE_HEAD = VE_PICK
- XT_PICK:
-0074af 7001 .dw DO_COLON
- PFA_PICK:
- .endif
-0074b0 722f .dw XT_1PLUS
-0074b1 7558 .dw XT_CELLS
-0074b2 728d .dw XT_SP_FETCH
-0074b3 719d .dw XT_PLUS
-0074b4 7079 .dw XT_FETCH
-0074b5 7020 .dw XT_EXIT
- .include "words/dot-quote.asm"
-
- ; Compiler
- ; compiles string into dictionary to be printed at runtime
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOTSTRING:
-0074b6 0002 .dw $0002
-0074b7 222e .db ".",$22
-0074b8 74ab .dw VE_HEAD
- .set VE_HEAD = VE_DOTSTRING
- XT_DOTSTRING:
-0074b9 7001 .dw DO_COLON
- PFA_DOTSTRING:
- .endif
-0074ba 74c1 .dw XT_SQUOTE
-0074bb 01c1 .dw XT_COMPILE
-0074bc 77a0 .dw XT_ITYPE
-0074bd 7020 .dw XT_EXIT
- .include "words/squote.asm"
-
- ; Compiler
- ; compiles a string to flash, at runtime leaves ( -- flash-addr count) on stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SQUOTE:
-0074be 0002 .dw $0002
-0074bf 2273 .db "s",$22
-0074c0 74b6 .dw VE_HEAD
- .set VE_HEAD = VE_SQUOTE
- XT_SQUOTE:
-0074c1 7001 .dw DO_COLON
- PFA_SQUOTE:
- .endif
-0074c2 703d .dw XT_DOLITERAL
-0074c3 0022 .dw 34 ; 0x22
-0074c4 7987 .dw XT_PARSE ; ( -- addr n)
-0074c5 754b .dw XT_STATE
-0074c6 7079 .dw XT_FETCH
-0074c7 7036 .dw XT_DOCONDBRANCH
-0074c8 74ca DEST(PFA_SQUOTE1)
-0074c9 01ed .dw XT_SLITERAL
- PFA_SQUOTE1:
-0074ca 7020 .dw XT_EXIT
-
- .include "words/fill.asm"
-
- ; Memory
- ; fill u bytes memory beginning at a-addr with character c
- VE_FILL:
-0074cb ff04 .dw $ff04
-0074cc 6966
-0074cd 6c6c .db "fill"
-0074ce 74be .dw VE_HEAD
- .set VE_HEAD = VE_FILL
- XT_FILL:
-0074cf 7001 .dw DO_COLON
- PFA_FILL:
-0074d0 70e1 .dw XT_ROT
-0074d1 70e1 .dw XT_ROT
-0074d2 70b9
-0074d3 7036 .dw XT_QDUP,XT_DOCONDBRANCH
-0074d4 74dc DEST(PFA_FILL2)
-0074d5 7d5e .dw XT_BOUNDS
-0074d6 729b .dw XT_DODO
- PFA_FILL1:
-0074d7 70b1 .dw XT_DUP
-0074d8 72ac .dw XT_I
-0074d9 708d .dw XT_CSTORE ; ( -- c c-addr)
-0074da 72c9 .dw XT_DOLOOP
-0074db 74d7 .dw PFA_FILL1
- PFA_FILL2:
-0074dc 70d9 .dw XT_DROP
-0074dd 7020 .dw XT_EXIT
-
- .include "words/environment.asm"
-
- ; System Value
- ; word list identifier of the environmental search list
- VE_ENVIRONMENT:
-0074de ff0b .dw $ff0b
-0074df 6e65
-0074e0 6976
-0074e1 6f72
-0074e2 6d6e
-0074e3 6e65
-0074e4 0074 .db "environment",0
-0074e5 74cb .dw VE_HEAD
- .set VE_HEAD = VE_ENVIRONMENT
- XT_ENVIRONMENT:
-0074e6 7048 .dw PFA_DOVARIABLE
- PFA_ENVIRONMENT:
-0074e7 0048 .dw CFG_ENVIRONMENT
- .include "words/env-wordlists.asm"
-
- ; Environment
- ; maximum number of wordlists in the dictionary search order
- VE_ENVWORDLISTS:
-0074e8 ff09 .dw $ff09
-0074e9 6f77
-0074ea 6472
-0074eb 696c
-0074ec 7473
-0074ed 0073 .db "wordlists",0
-0074ee 0000 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVWORDLISTS
- XT_ENVWORDLISTS:
-0074ef 7001 .dw DO_COLON
- PFA_ENVWORDLISTS:
-0074f0 703d .dw XT_DOLITERAL
-0074f1 0008 .dw NUMWORDLISTS
-0074f2 7020 .dw XT_EXIT
- .include "words/env-slashpad.asm"
-
- ; Environment
- ; Size of the PAD buffer in bytes
- VE_ENVSLASHPAD:
-0074f3 ff04 .dw $ff04
-0074f4 702f
-0074f5 6461 .db "/pad"
-0074f6 74e8 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHPAD
- XT_ENVSLASHPAD:
-0074f7 7001 .dw DO_COLON
- PFA_ENVSLASHPAD:
-0074f8 728d .dw XT_SP_FETCH
-0074f9 7584 .dw XT_PAD
-0074fa 7193 .dw XT_MINUS
-0074fb 7020 .dw XT_EXIT
- .include "words/env-slashhold.asm"
-
- ; Environment
- ; size of the pictured numeric output buffer in bytes
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENVSLASHHOLD:
-0074fc ff05 .dw $ff05
-0074fd 682f
-0074fe 6c6f
-0074ff 0064 .db "/hold",0
-007500 74f3 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVSLASHHOLD
- XT_ENVSLASHHOLD:
-007501 7001 .dw DO_COLON
- PFA_ENVSLASHHOLD:
- .endif
-007502 7584 .dw XT_PAD
-007503 75bf .dw XT_HERE
-007504 7193 .dw XT_MINUS
-007505 7020 .dw XT_EXIT
- .include "words/env-forthname.asm"
-
- ; Environment
- ; flash address of the amforth name string
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHNAME:
-007506 ff0a .dw $ff0a
-007507 6f66
-007508 7472
-007509 2d68
-00750a 616e
-00750b 656d .db "forth-name"
-00750c 74fc .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHNAME
- XT_ENV_FORTHNAME:
-00750d 7001 .dw DO_COLON
- PFA_EN_FORTHNAME:
-00750e 776d .dw XT_DOSLITERAL
-00750f 0007 .dw 7
- .endif
-007510 6d61
-007511 6f66
-007512 7472
-../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte
-007513 0068 .db "amforth"
- .if cpu_msp430==1
- .endif
-007514 7020 .dw XT_EXIT
- .include "words/env-forthversion.asm"
-
- ; Environment
- ; version number of amforth
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_FORTHVERSION:
-007515 ff07 .dw $ff07
-007516 6576
-007517 7372
-007518 6f69
-007519 006e .db "version",0
-00751a 7506 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_FORTHVERSION
- XT_ENV_FORTHVERSION:
-00751b 7001 .dw DO_COLON
- PFA_EN_FORTHVERSION:
- .endif
-00751c 703d .dw XT_DOLITERAL
-00751d 0041 .dw 65
-00751e 7020 .dw XT_EXIT
- .include "words/env-cpu.asm"
-
- ; Environment
- ; flash address of the CPU identification string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ENV_CPU:
-00751f ff03 .dw $ff03
-007520 7063
-007521 0075 .db "cpu",0
-007522 7515 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_CPU
- XT_ENV_CPU:
-007523 7001 .dw DO_COLON
- PFA_EN_CPU:
- .endif
-007524 703d .dw XT_DOLITERAL
-007525 003b .dw mcu_name
-007526 77cc .dw XT_ICOUNT
-007527 7020 .dw XT_EXIT
- .include "words/env-mcuinfo.asm"
-
- ; Environment
- ; flash address of some CPU specific parameters
- VE_ENV_MCUINFO:
-007528 ff08 .dw $ff08
-007529 636d
-00752a 2d75
-00752b 6e69
-00752c 6f66 .db "mcu-info"
-00752d 751f .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENV_MCUINFO
- XT_ENV_MCUINFO:
-00752e 7001 .dw DO_COLON
- PFA_EN_MCUINFO:
-00752f 703d .dw XT_DOLITERAL
-007530 0037 .dw mcu_info
-007531 7020 .dw XT_EXIT
- .include "words/env-usersize.asm"
-
- ; Environment
- ; size of the USER area in bytes
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_ENVUSERSIZE:
-007532 ff05 .dw $ff05
-007533 752f
-007534 6573
-007535 0072 .db "/user",0
-007536 7528 .dw VE_ENVHEAD
- .set VE_ENVHEAD = VE_ENVUSERSIZE
- XT_ENVUSERSIZE:
-007537 7001 .dw DO_COLON
- PFA_ENVUSERSIZE:
- .endif
-007538 703d .dw XT_DOLITERAL
-007539 002c .dw SYSUSERSIZE + APPUSERSIZE
-00753a 7020 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/f_cpu.asm"
-
- ; System
- ; put the cpu frequency in Hz on stack
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_F_CPU:
-00753b ff05 .dw $ff05
-00753c 5f66
-00753d 7063
-00753e 0075 .db "f_cpu",0
-00753f 74de .dw VE_HEAD
- .set VE_HEAD = VE_F_CPU
- XT_F_CPU:
-007540 7001 .dw DO_COLON
- PFA_F_CPU:
- .endif
-007541 703d .dw XT_DOLITERAL
-007542 2400 .dw (F_CPU % 65536)
-007543 703d .dw XT_DOLITERAL
-007544 00f4 .dw (F_CPU / 65536)
-007545 7020 .dw XT_EXIT
- .include "words/state.asm"
-
- ; System Variable
- ; system state
- VE_STATE:
-007546 ff05 .dw $ff05
-007547 7473
-007548 7461
-007549 0065 .db "state",0
-00754a 753b .dw VE_HEAD
- .set VE_HEAD = VE_STATE
- XT_STATE:
-00754b 7048 .dw PFA_DOVARIABLE
- PFA_STATE:
-00754c 0136 .dw ram_state
-
- .dseg
-000136 ram_state: .byte 2
- .include "words/base.asm"
-
- ; Numeric IO
- ; location of the cell containing the number conversion radix
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BASE:
-00754d ff04 .dw $ff04
-00754e 6162
-00754f 6573 .db "base"
-007550 7546 .dw VE_HEAD
- .set VE_HEAD = VE_BASE
- XT_BASE:
-007551 7058 .dw PFA_DOUSER
- PFA_BASE:
- .endif
-007552 000c .dw USER_BASE
-
- .include "words/cells.asm"
-
- ; Arithmetics
- ; n2 is the size in address units of n1 cells
- VE_CELLS:
-007553 ff05 .dw $ff05
-007554 6563
-007555 6c6c
-007556 0073 .db "cells",0
-007557 754d .dw VE_HEAD
- .set VE_HEAD = VE_CELLS
- XT_CELLS:
-007558 720c .dw PFA_2STAR
- .include "words/cellplus.asm"
-
- ; Arithmetics
- ; add the size of an address-unit to a-addr1
- VE_CELLPLUS:
-007559 ff05 .dw $ff05
-00755a 6563
-00755b 6c6c
-00755c 002b .db "cell+",0
-00755d 7553 .dw VE_HEAD
- .set VE_HEAD = VE_CELLPLUS
- XT_CELLPLUS:
-00755e 755f .dw PFA_CELLPLUS
- PFA_CELLPLUS:
-00755f 9602 adiw tosl, CELLSIZE
-007560 caa4 jmp_ DO_NEXT
-
- .include "words/2dup.asm"
-
- ; Stack
- ; Duplicate the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DUP:
-007561 ff04 .dw $ff04
-007562 6432
-007563 7075 .db "2dup"
-007564 7559 .dw VE_HEAD
- .set VE_HEAD = VE_2DUP
- XT_2DUP:
-007565 7001 .dw DO_COLON
- PFA_2DUP:
- .endif
-
-007566 70cf .dw XT_OVER
-007567 70cf .dw XT_OVER
-007568 7020 .dw XT_EXIT
- .include "words/2drop.asm"
-
- ; Stack
- ; Remove the 2 top elements
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2DROP:
-007569 ff05 .dw $ff05
-00756a 6432
-00756b 6f72
-00756c 0070 .db "2drop",0
-00756d 7561 .dw VE_HEAD
- .set VE_HEAD = VE_2DROP
- XT_2DROP:
-00756e 7001 .dw DO_COLON
- PFA_2DROP:
- .endif
-00756f 70d9 .dw XT_DROP
-007570 70d9 .dw XT_DROP
-007571 7020 .dw XT_EXIT
-
- .include "words/tuck.asm"
-
- ; Stack
- ; Copy the first (top) stack item below the second stack item.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TUCK:
-007572 ff04 .dw $ff04
-007573 7574
-007574 6b63 .db "tuck"
-007575 7569 .dw VE_HEAD
- .set VE_HEAD = VE_TUCK
- XT_TUCK:
-007576 7001 .dw DO_COLON
- PFA_TUCK:
- .endif
-007577 70c4 .dw XT_SWAP
-007578 70cf .dw XT_OVER
-007579 7020 .dw XT_EXIT
-
- .include "words/to-in.asm"
-
- ; System Variable
- ; pointer to current read position in input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_IN:
-00757a ff03 .dw $ff03
-00757b 693e
-00757c 006e .db ">in",0
-00757d 7572 .dw VE_HEAD
- .set VE_HEAD = VE_TO_IN
- XT_TO_IN:
-00757e 7058 .dw PFA_DOUSER
- PFA_TO_IN:
- .endif
-00757f 0018 .dw USER_TO_IN
- .include "words/pad.asm"
-
- ; System Variable
- ; Address of the temporary scratch buffer.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PAD:
-007580 ff03 .dw $ff03
-007581 6170
-007582 0064 .db "pad",0
-007583 757a .dw VE_HEAD
- .set VE_HEAD = VE_PAD
- XT_PAD:
-007584 7001 .dw DO_COLON
- PFA_PAD:
- .endif
-007585 75bf .dw XT_HERE
-007586 703d .dw XT_DOLITERAL
-007587 0028 .dw 40
-007588 719d .dw XT_PLUS
-007589 7020 .dw XT_EXIT
- .include "words/emit.asm"
-
- ; Character IO
- ; fetch the emit vector and execute it. should emit a character from TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMIT:
-00758a ff04 .dw $ff04
-00758b 6d65
-00758c 7469 .db "emit"
-00758d 7580 .dw VE_HEAD
- .set VE_HEAD = VE_EMIT
- XT_EMIT:
-00758e 7c13 .dw PFA_DODEFER1
- PFA_EMIT:
- .endif
-00758f 000e .dw USER_EMIT
-007590 7bdc .dw XT_UDEFERFETCH
-007591 7be8 .dw XT_UDEFERSTORE
- .include "words/emitq.asm"
-
- ; Character IO
- ; fetch emit? vector and execute it. should return the ready-to-send condition
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_EMITQ:
-007592 ff05 .dw $ff05
-007593 6d65
-007594 7469
-007595 003f .db "emit?",0
-007596 758a .dw VE_HEAD
- .set VE_HEAD = VE_EMITQ
- XT_EMITQ:
-007597 7c13 .dw PFA_DODEFER1
- PFA_EMITQ:
- .endif
-007598 0010 .dw USER_EMITQ
-007599 7bdc .dw XT_UDEFERFETCH
-00759a 7be8 .dw XT_UDEFERSTORE
- .include "words/key.asm"
-
- ; Character IO
- ; fetch key vector and execute it, should leave a single character on TOS
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEY:
-00759b ff03 .dw $ff03
-00759c 656b
-00759d 0079 .db "key",0
-00759e 7592 .dw VE_HEAD
- .set VE_HEAD = VE_KEY
- XT_KEY:
-00759f 7c13 .dw PFA_DODEFER1
- PFA_KEY:
- .endif
-0075a0 0012 .dw USER_KEY
-0075a1 7bdc .dw XT_UDEFERFETCH
-0075a2 7be8 .dw XT_UDEFERSTORE
- .include "words/keyq.asm"
-
- ; Character IO
- ; fetch key? vector and execute it. should turn on key sender, if it is disabled/stopped
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_KEYQ:
-0075a3 ff04 .dw $ff04
-0075a4 656b
-0075a5 3f79 .db "key?"
-0075a6 759b .dw VE_HEAD
- .set VE_HEAD = VE_KEYQ
- XT_KEYQ:
-0075a7 7c13 .dw PFA_DODEFER1
- PFA_KEYQ:
- .endif
-0075a8 0014 .dw USER_KEYQ
-0075a9 7bdc .dw XT_UDEFERFETCH
-0075aa 7be8 .dw XT_UDEFERSTORE
-
- .include "words/dp.asm"
-
- ; System Value
- ; address of the next free dictionary cell
- VE_DP:
-0075ab ff02 .dw $ff02
-0075ac 7064 .db "dp"
-0075ad 75a3 .dw VE_HEAD
- .set VE_HEAD = VE_DP
- XT_DP:
-0075ae 706f .dw PFA_DOVALUE1
- PFA_DP:
-0075af 003a .dw CFG_DP
-0075b0 7bb4 .dw XT_EDEFERFETCH
-0075b1 7bbe .dw XT_EDEFERSTORE
- .include "words/ehere.asm"
-
- ; System Value
- ; address of the next free address in eeprom
- VE_EHERE:
-0075b2 ff05 .dw $ff05
-0075b3 6865
-0075b4 7265
-0075b5 0065 .db "ehere",0
-0075b6 75ab .dw VE_HEAD
- .set VE_HEAD = VE_EHERE
- XT_EHERE:
-0075b7 706f .dw PFA_DOVALUE1
- PFA_EHERE:
-0075b8 003e .dw EE_EHERE
-0075b9 7bb4 .dw XT_EDEFERFETCH
-0075ba 7bbe .dw XT_EDEFERSTORE
- .include "words/here.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_HERE:
-0075bb ff04 .dw $ff04
-0075bc 6568
-0075bd 6572 .db "here"
-0075be 75b2 .dw VE_HEAD
- .set VE_HEAD = VE_HERE
- XT_HERE:
-0075bf 706f .dw PFA_DOVALUE1
- PFA_HERE:
-0075c0 003c .dw EE_HERE
-0075c1 7bb4 .dw XT_EDEFERFETCH
-0075c2 7bbe .dw XT_EDEFERSTORE
- .include "words/allot.asm"
-
- ; System
- ; allocate or release memory in RAM
- VE_ALLOT:
-0075c3 ff05 .dw $ff05
-0075c4 6c61
-0075c5 6f6c
-0075c6 0074 .db "allot",0
-0075c7 75bb .dw VE_HEAD
- .set VE_HEAD = VE_ALLOT
- XT_ALLOT:
-0075c8 7001 .dw DO_COLON
- PFA_ALLOT:
-0075c9 75bf .dw XT_HERE
-0075ca 719d .dw XT_PLUS
-0075cb 7b99 .dw XT_DOTO
-0075cc 75c0 .dw PFA_HERE
-0075cd 7020 .dw XT_EXIT
-
- .include "words/bin.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BIN:
-0075ce ff03 .dw $ff03
-0075cf 6962
-0075d0 006e .db "bin",0
-0075d1 75c3 .dw VE_HEAD
- .set VE_HEAD = VE_BIN
- XT_BIN:
-0075d2 7001 .dw DO_COLON
- PFA_BIN:
- .endif
-0075d3 7d8b .dw XT_TWO
-0075d4 7551 .dw XT_BASE
-0075d5 7081 .dw XT_STORE
-0075d6 7020 .dw XT_EXIT
- .include "words/decimal.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DECIMAL:
-0075d7 ff07 .dw $ff07
-0075d8 6564
-0075d9 6963
-0075da 616d
-0075db 006c .db "decimal",0
-0075dc 75ce .dw VE_HEAD
- .set VE_HEAD = VE_DECIMAL
- XT_DECIMAL:
-0075dd 7001 .dw DO_COLON
- PFA_DECIMAL:
- .endif
-0075de 703d .dw XT_DOLITERAL
-0075df 000a .dw 10
-0075e0 7551 .dw XT_BASE
-0075e1 7081 .dw XT_STORE
-0075e2 7020 .dw XT_EXIT
- .include "words/hex.asm"
-
- ; Numeric IO
- ; set base for numeric conversion to 10
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HEX:
-0075e3 ff03 .dw $ff03
-0075e4 6568
-0075e5 0078 .db "hex",0
-0075e6 75d7 .dw VE_HEAD
- .set VE_HEAD = VE_HEX
- XT_HEX:
-0075e7 7001 .dw DO_COLON
- PFA_HEX:
- .endif
-0075e8 703d .dw XT_DOLITERAL
-0075e9 0010 .dw 16
-0075ea 7551 .dw XT_BASE
-0075eb 7081 .dw XT_STORE
-0075ec 7020 .dw XT_EXIT
- .include "words/bl.asm"
-
- ; Character IO
- ; put ascii code of the blank to the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BL:
-0075ed ff02 .dw $ff02
-0075ee 6c62 .db "bl"
-0075ef 75e3 .dw VE_HEAD
- .set VE_HEAD = VE_BL
- XT_BL:
-0075f0 7048 .dw PFA_DOVARIABLE
- PFA_BL:
- .endif
-0075f1 0020 .dw 32
-
- .include "words/turnkey.asm"
-
- ; System Value
- ; Deferred action during startup/reset
- VE_TURNKEY:
-0075f2 ff07 .dw $ff07
-0075f3 7574
-0075f4 6e72
-0075f5 656b
-0075f6 0079 .db "turnkey",0
-0075f7 75ed .dw VE_HEAD
- .set VE_HEAD = VE_TURNKEY
- XT_TURNKEY:
-0075f8 7c13 .dw PFA_DODEFER1
- PFA_TURNKEY:
-0075f9 0046 .dw CFG_TURNKEY
-0075fa 7bb4 .dw XT_EDEFERFETCH
-0075fb 7bbe .dw XT_EDEFERSTORE
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/slashmod.asm"
-
- ; Arithmetics
- ; signed division n1/n2 with remainder and quotient
- VE_SLASHMOD:
-0075fc ff04 .dw $ff04
-0075fd 6d2f
-0075fe 646f .db "/mod"
-0075ff 75f2 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHMOD
- XT_SLASHMOD:
-007600 7601 .dw PFA_SLASHMOD
- PFA_SLASHMOD:
-007601 019c movw temp2, tosl
-
-007602 9109 ld temp0, Y+
-007603 9119 ld temp1, Y+
-
-007604 2f41 mov temp6,temp1 ;move dividend High to sign register
-007605 2743 eor temp6,temp3 ;xor divisor High with sign register
-007606 ff17 sbrs temp1,7 ;if MSB in dividend set
-007607 c004 rjmp PFA_SLASHMOD_1
-007608 9510 com temp1 ; change sign of dividend
-007609 9500 com temp0
-00760a 5f0f subi temp0,low(-1)
-00760b 4f1f sbci temp1,high(-1)
- PFA_SLASHMOD_1:
-00760c ff37 sbrs temp3,7 ;if MSB in divisor set
-00760d c004 rjmp PFA_SLASHMOD_2
-00760e 9530 com temp3 ; change sign of divisor
-00760f 9520 com temp2
-007610 5f2f subi temp2,low(-1)
-007611 4f3f sbci temp3,high(-1)
-007612 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte
-007613 18ff sub temp5,temp5;clear remainder High byte and carry
-007614 e151 ldi temp7,17 ;init loop counter
-
-007615 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend
-007616 1f11 rol temp1
-007617 955a dec temp7 ;decrement counter
-007618 f439 brne PFA_SLASHMOD_5 ;if done
-007619 ff47 sbrs temp6,7 ; if MSB in sign register set
-00761a c004 rjmp PFA_SLASHMOD_4
-00761b 9510 com temp1 ; change sign of result
-00761c 9500 com temp0
-00761d 5f0f subi temp0,low(-1)
-00761e 4f1f sbci temp1,high(-1)
-00761f c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return
-007620 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder
-007621 1cff rol temp5
-007622 1ae2 sub temp4,temp2 ;remainder = remainder - divisor
-007623 0af3 sbc temp5,temp3 ;
-007624 f420 brcc PFA_SLASHMOD_6 ;if result negative
-007625 0ee2 add temp4,temp2 ; restore remainder
-007626 1ef3 adc temp5,temp3
-007627 9488 clc ; clear carry to be shifted into result
-007628 cfec rjmp PFA_SLASHMOD_3 ;else
-007629 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result
-00762a cfea rjmp PFA_SLASHMOD_3
-
- PFA_SLASHMODmod_done:
- ; put remainder on stack
-00762b 92fa st -Y,temp5
-00762c 92ea st -Y,temp4
-
- ; put quotient on stack
-00762d 01c8 movw tosl, temp0
-00762e c9d6 jmp_ DO_NEXT
- .include "words/uslashmod.asm"
-
- ; Arithmetics
- ; unsigned division with remainder
- VE_USLASHMOD:
-00762f ff05 .dw $ff05
-007630 2f75
-007631 6f6d
-007632 0064 .db "u/mod",0
-007633 75fc .dw VE_HEAD
- .set VE_HEAD = VE_USLASHMOD
- XT_USLASHMOD:
-007634 7001 .dw DO_COLON
- PFA_USLASHMOD:
-007635 70ff .dw XT_TO_R
-007636 7154 .dw XT_ZERO
-007637 70f6 .dw XT_R_FROM
-007638 71c2 .dw XT_UMSLASHMOD
-007639 7020 .dw XT_EXIT
- .include "words/negate.asm"
-
- ; Logic
- ; 2-complement
- VE_NEGATE:
-00763a ff06 .dw $ff06
-00763b 656e
-00763c 6167
-00763d 6574 .db "negate"
-00763e 762f .dw VE_HEAD
- .set VE_HEAD = VE_NEGATE
- XT_NEGATE:
-00763f 7001 .dw DO_COLON
- PFA_NEGATE:
-007640 71fd .dw XT_INVERT
-007641 722f .dw XT_1PLUS
-007642 7020 .dw XT_EXIT
- .include "words/slash.asm"
-
- ; Arithmetics
- ; divide n1 by n2. giving the quotient
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SLASH:
-007643 ff01 .dw $ff01
-007644 002f .db "/",0
-007645 763a .dw VE_HEAD
- .set VE_HEAD = VE_SLASH
- XT_SLASH:
-007646 7001 .dw DO_COLON
- PFA_SLASH:
- .endif
-007647 7600 .dw XT_SLASHMOD
-007648 70f0 .dw XT_NIP
-007649 7020 .dw XT_EXIT
-
- .include "words/mod.asm"
-
- ; Arithmetics
- ; divide n1 by n2 giving the remainder n3
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MOD:
-00764a ff03 .dw $ff03
-00764b 6f6d
-00764c 0064 .db "mod",0
-00764d 7643 .dw VE_HEAD
- .set VE_HEAD = VE_MOD
- XT_MOD:
-00764e 7001 .dw DO_COLON
- PFA_MOD:
- .endif
-00764f 7600 .dw XT_SLASHMOD
-007650 70d9 .dw XT_DROP
-007651 7020 .dw XT_EXIT
- .include "words/abs.asm"
-
- ; DUP ?NEGATE ;
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ABS:
-007652 ff03 .dw $ff03
-007653 6261
-007654 0073 .db "abs",0
-007655 764a .dw VE_HEAD
- .set VE_HEAD = VE_ABS
- XT_ABS:
-007656 7001 .dw DO_COLON
- PFA_ABS:
-
- .endif
-
-007657 70b1
-007658 723e
-007659 7020 .DW XT_DUP,XT_QNEGATE,XT_EXIT
- .include "words/min.asm"
-
- ; Compare
- ; compare two values leave the smaller one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_MIN:
-00765a ff03 .dw $ff03
-00765b 696d
-00765c 006e .db "min",0
-00765d 7652 .dw VE_HEAD
- .set VE_HEAD = VE_MIN
- XT_MIN:
-00765e 7001 .dw DO_COLON
- PFA_MIN:
- .endif
-00765f 7565 .dw XT_2DUP
-007660 7178 .dw XT_GREATER
-007661 7036 .dw XT_DOCONDBRANCH
-007662 7664 DEST(PFA_MIN1)
-007663 70c4 .dw XT_SWAP
- PFA_MIN1:
-007664 70d9 .dw XT_DROP
-007665 7020 .dw XT_EXIT
- .include "words/max.asm"
-
- ; Compare
- ; compare two values, leave the bigger one
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MAX:
-007666 ff03 .dw $ff03
-007667 616d
-007668 0078 .db "max",0
-007669 765a .dw VE_HEAD
- .set VE_HEAD = VE_MAX
- XT_MAX:
-00766a 7001 .dw DO_COLON
- PFA_MAX:
-
- .endif
-00766b 7565 .dw XT_2DUP
-00766c 716e .dw XT_LESS
-00766d 7036 .dw XT_DOCONDBRANCH
-00766e 7670 DEST(PFA_MAX1)
-00766f 70c4 .dw XT_SWAP
- PFA_MAX1:
-007670 70d9 .dw XT_DROP
-007671 7020 .dw XT_EXIT
- .include "words/within.asm"
-
- ; Compare
- ; check if n is within min..max
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WITHIN:
-007672 ff06 .dw $ff06
-007673 6977
-007674 6874
-007675 6e69 .db "within"
-007676 7666 .dw VE_HEAD
- .set VE_HEAD = VE_WITHIN
- XT_WITHIN:
-007677 7001 .dw DO_COLON
- PFA_WITHIN:
- .endif
-007678 70cf .dw XT_OVER
-007679 7193 .dw XT_MINUS
-00767a 70ff .dw XT_TO_R
-00767b 7193 .dw XT_MINUS
-00767c 70f6 .dw XT_R_FROM
-00767d 715c .dw XT_ULESS
-00767e 7020 .dw XT_EXIT
-
- .include "words/to-upper.asm"
-
- ; String
- ; if c is a lowercase letter convert it to uppercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TOUPPER:
-00767f ff07 .dw $ff07
-007680 6f74
-007681 7075
-007682 6570
-007683 0072 .db "toupper",0
-007684 7672 .dw VE_HEAD
- .set VE_HEAD = VE_TOUPPER
- XT_TOUPPER:
-007685 7001 .dw DO_COLON
- PFA_TOUPPER:
- .endif
-007686 70b1 .dw XT_DUP
-007687 703d .dw XT_DOLITERAL
-007688 0061 .dw 'a'
-007689 703d .dw XT_DOLITERAL
-00768a 007b .dw 'z'+1
-00768b 7677 .dw XT_WITHIN
-00768c 7036 .dw XT_DOCONDBRANCH
-00768d 7691 DEST(PFA_TOUPPER0)
-00768e 703d .dw XT_DOLITERAL
-00768f 00df .dw 223 ; inverse of 0x20: 0xdf
-007690 7213 .dw XT_AND
- PFA_TOUPPER0:
-007691 7020 .dw XT_EXIT
- .include "words/to-lower.asm"
-
- ; String
- ; if C is an uppercase letter convert it to lowercase
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_TOLOWER:
-007692 ff07 .dw $ff07
-007693 6f74
-007694 6f6c
-007695 6577
-007696 0072 .db "tolower",0
-007697 767f .dw VE_HEAD
- .set VE_HEAD = VE_TOLOWER
- XT_TOLOWER:
-007698 7001 .dw DO_COLON
- PFA_TOLOWER:
- .endif
-007699 70b1 .dw XT_DUP
-00769a 703d .dw XT_DOLITERAL
-00769b 0041 .dw 'A'
-00769c 703d .dw XT_DOLITERAL
-00769d 005b .dw 'Z'+1
-00769e 7677 .dw XT_WITHIN
-00769f 7036 .dw XT_DOCONDBRANCH
-0076a0 76a4 DEST(PFA_TOLOWER0)
-0076a1 703d .dw XT_DOLITERAL
-0076a2 0020 .dw 32
-0076a3 721c .dw XT_OR
- PFA_TOLOWER0:
-0076a4 7020 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;
- .include "words/hld.asm"
-
- ; Numeric IO
- ; pointer to current write position in the Pictured Numeric Output buffer
- VE_HLD:
-0076a5 ff03 .dw $ff03
-0076a6 6c68
-0076a7 0064 .db "hld",0
-0076a8 7692 .dw VE_HEAD
- .set VE_HEAD = VE_HLD
- XT_HLD:
-0076a9 7048 .dw PFA_DOVARIABLE
- PFA_HLD:
-0076aa 0138 .dw ram_hld
-
- .dseg
-000138 ram_hld: .byte 2
- .cseg
- .include "words/hold.asm"
-
- ; Numeric IO
- ; prepend character to pictured numeric output buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HOLD:
-0076ab ff04 .dw $ff04
-0076ac 6f68
-0076ad 646c .db "hold"
-0076ae 76a5 .dw VE_HEAD
- .set VE_HEAD = VE_HOLD
- XT_HOLD:
-0076af 7001 .dw DO_COLON
- PFA_HOLD:
- .endif
-0076b0 76a9 .dw XT_HLD
-0076b1 70b1 .dw XT_DUP
-0076b2 7079 .dw XT_FETCH
-0076b3 7235 .dw XT_1MINUS
-0076b4 70b1 .dw XT_DUP
-0076b5 70ff .dw XT_TO_R
-0076b6 70c4 .dw XT_SWAP
-0076b7 7081 .dw XT_STORE
-0076b8 70f6 .dw XT_R_FROM
-0076b9 708d .dw XT_CSTORE
-0076ba 7020 .dw XT_EXIT
- .include "words/less-sharp.asm" ; <#
-
- ; Numeric IO
- ; initialize the pictured numeric output conversion process
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_L_SHARP:
-0076bb ff02 .dw $ff02
-0076bc 233c .db "<#"
-0076bd 76ab .dw VE_HEAD
- .set VE_HEAD = VE_L_SHARP
- XT_L_SHARP:
-0076be 7001 .dw DO_COLON
- PFA_L_SHARP:
- .endif
-0076bf 7584 .dw XT_PAD
-0076c0 76a9 .dw XT_HLD
-0076c1 7081 .dw XT_STORE
-0076c2 7020 .dw XT_EXIT
- .include "words/sharp.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert one digit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_SHARP:
-0076c3 ff01 .dw $ff01
-0076c4 0023 .db "#",0
-0076c5 76bb .dw VE_HEAD
- .set VE_HEAD = VE_SHARP
- XT_SHARP:
-0076c6 7001 .dw DO_COLON
- PFA_SHARP:
- .endif
-0076c7 7551 .dw XT_BASE
-0076c8 7079 .dw XT_FETCH
-0076c9 7743 .dw XT_UDSLASHMOD
-0076ca 70e1 .dw XT_ROT
-0076cb 703d .dw XT_DOLITERAL
-0076cc 0009 .dw 9
-0076cd 70cf .dw XT_OVER
-0076ce 716e .dw XT_LESS
-0076cf 7036 .dw XT_DOCONDBRANCH
-0076d0 76d4 DEST(PFA_SHARP1)
-0076d1 703d .dw XT_DOLITERAL
-0076d2 0007 .dw 7
-0076d3 719d .dw XT_PLUS
- PFA_SHARP1:
-0076d4 703d .dw XT_DOLITERAL
-0076d5 0030 .dw 48 ; ASCII 0
-0076d6 719d .dw XT_PLUS
-0076d7 76af .dw XT_HOLD
-0076d8 7020 .dw XT_EXIT
- ; : # ( ud1 -- ud2 )
- ; base @ ud/mod rot 9 over < if 7 + then 30 + hold ;
- .include "words/sharp-s.asm"
-
- ; Numeric IO
- ; pictured numeric output: convert all digits until 0 (zero) is reached
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_S:
-0076d9 ff02 .dw $ff02
-0076da 7323 .db "#s"
-0076db 76c3 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_S
- XT_SHARP_S:
-0076dc 7001 .dw DO_COLON
- PFA_SHARP_S:
- .endif
- NUMS1:
-0076dd 76c6 .dw XT_SHARP
-0076de 7565 .dw XT_2DUP
-0076df 721c .dw XT_OR
-0076e0 711a .dw XT_ZEROEQUAL
-0076e1 7036 .dw XT_DOCONDBRANCH
-0076e2 76dd DEST(NUMS1) ; PFA_SHARP_S
-0076e3 7020 .dw XT_EXIT
- .include "words/sharp-greater.asm" ; #>
-
- ; Numeric IO
- ; Pictured Numeric Output: convert PNO buffer into an string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SHARP_G:
-0076e4 ff02 .dw $ff02
-0076e5 3e23 .db "#>"
-0076e6 76d9 .dw VE_HEAD
- .set VE_HEAD = VE_SHARP_G
- XT_SHARP_G:
-0076e7 7001 .dw DO_COLON
- PFA_SHARP_G:
- .endif
-0076e8 756e .dw XT_2DROP
-0076e9 76a9 .dw XT_HLD
-0076ea 7079 .dw XT_FETCH
-0076eb 7584 .dw XT_PAD
-0076ec 70cf .dw XT_OVER
-0076ed 7193 .dw XT_MINUS
-0076ee 7020 .dw XT_EXIT
- .include "words/sign.asm"
-
- ; Numeric IO
- ; place a - in HLD if n is negative
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SIGN:
-0076ef ff04 .dw $ff04
-0076f0 6973
-0076f1 6e67 .db "sign"
-0076f2 76e4 .dw VE_HEAD
- .set VE_HEAD = VE_SIGN
- XT_SIGN:
-0076f3 7001 .dw DO_COLON
- PFA_SIGN:
- .endif
-0076f4 7121 .dw XT_ZEROLESS
-0076f5 7036 .dw XT_DOCONDBRANCH
-0076f6 76fa DEST(PFA_SIGN1)
-0076f7 703d .dw XT_DOLITERAL
-0076f8 002d .dw 45 ; ascii -
-0076f9 76af .dw XT_HOLD
- PFA_SIGN1:
-0076fa 7020 .dw XT_EXIT
- .include "words/d-dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOTR:
-0076fb ff03 .dw $ff03
-0076fc 2e64
-0076fd 0072 .db "d.r",0
-0076fe 76ef .dw VE_HEAD
- .set VE_HEAD = VE_DDOTR
- XT_DDOTR:
-0076ff 7001 .dw DO_COLON
- PFA_DDOTR:
-
- .endif
-007700 70ff .dw XT_TO_R
-007701 7576 .dw XT_TUCK
-007702 7cd4 .dw XT_DABS
-007703 76be .dw XT_L_SHARP
-007704 76dc .dw XT_SHARP_S
-007705 70e1 .dw XT_ROT
-007706 76f3 .dw XT_SIGN
-007707 76e7 .dw XT_SHARP_G
-007708 70f6 .dw XT_R_FROM
-007709 70cf .dw XT_OVER
-00770a 7193 .dw XT_MINUS
-00770b 77eb .dw XT_SPACES
-00770c 77fb .dw XT_TYPE
-00770d 7020 .dw XT_EXIT
- ; : d.r ( d n -- )
- ; >r swap over dabs <# #s rot sign #> r> over - spaces type ;
- .include "words/dot-r.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOTR:
-00770e ff02 .dw $ff02
-00770f 722e .db ".r"
-007710 76fb .dw VE_HEAD
- .set VE_HEAD = VE_DOTR
- XT_DOTR:
-007711 7001 .dw DO_COLON
- PFA_DOTR:
-
- .endif
-007712 70ff .dw XT_TO_R
-007713 7d67 .dw XT_S2D
-007714 70f6 .dw XT_R_FROM
-007715 76ff .dw XT_DDOTR
-007716 7020 .dw XT_EXIT
- ; : .r ( s n -- ) >r s>d r> d.r ;
- .include "words/d-dot.asm"
-
- ; Numeric IO
- ; singed PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DDOT:
-007717 ff02 .dw $ff02
-007718 2e64 .db "d."
-007719 770e .dw VE_HEAD
- .set VE_HEAD = VE_DDOT
- XT_DDOT:
-00771a 7001 .dw DO_COLON
- PFA_DDOT:
-
- .endif
-00771b 7154 .dw XT_ZERO
-00771c 76ff .dw XT_DDOTR
-00771d 77e2 .dw XT_SPACE
-00771e 7020 .dw XT_EXIT
- ; : d. ( d -- ) 0 d.r space ;
- .include "words/dot.asm"
-
- ; Numeric IO
- ; singed PNO with single cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_DOT:
-00771f ff01 .dw $ff01
-007720 002e .db ".",0
-007721 7717 .dw VE_HEAD
- .set VE_HEAD = VE_DOT
- XT_DOT:
-007722 7001 .dw DO_COLON
- PFA_DOT:
- .endif
-007723 7d67 .dw XT_S2D
-007724 771a .dw XT_DDOT
-007725 7020 .dw XT_EXIT
- ; : . ( s -- ) s>d d. ;
- .include "words/ud-dot.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDDOT:
-007726 ff03 .dw $ff03
-007727 6475
-007728 002e .db "ud.",0
-007729 771f .dw VE_HEAD
- .set VE_HEAD = VE_UDDOT
- XT_UDDOT:
-00772a 7001 .dw DO_COLON
- PFA_UDDOT:
- .endif
-00772b 7154 .dw XT_ZERO
-00772c 7733 .dw XT_UDDOTR
-00772d 77e2 .dw XT_SPACE
-00772e 7020 .dw XT_EXIT
- .include "words/ud-dot-r.asm"
-
- ; Numeric IO
- ; unsigned PNO with double cell numbers, right aligned in width w
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
-
- VE_UDDOTR:
-00772f ff04 .dw $ff04
-007730 6475
-007731 722e .db "ud.r"
-007732 7726 .dw VE_HEAD
- .set VE_HEAD = VE_UDDOTR
- XT_UDDOTR:
-007733 7001 .dw DO_COLON
- PFA_UDDOTR:
- .endif
-007734 70ff .dw XT_TO_R
-007735 76be .dw XT_L_SHARP
-007736 76dc .dw XT_SHARP_S
-007737 76e7 .dw XT_SHARP_G
-007738 70f6 .dw XT_R_FROM
-007739 70cf .dw XT_OVER
-00773a 7193 .dw XT_MINUS
-00773b 77eb .dw XT_SPACES
-00773c 77fb .dw XT_TYPE
-00773d 7020 .dw XT_EXIT
- .include "words/ud-slash-mod.asm"
-
- ; Arithmetics
- ; unsigned double cell division with remainder
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDSLASHMOD:
-00773e ff06 .dw $ff06
-00773f 6475
-007740 6d2f
-007741 646f .db "ud/mod"
-007742 772f .dw VE_HEAD
- .set VE_HEAD = VE_UDSLASHMOD
- XT_UDSLASHMOD:
-007743 7001 .dw DO_COLON
- PFA_UDSLASHMOD:
- .endif
-007744 70ff .dw XT_TO_R
-007745 7154 .dw XT_ZERO
-007746 7108 .dw XT_R_FETCH
-007747 71c2 .dw XT_UMSLASHMOD
-007748 70f6 .dw XT_R_FROM
-007749 70c4 .dw XT_SWAP
-00774a 70ff .dw XT_TO_R
-00774b 71c2 .dw XT_UMSLASHMOD
-00774c 70f6 .dw XT_R_FROM
-00774d 7020 .dw XT_EXIT
- .include "words/digit-q.asm"
-
- ; Numeric IO
- ; tries to convert a character to a number, set flag accordingly
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DIGITQ:
-00774e ff06 .dw $ff06
-00774f 6964
-007750 6967
-007751 3f74 .db "digit?"
-007752 773e .dw VE_HEAD
- .set VE_HEAD = VE_DIGITQ
- XT_DIGITQ:
-007753 7001 .dw DO_COLON
- PFA_DIGITQ:
- .endif
-007754 7685 .dw XT_TOUPPER
-007755 70b1
-007756 703d
-007757 0039
-007758 7178
-007759 703d
-00775a 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256
-00775b 7213
-00775c 719d
-00775d 70b1
-00775e 703d
-00775f 0140
-007760 7178 .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER
-007761 703d
-007762 0107
-007763 7213
-007764 7193
-007765 703d
-007766 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48
-007767 7193
-007768 70b1
-007769 7551
-00776a 7079
-00776b 715c .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS
-00776c 7020 .DW XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/do-sliteral.asm"
-
- ; String
- ; runtime portion of sliteral
- ;VE_DOSLITERAL:
- ; .dw $ff0a
- ; .db "(sliteral)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSLITERAL
- XT_DOSLITERAL:
-00776d 7001 .dw DO_COLON
- PFA_DOSLITERAL:
-00776e 7108 .dw XT_R_FETCH ; ( -- addr )
-00776f 77cc .dw XT_ICOUNT
-007770 70f6 .dw XT_R_FROM
-007771 70cf .dw XT_OVER ; ( -- addr' n addr n)
-007772 722f .dw XT_1PLUS
-007773 7204 .dw XT_2SLASH ; ( -- addr' n addr k )
-007774 719d .dw XT_PLUS ; ( -- addr' n addr'' )
-007775 722f .dw XT_1PLUS
-007776 70ff .dw XT_TO_R ; ( -- )
-007777 7020 .dw XT_EXIT
- .include "words/scomma.asm"
-
- ; Compiler
- ; compiles a string from RAM to Flash
- VE_SCOMMA:
-007778 ff02 .dw $ff02
-007779 2c73 .db "s",$2c
-00777a 774e .dw VE_HEAD
- .set VE_HEAD = VE_SCOMMA
- XT_SCOMMA:
-00777b 7001 .dw DO_COLON
- PFA_SCOMMA:
-00777c 70b1 .dw XT_DUP
-00777d 777f .dw XT_DOSCOMMA
-00777e 7020 .dw XT_EXIT
-
- ; ( addr len len' -- )
- ; Compiler
- ; compiles a string from RAM to Flash
- ;VE_DOSCOMMA:
- ; .dw $ff04
- ; .db "(s",$2c,")"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOSCOMMA
- XT_DOSCOMMA:
-00777f 7001 .dw DO_COLON
- PFA_DOSCOMMA:
-007780 01cc .dw XT_COMMA
-007781 70b1 .dw XT_DUP ; ( --addr len len)
-007782 7204 .dw XT_2SLASH ; ( -- addr len len/2
-007783 7576 .dw XT_TUCK ; ( -- addr len/2 len len/2
-007784 720b .dw XT_2STAR ; ( -- addr len/2 len len'
-007785 7193 .dw XT_MINUS ; ( -- addr len/2 rem
-007786 70ff .dw XT_TO_R
-007787 7154 .dw XT_ZERO
-007788 028b .dw XT_QDOCHECK
-007789 7036 .dw XT_DOCONDBRANCH
-00778a 7792 .dw PFA_SCOMMA2
-00778b 729b .dw XT_DODO
- PFA_SCOMMA1:
-00778c 70b1 .dw XT_DUP ; ( -- addr addr )
-00778d 7079 .dw XT_FETCH ; ( -- addr c1c2 )
-00778e 01cc .dw XT_COMMA ; ( -- addr )
-00778f 755e .dw XT_CELLPLUS ; ( -- addr+cell )
-007790 72c9 .dw XT_DOLOOP
-007791 778c .dw PFA_SCOMMA1
- PFA_SCOMMA2:
-007792 70f6 .dw XT_R_FROM
-007793 7128 .dw XT_GREATERZERO
-007794 7036 .dw XT_DOCONDBRANCH
-007795 7799 .dw PFA_SCOMMA3
-007796 70b1 .dw XT_DUP ; well, tricky
-007797 7098 .dw XT_CFETCH
-007798 01cc .dw XT_COMMA
- PFA_SCOMMA3:
-007799 70d9 .dw XT_DROP ; ( -- )
-00779a 7020 .dw XT_EXIT
- .include "words/itype.asm"
-
- ; Tools
- ; reads string from flash and prints it
- VE_ITYPE:
-00779b ff05 .dw $ff05
-00779c 7469
-00779d 7079
-00779e 0065 .db "itype",0
-00779f 7778 .dw VE_HEAD
- .set VE_HEAD = VE_ITYPE
- XT_ITYPE:
-0077a0 7001 .dw DO_COLON
- PFA_ITYPE:
-0077a1 70b1 .dw XT_DUP ; ( --addr len len)
-0077a2 7204 .dw XT_2SLASH ; ( -- addr len len/2
-0077a3 7576 .dw XT_TUCK ; ( -- addr len/2 len len/2
-0077a4 720b .dw XT_2STAR ; ( -- addr len/2 len len'
-0077a5 7193 .dw XT_MINUS ; ( -- addr len/2 rem
-0077a6 70ff .dw XT_TO_R
-0077a7 7154 .dw XT_ZERO
-0077a8 028b .dw XT_QDOCHECK
-0077a9 7036 .dw XT_DOCONDBRANCH
-0077aa 77b4 .dw PFA_ITYPE2
-0077ab 729b .dw XT_DODO
- PFA_ITYPE1:
-0077ac 70b1 .dw XT_DUP ; ( -- addr addr )
-0077ad 73cb .dw XT_FETCHI ; ( -- addr c1c2 )
-0077ae 70b1 .dw XT_DUP
-0077af 77c1 .dw XT_LOWEMIT
-0077b0 77bd .dw XT_HIEMIT
-0077b1 722f .dw XT_1PLUS ; ( -- addr+cell )
-0077b2 72c9 .dw XT_DOLOOP
-0077b3 77ac .dw PFA_ITYPE1
- PFA_ITYPE2:
-0077b4 70f6 .dw XT_R_FROM
-0077b5 7128 .dw XT_GREATERZERO
-0077b6 7036 .dw XT_DOCONDBRANCH
-0077b7 77bb .dw PFA_ITYPE3
-0077b8 70b1 .dw XT_DUP ; make sure the drop below has always something to do
-0077b9 73cb .dw XT_FETCHI
-0077ba 77c1 .dw XT_LOWEMIT
- PFA_ITYPE3:
-0077bb 70d9 .dw XT_DROP
-0077bc 7020 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_HIEMIT:
- ; .dw $ff06
- ; .db "hiemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_HIEMIT
- XT_HIEMIT:
-0077bd 7001 .dw DO_COLON
- PFA_HIEMIT:
-0077be 72f9 .dw XT_BYTESWAP
-0077bf 77c1 .dw XT_LOWEMIT
-0077c0 7020 .dw XT_EXIT
-
- ; ( w -- )
- ; R( -- )
- ; content of cell fetched on stack.
- ;VE_LOWEMIT:
- ; .dw $ff07
- ; .db "lowemit"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_LOWEMIT
- XT_LOWEMIT:
-0077c1 7001 .dw DO_COLON
- PFA_LOWEMIT:
-0077c2 703d .dw XT_DOLITERAL
-0077c3 00ff .dw $00ff
-0077c4 7213 .dw XT_AND
-0077c5 758e .dw XT_EMIT
-0077c6 7020 .dw XT_EXIT
- .include "words/icount.asm"
-
- ; Tools
- ; get count information out of a counted string in flash
- VE_ICOUNT:
-0077c7 ff06 .dw $ff06
-0077c8 6369
-0077c9 756f
-0077ca 746e .db "icount"
-0077cb 779b .dw VE_HEAD
- .set VE_HEAD = VE_ICOUNT
- XT_ICOUNT:
-0077cc 7001 .dw DO_COLON
- PFA_ICOUNT:
-0077cd 70b1 .dw XT_DUP
-0077ce 722f .dw XT_1PLUS
-0077cf 70c4 .dw XT_SWAP
-0077d0 73cb .dw XT_FETCHI
-0077d1 7020 .dw XT_EXIT
- .include "words/cr.asm"
-
- ; Character IO
- ; cause subsequent output appear at the beginning of the next line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CR:
-0077d2 ff02 .dw 0xff02
-0077d3 7263 .db "cr"
-0077d4 77c7 .dw VE_HEAD
- .set VE_HEAD = VE_CR
- XT_CR:
-0077d5 7001 .dw DO_COLON
- PFA_CR:
- .endif
-
-0077d6 703d .dw XT_DOLITERAL
-0077d7 000d .dw 13
-0077d8 758e .dw XT_EMIT
-0077d9 703d .dw XT_DOLITERAL
-0077da 000a .dw 10
-0077db 758e .dw XT_EMIT
-0077dc 7020 .dw XT_EXIT
- .include "words/space.asm"
-
- ; Character IO
- ; emits a space (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACE:
-0077dd ff05 .dw $ff05
-0077de 7073
-0077df 6361
-0077e0 0065 .db "space",0
-0077e1 77d2 .dw VE_HEAD
- .set VE_HEAD = VE_SPACE
- XT_SPACE:
-0077e2 7001 .dw DO_COLON
- PFA_SPACE:
- .endif
-0077e3 75f0 .dw XT_BL
-0077e4 758e .dw XT_EMIT
-0077e5 7020 .dw XT_EXIT
- .include "words/spaces.asm"
-
- ; Character IO
- ; emits n space(s) (bl)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SPACES:
-0077e6 ff06 .dw $ff06
-0077e7 7073
-0077e8 6361
-0077e9 7365 .db "spaces"
-0077ea 77dd .dw VE_HEAD
- .set VE_HEAD = VE_SPACES
- XT_SPACES:
-0077eb 7001 .dw DO_COLON
- PFA_SPACES:
-
- .endif
- ;C SPACES n -- output n spaces
- ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ;
-0077ec 7154
-0077ed 766a .DW XT_ZERO, XT_MAX
-0077ee 70b1
-0077ef 7036 SPCS1: .DW XT_DUP,XT_DOCONDBRANCH
-0077f0 77f5 DEST(SPCS2)
-0077f1 77e2
-0077f2 7235
-0077f3 702f .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH
-0077f4 77ee DEST(SPCS1)
-0077f5 70d9
-0077f6 7020 SPCS2: .DW XT_DROP,XT_EXIT
- .include "words/type.asm"
-
- ; Character IO
- ; print a RAM based string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TYPE:
-0077f7 ff04 .dw $ff04
-0077f8 7974
-0077f9 6570 .db "type"
-0077fa 77e6 .dw VE_HEAD
- .set VE_HEAD = VE_TYPE
- XT_TYPE:
-0077fb 7001 .dw DO_COLON
- PFA_TYPE:
-
- .endif
-0077fc 7d5e .dw XT_BOUNDS
-0077fd 028b .dw XT_QDOCHECK
-0077fe 7036 .dw XT_DOCONDBRANCH
-0077ff 7806 DEST(PFA_TYPE2)
-007800 729b .dw XT_DODO
- PFA_TYPE1:
-007801 72ac .dw XT_I
-007802 7098 .dw XT_CFETCH
-007803 758e .dw XT_EMIT
-007804 72c9 .dw XT_DOLOOP
-007805 7801 DEST(PFA_TYPE1)
- PFA_TYPE2:
-007806 7020 .dw XT_EXIT
- .include "words/tick.asm"
-
- ; Dictionary
- ; search dictionary for name, return XT or throw an exception -13
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TICK:
-007807 ff01 .dw $ff01
-007808 0027 .db "'",0
-007809 77f7 .dw VE_HEAD
- .set VE_HEAD = VE_TICK
- XT_TICK:
-00780a 7001 .dw DO_COLON
- PFA_TICK:
- .endif
-00780b 79b4 .dw XT_PARSENAME
-00780c 7acc .dw XT_FORTHRECOGNIZER
-00780d 7ad7 .dw XT_RECOGNIZE
- ; a word is tickable unless DT:TOKEN is DT:NULL or
- ; the interpret action is a NOOP
-00780e 70b1 .dw XT_DUP
-00780f 7b4a .dw XT_DT_NULL
-007810 7d7f .dw XT_EQUAL
-007811 70c4 .dw XT_SWAP
-007812 73cb .dw XT_FETCHI
-007813 703d .dw XT_DOLITERAL
-007814 7b7f .dw XT_NOOP
-007815 7d7f .dw XT_EQUAL
-007816 721c .dw XT_OR
-007817 7036 .dw XT_DOCONDBRANCH
-007818 781c DEST(PFA_TICK1)
-007819 703d .dw XT_DOLITERAL
-00781a fff3 .dw -13
-00781b 7841 .dw XT_THROW
- PFA_TICK1:
-00781c 70d9 .dw XT_DROP
-00781d 7020 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/handler.asm"
-
- ; Exceptions
- ; USER variable used by catch/throw
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_HANDLER:
-00781e ff07 .dw $ff07
-00781f 6168
-007820 646e
-007821 656c
-007822 0072 .db "handler",0
-007823 7807 .dw VE_HEAD
- .set VE_HEAD = VE_HANDLER
- XT_HANDLER:
-007824 7058 .dw PFA_DOUSER
- PFA_HANDLER:
- .endif
-007825 000a .dw USER_HANDLER
- .include "words/catch.asm"
-
- ; Exceptions
- ; execute XT and check for exceptions.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CATCH:
-007826 ff05 .dw $ff05
-007827 6163
-007828 6374
-007829 0068 .db "catch",0
-00782a 781e .dw VE_HEAD
- .set VE_HEAD = VE_CATCH
- XT_CATCH:
-00782b 7001 .dw DO_COLON
- PFA_CATCH:
- .endif
-
- ; sp@ >r
-00782c 728d .dw XT_SP_FETCH
-00782d 70ff .dw XT_TO_R
- ; handler @ >r
-00782e 7824 .dw XT_HANDLER
-00782f 7079 .dw XT_FETCH
-007830 70ff .dw XT_TO_R
- ; rp@ handler !
-007831 7276 .dw XT_RP_FETCH
-007832 7824 .dw XT_HANDLER
-007833 7081 .dw XT_STORE
-007834 702a .dw XT_EXECUTE
- ; r> handler !
-007835 70f6 .dw XT_R_FROM
-007836 7824 .dw XT_HANDLER
-007837 7081 .dw XT_STORE
-007838 70f6 .dw XT_R_FROM
-007839 70d9 .dw XT_DROP
-00783a 7154 .dw XT_ZERO
-00783b 7020 .dw XT_EXIT
- .include "words/throw.asm"
-
- ; Exceptions
- ; throw an exception
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_THROW:
-00783c ff05 .dw $ff05
-00783d 6874
-00783e 6f72
-00783f 0077 .db "throw",0
-007840 7826 .dw VE_HEAD
- .set VE_HEAD = VE_THROW
- XT_THROW:
-007841 7001 .dw DO_COLON
- PFA_THROW:
- .endif
-007842 70b1 .dw XT_DUP
-007843 711a .dw XT_ZEROEQUAL
-007844 7036 .dw XT_DOCONDBRANCH
-007845 7848 DEST(PFA_THROW1)
-007846 70d9 .dw XT_DROP
-007847 7020 .dw XT_EXIT
- PFA_THROW1:
-007848 7824 .dw XT_HANDLER
-007849 7079 .dw XT_FETCH
-00784a 7280 .dw XT_RP_STORE
-00784b 70f6 .dw XT_R_FROM
-00784c 7824 .dw XT_HANDLER
-00784d 7081 .dw XT_STORE
-00784e 70f6 .dw XT_R_FROM
-00784f 70c4 .dw XT_SWAP
-007850 70ff .dw XT_TO_R
-007851 7296 .dw XT_SP_STORE
-007852 70d9 .dw XT_DROP
-007853 70f6 .dw XT_R_FROM
-007854 7020 .dw XT_EXIT
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/cskip.asm"
-
- ; String
- ; skips leading occurancies in string at addr1/n1 leaving addr2/n2 pointing to the 1st non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSKIP:
-007855 ff05 .dw $ff05
-007856 7363
-007857 696b
-007858 0070 .db "cskip",0
-007859 783c .dw VE_HEAD
- .set VE_HEAD = VE_CSKIP
- XT_CSKIP:
-00785a 7001 .dw DO_COLON
- PFA_CSKIP:
- .endif
-00785b 70ff .dw XT_TO_R ; ( -- addr1 n1 )
- PFA_CSKIP1:
-00785c 70b1 .dw XT_DUP ; ( -- addr' n' n' )
-00785d 7036 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-00785e 7869 DEST(PFA_CSKIP2)
-00785f 70cf .dw XT_OVER ; ( -- addr' n' addr' )
-007860 7098 .dw XT_CFETCH ; ( -- addr' n' c' )
-007861 7108 .dw XT_R_FETCH ; ( -- addr' n' c' c )
-007862 7d7f .dw XT_EQUAL ; ( -- addr' n' f )
-007863 7036 .dw XT_DOCONDBRANCH ; ( -- addr' n')
-007864 7869 DEST(PFA_CSKIP2)
-007865 7d86 .dw XT_ONE
-007866 79a5 .dw XT_SLASHSTRING
-007867 702f .dw XT_DOBRANCH
-007868 785c DEST(PFA_CSKIP1)
- PFA_CSKIP2:
-007869 70f6 .dw XT_R_FROM
-00786a 70d9 .dw XT_DROP ; ( -- addr2 n2)
-00786b 7020 .dw XT_EXIT
- .include "words/cscan.asm"
-
- ; String
- ; Scan string at addr1/n1 for the first occurance of c, leaving addr1/n2, char at n2 is first non-c character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CSCAN:
-00786c ff05 .dw $ff05
-00786d 7363
-00786e 6163
-../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte
-00786f 006e .db "cscan"
-007870 7855 .dw VE_HEAD
- .set VE_HEAD = VE_CSCAN
- XT_CSCAN:
-007871 7001 .dw DO_COLON
- PFA_CSCAN:
- .endif
-007872 70ff .dw XT_TO_R
-007873 70cf .dw XT_OVER
- PFA_CSCAN1:
-007874 70b1 .dw XT_DUP
-007875 7098 .dw XT_CFETCH
-007876 7108 .dw XT_R_FETCH
-007877 7d7f .dw XT_EQUAL
-007878 711a .dw XT_ZEROEQUAL
-007879 7036 .dw XT_DOCONDBRANCH
-00787a 7886 DEST(PFA_CSCAN2)
-00787b 70c4 .dw XT_SWAP
-00787c 7235 .dw XT_1MINUS
-00787d 70c4 .dw XT_SWAP
-00787e 70cf .dw XT_OVER
-00787f 7121 .dw XT_ZEROLESS ; not negative
-007880 711a .dw XT_ZEROEQUAL
-007881 7036 .dw XT_DOCONDBRANCH
-007882 7886 DEST(PFA_CSCAN2)
-007883 722f .dw XT_1PLUS
-007884 702f .dw XT_DOBRANCH
-007885 7874 DEST(PFA_CSCAN1)
- PFA_CSCAN2:
-007886 70f0 .dw XT_NIP
-007887 70cf .dw XT_OVER
-007888 7193 .dw XT_MINUS
-007889 70f6 .dw XT_R_FROM
-00788a 70d9 .dw XT_DROP
-00788b 7020 .dw XT_EXIT
-
- ; : my-cscan ( addr len c -- addr len' )
- ; >r over ( -- addr len addr )
- ; begin
- ; dup c@ r@ <> while
- ; swap 1- swap over 0 >= while
- ; 1+
- ; repeat then
- ; nip over - r> drop
- ; ;
- .include "words/accept.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ACCEPT:
-00788c ff06 .dw $ff06
-00788d 6361
-00788e 6563
-00788f 7470 .db "accept"
-007890 786c .dw VE_HEAD
- .set VE_HEAD = VE_ACCEPT
- XT_ACCEPT:
-007891 7001 .dw DO_COLON
- PFA_ACCEPT:
-
- .endif
-007892 70cf
-007893 719d
-007894 7235
-007895 70cf .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER
-007896 759f
-007897 70b1
-007898 78d2
-007899 711a
-00789a 7036 ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH
-00789b 78c4 DEST(ACC5)
-00789c 70b1
-00789d 703d
-00789e 0008
-00789f 7d7f
-0078a0 7036 .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH
-0078a1 78b4 DEST(ACC3)
-0078a2 70d9
-0078a3 70e1
-0078a4 7565
-0078a5 7178
-0078a6 70ff
-0078a7 70e1
-0078a8 70e1
-0078a9 70f6
-0078aa 7036 .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH
-0078ab 78b2 DEST(ACC6)
-0078ac 78ca
-0078ad 7235
-0078ae 70ff
-0078af 70cf
-0078b0 70f6
-0078b1 015e .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX
-0078b2 702f ACC6: .DW XT_DOBRANCH
-0078b3 78c2 DEST(ACC4)
-
-
- ACC3: ; check for remaining control characters, replace them with blank
-0078b4 70b1 .dw XT_DUP ; ( -- addr k k )
-0078b5 75f0 .dw XT_BL
-0078b6 716e .dw XT_LESS
-0078b7 7036 .dw XT_DOCONDBRANCH
-0078b8 78bb DEST(PFA_ACCEPT6)
-0078b9 70d9 .dw XT_DROP
-0078ba 75f0 .dw XT_BL
- PFA_ACCEPT6:
-0078bb 70b1
-0078bc 758e
-0078bd 70cf
-0078be 708d
-0078bf 722f
-0078c0 70cf
-0078c1 016a .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN
-0078c2 702f ACC4: .DW XT_DOBRANCH
-0078c3 7896 DEST(ACC1)
-0078c4 70d9
-0078c5 70f0
-0078c6 70c4
-0078c7 7193
-0078c8 77d5
-0078c9 7020 ACC5: .DW XT_DROP,XT_NIP,XT_SWAP,XT_MINUS,XT_CR,XT_EXIT
-
-
- ; ( -- )
- ; System
- ; send a backspace character to overwrite the current char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- ;VE_BS:
- ; .dw $ff02
- ; .db "bs"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_BS
- XT_BS:
-0078ca 7001 .dw DO_COLON
- .endif
-0078cb 703d .dw XT_DOLITERAL
-0078cc 0008 .dw 8
-0078cd 70b1 .dw XT_DUP
-0078ce 758e .dw XT_EMIT
-0078cf 77e2 .dw XT_SPACE
-0078d0 758e .dw XT_EMIT
-0078d1 7020 .dw XT_EXIT
-
-
- ; ( c -- f )
- ; System
- ; is the character a line end character?
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_CRLFQ:
- ; .dw $ff02
- ; .db "crlf?"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_CRLFQ
- XT_CRLFQ:
-0078d2 7001 .dw DO_COLON
- .endif
-0078d3 70b1 .dw XT_DUP
-0078d4 703d .dw XT_DOLITERAL
-0078d5 000d .dw 13
-0078d6 7d7f .dw XT_EQUAL
-0078d7 70c4 .dw XT_SWAP
-0078d8 703d .dw XT_DOLITERAL
-0078d9 000a .dw 10
-0078da 7d7f .dw XT_EQUAL
-0078db 721c .dw XT_OR
-0078dc 7020 .dw XT_EXIT
- .include "words/refill.asm"
-
- ; System
- ; refills the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILL:
-0078dd ff06 .dw $ff06
-0078de 6572
-0078df 6966
-0078e0 6c6c .db "refill"
-0078e1 788c .dw VE_HEAD
- .set VE_HEAD = VE_REFILL
- XT_REFILL:
-0078e2 7c13 .dw PFA_DODEFER1
- PFA_REFILL:
- .endif
-0078e3 001a .dw USER_REFILL
-0078e4 7bdc .dw XT_UDEFERFETCH
-0078e5 7be8 .dw XT_UDEFERSTORE
- .include "words/char.asm"
-
- ; Tools
- ; copy the first character of the next word onto the stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_CHAR:
-0078e6 ff04 .dw $ff04
-0078e7 6863
-0078e8 7261 .db "char"
-0078e9 78dd .dw VE_HEAD
- .set VE_HEAD = VE_CHAR
- XT_CHAR:
-0078ea 7001 .dw DO_COLON
- PFA_CHAR:
- .endif
-0078eb 79b4 .dw XT_PARSENAME
-0078ec 70d9 .dw XT_DROP
-0078ed 7098 .dw XT_CFETCH
-0078ee 7020 .dw XT_EXIT
- .include "words/number.asm"
-
- ; Numeric IO
- ; convert a string at addr to a number
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBER:
-0078ef ff06 .dw $ff06
-0078f0 756e
-0078f1 626d
-0078f2 7265 .db "number"
-0078f3 78e6 .dw VE_HEAD
- .set VE_HEAD = VE_NUMBER
- XT_NUMBER:
-0078f4 7001 .dw DO_COLON
- PFA_NUMBER:
- .endif
-0078f5 7551 .dw XT_BASE
-0078f6 7079 .dw XT_FETCH
-0078f7 70ff .dw XT_TO_R
-0078f8 7938 .dw XT_QSIGN
-0078f9 70ff .dw XT_TO_R
-0078fa 794b .dw XT_SET_BASE
-0078fb 7938 .dw XT_QSIGN
-0078fc 70f6 .dw XT_R_FROM
-0078fd 721c .dw XT_OR
-0078fe 70ff .dw XT_TO_R
- ; check whether something is left
-0078ff 70b1 .dw XT_DUP
-007900 711a .dw XT_ZEROEQUAL
-007901 7036 .dw XT_DOCONDBRANCH
-007902 790b DEST(PFA_NUMBER0)
- ; nothing is left. It cannot be a number at all
-007903 756e .dw XT_2DROP
-007904 70f6 .dw XT_R_FROM
-007905 70d9 .dw XT_DROP
-007906 70f6 .dw XT_R_FROM
-007907 7551 .dw XT_BASE
-007908 7081 .dw XT_STORE
-007909 7154 .dw XT_ZERO
-00790a 7020 .dw XT_EXIT
- PFA_NUMBER0:
-00790b 731e .dw XT_2TO_R
-00790c 7154 .dw XT_ZERO ; starting value
-00790d 7154 .dw XT_ZERO
-00790e 732d .dw XT_2R_FROM
-00790f 7969 .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len'
- ; check length of the remaining string.
- ; if zero: a single cell number is entered
-007910 70b9 .dw XT_QDUP
-007911 7036 .dw XT_DOCONDBRANCH
-007912 792d DEST(PFA_NUMBER1)
- ; if equal 1: mayba a trailing dot? --> double cell number
-007913 7d86 .dw XT_ONE
-007914 7d7f .dw XT_EQUAL
-007915 7036 .dw XT_DOCONDBRANCH
-007916 7924 DEST(PFA_NUMBER2)
- ; excatly one character is left
-007917 7098 .dw XT_CFETCH
-007918 703d .dw XT_DOLITERAL
-007919 002e .dw 46 ; .
-00791a 7d7f .dw XT_EQUAL
-00791b 7036 .dw XT_DOCONDBRANCH
-00791c 7925 DEST(PFA_NUMBER6)
- ; its a double cell number
- ; incorporate sign into number
-00791d 70f6 .dw XT_R_FROM
-00791e 7036 .dw XT_DOCONDBRANCH
-00791f 7921 DEST(PFA_NUMBER3)
-007920 7ce1 .dw XT_DNEGATE
- PFA_NUMBER3:
-007921 7d8b .dw XT_TWO
-007922 702f .dw XT_DOBRANCH
-007923 7933 DEST(PFA_NUMBER5)
- PFA_NUMBER2:
-007924 70d9 .dw XT_DROP
- PFA_NUMBER6:
-007925 756e .dw XT_2DROP
-007926 70f6 .dw XT_R_FROM
-007927 70d9 .dw XT_DROP
-007928 70f6 .dw XT_R_FROM
-007929 7551 .dw XT_BASE
-00792a 7081 .dw XT_STORE
-00792b 7154 .dw XT_ZERO
-00792c 7020 .dw XT_EXIT
- PFA_NUMBER1:
-00792d 756e .dw XT_2DROP ; remove the address
- ; incorporate sign into number
-00792e 70f6 .dw XT_R_FROM
-00792f 7036 .dw XT_DOCONDBRANCH
-007930 7932 DEST(PFA_NUMBER4)
-007931 763f .dw XT_NEGATE
- PFA_NUMBER4:
-007932 7d86 .dw XT_ONE
- PFA_NUMBER5:
-007933 70f6 .dw XT_R_FROM
-007934 7551 .dw XT_BASE
-007935 7081 .dw XT_STORE
-007936 714b .dw XT_TRUE
-007937 7020 .dw XT_EXIT
- .include "words/q-sign.asm"
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_QSIGN:
-007938 7001 .dw DO_COLON
- PFA_QSIGN: ; ( c -- )
- .endif
-007939 70cf .dw XT_OVER ; ( -- addr len addr )
-00793a 7098 .dw XT_CFETCH
-00793b 703d .dw XT_DOLITERAL
-00793c 002d .dw '-'
-00793d 7d7f .dw XT_EQUAL ; ( -- addr len flag )
-00793e 70b1 .dw XT_DUP
-00793f 70ff .dw XT_TO_R
-007940 7036 .dw XT_DOCONDBRANCH
-007941 7944 DEST(PFA_NUMBERSIGN_DONE)
-007942 7d86 .dw XT_ONE ; skip sign character
-007943 79a5 .dw XT_SLASHSTRING
- PFA_NUMBERSIGN_DONE:
-007944 70f6 .dw XT_R_FROM
-007945 7020 .dw XT_EXIT
- .include "words/set-base.asm"
-
- ; Numeric IO
- ; skip a numeric prefix character
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_BASES:
-007946 7052 .dw PFA_DOCONSTANT
- .endif
-007947 000a
-007948 0010
-007949 0002
-00794a 000a .dw 10,16,2,10 ; last one could a 8 instead.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_SET_BASE:
-00794b 7001 .dw DO_COLON
- PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 )
- .endif
-00794c 70cf .dw XT_OVER
-00794d 7098 .dw XT_CFETCH
-00794e 703d .dw XT_DOLITERAL
-00794f 0023 .dw 35
-007950 7193 .dw XT_MINUS
-007951 70b1 .dw XT_DUP
-007952 7154 .dw XT_ZERO
-007953 703d .dw XT_DOLITERAL
-007954 0004 .dw 4
-007955 7677 .dw XT_WITHIN
-007956 7036 .dw XT_DOCONDBRANCH
-007957 7961 DEST(SET_BASE1)
- .if cpu_msp430==1
- .endif
-007958 7946 .dw XT_BASES
-007959 719d .dw XT_PLUS
-00795a 73cb .dw XT_FETCHI
-00795b 7551 .dw XT_BASE
-00795c 7081 .dw XT_STORE
-00795d 7d86 .dw XT_ONE
-00795e 79a5 .dw XT_SLASHSTRING
-00795f 702f .dw XT_DOBRANCH
-007960 7962 DEST(SET_BASE2)
- SET_BASE1:
-007961 70d9 .dw XT_DROP
- SET_BASE2:
-007962 7020 .dw XT_EXIT
-
- ; create bases 10 , 16 , 2 , 8 ,
- ; : set-base 35 - dup 0 4 within if
- ; bases + @i base ! 1 /string
- ; else
- ; drop
- ; then ;
- .include "words/to-number.asm"
-
- ; Numeric IO
- ; convert a string to a number c-addr2/u2 is the unconverted string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO_NUMBER:
-007963 ff07 .dw $ff07
-007964 6e3e
-007965 6d75
-007966 6562
-007967 0072 .db ">number",0
-007968 78ef .dw VE_HEAD
- .set VE_HEAD = VE_TO_NUMBER
- XT_TO_NUMBER:
-007969 7001 .dw DO_COLON
-
- .endif
-
-00796a 70b1
-00796b 7036 TONUM1: .DW XT_DUP,XT_DOCONDBRANCH
-00796c 7981 DEST(TONUM3)
-00796d 70cf
-00796e 7098
-00796f 7753 .DW XT_OVER,XT_CFETCH,XT_DIGITQ
-007970 711a
-007971 7036 .DW XT_ZEROEQUAL,XT_DOCONDBRANCH
-007972 7975 DEST(TONUM2)
-007973 70d9
-007974 7020 .DW XT_DROP,XT_EXIT
-007975 70ff
-007976 7d05
-007977 7551
-007978 7079
-007979 014f TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR
-00797a 70f6
-00797b 0147
-00797c 7d05 .DW XT_R_FROM,XT_MPLUS,XT_2SWAP
-00797d 7d86
-00797e 79a5
-00797f 702f .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH
-007980 796a DEST(TONUM1)
-007981 7020 TONUM3: .DW XT_EXIT
-
- ;C >NUMBER ud adr u -- ud' adr' u'
- ;C convert string to number
- ; BEGIN
- ; DUP WHILE
- ; OVER C@ DIGIT?
- ; 0= IF DROP EXIT THEN
- ; >R 2SWAP BASE @ UD*
- ; R> M+ 2SWAP
- ; 1 /STRING
- ; REPEAT ;
- .include "words/parse.asm"
-
- ; String
- ; in input buffer parse ccc delimited string by the delimiter char.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PARSE:
-007982 ff05 .dw $ff05
-007983 6170
-007984 7372
-007985 0065 .db "parse",0
-007986 7963 .dw VE_HEAD
- .set VE_HEAD = VE_PARSE
- XT_PARSE:
-007987 7001 .dw DO_COLON
- PFA_PARSE:
- .endif
-007988 70ff .dw XT_TO_R ; ( -- )
-007989 799b .dw XT_SOURCE ; ( -- addr len)
-00798a 757e .dw XT_TO_IN ; ( -- addr len >in)
-00798b 7079 .dw XT_FETCH
-00798c 79a5 .dw XT_SLASHSTRING ; ( -- addr' len' )
-
-00798d 70f6 .dw XT_R_FROM ; ( -- addr' len' c)
-00798e 7871 .dw XT_CSCAN ; ( -- addr' len'')
-00798f 70b1 .dw XT_DUP ; ( -- addr' len'' len'')
-007990 722f .dw XT_1PLUS
-007991 757e .dw XT_TO_IN ; ( -- addr' len'' len'' >in)
-007992 7265 .dw XT_PLUSSTORE ; ( -- addr' len')
-007993 7d86 .dw XT_ONE
-007994 79a5 .dw XT_SLASHSTRING
-007995 7020 .dw XT_EXIT
- .include "words/source.asm"
-
- ; System
- ; address and current length of the input buffer
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCE:
-007996 ff06 .dw $FF06
-007997 6f73
-007998 7275
-007999 6563 .db "source"
-00799a 7982 .dw VE_HEAD
- .set VE_HEAD = VE_SOURCE
- XT_SOURCE:
-00799b 7c13 .dw PFA_DODEFER1
- PFA_SOURCE:
- .endif
-00799c 0016 .dw USER_SOURCE
-00799d 7bdc .dw XT_UDEFERFETCH
-00799e 7be8 .dw XT_UDEFERSTORE
-
-
- .include "words/slash-string.asm"
-
- ; String
- ; adjust string from addr1 to addr1+n, reduce length from u1 to u2 by n
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SLASHSTRING:
-00799f ff07 .dw $ff07
-0079a0 732f
-0079a1 7274
-0079a2 6e69
-0079a3 0067 .db "/string",0
-0079a4 7996 .dw VE_HEAD
- .set VE_HEAD = VE_SLASHSTRING
- XT_SLASHSTRING:
-0079a5 7001 .dw DO_COLON
- PFA_SLASHSTRING:
- .endif
-0079a6 70e1 .dw XT_ROT
-0079a7 70cf .dw XT_OVER
-0079a8 719d .dw XT_PLUS
-0079a9 70e1 .dw XT_ROT
-0079aa 70e1 .dw XT_ROT
-0079ab 7193 .dw XT_MINUS
-0079ac 7020 .dw XT_EXIT
-
- .include "words/parse-name.asm"
-
- ; String
- ; In the SOURCE buffer parse whitespace delimited string. Returns string address within SOURCE.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_PARSENAME:
-0079ad ff0a .dw $FF0A
-0079ae 6170
-0079af 7372
-0079b0 2d65
-0079b1 616e
-0079b2 656d .db "parse-name"
-0079b3 799f .dw VE_HEAD
- .set VE_HEAD = VE_PARSENAME
- XT_PARSENAME:
-0079b4 7001 .dw DO_COLON
- PFA_PARSENAME:
- .endif
-0079b5 75f0 .dw XT_BL
-0079b6 79b8 .dw XT_SKIPSCANCHAR
-0079b7 7020 .dw XT_EXIT
-
- ; ( c -- addr2 len2 )
- ; String
- ; skips char and scan what's left in source for char
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_SKIPSCANCHAR:
- ; .dw $FF0A
- ; .db "skipscanchar"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_SKIPSCANCHAR
- XT_SKIPSCANCHAR:
-0079b8 7001 .dw DO_COLON
- PFA_SKIPSCANCHAR:
- .endif
-0079b9 70ff .dw XT_TO_R
-0079ba 799b .dw XT_SOURCE
-0079bb 757e .dw XT_TO_IN
-0079bc 7079 .dw XT_FETCH
-0079bd 79a5 .dw XT_SLASHSTRING
-
-0079be 7108 .dw XT_R_FETCH
-0079bf 785a .dw XT_CSKIP
-0079c0 70f6 .dw XT_R_FROM
-0079c1 7871 .dw XT_CSCAN
-
- ; adjust >IN
-0079c2 7565 .dw XT_2DUP
-0079c3 719d .dw XT_PLUS
-0079c4 799b .dw XT_SOURCE
-0079c5 70d9 .dw XT_DROP
-0079c6 7193 .dw XT_MINUS
-0079c7 757e .dw XT_TO_IN
-0079c8 7081 .dw XT_STORE
-0079c9 7020 .dw XT_EXIT
- .include "words/find-xt.asm"
-
- ; Tools
- ; search wordlists for an entry with the xt from c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_FINDXT:
-0079ca ff07 .dw $ff07
-0079cb 6966
-0079cc 646e
-0079cd 782d
-0079ce 0074 .db "find-xt",0
-0079cf 79ad .dw VE_HEAD
- .set VE_HEAD = VE_FINDXT
- XT_FINDXT:
-0079d0 7001 .dw DO_COLON
- PFA_FINDXT:
- .endif
-0079d1 703d .dw XT_DOLITERAL
-0079d2 79dc .dw XT_FINDXTA
-0079d3 703d .dw XT_DOLITERAL
-0079d4 004e .dw CFG_ORDERLISTLEN
-0079d5 040c .dw XT_MAPSTACK
-0079d6 711a .dw XT_ZEROEQUAL
-0079d7 7036 .dw XT_DOCONDBRANCH
-0079d8 79db DEST(PFA_FINDXT1)
-0079d9 756e .dw XT_2DROP
-0079da 7154 .dw XT_ZERO
- PFA_FINDXT1:
-0079db 7020 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_FINDXTA:
-0079dc 7001 .dw DO_COLON
- PFA_FINDXTA:
- .endif
-0079dd 70ff .dw XT_TO_R
-0079de 7565 .dw XT_2DUP
-0079df 70f6 .dw XT_R_FROM
-0079e0 7c25 .dw XT_SEARCH_WORDLIST
-0079e1 70b1 .dw XT_DUP
-0079e2 7036 .dw XT_DOCONDBRANCH
-0079e3 79e9 DEST(PFA_FINDXTA1)
-0079e4 70ff .dw XT_TO_R
-0079e5 70f0 .dw XT_NIP
-0079e6 70f0 .dw XT_NIP
-0079e7 70f6 .dw XT_R_FROM
-0079e8 714b .dw XT_TRUE
- PFA_FINDXTA1:
-0079e9 7020 .dw XT_EXIT
-
- .include "words/prompt-ok.asm"
-
- ; System
- ; send the READY prompt to the command line
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTOK:
- ; .dw $ff02
- ; .db "ok"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTOK
- XT_DEFAULT_PROMPTOK:
-0079ea 7001 .dw DO_COLON
- PFA_DEFAULT_PROMPTOK:
-0079eb 776d .dw XT_DOSLITERAL
-0079ec 0003 .dw 3
-0079ed 6f20
-0079ee 006b .db " ok",0
- .endif
-0079ef 77a0 .dw XT_ITYPE
-0079f0 7020 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTOK:
-0079f1 ff03 .dw $FF03
-0079f2 6f2e
-../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte
-0079f3 006b .db ".ok"
-0079f4 79ca .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTOK
- XT_PROMPTOK:
-0079f5 7c13 .dw PFA_DODEFER1
- PFA_PROMPTOK:
- .endif
-0079f6 001c .dw USER_P_OK
-0079f7 7bdc .dw XT_UDEFERFETCH
-0079f8 7be8 .dw XT_UDEFERSTORE
- .include "words/prompt-ready.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTRDY:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTRDY
- XT_DEFAULT_PROMPTREADY:
-0079f9 7001 .dw DO_COLON
- PFA_DEFAULT_PROMPTREADY:
-0079fa 776d .dw XT_DOSLITERAL
-0079fb 0002 .dw 2
-0079fc 203e .db "> "
- .endif
-0079fd 77d5 .dw XT_CR
-0079fe 77a0 .dw XT_ITYPE
-0079ff 7020 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTREADY:
-007a00 ff06 .dw $FF06
-007a01 722e
-007a02 6165
-007a03 7964 .db ".ready"
-007a04 79f1 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTREADY
- XT_PROMPTREADY:
-007a05 7c13 .dw PFA_DODEFER1
- PFA_PROMPTREADY:
- .endif
-007a06 0020 .dw USER_P_RDY
-007a07 7bdc .dw XT_UDEFERFETCH
-007a08 7be8 .dw XT_UDEFERSTORE
- .include "words/prompt-error.asm"
-
- ; System
- ; process the error prompt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ;VE_PROMPTERROR:
- ; .dw $ff04
- ; .db "p_er"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_PROMPTERROR
- XT_DEFAULT_PROMPTERROR:
-007a09 7001 .dw DO_COLON
- PFA_DEFAULT_PROMPTERROR:
-007a0a 776d .dw XT_DOSLITERAL
-007a0b 0004 .dw 4
-007a0c 3f20
-007a0d 203f .db " ?? "
- .endif
-007a0e 77a0 .dw XT_ITYPE
-007a0f 7551 .dw XT_BASE
-007a10 7079 .dw XT_FETCH
-007a11 70ff .dw XT_TO_R
-007a12 75dd .dw XT_DECIMAL
-007a13 7722 .dw XT_DOT
-007a14 757e .dw XT_TO_IN
-007a15 7079 .dw XT_FETCH
-007a16 7722 .dw XT_DOT
-007a17 70f6 .dw XT_R_FROM
-007a18 7551 .dw XT_BASE
-007a19 7081 .dw XT_STORE
-007a1a 7020 .dw XT_EXIT
-
- ; ------------------------
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_PROMPTERROR:
-007a1b ff06 .dw $FF06
-007a1c 652e
-007a1d 7272
-007a1e 726f .db ".error"
-007a1f 7a00 .dw VE_HEAD
- .set VE_HEAD = VE_PROMPTERROR
- XT_PROMPTERROR:
-007a20 7c13 .dw PFA_DODEFER1
- PFA_PROMPTERROR:
- .endif
-007a21 001e .dw USER_P_ERR
-007a22 7bdc .dw XT_UDEFERFETCH
-007a23 7be8 .dw XT_UDEFERSTORE
-
- .include "words/quit.asm"
-
- ; System
- ; main loop of amforth. accept - interpret in an endless loop
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QUIT:
-007a24 ff04 .dw $ff04
-007a25 7571
-007a26 7469 .db "quit"
-007a27 7a1b .dw VE_HEAD
- .set VE_HEAD = VE_QUIT
- XT_QUIT:
-007a28 7001 .dw DO_COLON
- .endif
- PFA_QUIT:
-007a29 02c1
-007a2a 02c8
-007a2b 7081 .dw XT_LP0,XT_LP,XT_STORE
-007a2c 7a89 .dw XT_SP0
-007a2d 7296 .dw XT_SP_STORE
-007a2e 7a96 .dw XT_RP0
-007a2f 7280 .dw XT_RP_STORE
-007a30 0356 .dw XT_LBRACKET
-
- PFA_QUIT2:
-007a31 754b .dw XT_STATE
-007a32 7079 .dw XT_FETCH
-007a33 711a .dw XT_ZEROEQUAL
-007a34 7036 .dw XT_DOCONDBRANCH
-007a35 7a37 DEST(PFA_QUIT4)
-007a36 7a05 .dw XT_PROMPTREADY
- PFA_QUIT4:
-007a37 78e2 .dw XT_REFILL
-007a38 7036 .dw XT_DOCONDBRANCH
-007a39 7a49 DEST(PFA_QUIT3)
-007a3a 703d .dw XT_DOLITERAL
-007a3b 7aaf .dw XT_INTERPRET
-007a3c 782b .dw XT_CATCH
-007a3d 70b9 .dw XT_QDUP
-007a3e 7036 .dw XT_DOCONDBRANCH
-007a3f 7a49 DEST(PFA_QUIT3)
-007a40 70b1 .dw XT_DUP
-007a41 703d .dw XT_DOLITERAL
-007a42 fffe .dw -2
-007a43 716e .dw XT_LESS
-007a44 7036 .dw XT_DOCONDBRANCH
-007a45 7a47 DEST(PFA_QUIT5)
-007a46 7a20 .dw XT_PROMPTERROR
- PFA_QUIT5:
-007a47 702f .dw XT_DOBRANCH
-007a48 7a29 DEST(PFA_QUIT)
- PFA_QUIT3:
-007a49 79f5 .dw XT_PROMPTOK
-007a4a 702f .dw XT_DOBRANCH
-007a4b 7a31 DEST(PFA_QUIT2)
- ; .dw XT_EXIT ; never reached
-
- .include "words/pause.asm"
-
- ; Multitasking
- ; Fetch pause vector and execute it. may make a context/task switch
- VE_PAUSE:
-007a4c ff05 .dw $ff05
-007a4d 6170
-007a4e 7375
-007a4f 0065 .db "pause",0
-007a50 7a24 .dw VE_HEAD
- .set VE_HEAD = VE_PAUSE
- XT_PAUSE:
-007a51 7c13 .dw PFA_DODEFER1
- PFA_PAUSE:
-007a52 013a .dw ram_pause
-007a53 7bc8 .dw XT_RDEFERFETCH
-007a54 7bd2 .dw XT_RDEFERSTORE
-
- .dseg
-00013a ram_pause: .byte 2
- .cseg
- .include "words/cold.asm"
-
- ; System
- ; start up amforth.
- VE_COLD:
-007a55 ff04 .dw $ff04
-007a56 6f63
-007a57 646c .db "cold"
-007a58 7a4c .dw VE_HEAD
- .set VE_HEAD = VE_COLD
- XT_COLD:
-007a59 7a5a .dw PFA_COLD
- PFA_COLD:
-007a5a b6a4 in_ mcu_boot, MCUSR
-007a5b 2422 clr zerol
-007a5c 2433 clr zeroh
-007a5d 24bb clr isrflag
-007a5e be24 out_ MCUSR, zerol
- ; clear RAM
-007a5f e0e0 ldi zl, low(ramstart)
-007a60 e0f1 ldi zh, high(ramstart)
- clearloop:
-007a61 9221 st Z+, zerol
-007a62 30e0 cpi zl, low(sram_size+ramstart)
-007a63 f7e9 brne clearloop
-007a64 31f1 cpi zh, high(sram_size+ramstart)
-007a65 f7d9 brne clearloop
- ; init first user data area
- ; allocate space for User Area
- .dseg
-00013c ram_user1: .byte SYSUSERSIZE + APPUSERSIZE
- .cseg
-007a66 e3ec ldi zl, low(ram_user1)
-007a67 e0f1 ldi zh, high(ram_user1)
-007a68 012f movw upl, zl
- ; init return stack pointer
-007a69 ef0f ldi temp0,low(rstackstart)
-007a6a bf0d out_ SPL,temp0
-007a6b 8304 std Z+4, temp0
-007a6c e110 ldi temp1,high(rstackstart)
-007a6d bf1e out_ SPH,temp1
-007a6e 8315 std Z+5, temp1
-
- ; init parameter stack pointer
-007a6f eacf ldi yl,low(stackstart)
-007a70 83c6 std Z+6, yl
-007a71 e1d0 ldi yh,high(stackstart)
-007a72 83d7 std Z+7, yh
-
- ; load Forth IP with starting word
-007a73 e7ac ldi XL, low(PFA_WARM)
-007a74 e7ba ldi XH, high(PFA_WARM)
- ; its a far jump...
-007a75 940c 7005 jmp_ DO_NEXT
- .include "words/warm.asm"
-
- ; System
- ; initialize amforth further. executes turnkey operation and go to quit
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_WARM:
-007a77 ff04 .dw $ff04
-007a78 6177
-007a79 6d72 .db "warm"
-007a7a 7a55 .dw VE_HEAD
- .set VE_HEAD = VE_WARM
- XT_WARM:
-007a7b 7001 .dw DO_COLON
- PFA_WARM:
- .endif
-007a7c 7d50 .dw XT_INIT_RAM
-007a7d 703d .dw XT_DOLITERAL
-007a7e 7b7f .dw XT_NOOP
-007a7f 703d .dw XT_DOLITERAL
-007a80 7a51 .dw XT_PAUSE
-007a81 7bf3 .dw XT_DEFERSTORE
-007a82 0356 .dw XT_LBRACKET
-007a83 75f8 .dw XT_TURNKEY
-007a84 7a28 .dw XT_QUIT ; never returns
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/sp0.asm"
-
- ; Stack
- ; start address of the data stack
- VE_SP0:
-007a85 ff03 .dw $ff03
-007a86 7073
-007a87 0030 .db "sp0",0
-007a88 7a77 .dw VE_HEAD
- .set VE_HEAD = VE_SP0
- XT_SP0:
-007a89 706f .dw PFA_DOVALUE1
- PFA_SP0:
-007a8a 0006 .dw USER_SP0
-007a8b 7bdc .dw XT_UDEFERFETCH
-007a8c 7be8 .dw XT_UDEFERSTORE
-
- ; ( -- addr)
- ; Stack
- ; address of user variable to store top-of-stack for inactive tasks
- VE_SP:
-007a8d ff02 .dw $ff02
-007a8e 7073 .db "sp"
-007a8f 7a85 .dw VE_HEAD
- .set VE_HEAD = VE_SP
- XT_SP:
-007a90 7058 .dw PFA_DOUSER
- PFA_SP:
-007a91 0008 .dw USER_SP
- .include "words/rp0.asm"
-
- ; Stack
- ; start address of return stack
- VE_RP0:
-007a92 ff03 .dw $ff03
-007a93 7072
-007a94 0030 .db "rp0",0
-007a95 7a8d .dw VE_HEAD
- .set VE_HEAD = VE_RP0
- XT_RP0:
-007a96 7001 .dw DO_COLON
- PFA_RP0:
-007a97 7a9a .dw XT_DORP0
-007a98 7079 .dw XT_FETCH
-007a99 7020 .dw XT_EXIT
-
- ; ( -- addr)
- ; Stack
- ; user variable of the address of the initial return stack
- ;VE_DORP0:
- ; .dw $ff05
- ; .db "(rp0)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DORP0
- XT_DORP0:
-007a9a 7058 .dw PFA_DOUSER
- PFA_DORP0:
-007a9b 0004 .dw USER_RP
- .include "words/depth.asm"
-
- ; Stack
- ; number of single-cell values contained in the data stack before n was placed on the stack.
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEPTH:
-007a9c ff05 .dw $ff05
-007a9d 6564
-007a9e 7470
-007a9f 0068 .db "depth",0
-007aa0 7a92 .dw VE_HEAD
- .set VE_HEAD = VE_DEPTH
- XT_DEPTH:
-007aa1 7001 .dw DO_COLON
- PFA_DEPTH:
- .endif
-007aa2 7a89 .dw XT_SP0
-007aa3 728d .dw XT_SP_FETCH
-007aa4 7193 .dw XT_MINUS
-007aa5 7204 .dw XT_2SLASH
-007aa6 7235 .dw XT_1MINUS
-007aa7 7020 .dw XT_EXIT
- .include "words/interpret.asm"
-
- ; System
- ; Interpret SOURCE word by word.
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_INTERPRET:
-007aa8 ff09 .dw $ff09
-007aa9 6e69
-007aaa 6574
-007aab 7072
-007aac 6572
-007aad 0074 .db "interpret",0
-007aae 7a9c .dw VE_HEAD
- .set VE_HEAD = VE_INTERPRET
- XT_INTERPRET:
-007aaf 7001 .dw DO_COLON
- .endif
- PFA_INTERPRET:
-007ab0 79b4 .dw XT_PARSENAME ; ( -- addr len )
-007ab1 70b1 .dw XT_DUP ; ( -- addr len flag)
-007ab2 7036 .dw XT_DOCONDBRANCH
-007ab3 7ac0 DEST(PFA_INTERPRET2)
-007ab4 7acc .dw XT_FORTHRECOGNIZER
-007ab5 7ad7 .dw XT_RECOGNIZE
-007ab6 754b .dw XT_STATE
-007ab7 7079 .dw XT_FETCH
-007ab8 7036 .dw XT_DOCONDBRANCH
-007ab9 7abb DEST(PFA_INTERPRET1)
-007aba 7bab .dw XT_ICELLPLUS ; we need the compile action
- PFA_INTERPRET1:
-007abb 73cb .dw XT_FETCHI
-007abc 702a .dw XT_EXECUTE
-007abd 7b57 .dw XT_QSTACK
-007abe 702f .dw XT_DOBRANCH
-007abf 7ab0 DEST(PFA_INTERPRET)
- PFA_INTERPRET2:
-007ac0 756e .dw XT_2DROP
-007ac1 7020 .dw XT_EXIT
- .include "words/forth-recognizer.asm"
-
- ; System Value
- ; address of the next free data space (RAM) cell
- VE_FORTHRECOGNIZER:
-007ac2 ff10 .dw $ff10
-007ac3 6f66
-007ac4 7472
-007ac5 2d68
-007ac6 6572
-007ac7 6f63
-007ac8 6e67
-007ac9 7a69
-007aca 7265 .db "forth-recognizer"
-007acb 7aa8 .dw VE_HEAD
- .set VE_HEAD = VE_FORTHRECOGNIZER
- XT_FORTHRECOGNIZER:
-007acc 706f .dw PFA_DOVALUE1
- PFA_FORTHRECOGNIZER:
-007acd 0042 .dw CFG_FORTHRECOGNIZER
-007ace 7bb4 .dw XT_EDEFERFETCH
-007acf 7bbe .dw XT_EDEFERSTORE
- .include "words/recognize.asm"
-
- ; System
- ; walk the recognizer stack
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RECOGNIZE:
-007ad0 ff09 .dw $ff09
-007ad1 6572
-007ad2 6f63
-007ad3 6e67
-007ad4 7a69
-007ad5 0065 .db "recognize",0
-007ad6 7ac2 .dw VE_HEAD
- .set VE_HEAD = VE_RECOGNIZE
- XT_RECOGNIZE:
-007ad7 7001 .dw DO_COLON
- PFA_RECOGNIZE:
- .endif
-007ad8 703d .dw XT_DOLITERAL
-007ad9 7ae2 .dw XT_RECOGNIZE_A
-007ada 70c4 .dw XT_SWAP
-007adb 040c .dw XT_MAPSTACK
-007adc 711a .dw XT_ZEROEQUAL
-007add 7036 .dw XT_DOCONDBRANCH
-007ade 7ae1 DEST(PFA_RECOGNIZE1)
-007adf 756e .dw XT_2DROP
-007ae0 7b4a .dw XT_DT_NULL
- PFA_RECOGNIZE1:
-007ae1 7020 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] )
- XT_RECOGNIZE_A:
-007ae2 7001 .dw DO_COLON
- PFA_RECOGNIZE_A:
- .endif
-007ae3 70e1 .dw XT_ROT ; -- len xt addr
-007ae4 70e1 .dw XT_ROT ; -- xt addr len
-007ae5 7565 .dw XT_2DUP
-007ae6 731e .dw XT_2TO_R
-007ae7 70e1 .dw XT_ROT ; -- addr len xt
-007ae8 702a .dw XT_EXECUTE ; -- i*x dt:* | dt:null
-007ae9 732d .dw XT_2R_FROM
-007aea 70e1 .dw XT_ROT
-007aeb 70b1 .dw XT_DUP
-007aec 7b4a .dw XT_DT_NULL
-007aed 7d7f .dw XT_EQUAL
-007aee 7036 .dw XT_DOCONDBRANCH
-007aef 7af3 DEST(PFA_RECOGNIZE_A1)
-007af0 70d9 .dw XT_DROP
-007af1 7154 .dw XT_ZERO
-007af2 7020 .dw XT_EXIT
- PFA_RECOGNIZE_A1:
-007af3 70f0 .dw XT_NIP
-007af4 70f0 .dw XT_NIP
-007af5 714b .dw XT_TRUE
-007af6 7020 .dw XT_EXIT
-
- ; : recognize ( addr len stack-id -- i*x dt:* | dt:null )
- ; [: ( addr len -- addr len 0 | i*x dt:* -1 )
- ; rot rot 2dup 2>r rot execute 2r> rot
- ; dup dt:null = ( -- addr len dt:* f )
- ; if drop 0 else nip nip -1 then
- ; ;]
- ; map-stack ( -- i*x addr len dt:* f )
- ; 0= if \ a recognizer did the job, remove addr/len
- ; 2drop dt:null
- ; then ;
- ;
- .include "words/rec-intnum.asm"
-
- ; Interpreter
- ; Method table for single cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NUM:
-007af7 ff06 .dw $ff06
-007af8 7464
-007af9 6e3a
-007afa 6d75 .db "dt:num"
-007afb 7ad0 .dw VE_HEAD
- .set VE_HEAD = VE_DT_NUM
- XT_DT_NUM:
-007afc 7052 .dw PFA_DOCONSTANT
- PFA_DT_NUM:
- .endif
-007afd 7b7f .dw XT_NOOP ; interpret
-007afe 01e2 .dw XT_LITERAL ; compile
-007aff 01e2 .dw XT_LITERAL ; postpone
-
- ; ( -- addr )
- ; Interpreter
- ; Method table for double cell integers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_DNUM:
-007b00 ff07 .dw $ff07
-007b01 7464
-007b02 643a
-007b03 756e
-007b04 006d .db "dt:dnum",0
-007b05 7af7 .dw VE_HEAD
- .set VE_HEAD = VE_DT_DNUM
- XT_DT_DNUM:
-007b06 7052 .dw PFA_DOCONSTANT
- PFA_DT_DNUM:
- .endif
-007b07 7b7f .dw XT_NOOP ; interpret
-007b08 7d77 .dw XT_2LITERAL ; compile
-007b09 7d77 .dw XT_2LITERAL ; postpone
-
- ; ( addr len -- f )
- ; Interpreter
- ; recognizer for integer numbers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- VE_REC_NUM:
-007b0a ff07 .dw $ff07
-007b0b 6572
-007b0c 3a63
-007b0d 756e
-007b0e 006d .db "rec:num",0
-007b0f 7b00 .dw VE_HEAD
- .set VE_HEAD = VE_REC_NUM
- XT_REC_NUM:
-007b10 7001 .dw DO_COLON
- PFA_REC_NUM:
- .endif
- ; try converting to a number
-007b11 78f4 .dw XT_NUMBER
-007b12 7036 .dw XT_DOCONDBRANCH
-007b13 7b1c DEST(PFA_REC_NONUMBER)
-007b14 7d86 .dw XT_ONE
-007b15 7d7f .dw XT_EQUAL
-007b16 7036 .dw XT_DOCONDBRANCH
-007b17 7b1a DEST(PFA_REC_INTNUM2)
-007b18 7afc .dw XT_DT_NUM
-007b19 7020 .dw XT_EXIT
- PFA_REC_INTNUM2:
-007b1a 7b06 .dw XT_DT_DNUM
-007b1b 7020 .dw XT_EXIT
- PFA_REC_NONUMBER:
-007b1c 7b4a .dw XT_DT_NULL
-007b1d 7020 .dw XT_EXIT
- .include "words/rec-find.asm"
-
- ; Interpreter
- ; search for a word
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- VE_REC_FIND:
-007b1e ff08 .dw $ff08
-007b1f 6572
-007b20 3a63
-007b21 6966
-007b22 646e .db "rec:find"
-007b23 7b0a .dw VE_HEAD
- .set VE_HEAD = VE_REC_FIND
- XT_REC_FIND:
-007b24 7001 .dw DO_COLON
- PFA_REC_FIND:
- .endif
-007b25 79d0 .DW XT_FINDXT
-007b26 70b1 .dw XT_DUP
-007b27 711a .dw XT_ZEROEQUAL
-007b28 7036 .dw XT_DOCONDBRANCH
-007b29 7b2d DEST(PFA_REC_WORD_FOUND)
-007b2a 70d9 .dw XT_DROP
-007b2b 7b4a .dw XT_DT_NULL
-007b2c 7020 .dw XT_EXIT
- PFA_REC_WORD_FOUND:
-007b2d 7b34 .dw XT_DT_XT
-
-007b2e 7020 .dw XT_EXIT
-
- ; ( -- addr )
- ; Interpreter
- ; actions to handle execution tokens and their flags
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_XT:
-007b2f ff05 .dw $ff05
-007b30 7464
-007b31 783a
-007b32 0074 .db "dt:xt",0
-007b33 7b1e .dw VE_HEAD
- .set VE_HEAD = VE_DT_XT
- XT_DT_XT:
-007b34 7052 .dw PFA_DOCONSTANT
- PFA_DT_XT:
- .endif
-007b35 7b38 .dw XT_R_WORD_INTERPRET
-007b36 7b3c .dw XT_R_WORD_COMPILE
-007b37 7d77 .dw XT_2LITERAL
-
- ; ( XT flags -- )
- ; Interpreter
- ; interpret method for WORD recognizer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_R_WORD_INTERPRET:
-007b38 7001 .dw DO_COLON
- PFA_R_WORD_INTERPRET:
- .endif
-007b39 70d9 .dw XT_DROP ; the flags are in the way
-007b3a 702a .dw XT_EXECUTE
-007b3b 7020 .dw XT_EXIT
-
- ; ( XT flags -- )
- ; Interpreter
- ; Compile method for WORD recognizer
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- XT_R_WORD_COMPILE:
-007b3c 7001 .dw DO_COLON
- PFA_R_WORD_COMPILE:
- .endif
-007b3d 7121 .dw XT_ZEROLESS
-007b3e 7036 .dw XT_DOCONDBRANCH
-007b3f 7b42 DEST(PFA_R_WORD_COMPILE1)
-007b40 01cc .dw XT_COMMA
-007b41 7020 .dw XT_EXIT
- PFA_R_WORD_COMPILE1:
-007b42 702a .dw XT_EXECUTE
-007b43 7020 .dw XT_EXIT
- .include "words/dt-null.asm"
-
- ; Interpreter
- ; there is no parser for this recognizer, this is the default and failsafe part
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DT_NULL:
-007b44 ff07 .dw $ff07
-007b45 7464
-007b46 6e3a
-007b47 6c75
-../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte
-007b48 006c .db "dt:null"
-007b49 7b2f .dw VE_HEAD
- .set VE_HEAD = VE_DT_NULL
- XT_DT_NULL:
-007b4a 7052 .dw PFA_DOCONSTANT
- PFA_DT_NULL:
- .endif
-007b4b 7b4e .dw XT_FAIL ; interpret
-007b4c 7b4e .dw XT_FAIL ; compile
-007b4d 7b4e .dw XT_FAIL ; postpone
-
- ; ( addr len -- )
- ; Interpreter
- ; default failure action: throw exception -13.
- .if cpu_msp430==1
- .endif
- .if cpu_avr8==1
- ;VE_FAIL:
- ; .dw $ff04
- ; .db "fail"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_FAIL
- XT_FAIL:
-007b4e 7001 .dw DO_COLON
- PFA_FAIL:
- .endif
-007b4f 703d .dw XT_DOLITERAL
-007b50 fff3 .dw -13
-007b51 7841 .dw XT_THROW
-
- .include "words/q-stack.asm"
-
- ; Tools
- ; check data stack depth and exit to quit if underrun
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_QSTACK:
-007b52 ff06 .dw $ff06
-007b53 733f
-007b54 6174
-007b55 6b63 .db "?stack"
-007b56 7b44 .dw VE_HEAD
- .set VE_HEAD = VE_QSTACK
- XT_QSTACK:
-007b57 7001 .dw DO_COLON
- PFA_QSTACK:
- .endif
-007b58 7aa1 .dw XT_DEPTH
-007b59 7121 .dw XT_ZEROLESS
-007b5a 7036 .dw XT_DOCONDBRANCH
-007b5b 7b5f DEST(PFA_QSTACK1)
-007b5c 703d .dw XT_DOLITERAL
-007b5d fffc .dw -4
-007b5e 7841 .dw XT_THROW
- PFA_QSTACK1:
-007b5f 7020 .dw XT_EXIT
- .include "words/ver.asm"
-
- ; Tools
- ; print the version string
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DOT_VER:
-007b60 ff03 .dw $ff03
-007b61 6576
-../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte
-007b62 0072 .db "ver"
-007b63 7b52 .dw VE_HEAD
- .set VE_HEAD = VE_DOT_VER
- XT_DOT_VER:
-007b64 7001 .dw DO_COLON
- PFA_DOT_VER:
- .endif
-007b65 750d .dw XT_ENV_FORTHNAME
-007b66 77a0 .dw XT_ITYPE
-007b67 77e2 .dw XT_SPACE
-007b68 7551 .dw XT_BASE
-007b69 7079 .dw XT_FETCH
-
-007b6a 751b .dw XT_ENV_FORTHVERSION
-007b6b 75dd .dw XT_DECIMAL
-007b6c 7d67 .dw XT_S2D
-007b6d 76be .dw XT_L_SHARP
-007b6e 76c6 .dw XT_SHARP
-007b6f 703d .dw XT_DOLITERAL
-007b70 002e .dw '.'
-007b71 76af .dw XT_HOLD
-007b72 76dc .dw XT_SHARP_S
-007b73 76e7 .dw XT_SHARP_G
-007b74 77fb .dw XT_TYPE
-007b75 7551 .dw XT_BASE
-007b76 7081 .dw XT_STORE
-007b77 77e2 .dw XT_SPACE
-007b78 7523 .dw XT_ENV_CPU
-007b79 77a0 .dw XT_ITYPE
-
-007b7a 7020 .dw XT_EXIT
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/noop.asm"
-
- ; Tools
- ; do nothing
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NOOP:
-007b7b ff04 .dw $ff04
-007b7c 6f6e
-007b7d 706f .db "noop"
-007b7e 7b60 .dw VE_HEAD
- .set VE_HEAD = VE_NOOP
- XT_NOOP:
-007b7f 7001 .dw DO_COLON
- PFA_NOOP:
- .endif
-007b80 7020 .DW XT_EXIT
- .include "words/unused.asm"
-
- ; Tools
- ; Amount of available RAM (incl. PAD)
- VE_UNUSED:
-007b81 ff06 .dw $ff06
-007b82 6e75
-007b83 7375
-007b84 6465 .db "unused"
-007b85 7b7b .dw VE_HEAD
- .set VE_HEAD = VE_UNUSED
- XT_UNUSED:
-007b86 7001 .dw DO_COLON
- PFA_UNUSED:
-007b87 728d .dw XT_SP_FETCH
-007b88 75bf .dw XT_HERE
-007b89 7193 .dw XT_MINUS
-007b8a 7020 .dw XT_EXIT
-
- .include "words/to.asm"
-
- ; Tools
- ; store the TOS to the named value (eeprom cell)
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TO:
-007b8b 0002 .dw $0002
-007b8c 6f74 .db "to"
-007b8d 7b81 .dw VE_HEAD
- .set VE_HEAD = VE_TO
- XT_TO:
-007b8e 7001 .dw DO_COLON
- PFA_TO:
- .endif
-007b8f 780a .dw XT_TICK
-007b90 7d70 .dw XT_TO_BODY
-007b91 754b .dw XT_STATE
-007b92 7079 .dw XT_FETCH
-007b93 7036 .dw XT_DOCONDBRANCH
-007b94 7b9f DEST(PFA_TO1)
-007b95 01c1 .dw XT_COMPILE
-007b96 7b99 .dw XT_DOTO
-007b97 01cc .dw XT_COMMA
-007b98 7020 .dw XT_EXIT
-
- ; ( n -- ) (R: IP -- IP+1)
- ; Tools
- ; runtime portion of to
- ;VE_DOTO:
- ; .dw $ff04
- ; .db "(to)"
- ; .dw VE_HEAD
- ; .set VE_HEAD = VE_DOTO
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
-
- XT_DOTO:
-007b99 7001 .dw DO_COLON
- PFA_DOTO:
- .endif
-007b9a 70f6 .dw XT_R_FROM
-007b9b 70b1 .dw XT_DUP
-007b9c 7bab .dw XT_ICELLPLUS
-007b9d 70ff .dw XT_TO_R
-007b9e 73cb .dw XT_FETCHI
- PFA_TO1:
-007b9f 70b1 .dw XT_DUP
-007ba0 7bab .dw XT_ICELLPLUS
-007ba1 7bab .dw XT_ICELLPLUS
-007ba2 73cb .dw XT_FETCHI
-007ba3 702a .dw XT_EXECUTE
-007ba4 7020 .dw XT_EXIT
- .include "words/i-cellplus.asm"
-
- ; Compiler
- ; skip to the next cell in flash
- VE_ICELLPLUS:
-007ba5 ff07 .dw $FF07
-007ba6 2d69
-007ba7 6563
-007ba8 6c6c
-007ba9 002b .db "i-cell+",0
-007baa 7b8b .dw VE_HEAD
- .set VE_HEAD = VE_ICELLPLUS
- XT_ICELLPLUS:
-007bab 7001 .dw DO_COLON
- PFA_ICELLPLUS:
-007bac 722f .dw XT_1PLUS
-007bad 7020 .dw XT_EXIT
-
- .include "words/edefer-fetch.asm"
-
- ; System
- ; does the real defer@ for eeprom defers
- VE_EDEFERFETCH:
-007bae ff07 .dw $ff07
-007baf 6445
-007bb0 6665
-007bb1 7265
-007bb2 0040 .db "Edefer@",0
-007bb3 7ba5 .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERFETCH
- XT_EDEFERFETCH:
-007bb4 7001 .dw DO_COLON
- PFA_EDEFERFETCH:
-007bb5 73cb .dw XT_FETCHI
-007bb6 735f .dw XT_FETCHE
-007bb7 7020 .dw XT_EXIT
- .include "words/edefer-store.asm"
-
- ; System
- ; does the real defer! for eeprom defers
- VE_EDEFERSTORE:
-007bb8 ff07 .dw $ff07
-007bb9 6445
-007bba 6665
-007bbb 7265
-007bbc 0021 .db "Edefer!",0
-007bbd 7bae .dw VE_HEAD
- .set VE_HEAD = VE_EDEFERSTORE
- XT_EDEFERSTORE:
-007bbe 7001 .dw DO_COLON
- PFA_EDEFERSTORE:
-007bbf 73cb .dw XT_FETCHI
-007bc0 733b .dw XT_STOREE
-007bc1 7020 .dw XT_EXIT
- .include "words/rdefer-fetch.asm"
-
- ; System
- ; The defer@ for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERFETCH:
-007bc2 ff07 .dw $ff07
-007bc3 6452
-007bc4 6665
-007bc5 7265
-007bc6 0040 .db "Rdefer@",0
-007bc7 7bb8 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERFETCH
- XT_RDEFERFETCH:
-007bc8 7001 .dw DO_COLON
- PFA_RDEFERFETCH:
- .endif
-007bc9 73cb .dw XT_FETCHI
-007bca 7079 .dw XT_FETCH
-007bcb 7020 .dw XT_EXIT
- .include "words/rdefer-store.asm"
-
- ; System
- ; The defer! for ram defers
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_RDEFERSTORE:
-007bcc ff07 .dw $ff07
-007bcd 6452
-007bce 6665
-007bcf 7265
-007bd0 0021 .db "Rdefer!",0
-007bd1 7bc2 .dw VE_HEAD
- .set VE_HEAD = VE_RDEFERSTORE
- XT_RDEFERSTORE:
-007bd2 7001 .dw DO_COLON
- PFA_RDEFERSTORE:
- .endif
-007bd3 73cb .dw XT_FETCHI
-007bd4 7081 .dw XT_STORE
-007bd5 7020 .dw XT_EXIT
-
- .include "words/udefer-fetch.asm"
-
- ; System
- ; does the real defer@ for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERFETCH:
-007bd6 ff07 .dw $ff07
-007bd7 6455
-007bd8 6665
-007bd9 7265
-007bda 0040 .db "Udefer@",0
-007bdb 7bcc .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERFETCH
- XT_UDEFERFETCH:
-007bdc 7001 .dw DO_COLON
- PFA_UDEFERFETCH:
- .endif
-007bdd 73cb .dw XT_FETCHI
-007bde 7302 .dw XT_UP_FETCH
-007bdf 719d .dw XT_PLUS
-007be0 7079 .dw XT_FETCH
-007be1 7020 .dw XT_EXIT
- .include "words/udefer-store.asm"
-
- ; System
- ; does the real defer! for user based defers
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_UDEFERSTORE:
-007be2 ff07 .dw $ff07
-007be3 6455
-007be4 6665
-007be5 7265
-007be6 0021 .db "Udefer!",0
-007be7 7bd6 .dw VE_HEAD
- .set VE_HEAD = VE_UDEFERSTORE
- XT_UDEFERSTORE:
-007be8 7001 .dw DO_COLON
- PFA_UDEFERSTORE:
- .endif
-
-007be9 73cb .dw XT_FETCHI
-007bea 7302 .dw XT_UP_FETCH
-007beb 719d .dw XT_PLUS
-007bec 7081 .dw XT_STORE
-007bed 7020 .dw XT_EXIT
-
- .include "words/defer-store.asm"
-
- ; System
- ; stores xt1 as the xt to be executed when xt2 is called
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERSTORE:
-007bee ff06 .dw $ff06
-007bef 6564
-007bf0 6566
-007bf1 2172 .db "defer!"
-007bf2 7be2 .dw VE_HEAD
- .set VE_HEAD = VE_DEFERSTORE
- XT_DEFERSTORE:
-007bf3 7001 .dw DO_COLON
- PFA_DEFERSTORE:
- .endif
-007bf4 7d70 .dw XT_TO_BODY
-007bf5 70b1 .dw XT_DUP
-007bf6 7bab .dw XT_ICELLPLUS
-007bf7 7bab .dw XT_ICELLPLUS
-007bf8 73cb .dw XT_FETCHI
-007bf9 702a .dw XT_EXECUTE
-007bfa 7020 .dw XT_EXIT
-
- .include "words/defer-fetch.asm"
-
- ; System
- ; returns the XT associated with the given XT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_DEFERFETCH:
-007bfb ff06 .dw $ff06
-007bfc 6564
-007bfd 6566
-007bfe 4072 .db "defer@"
-007bff 7bee .dw VE_HEAD
- .set VE_HEAD = VE_DEFERFETCH
- XT_DEFERFETCH:
-007c00 7001 .dw DO_COLON
- PFA_DEFERFETCH:
- .endif
-007c01 7d70 .dw XT_TO_BODY
-007c02 70b1 .dw XT_DUP
-007c03 7bab .dw XT_ICELLPLUS
-007c04 73cb .dw XT_FETCHI
-007c05 702a .dw XT_EXECUTE
-007c06 7020 .dw XT_EXIT
- .include "words/do-defer.asm"
-
- ; System
- ; runtime of defer
- VE_DODEFER:
-007c07 ff07 .dw $ff07
-007c08 6428
-007c09 6665
-007c0a 7265
-007c0b 0029 .db "(defer)", 0
-007c0c 7bfb .dw VE_HEAD
- .set VE_HEAD = VE_DODEFER
- XT_DODEFER:
-007c0d 7001 .dw DO_COLON
- PFA_DODEFER:
-007c0e 019e .dw XT_DOCREATE
-007c0f 02fe .dw XT_REVEAL
-007c10 01c1 .dw XT_COMPILE
-007c11 7c13 .dw PFA_DODEFER1
-007c12 7020 .dw XT_EXIT
- PFA_DODEFER1:
-007c13 940e 0317 call_ DO_DODOES
-007c15 70b1 .dw XT_DUP
-007c16 7bab .dw XT_ICELLPLUS
-007c17 73cb .dw XT_FETCHI
-007c18 702a .dw XT_EXECUTE
-007c19 702a .dw XT_EXECUTE
-007c1a 7020 .dw XT_EXIT
-
- ; : (defer) <builds does> dup i-cell+ @i execute execute ;
-
-
- .include "words/search-wordlist.asm"
-
- ; Search Order
- ; searches the word list wid for the word at c-addr/len
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SEARCH_WORDLIST:
-007c1b ff0f .dw $ff0f
-007c1c 6573
-007c1d 7261
-007c1e 6863
-007c1f 772d
-007c20 726f
-007c21 6c64
-007c22 7369
-007c23 0074 .db "search-wordlist",0
-007c24 7c07 .dw VE_HEAD
- .set VE_HEAD = VE_SEARCH_WORDLIST
- XT_SEARCH_WORDLIST:
-007c25 7001 .dw DO_COLON
- PFA_SEARCH_WORDLIST:
- .endif
-007c26 70ff .dw XT_TO_R
-007c27 7154 .dw XT_ZERO
-007c28 703d .dw XT_DOLITERAL
-007c29 7c3a .dw XT_ISWORD
-007c2a 70f6 .dw XT_R_FROM
-007c2b 7c57 .dw XT_TRAVERSEWORDLIST
-007c2c 70b1 .dw XT_DUP
-007c2d 711a .dw XT_ZEROEQUAL
-007c2e 7036 .dw XT_DOCONDBRANCH
-007c2f 7c34 DEST(PFA_SEARCH_WORDLIST1)
-007c30 756e .dw XT_2DROP
-007c31 70d9 .dw XT_DROP
-007c32 7154 .dw XT_ZERO
-007c33 7020 .dw XT_EXIT
- PFA_SEARCH_WORDLIST1:
- ; ... get the XT ...
-007c34 70b1 .dw XT_DUP
-007c35 7c7e .dw XT_NFA2CFA
- ; .. and get the header flag
-007c36 70c4 .dw XT_SWAP
-007c37 0184 .dw XT_NAME2FLAGS
-007c38 0172 .dw XT_IMMEDIATEQ
-007c39 7020 .dw XT_EXIT
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- XT_ISWORD:
-007c3a 7001 .dw DO_COLON
- PFA_ISWORD:
- .endif
- ; ( c-addr len 0 nt -- c-addr len 0 true| nt false )
-007c3b 70ff .dw XT_TO_R
-007c3c 70d9 .dw XT_DROP
-007c3d 7565 .dw XT_2DUP
-007c3e 7108 .dw XT_R_FETCH ; -- addr len addr len nt
-007c3f 7c72 .dw XT_NAME2STRING
-007c40 7c88 .dw XT_ICOMPARE ; (-- addr len f )
-007c41 7036 .dw XT_DOCONDBRANCH
-007c42 7c48 DEST(PFA_ISWORD3)
- ; not now
-007c43 70f6 .dw XT_R_FROM
-007c44 70d9 .dw XT_DROP
-007c45 7154 .dw XT_ZERO
-007c46 714b .dw XT_TRUE ; maybe next word
-007c47 7020 .dw XT_EXIT
- PFA_ISWORD3:
- ; we found the word, now clean up iteration data ...
-007c48 756e .dw XT_2DROP
-007c49 70f6 .dw XT_R_FROM
-007c4a 7154 .dw XT_ZERO ; finish traverse-wordlist
-007c4b 7020 .dw XT_EXIT
- .include "words/traverse-wordlist.asm"
-
- ; Tools Ext (2012)
- ; call the xt for every member of the wordlist wid until xt returns false
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TRAVERSEWORDLIST:
-007c4c ff11 .dw $ff11
-007c4d 7274
-007c4e 7661
-007c4f 7265
-007c50 6573
-007c51 772d
-007c52 726f
-007c53 6c64
-007c54 7369
-007c55 0074 .db "traverse-wordlist",0
-007c56 7c1b .dw VE_HEAD
- .set VE_HEAD = VE_TRAVERSEWORDLIST
- XT_TRAVERSEWORDLIST:
-007c57 7001 .dw DO_COLON
- PFA_TRAVERSEWORDLIST:
-
- .endif
-007c58 735f .dw XT_FETCHE
- PFA_TRAVERSEWORDLIST1:
-007c59 70b1 .dw XT_DUP ; ( -- xt nt nt )
-007c5a 7036 .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string
-007c5b 7c68 DEST(PFA_TRAVERSEWORDLIST2)
-007c5c 7565 .dw XT_2DUP
-007c5d 731e .dw XT_2TO_R
-007c5e 70c4 .dw XT_SWAP
-007c5f 702a .dw XT_EXECUTE
-007c60 732d .dw XT_2R_FROM
-007c61 70e1 .dw XT_ROT
-007c62 7036 .dw XT_DOCONDBRANCH
-007c63 7c68 DEST(PFA_TRAVERSEWORDLIST2)
-007c64 047b .dw XT_NFA2LFA
-007c65 73cb .dw XT_FETCHI
-007c66 702f .dw XT_DOBRANCH ; ( -- addr )
-007c67 7c59 DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr )
- PFA_TRAVERSEWORDLIST2:
-007c68 756e .dw XT_2DROP
-007c69 7020 .dw XT_EXIT
-
- ; : traverse-wordlist ( i*x xt wid -- i*x' )
- ; begin @ dup
- ; while
- ; 2dup 2>r
- ; swap execute ( i*x nt -- i*x' f )
- ; 2r> rot
- ; while
- ; nfa>lfa @i
- ; repeat then 2drop ;
- .include "words/name2string.asm"
-
- ; Tools Ext (2012)
- ; get a (flash) string from a name token nt
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NAME2STRING:
-007c6a ff0b .dw $ff0b
-007c6b 616e
-007c6c 656d
-007c6d 733e
-007c6e 7274
-007c6f 6e69
-007c70 0067 .db "name>string",0
-007c71 7c4c .dw VE_HEAD
- .set VE_HEAD = VE_NAME2STRING
- XT_NAME2STRING:
-007c72 7001 .dw DO_COLON
- PFA_NAME2STRING:
-
- .endif
-007c73 77cc .dw XT_ICOUNT ; ( -- addr n )
-007c74 703d .dw XT_DOLITERAL
-007c75 00ff .dw 255
-007c76 7213 .dw XT_AND ; mask immediate bit
-007c77 7020 .dw XT_EXIT
- .include "words/nfa2cfa.asm"
-
- ; Tools
- ; get the XT from a name token
- VE_NFA2CFA:
-007c78 ff07 .dw $ff07
-007c79 666e
-007c7a 3e61
-007c7b 6663
-../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte
-007c7c 0061 .db "nfa>cfa"
-007c7d 7c6a .dw VE_HEAD
- .set VE_HEAD = VE_NFA2CFA
- XT_NFA2CFA:
-007c7e 7001 .dw DO_COLON
- PFA_NFA2CFA:
-007c7f 047b .dw XT_NFA2LFA ; skip to link field
-007c80 722f .dw XT_1PLUS ; next is the execution token
-007c81 7020 .dw XT_EXIT
- .include "words/icompare.asm"
-
- ; Tools
- ; compares string in RAM with string in flash. f is zero if equal like COMPARE
- VE_ICOMPARE:
-007c82 ff08 .dw $ff08
-007c83 6369
-007c84 6d6f
-007c85 6170
-007c86 6572 .db "icompare"
-007c87 7c78 .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
- XT_ICOMPARE:
-007c88 7001 .dw DO_COLON
- PFA_ICOMPARE:
-007c89 70ff .dw XT_TO_R ; ( -- r-addr r-len f-addr)
-007c8a 70cf .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
-007c8b 70f6 .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
-007c8c 7113 .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
-007c8d 7036 .dw XT_DOCONDBRANCH
-007c8e 7c93 .dw PFA_ICOMPARE_SAMELEN
-007c8f 756e .dw XT_2DROP
-007c90 70d9 .dw XT_DROP
-007c91 714b .dw XT_TRUE
-007c92 7020 .dw XT_EXIT
- PFA_ICOMPARE_SAMELEN:
-007c93 70c4 .dw XT_SWAP ; ( -- r-addr f-addr len )
-007c94 7154 .dw XT_ZERO
-007c95 028b .dw XT_QDOCHECK
-007c96 7036 .dw XT_DOCONDBRANCH
-007c97 7cb6 .dw PFA_ICOMPARE_DONE
-007c98 729b .dw XT_DODO
- PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
-007c99 70cf .dw XT_OVER
-007c9a 7079 .dw XT_FETCH
- .if WANT_IGNORECASE == 1
- .endif
-007c9b 70cf .dw XT_OVER
-007c9c 73cb .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
- .if WANT_IGNORECASE == 1
- .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
-007c9d 70b1 .dw XT_DUP
- ;.dw XT_BYTESWAP
-007c9e 703d .dw XT_DOLITERAL
-007c9f 0100 .dw $100
-007ca0 715c .dw XT_ULESS
-007ca1 7036 .dw XT_DOCONDBRANCH
-007ca2 7ca7 .dw PFA_ICOMPARE_LASTCELL
-007ca3 70c4 .dw XT_SWAP
-007ca4 703d .dw XT_DOLITERAL
-007ca5 00ff .dw $00FF
-007ca6 7213 .dw XT_AND ; the final swap can be omitted
- PFA_ICOMPARE_LASTCELL:
-007ca7 7113 .dw XT_NOTEQUAL
-007ca8 7036 .dw XT_DOCONDBRANCH
-007ca9 7cae .dw PFA_ICOMPARE_NEXTLOOP
-007caa 756e .dw XT_2DROP
-007cab 714b .dw XT_TRUE
-007cac 72d4 .dw XT_UNLOOP
-007cad 7020 .dw XT_EXIT
- PFA_ICOMPARE_NEXTLOOP:
-007cae 722f .dw XT_1PLUS
-007caf 70c4 .dw XT_SWAP
-007cb0 755e .dw XT_CELLPLUS
-007cb1 70c4 .dw XT_SWAP
-007cb2 703d .dw XT_DOLITERAL
-007cb3 0002 .dw 2
-007cb4 72ba .dw XT_DOPLUSLOOP
-007cb5 7c99 .dw PFA_ICOMPARE_LOOP
- PFA_ICOMPARE_DONE:
-007cb6 756e .dw XT_2DROP
-007cb7 7154 .dw XT_ZERO
-007cb8 7020 .dw XT_EXIT
-
- .if WANT_IGNORECASE == 1
- .endif
-
- .include "words/star.asm"
-
- ; Arithmetics
- ; multiply routine
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_STAR:
-007cb9 ff01 .dw $ff01
-007cba 002a .db "*",0
-007cbb 7c82 .dw VE_HEAD
- .set VE_HEAD = VE_STAR
- XT_STAR:
-007cbc 7001 .dw DO_COLON
- PFA_STAR:
- .endif
-
-007cbd 71a6 .dw XT_MSTAR
-007cbe 70d9 .dw XT_DROP
-007cbf 7020 .dw XT_EXIT
- .include "words/j.asm"
-
- ; Compiler
- ; loop counter of outer loop
- VE_J:
-007cc0 ff01 .dw $FF01
-007cc1 006a .db "j",0
-007cc2 7cb9 .dw VE_HEAD
- .set VE_HEAD = VE_J
- XT_J:
-007cc3 7001 .dw DO_COLON
- PFA_J:
-007cc4 7276 .dw XT_RP_FETCH
-007cc5 703d .dw XT_DOLITERAL
-007cc6 0007 .dw 7
-007cc7 719d .dw XT_PLUS
-007cc8 7079 .dw XT_FETCH
-007cc9 7276 .dw XT_RP_FETCH
-007cca 703d .dw XT_DOLITERAL
-007ccb 0009 .dw 9
-007ccc 719d .dw XT_PLUS
-007ccd 7079 .dw XT_FETCH
-007cce 719d .dw XT_PLUS
-007ccf 7020 .dw XT_EXIT
-
- .include "words/dabs.asm"
-
- ; Arithmetics
- ; double cell absolute value
- VE_DABS:
-007cd0 ff04 .dw $ff04
-007cd1 6164
-007cd2 7362 .db "dabs"
-007cd3 7cc0 .dw VE_HEAD
- .set VE_HEAD = VE_DABS
- XT_DABS:
-007cd4 7001 .dw DO_COLON
- PFA_DABS:
-007cd5 70b1 .dw XT_DUP
-007cd6 7121 .dw XT_ZEROLESS
-007cd7 7036 .dw XT_DOCONDBRANCH
-007cd8 7cda .dw PFA_DABS1
-007cd9 7ce1 .dw XT_DNEGATE
- PFA_DABS1:
-007cda 7020 .dw XT_EXIT
- ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ;
- .include "words/dnegate.asm"
-
- ; Arithmetics
- ; double cell negation
- VE_DNEGATE:
-007cdb ff07 .dw $ff07
-007cdc 6e64
-007cdd 6765
-007cde 7461
-007cdf 0065 .db "dnegate",0
-007ce0 7cd0 .dw VE_HEAD
- .set VE_HEAD = VE_DNEGATE
- XT_DNEGATE:
-007ce1 7001 .dw DO_COLON
- PFA_DNEGATE:
-007ce2 743b .dw XT_DINVERT
-007ce3 7d86 .dw XT_ONE
-007ce4 7154 .dw XT_ZERO
-007ce5 7415 .dw XT_DPLUS
-007ce6 7020 .dw XT_EXIT
- ; : dnegate ( ud1 -- ud2 ) dinvert 1. d+ ;
- .include "words/cmove.asm"
-
- ; Memory
- ; copy data in RAM, from lower to higher addresses
- VE_CMOVE:
-007ce7 ff05 .dw $ff05
-007ce8 6d63
-007ce9 766f
-007cea 0065 .db "cmove",0
-007ceb 7cdb .dw VE_HEAD
- .set VE_HEAD = VE_CMOVE
- XT_CMOVE:
-007cec 7ced .dw PFA_CMOVE
- PFA_CMOVE:
-007ced 93bf push xh
-007cee 93af push xl
-007cef 91e9 ld zl, Y+
-007cf0 91f9 ld zh, Y+ ; addr-to
-007cf1 91a9 ld xl, Y+
-007cf2 91b9 ld xh, Y+ ; addr-from
-007cf3 2f09 mov temp0, tosh
-007cf4 2b08 or temp0, tosl
-007cf5 f021 brbs 1, PFA_CMOVE1
- PFA_CMOVE2:
-007cf6 911d ld temp1, X+
-007cf7 9311 st Z+, temp1
-007cf8 9701 sbiw tosl, 1
-007cf9 f7e1 brbc 1, PFA_CMOVE2
- PFA_CMOVE1:
-007cfa 91af pop xl
-007cfb 91bf pop xh
-007cfc 9189
-007cfd 9199 loadtos
-007cfe 940c 7005 jmp_ DO_NEXT
- .include "words/2swap.asm"
-
- ; Stack
- ; Exchange the two top cell pairs
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2SWAP:
-007d00 ff05 .dw $ff05
-007d01 7332
-007d02 6177
-007d03 0070 .db "2swap",0
-007d04 7ce7 .dw VE_HEAD
- .set VE_HEAD = VE_2SWAP
- XT_2SWAP:
-007d05 7001 .dw DO_COLON
- PFA_2SWAP:
-
- .endif
-007d06 70e1 .dw XT_ROT
-007d07 70ff .dw XT_TO_R
-007d08 70e1 .dw XT_ROT
-007d09 70f6 .dw XT_R_FROM
-007d0a 7020 .dw XT_EXIT
-
- .include "words/tib.asm"
-
- ; System
- ; refills the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_REFILLTIB:
-007d0b ff0a .dw $ff0a
-007d0c 6572
-007d0d 6966
-007d0e 6c6c
-007d0f 742d
-007d10 6269 .db "refill-tib"
-007d11 7d00 .dw VE_HEAD
- .set VE_HEAD = VE_REFILLTIB
- XT_REFILLTIB:
-007d12 7001 .dw DO_COLON
- PFA_REFILLTIB:
- .endif
-007d13 7d2e .dw XT_TIB
-007d14 703d .dw XT_DOLITERAL
-007d15 005a .dw TIB_SIZE
-007d16 7891 .dw XT_ACCEPT
-007d17 7d34 .dw XT_NUMBERTIB
-007d18 7081 .dw XT_STORE
-007d19 7154 .dw XT_ZERO
-007d1a 757e .dw XT_TO_IN
-007d1b 7081 .dw XT_STORE
-007d1c 714b .dw XT_TRUE ; -1
-007d1d 7020 .dw XT_EXIT
-
- ; ( -- addr n )
- ; System
- ; address and current length of the input buffer
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_SOURCETIB:
-007d1e ff0a .dw $FF0A
-007d1f 6f73
-007d20 7275
-007d21 6563
-007d22 742d
-007d23 6269 .db "source-tib"
-007d24 7d0b .dw VE_HEAD
- .set VE_HEAD = VE_SOURCETIB
- XT_SOURCETIB:
-007d25 7001 .dw DO_COLON
- PFA_SOURCETIB:
- .endif
-007d26 7d2e .dw XT_TIB
-007d27 7d34 .dw XT_NUMBERTIB
-007d28 7079 .dw XT_FETCH
-007d29 7020 .dw XT_EXIT
-
- ; ( -- addr )
- ; System Variable
- ; terminal input buffer address
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TIB:
-007d2a ff03 .dw $ff03
-007d2b 6974
-007d2c 0062 .db "tib",0
-007d2d 7d1e .dw VE_HEAD
- .set VE_HEAD = VE_TIB
- XT_TIB:
-007d2e 7048 .dw PFA_DOVARIABLE
- PFA_TIB:
-007d2f 0168 .dw ram_tib
- .dseg
-000168 ram_tib: .byte TIB_SIZE
- .cseg
- .endif
-
- ; ( -- addr )
- ; System Variable
- ; variable holding the number of characters in TIB
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_NUMBERTIB:
-007d30 ff04 .dw $ff04
-007d31 7423
-007d32 6269 .db "#tib"
-007d33 7d2a .dw VE_HEAD
- .set VE_HEAD = VE_NUMBERTIB
- XT_NUMBERTIB:
-007d34 7048 .dw PFA_DOVARIABLE
- PFA_NUMBERTIB:
-007d35 01c2 .dw ram_sharptib
- .dseg
-0001c2 ram_sharptib: .byte 2
- .cseg
- .endif
-
- .include "words/init-ram.asm"
-
- ; Tools
- ; copy len cells from eeprom to ram
- VE_EE2RAM:
-007d36 ff06 .dw $ff06
-007d37 6565
-007d38 723e
-007d39 6d61 .db "ee>ram"
-007d3a 7d30 .dw VE_HEAD
- .set VE_HEAD = VE_EE2RAM
- XT_EE2RAM:
-007d3b 7001 .dw DO_COLON
- PFA_EE2RAM: ; ( -- )
-007d3c 7154 .dw XT_ZERO
-007d3d 729b .dw XT_DODO
- PFA_EE2RAM_1:
- ; ( -- e-addr r-addr )
-007d3e 70cf .dw XT_OVER
-007d3f 735f .dw XT_FETCHE
-007d40 70cf .dw XT_OVER
-007d41 7081 .dw XT_STORE
-007d42 755e .dw XT_CELLPLUS
-007d43 70c4 .dw XT_SWAP
-007d44 755e .dw XT_CELLPLUS
-007d45 70c4 .dw XT_SWAP
-007d46 72c9 .dw XT_DOLOOP
-007d47 7d3e .dw PFA_EE2RAM_1
- PFA_EE2RAM_2:
-007d48 756e .dw XT_2DROP
-007d49 7020 .dw XT_EXIT
-
- ; ( -- )
- ; Tools
- ; setup the default user area from eeprom
- VE_INIT_RAM:
-007d4a ff08 .dw $ff08
-007d4b 6e69
-007d4c 7469
-007d4d 722d
-007d4e 6d61 .db "init-ram"
-007d4f 7d36 .dw VE_HEAD
- .set VE_HEAD = VE_INIT_RAM
- XT_INIT_RAM:
-007d50 7001 .dw DO_COLON
- PFA_INI_RAM: ; ( -- )
-007d51 703d .dw XT_DOLITERAL
-007d52 006e .dw EE_INITUSER
-007d53 7302 .dw XT_UP_FETCH
-007d54 703d .dw XT_DOLITERAL
-007d55 0022 .dw SYSUSERSIZE
-007d56 7204 .dw XT_2SLASH
-007d57 7d3b .dw XT_EE2RAM
-007d58 7020 .dw XT_EXIT
- .include "dict/compiler2.inc"
-
- ; included almost independently from each other
- ; on a include-per-use basis
- ;
- .if DICT_COMPILER2 == 0
- .endif
- .include "words/bounds.asm"
-
- ; Tools
- ; convert a string to an address range
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_BOUNDS:
-007d59 ff06 .dw $ff06
-007d5a 6f62
-007d5b 6e75
-007d5c 7364 .db "bounds"
-007d5d 7d4a .dw VE_HEAD
- .set VE_HEAD = VE_BOUNDS
- XT_BOUNDS:
-007d5e 7001 .dw DO_COLON
- PFA_BOUNDS:
- .endif
-007d5f 70cf .dw XT_OVER
-007d60 719d .dw XT_PLUS
-007d61 70c4 .dw XT_SWAP
-007d62 7020 .dw XT_EXIT
- .include "words/s-to-d.asm"
-
- ; Conversion
- ; extend (signed) single cell value to double cell
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_S2D:
-007d63 ff03 .dw $ff03
-007d64 3e73
-007d65 0064 .db "s>d",0
-007d66 7d59 .dw VE_HEAD
- .set VE_HEAD = VE_S2D
- XT_S2D:
-007d67 7001 .dw DO_COLON
- PFA_S2D:
- .endif
-007d68 70b1 .dw XT_DUP
-007d69 7121 .dw XT_ZEROLESS
-007d6a 7020 .dw XT_EXIT
- .include "words/to-body.asm"
-
- ; Core
- ; get body from XT
- VE_TO_BODY:
-007d6b ff05 .dw $ff05
-007d6c 623e
-007d6d 646f
-007d6e 0079 .db ">body",0
-007d6f 7d63 .dw VE_HEAD
- .set VE_HEAD = VE_TO_BODY
- XT_TO_BODY:
-007d70 7230 .dw PFA_1PLUS
- .elif AMFORTH_NRWW_SIZE>4000
- .elif AMFORTH_NRWW_SIZE>2000
- .else
- .endif
- ; now colon words
- ;;;;;;;;;;;;;;;;;;;;;;;;
- .include "words/2literal.asm"
-
- ; Compiler
- ; compile a cell pair literal in colon definitions
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_2LITERAL:
-007d71 0008 .dw $0008
-007d72 6c32
-007d73 7469
-007d74 7265
-007d75 6c61 .db "2literal"
-007d76 7d6b .dw VE_HEAD
- .set VE_HEAD = VE_2LITERAL
- XT_2LITERAL:
-007d77 7001 .dw DO_COLON
- PFA_2LITERAL:
- .endif
-007d78 70c4 .dw XT_SWAP
-007d79 01e2 .dw XT_LITERAL
-007d7a 01e2 .dw XT_LITERAL
-007d7b 7020 .dw XT_EXIT
- .include "words/equal.asm"
-
- ; Compare
- ; compares two values for equality
- VE_EQUAL:
-007d7c ff01 .dw $ff01
-007d7d 003d .db "=",0
-007d7e 7d71 .dw VE_HEAD
- .set VE_HEAD = VE_EQUAL
- XT_EQUAL:
-007d7f 7001 .dw DO_COLON
- PFA_EQUAL:
-007d80 7193 .dw XT_MINUS
-007d81 711a .dw XT_ZEROEQUAL
-007d82 7020 .dw XT_EXIT
- .include "words/num-constants.asm"
-
- .endif
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_ONE:
-007d83 ff01 .dw $ff01
-007d84 0031 .db "1",0
-007d85 7d7c .dw VE_HEAD
- .set VE_HEAD = VE_ONE
- XT_ONE:
-007d86 7048 .dw PFA_DOVARIABLE
- PFA_ONE:
- .endif
-007d87 0001 .DW 1
-
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_TWO:
-007d88 ff01 .dw $ff01
-007d89 0032 .db "2",0
-007d8a 7d83 .dw VE_HEAD
- .set VE_HEAD = VE_TWO
- XT_TWO:
-007d8b 7048 .dw PFA_DOVARIABLE
- PFA_TWO:
- .endif
-007d8c 0002 .DW 2
- .if cpu_msp430==1
- .endif
-
- .if cpu_avr8==1
- VE_MINUSONE:
-007d8d ff02 .dw $ff02
-007d8e 312d .db "-1"
-007d8f 7d88 .dw VE_HEAD
- .set VE_HEAD = VE_MINUSONE
- XT_MINUSONE:
-007d90 7048 .dw PFA_DOVARIABLE
- PFA_MINUSONE:
- .endif
-007d91 ffff .DW -1
- .include "dict_appl_core.inc"
-
- ; do not delete it!
-
- .set flashlast = pc
- .if (pc>FLASHEND)
- .endif
-
- .dseg
- ; define a label for the 1st free ram address
- HERESTART:
- .eseg
- .include "amforth-eeprom.inc"
-000038 ff ff
- ; some configs
-00003a 8b 05 CFG_DP: .dw DPSTART ; Dictionary Pointer
-00003c c4 01 EE_HERE: .dw HERESTART ; Memory Allocation
-00003e 92 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation
-000040 33 04 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope
-000042 60 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set
- ; LEAVE stack is between data stack and return stack.
-000044 b0 10 CFG_LP0: .dw stackstart+1
-000046 dd 04 CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY
-000048 32 75 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries
-00004a 4c 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist
-00004c 8d 7d CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist
- CFG_ORDERLISTLEN:
-00004e 01 00 .dw 1
- CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries
-000050 4c 00 .dw CFG_FORTHWORDLIST ; get/set-order
-000052 .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used
- CFG_RECOGNIZERLISTLEN:
-000060 02 00 .dw 2
- CFG_RECOGNIZERLIST:
-000062 24 7b .dw XT_REC_FIND
-000064 10 7b .dw XT_REC_NUM
-000066 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used
-
- EE_STOREI:
-00006a 7e 73 .dw XT_DO_STOREI ; Store a cell into flash
-
- ; MARKER saves everything up to here. Nothing beyond gets saved
- EE_MARKER:
-00006c 6c 00 .dw EE_MARKER
-
- ; default user area
- EE_INITUSER:
-00006e 00 00 .dw 0 ; USER_STATE
-000070 00 00 .dw 0 ; USER_FOLLOWER
-000072 ff 10 .dw rstackstart ; USER_RP
-000074 af 10 .dw stackstart ; USER_SP0
-000076 af 10 .dw stackstart ; USER_SP
-
-000078 00 00 .dw 0 ; USER_HANDLER
-00007a 0a 00 .dw 10 ; USER_BASE
-
-00007c a7 00 .dw XT_TX ; USER_EMIT
-00007e b5 00 .dw XT_TXQ ; USER_EMITQ
-000080 7c 00 .dw XT_RX ; USER_KEY
-000082 97 00 .dw XT_RXQ ; USER_KEYQ
-000084 25 7d .dw XT_SOURCETIB ; USER_SOURCE
-000086 00 00 .dw 0 ; USER_G_IN
-000088 12 7d .dw XT_REFILLTIB ; USER_REFILL
-00008a ea 79 .dw XT_DEFAULT_PROMPTOK
-00008c 09 7a .dw XT_DEFAULT_PROMPTERROR
-00008e f9 79 .dw XT_DEFAULT_PROMPTREADY
-
- ; calculate baud rate error
- .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; smart round
- .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; effective baud rate
- .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; error in pro mille
-
- .if ((BAUD_ERROR>BAUD_MAXERROR) || (BAUD_ERROR<-BAUD_MAXERROR))
- .endif
- EE_UBRRVAL:
-000090 19 00 .dw UBRR_VAL ; BAUDRATE
- ; 1st free address in EEPROM.
- EHERESTART:
- .cseg
-
-
-RESOURCE USE INFORMATION
-------------------------
-
-Notice:
-The register and instruction counts are symbol table hit counts,
-and hence implicitly used resources are not counted, eg, the
-'lpm' instruction without operands implicitly uses r0 and z,
-none of which are counted.
-
-x,y,z are separate entities in the symbol table and are
-counted separately from r26..r31 here.
-
-.dseg memory usage only counts static data declared with .byte
-
-"ATmega644" register use summary:
-r0 : 25 r1 : 5 r2 : 10 r3 : 12 r4 : 4 r5 : 1 r6 : 0 r7 : 0
-r8 : 0 r9 : 0 r10: 1 r11: 6 r12: 0 r13: 0 r14: 22 r15: 20
-r16: 89 r17: 61 r18: 61 r19: 37 r20: 13 r21: 11 r22: 11 r23: 3
-r24: 212 r25: 145 r26: 28 r27: 17 r28: 7 r29: 4 r30: 90 r31: 49
-x : 4 y : 217 z : 50
-Registers used: 29 out of 35 (82.9%)
-
-"ATmega644" instruction use summary:
-.lds : 0 .sts : 0 adc : 22 add : 17 adiw : 17 and : 4
-andi : 3 asr : 2 bclr : 0 bld : 0 brbc : 2 brbs : 7
-brcc : 3 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0
-brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3
-brne : 22 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
-brvs : 2 bset : 0 bst : 0 call : 2 cbi : 7 cbr : 1
-clc : 2 clh : 0 cli : 7 cln : 0 clr : 14 cls : 0
-clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10
-cpi : 2 cpse : 0 dec : 10 eor : 3 fmul : 0 fmuls : 0
-fmulsu: 0 icall : 0 ijmp : 1 in : 25 inc : 3 jmp : 14
-ld : 145 ldd : 4 ldi : 41 lds : 1 lpm : 16 lsl : 14
-lsr : 2 mov : 16 movw : 72 mul : 5 muls : 1 mulsu : 2
-neg : 0 nop : 0 or : 9 ori : 2 out : 22 pop : 49
-push : 43 rcall : 41 ret : 7 reti : 1 rjmp : 105 rol : 23
-ror : 6 sbc : 9 sbci : 3 sbi : 8 sbic : 3 sbis : 0
-sbiw : 16 sbr : 0 sbrc : 5 sbrs : 7 sec : 1 seh : 0
-sei : 1 sen : 0 ser : 4 ses : 0 set : 0 sev : 0
-sez : 0 sleep : 0 spm : 2 st : 81 std : 8 sts : 1
-sub : 6 subi : 3 swap : 0 tst : 0 wdr : 0
-Instructions used: 72 out of 113 (63.7%)
-
-"ATmega644" memory use summary [bytes]:
-Segment Begin End Code Data Used Size Use%
----------------------------------------------------------------
-[.cseg] 0x000000 0x00fb24 2088 14590 16678 65536 25.4%
-[.dseg] 0x000100 0x0001c4 0 196 196 4096 4.8%
-[.eseg] 0x000000 0x000092 0 146 146 2048 7.1%
-
-Assembly complete, 0 errors, 8 warnings
diff --git a/amforth-6.5/appl/eval-pollin/p644-16.map b/amforth-6.5/appl/eval-pollin/p644-16.map
deleted file mode 100644
index 414fea5..0000000
--- a/amforth-6.5/appl/eval-pollin/p644-16.map
+++ /dev/null
@@ -1,2133 +0,0 @@
-
-AVRASM ver. 2.1.52 p644-16.asm Sun Apr 30 20:10:15 2017
-
-
-SET DICT_COMPILER2 00000001
-SET cpu_msp430 00000000
-SET cpu_avr8 00000001
-SET USER_STATE 00000000
-SET USER_FOLLOWER 00000002
-SET USER_RP 00000004
-SET USER_SP0 00000006
-SET USER_SP 00000008
-SET USER_HANDLER 0000000a
-SET USER_BASE 0000000c
-SET USER_EMIT 0000000e
-SET USER_EMITQ 00000010
-SET USER_KEY 00000012
-SET USER_KEYQ 00000014
-SET USER_SOURCE 00000016
-SET USER_TO_IN 00000018
-SET USER_REFILL 0000001a
-SET USER_P_OK 0000001c
-SET USER_P_ERR 0000001e
-SET USER_P_RDY 00000020
-SET SYSUSERSIZE 00000022
-DEF zerol r2
-DEF zeroh r3
-DEF upl r4
-DEF uph r5
-DEF al r6
-DEF ah r7
-DEF bl r8
-DEF bh r9
-DEF mcu_boot r10
-DEF isrflag r11
-DEF temp4 r14
-DEF temp5 r15
-DEF temp0 r16
-DEF temp1 r17
-DEF temp2 r18
-DEF temp3 r19
-DEF temp6 r20
-DEF temp7 r21
-DEF tosl r24
-DEF tosh r25
-DEF wl r22
-DEF wh r23
-EQU SIGNATURE_000 0000001e
-EQU SIGNATURE_001 00000096
-EQU SIGNATURE_002 00000009
-EQU UDR0 000000c6
-EQU UBRR0L 000000c4
-EQU UBRR0H 000000c5
-EQU UCSR0C 000000c2
-EQU UCSR0B 000000c1
-EQU UCSR0A 000000c0
-EQU TWAMR 000000bd
-EQU TWCR 000000bc
-EQU TWDR 000000bb
-EQU TWAR 000000ba
-EQU TWSR 000000b9
-EQU TWBR 000000b8
-EQU ASSR 000000b6
-EQU OCR2B 000000b4
-EQU OCR2A 000000b3
-EQU TCNT2 000000b2
-EQU TCCR2B 000000b1
-EQU TCCR2A 000000b0
-EQU OCR1BL 0000008a
-EQU OCR1BH 0000008b
-EQU OCR1AL 00000088
-EQU OCR1AH 00000089
-EQU ICR1L 00000086
-EQU ICR1H 00000087
-EQU TCNT1L 00000084
-EQU TCNT1H 00000085
-EQU TCCR1C 00000082
-EQU TCCR1B 00000081
-EQU TCCR1A 00000080
-EQU DIDR1 0000007f
-EQU DIDR0 0000007e
-EQU ADMUX 0000007c
-EQU ADCSRB 0000007b
-EQU ADCSRA 0000007a
-EQU ADCH 00000079
-EQU ADCL 00000078
-EQU PCMSK3 00000073
-EQU TIMSK2 00000070
-EQU TIMSK1 0000006f
-EQU TIMSK0 0000006e
-EQU PCMSK2 0000006d
-EQU PCMSK1 0000006c
-EQU PCMSK0 0000006b
-EQU EICRA 00000069
-EQU PCICR 00000068
-EQU OSCCAL 00000066
-EQU PRR 00000064
-EQU CLKPR 00000061
-EQU WDTCSR 00000060
-EQU SREG 0000003f
-EQU SPL 0000003d
-EQU SPH 0000003e
-EQU SPMCSR 00000037
-EQU MCUCR 00000035
-EQU MCUSR 00000034
-EQU SMCR 00000033
-EQU OCDR 00000031
-EQU ACSR 00000030
-EQU SPDR 0000002e
-EQU SPSR 0000002d
-EQU SPCR 0000002c
-EQU GPIOR2 0000002b
-EQU GPIOR1 0000002a
-EQU OCR0B 00000028
-EQU OCR0A 00000027
-EQU TCNT0 00000026
-EQU TCCR0B 00000025
-EQU TCCR0A 00000024
-EQU GTCCR 00000023
-EQU EEARH 00000022
-EQU EEARL 00000021
-EQU EEDR 00000020
-EQU EECR 0000001f
-EQU GPIOR0 0000001e
-EQU EIMSK 0000001d
-EQU EIFR 0000001c
-EQU PCIFR 0000001b
-EQU TIFR2 00000017
-EQU TIFR1 00000016
-EQU TIFR0 00000015
-EQU PORTD 0000000b
-EQU DDRD 0000000a
-EQU PIND 00000009
-EQU PORTC 00000008
-EQU DDRC 00000007
-EQU PINC 00000006
-EQU PORTB 00000005
-EQU DDRB 00000004
-EQU PINB 00000003
-EQU PORTA 00000002
-EQU DDRA 00000001
-EQU PINA 00000000
-EQU ACME 00000006
-EQU ACIS0 00000000
-EQU ACIS1 00000001
-EQU ACIC 00000002
-EQU ACIE 00000003
-EQU ACI 00000004
-EQU ACO 00000005
-EQU ACBG 00000006
-EQU ACD 00000007
-EQU AIN0D 00000000
-EQU AIN1D 00000001
-EQU UDR0_0 00000000
-EQU UDR0_1 00000001
-EQU UDR0_2 00000002
-EQU UDR0_3 00000003
-EQU UDR0_4 00000004
-EQU UDR0_5 00000005
-EQU UDR0_6 00000006
-EQU UDR0_7 00000007
-EQU MPCM0 00000000
-EQU U2X0 00000001
-EQU UPE0 00000002
-EQU DOR0 00000003
-EQU FE0 00000004
-EQU UDRE0 00000005
-EQU TXC0 00000006
-EQU RXC0 00000007
-EQU TXB80 00000000
-EQU RXB80 00000001
-EQU UCSZ02 00000002
-EQU TXEN0 00000003
-EQU RXEN0 00000004
-EQU UDRIE0 00000005
-EQU TXCIE0 00000006
-EQU RXCIE0 00000007
-EQU UCPOL0 00000000
-EQU UCSZ00 00000001
-EQU UCPHA0 00000001
-EQU UCSZ01 00000002
-EQU UDORD0 00000002
-EQU USBS0 00000003
-EQU UPM00 00000004
-EQU UPM01 00000005
-EQU UMSEL00 00000006
-EQU UMSEL0 00000006
-EQU UMSEL01 00000007
-EQU UMSEL1 00000007
-EQU UBRR8 00000000
-EQU UBRR9 00000001
-EQU UBRR10 00000002
-EQU UBRR11 00000003
-EQU _UBRR0 00000000
-EQU _UBRR1 00000001
-EQU UBRR2 00000002
-EQU UBRR3 00000003
-EQU UBRR4 00000004
-EQU UBRR5 00000005
-EQU UBRR6 00000006
-EQU UBRR7 00000007
-EQU PORTA0 00000000
-EQU PA0 00000000
-EQU PORTA1 00000001
-EQU PA1 00000001
-EQU PORTA2 00000002
-EQU PA2 00000002
-EQU PORTA3 00000003
-EQU PA3 00000003
-EQU PORTA4 00000004
-EQU PA4 00000004
-EQU PORTA5 00000005
-EQU PA5 00000005
-EQU PORTA6 00000006
-EQU PA6 00000006
-EQU PORTA7 00000007
-EQU PA7 00000007
-EQU DDA0 00000000
-EQU DDA1 00000001
-EQU DDA2 00000002
-EQU DDA3 00000003
-EQU DDA4 00000004
-EQU DDA5 00000005
-EQU DDA6 00000006
-EQU DDA7 00000007
-EQU PINA0 00000000
-EQU PINA1 00000001
-EQU PINA2 00000002
-EQU PINA3 00000003
-EQU PINA4 00000004
-EQU PINA5 00000005
-EQU PINA6 00000006
-EQU PINA7 00000007
-EQU PORTB0 00000000
-EQU PB0 00000000
-EQU PORTB1 00000001
-EQU PB1 00000001
-EQU PORTB2 00000002
-EQU PB2 00000002
-EQU PORTB3 00000003
-EQU PB3 00000003
-EQU PORTB4 00000004
-EQU PB4 00000004
-EQU PORTB5 00000005
-EQU PB5 00000005
-EQU PORTB6 00000006
-EQU PB6 00000006
-EQU PORTB7 00000007
-EQU PB7 00000007
-EQU DDB0 00000000
-EQU DDB1 00000001
-EQU DDB2 00000002
-EQU DDB3 00000003
-EQU DDB4 00000004
-EQU DDB5 00000005
-EQU DDB6 00000006
-EQU DDB7 00000007
-EQU PINB0 00000000
-EQU PINB1 00000001
-EQU PINB2 00000002
-EQU PINB3 00000003
-EQU PINB4 00000004
-EQU PINB5 00000005
-EQU PINB6 00000006
-EQU PINB7 00000007
-EQU PORTC0 00000000
-EQU PC0 00000000
-EQU PORTC1 00000001
-EQU PC1 00000001
-EQU PORTC2 00000002
-EQU PC2 00000002
-EQU PORTC3 00000003
-EQU PC3 00000003
-EQU PORTC4 00000004
-EQU PC4 00000004
-EQU PORTC5 00000005
-EQU PC5 00000005
-EQU PORTC6 00000006
-EQU PC6 00000006
-EQU PORTC7 00000007
-EQU PC7 00000007
-EQU DDC0 00000000
-EQU DDC1 00000001
-EQU DDC2 00000002
-EQU DDC3 00000003
-EQU DDC4 00000004
-EQU DDC5 00000005
-EQU DDC6 00000006
-EQU DDC7 00000007
-EQU PINC0 00000000
-EQU PINC1 00000001
-EQU PINC2 00000002
-EQU PINC3 00000003
-EQU PINC4 00000004
-EQU PINC5 00000005
-EQU PINC6 00000006
-EQU PINC7 00000007
-EQU PORTD0 00000000
-EQU PD0 00000000
-EQU PORTD1 00000001
-EQU PD1 00000001
-EQU PORTD2 00000002
-EQU PD2 00000002
-EQU PORTD3 00000003
-EQU PD3 00000003
-EQU PORTD4 00000004
-EQU PD4 00000004
-EQU PORTD5 00000005
-EQU PD5 00000005
-EQU PORTD6 00000006
-EQU PD6 00000006
-EQU PORTD7 00000007
-EQU PD7 00000007
-EQU DDD0 00000000
-EQU DDD1 00000001
-EQU DDD2 00000002
-EQU DDD3 00000003
-EQU DDD4 00000004
-EQU DDD5 00000005
-EQU DDD6 00000006
-EQU DDD7 00000007
-EQU PIND0 00000000
-EQU PIND1 00000001
-EQU PIND2 00000002
-EQU PIND3 00000003
-EQU PIND4 00000004
-EQU PIND5 00000005
-EQU PIND6 00000006
-EQU PIND7 00000007
-EQU TOIE0 00000000
-EQU OCIE0A 00000001
-EQU OCIE0B 00000002
-EQU TOV0 00000000
-EQU OCF0A 00000001
-EQU OCF0B 00000002
-EQU WGM00 00000000
-EQU WGM01 00000001
-EQU COM0B0 00000004
-EQU COM0B1 00000005
-EQU COM0A0 00000006
-EQU COM0A1 00000007
-EQU CS00 00000000
-EQU CS01 00000001
-EQU CS02 00000002
-EQU WGM02 00000003
-EQU FOC0B 00000006
-EQU FOC0A 00000007
-EQU TCNT0_0 00000000
-EQU TCNT0_1 00000001
-EQU TCNT0_2 00000002
-EQU TCNT0_3 00000003
-EQU TCNT0_4 00000004
-EQU TCNT0_5 00000005
-EQU TCNT0_6 00000006
-EQU TCNT0_7 00000007
-EQU OCR0A_0 00000000
-EQU OCR0A_1 00000001
-EQU OCR0A_2 00000002
-EQU OCR0A_3 00000003
-EQU OCR0A_4 00000004
-EQU OCR0A_5 00000005
-EQU OCR0A_6 00000006
-EQU OCR0A_7 00000007
-EQU OCR0B_0 00000000
-EQU OCR0B_1 00000001
-EQU OCR0B_2 00000002
-EQU OCR0B_3 00000003
-EQU OCR0B_4 00000004
-EQU OCR0B_5 00000005
-EQU OCR0B_6 00000006
-EQU OCR0B_7 00000007
-EQU PSRSYNC 00000000
-EQU PSR10 00000000
-EQU TSM 00000007
-EQU TOIE2 00000000
-EQU TOIE2A 00000000
-EQU OCIE2A 00000001
-EQU OCIE2B 00000002
-EQU TOV2 00000000
-EQU OCF2A 00000001
-EQU OCF2B 00000002
-EQU WGM20 00000000
-EQU WGM21 00000001
-EQU COM2B0 00000004
-EQU COM2B1 00000005
-EQU COM2A0 00000006
-EQU COM2A1 00000007
-EQU CS20 00000000
-EQU CS21 00000001
-EQU CS22 00000002
-EQU WGM22 00000003
-EQU FOC2B 00000006
-EQU FOC2A 00000007
-EQU TCNT2_0 00000000
-EQU TCNT2_1 00000001
-EQU TCNT2_2 00000002
-EQU TCNT2_3 00000003
-EQU TCNT2_4 00000004
-EQU TCNT2_5 00000005
-EQU TCNT2_6 00000006
-EQU TCNT2_7 00000007
-EQU OCR2A_0 00000000
-EQU OCR2A_1 00000001
-EQU OCR2A_2 00000002
-EQU OCR2A_3 00000003
-EQU OCR2A_4 00000004
-EQU OCR2A_5 00000005
-EQU OCR2A_6 00000006
-EQU OCR2A_7 00000007
-EQU OCR2B_0 00000000
-EQU OCR2B_1 00000001
-EQU OCR2B_2 00000002
-EQU OCR2B_3 00000003
-EQU OCR2B_4 00000004
-EQU OCR2B_5 00000005
-EQU OCR2B_6 00000006
-EQU OCR2B_7 00000007
-EQU TCR2BUB 00000000
-EQU TCR2AUB 00000001
-EQU OCR2BUB 00000002
-EQU OCR2AUB 00000003
-EQU TCN2UB 00000004
-EQU AS2 00000005
-EQU EXCLK 00000006
-EQU PSRASY 00000001
-EQU PSR2 00000001
-EQU WDP0 00000000
-EQU WDP1 00000001
-EQU WDP2 00000002
-EQU WDE 00000003
-EQU WDCE 00000004
-EQU WDP3 00000005
-EQU WDIE 00000006
-EQU WDIF 00000007
-EQU OCDR0 00000000
-EQU OCDR1 00000001
-EQU OCDR2 00000002
-EQU OCDR3 00000003
-EQU OCDR4 00000004
-EQU OCDR5 00000005
-EQU OCDR6 00000006
-EQU OCDR7 00000007
-EQU IDRD 00000007
-EQU JTD 00000007
-EQU JTRF 00000004
-EQU SPMEN 00000000
-EQU PGERS 00000001
-EQU PGWRT 00000002
-EQU BLBSET 00000003
-EQU RWWSRE 00000004
-EQU SIGRD 00000005
-EQU RWWSB 00000006
-EQU SPMIE 00000007
-EQU ISC00 00000000
-EQU ISC01 00000001
-EQU ISC10 00000002
-EQU ISC11 00000003
-EQU ISC20 00000004
-EQU ISC21 00000005
-EQU INT0 00000000
-EQU INT1 00000001
-EQU INT2 00000002
-EQU INTF0 00000000
-EQU INTF1 00000001
-EQU INTF2 00000002
-EQU PCIE0 00000000
-EQU PCIE1 00000001
-EQU PCIE2 00000002
-EQU PCIE3 00000003
-EQU PCIF0 00000000
-EQU PCIF1 00000001
-EQU PCIF2 00000002
-EQU PCIF3 00000003
-EQU PCINT24 00000000
-EQU PCINT25 00000001
-EQU PCINT26 00000002
-EQU PCINT27 00000003
-EQU PCINT28 00000004
-EQU PCINT29 00000005
-EQU PCINT30 00000006
-EQU PCINT31 00000007
-EQU PCINT16 00000000
-EQU PCINT17 00000001
-EQU PCINT18 00000002
-EQU PCINT19 00000003
-EQU PCINT20 00000004
-EQU PCINT21 00000005
-EQU PCINT22 00000006
-EQU PCINT23 00000007
-EQU PCINT8 00000000
-EQU PCINT9 00000001
-EQU PCINT10 00000002
-EQU PCINT11 00000003
-EQU PCINT12 00000004
-EQU PCINT13 00000005
-EQU PCINT14 00000006
-EQU PCINT15 00000007
-EQU PCINT0 00000000
-EQU PCINT1 00000001
-EQU PCINT2 00000002
-EQU PCINT3 00000003
-EQU PCINT4 00000004
-EQU PCINT5 00000005
-EQU PCINT6 00000006
-EQU PCINT7 00000007
-EQU MUX0 00000000
-EQU MUX1 00000001
-EQU MUX2 00000002
-EQU MUX3 00000003
-EQU MUX4 00000004
-EQU ADLAR 00000005
-EQU REFS0 00000006
-EQU REFS1 00000007
-EQU ADPS0 00000000
-EQU ADPS1 00000001
-EQU ADPS2 00000002
-EQU ADIE 00000003
-EQU ADIF 00000004
-EQU ADATE 00000005
-EQU ADSC 00000006
-EQU ADEN 00000007
-EQU ADTS0 00000000
-EQU ADTS1 00000001
-EQU ADTS2 00000002
-EQU ADCH0 00000000
-EQU ADCH1 00000001
-EQU ADCH2 00000002
-EQU ADCH3 00000003
-EQU ADCH4 00000004
-EQU ADCH5 00000005
-EQU ADCH6 00000006
-EQU ADCH7 00000007
-EQU ADCL0 00000000
-EQU ADCL1 00000001
-EQU ADCL2 00000002
-EQU ADCL3 00000003
-EQU ADCL4 00000004
-EQU ADCL5 00000005
-EQU ADCL6 00000006
-EQU ADCL7 00000007
-EQU ADC0D 00000000
-EQU ADC1D 00000001
-EQU ADC2D 00000002
-EQU ADC3D 00000003
-EQU ADC4D 00000004
-EQU ADC5D 00000005
-EQU ADC6D 00000006
-EQU ADC7D 00000007
-EQU TOIE1 00000000
-EQU OCIE1A 00000001
-EQU OCIE1B 00000002
-EQU ICIE1 00000005
-EQU TOV1 00000000
-EQU OCF1A 00000001
-EQU OCF1B 00000002
-EQU ICF1 00000005
-EQU WGM10 00000000
-EQU PWM10 00000000
-EQU WGM11 00000001
-EQU PWM11 00000001
-EQU COM1B0 00000004
-EQU COM1B1 00000005
-EQU COM1A0 00000006
-EQU COM1A1 00000007
-EQU CS10 00000000
-EQU CS11 00000001
-EQU CS12 00000002
-EQU WGM12 00000003
-EQU CTC1 00000003
-EQU WGM13 00000004
-EQU ICES1 00000006
-EQU ICNC1 00000007
-EQU FOC1B 00000006
-EQU FOC1A 00000007
-EQU EEAR8 00000000
-EQU EEAR9 00000001
-EQU EEAR10 00000002
-EQU EEAR11 00000003
-EQU EEAR0 00000000
-EQU EEAR1 00000001
-EQU EEAR2 00000002
-EQU EEAR3 00000003
-EQU EEAR4 00000004
-EQU EEAR5 00000005
-EQU EEAR6 00000006
-EQU EEAR7 00000007
-EQU EEDR0 00000000
-EQU EEDR1 00000001
-EQU EEDR2 00000002
-EQU EEDR3 00000003
-EQU EEDR4 00000004
-EQU EEDR5 00000005
-EQU EEDR6 00000006
-EQU EEDR7 00000007
-EQU EERE 00000000
-EQU EEPE 00000001
-EQU EEMPE 00000002
-EQU EERIE 00000003
-EQU EEPM0 00000004
-EQU EEPM1 00000005
-EQU TWAM0 00000001
-EQU TWAMR0 00000001
-EQU TWAM1 00000002
-EQU TWAMR1 00000002
-EQU TWAM2 00000003
-EQU TWAMR2 00000003
-EQU TWAM3 00000004
-EQU TWAMR3 00000004
-EQU TWAM4 00000005
-EQU TWAMR4 00000005
-EQU TWAM5 00000006
-EQU TWAMR5 00000006
-EQU TWAM6 00000007
-EQU TWAMR6 00000007
-EQU TWBR0 00000000
-EQU TWBR1 00000001
-EQU TWBR2 00000002
-EQU TWBR3 00000003
-EQU TWBR4 00000004
-EQU TWBR5 00000005
-EQU TWBR6 00000006
-EQU TWBR7 00000007
-EQU TWIE 00000000
-EQU TWEN 00000002
-EQU TWWC 00000003
-EQU TWSTO 00000004
-EQU TWSTA 00000005
-EQU TWEA 00000006
-EQU TWINT 00000007
-EQU TWPS0 00000000
-EQU TWPS1 00000001
-EQU TWS3 00000003
-EQU TWS4 00000004
-EQU TWS5 00000005
-EQU TWS6 00000006
-EQU TWS7 00000007
-EQU TWD0 00000000
-EQU TWD1 00000001
-EQU TWD2 00000002
-EQU TWD3 00000003
-EQU TWD4 00000004
-EQU TWD5 00000005
-EQU TWD6 00000006
-EQU TWD7 00000007
-EQU TWGCE 00000000
-EQU TWA0 00000001
-EQU TWA1 00000002
-EQU TWA2 00000003
-EQU TWA3 00000004
-EQU TWA4 00000005
-EQU TWA5 00000006
-EQU TWA6 00000007
-EQU SPDR0 00000000
-EQU SPDR1 00000001
-EQU SPDR2 00000002
-EQU SPDR3 00000003
-EQU SPDR4 00000004
-EQU SPDR5 00000005
-EQU SPDR6 00000006
-EQU SPDR7 00000007
-EQU SPI2X 00000000
-EQU WCOL 00000006
-EQU SPIF 00000007
-EQU SPR0 00000000
-EQU SPR1 00000001
-EQU CPHA 00000002
-EQU CPOL 00000003
-EQU MSTR 00000004
-EQU DORD 00000005
-EQU SPE 00000006
-EQU SPIE 00000007
-EQU SREG_C 00000000
-EQU SREG_Z 00000001
-EQU SREG_N 00000002
-EQU SREG_V 00000003
-EQU SREG_S 00000004
-EQU SREG_H 00000005
-EQU SREG_T 00000006
-EQU SREG_I 00000007
-EQU IVCE 00000000
-EQU IVSEL 00000001
-EQU PUD 00000004
-EQU PORF 00000000
-EQU EXTRF 00000001
-EQU BORF 00000002
-EQU WDRF 00000003
-EQU CAL0 00000000
-EQU CAL1 00000001
-EQU CAL2 00000002
-EQU CAL3 00000003
-EQU CAL4 00000004
-EQU CAL5 00000005
-EQU CAL6 00000006
-EQU CAL7 00000007
-EQU CLKPS0 00000000
-EQU CLKPS1 00000001
-EQU CLKPS2 00000002
-EQU CLKPS3 00000003
-EQU CLKPCE 00000007
-EQU SE 00000000
-EQU SM0 00000001
-EQU SM1 00000002
-EQU SM2 00000003
-EQU GPIOR20 00000000
-EQU GPIOR21 00000001
-EQU GPIOR22 00000002
-EQU GPIOR23 00000003
-EQU GPIOR24 00000004
-EQU GPIOR25 00000005
-EQU GPIOR26 00000006
-EQU GPIOR27 00000007
-EQU GPIOR10 00000000
-EQU GPIOR11 00000001
-EQU GPIOR12 00000002
-EQU GPIOR13 00000003
-EQU GPIOR14 00000004
-EQU GPIOR15 00000005
-EQU GPIOR16 00000006
-EQU GPIOR17 00000007
-EQU GPIOR00 00000000
-EQU GPIOR01 00000001
-EQU GPIOR02 00000002
-EQU GPIOR03 00000003
-EQU GPIOR04 00000004
-EQU GPIOR05 00000005
-EQU GPIOR06 00000006
-EQU GPIOR07 00000007
-EQU PRADC 00000000
-EQU PRUSART0 00000001
-EQU PRSPI 00000002
-EQU PRTIM1 00000003
-EQU PRTIM0 00000005
-EQU PRTIM2 00000006
-EQU PRTWI 00000007
-EQU LB1 00000000
-EQU LB2 00000001
-EQU BLB01 00000002
-EQU BLB02 00000003
-EQU BLB11 00000004
-EQU BLB12 00000005
-EQU CKSEL0 00000000
-EQU CKSEL1 00000001
-EQU CKSEL2 00000002
-EQU CKSEL3 00000003
-EQU SUT0 00000004
-EQU SUT1 00000005
-EQU CKOUT 00000006
-EQU CKDIV8 00000007
-EQU BOOTRST 00000000
-EQU BOOTSZ0 00000001
-EQU BOOTSZ1 00000002
-EQU EESAVE 00000003
-EQU WDTON 00000004
-EQU SPIEN 00000005
-EQU JTAGEN 00000006
-EQU OCDEN 00000007
-EQU BODLEVEL0 00000000
-EQU BODLEVEL1 00000001
-EQU BODLEVEL2 00000002
-DEF XH r27
-DEF XL r26
-DEF YH r29
-DEF YL r28
-DEF ZH r31
-DEF ZL r30
-EQU FLASHEND 00007fff
-EQU IOEND 000000ff
-EQU SRAM_START 00000100
-EQU SRAM_SIZE 00001000
-EQU RAMEND 000010ff
-EQU XRAMEND 00000000
-EQU E2END 000007ff
-EQU EEPROMEND 000007ff
-EQU EEADRBITS 0000000b
-EQU NRWW_START_ADDR 00007000
-EQU NRWW_STOP_ADDR 00007fff
-EQU RWW_START_ADDR 00000000
-EQU RWW_STOP_ADDR 00006fff
-EQU PAGESIZE 00000080
-EQU FIRSTBOOTSTART 00007e00
-EQU SECONDBOOTSTART 00007c00
-EQU THIRDBOOTSTART 00007800
-EQU FOURTHBOOTSTART 00007000
-EQU SMALLBOOTSTART 00007e00
-EQU LARGEBOOTSTART 00007000
-EQU INT0addr 00000002
-EQU INT1addr 00000004
-EQU INT2addr 00000006
-EQU PCI0addr 00000008
-EQU PCI1addr 0000000a
-EQU PCI2addr 0000000c
-EQU PCI3addr 0000000e
-EQU WDTaddr 00000010
-EQU OC2Aaddr 00000012
-EQU OC2Baddr 00000014
-EQU OVF2addr 00000016
-EQU ICP1addr 00000018
-EQU OC1Aaddr 0000001a
-EQU OC1Baddr 0000001c
-EQU OVF1addr 0000001e
-EQU OC0Aaddr 00000020
-EQU OC0Baddr 00000022
-EQU OVF0addr 00000024
-EQU SPIaddr 00000026
-EQU URXC0addr 00000028
-EQU UDRE0addr 0000002a
-EQU UTXC0addr 0000002c
-EQU ACIaddr 0000002e
-EQU ADCCaddr 00000030
-EQU ERDYaddr 00000032
-EQU TWIaddr 00000034
-EQU SPMRaddr 00000036
-EQU INT_VECTORS_SIZE 00000038
-EQU ramstart 00000100
-EQU CELLSIZE 00000002
-SET WANT_ANALOG_COMPARATOR 00000000
-SET WANT_USART0 00000000
-SET WANT_PORTA 00000000
-SET WANT_PORTB 00000000
-SET WANT_PORTC 00000000
-SET WANT_PORTD 00000000
-SET WANT_TIMER_COUNTER_0 00000000
-SET WANT_TIMER_COUNTER_2 00000000
-SET WANT_WATCHDOG 00000000
-SET WANT_JTAG 00000000
-SET WANT_BOOT_LOAD 00000000
-SET WANT_EXTERNAL_INTERRUPT 00000000
-SET WANT_AD_CONVERTER 00000000
-SET WANT_TIMER_COUNTER_1 00000000
-SET WANT_EEPROM 00000000
-SET WANT_TWI 00000000
-SET WANT_SPI 00000000
-SET WANT_CPU 00000000
-EQU intvecsize 00000002
-EQU pclen 00000002
-CSEG isr 0000012d
-EQU INTVECTORS 0000001c
-CSEG mcu_info 00000037
-CSEG mcu_ramsize 00000037
-CSEG mcu_eepromsize 00000038
-CSEG mcu_maxdp 00000039
-CSEG mcu_numints 0000003a
-CSEG mcu_name 0000003b
-SET codestart 00000041
-SET WANT_INTERRUPTS 00000001
-SET WANT_INTERRUPT_COUNTERS 00000000
-SET WANT_ISR_RX 00000001
-SET WANT_IGNORECASE 00000000
-SET WANT_UNIFIED 00000000
-SET TIB_SIZE 0000005a
-SET APPUSERSIZE 0000000a
-SET rstackstart 000010ff
-SET stackstart 000010af
-SET NUMWORDLISTS 00000008
-SET NUMRECOGNIZERS 00000004
-SET BAUD 00009600
-SET BAUD_MAXERROR 0000001e
-SET VE_HEAD 00007d8d
-SET VE_ENVHEAD 00007532
-SET AMFORTH_RO_SEG 00007001
-EQU F_CPU 00f42400
-EQU TIMER_INT 00000016
-EQU BAUDRATE_LOW 000000c4
-EQU BAUDRATE_HIGH 000000c5
-EQU USART_C 000000c2
-EQU USART_B 000000c1
-EQU USART_A 000000c0
-EQU USART_DATA 000000c6
-EQU URXCaddr 00000028
-EQU UDREaddr 0000002a
-EQU bm_USART_RXRD 00000080
-EQU bm_USART_TXRD 00000020
-EQU bm_ENABLE_TX 00000008
-EQU bm_ENABLE_RX 00000010
-EQU bm_ENABLE_INT_RX 00000080
-EQU bm_ENABLE_INT_TX 00000020
-EQU bm_USARTC_en 00000000
-EQU bm_ASYNC 00000000
-EQU bm_SYNC 00000040
-EQU bm_NO_PARITY 00000000
-EQU bm_EVEN_PARITY 00000020
-EQU bm_ODD_PARITY 00000030
-EQU bm_1STOPBIT 00000000
-EQU bm_2STOPBIT 00000008
-EQU bm_5BIT 00000000
-EQU bm_6BIT 00000002
-EQU bm_7BIT 00000004
-EQU bm_8BIT 00000006
-SET USART_C_VALUE 00000006
-SET USART_B_VALUE 00000098
-EQU usart_rx_size 00000010
-EQU usart_rx_mask 0000000f
-DSEG usart_rx_data 00000100
-DSEG usart_rx_in 00000110
-DSEG usart_rx_out 00000111
-CSEG VE_TO_RXBUF 00000041
-CSEG XT_TO_RXBUF 00000047
-CSEG PFA_rx_tobuf 00000048
-CSEG DO_NEXT 00007005
-CSEG VE_ISR_RX 00000058
-CSEG XT_ISR_RX 0000005d
-CSEG DO_COLON 00007001
-CSEG usart_rx_isr 0000005e
-CSEG XT_DOLITERAL 0000703d
-CSEG XT_CFETCH 00007098
-CSEG XT_DUP 000070b1
-CSEG XT_EQUAL 00007d7f
-CSEG XT_DOCONDBRANCH 00007036
-CSEG usart_rx_isr1 00000068
-CSEG XT_COLD 00007a59
-CSEG XT_EXIT 00007020
-CSEG XT_USART_INIT_RX_BUFFER 0000006a
-CSEG PFA_USART_INIT_RX_BUFFER 0000006b
-CSEG XT_INTSTORE 00007487
-CSEG XT_ZERO 00007154
-CSEG XT_FILL 000074cf
-CSEG VE_RX_BUFFER 00000077
-CSEG XT_RX_BUFFER 0000007c
-CSEG PFA_RX_BUFFER 0000007d
-CSEG XT_RXQ_BUFFER 00000097
-CSEG XT_PLUS 0000719d
-CSEG XT_SWAP 000070c4
-CSEG XT_1PLUS 0000722f
-CSEG XT_AND 00007213
-CSEG XT_CSTORE 0000708d
-CSEG VE_RXQ_BUFFER 00000091
-CSEG PFA_RXQ_BUFFER 00000098
-CSEG XT_PAUSE 00007a51
-CSEG XT_NOTEQUAL 00007113
-SET XT_RX 0000007c
-SET XT_RXQ 00000097
-SET XT_USART_INIT_RX 0000006a
-CSEG VE_TX_POLL 000000a1
-CSEG XT_TX_POLL 000000a7
-CSEG PFA_TX_POLL 000000a8
-CSEG XT_TXQ_POLL 000000b5
-CSEG VE_TXQ_POLL 000000af
-CSEG PFA_TXQ_POLL 000000b6
-SET XT_TX 000000a7
-SET XT_TXQ 000000b5
-SET XT_USART_INIT_TX 00000000
-CSEG VE_UBRR 000000be
-CSEG XT_UBRR 000000c2
-CSEG PFA_DOVALUE1 0000706f
-CSEG PFA_UBRR 000000c3
-ESEG EE_UBRRVAL 00000090
-CSEG XT_EDEFERFETCH 00007bb4
-CSEG XT_EDEFERSTORE 00007bbe
-CSEG VE_USART 000000c6
-CSEG XT_USART 000000cb
-CSEG PFA_USART 000000cc
-CSEG XT_BYTESWAP 000072f9
-EQU OW_PORT 00000005
-EQU OW_BIT 00000004
-SET OW_DDR 00000004
-SET OW_PIN 00000003
-CSEG VE_OW_RESET 000000e1
-CSEG XT_OW_RESET 000000e7
-CSEG PFA_OW_RESET 000000e8
-SET cycles 00000000
-SET loop_cycles 00000fa0
-CSEG VE_OW_SLOT 00000105
-CSEG XT_OW_SLOT 0000010b
-CSEG PFA_OW_SLOT 0000010c
-CSEG PFA_OW_SLOT0 00000119
-SET AMFORTH_NRWW_SIZE 00001ffc
-SET corepc 0000012d
-CSEG PFA_COLD 00007a5a
-ESEG intvec 00000000
-DSEG intcnt 00000112
-CSEG VE_MPLUS 00000144
-CSEG XT_MPLUS 00000147
-CSEG PFA_MPLUS 00000148
-CSEG XT_S2D 00007d67
-CSEG XT_DPLUS 00007415
-CSEG VE_UDSTAR 0000014b
-CSEG XT_UDSTAR 0000014f
-CSEG PFA_UDSTAR 00000150
-CSEG XT_TO_R 000070ff
-CSEG XT_UMSTAR 000071e0
-CSEG XT_DROP 000070d9
-CSEG XT_R_FROM 000070f6
-CSEG XT_ROT 000070e1
-CSEG VE_UMAX 0000015a
-CSEG XT_UMAX 0000015e
-CSEG PFA_UMAX 0000015f
-CSEG XT_2DUP 00007565
-CSEG XT_ULESS 0000715c
-CSEG UMAX1 00000164
-CSEG VE_UMIN 00000166
-CSEG XT_UMIN 0000016a
-CSEG PFA_UMIN 0000016b
-CSEG XT_UGREATER 00007167
-CSEG UMIN1 00000170
-CSEG XT_IMMEDIATEQ 00000172
-CSEG PFA_IMMEDIATEQ 00000173
-CSEG XT_ZEROEQUAL 0000711a
-CSEG IMMEDIATEQ1 0000017b
-CSEG XT_ONE 00007d86
-CSEG XT_TRUE 0000714b
-CSEG VE_NAME2FLAGS 0000017d
-CSEG XT_NAME2FLAGS 00000184
-CSEG PFA_NAME2FLAGS 00000185
-CSEG XT_FETCHI 000073cb
-CSEG VE_NEWEST 0000018a
-CSEG XT_NEWEST 0000018f
-CSEG PFA_DOVARIABLE 00007048
-CSEG PFA_NEWEST 00000190
-DSEG ram_newest 0000012e
-CSEG VE_LATEST 00000191
-CSEG XT_LATEST 00000196
-CSEG PFA_LATEST 00000197
-DSEG ram_latest 00000132
-CSEG VE_DOCREATE 00000198
-CSEG XT_DOCREATE 0000019e
-CSEG PFA_DOCREATE 0000019f
-CSEG XT_PARSENAME 000079b4
-CSEG XT_WLSCOPE 000002f5
-CSEG XT_CELLPLUS 0000755e
-CSEG XT_STORE 00007081
-CSEG XT_HEADER 000002da
-CSEG VE_BACKSLASH 000001a9
-CSEG XT_BACKSLASH 000001ac
-CSEG PFA_BACKSLASH 000001ad
-CSEG XT_SOURCE 0000799b
-CSEG XT_NIP 000070f0
-CSEG XT_TO_IN 0000757e
-CSEG VE_LPAREN 000001b2
-CSEG XT_LPAREN 000001b5
-CSEG PFA_LPAREN 000001b6
-CSEG XT_PARSE 00007987
-CSEG XT_2DROP 0000756e
-CSEG VE_COMPILE 000001bb
-CSEG XT_COMPILE 000001c1
-CSEG PFA_COMPILE 000001c2
-CSEG XT_ICELLPLUS 00007bab
-CSEG XT_COMMA 000001cc
-CSEG VE_COMMA 000001c9
-CSEG PFA_COMMA 000001cd
-CSEG XT_DP 000075ae
-CSEG XT_STOREI 00007373
-CSEG XT_DOTO 00007b99
-CSEG PFA_DP 000075af
-CSEG VE_BRACKETTICK 000001d4
-CSEG XT_BRACKETTICK 000001d8
-CSEG PFA_BRACKETTICK 000001d9
-CSEG XT_TICK 0000780a
-CSEG XT_LITERAL 000001e2
-CSEG VE_LITERAL 000001dc
-CSEG PFA_LITERAL 000001e3
-CSEG VE_SLITERAL 000001e7
-CSEG XT_SLITERAL 000001ed
-CSEG PFA_SLITERAL 000001ee
-CSEG XT_DOSLITERAL 0000776d
-CSEG XT_SCOMMA 0000777b
-CSEG XT_GMARK 000001f2
-CSEG PFA_GMARK 000001f3
-CSEG XT_GRESOLVE 000001f7
-CSEG PFA_GRESOLVE 000001f8
-CSEG XT_QSTACK 00007b57
-CSEG XT_LMARK 000001fd
-CSEG PFA_LMARK 000001fe
-CSEG XT_LRESOLVE 00000200
-CSEG PFA_LRESOLVE 00000201
-CSEG VE_AHEAD 00000204
-CSEG XT_AHEAD 00000209
-CSEG PFA_AHEAD 0000020a
-CSEG XT_DOBRANCH 0000702f
-CSEG VE_IF 0000020e
-CSEG XT_IF 00000211
-CSEG PFA_IF 00000212
-CSEG VE_ELSE 00000216
-CSEG XT_ELSE 0000021a
-CSEG PFA_ELSE 0000021b
-CSEG VE_THEN 00000221
-CSEG XT_THEN 00000225
-CSEG PFA_THEN 00000226
-CSEG VE_BEGIN 00000228
-CSEG XT_BEGIN 0000022d
-CSEG PFA_BEGIN 0000022e
-CSEG VE_WHILE 00000230
-CSEG XT_WHILE 00000235
-CSEG PFA_WHILE 00000236
-CSEG VE_REPEAT 00000239
-CSEG XT_REPEAT 0000023e
-CSEG PFA_REPEAT 0000023f
-CSEG XT_AGAIN 00000252
-CSEG VE_UNTIL 00000242
-CSEG XT_UNTIL 00000247
-CSEG PFA_UNTIL 00000248
-CSEG VE_AGAIN 0000024d
-CSEG PFA_AGAIN 00000253
-CSEG VE_DO 00000257
-CSEG XT_DO 0000025a
-CSEG PFA_DO 0000025b
-CSEG XT_DODO 0000729b
-CSEG XT_TO_L 000002b5
-CSEG VE_LOOP 00000261
-CSEG XT_LOOP 00000265
-CSEG PFA_LOOP 00000266
-CSEG XT_DOLOOP 000072c9
-CSEG XT_ENDLOOP 0000029c
-CSEG VE_PLUSLOOP 0000026a
-CSEG XT_PLUSLOOP 0000026f
-CSEG PFA_PLUSLOOP 00000270
-CSEG XT_DOPLUSLOOP 000072ba
-CSEG VE_LEAVE 00000274
-CSEG XT_LEAVE 00000279
-CSEG PFA_LEAVE 0000027a
-CSEG XT_UNLOOP 000072d4
-CSEG VE_QDO 0000027f
-CSEG XT_QDO 00000283
-CSEG PFA_QDO 00000284
-CSEG XT_QDOCHECK 0000028b
-CSEG PFA_QDOCHECK 0000028c
-CSEG PFA_QDOCHECK1 00000293
-CSEG XT_INVERT 000071fd
-CSEG VE_ENDLOOP 00000296
-CSEG PFA_ENDLOOP 0000029d
-CSEG LOOP1 0000029e
-CSEG XT_L_FROM 000002a9
-CSEG XT_QDUP 000070b9
-CSEG LOOP2 000002a5
-CSEG VE_L_FROM 000002a6
-CSEG PFA_L_FROM 000002aa
-CSEG XT_LP 000002c8
-CSEG XT_FETCH 00007079
-CSEG XT_PLUSSTORE 00007265
-CSEG VE_TO_L 000002b2
-CSEG PFA_TO_L 000002b6
-CSEG XT_TWO 00007d8b
-CSEG VE_LP0 000002bd
-CSEG XT_LP0 000002c1
-CSEG PFA_LP0 000002c2
-ESEG CFG_LP0 00000044
-CSEG VE_LP 000002c5
-CSEG PFA_LP 000002c9
-DSEG ram_lp 00000134
-CSEG VE_CREATE 000002ca
-CSEG XT_CREATE 000002cf
-CSEG PFA_CREATE 000002d0
-CSEG XT_REVEAL 000002fe
-CSEG PFA_DOCONSTANT 00007052
-CSEG VE_HEADER 000002d5
-CSEG PFA_HEADER 000002db
-CSEG XT_GREATERZERO 00007128
-CSEG PFA_HEADER1 000002ec
-CSEG XT_OR 0000721c
-CSEG XT_DOSCOMMA 0000777f
-CSEG XT_FETCHE 0000735f
-CSEG XT_THROW 00007841
-CSEG VE_WLSCOPE 000002ef
-CSEG PFA_DODEFER1 00007c13
-CSEG PFA_WLSCOPE 000002f6
-ESEG CFG_WLSCOPE 00000040
-CSEG VE_REVEAL 000002f9
-CSEG PFA_REVEAL 000002ff
-CSEG REVEAL1 00000309
-CSEG XT_STOREE 0000733b
-CSEG VE_DOES 0000030a
-CSEG XT_DOES 0000030f
-CSEG PFA_DOES 00000310
-CSEG XT_DODOES 00000322
-CSEG DO_DODOES 00000317
-CSEG PFA_DODOES 00000323
-CSEG XT_NFA2CFA 00007c7e
-CSEG VE_COLON 0000032b
-CSEG XT_COLON 0000032e
-CSEG PFA_COLON 0000032f
-CSEG XT_COLONNONAME 00000339
-CSEG VE_COLONNONAME 00000333
-CSEG PFA_COLONNONAME 0000033a
-CSEG XT_RBRACKET 0000034e
-CSEG VE_SEMICOLON 00000342
-CSEG XT_SEMICOLON 00000345
-CSEG PFA_SEMICOLON 00000346
-CSEG XT_LBRACKET 00000356
-CSEG VE_RBRACKET 0000034b
-CSEG PFA_RBRACKET 0000034f
-CSEG XT_STATE 0000754b
-CSEG VE_LBRACKET 00000353
-CSEG PFA_LBRACKET 00000357
-CSEG VE_VARIABLE 0000035b
-CSEG XT_VARIABLE 00000361
-CSEG PFA_VARIABLE 00000362
-CSEG XT_HERE 000075bf
-CSEG XT_CONSTANT 0000036d
-CSEG XT_ALLOT 000075c8
-CSEG VE_CONSTANT 00000367
-CSEG PFA_CONSTANT 0000036e
-CSEG VE_USER 00000374
-CSEG XT_USER 00000378
-CSEG PFA_USER 00000379
-CSEG PFA_DOUSER 00007058
-CSEG VE_RECURSE 0000037f
-CSEG XT_RECURSE 00000385
-CSEG PFA_RECURSE 00000386
-CSEG VE_IMMEDIATE 0000038a
-CSEG XT_IMMEDIATE 00000391
-CSEG PFA_IMMEDIATE 00000392
-CSEG XT_GET_CURRENT 00000433
-CSEG VE_BRACKETCHAR 0000039c
-CSEG XT_BRACKETCHAR 000003a1
-CSEG PFA_BRACKETCHAR 000003a2
-CSEG XT_CHAR 000078ea
-CSEG VE_ABORTQUOTE 000003a7
-CSEG XT_ABORTQUOTE 000003ac
-CSEG PFA_ABORTQUOTE 000003ad
-CSEG XT_SQUOTE 000074c1
-CSEG XT_QABORT 000003be
-CSEG VE_ABORT 000003b1
-CSEG XT_ABORT 000003b6
-CSEG PFA_ABORT 000003b7
-CSEG VE_QABORT 000003b9
-CSEG PFA_QABORT 000003bf
-CSEG QABO1 000003c4
-CSEG XT_ITYPE 000077a0
-CSEG VE_GET_STACK 000003c6
-CSEG XT_GET_STACK 000003cd
-CSEG PFA_N_FETCH_E2 000003e4
-CSEG PFA_N_FETCH_E1 000003da
-CSEG XT_I 000072ac
-CSEG XT_1MINUS 00007235
-CSEG XT_CELLS 00007558
-CSEG XT_OVER 000070cf
-CSEG VE_SET_STACK 000003e7
-CSEG XT_SET_STACK 000003ee
-CSEG PFA_SET_STACK 000003ef
-CSEG XT_ZEROLESS 00007121
-CSEG PFA_SET_STACK0 000003f6
-CSEG PFA_SET_STACK2 00000403
-CSEG PFA_SET_STACK1 000003fe
-CSEG XT_TUCK 00007576
-CSEG VE_MAPSTACK 00000405
-CSEG XT_MAPSTACK 0000040c
-CSEG PFA_MAPSTACK 0000040d
-CSEG XT_BOUNDS 00007d5e
-CSEG PFA_MAPSTACK3 00000428
-CSEG PFA_MAPSTACK1 00000417
-CSEG XT_R_FETCH 00007108
-CSEG XT_EXECUTE 0000702a
-CSEG PFA_MAPSTACK2 00000424
-CSEG VE_GET_CURRENT 0000042b
-CSEG PFA_GET_CURRENT 00000434
-ESEG CFG_CURRENT 0000004a
-CSEG VE_GET_ORDER 00000438
-CSEG XT_GET_ORDER 0000043f
-CSEG PFA_GET_ORDER 00000440
-ESEG CFG_ORDERLISTLEN 0000004e
-CSEG VE_CFG_ORDER 00000444
-CSEG XT_CFG_ORDER 0000044b
-CSEG PFA_CFG_ORDER 0000044c
-CSEG VE_COMPARE 0000044d
-CSEG XT_COMPARE 00000453
-CSEG PFA_COMPARE 00000454
-CSEG PFA_COMPARE_LOOP 00000460
-CSEG PFA_COMPARE_NOTEQUAL 0000046e
-CSEG PFA_COMPARE_ENDREACHED2 00000469
-CSEG PFA_COMPARE_ENDREACHED 0000046a
-CSEG PFA_COMPARE_CHECKLASTCHAR 0000046e
-CSEG PFA_COMPARE_DONE 00000470
-CSEG VE_NFA2LFA 00000475
-CSEG XT_NFA2LFA 0000047b
-CSEG PFA_NFA2LFA 0000047c
-CSEG XT_NAME2STRING 00007c72
-CSEG XT_2SLASH 00007204
-CSEG VE_DOTS 00000481
-CSEG XT_DOTS 00000484
-CSEG PFA_DOTS 00000485
-CSEG XT_DEPTH 00007aa1
-CSEG XT_UDOT 00007448
-CSEG XT_SPACE 000077e2
-CSEG PFA_DOTS2 00000493
-CSEG PFA_DOTS1 0000048e
-CSEG XT_PICK 000074af
-CSEG VE_SPIRW 00000494
-CSEG XT_SPIRW 00000499
-CSEG PFA_SPIRW 0000049a
-CSEG do_spirw 0000049e
-CSEG do_spirw1 0000049f
-CSEG VE_N_SPIR 000004a7
-CSEG XT_N_SPIR 000004ac
-CSEG PFA_N_SPIR 000004ad
-CSEG PFA_N_SPIR_LOOP 000004b2
-CSEG PFA_N_SPIR_LOOP1 000004b3
-CSEG VE_N_SPIW 000004be
-CSEG XT_N_SPIW 000004c3
-CSEG PFA_N_SPIW 000004c4
-CSEG PFA_N_SPIW_LOOP 000004c9
-CSEG PFA_N_SPIW_LOOP1 000004cb
-CSEG VE_APPLTURNKEY 000004d5
-CSEG XT_APPLTURNKEY 000004dd
-CSEG PFA_APPLTURNKEY 000004de
-CSEG XT_INTON 00007479
-CSEG XT_DOT_VER 00007b64
-CSEG XT_F_CPU 00007540
-CSEG XT_UMSLASHMOD 000071c2
-CSEG XT_DECIMAL 000075dd
-CSEG XT_DOT 00007722
-CSEG VE_SET_CURRENT 000004ef
-CSEG XT_SET_CURRENT 000004f7
-CSEG PFA_SET_CURRENT 000004f8
-CSEG VE_WORDLIST 000004fc
-CSEG XT_WORDLIST 00000502
-CSEG PFA_WORDLIST 00000503
-CSEG XT_EHERE 000075b7
-CSEG PFA_EHERE 000075b8
-CSEG VE_FORTHWORDLIST 0000050c
-CSEG XT_FORTHWORDLIST 00000515
-CSEG PFA_FORTHWORDLIST 00000516
-ESEG CFG_FORTHWORDLIST 0000004c
-CSEG VE_SET_ORDER 00000517
-CSEG XT_SET_ORDER 0000051e
-CSEG PFA_SET_ORDER 0000051f
-CSEG VE_SET_RECOGNIZERS 00000523
-CSEG XT_SET_RECOGNIZERS 0000052d
-CSEG PFA_SET_RECOGNIZERS 0000052e
-ESEG CFG_RECOGNIZERLISTLEN 00000060
-CSEG VE_GET_RECOGNIZERS 00000532
-CSEG XT_GET_RECOGNIZERS 0000053c
-CSEG PFA_GET_RECOGNIZERS 0000053d
-CSEG VE_CODE 00000541
-CSEG XT_CODE 00000545
-CSEG PFA_CODE 00000546
-CSEG VE_ENDCODE 0000054c
-CSEG XT_ENDCODE 00000552
-CSEG PFA_ENDCODE 00000553
-CSEG VE_MARKER 00000558
-CSEG XT_MARKER 0000055e
-CSEG PFA_MARKER 0000055f
-ESEG EE_MARKER 0000006c
-CSEG VE_POSTPONE 00000562
-CSEG XT_POSTPONE 00000568
-CSEG PFA_POSTPONE 00000569
-CSEG XT_FORTHRECOGNIZER 00007acc
-CSEG XT_RECOGNIZE 00007ad7
-CSEG VE_2R_FETCH 00000577
-CSEG XT_2R_FETCH 0000057b
-CSEG PFA_2R_FETCH 0000057c
-SET DPSTART 0000058b
-CSEG DO_INTERRUPT 00007014
-CSEG DO_EXECUTE 0000700d
-CSEG XT_ISREXEC 000074a2
-CSEG VE_EXIT 0000701c
-CSEG PFA_EXIT 00007021
-CSEG VE_EXECUTE 00007024
-CSEG PFA_EXECUTE 0000702b
-CSEG PFA_DOBRANCH 00007030
-CSEG PFA_DOCONDBRANCH 00007037
-CSEG PFA_DOLITERAL 0000703e
-CSEG XT_DOVARIABLE 00007047
-CSEG XT_DOCONSTANT 00007051
-CSEG XT_DOUSER 00007057
-CSEG VE_DOVALUE 00007063
-CSEG XT_DOVALUE 00007069
-CSEG PFA_DOVALUE 0000706a
-CSEG VE_FETCH 00007076
-CSEG PFA_FETCH 0000707a
-CSEG PFA_FETCHRAM 0000707a
-CSEG VE_STORE 0000707e
-CSEG PFA_STORE 00007082
-CSEG PFA_STORERAM 00007082
-CSEG VE_CSTORE 0000708a
-CSEG PFA_CSTORE 0000708e
-CSEG VE_CFETCH 00007095
-CSEG PFA_CFETCH 00007099
-CSEG VE_FETCHU 0000709d
-CSEG XT_FETCHU 000070a0
-CSEG PFA_FETCHU 000070a1
-CSEG XT_UP_FETCH 00007302
-CSEG VE_STOREU 000070a5
-CSEG XT_STOREU 000070a8
-CSEG PFA_STOREU 000070a9
-CSEG VE_DUP 000070ad
-CSEG PFA_DUP 000070b2
-CSEG VE_QDUP 000070b5
-CSEG PFA_QDUP 000070ba
-CSEG PFA_QDUP1 000070bf
-CSEG VE_SWAP 000070c0
-CSEG PFA_SWAP 000070c5
-CSEG VE_OVER 000070cb
-CSEG PFA_OVER 000070d0
-CSEG VE_DROP 000070d5
-CSEG PFA_DROP 000070da
-CSEG VE_ROT 000070dd
-CSEG PFA_ROT 000070e2
-CSEG VE_NIP 000070ec
-CSEG PFA_NIP 000070f1
-CSEG VE_R_FROM 000070f3
-CSEG PFA_R_FROM 000070f7
-CSEG VE_TO_R 000070fc
-CSEG PFA_TO_R 00007100
-CSEG VE_R_FETCH 00007105
-CSEG PFA_R_FETCH 00007109
-CSEG VE_NOTEQUAL 00007110
-CSEG PFA_NOTEQUAL 00007114
-CSEG VE_ZEROEQUAL 00007117
-CSEG PFA_ZEROEQUAL 0000711b
-CSEG PFA_ZERO1 00007157
-CSEG PFA_TRUE1 0000714e
-CSEG VE_ZEROLESS 0000711e
-CSEG PFA_ZEROLESS 00007122
-CSEG VE_GREATERZERO 00007125
-CSEG PFA_GREATERZERO 00007129
-CSEG VE_DGREATERZERO 0000712e
-CSEG XT_DGREATERZERO 00007132
-CSEG PFA_DGREATERZERO 00007133
-CSEG VE_DXT_ZEROLESS 0000713c
-CSEG XT_DXT_ZEROLESS 00007140
-CSEG PFA_DXT_ZEROLESS 00007141
-CSEG VE_TRUE 00007147
-CSEG PFA_TRUE 0000714c
-CSEG VE_ZERO 00007151
-CSEG PFA_ZERO 00007155
-CSEG VE_ULESS 00007159
-CSEG PFA_ULESS 0000715d
-CSEG VE_UGREATER 00007164
-CSEG PFA_UGREATER 00007168
-CSEG VE_LESS 0000716b
-CSEG XT_LESS 0000716e
-CSEG PFA_LESS 0000716f
-CSEG PFA_LESSDONE 00007173
-CSEG VE_GREATER 00007175
-CSEG XT_GREATER 00007178
-CSEG PFA_GREATER 00007179
-CSEG PFA_GREATERDONE 0000717d
-CSEG VE_LOG2 00007180
-CSEG XT_LOG2 00007184
-CSEG PFA_LOG2 00007185
-CSEG PFA_LOG2_1 00007188
-CSEG PFA_LOG2_2 0000718e
-CSEG VE_MINUS 00007190
-CSEG XT_MINUS 00007193
-CSEG PFA_MINUS 00007194
-CSEG VE_PLUS 0000719a
-CSEG PFA_PLUS 0000719e
-CSEG VE_MSTAR 000071a3
-CSEG XT_MSTAR 000071a6
-CSEG PFA_MSTAR 000071a7
-CSEG VE_UMSLASHMOD 000071bd
-CSEG PFA_UMSLASHMOD 000071c3
-CSEG PFA_UMSLASHMODmod 000071c8
-CSEG PFA_UMSLASHMODmod_loop 000071c9
-CSEG PFA_UMSLASHMODmod_loop_control 000071d6
-CSEG PFA_UMSLASHMODmod_subtract 000071d3
-CSEG PFA_UMSLASHMODmod_done 000071d8
-CSEG VE_UMSTAR 000071dc
-CSEG PFA_UMSTAR 000071e1
-CSEG VE_INVERT 000071f8
-CSEG PFA_INVERT 000071fe
-CSEG VE_2SLASH 00007201
-CSEG PFA_2SLASH 00007205
-CSEG VE_2STAR 00007208
-CSEG XT_2STAR 0000720b
-CSEG PFA_2STAR 0000720c
-CSEG VE_AND 0000720f
-CSEG PFA_AND 00007214
-CSEG VE_OR 00007219
-CSEG PFA_OR 0000721d
-CSEG VE_XOR 00007222
-CSEG XT_XOR 00007226
-CSEG PFA_XOR 00007227
-CSEG VE_1PLUS 0000722c
-CSEG PFA_1PLUS 00007230
-CSEG VE_1MINUS 00007232
-CSEG PFA_1MINUS 00007236
-CSEG VE_QNEGATE 00007238
-CSEG XT_QNEGATE 0000723e
-CSEG PFA_QNEGATE 0000723f
-CSEG QNEG1 00007243
-CSEG XT_NEGATE 0000763f
-CSEG VE_LSHIFT 00007244
-CSEG XT_LSHIFT 00007249
-CSEG PFA_LSHIFT 0000724a
-CSEG PFA_LSHIFT1 0000724d
-CSEG PFA_LSHIFT2 00007252
-CSEG VE_RSHIFT 00007253
-CSEG XT_RSHIFT 00007258
-CSEG PFA_RSHIFT 00007259
-CSEG PFA_RSHIFT1 0000725c
-CSEG PFA_RSHIFT2 00007261
-CSEG VE_PLUSSTORE 00007262
-CSEG PFA_PLUSSTORE 00007266
-CSEG VE_RP_FETCH 00007272
-CSEG XT_RP_FETCH 00007276
-CSEG PFA_RP_FETCH 00007277
-CSEG VE_RP_STORE 0000727c
-CSEG XT_RP_STORE 00007280
-CSEG PFA_RP_STORE 00007281
-CSEG VE_SP_FETCH 00007289
-CSEG XT_SP_FETCH 0000728d
-CSEG PFA_SP_FETCH 0000728e
-CSEG VE_SP_STORE 00007292
-CSEG XT_SP_STORE 00007296
-CSEG PFA_SP_STORE 00007297
-CSEG PFA_DODO 0000729c
-CSEG PFA_DODO1 0000729e
-CSEG VE_I 000072a9
-CSEG PFA_I 000072ad
-CSEG PFA_DOPLUSLOOP 000072bb
-CSEG PFA_DOPLUSLOOP_LEAVE 000072c5
-CSEG PFA_DOPLUSLOOP_NEXT 000072c2
-CSEG PFA_DOLOOP 000072ca
-CSEG VE_UNLOOP 000072cf
-CSEG PFA_UNLOOP 000072d5
-CSEG VE_CMOVE_G 000072da
-CSEG XT_CMOVE_G 000072df
-CSEG PFA_CMOVE_G 000072e0
-CSEG PFA_CMOVE_G1 000072f1
-CSEG PFA_CMOVE_G2 000072ed
-CSEG VE_BYTESWAP 000072f6
-CSEG PFA_BYTESWAP 000072fa
-CSEG VE_UP_FETCH 000072fe
-CSEG PFA_UP_FETCH 00007303
-CSEG VE_UP_STORE 00007307
-CSEG XT_UP_STORE 0000730b
-CSEG PFA_UP_STORE 0000730c
-CSEG VE_1MS 00007310
-CSEG XT_1MS 00007314
-CSEG PFA_1MS 00007315
-CSEG VE_2TO_R 0000731a
-CSEG XT_2TO_R 0000731e
-CSEG PFA_2TO_R 0000731f
-CSEG VE_2R_FROM 00007329
-CSEG XT_2R_FROM 0000732d
-CSEG PFA_2R_FROM 0000732e
-CSEG VE_STOREE 00007338
-CSEG PFA_STOREE 0000733c
-CSEG PFA_STOREE0 0000733c
-CSEG PFA_FETCHE2 0000736a
-CSEG PFA_STOREE3 00007346
-CSEG PFA_STOREE1 00007351
-CSEG PFA_STOREE4 0000734d
-CSEG PFA_STOREE2 00007353
-CSEG VE_FETCHE 0000735c
-CSEG PFA_FETCHE 00007360
-CSEG PFA_FETCHE1 00007360
-CSEG VE_STOREI 00007370
-CSEG PFA_STOREI 00007374
-ESEG EE_STOREI 0000006a
-CSEG VE_DO_STOREI_NRWW 00007377
-CSEG XT_DO_STOREI 0000737e
-CSEG PFA_DO_STOREI_NRWW 0000737f
-CSEG DO_STOREI_atmega 00007393
-CSEG pageload 000073a4
-CSEG DO_STOREI_writepage 0000739d
-CSEG dospm 000073bd
-EQU pagemask ffffff80
-CSEG pageload_loop 000073aa
-CSEG pageload_newdata 000073b5
-CSEG pageload_cont 000073b7
-CSEG pageload_done 000073bc
-CSEG dospm_wait_ee 000073bd
-CSEG dospm_wait_spm 000073bf
-CSEG VE_FETCHI 000073c8
-CSEG PFA_FETCHI 000073cc
-CSEG VE_N_TO_R 000073d2
-CSEG XT_N_TO_R 000073d6
-CSEG PFA_N_TO_R 000073d7
-CSEG PFA_N_TO_R1 000073d9
-CSEG VE_N_R_FROM 000073e4
-CSEG XT_N_R_FROM 000073e8
-CSEG PFA_N_R_FROM 000073e9
-CSEG PFA_N_R_FROM1 000073ee
-CSEG VE_D2STAR 000073f6
-CSEG XT_D2STAR 000073fa
-CSEG PFA_D2STAR 000073fb
-CSEG VE_D2SLASH 00007404
-CSEG XT_D2SLASH 00007408
-CSEG PFA_D2SLASH 00007409
-CSEG VE_DPLUS 00007412
-CSEG PFA_DPLUS 00007416
-CSEG VE_DMINUS 00007423
-CSEG XT_DMINUS 00007426
-CSEG PFA_DMINUS 00007427
-CSEG VE_DINVERT 00007435
-CSEG XT_DINVERT 0000743b
-CSEG PFA_DINVERT 0000743c
-CSEG VE_UDOT 00007445
-CSEG PFA_UDOT 00007449
-CSEG XT_UDDOT 0000772a
-CSEG VE_UDOTR 0000744c
-CSEG XT_UDOTR 00007450
-CSEG PFA_UDOTR 00007451
-CSEG XT_UDDOTR 00007733
-CSEG VE_SHOWWORDLIST 00007455
-CSEG XT_SHOWWORDLIST 0000745e
-CSEG PFA_SHOWWORDLIST 0000745f
-CSEG XT_SHOWWORD 00007464
-CSEG XT_TRAVERSEWORDLIST 00007c57
-CSEG PFA_SHOWWORD 00007465
-CSEG VE_WORDS 0000746a
-CSEG XT_WORDS 0000746f
-CSEG PFA_WORDS 00007470
-CSEG VE_INTON 00007475
-CSEG PFA_INTON 0000747a
-CSEG VE_INTOFF 0000747c
-CSEG XT_INTOFF 00007480
-CSEG PFA_INTOFF 00007481
-CSEG VE_INTSTORE 00007483
-CSEG PFA_INTSTORE 00007488
-CSEG VE_INTFETCH 0000748d
-CSEG XT_INTFETCH 00007491
-CSEG PFA_INTFETCH 00007492
-CSEG VE_INTTRAP 00007497
-CSEG XT_INTTRAP 0000749d
-CSEG PFA_INTTRAP 0000749e
-CSEG PFA_ISREXEC 000074a3
-CSEG XT_ISREND 000074a7
-CSEG PFA_ISREND 000074a8
-CSEG PFA_ISREND1 000074aa
-CSEG VE_PICK 000074ab
-CSEG PFA_PICK 000074b0
-CSEG VE_DOTSTRING 000074b6
-CSEG XT_DOTSTRING 000074b9
-CSEG PFA_DOTSTRING 000074ba
-CSEG VE_SQUOTE 000074be
-CSEG PFA_SQUOTE 000074c2
-CSEG PFA_SQUOTE1 000074ca
-CSEG VE_FILL 000074cb
-CSEG PFA_FILL 000074d0
-CSEG PFA_FILL2 000074dc
-CSEG PFA_FILL1 000074d7
-CSEG VE_ENVIRONMENT 000074de
-CSEG XT_ENVIRONMENT 000074e6
-CSEG PFA_ENVIRONMENT 000074e7
-ESEG CFG_ENVIRONMENT 00000048
-CSEG VE_ENVWORDLISTS 000074e8
-CSEG XT_ENVWORDLISTS 000074ef
-CSEG PFA_ENVWORDLISTS 000074f0
-CSEG VE_ENVSLASHPAD 000074f3
-CSEG XT_ENVSLASHPAD 000074f7
-CSEG PFA_ENVSLASHPAD 000074f8
-CSEG XT_PAD 00007584
-CSEG VE_ENVSLASHHOLD 000074fc
-CSEG XT_ENVSLASHHOLD 00007501
-CSEG PFA_ENVSLASHHOLD 00007502
-CSEG VE_ENV_FORTHNAME 00007506
-CSEG XT_ENV_FORTHNAME 0000750d
-CSEG PFA_EN_FORTHNAME 0000750e
-CSEG VE_ENV_FORTHVERSION 00007515
-CSEG XT_ENV_FORTHVERSION 0000751b
-CSEG PFA_EN_FORTHVERSION 0000751c
-CSEG VE_ENV_CPU 0000751f
-CSEG XT_ENV_CPU 00007523
-CSEG PFA_EN_CPU 00007524
-CSEG XT_ICOUNT 000077cc
-CSEG VE_ENV_MCUINFO 00007528
-CSEG XT_ENV_MCUINFO 0000752e
-CSEG PFA_EN_MCUINFO 0000752f
-CSEG VE_ENVUSERSIZE 00007532
-CSEG XT_ENVUSERSIZE 00007537
-CSEG PFA_ENVUSERSIZE 00007538
-CSEG VE_F_CPU 0000753b
-CSEG PFA_F_CPU 00007541
-CSEG VE_STATE 00007546
-CSEG PFA_STATE 0000754c
-DSEG ram_state 00000136
-CSEG VE_BASE 0000754d
-CSEG XT_BASE 00007551
-CSEG PFA_BASE 00007552
-CSEG VE_CELLS 00007553
-CSEG VE_CELLPLUS 00007559
-CSEG PFA_CELLPLUS 0000755f
-CSEG VE_2DUP 00007561
-CSEG PFA_2DUP 00007566
-CSEG VE_2DROP 00007569
-CSEG PFA_2DROP 0000756f
-CSEG VE_TUCK 00007572
-CSEG PFA_TUCK 00007577
-CSEG VE_TO_IN 0000757a
-CSEG PFA_TO_IN 0000757f
-CSEG VE_PAD 00007580
-CSEG PFA_PAD 00007585
-CSEG VE_EMIT 0000758a
-CSEG XT_EMIT 0000758e
-CSEG PFA_EMIT 0000758f
-CSEG XT_UDEFERFETCH 00007bdc
-CSEG XT_UDEFERSTORE 00007be8
-CSEG VE_EMITQ 00007592
-CSEG XT_EMITQ 00007597
-CSEG PFA_EMITQ 00007598
-CSEG VE_KEY 0000759b
-CSEG XT_KEY 0000759f
-CSEG PFA_KEY 000075a0
-CSEG VE_KEYQ 000075a3
-CSEG XT_KEYQ 000075a7
-CSEG PFA_KEYQ 000075a8
-CSEG VE_DP 000075ab
-ESEG CFG_DP 0000003a
-CSEG VE_EHERE 000075b2
-ESEG EE_EHERE 0000003e
-CSEG VE_HERE 000075bb
-CSEG PFA_HERE 000075c0
-ESEG EE_HERE 0000003c
-CSEG VE_ALLOT 000075c3
-CSEG PFA_ALLOT 000075c9
-CSEG VE_BIN 000075ce
-CSEG XT_BIN 000075d2
-CSEG PFA_BIN 000075d3
-CSEG VE_DECIMAL 000075d7
-CSEG PFA_DECIMAL 000075de
-CSEG VE_HEX 000075e3
-CSEG XT_HEX 000075e7
-CSEG PFA_HEX 000075e8
-CSEG VE_BL 000075ed
-CSEG XT_BL 000075f0
-CSEG PFA_BL 000075f1
-CSEG VE_TURNKEY 000075f2
-CSEG XT_TURNKEY 000075f8
-CSEG PFA_TURNKEY 000075f9
-ESEG CFG_TURNKEY 00000046
-CSEG VE_SLASHMOD 000075fc
-CSEG XT_SLASHMOD 00007600
-CSEG PFA_SLASHMOD 00007601
-CSEG PFA_SLASHMOD_1 0000760c
-CSEG PFA_SLASHMOD_2 00007612
-CSEG PFA_SLASHMOD_3 00007615
-CSEG PFA_SLASHMOD_5 00007620
-CSEG PFA_SLASHMOD_4 0000761f
-CSEG PFA_SLASHMODmod_done 0000762b
-CSEG PFA_SLASHMOD_6 00007629
-CSEG VE_USLASHMOD 0000762f
-CSEG XT_USLASHMOD 00007634
-CSEG PFA_USLASHMOD 00007635
-CSEG VE_NEGATE 0000763a
-CSEG PFA_NEGATE 00007640
-CSEG VE_SLASH 00007643
-CSEG XT_SLASH 00007646
-CSEG PFA_SLASH 00007647
-CSEG VE_MOD 0000764a
-CSEG XT_MOD 0000764e
-CSEG PFA_MOD 0000764f
-CSEG VE_ABS 00007652
-CSEG XT_ABS 00007656
-CSEG PFA_ABS 00007657
-CSEG VE_MIN 0000765a
-CSEG XT_MIN 0000765e
-CSEG PFA_MIN 0000765f
-CSEG PFA_MIN1 00007664
-CSEG VE_MAX 00007666
-CSEG XT_MAX 0000766a
-CSEG PFA_MAX 0000766b
-CSEG PFA_MAX1 00007670
-CSEG VE_WITHIN 00007672
-CSEG XT_WITHIN 00007677
-CSEG PFA_WITHIN 00007678
-CSEG VE_TOUPPER 0000767f
-CSEG XT_TOUPPER 00007685
-CSEG PFA_TOUPPER 00007686
-CSEG PFA_TOUPPER0 00007691
-CSEG VE_TOLOWER 00007692
-CSEG XT_TOLOWER 00007698
-CSEG PFA_TOLOWER 00007699
-CSEG PFA_TOLOWER0 000076a4
-CSEG VE_HLD 000076a5
-CSEG XT_HLD 000076a9
-CSEG PFA_HLD 000076aa
-DSEG ram_hld 00000138
-CSEG VE_HOLD 000076ab
-CSEG XT_HOLD 000076af
-CSEG PFA_HOLD 000076b0
-CSEG VE_L_SHARP 000076bb
-CSEG XT_L_SHARP 000076be
-CSEG PFA_L_SHARP 000076bf
-CSEG VE_SHARP 000076c3
-CSEG XT_SHARP 000076c6
-CSEG PFA_SHARP 000076c7
-CSEG XT_UDSLASHMOD 00007743
-CSEG PFA_SHARP1 000076d4
-CSEG VE_SHARP_S 000076d9
-CSEG XT_SHARP_S 000076dc
-CSEG PFA_SHARP_S 000076dd
-CSEG NUMS1 000076dd
-CSEG VE_SHARP_G 000076e4
-CSEG XT_SHARP_G 000076e7
-CSEG PFA_SHARP_G 000076e8
-CSEG VE_SIGN 000076ef
-CSEG XT_SIGN 000076f3
-CSEG PFA_SIGN 000076f4
-CSEG PFA_SIGN1 000076fa
-CSEG VE_DDOTR 000076fb
-CSEG XT_DDOTR 000076ff
-CSEG PFA_DDOTR 00007700
-CSEG XT_DABS 00007cd4
-CSEG XT_SPACES 000077eb
-CSEG XT_TYPE 000077fb
-CSEG VE_DOTR 0000770e
-CSEG XT_DOTR 00007711
-CSEG PFA_DOTR 00007712
-CSEG VE_DDOT 00007717
-CSEG XT_DDOT 0000771a
-CSEG PFA_DDOT 0000771b
-CSEG VE_DOT 0000771f
-CSEG PFA_DOT 00007723
-CSEG VE_UDDOT 00007726
-CSEG PFA_UDDOT 0000772b
-CSEG VE_UDDOTR 0000772f
-CSEG PFA_UDDOTR 00007734
-CSEG VE_UDSLASHMOD 0000773e
-CSEG PFA_UDSLASHMOD 00007744
-CSEG VE_DIGITQ 0000774e
-CSEG XT_DIGITQ 00007753
-CSEG PFA_DIGITQ 00007754
-CSEG PFA_DOSLITERAL 0000776e
-CSEG VE_SCOMMA 00007778
-CSEG PFA_SCOMMA 0000777c
-CSEG PFA_DOSCOMMA 00007780
-CSEG PFA_SCOMMA2 00007792
-CSEG PFA_SCOMMA1 0000778c
-CSEG PFA_SCOMMA3 00007799
-CSEG VE_ITYPE 0000779b
-CSEG PFA_ITYPE 000077a1
-CSEG PFA_ITYPE2 000077b4
-CSEG PFA_ITYPE1 000077ac
-CSEG XT_LOWEMIT 000077c1
-CSEG XT_HIEMIT 000077bd
-CSEG PFA_ITYPE3 000077bb
-CSEG PFA_HIEMIT 000077be
-CSEG PFA_LOWEMIT 000077c2
-CSEG VE_ICOUNT 000077c7
-CSEG PFA_ICOUNT 000077cd
-CSEG VE_CR 000077d2
-CSEG XT_CR 000077d5
-CSEG PFA_CR 000077d6
-CSEG VE_SPACE 000077dd
-CSEG PFA_SPACE 000077e3
-CSEG VE_SPACES 000077e6
-CSEG PFA_SPACES 000077ec
-CSEG SPCS1 000077ee
-CSEG SPCS2 000077f5
-CSEG VE_TYPE 000077f7
-CSEG PFA_TYPE 000077fc
-CSEG PFA_TYPE2 00007806
-CSEG PFA_TYPE1 00007801
-CSEG VE_TICK 00007807
-CSEG PFA_TICK 0000780b
-CSEG XT_DT_NULL 00007b4a
-CSEG XT_NOOP 00007b7f
-CSEG PFA_TICK1 0000781c
-CSEG VE_HANDLER 0000781e
-CSEG XT_HANDLER 00007824
-CSEG PFA_HANDLER 00007825
-CSEG VE_CATCH 00007826
-CSEG XT_CATCH 0000782b
-CSEG PFA_CATCH 0000782c
-CSEG VE_THROW 0000783c
-CSEG PFA_THROW 00007842
-CSEG PFA_THROW1 00007848
-CSEG VE_CSKIP 00007855
-CSEG XT_CSKIP 0000785a
-CSEG PFA_CSKIP 0000785b
-CSEG PFA_CSKIP1 0000785c
-CSEG PFA_CSKIP2 00007869
-CSEG XT_SLASHSTRING 000079a5
-CSEG VE_CSCAN 0000786c
-CSEG XT_CSCAN 00007871
-CSEG PFA_CSCAN 00007872
-CSEG PFA_CSCAN1 00007874
-CSEG PFA_CSCAN2 00007886
-CSEG VE_ACCEPT 0000788c
-CSEG XT_ACCEPT 00007891
-CSEG PFA_ACCEPT 00007892
-CSEG ACC1 00007896
-CSEG XT_CRLFQ 000078d2
-CSEG ACC5 000078c4
-CSEG ACC3 000078b4
-CSEG ACC6 000078b2
-CSEG XT_BS 000078ca
-CSEG ACC4 000078c2
-CSEG PFA_ACCEPT6 000078bb
-CSEG VE_REFILL 000078dd
-CSEG XT_REFILL 000078e2
-CSEG PFA_REFILL 000078e3
-CSEG VE_CHAR 000078e6
-CSEG PFA_CHAR 000078eb
-CSEG VE_NUMBER 000078ef
-CSEG XT_NUMBER 000078f4
-CSEG PFA_NUMBER 000078f5
-CSEG XT_QSIGN 00007938
-CSEG XT_SET_BASE 0000794b
-CSEG PFA_NUMBER0 0000790b
-CSEG XT_TO_NUMBER 00007969
-CSEG PFA_NUMBER1 0000792d
-CSEG PFA_NUMBER2 00007924
-CSEG PFA_NUMBER6 00007925
-CSEG PFA_NUMBER3 00007921
-CSEG XT_DNEGATE 00007ce1
-CSEG PFA_NUMBER5 00007933
-CSEG PFA_NUMBER4 00007932
-CSEG PFA_QSIGN 00007939
-CSEG PFA_NUMBERSIGN_DONE 00007944
-CSEG XT_BASES 00007946
-CSEG PFA_SET_BASE 0000794c
-CSEG SET_BASE1 00007961
-CSEG SET_BASE2 00007962
-CSEG VE_TO_NUMBER 00007963
-CSEG TONUM1 0000796a
-CSEG TONUM3 00007981
-CSEG TONUM2 00007975
-CSEG XT_2SWAP 00007d05
-CSEG VE_PARSE 00007982
-CSEG PFA_PARSE 00007988
-CSEG VE_SOURCE 00007996
-CSEG PFA_SOURCE 0000799c
-CSEG VE_SLASHSTRING 0000799f
-CSEG PFA_SLASHSTRING 000079a6
-CSEG VE_PARSENAME 000079ad
-CSEG PFA_PARSENAME 000079b5
-CSEG XT_SKIPSCANCHAR 000079b8
-CSEG PFA_SKIPSCANCHAR 000079b9
-CSEG VE_FINDXT 000079ca
-CSEG XT_FINDXT 000079d0
-CSEG PFA_FINDXT 000079d1
-CSEG XT_FINDXTA 000079dc
-CSEG PFA_FINDXT1 000079db
-CSEG PFA_FINDXTA 000079dd
-CSEG XT_SEARCH_WORDLIST 00007c25
-CSEG PFA_FINDXTA1 000079e9
-CSEG XT_DEFAULT_PROMPTOK 000079ea
-CSEG PFA_DEFAULT_PROMPTOK 000079eb
-CSEG VE_PROMPTOK 000079f1
-CSEG XT_PROMPTOK 000079f5
-CSEG PFA_PROMPTOK 000079f6
-CSEG XT_DEFAULT_PROMPTREADY 000079f9
-CSEG PFA_DEFAULT_PROMPTREADY 000079fa
-CSEG VE_PROMPTREADY 00007a00
-CSEG XT_PROMPTREADY 00007a05
-CSEG PFA_PROMPTREADY 00007a06
-CSEG XT_DEFAULT_PROMPTERROR 00007a09
-CSEG PFA_DEFAULT_PROMPTERROR 00007a0a
-CSEG VE_PROMPTERROR 00007a1b
-CSEG XT_PROMPTERROR 00007a20
-CSEG PFA_PROMPTERROR 00007a21
-CSEG VE_QUIT 00007a24
-CSEG XT_QUIT 00007a28
-CSEG PFA_QUIT 00007a29
-CSEG XT_SP0 00007a89
-CSEG XT_RP0 00007a96
-CSEG PFA_QUIT2 00007a31
-CSEG PFA_QUIT4 00007a37
-CSEG PFA_QUIT3 00007a49
-CSEG XT_INTERPRET 00007aaf
-CSEG PFA_QUIT5 00007a47
-CSEG VE_PAUSE 00007a4c
-CSEG PFA_PAUSE 00007a52
-DSEG ram_pause 0000013a
-CSEG XT_RDEFERFETCH 00007bc8
-CSEG XT_RDEFERSTORE 00007bd2
-CSEG VE_COLD 00007a55
-CSEG clearloop 00007a61
-DSEG ram_user1 0000013c
-CSEG PFA_WARM 00007a7c
-CSEG VE_WARM 00007a77
-CSEG XT_WARM 00007a7b
-CSEG XT_INIT_RAM 00007d50
-CSEG XT_DEFERSTORE 00007bf3
-CSEG VE_SP0 00007a85
-CSEG PFA_SP0 00007a8a
-CSEG VE_SP 00007a8d
-CSEG XT_SP 00007a90
-CSEG PFA_SP 00007a91
-CSEG VE_RP0 00007a92
-CSEG PFA_RP0 00007a97
-CSEG XT_DORP0 00007a9a
-CSEG PFA_DORP0 00007a9b
-CSEG VE_DEPTH 00007a9c
-CSEG PFA_DEPTH 00007aa2
-CSEG VE_INTERPRET 00007aa8
-CSEG PFA_INTERPRET 00007ab0
-CSEG PFA_INTERPRET2 00007ac0
-CSEG PFA_INTERPRET1 00007abb
-CSEG VE_FORTHRECOGNIZER 00007ac2
-CSEG PFA_FORTHRECOGNIZER 00007acd
-ESEG CFG_FORTHRECOGNIZER 00000042
-CSEG VE_RECOGNIZE 00007ad0
-CSEG PFA_RECOGNIZE 00007ad8
-CSEG XT_RECOGNIZE_A 00007ae2
-CSEG PFA_RECOGNIZE1 00007ae1
-CSEG PFA_RECOGNIZE_A 00007ae3
-CSEG PFA_RECOGNIZE_A1 00007af3
-CSEG VE_DT_NUM 00007af7
-CSEG XT_DT_NUM 00007afc
-CSEG PFA_DT_NUM 00007afd
-CSEG VE_DT_DNUM 00007b00
-CSEG XT_DT_DNUM 00007b06
-CSEG PFA_DT_DNUM 00007b07
-CSEG XT_2LITERAL 00007d77
-CSEG VE_REC_NUM 00007b0a
-CSEG XT_REC_NUM 00007b10
-CSEG PFA_REC_NUM 00007b11
-CSEG PFA_REC_NONUMBER 00007b1c
-CSEG PFA_REC_INTNUM2 00007b1a
-CSEG VE_REC_FIND 00007b1e
-CSEG XT_REC_FIND 00007b24
-CSEG PFA_REC_FIND 00007b25
-CSEG PFA_REC_WORD_FOUND 00007b2d
-CSEG XT_DT_XT 00007b34
-CSEG VE_DT_XT 00007b2f
-CSEG PFA_DT_XT 00007b35
-CSEG XT_R_WORD_INTERPRET 00007b38
-CSEG XT_R_WORD_COMPILE 00007b3c
-CSEG PFA_R_WORD_INTERPRET 00007b39
-CSEG PFA_R_WORD_COMPILE 00007b3d
-CSEG PFA_R_WORD_COMPILE1 00007b42
-CSEG VE_DT_NULL 00007b44
-CSEG PFA_DT_NULL 00007b4b
-CSEG XT_FAIL 00007b4e
-CSEG PFA_FAIL 00007b4f
-CSEG VE_QSTACK 00007b52
-CSEG PFA_QSTACK 00007b58
-CSEG PFA_QSTACK1 00007b5f
-CSEG VE_DOT_VER 00007b60
-CSEG PFA_DOT_VER 00007b65
-CSEG VE_NOOP 00007b7b
-CSEG PFA_NOOP 00007b80
-CSEG VE_UNUSED 00007b81
-CSEG XT_UNUSED 00007b86
-CSEG PFA_UNUSED 00007b87
-CSEG VE_TO 00007b8b
-CSEG XT_TO 00007b8e
-CSEG PFA_TO 00007b8f
-CSEG XT_TO_BODY 00007d70
-CSEG PFA_TO1 00007b9f
-CSEG PFA_DOTO 00007b9a
-CSEG VE_ICELLPLUS 00007ba5
-CSEG PFA_ICELLPLUS 00007bac
-CSEG VE_EDEFERFETCH 00007bae
-CSEG PFA_EDEFERFETCH 00007bb5
-CSEG VE_EDEFERSTORE 00007bb8
-CSEG PFA_EDEFERSTORE 00007bbf
-CSEG VE_RDEFERFETCH 00007bc2
-CSEG PFA_RDEFERFETCH 00007bc9
-CSEG VE_RDEFERSTORE 00007bcc
-CSEG PFA_RDEFERSTORE 00007bd3
-CSEG VE_UDEFERFETCH 00007bd6
-CSEG PFA_UDEFERFETCH 00007bdd
-CSEG VE_UDEFERSTORE 00007be2
-CSEG PFA_UDEFERSTORE 00007be9
-CSEG VE_DEFERSTORE 00007bee
-CSEG PFA_DEFERSTORE 00007bf4
-CSEG VE_DEFERFETCH 00007bfb
-CSEG XT_DEFERFETCH 00007c00
-CSEG PFA_DEFERFETCH 00007c01
-CSEG VE_DODEFER 00007c07
-CSEG XT_DODEFER 00007c0d
-CSEG PFA_DODEFER 00007c0e
-CSEG VE_SEARCH_WORDLIST 00007c1b
-CSEG PFA_SEARCH_WORDLIST 00007c26
-CSEG XT_ISWORD 00007c3a
-CSEG PFA_SEARCH_WORDLIST1 00007c34
-CSEG PFA_ISWORD 00007c3b
-CSEG XT_ICOMPARE 00007c88
-CSEG PFA_ISWORD3 00007c48
-CSEG VE_TRAVERSEWORDLIST 00007c4c
-CSEG PFA_TRAVERSEWORDLIST 00007c58
-CSEG PFA_TRAVERSEWORDLIST1 00007c59
-CSEG PFA_TRAVERSEWORDLIST2 00007c68
-CSEG VE_NAME2STRING 00007c6a
-CSEG PFA_NAME2STRING 00007c73
-CSEG VE_NFA2CFA 00007c78
-CSEG PFA_NFA2CFA 00007c7f
-CSEG VE_ICOMPARE 00007c82
-CSEG PFA_ICOMPARE 00007c89
-CSEG PFA_ICOMPARE_SAMELEN 00007c93
-CSEG PFA_ICOMPARE_DONE 00007cb6
-CSEG PFA_ICOMPARE_LOOP 00007c99
-CSEG PFA_ICOMPARE_LASTCELL 00007ca7
-CSEG PFA_ICOMPARE_NEXTLOOP 00007cae
-CSEG VE_STAR 00007cb9
-CSEG XT_STAR 00007cbc
-CSEG PFA_STAR 00007cbd
-CSEG VE_J 00007cc0
-CSEG XT_J 00007cc3
-CSEG PFA_J 00007cc4
-CSEG VE_DABS 00007cd0
-CSEG PFA_DABS 00007cd5
-CSEG PFA_DABS1 00007cda
-CSEG VE_DNEGATE 00007cdb
-CSEG PFA_DNEGATE 00007ce2
-CSEG VE_CMOVE 00007ce7
-CSEG XT_CMOVE 00007cec
-CSEG PFA_CMOVE 00007ced
-CSEG PFA_CMOVE1 00007cfa
-CSEG PFA_CMOVE2 00007cf6
-CSEG VE_2SWAP 00007d00
-CSEG PFA_2SWAP 00007d06
-CSEG VE_REFILLTIB 00007d0b
-CSEG XT_REFILLTIB 00007d12
-CSEG PFA_REFILLTIB 00007d13
-CSEG XT_TIB 00007d2e
-CSEG XT_NUMBERTIB 00007d34
-CSEG VE_SOURCETIB 00007d1e
-CSEG XT_SOURCETIB 00007d25
-CSEG PFA_SOURCETIB 00007d26
-CSEG VE_TIB 00007d2a
-CSEG PFA_TIB 00007d2f
-DSEG ram_tib 00000168
-CSEG VE_NUMBERTIB 00007d30
-CSEG PFA_NUMBERTIB 00007d35
-DSEG ram_sharptib 000001c2
-CSEG VE_EE2RAM 00007d36
-CSEG XT_EE2RAM 00007d3b
-CSEG PFA_EE2RAM 00007d3c
-CSEG PFA_EE2RAM_1 00007d3e
-CSEG PFA_EE2RAM_2 00007d48
-CSEG VE_INIT_RAM 00007d4a
-CSEG PFA_INI_RAM 00007d51
-ESEG EE_INITUSER 0000006e
-CSEG VE_BOUNDS 00007d59
-CSEG PFA_BOUNDS 00007d5f
-CSEG VE_S2D 00007d63
-CSEG PFA_S2D 00007d68
-CSEG VE_TO_BODY 00007d6b
-CSEG VE_2LITERAL 00007d71
-CSEG PFA_2LITERAL 00007d78
-CSEG VE_EQUAL 00007d7c
-CSEG PFA_EQUAL 00007d80
-CSEG VE_ONE 00007d83
-CSEG PFA_ONE 00007d87
-CSEG VE_TWO 00007d88
-CSEG PFA_TWO 00007d8c
-CSEG VE_MINUSONE 00007d8d
-CSEG XT_MINUSONE 00007d90
-CSEG PFA_MINUSONE 00007d91
-SET flashlast 00007d92
-DSEG HERESTART 000001c4
-ESEG EHERESTART 00000092
-ESEG CFG_ORDERLIST 00000050
-ESEG CFG_RECOGNIZERLIST 00000062
-EQU UBRR_VAL 00000019
-EQU BAUD_REAL 0000963d
-EQU BAUD_ERROR 00000001
diff --git a/amforth-6.5/appl/eval-pollin/p644-16.xml b/amforth-6.5/appl/eval-pollin/p644-16.xml
deleted file mode 100644
index 2fc587c..0000000
--- a/amforth-6.5/appl/eval-pollin/p644-16.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<project name="pollins-644-16" basedir="." default="Help">
-
- <target name="p644-16.asm">
- <copy tofile="p644-16.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="16000000"/>
- <filter token="USART" value="_0"/>
- </filterset>
- </copy>
- </target>
-
- <target name="p644-16.hex" depends="p644-16.asm" description="Hexfiles for p644-16">
- <avrasm2 projectname="p644-16" mcu="atmega644"/>
- <delete file="p644-16.asm"/>
- </target>
-
- <target name="p644-16" depends="p644-16.hex" description="Atmega644 @ 16 MHz">
- <echo>Uploading Hexfiles for p644 - 16</echo>
- <avrdude
- type="mysmartusb"
- mcu="atmega644"
- flashfile="p644-16.hex"
- eepromfile="p644-16.eep.hex"
- />
- </target>
-
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/p8-12.xml b/amforth-6.5/appl/eval-pollin/p8-12.xml
deleted file mode 100644
index aae5de9..0000000
--- a/amforth-6.5/appl/eval-pollin/p8-12.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<project name="pollins-8-12" basedir="." default="Help">
-
- <target name="p8-12.asm">
- <copy tofile="p8-12.asm" file="pollin.asm" overwrite="true">
- <filterset>
- <filter token="F_CPU" value="12000000"/>
- <filter token="USART" value=""/>
- </filterset>
- </copy>
- </target>
- <target name="p8-12.hex" description="Hexfiles for p8-12" depends="p8-12.asm">
- <avrasm2 projectname="p8-12" mcu="atmega88"/>
-
- </target>
-
- <target name="p8-12" depends="p8-12.hex" description="Atmega8 @ 12 MHz">
- <echo>Uploading Hexfiles for p8-12</echo>
- <avrdude
- type="stk200"
- mcu="atmega88"
- flashfile="p8-12.hex"
- eepromfile="p8-12.eep.hex"
- />
- </target>
-</project>
diff --git a/amforth-6.5/appl/eval-pollin/pollin.asm b/amforth-6.5/appl/eval-pollin/pollin.asm
deleted file mode 100644
index de3d0d2..0000000
--- a/amforth-6.5/appl/eval-pollin/pollin.asm
+++ /dev/null
@@ -1,21 +0,0 @@
-; for a description, what can be done in this
-; file see ../template/template.asm. You may want to
-; copy that file to this one and edit it afterwards.
-
-.include "preamble.inc"
-
-.set AMFORTH_RO_SEG = NRWW_START_ADDR+1
-
-; cpu clock in hertz
-.equ F_CPU = @F_CPU@
-.set BAUD_MAXERROR = 30
-.equ TIMER_INT = OVF2addr
-
-.include "drivers/usart@USART@.asm"
-
-; settings for 1wire interface
-.equ OW_PORT=PORTB
-.EQU OW_BIT=4
-.include "drivers/1wire.asm"
-
-.include "amforth.asm"
diff --git a/amforth-6.5/appl/eval-pollin/words/applturnkey.asm b/amforth-6.5/appl/eval-pollin/words/applturnkey.asm
deleted file mode 100644
index 5e6b279..0000000
--- a/amforth-6.5/appl/eval-pollin/words/applturnkey.asm
+++ /dev/null
@@ -1,30 +0,0 @@
-; ( -- ) System
-; R( -- )
-; application specific turnkey action
-VE_APPLTURNKEY:
- .dw $ff0b
- .db "applturnkey",0
- .dw VE_HEAD
- .set VE_HEAD = VE_APPLTURNKEY
-XT_APPLTURNKEY:
- .dw DO_COLON
-PFA_APPLTURNKEY:
- .dw XT_USART
-
-.if WANT_INTERRUPTS == 1
- .dw XT_INTON
-.endif
- .dw XT_DOT_VER
- .dw XT_SPACE
- .dw XT_F_CPU
- .dw XT_DOLITERAL
- .dw 1000
- .dw XT_UMSLASHMOD
- .dw XT_NIP
- .dw XT_DECIMAL
- .dw XT_DOT
- .dw XT_DOSLITERAL
- .dw 4
- .db "kHz "
- .dw XT_ITYPE
- .dw XT_EXIT