From d80736ab6e8e3cad2f1a30c6eaba2d6883dbe967 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 26 Aug 2017 20:31:40 +0200 Subject: Remove AmForth --- amforth-6.5/appl/atmega2561/atmega256.asm | 18 - amforth-6.5/appl/atmega2561/atmega256.eep.hex | 7 - amforth-6.5/appl/atmega2561/atmega256.hex | 647 -- amforth-6.5/appl/atmega2561/atmega256.lst | 10182 -------------------- amforth-6.5/appl/atmega2561/atmega256.map | 2503 ----- amforth-6.5/appl/atmega2561/build.xml | 21 - amforth-6.5/appl/atmega2561/dict_appl.inc | 5 - amforth-6.5/appl/atmega2561/dict_appl_core.inc | 2 - amforth-6.5/appl/atmega2561/words/applturnkey.asm | 32 - 9 files changed, 13417 deletions(-) delete mode 100644 amforth-6.5/appl/atmega2561/atmega256.asm delete mode 100644 amforth-6.5/appl/atmega2561/atmega256.eep.hex delete mode 100644 amforth-6.5/appl/atmega2561/atmega256.hex delete mode 100644 amforth-6.5/appl/atmega2561/atmega256.lst delete mode 100644 amforth-6.5/appl/atmega2561/atmega256.map delete mode 100644 amforth-6.5/appl/atmega2561/build.xml delete mode 100644 amforth-6.5/appl/atmega2561/dict_appl.inc delete mode 100644 amforth-6.5/appl/atmega2561/dict_appl_core.inc delete mode 100644 amforth-6.5/appl/atmega2561/words/applturnkey.asm (limited to 'amforth-6.5/appl/atmega2561') diff --git a/amforth-6.5/appl/atmega2561/atmega256.asm b/amforth-6.5/appl/atmega2561/atmega256.asm deleted file mode 100644 index 30e1300..0000000 --- a/amforth-6.5/appl/atmega2561/atmega256.asm +++ /dev/null @@ -1,18 +0,0 @@ -; the 256x devices are special since they *require* -; both a 24bit address space and they need a special -; flash store placement in the NRWW section, way outside -; of the standard 16bit jump distance. - -; note that dict_appl_core includes a store-i_big.asm -; instead if the normal store-i.asm file. This file -; has all the magic needed for the large address space. -; *everything else* is identical to other controllers. - -.include "preamble.inc" - -; cpu clock in hertz -.equ F_CPU = 14745600 -.include "drivers/usart_1.asm" - -; all of amforth is in one segment -.include "amforth-low.asm" diff --git a/amforth-6.5/appl/atmega2561/atmega256.eep.hex b/amforth-6.5/appl/atmega2561/atmega256.eep.hex deleted file mode 100644 index 9bebfd9..0000000 --- a/amforth-6.5/appl/atmega2561/atmega256.eep.hex +++ /dev/null @@ -1,7 +0,0 @@ -:10007200FFFF8012E102CC0043049A00B0219804F1 -:0A008200960986007B12010086003B -:06009A0002008A0F760F40 -:1000A4001508A60000000000FF21AF21AF210000C9 -:1000B4000A00E100EF00B600D1008B1100007811B6 -:0800C400500E6F0E5F0E1700D5 -:00000001FF diff --git a/amforth-6.5/appl/atmega2561/atmega256.hex b/amforth-6.5/appl/atmega2561/atmega256.hex deleted file mode 100644 index 1ad9cb0..0000000 --- a/amforth-6.5/appl/atmega2561/atmega256.hex +++ /dev/null @@ -1,647 +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 -:02008800F7D0AF -:02008C00F5D0AD -:02009000F3D0AB -:02009400F1D0A9 -:02009800EFD0A7 -:02009C00EDD0A5 -:0200A000EBD0A3 -:0200A400E9D0A1 -:0200A800E7D09F -:0200AC00E5D09D -:0200B000E3D09B -:0200B400E1D099 -:0200B800DFD097 -:0200BC00DDD095 -:0200C000DBD093 -:0200C400D9D091 -:0200C800D7D08F -:0200CC00D5D08D -:0200D000D3D08B -:0200D400D1D089 -:0200D800CFD087 -:0200DC00CDD085 -:1000E000CBD000200010FFFF39000A0041546D659D -:1000F00067613235363107FF3E72782D62756600D2 -:1001000000008200082F10911002E0E0F2E0E10F01 -:10011000F31D008313951F7010931002899199911C -:100120000C941F0106FF6973722D72787B001B010E -:10013000CE04CE0031054A05CE0403006D12C7047B -:10014000A200BF0E8100AE041B01CE049700CE04B6 -:100150004800EB08CE040002CE041600ED0533097A -:10016000AE0406FF72782D62756692001B01D10005 -:10017000C704B700CE04110231054A05CE040002BF -:10018000360631055D05C806CE040F00AC06CE0468 -:1001900011022605AE0407FF72783F2D62756600D6 -:1001A000B1001B01B70ECE0411023105CE041002BE -:1001B0003105AC05AE0407FF74782D706F6C6C00D0 -:1001C000CB001B01EF00C704E200CE04CE002605E1 -:1001D000AE0408FF74783F2D706F6C6CDB001B0160 -:1001E000B70ECE04C8003105CE042000AC06AE0424 -:1001F00004FF75627272E9000905CA001A10241022 -:1002000006FF2B7573617274F8001B01CE04980011 -:10021000CE04C9002605CE040600CE04CA00260579 -:10022000FC004A059207CE04CD002605CE04CC0082 -:060230002605A400AE0447 -:040000000C94C00E8E -:10023600BF93AF93DB011196B21499F4FD015527D4 -:10024600EE0FFF1F551F5BBF679177911196FB015C -:100256005527EE0FFF1F551F5BBF07911791F8013A -:1002660009949A938A938B2D9927BB2466E079E0AB -:10027600EECF0A920FB60A920F900F900F900A9443 -:10028600B02CFF93EF93E2E1F2E00694E00DF31D4C -:10029600008003940082EF91FF9109900FBE0990B0 -:1002A600089502FF6D2B00011B0155127908AE045B -:1002B60003FF75642A0054011B014A059805790657 -:1002C60072055D058F0579067A053606AE0404FFCC -:1002D600756D61785B011B01CA09F505C7047401D8 -:1002E6005D057205AE0404FF756D696E6A011B013A -:1002F600CA090006C70480015D057205AE041B012C -:10030600CE040080AC06B305C7048B017412AE049C -:10031600E405AE040AFF6E616D653E666C61677347 -:1003260076011B012C08CE0400FFAC06AE0406FFC6 -:100336006E65776573748D01DC044B0206FF6C6194 -:10034600746573749A01DC044F0208FF28637265B2 -:1003560061746529A1011B011A0E05034A059F0157 -:10036600C2091A05EA029F011A05AE0401005C00E3 -:10037600A8011B01010E8905E3091A05AE04010057 -:100386002800B9011B01CE042900ED0DD309AE04E6 -:1003960007FF636F6D70696C6500C2011B018F05F5 -:1003A6004A05111098052C08DC01AE0401FF2C004B -:1003B600CB011B01130A0D08130AC806FF0F140A06 -:1003C600AE0403005B275D00D9011B01700CF2012E -:1003D600AE0407006C69746572616C00E4011B0170 -:1003E600D101CE04DC01AE040800736C6974657239 -:1003F600616CEC011B01D101D30BE10BAE041B01B7 -:10040600130AD101FFFFAE041B01BD0F130A5D05E0 -:100416000D08AE041B01130AAE041B01BD0FDC015F -:10042600AE040500616865616400F7011B01D10136 -:10043600BD040202AE040200696614021B01D1016A -:10044600C7040202AE040400656C73651E021B013C -:10045600D101BD0402025D050702AE040400746802 -:10046600656E26021B010702AE0405006265676918 -:100476006E0031021B010D02AE0405007768696C3F -:10048600650038021B0121025D05AE040600726597 -:100496007065617440021B0162023502AE040500FC -:1004A600756E74696C0049021B01CE04C704DC0139 -:1004B6001002AE040500616761696E0052021B01FD -:1004C600D101BD041002AE040200646F5D021B017F -:1004D600D10134070D02ED05C502AE0404006C6FB0 -:1004E6006F7067021B01D1016207AC02AE04050002 -:1004F6002B6C6F6F700071021B01D1015307AC02A8 -:10050600AE0405006C65617665007A021B01D101B7 -:100516006D071902C502AE0403003F646F00840232 -:100526001B01D1019B0221026A025D05C502AE04D0 -:100536001B01CA096D124A059805C704A302D3090F -:100546008F059606AE0407FF656E646C6F6F7000CC -:100556008F021B011002B9025205C704B50235020B -:10056600BD04AE02AE0402FF6C3EA6021B01D80219 -:1005760012051205CE04FEFFD802FE06AE0402FFE7 -:100586003E6CB6021B017912D802FE06D80212058D -:100596001A05AE0403FF6C703000C20209057E0026 -:1005A6001A10241002FF6C70CD02DC04510206FF03 -:1005B600637265617465D5021B01AE010E03D1013C -:1005C600E904AE0406FF686561646572DA021B0120 -:1005D600130A980598054A05C105C704FC024A0591 -:1005E600CE0400FFB506E50B8F05F907DC018F0584 -:1005F600AE04CE04F0FFA70C07FF776C73636F7031 -:100606006500E50279107A001A10241006FF72655B -:100616007665616CFF021B019F01C2091205520536 -:10062600C70419039F0112055D05D507AE04050031 -:10063600646F65733E0009031B01D1013203D101CA -:100646000E94D1012703AE049A938A93CB010196A7 -:100656007F917F916F91BF93AF93DB01EDCD1B012E -:100666008F059F01C2091205F907E4100D08AE04B3 -:1006760001FF3A001A031B01AE0149037205AE04DD -:1006860007FF3A6E6F6E616D65003B031B01130A2F -:100696004A05A6011A05D1011B015E03AE0401003D -:1006A6003B0043031B01D101AE0466030E03AE04F7 -:1006B60001FF5D0052031B017412AF091A05AE0457 -:1006C60001005B005B031B01ED05AF091A05AE04D3 -:1006D60008FF7661726961626C6563031B01240A17 -:1006E6007D0379122D0AAE0408FF636F6E73746181 -:1006F6006E746B031B01AE010E03D101DC04DC0139 -:10070600AE0404FF7573657277031B01AE010E0319 -:10071600D101EF04DC01AE040700726563757273E4 -:10072600650084031B01A6011205DC01AE0409FF66 -:10073600696D6D656469617465008F031B0143040F -:10074600F9074A052C08CE04FF7FAC065D050D08A7 -:10075600AE0406005B636861725D9A031B01D101FA -:10076600CE04500DDC01AE04060061626F72742285 -:10077600AC031B012509D101CE03AE0405FF61625E -:100786006F727400B7031B01E405A70C06FF3F61F7 -:10079600626F7274C1031B017A05C704D403060C89 -:1007A600C603D309AE0409FF6765742D73746163CC -:1007B6006B00C9031B014A05C2095D05F9074A0515 -:1007C6009805ED055D059B02C704F403340745074C -:1007D600CE06BC0968053606F9075D05E40553072C -:1007E600EA03D3098F05AE0409FF7365742D73748C -:1007F60061636B00D6031B016805BA05C7040604CE -:10080600CE04FCFFA70CCA09D5075D05ED059B02C2 -:10081600C70413043407C209DB09D50762070E04AF -:100826007205AE0409FF6D61702D737461636B0010 -:10083600F7031B014A05C2095D05F907BC094C12FD -:100846009B02C704380434074507F9075D05980578 -:10085600A105B8045205C70434048F0572056D0757 -:10086600AE048F057912530727047205ED05AE0411 -:100876000BFF6765742D63757272656E74001504DF -:100886001B01CE048400F907AE0409FF6765742DC9 -:100896006F72646572003B041B01CE048800DD03A1 -:1008A600AE0409FF6366672D6F72646572004804C3 -:1008B600DC04880007FF636F6D7061726500540485 -:1008C6006404BF93AF938C0189919991DC0189915E -:1008D60099919C0189919991FC01ED90F190EF1409 -:1008E60051F40A9519F02A95C1F701C02A95022BF1 -:1008F60011F4882702C08FEF00C0982FAF91BF91E7 -:100906009BCC07FF6E66613E6C6661005D041B0151 -:10091600D810C8069D063606AE040BFF6170706CD3 -:100926007475726E6B65790084041B010501DD0820 -:10093600CA0F480CA409CE04E8035B068905420ADF -:10094600880BD30B04006B487A20060CAE0404FF18 -:10095600657869749004AF04AF91BF916DCC07FFC1 -:100966006578656375746500AA04B904BC0189914C -:1009760099916DCCBE04FD015527EE0FFF1F551F43 -:100986005BBFA791B79158CCC804982B89919991D0 -:1009960091F3119651CCCF049A938A93FD01552772 -:1009A600EE0FFF1F551F5BBF87919791119644CCA1 -:1009B600DC049A938A93FB0131965527EE0FFF1FAD -:1009C600551F5BBF8791979137CCE9049A938A9319 -:1009D600CB01019631CCEF049A938A93FB013196B1 -:1009E6005527EE0FFF1F551F5BBF87919791840D0B -:1009F600951D22CC07FF2876616C75652900B20427 -:100A06001B01AE010E03D1010905AE041DDE4A0528 -:100A160011102C08B804AE0401FF4000FD041305B4 -:100A2600FC018191919108CC01FF21000F051B0566 -:100A3600FC01899199919183808389919991FCCB4D -:100A460002FF632117052705FC018991999180838F -:100A560089919991F1CB02FF634023053205FC0190 -:100A660099278081E9CB02FF40752E051B019B0764 -:100A760036061205AE0402FF217536051B019B07DB -:100A860036061A05AE0403FF647570003E054B0575 -:100A96009A938A93D1CB04FF3F647570460553053C -:100AA600082F092B11F09A938A93C6CB04FF73770C -:100AB60061704E055E058C01899199911A930A938E -:100AC600BBCB04FF6F766572590569059A938A93C5 -:100AD6008A819B81B1CB04FF64726F7064057305D4 -:100AE60089919991A9CB03FF726F74006E057B05FE -:100AF6008C0129913991899199913A932A931A9364 -:100B06000A939ACB03FF6E69700076058A052296D2 -:100B160093CB02FF723E850590059A938A938F9137 -:100B26009F918ACB02FF3E728C0599059F938F9306 -:100B36008991999181CB02FF72409505A2059A93FE -:100B46008A938F919F919F938F9376CB02FF3C3E22 -:100B56009E051B016D12B305AE0402FF303DA905CB -:100B6600B405982BD1F530C002FF303CB005BB056B -:100B760097FD2AC032C002FF303EB705C205821576 -:100B860093055CF151F120C003FF64303E00BE05C1 -:100B9600CC05821593058991999182059305ECF010 -:100BA600E1F012C003FF64303C00C705DA05229667 -:100BB60097FD0C94E7050C94F00504FF74727565B7 -:100BC600D505E5059A938A938FEF9FEF35CB01FF05 -:100BD6003000E005EE059A938A93C1012DCB02FF02 -:100BE600753CEA05F6052991399182179307A8F312 -:100BF600A1F3EACF02FF753EF2051B015D05F5057F -:100C0600AE0401FF3C00FD0508062991399128171D -:100C160039071CF7D9CF01FF3E00040612062991B9 -:100C2600399128173907CCF2C1F2CECF04FF6C6F89 -:100C360067320E061E06FC01992780E18A9522F08E -:100C4600EE0FFF1FD8F7F8CA9A95F6CA01FF2D00D6 -:100C560019062D0609911991081B190BC801ECCA32 -:100C660001FF2B002906370609911991800F911F64 -:100C7600E3CA02FF6D2A330640068C0189919991D9 -:100C86009C0131027001209FC0013003F308900DD2 -:100C9600E11CF31C1203F308900DE11CF31C9A935C -:100CA6008A93C701C9CA06FF756D2F6D6F643C062E -:100CB6005C067C01299139910991199140E15527EA -:100CC600000F111F221F331F551F2E153F055205FA -:100CD60018F003952E193F094A9589F73A932A93F6 -:100CE600C801AACA03FF756D2A0056067A068C014A -:100CF60089919991809FF00122273327909FF00DCB -:100D0600211D331D819FF00D211D331D919F200D47 -:100D1600311DCF019A938A93C9018ECA06FF696E67 -:100D260076657274750697068095909585CA02FF5A -:100D3600322F91069E06959587957ECA02FF322A26 -:100D46009A06A506880F991F77CA03FF616E64008D -:100D5600A106AD0609911991802391236DCA02FF60 -:100D66006F72A806B60609911991802B912B64CA59 -:100D760003FF786F7200B206C006099119918027A9 -:100D860091275ACA02FF312BBB06C906019654CADF -:100D960002FF312DC506CF0601974ECA07FF3F6EEB -:100DA600656761746500CB061B01BA05C704DC06DE -:100DB600A50AAE0406FF6C7368696674D106E3067D -:100DC600FC018991999131971AF0880F991FFBCFF1 -:100DD60033CA06FF727368696674DD06F206FC01A3 -:100DE6008991999131971AF096958795FBCF24CAE8 -:100DF60002FF2B21EC06FF06FC01899199912081C7 -:100E06003181820F931F808391838991999114CAAE -:100E160003FF72704000FB0610079A938A938DB702 -:100E26009EB70ACA03FF727021000B071A072FB775 -:100E3600F8948DBF9EBF2FBF89919991FDC903FF7D -:100E460073704000150727079A938A93CE01F4C959 -:100E560003FF7370210022073007EC0189919991F5 -:100E6600EBC9350729913991E0E83E0F821B930BB8 -:100E76003F932F939F938F9389919991DDC901FF9A -:100E860069002B0746079A938A938F919F91EF915A -:100E9600FF91FF93EF939F938F938E0F9F1FCCC964 -:100EA6005407EF91FF91E80FF91F899199911BF073 -:100EB600FF93EF9360CD0F911F911196BDC9630704 -:100EC600EF91FF913196BBF3F3CF06FF756E6C6F12 -:100ED6006F7042076E071F910F911F910F91ACC95A -:100EE60006FF636D6F76653E68077907BF93AF931C -:100EF600E991F991A991B991092F082B41F0E80FD1 -:100F0600F91FA80FB91F1E9112930197E1F7AF9130 -:100F1600BF918991999190C902FF3E3C730793074F -:100F2600092F982F802F88C903FF757040008F07FF -:100F36009C079A938A93C2017FC903FF75702100AB -:100F46009707A5072C018991999176C903FF316D01 -:100F56007300A007AE07E6E6FEE03197F1F7000062 -:100F66006BC903FF323E7200A907B907FC018991DC -:100F760099919F938F93FF93EF93899199915CC970 -:100F860003FF32723E00B407C8079A938A93EF9123 -:100F9600FF918F919F919A938A93CF014DC902FF3A -:100FA6002165C307D607FC01899199912FB7F8945B -:100FB60028D000B5081709F00BD0319622D000B51D -:100FC600091711F0892F04D02FBF8991999134C93F -:100FD600F999FECF07B700FDFDCFF2BDE1BD80BD9B -:100FE600FA9AF99A089502FF4065D207FA072FB7D1 -:100FF600F894FC0106D080B5319603D090B52FBF8A -:101006001BC9F999FECFF2BDE1BDF89A089502FF1A -:101016002169F6077910A4001A10241004FF286924 -:1010260021290A0816089C0189919991AF93BF93CB -:10103600CF93DF93E1E0EBBFF0EFE0E01995DF91AE -:0C104600CF91BF91AF9189919991F6C8AC -:020000023000CC -:10E0000010D0E094F0948E219F21982B19F0F90103 -:10E0100003E023D0F90105E020D0F90101E11DD092 -:10E020000895F901E078FF7FEF01A0E8B0E0FE017C -:10E030005527EE0FFF1F551F5BBF47915791FE01FC -:10E04000E217F30711F00A0102C07A010C0101E0A6 -:10E0500004D02196119759F708951FB71F93F8948C -:10E06000F999FECF17B710FDFDCF5527EE0FFF1F13 -:0EE07000551F5BBF07BFE8951F911FBF0895A6 -:020000020000FC -:1010520002FF406911082D08FC015527EE0FFF1F02 -:10106200551F5BBF87919791E9C803FF6E3E7200DF -:1010720029083B08FC01082F899199919F938F932E -:101082000A95D1F7EF93FF9389919991D7C803FFFE -:101092006E723E0036084D089A938A93FF91EF9143 -:1010A2000E2F8F919F919A938A930A95D1F7CF0130 -:1010B200C5C803FF64322A0048085F0809911991E4 -:1010C200000F111F881F991F1A930A93B7C803FFB5 -:1010D20064322F005A086D080991199195958795E8 -:1010E200179507951A930A93A9C802FF642B6808FB -:1010F2007A0829913991E990F99049915991240FEF -:10110200351F8E1D9F1D3A932A9398C802FF642DA6 -:1011120076088B0829913991E990F9904991599172 -:10112200421B530BE80AF90A5A934A93C70186C82D -:1011320007FF64696E76657274008708A0080991DA -:10114200199180959095009510951A930A9376C8F7 -:1011520002FF752E99081B01ED05900BAE0403FFEB -:10116200752E7200A9081B01ED055D05990BAE04F1 -:101172000DFF73686F772D776F72646C69737400FB -:10118200B0081B01CE04C8085D05BD10AE041B01EA -:10119200D810060C480CE405AE0405FF776F7264A4 -:1011A2007300B9081B01CE048A00F907C208AE0415 -:1011B20004FF2B696E74CE08DE0878943FC804FFE2 -:1011C2002D696E74D908E508F89438C804FF696E71 -:1011D2007421E0081B01CE0400003606D507AE04D8 -:1011E20004FF696E7440E7081B01CE040000360656 -:1011F200F907AE0408FF696E742D74726170F1080C -:101202000209B82E8991999119C81B01F508B804F1 -:101212000B09AE040C0901D011C8189504FF7069BE -:10122200636BFB081B01C806BC09260736061205BC -:10123200AE0402002E220F091B012509D101060C62 -:10124200AE04020073221A091B01CE042200ED0D26 -:10125200AF091205C7042E09FD01AE0404FF666939 -:101262006C6C22091B017A057A055205C7044009F4 -:101272004C1234074A054507260562073B097205E9 -:10128200AE040BFF656E7669726F6E6D656E7400EB -:101292002F09DC04820009FF776F72646C69737432 -:1012A200730000001B01CE040800AE0404FF2F707F -:1012B20061644C091B012607E9092C06AE0405FFEF -:1012C2002F686F6C640057091B01E909240A2C0678 -:1012D200AE040AFF666F7274682D6E616D656009F7 -:1012E2001B01D30B0700616D666F72746800AE0458 -:1012F20007FF76657273696F6E006A091B01CE047F -:101302004100AE0403FF6370750079091B01CE042E -:101312007500320CAE0408FF6D63752D696E666F41 -:1013220083091B01CE047100AE0405FF2F7573659E -:1013320072008C091B01CE042C00AE0405FF665F0F -:101342006370750042091B01CE040000CE04E10067 -:10135200AE0405FF7374617465009F09DC045302D7 -:1013620004FF62617365AA09EF040C0005FF63655F -:101372006C6C7300B109A50605FF63656C6C2B00EC -:10138200B709C30902960C941F0104FF32647570F9 -:10139200BD091B0168056805AE0405FF3264726F62 -:1013A2007000C6091B0172057205AE0404FF747554 -:1013B200636BCE091B015D056805AE0403FF3E6940 -:1013C2006E00D709EF04180003FF70616400DF09A3 -:1013D2001B01240ACE0428003606AE0404FF656D04 -:1013E2006974E50979100E0042104E1005FF656D13 -:1013F20069743F00EF097910100042104E1003FF8C -:101402006B657900F7097910120042104E1004FF43 -:101412006B65793F000A7910140042104E1002FFEA -:101422006470080A090574001A10241005FF656823 -:1014320065726500100A090578001A10241004FF6D -:1014420068657265170A090576001A10241005FFEF -:10145200616C6C6F7400200A1B01240A3606FF0FB0 -:10146200250AAE0403FF62696E00280A1B01791285 -:10147200B5091A05AE0407FF646563696D616C0006 -:10148200330A1B01CE040A00B5091A05AE0403FF94 -:10149200686578003C0A1B01CE041000B5091A05E4 -:1014A200AE0402FF626C480ADC04200007FF747578 -:1014B200726E6B657900520A791080001A1024103E -:1014C20004FF2F6D6F64570A660A9C0109911991F6 -:1014D200412F432717FF04C0109500950F5F1F4F40 -:1014E20037FF04C0309520952F5F3F4FEE24FF1841 -:1014F20051E1001F111F5A9539F447FF04C010959E -:1015020000950F5F1F4F0BC0EE1CFF1CE21AF30A7F -:1015120020F4E20EF31E8894ECCF0894EACFFA92FC -:10152200EA92C8010C941F0105FF752F6D6F6400CC -:10153200610A1B019805ED058F055B06AE0406FFE7 -:101542006E6567617465950A1B019606C806AE044E -:1015520001FF2F00A00A1B01650A8905AE0403FFE3 -:101562006D6F6400A90A1B01650A7205AE0403FFD0 -:1015720061627300B00A1B014A05D706AE0403FF7D -:101582006D696E00B80A1B01CA091106C704CA0AAE -:101592005D057205AE0403FF6D617800C00A1B0190 -:1015A200CA090706C704D60A5D057205AE0406FF1E -:1015B20077697468696ECC0A1B0168052C06980568 -:1015C2002C068F05F505AE0407FF746F7570706504 -:1015D2007200D80A1B014A05CE046100CE047B00CA -:1015E200DD0AC704F70ACE04DF00AC06AE0407FF2B -:1015F200746F6C6F77657200E50A1B014A05CE04B1 -:101602004100CE045B00DD0AC7040A0BCE042000B1 -:10161200B506AE0403FF686C6400F80ADC045502E8 -:1016220004FF686F6C640B0B1B010F0B4A0512055C -:10163200CE064A0598055D051A058F052605AE04F6 -:1016420002FF3C23110B1B01E9090F0B1A05AE0423 -:1016520001FF2300210B1B01B5091205A90B7A0515 -:10166200CE04090068050706C7043A0BCE0407003A -:101672003606CE0430003606150BAE0402FF237385 -:10168200290B1B012C0BCA09B506B305C704430B72 -:10169200AE0402FF233E3F0B1B01D3090F0B1205C1 -:1016A200E90968052C06AE0404FF7369676E4A0BEC -:1016B2001B01BA05C704600BCE042D00150BAE0446 -:1016C20003FF642E7200550B1B019805DB093A11CA -:1016D200240B420B7A05590B4D0B8F0568052C061E -:1016E200510C610CAE0402FF2E72610B1B019805B6 -:1016F20055128F05650BAE0402FF642E740B1B019D -:10170200ED05650B480CAE0401FF2E007D0B1B019D -:101712005512800BAE0403FF75642E00850B1B016E -:10172200ED05990B480CAE0404FF75642E728C0B08 -:101732001B019805240B420B4D0B8F0568052C06E7 -:10174200510C610CAE0406FF75642F6D6F64950B2E -:101752001B019805ED05A1055B068F055D05980542 -:101762005B068F05AE0406FF64696769743FA40BCC -:101772001B01EB0A4A05CE0439001106CE04000112 -:10178200AC0636064A05CE0440011106CE04070116 -:10179200AC062C06CE0430002C064A05B50912050B -:1017A200F505AE041B01A105320C8F056805C806BC -:1017B2009D063606C8069805AE0402FF732CB40BCC -:1017C2001B014A05E50BAE041B01DC014A059D061F -:1017D200DB09A4062C069805ED059B02C704F80B4D -:1017E20034074A051205DC01C2096207F20B8F05B4 -:1017F200C105C704FF0B4A053105DC017205AE04C1 -:1018020005FF697479706500DE0B1B014A059D06B0 -:10181200DB09A4062C069805ED059B02C7041A0CE9 -:1018220034074A052C084A05270C230CC806620710 -:10183200120C8F05C105C704210C4A052C08270C80 -:101842007205AE041B019207270CAE041B01CE04E5 -:10185200FF00AC06F309AE0406FF69636F756E7490 -:10186200010C1B014A05C8065D052C08AE0402FFE7 -:1018720063722D0C1B01CE040D00F309CE040A0085 -:10188200F309AE0405FF737061636500380C1B0138 -:10189200550AF309AE0406FF737061636573430C66 -:1018A2001B01ED05D00A4A05C7045B0C480CCE06A5 -:1018B200BD04540C7205AE0404FF747970654C0CBF -:1018C2001B014C129B02C7046C0C340745073105FF -:1018D200F3096207670CAE0401FF27005D0C1B01D0 -:1018E2001A0E320F3D0F4A05B00F6D125D052C081E -:1018F200CE04E50F6D12B506C704820CCE04F3FFC9 -:10190200A70C7205AE0407FF68616E646C65720015 -:101912006D0CEF040A0005FF636174636800840CB8 -:101922001B01260798058A0C120598050F078A0CD9 -:101932001A05B8048F058A0C1A058F057205ED0584 -:10194200AE0405FF7468726F77008C0C1B014A05A8 -:10195200B305C704AE0C7205AE048A0C1205190752 -:101962008F058A0C1A058F055D0598052F077205EC -:101972008F05AE0405FF63736B697000A20C1B0137 -:1019820098054A05C704CF0C68053105A1056D12FB -:10199200C704CF0C74120B0EBD04C20C8F05720566 -:1019A200AE0405FF637363616E00BB0C1B019805F7 -:1019B20068054A053105A1056D12B305C704EC0C93 -:1019C2005D05CE065D056805BA05B305C704EC0CD6 -:1019D200C806BD04DA0C890568052C068F05720558 -:1019E200AE0406FF616363657074D20C1B01680567 -:1019F2003606CE066805040A4A05380DB305C70443 -:101A02002A0D4A05CE0408006D12C7041A0D72058C -:101A12007A05CA09110698057A057A058F05C70461 -:101A2200180D300DCE06980568058F056E01BD04B0 -:101A3200280D4A05550A0706C704210D7205550AE5 -:101A42004A05F30968052605C80668057A01BD043A -:101A5200FC0C720589055D052C063B0CAE041B01CE -:101A6200CE0408004A05F309480CF309AE041B0131 -:101A72004A05CE040D006D125D05CE040A006D12FA -:101A8200B506AE0406FF726566696C6CF20C7910DD -:101A92001A0042104E1004FF63686172430D1B016D -:101AA2001A0E72053105AE0406FF6E756D6265721F -:101AB2004C0D1B01B509120598059E0D9805B10D37 -:101AC2009E0D8F05B50698054A05B305C704710D2D -:101AD200D3098F0572058F05B5091A05ED05AE0408 -:101AE200B807ED05ED05C707CF0D5205C704930DE5 -:101AF20074126D12C7048A0D3105CE042E006D12C8 -:101B0200C7048B0D8F05C704870D47117912BD04D9 -:101B1200990D7205D3098F0572058F05B5091A054E -:101B2200ED05AE04D3098F05C704980DA50A7412FA -:101B32008F05B5091A05E405AE041B0168053105D8 -:101B4200CE042D006D124A059805C704AA0D741221 -:101B52000B0E8F05AE04E9040A00100002000A0011 -:101B62001B0168053105CE0423002C064A05ED054C -:101B7200CE040400DD0AC704C70DAC0D36062C08DE -:101B8200B5091A0574120B0EBD04C80D7205AE0418 -:101B920007FF3E6E756D62657200550D1B014A05A9 -:101BA200C704E70D68053105B90BB305C704DB0DA2 -:101BB2007205AE0498056B11B50912055F018F0518 -:101BC20057016B1174120B0EBD04D00DAE0405FF4C -:101BD200706172736500C90D1B019805010EE3095E -:101BE20012050B0E8F05D70C4A05C806E309FE063F -:101BF20074120B0EAE0406FF736F75726365E80D07 -:101C02007910160042104E1007FF2F737472696E1E -:101C12006700FC0D1B017A05680536067A057A0510 -:101C22002C06AE040AFF70617273652D6E616D65DC -:101C3200050E1B01550A1E0EAE041B019805010E6E -:101C4200E30912050B0EA105C00C8F05D70CCA09BA -:101C52003606010E72052C06E3091A05AE0407FFCB -:101C620066696E642D787400130E1B01CE04420E59 -:101C7200CE0488001C04B305C704410ED309ED0548 -:101C8200AE041B019805CA098F058B104A05C704CB -:101C92004F0E9805890589058F05E405AE041B01E1 -:101CA200D30B0300206F6B00060CAE0403FF2E6FF4 -:101CB2006B00300E79101C0042104E101B01D30B2A -:101CC20002003E203B0C060CAE0406FF2E7265613C -:101CD2006479570E7910200042104E101B01D30B6D -:101CE2000400203F3F20060CB50912059805420A60 -:101CF200880BE3091205880B8F05B5091A05AE0496 -:101D020006FF2E6572726F72660E79101E00421007 -:101D12004E1004FF71756974810E1B01D102D80245 -:101D22001A05EF0E2F07FC0E19076603AF091205FD -:101D3200B305C7049D0E6B0E480DC704AF0ECE044B -:101D4200150F910C5205C704AF0E4A05CE04FEFFD3 -:101D52000706C704AD0E860EBD048F0E5B0EBD04D2 -:101D6200970E05FF7061757365008A0E7910570230 -:101D72002E10381004FF636F6C64B20EC00EA4B64E -:101D820022243324BB2424BEE0E0F2E02192E0309E -:101D9200E9F7F232D9F7E9E5F2E02F010FEF0DBFD3 -:101DA200048311E21EBF1583CFEAC683D1E2D78333 -:101DB200A2EEBEE00C941F0104FF7761726DBB0EB0 -:101DC2001B01B611CE04E50FCE04B70E59106603FF -:101DD2005D0A8E0E03FF73703000DD0E09050600EA -:101DE20042104E1002FF7370EB0EEF04080003FF67 -:101DF20072703000F30E1B01000F1205AE04EF04E7 -:101E0200040005FF646570746800F80E1B01EF0E94 -:101E120026072C069D06CE06AE0409FF696E746580 -:101E2200727072657400020F1B011A0E4A05C70414 -:101E3200260F320F3D0FAF091205C704210F1110F3 -:101E42002C08B804BD0FBD04160FD309AE0410FF51 -:101E5200666F7274682D7265636F676E697A6572F8 -:101E62000E0F09057C001A10241009FF7265636FBA -:101E7200676E697A6500280F1B01CE04480F5D0565 -:101E82001C04B305C704470FD309B00FAE041B01EE -:101E92007A057A05CA09B8077A05B804C7077A0528 -:101EA2004A05B00F6D12C704590F7205ED05AE0455 -:101EB20089058905E405AE0406FF64743A6E756D02 -:101EC200360FE904E50FF201F20107FF64743A6488 -:101ED2006E756D005D0FE904E50F6512651207FF6F -:101EE2007265633A6E756D00660F1B015A0DC70469 -:101EF200820F74126D12C704800F620FAE046C0F52 -:101F0200AE04B00FAE0408FF7265633A66696E6490 -:101F1200700F1B01360E4A05B305C704930F7205F5 -:101F2200B00FAE049A0FAE0405FF64743A787400E1 -:101F3200840FE9049E0FA20F65121B017205B804FB -:101F4200AE041B01BA05C704A80FDC01AE04B80435 -:101F5200AE0407FF64743A6E756C6C00950FE90469 -:101F6200B40FB40FB40F1B01CE04F3FFA70C06FF8E -:101F72003F737461636BAA0F1B01070FBA05C70495 -:101F8200C50FCE04FCFFA70CAE0403FF76657200FA -:101F9200B80F1B017109060C480CB50912057F091F -:101FA200420A5512240B2C0BCE042E00150B420BA9 -:101FB2004D0B610CB5091A05480C8709060CAE04D5 -:101FC20004FF6E6F6F70C60F1B01AE0406FF756EC5 -:101FD20075736564E10F1B012607240A2C06AE0403 -:101FE2000200746FE70F1B01700C5E12AF0912053D -:101FF200C7040510D101FF0FDC01AE041B018F05E0 -:102002004A05111098052C084A05111011102C08C8 -:10201200B804AE0407FF692D63656C6C2B00F10FE9 -:102022001B01C806AE0407FF456465666572400081 -:102032000B101B012C08F907AE0407FF4564656607 -:102042006572210014101B012C08D507AE0407FF8E -:1020520052646566657240001E101B012C08120551 -:10206200AE0407FF526465666572210028101B01E9 -:102072002C081A05AE0407FF5564656665724000B8 -:1020820032101B012C089B0736061205AE0407FF0F -:1020920055646566657221003C101B012C089B0784 -:1020A20036061A05AE0406FF64656665722148109D -:1020B2001B015E124A05111011102C08B804AE045F -:1020C20006FF64656665724054101B015E124A0584 -:1020D20011102C08B804AE0407FF28646566657207 -:1020E200290061101B01AE010E03D1017910AE046B -:1020F2000E9427034A0511102C08B804B804AE0444 -:102102000FFF7365617263682D776F72646C697318 -:1021120074006D101B019805ED05CE04A0108F050B -:10212200BD104A05B305C7049A10D3097205ED051F -:10213200AE044A05E4105D0594018201AE041B0160 -:1021420098057205CA09A105D810EE10C704AE1091 -:102152008F057205ED05E405AE04D3098F05ED0583 -:10216200AE0411FF74726176657273652D776F72BA -:10217200646C6973740081101B01F9074A05C70476 -:10218200CE10CA09B8075D05B804C7077A05C704A7 -:10219200CE108A042C08BD04BF10D309AE040BFF75 -:1021A2006E616D653E737472696E6700B2101B01D9 -:1021B200320CCE04FF00AC06AE0407FF6E66613E31 -:1021C20063666100D0101B018A04C806AE0408FFD2 -:1021D20069636F6D70617265DE101B019805680599 -:1021E2008F05AC05C704F910D3097205E405AE04E6 -:1021F2005D05ED059B02C7041C1134076805120535 -:1022020068052C084A05CE040001F505C7040D1126 -:102212005D05CE04FF00AC06AC05C7041411D3095A -:10222200E4056D07AE04C8065D05C2095D05CE046E -:1022320002005307FF10D309ED05AE0401FF2A0087 -:10224200E8101B013F067205AE0401FF6A001F1170 -:102252001B010F07CE040700360612050F07CE0436 -:102262000900360612053606AE0404FF6461627385 -:1022720026111B014A05BA05C70440114711AE04D5 -:1022820007FF646E65676174650036111B019F0864 -:102292007412ED057908AE0405FF636D6F76650073 -:1022A20041115311BF93AF93E991F991A991B9915A -:1022B200092F082B21F01D9111930197E1F7AF919E -:1022C200BF91899199910C941F0105FF3273776137 -:1022D20070004D111B017A0598057A058F05AE0431 -:1022E2000AFF726566696C6C2D74696266111B0166 -:1022F2009411CE045A00F70C9A111A05ED05E30960 -:102302001A05E405AE040AFF736F757263652D74D6 -:10231200696271111B0194119A111205AE0403FF37 -:10232200746962008411DC04850204FF237469620B -:102332009011DC04DF0206FF65653E72616D961145 -:102342001B01ED0534076805F90768051A05C2097E -:102352005D05C2095D056207A411D309AE0408FF39 -:10236200696E69742D72616D9C111B01CE04A80007 -:102372009B07CE0422009D06A111AE040BFF7365DC -:10238200742D63757272656E7400B0111B01CE04F8 -:102392008400D507AE0408FF776F72646C697374AA -:1023A200BF111B011C0AED056805D5074A05C209C4 -:1023B200FF0F1D0AAE040EFF666F7274682D776FF1 -:1023C20072646C697374CC11DC04860009FF736556 -:1023D200742D6F7264657200DC111B01CE048800DB -:1023E200FE03AE040FFF7365742D7265636F676E33 -:1023F200697A65727300E7111B01CE049A00FE032D -:10240200AE040FFF6765742D7265636F676E697A3C -:1024120065727300F3111B01CE049A00DD03AE0452 -:1024220004FF636F646502121B01AE010E03130AFF -:102432001110DC01AE0408FF656E642D636F6465E4 -:1024420011121B01D1010C94D1011F01AE0408FF2E -:10245200286D61726B6572291C120905A6001A109B -:1024620024100800706F7374706F6E6528121B0160 -:102472001A0E320F3D0F4A059805111011102C0843 -:10248200B8048F0511102C08DC01AE0406FF626F40 -:10249200756E647332121B01680536065D05AE0463 -:1024A20003FF733E640047121B014A05BA05AE04DE -:1024B20005FF3E626F6479005112C9060800326C52 -:1024C20069746572616C59121B015D05F201F201BA -:1024D200AE0401FF3D005F121B012C06B305AE04E2 -:1024E20001FF31006A12DC04010001FF32007112A7 -:0E24F200DC04020002FF2D317612DC04FFFF35 -:00000001FF diff --git a/amforth-6.5/appl/atmega2561/atmega256.lst b/amforth-6.5/appl/atmega2561/atmega256.lst deleted file mode 100644 index 6c42c66..0000000 --- a/amforth-6.5/appl/atmega2561/atmega256.lst +++ /dev/null @@ -1,10182 +0,0 @@ - -AVRASM ver. 2.1.52 atmega256.asm Sun Apr 30 20:10:15 2017 - -atmega256.asm(11): 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/atmega2561\device.asm' -../../avr8/devices/atmega2561\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m2561def.inc' -atmega256.asm(15): Including file '../../avr8\drivers/usart_1.asm' -../../avr8\drivers/usart_1.asm(31): 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' -atmega256.asm(18): Including file '../../avr8\amforth-low.asm' -../../avr8\amforth-low.asm(11): Including file '../../avr8\amforth-interpreter.asm' -../../avr8\amforth-low.asm(12): Including file '../../avr8\drivers/generic-isr.asm' -../../avr8\amforth-low.asm(15): 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-low.asm(16): Including file 'dict_appl.inc' -dict_appl.inc(4): Including file 'words/applturnkey.asm' -../../avr8\amforth-low.asm(17): 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(95): Including file '../../avr8\words/store-i_big.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/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' -../../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-low.asm(18): Including file 'dict_appl_core.inc' -../../avr8\amforth-low.asm(27): Including file '../../avr8\amforth-eeprom.inc' - - - ; both a 24bit address space and they need a special - ; flash store placement in the NRWW section, way outside - ; of the standard 16bit jump distance. - - ; note that dict_appl_core includes a store-i_big.asm - ; instead if the normal store-i.asm file. This file - ; has all the magic needed for the large address space. - ; *everything else* is identical to other controllers. - - .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 = 512 - .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_TWI = 0 - .set WANT_SPI = 0 - .set WANT_PORTA = 0 - .set WANT_PORTB = 0 - .set WANT_PORTC = 0 - .set WANT_PORTD = 0 - .set WANT_PORTE = 0 - .set WANT_PORTF = 0 - .set WANT_PORTG = 0 - .set WANT_TIMER_COUNTER_0 = 0 - .set WANT_TIMER_COUNTER_2 = 0 - .set WANT_WATCHDOG = 0 - .set WANT_USART1 = 0 - .set WANT_EEPROM = 0 - .set WANT_TIMER_COUNTER_5 = 0 - .set WANT_TIMER_COUNTER_4 = 0 - .set WANT_TIMER_COUNTER_3 = 0 - .set WANT_TIMER_COUNTER_1 = 0 - .set WANT_JTAG = 0 - .set WANT_EXTERNAL_INTERRUPT = 0 - .set WANT_CPU = 0 - .set WANT_AD_CONVERTER = 0 - .set WANT_BOOT_LOAD = 0 - .equ intvecsize = 2 ; please verify; flash size: 262144 bytes - .equ pclen = 3 ; 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 ; External Interrupt Request 3 - .org 10 -00000a d131 rcall isr ; External Interrupt Request 4 - .org 12 -00000c d12f rcall isr ; External Interrupt Request 5 - .org 14 -00000e d12d rcall isr ; External Interrupt Request 6 - .org 16 -000010 d12b rcall isr ; External Interrupt Request 7 - .org 18 -000012 d129 rcall isr ; Pin Change Interrupt Request 0 - .org 20 -000014 d127 rcall isr ; Pin Change Interrupt Request 1 - .org 22 -000016 d125 rcall isr ; Pin Change Interrupt Request 2 - .org 24 -000018 d123 rcall isr ; Watchdog Time-out Interrupt - .org 26 -00001a d121 rcall isr ; Timer/Counter2 Compare Match A - .org 28 -00001c d11f rcall isr ; Timer/Counter2 Compare Match B - .org 30 -00001e d11d rcall isr ; Timer/Counter2 Overflow - .org 32 -000020 d11b rcall isr ; Timer/Counter1 Capture Event - .org 34 -000022 d119 rcall isr ; Timer/Counter1 Compare Match A - .org 36 -000024 d117 rcall isr ; Timer/Counter1 Compare Match B - .org 38 -000026 d115 rcall isr ; Timer/Counter1 Compare Match C - .org 40 -000028 d113 rcall isr ; Timer/Counter1 Overflow - .org 42 -00002a d111 rcall isr ; Timer/Counter0 Compare Match A - .org 44 -00002c d10f rcall isr ; Timer/Counter0 Compare Match B - .org 46 -00002e d10d rcall isr ; Timer/Counter0 Overflow - .org 48 -000030 d10b rcall isr ; SPI Serial Transfer Complete - .org 50 -000032 d109 rcall isr ; USART0, Rx Complete - .org 52 -000034 d107 rcall isr ; USART0 Data register Empty - .org 54 -000036 d105 rcall isr ; USART0, Tx Complete - .org 56 -000038 d103 rcall isr ; Analog Comparator - .org 58 -00003a d101 rcall isr ; ADC Conversion Complete - .org 60 -00003c d0ff rcall isr ; EEPROM Ready - .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 Compare Match C - .org 70 -000046 d0f5 rcall isr ; Timer/Counter3 Overflow - .org 72 -000048 d0f3 rcall isr ; USART1, Rx Complete - .org 74 -00004a d0f1 rcall isr ; USART1 Data register Empty - .org 76 -00004c d0ef rcall isr ; USART1, Tx Complete - .org 78 -00004e d0ed rcall isr ; 2-wire Serial Interface - .org 80 -000050 d0eb rcall isr ; Store Program Memory Read - .org 82 -000052 d0e9 rcall isr ; Timer/Counter4 Capture Event - .org 84 -000054 d0e7 rcall isr ; Timer/Counter4 Compare Match A - .org 86 -000056 d0e5 rcall isr ; Timer/Counter4 Compare Match B - .org 88 -000058 d0e3 rcall isr ; Timer/Counter4 Compare Match C - .org 90 -00005a d0e1 rcall isr ; Timer/Counter4 Overflow - .org 92 -00005c d0df rcall isr ; Timer/Counter5 Capture Event - .org 94 -00005e d0dd rcall isr ; Timer/Counter5 Compare Match A - .org 96 -000060 d0db rcall isr ; Timer/Counter5 Compare Match B - .org 98 -000062 d0d9 rcall isr ; Timer/Counter5 Compare Match C - .org 100 -000064 d0d7 rcall isr ; Timer/Counter5 Overflow - .org 102 -000066 d0d5 rcall isr ; USART2, Rx Complete - .org 104 -000068 d0d3 rcall isr ; USART2 Data register Empty - .org 106 -00006a d0d1 rcall isr ; USART2, Tx Complete - .org 108 -00006c d0cf rcall isr ; USART3, Rx Complete - .org 110 -00006e d0cd rcall isr ; USART3 Data register Empty - .org 112 -000070 d0cb rcall isr ; USART3, Tx Complete - .equ INTVECTORS = 57 - .nooverlap - - ; compatability layer (maybe empty) - - ; controller data area, environment query mcu-info - mcu_info: - mcu_ramsize: -000071 2000 .dw 8192 - mcu_eepromsize: -000072 1000 .dw 4096 - mcu_maxdp: -000073 ffff .dw 65535 - mcu_numints: -000074 0039 .dw 57 - mcu_name: -000075 000a .dw 10 -000076 5441 -000077 656d -000078 6167 -000079 3532 -00007a 3136 .db "ATmega2561" - .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 - - ; cpu clock in hertz - .equ F_CPU = 14745600 - .include "drivers/usart_1.asm" - - .equ BAUDRATE_HIGH = UBRR1H - .equ USART_C = UCSR1C - .equ USART_B = UCSR1B - .equ USART_A = UCSR1A - .equ USART_DATA = UDR1 - - .equ URXCaddr = URXC1addr - .equ UDREaddr = UDRE1addr - - .equ bm_USART_RXRD = 1 << RXC1 - .equ bm_USART_TXRD = 1 << UDRE1 - .equ bm_ENABLE_TX = 1 << TXEN1 - .equ bm_ENABLE_RX = 1 << RXEN1 - .equ bm_ENABLE_INT_RX = 1<rx-buf",0 -000080 0000 .dw VE_HEAD - .set VE_HEAD = VE_TO_RXBUF - XT_TO_RXBUF: -000081 0082 .dw PFA_rx_tobuf - PFA_rx_tobuf: -000082 2f08 mov temp0, tosl -000083 9110 0210 lds temp1, usart_rx_in -000085 e0e0 ldi zl, low(usart_rx_data) -000086 e0f2 ldi zh, high(usart_rx_data) -000087 0fe1 add zl, temp1 -000088 1df3 adc zh, zeroh -000089 8300 st Z, temp0 -00008a 9513 inc temp1 -00008b 701f andi temp1,usart_rx_mask -00008c 9310 0210 sts usart_rx_in, temp1 -00008e 9189 -00008f 9199 loadtos -000090 940c 011f jmp_ DO_NEXT - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; setup with - ; ' isr-rx URXCaddr int! - VE_ISR_RX: -000092 ff06 .dw $ff06 -000093 7369 -000094 2d72 -000095 7872 .db "isr-rx" -000096 007b .dw VE_HEAD - .set VE_HEAD = VE_ISR_RX - XT_ISR_RX: -000097 011b .dw DO_COLON - usart_rx_isr: -000098 04ce .dw XT_DOLITERAL -000099 00ce .dw usart_data -00009a 0531 .dw XT_CFETCH -00009b 054a .dw XT_DUP -00009c 04ce .dw XT_DOLITERAL -00009d 0003 .dw 3 -00009e 126d .dw XT_EQUAL -00009f 04c7 .dw XT_DOCONDBRANCH -0000a0 00a2 .dw usart_rx_isr1 -0000a1 0ebf .dw XT_COLD - usart_rx_isr1: -0000a2 0081 .dw XT_TO_RXBUF -0000a3 04ae .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: -0000a4 011b .dw DO_COLON - PFA_USART_INIT_RX_BUFFER: ; ( -- ) -0000a5 04ce -0000a6 0097 .dw XT_DOLITERAL, XT_ISR_RX -0000a7 04ce -0000a8 0048 .dw XT_DOLITERAL, URXCaddr -0000a9 08eb .dw XT_INTSTORE - -0000aa 04ce .dw XT_DOLITERAL -0000ab 0200 .dw usart_rx_data -0000ac 04ce .dw XT_DOLITERAL -0000ad 0016 .dw usart_rx_size + 6 -0000ae 05ed .dw XT_ZERO -0000af 0933 .dw XT_FILL -0000b0 04ae .dw XT_EXIT - - ; ( -- c) - ; MCU - ; get 1 character from input queue, wait if needed using interrupt driver - VE_RX_BUFFER: -0000b1 ff06 .dw $ff06 -0000b2 7872 -0000b3 622d -0000b4 6675 .db "rx-buf" -0000b5 0092 .dw VE_HEAD - .set VE_HEAD = VE_RX_BUFFER - XT_RX_BUFFER: -0000b6 011b .dw DO_COLON - PFA_RX_BUFFER: -0000b7 00d1 .dw XT_RXQ_BUFFER -0000b8 04c7 .dw XT_DOCONDBRANCH -0000b9 00b7 .dw PFA_RX_BUFFER -0000ba 04ce .dw XT_DOLITERAL -0000bb 0211 .dw usart_rx_out -0000bc 0531 .dw XT_CFETCH -0000bd 054a .dw XT_DUP -0000be 04ce .dw XT_DOLITERAL -0000bf 0200 .dw usart_rx_data -0000c0 0636 .dw XT_PLUS -0000c1 0531 .dw XT_CFETCH -0000c2 055d .dw XT_SWAP -0000c3 06c8 .dw XT_1PLUS -0000c4 04ce .dw XT_DOLITERAL -0000c5 000f .dw usart_rx_mask -0000c6 06ac .dw XT_AND -0000c7 04ce .dw XT_DOLITERAL -0000c8 0211 .dw usart_rx_out -0000c9 0526 .dw XT_CSTORE -0000ca 04ae .dw XT_EXIT - - ; ( -- f) - ; MCU - ; check if unread characters are in the input queue - VE_RXQ_BUFFER: -0000cb ff07 .dw $ff07 -0000cc 7872 -0000cd 2d3f -0000ce 7562 -0000cf 0066 .db "rx?-buf",0 -0000d0 00b1 .dw VE_HEAD - .set VE_HEAD = VE_RXQ_BUFFER - XT_RXQ_BUFFER: -0000d1 011b .dw DO_COLON - PFA_RXQ_BUFFER: -0000d2 0eb7 .dw XT_PAUSE -0000d3 04ce .dw XT_DOLITERAL -0000d4 0211 .dw usart_rx_out -0000d5 0531 .dw XT_CFETCH -0000d6 04ce .dw XT_DOLITERAL -0000d7 0210 .dw usart_rx_in -0000d8 0531 .dw XT_CFETCH -0000d9 05ac .dw XT_NOTEQUAL -0000da 04ae .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: -0000db ff07 .dw $ff07 -0000dc 7874 -0000dd 702d -0000de 6c6f -0000df 006c .db "tx-poll",0 -0000e0 00cb .dw VE_HEAD - .set VE_HEAD = VE_TX_POLL - XT_TX_POLL: -0000e1 011b .dw DO_COLON - PFA_TX_POLL: - ; wait for data ready -0000e2 00ef .dw XT_TXQ_POLL -0000e3 04c7 .dw XT_DOCONDBRANCH -0000e4 00e2 .dw PFA_TX_POLL - ; send to usart -0000e5 04ce .dw XT_DOLITERAL -0000e6 00ce .dw USART_DATA -0000e7 0526 .dw XT_CSTORE -0000e8 04ae .dw XT_EXIT - - ; ( -- f) MCU - ; MCU - ; check if a character can be send using register poll - VE_TXQ_POLL: -0000e9 ff08 .dw $ff08 -0000ea 7874 -0000eb 2d3f -0000ec 6f70 -0000ed 6c6c .db "tx?-poll" -0000ee 00db .dw VE_HEAD - .set VE_HEAD = VE_TXQ_POLL - XT_TXQ_POLL: -0000ef 011b .dw DO_COLON - PFA_TXQ_POLL: -0000f0 0eb7 .dw XT_PAUSE -0000f1 04ce .dw XT_DOLITERAL -0000f2 00c8 .dw USART_A -0000f3 0531 .dw XT_CFETCH -0000f4 04ce .dw XT_DOLITERAL -0000f5 0020 .dw bm_USART_TXRD -0000f6 06ac .dw XT_AND -0000f7 04ae .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: -0000f8 ff04 .dw $ff04 -0000f9 6275 -0000fa 7272 .db "ubrr" -0000fb 00e9 .dw VE_HEAD - .set VE_HEAD = VE_UBRR - XT_UBRR: -0000fc 0509 .dw PFA_DOVALUE1 - PFA_UBRR: ; ( -- ) -0000fd 00ca .dw EE_UBRRVAL -0000fe 101a .dw XT_EDEFERFETCH -0000ff 1024 .dw XT_EDEFERSTORE - .include "words/usart.asm" - - ; MCU - ; initialize usart - VE_USART: -000100 ff06 .dw $ff06 -000101 752b -000102 6173 -000103 7472 .db "+usart" -000104 00f8 .dw VE_HEAD - .set VE_HEAD = VE_USART - XT_USART: -000105 011b .dw DO_COLON - PFA_USART: ; ( -- ) - -000106 04ce .dw XT_DOLITERAL -000107 0098 .dw USART_B_VALUE -000108 04ce .dw XT_DOLITERAL -000109 00c9 .dw USART_B -00010a 0526 .dw XT_CSTORE - -00010b 04ce .dw XT_DOLITERAL -00010c 0006 .dw USART_C_VALUE -00010d 04ce .dw XT_DOLITERAL -00010e 00ca .dw USART_C | bm_USARTC_en -00010f 0526 .dw XT_CSTORE - -000110 00fc .dw XT_UBRR -000111 054a .dw XT_DUP -000112 0792 .dw XT_BYTESWAP -000113 04ce .dw XT_DOLITERAL -000114 00cd .dw BAUDRATE_HIGH -000115 0526 .dw XT_CSTORE -000116 04ce .dw XT_DOLITERAL -000117 00cc .dw BAUDRATE_LOW -000118 0526 .dw XT_CSTORE - .if XT_USART_INIT_RX!=0 -000119 00a4 .dw XT_USART_INIT_RX - .endif - .if XT_USART_INIT_TX!=0 - .endif - -00011a 04ae .dw XT_EXIT - - ; all of amforth is in one segment - .include "amforth-low.asm" - - ;;;; - ;;;; GPL V2 (only) - - .set pc_ = pc - - .org $0000 -000000 940c 0ec0 jmp_ PFA_COLD - .org pc_ - - .include "amforth-interpreter.asm" - - - DO_COLON: -00011b 93bf push XH -00011c 93af push XL ; PUSH IP -00011d 01db movw XL, wl -00011e 9611 adiw xl, 1 - DO_NEXT: - .if WANT_INTERRUPTS == 1 -00011f 14b2 cp isrflag, zerol -000120 f499 brne DO_INTERRUPT - .endif -000121 01fd movw zl, XL ; READ IP -000122 2755 -000123 0fee -000124 1fff -000125 1f55 -000126 bf5b -000127 9167 -000128 9177 readflashcell wl, wh -000129 9611 adiw XL, 1 ; INC IP - - DO_EXECUTE: -00012a 01fb movw zl, wl -00012b 2755 -00012c 0fee -00012d 1fff -00012e 1f55 -00012f bf5b -000130 9107 -000131 9117 readflashcell temp0,temp1 -000132 01f8 movw zl, temp0 -000133 9409 ijmp - - .if WANT_INTERRUPTS == 1 - DO_INTERRUPT: - ; here we deal with interrupts the forth way -000134 939a -000135 938a savetos -000136 2d8b mov tosl, isrflag -000137 2799 clr tosh -000138 24bb clr isrflag -000139 e066 ldi wl, LOW(XT_ISREXEC) -00013a e079 ldi wh, HIGH(XT_ISREXEC) -00013b cfee rjmp DO_EXECUTE - .include "drivers/generic-isr.asm" - - .eseg -000000 intvec: .byte INTVECTORS * CELLSIZE - .dseg -000212 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) -00013f 900f pop r0 ; some 128+K Flash devices use 3 cells for call/ret - .endif -000140 900f pop r0 -000141 900f pop r0 ; = intnum * intvectorsize + 1 (address following the rcall) -000142 940a dec r0 - .if intvecsize == 1 ; - .endif -000143 2cb0 mov isrflag, r0 -000144 93ff push zh -000145 93ef push zl -000146 e1e2 ldi zl, low(intcnt) -000147 e0f2 ldi zh, high(intcnt) -000148 9406 lsr r0 ; we use byte addresses in the counter array, not words -000149 0de0 add zl, r0 -00014a 1df3 adc zh, zeroh -00014b 8000 ld r0, Z -00014c 9403 inc r0 -00014d 8200 st Z, r0 -00014e 91ef pop zl -00014f 91ff pop zh - -000150 9009 ld r0, Y+ -000151 be0f out SREG, r0 -000152 9009 ld r0, Y+ -000153 9508 ret ; returns the interrupt, the rcall stack frame is removed! - ; no reti here, see words/isr-end.asm - .set AMFORTH_NRWW_SIZE=(FLASHEND-AMFORTH_RO_SEG)*2 - ; lower part of the dictionary - .include "dict/rww.inc" - - - ; Arithmetics - ; add a number to a double cell - VE_MPLUS: -000154 ff02 .dw $ff02 -000155 2b6d .db "m+" -000156 0100 .dw VE_HEAD - .set VE_HEAD = VE_MPLUS - XT_MPLUS: -000157 011b .dw DO_COLON - PFA_MPLUS: -000158 1255 .dw XT_S2D -000159 0879 .dw XT_DPLUS -00015a 04ae .dw XT_EXIT - .include "words/ud-star.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_UDSTAR: -00015b ff03 .dw $ff03 -00015c 6475 -../../common\words/ud-star.asm(9): warning: .cseg .db misalignment - padding zero byte -00015d 002a .db "ud*" -00015e 0154 .dw VE_HEAD - .set VE_HEAD = VE_UDSTAR - XT_UDSTAR: -00015f 011b .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 + ; - -000160 054a -000161 0598 -000162 0679 -000163 0572 .DW XT_DUP,XT_TO_R,XT_UMSTAR,XT_DROP -000164 055d -000165 058f -000166 0679 -000167 057a -000168 0636 -000169 04ae .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: -00016a ff04 .dw $ff04 -00016b 6d75 -00016c 7861 .db "umax" -00016d 015b .dw VE_HEAD - .set VE_HEAD = VE_UMAX - XT_UMAX: -00016e 011b .dw DO_COLON - PFA_UMAX: - .endif - -00016f 09ca -000170 05f5 .DW XT_2DUP,XT_ULESS -000171 04c7 .dw XT_DOCONDBRANCH -000172 0174 DEST(UMAX1) -000173 055d .DW XT_SWAP -000174 0572 UMAX1: .DW XT_DROP -000175 04ae .dw XT_EXIT - .include "words/umin.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_UMIN: -000176 ff04 .dw $ff04 -000177 6d75 -000178 6e69 .db "umin" -000179 016a .dw VE_HEAD - .set VE_HEAD = VE_UMIN - XT_UMIN: -00017a 011b .dw DO_COLON - PFA_UMIN: - .endif -00017b 09ca -00017c 0600 .DW XT_2DUP,XT_UGREATER -00017d 04c7 .dw XT_DOCONDBRANCH -00017e 0180 DEST(UMIN1) -00017f 055d .DW XT_SWAP -000180 0572 UMIN1: .DW XT_DROP -000181 04ae .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: -000182 011b .dw DO_COLON - PFA_IMMEDIATEQ: -000183 04ce .dw XT_DOLITERAL -000184 8000 .dw $8000 -000185 06ac .dw XT_AND -000186 05b3 .dw XT_ZEROEQUAL -000187 04c7 .dw XT_DOCONDBRANCH -000188 018b DEST(IMMEDIATEQ1) -000189 1274 .dw XT_ONE -00018a 04ae .dw XT_EXIT - IMMEDIATEQ1: - ; not immediate -00018b 05e4 .dw XT_TRUE -00018c 04ae .dw XT_EXIT - .include "words/name2flags.asm" - - ; Tools - ; get the flags from a name token - VE_NAME2FLAGS: -00018d ff0a .dw $ff0a -00018e 616e -00018f 656d -000190 663e -000191 616c -000192 7367 .db "name>flags" -000193 0176 .dw VE_HEAD - .set VE_HEAD = VE_NAME2FLAGS - XT_NAME2FLAGS: -000194 011b .dw DO_COLON - PFA_NAME2FLAGS: -000195 082c .dw XT_FETCHI ; skip to link field -000196 04ce .dw XT_DOLITERAL -000197 ff00 .dw $ff00 -000198 06ac .dw XT_AND -000199 04ae .dw XT_EXIT - - .if AMFORTH_NRWW_SIZE > 8000 - .include "dict/appl_8k.inc" - - - .include "words/newest.asm" - - ; System Variable - ; system state - VE_NEWEST: -00019a ff06 .dw $ff06 -00019b 656e -00019c 6577 -00019d 7473 .db "newest" -00019e 018d .dw VE_HEAD - .set VE_HEAD = VE_NEWEST - XT_NEWEST: -00019f 04dc .dw PFA_DOVARIABLE - PFA_NEWEST: -0001a0 024b .dw ram_newest - - .dseg -00024b ram_newest: .byte 4 - .include "words/latest.asm" - - ; System Variable - ; system state - VE_LATEST: -0001a1 ff06 .dw $ff06 -0001a2 616c -0001a3 6574 -0001a4 7473 .db "latest" -0001a5 019a .dw VE_HEAD - .set VE_HEAD = VE_LATEST - XT_LATEST: -0001a6 04dc .dw PFA_DOVARIABLE - PFA_LATEST: -0001a7 024f .dw ram_latest - - .dseg -00024f 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: -0001a8 ff08 .dw $ff08 -0001a9 6328 -0001aa 6572 -0001ab 7461 -0001ac 2965 .db "(create)" -0001ad 01a1 .dw VE_HEAD - .set VE_HEAD = VE_DOCREATE - XT_DOCREATE: -0001ae 011b .dw DO_COLON - PFA_DOCREATE: - .endif -0001af 0e1a -0001b0 0305 .DW XT_PARSENAME,XT_WLSCOPE ; ( -- addr len wid) -0001b1 054a -0001b2 019f -0001b3 09c2 -0001b4 051a .DW XT_DUP,XT_NEWEST,XT_CELLPLUS,XT_STORE ; save the wid -0001b5 02ea -0001b6 019f -0001b7 051a .DW XT_HEADER,XT_NEWEST,XT_STORE ; save the nt -0001b8 04ae .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: -0001b9 0001 .dw $0001 -0001ba 005c .db $5c,0 -0001bb 01a8 .dw VE_HEAD - .set VE_HEAD = VE_BACKSLASH - XT_BACKSLASH: -0001bc 011b .dw DO_COLON - PFA_BACKSLASH: - .endif -0001bd 0e01 .dw XT_SOURCE -0001be 0589 .dw XT_NIP -0001bf 09e3 .dw XT_TO_IN -0001c0 051a .dw XT_STORE -0001c1 04ae .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: -0001c2 0001 .dw $0001 -0001c3 0028 .db "(" ,0 -0001c4 01b9 .dw VE_HEAD - .set VE_HEAD = VE_LPAREN - XT_LPAREN: -0001c5 011b .dw DO_COLON - PFA_LPAREN: - .endif -0001c6 04ce .dw XT_DOLITERAL -0001c7 0029 .dw ')' -0001c8 0ded .dw XT_PARSE -0001c9 09d3 .dw XT_2DROP -0001ca 04ae .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: -0001cb ff07 .dw $ff07 -0001cc 6f63 -0001cd 706d -0001ce 6c69 -0001cf 0065 .db "compile",0 -0001d0 01c2 .dw VE_HEAD - .set VE_HEAD = VE_COMPILE - XT_COMPILE: -0001d1 011b .dw DO_COLON - PFA_COMPILE: - .endif -0001d2 058f .dw XT_R_FROM -0001d3 054a .dw XT_DUP -0001d4 1011 .dw XT_ICELLPLUS -0001d5 0598 .dw XT_TO_R -0001d6 082c .dw XT_FETCHI -0001d7 01dc .dw XT_COMMA -0001d8 04ae .dw XT_EXIT - .include "words/comma.asm" - - ; Dictionary - ; compile 16 bit into flash at DP - VE_COMMA: -0001d9 ff01 .dw $ff01 -0001da 002c .db ',',0 ; , -0001db 01cb .dw VE_HEAD - .set VE_HEAD = VE_COMMA - XT_COMMA: -0001dc 011b .dw DO_COLON - PFA_COMMA: -0001dd 0a13 .dw XT_DP -0001de 080d .dw XT_STOREI -0001df 0a13 .dw XT_DP -0001e0 06c8 .dw XT_1PLUS -0001e1 0fff .dw XT_DOTO -0001e2 0a14 .dw PFA_DP -0001e3 04ae .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: -0001e4 0003 .dw $0003 -0001e5 275b -0001e6 005d .db "[']",0 -0001e7 01d9 .dw VE_HEAD - .set VE_HEAD = VE_BRACKETTICK - XT_BRACKETTICK: -0001e8 011b .dw DO_COLON - PFA_BRACKETTICK: - .endif -0001e9 0c70 .dw XT_TICK -0001ea 01f2 .dw XT_LITERAL -0001eb 04ae .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: -0001ec 0007 .dw $0007 -0001ed 696c -0001ee 6574 -0001ef 6172 -0001f0 006c .db "literal",0 -0001f1 01e4 .dw VE_HEAD - .set VE_HEAD = VE_LITERAL - XT_LITERAL: -0001f2 011b .dw DO_COLON - PFA_LITERAL: - .endif -0001f3 01d1 .DW XT_COMPILE -0001f4 04ce .DW XT_DOLITERAL -0001f5 01dc .DW XT_COMMA -0001f6 04ae .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: -0001f7 0008 .dw $0008 -0001f8 6c73 -0001f9 7469 -0001fa 7265 -0001fb 6c61 .db "sliteral" -0001fc 01ec .dw VE_HEAD - .set VE_HEAD = VE_SLITERAL - XT_SLITERAL: -0001fd 011b .dw DO_COLON - PFA_SLITERAL: - .endif -0001fe 01d1 .dw XT_COMPILE -0001ff 0bd3 .dw XT_DOSLITERAL ; ( -- addr n) -000200 0be1 .dw XT_SCOMMA -000201 04ae .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: -000202 011b .dw DO_COLON - PFA_GMARK: -000203 0a13 .dw XT_DP -000204 01d1 .dw XT_COMPILE -000205 ffff .dw -1 ; ffff does not erase flash -000206 04ae .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: -000207 011b .dw DO_COLON - PFA_GRESOLVE: -000208 0fbd .dw XT_QSTACK -000209 0a13 .dw XT_DP -00020a 055d .dw XT_SWAP -00020b 080d .dw XT_STOREI -00020c 04ae .dw XT_EXIT - .include "words/l_mark.asm" - - ; Compiler - ; place destination for backward branch - ;VE_LMARK: - ; .dw $ff05 - ; .db "r if 2drop then r> invert ; - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_QDOCHECK: -00029b 011b .dw DO_COLON - PFA_QDOCHECK: - .endif -00029c 09ca .dw XT_2DUP -00029d 126d .dw XT_EQUAL -00029e 054a .dw XT_DUP -00029f 0598 .dw XT_TO_R -0002a0 04c7 .dw XT_DOCONDBRANCH -0002a1 02a3 DEST(PFA_QDOCHECK1) -0002a2 09d3 .dw XT_2DROP - PFA_QDOCHECK1: -0002a3 058f .dw XT_R_FROM -0002a4 0696 .dw XT_INVERT -0002a5 04ae .dw XT_EXIT - .include "words/endloop.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_ENDLOOP: -0002a6 ff07 .dw $ff07 -0002a7 6e65 -0002a8 6c64 -0002a9 6f6f -0002aa 0070 .db "endloop",0 -0002ab 028f .dw VE_HEAD - .set VE_HEAD = VE_ENDLOOP - XT_ENDLOOP: -0002ac 011b .dw DO_COLON - PFA_ENDLOOP: - .endif - ;Z ENDLOOP adrs xt -- L: 0 a1 a2 .. aN -- - ; ?DUP WHILE POSTPONE THEN REPEAT ; - ; resolve LEAVEs - ; This is a common factor of LOOP and +LOOP. - -0002ad 0210 .DW XT_LRESOLVE -0002ae 02b9 -0002af 0552 -0002b0 04c7 LOOP1: .DW XT_L_FROM,XT_QDUP,XT_DOCONDBRANCH -0002b1 02b5 DEST(LOOP2) -0002b2 0235 .DW XT_THEN -0002b3 04bd .dw XT_DOBRANCH -0002b4 02ae DEST(LOOP1) -0002b5 04ae LOOP2: .DW XT_EXIT - ; leave address stack - .include "words/l-from.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_L_FROM: -0002b6 ff02 .dw $ff02 -0002b7 3e6c .db "l>" -0002b8 02a6 .dw VE_HEAD - .set VE_HEAD = VE_L_FROM - XT_L_FROM: -0002b9 011b .dw DO_COLON - PFA_L_FROM: - - .endif - ;Z L> -- x L: x -- move from leave stack - ; LP @ @ -2 LP +! ; - -0002ba 02d8 .dw XT_LP -0002bb 0512 .dw XT_FETCH -0002bc 0512 .dw XT_FETCH -0002bd 04ce .dw XT_DOLITERAL -0002be fffe .dw -2 -0002bf 02d8 .dw XT_LP -0002c0 06fe .dw XT_PLUSSTORE -0002c1 04ae .dw XT_EXIT - .include "words/to-l.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_TO_L: -0002c2 ff02 .dw $ff02 -0002c3 6c3e .db ">l" -0002c4 02b6 .dw VE_HEAD - .set VE_HEAD = VE_TO_L - XT_TO_L: -0002c5 011b .dw DO_COLON - PFA_TO_L: - .endif - ;Z >L x -- L: -- x move to leave stack - ; CELL LP +! LP @ ! ; (L stack grows up) - -0002c6 1279 .dw XT_TWO -0002c7 02d8 .dw XT_LP -0002c8 06fe .dw XT_PLUSSTORE -0002c9 02d8 .dw XT_LP -0002ca 0512 .dw XT_FETCH -0002cb 051a .dw XT_STORE -0002cc 04ae .dw XT_EXIT - .include "words/lp0.asm" - - ; Stack - ; start address of leave stack - VE_LP0: -0002cd ff03 .dw $ff03 -0002ce 706c -0002cf 0030 .db "lp0",0 -0002d0 02c2 .dw VE_HEAD - .set VE_HEAD = VE_LP0 - XT_LP0: -0002d1 0509 .dw PFA_DOVALUE1 - PFA_LP0: -0002d2 007e .dw CFG_LP0 -0002d3 101a .dw XT_EDEFERFETCH -0002d4 1024 .dw XT_EDEFERSTORE - .include "words/lp.asm" - - ; System Variable - ; leave stack pointer - VE_LP: -0002d5 ff02 .dw $ff02 -0002d6 706c .db "lp" -0002d7 02cd .dw VE_HEAD - .set VE_HEAD = VE_LP - XT_LP: -0002d8 04dc .dw PFA_DOVARIABLE - PFA_LP: -0002d9 0251 .dw ram_lp - - .dseg -000251 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: -0002da ff06 .dw $ff06 -0002db 7263 -0002dc 6165 -0002dd 6574 .db "create" -0002de 02d5 .dw VE_HEAD - .set VE_HEAD = VE_CREATE - XT_CREATE: -0002df 011b .dw DO_COLON - PFA_CREATE: - .endif -0002e0 01ae .dw XT_DOCREATE -0002e1 030e .dw XT_REVEAL -0002e2 01d1 .dw XT_COMPILE -0002e3 04e9 .dw PFA_DOCONSTANT -0002e4 04ae .dw XT_EXIT - .include "words/header.asm" - - ; Compiler - ; creates the vocabulary header without XT and data field (PF) in the wordlist wid - VE_HEADER: -0002e5 ff06 .dw $ff06 -0002e6 6568 -0002e7 6461 -0002e8 7265 .db "header" -0002e9 02da .dw VE_HEAD - .set VE_HEAD = VE_HEADER - XT_HEADER: -0002ea 011b .dw DO_COLON - PFA_HEADER: -0002eb 0a13 .dw XT_DP ; the new Name Field -0002ec 0598 .dw XT_TO_R -0002ed 0598 .dw XT_TO_R ; ( R: NFA WID ) -0002ee 054a .dw XT_DUP -0002ef 05c1 .dw XT_GREATERZERO -0002f0 04c7 .dw XT_DOCONDBRANCH -0002f1 02fc .dw PFA_HEADER1 -0002f2 054a .dw XT_DUP -0002f3 04ce .dw XT_DOLITERAL -0002f4 ff00 .dw $ff00 ; all flags are off (e.g. immediate) -0002f5 06b5 .dw XT_OR -0002f6 0be5 .dw XT_DOSCOMMA - ; make the link to the previous entry in this wordlist -0002f7 058f .dw XT_R_FROM -0002f8 07f9 .dw XT_FETCHE -0002f9 01dc .dw XT_COMMA -0002fa 058f .dw XT_R_FROM -0002fb 04ae .dw XT_EXIT - - PFA_HEADER1: - ; -16: attempt to use zero length string as a name -0002fc 04ce .dw XT_DOLITERAL -0002fd fff0 .dw -16 -0002fe 0ca7 .dw XT_THROW - - .include "words/wlscope.asm" - - ; Compiler - ; dynamically place a word in a wordlist. The word name may be changed. - VE_WLSCOPE: -0002ff ff07 .dw $ff07 -000300 6c77 -000301 6373 -000302 706f -000303 0065 .db "wlscope",0 -000304 02e5 .dw VE_HEAD - .set VE_HEAD = VE_WLSCOPE - XT_WLSCOPE: -000305 1079 .dw PFA_DODEFER1 - PFA_WLSCOPE: -000306 007a .dw CFG_WLSCOPE -000307 101a .dw XT_EDEFERFETCH -000308 1024 .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: -000309 ff06 .dw $ff06 -00030a 6572 -00030b 6576 -00030c 6c61 .db "reveal" -00030d 02ff .dw VE_HEAD - .set VE_HEAD = VE_REVEAL - XT_REVEAL: -00030e 011b .dw DO_COLON - PFA_REVEAL: - .endif -00030f 019f -000310 09c2 -000311 0512 .DW XT_NEWEST,XT_CELLPLUS,XT_FETCH ; only if wordlist is in use -000312 0552 -000313 04c7 .DW XT_QDUP,XT_DOCONDBRANCH -000314 0319 DEST(REVEAL1) -000315 019f -000316 0512 -000317 055d -000318 07d5 .DW XT_NEWEST,XT_FETCH,XT_SWAP,XT_STOREE - ; .DW XT_ZERO,XT_NEWEST,XT_CELLPLUS,XT_STORE ; clean wordlist entry - REVEAL1: -000319 04ae .DW XT_EXIT - .include "words/does.asm" - - ; Compiler - ; organize the XT replacement to call other colon code - VE_DOES: -00031a 0005 .dw $0005 -00031b 6f64 -00031c 7365 -00031d 003e .db "does>",0 -00031e 0309 .dw VE_HEAD - .set VE_HEAD = VE_DOES - XT_DOES: -00031f 011b .dw DO_COLON - PFA_DOES: -000320 01d1 .dw XT_COMPILE -000321 0332 .dw XT_DODOES -000322 01d1 .dw XT_COMPILE ; create a code snippet to be used in an embedded XT -000323 940e .dw $940e ; the address of this compiled -000324 01d1 .dw XT_COMPILE ; code will replace the XT of the -000325 0327 .dw DO_DODOES ; word that CREATE created -000326 04ae .dw XT_EXIT ; - - DO_DODOES: ; ( -- PFA ) -000327 939a -000328 938a savetos -000329 01cb movw tosl, wl -00032a 9601 adiw tosl, 1 - ; the following takes the address from a real uC-call - .if (pclen==3) -00032b 917f pop wh ; some 128K Flash devices use 3 cells for call/ret - .endif -00032c 917f pop wh -00032d 916f pop wl - -00032e 93bf push XH -00032f 93af push XL -000330 01db movw XL, wl -000331 cded 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: -000332 011b .dw DO_COLON - PFA_DODOES: -000333 058f .dw XT_R_FROM -000334 019f .dw XT_NEWEST -000335 09c2 .dw XT_CELLPLUS -000336 0512 .dw XT_FETCH -000337 07f9 .dw XT_FETCHE -000338 10e4 .dw XT_NFA2CFA -000339 080d .dw XT_STOREI -00033a 04ae .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: -00033b ff01 .dw $ff01 -00033c 003a .db ":",0 -00033d 031a .dw VE_HEAD - .set VE_HEAD = VE_COLON - XT_COLON: -00033e 011b .dw DO_COLON - PFA_COLON: - .endif -00033f 01ae .dw XT_DOCREATE -000340 0349 .dw XT_COLONNONAME -000341 0572 .dw XT_DROP -000342 04ae .dw XT_EXIT - .include "words/colon-noname.asm" - - ; Compiler - ; create an unnamed entry in the dictionary, XT is DO_COLON - VE_COLONNONAME: -000343 ff07 .dw $ff07 -000344 6e3a -000345 6e6f -000346 6d61 -000347 0065 .db ":noname",0 -000348 033b .dw VE_HEAD - .set VE_HEAD = VE_COLONNONAME - XT_COLONNONAME: -000349 011b .dw DO_COLON - PFA_COLONNONAME: -00034a 0a13 .dw XT_DP -00034b 054a .dw XT_DUP -00034c 01a6 .dw XT_LATEST -00034d 051a .dw XT_STORE - -00034e 01d1 .dw XT_COMPILE -00034f 011b .dw DO_COLON - -000350 035e .dw XT_RBRACKET -000351 04ae .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: -000352 0001 .dw $0001 -000353 003b .db $3b,0 -000354 0343 .dw VE_HEAD - .set VE_HEAD = VE_SEMICOLON - XT_SEMICOLON: -000355 011b .dw DO_COLON - PFA_SEMICOLON: - .endif -000356 01d1 .dw XT_COMPILE -000357 04ae .dw XT_EXIT -000358 0366 .dw XT_LBRACKET -000359 030e .dw XT_REVEAL -00035a 04ae .dw XT_EXIT - .include "words/right-bracket.asm" - - ; Compiler - ; enter compiler mode - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_RBRACKET: -00035b ff01 .dw $ff01 -00035c 005d .db "]",0 -00035d 0352 .dw VE_HEAD - .set VE_HEAD = VE_RBRACKET - XT_RBRACKET: -00035e 011b .dw DO_COLON - PFA_RBRACKET: - .endif -00035f 1274 .dw XT_ONE -000360 09af .dw XT_STATE -000361 051a .dw XT_STORE -000362 04ae .dw XT_EXIT - .include "words/left-bracket.asm" - - ; Compiler - ; enter interpreter mode - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_LBRACKET: -000363 0001 .dw $0001 -000364 005b .db "[",0 -000365 035b .dw VE_HEAD - .set VE_HEAD = VE_LBRACKET - XT_LBRACKET: -000366 011b .dw DO_COLON - PFA_LBRACKET: - .endif -000367 05ed .dw XT_ZERO -000368 09af .dw XT_STATE -000369 051a .dw XT_STORE -00036a 04ae .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: -00036b ff08 .dw $ff08 -00036c 6176 -00036d 6972 -00036e 6261 -00036f 656c .db "variable" -000370 0363 .dw VE_HEAD - .set VE_HEAD = VE_VARIABLE - XT_VARIABLE: -000371 011b .dw DO_COLON - PFA_VARIABLE: - .endif -000372 0a24 .dw XT_HERE -000373 037d .dw XT_CONSTANT -000374 1279 .dw XT_TWO -000375 0a2d .dw XT_ALLOT -000376 04ae .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: -000377 ff08 .dw $ff08 -000378 6f63 -000379 736e -00037a 6174 -00037b 746e .db "constant" -00037c 036b .dw VE_HEAD - .set VE_HEAD = VE_CONSTANT - XT_CONSTANT: -00037d 011b .dw DO_COLON - PFA_CONSTANT: - .endif -00037e 01ae .dw XT_DOCREATE -00037f 030e .dw XT_REVEAL -000380 01d1 .dw XT_COMPILE -000381 04dc .dw PFA_DOVARIABLE -000382 01dc .dw XT_COMMA -000383 04ae .dw XT_EXIT - .include "words/user.asm" - - ; Compiler - ; create a dictionary entry for a user variable at offset n - VE_USER: -000384 ff04 .dw $ff04 -000385 7375 -000386 7265 .db "user" -000387 0377 .dw VE_HEAD - .set VE_HEAD = VE_USER - XT_USER: -000388 011b .dw DO_COLON - PFA_USER: -000389 01ae .dw XT_DOCREATE -00038a 030e .dw XT_REVEAL - -00038b 01d1 .dw XT_COMPILE -00038c 04ef .dw PFA_DOUSER -00038d 01dc .dw XT_COMMA -00038e 04ae .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: -00038f 0007 .dw $0007 -000390 6572 -000391 7563 -000392 7372 -000393 0065 .db "recurse",0 -000394 0384 .dw VE_HEAD - .set VE_HEAD = VE_RECURSE - XT_RECURSE: -000395 011b .dw DO_COLON - PFA_RECURSE: - .endif -000396 01a6 .dw XT_LATEST -000397 0512 .dw XT_FETCH -000398 01dc .dw XT_COMMA -000399 04ae .dw XT_EXIT - .include "words/immediate.asm" - - ; Compiler - ; set immediate flag for the most recent word definition - VE_IMMEDIATE: -00039a ff09 .dw $ff09 -00039b 6d69 -00039c 656d -00039d 6964 -00039e 7461 -00039f 0065 .db "immediate",0 -0003a0 038f .dw VE_HEAD - .set VE_HEAD = VE_IMMEDIATE - XT_IMMEDIATE: -0003a1 011b .dw DO_COLON - PFA_IMMEDIATE: -0003a2 0443 .dw XT_GET_CURRENT -0003a3 07f9 .dw XT_FETCHE -0003a4 054a .dw XT_DUP -0003a5 082c .dw XT_FETCHI -0003a6 04ce .dw XT_DOLITERAL -0003a7 7fff .dw $7fff -0003a8 06ac .dw XT_AND -0003a9 055d .dw XT_SWAP -0003aa 080d .dw XT_STOREI -0003ab 04ae .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: -0003ac 0006 .dw $0006 -0003ad 635b -0003ae 6168 -0003af 5d72 .db "[char]" -0003b0 039a .dw VE_HEAD - .set VE_HEAD = VE_BRACKETCHAR - XT_BRACKETCHAR: -0003b1 011b .dw DO_COLON - PFA_BRACKETCHAR: - .endif -0003b2 01d1 .dw XT_COMPILE -0003b3 04ce .dw XT_DOLITERAL -0003b4 0d50 .dw XT_CHAR -0003b5 01dc .dw XT_COMMA -0003b6 04ae .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: -0003b7 0006 .dw $0006 -0003b8 6261 -0003b9 726f -0003ba 2274 .db "abort",'"' -0003bb 03ac .dw VE_HEAD - .set VE_HEAD = VE_ABORTQUOTE - XT_ABORTQUOTE: -0003bc 011b .dw DO_COLON - PFA_ABORTQUOTE: - .endif -0003bd 0925 .dw XT_SQUOTE -0003be 01d1 .dw XT_COMPILE -0003bf 03ce .dw XT_QABORT -0003c0 04ae .DW XT_EXIT - .include "words/abort.asm" - - ; Exceptions - ; send an exception -1 - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_ABORT: -0003c1 ff05 .dw $ff05 -0003c2 6261 -0003c3 726f -0003c4 0074 .db "abort",0 -0003c5 03b7 .dw VE_HEAD - .set VE_HEAD = VE_ABORT - XT_ABORT: -0003c6 011b .dw DO_COLON - PFA_ABORT: - .endif -0003c7 05e4 .dw XT_TRUE -0003c8 0ca7 .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: -0003c9 ff06 .dw $ff06 -0003ca 613f -0003cb 6f62 -0003cc 7472 .db "?abort" -0003cd 03c1 .dw VE_HEAD - .set VE_HEAD = VE_QABORT - XT_QABORT: -0003ce 011b .dw DO_COLON - PFA_QABORT: - - .endif -0003cf 057a -0003d0 04c7 .DW XT_ROT,XT_DOCONDBRANCH -0003d1 03d4 DEST(QABO1) -0003d2 0c06 -0003d3 03c6 .DW XT_ITYPE,XT_ABORT -0003d4 09d3 -0003d5 04ae 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: -0003d6 ff09 .dw $ff09 -0003d7 6567 -0003d8 2d74 -0003d9 7473 -0003da 6361 -0003db 006b .db "get-stack",0 -0003dc 03c9 .dw VE_HEAD - .set VE_HEAD = VE_GET_STACK - XT_GET_STACK: -0003dd 011b .dw DO_COLON - .endif -0003de 054a .dw XT_DUP -0003df 09c2 .dw XT_CELLPLUS -0003e0 055d .dw XT_SWAP -0003e1 07f9 .dw XT_FETCHE -0003e2 054a .dw XT_DUP -0003e3 0598 .dw XT_TO_R -0003e4 05ed .dw XT_ZERO -0003e5 055d .dw XT_SWAP ; go from bigger to smaller addresses -0003e6 029b .dw XT_QDOCHECK -0003e7 04c7 .dw XT_DOCONDBRANCH -0003e8 03f4 DEST(PFA_N_FETCH_E2) -0003e9 0734 .dw XT_DODO - PFA_N_FETCH_E1: - ; ( ee-addr ) -0003ea 0745 .dw XT_I -0003eb 06ce .dw XT_1MINUS -0003ec 09bc .dw XT_CELLS ; ( -- ee-addr i*2 ) -0003ed 0568 .dw XT_OVER ; ( -- ee-addr i*2 ee-addr ) -0003ee 0636 .dw XT_PLUS ; ( -- ee-addr ee-addr+i -0003ef 07f9 .dw XT_FETCHE ;( -- ee-addr item_i ) -0003f0 055d .dw XT_SWAP ;( -- item_i ee-addr ) -0003f1 05e4 .dw XT_TRUE ; shortcut for -1 -0003f2 0753 .dw XT_DOPLUSLOOP -0003f3 03ea DEST(PFA_N_FETCH_E1) - PFA_N_FETCH_E2: -0003f4 09d3 .dw XT_2DROP -0003f5 058f .dw XT_R_FROM -0003f6 04ae .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: -0003f7 ff09 .dw $ff09 -0003f8 6573 -0003f9 2d74 -0003fa 7473 -0003fb 6361 -0003fc 006b .db "set-stack",0 -0003fd 03d6 .dw VE_HEAD - .set VE_HEAD = VE_SET_STACK - XT_SET_STACK: -0003fe 011b .dw DO_COLON - PFA_SET_STACK: - .endif -0003ff 0568 .dw XT_OVER -000400 05ba .dw XT_ZEROLESS -000401 04c7 .dw XT_DOCONDBRANCH -000402 0406 DEST(PFA_SET_STACK0) -000403 04ce .dw XT_DOLITERAL -000404 fffc .dw -4 -000405 0ca7 .dw XT_THROW - PFA_SET_STACK0: -000406 09ca .dw XT_2DUP -000407 07d5 .dw XT_STOREE ; ( -- i_n .. i_0 n e-addr ) -000408 055d .dw XT_SWAP -000409 05ed .dw XT_ZERO -00040a 029b .dw XT_QDOCHECK -00040b 04c7 .dw XT_DOCONDBRANCH -00040c 0413 DEST(PFA_SET_STACK2) -00040d 0734 .dw XT_DODO - PFA_SET_STACK1: -00040e 09c2 .dw XT_CELLPLUS ; ( -- i_x e-addr ) -00040f 09db .dw XT_TUCK ; ( -- e-addr i_x e-addr -000410 07d5 .dw XT_STOREE -000411 0762 .dw XT_DOLOOP -000412 040e DEST(PFA_SET_STACK1) - PFA_SET_STACK2: -000413 0572 .dw XT_DROP -000414 04ae .dw XT_EXIT - - .include "words/map-stack.asm" - - ; Tools - ; Iterate over a stack - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_MAPSTACK: -000415 ff09 .dw $ff09 -000416 616d -000417 2d70 -000418 7473 -000419 6361 -00041a 006b .db "map-stack",0 -00041b 03f7 .dw VE_HEAD - .set VE_HEAD = VE_MAPSTACK - XT_MAPSTACK: -00041c 011b .dw DO_COLON - PFA_MAPSTACK: - .endif -00041d 054a .dw XT_DUP -00041e 09c2 .dw XT_CELLPLUS -00041f 055d .dw XT_SWAP -000420 07f9 .dw XT_FETCHE -000421 09bc .dw XT_CELLS -000422 124c .dw XT_BOUNDS -000423 029b .dw XT_QDOCHECK -000424 04c7 .dw XT_DOCONDBRANCH -000425 0438 DEST(PFA_MAPSTACK3) -000426 0734 .dw XT_DODO - PFA_MAPSTACK1: -000427 0745 .dw XT_I -000428 07f9 .dw XT_FETCHE ; -- i*x XT id -000429 055d .dw XT_SWAP -00042a 0598 .dw XT_TO_R -00042b 05a1 .dw XT_R_FETCH -00042c 04b8 .dw XT_EXECUTE ; i*x id -- j*y true | i*x false -00042d 0552 .dw XT_QDUP -00042e 04c7 .dw XT_DOCONDBRANCH -00042f 0434 DEST(PFA_MAPSTACK2) -000430 058f .dw XT_R_FROM -000431 0572 .dw XT_DROP -000432 076d .dw XT_UNLOOP -000433 04ae .dw XT_EXIT - PFA_MAPSTACK2: -000434 058f .dw XT_R_FROM -000435 1279 .dw XT_TWO -000436 0753 .dw XT_DOPLUSLOOP -000437 0427 DEST(PFA_MAPSTACK1) - PFA_MAPSTACK3: -000438 0572 .dw XT_DROP -000439 05ed .dw XT_ZERO -00043a 04ae .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: -00043b ff0b .dw $ff0b -00043c 6567 -00043d 2d74 -00043e 7563 -00043f 7272 -000440 6e65 -000441 0074 .db "get-current",0 -000442 0415 .dw VE_HEAD - .set VE_HEAD = VE_GET_CURRENT - XT_GET_CURRENT: -000443 011b .dw DO_COLON - PFA_GET_CURRENT: -000444 04ce .dw XT_DOLITERAL -000445 0084 .dw CFG_CURRENT -000446 07f9 .dw XT_FETCHE -000447 04ae .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: -000448 ff09 .dw $ff09 -000449 6567 -00044a 2d74 -00044b 726f -00044c 6564 -00044d 0072 .db "get-order",0 -00044e 043b .dw VE_HEAD - .set VE_HEAD = VE_GET_ORDER - XT_GET_ORDER: -00044f 011b .dw DO_COLON - PFA_GET_ORDER: - .endif -000450 04ce .dw XT_DOLITERAL -000451 0088 .dw CFG_ORDERLISTLEN -000452 03dd .dw XT_GET_STACK -000453 04ae .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: -000454 ff09 .dw $ff09 -000455 6663 -000456 2d67 -000457 726f -000458 6564 -000459 0072 .db "cfg-order",0 -00045a 0448 .dw VE_HEAD - .set VE_HEAD = VE_CFG_ORDER - XT_CFG_ORDER: -00045b 04dc .dw PFA_DOVARIABLE - PFA_CFG_ORDER: - .endif -00045c 0088 .dw CFG_ORDERLISTLEN - .include "words/compare.asm" - - ; String - ; compares two strings in RAM - VE_COMPARE: -00045d ff07 .dw $ff07 -00045e 6f63 -00045f 706d -000460 7261 -000461 0065 .db "compare",0 -000462 0454 .dw VE_HEAD - .set VE_HEAD = VE_COMPARE - XT_COMPARE: -000463 0464 .dw PFA_COMPARE - PFA_COMPARE: -000464 93bf push xh -000465 93af push xl -000466 018c movw temp0, tosl -000467 9189 -000468 9199 loadtos -000469 01dc movw xl, tosl -00046a 9189 -00046b 9199 loadtos -00046c 019c movw temp2, tosl -00046d 9189 -00046e 9199 loadtos -00046f 01fc movw zl, tosl - PFA_COMPARE_LOOP: -000470 90ed ld temp4, X+ -000471 90f1 ld temp5, Z+ -000472 14ef cp temp4, temp5 -000473 f451 brne PFA_COMPARE_NOTEQUAL -000474 950a dec temp0 -000475 f019 breq PFA_COMPARE_ENDREACHED2 -000476 952a dec temp2 -000477 f7c1 brne PFA_COMPARE_LOOP -000478 c001 rjmp PFA_COMPARE_ENDREACHED - PFA_COMPARE_ENDREACHED2: -000479 952a dec temp2 - PFA_COMPARE_ENDREACHED: -00047a 2b02 or temp0, temp2 -00047b f411 brne PFA_COMPARE_CHECKLASTCHAR -00047c 2788 clr tosl -00047d c002 rjmp PFA_COMPARE_DONE - PFA_COMPARE_CHECKLASTCHAR: - PFA_COMPARE_NOTEQUAL: -00047e ef8f ser tosl -00047f c000 rjmp PFA_COMPARE_DONE - - PFA_COMPARE_DONE: -000480 2f98 mov tosh, tosl -000481 91af pop xl -000482 91bf pop xh -000483 cc9b 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 045d .dw VE_HEAD - .set VE_HEAD = VE_NFA2LFA - XT_NFA2LFA: -00048a 011b .dw DO_COLON - PFA_NFA2LFA: -00048b 10d8 .dw XT_NAME2STRING -00048c 06c8 .dw XT_1PLUS -00048d 069d .dw XT_2SLASH -00048e 0636 .dw XT_PLUS -00048f 04ae .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/applturnkey.asm" - - ; R( -- ) - ; application specific turnkey action - VE_APPLTURNKEY: -000490 ff0b .dw $ff0b -000491 7061 -000492 6c70 -000493 7574 -000494 6e72 -000495 656b -000496 0079 .db "applturnkey",0 -000497 0484 .dw VE_HEAD - .set VE_HEAD = VE_APPLTURNKEY - XT_APPLTURNKEY: -000498 011b .dw DO_COLON - PFA_APPLTURNKEY: -000499 0105 .dw XT_USART - - .if WANT_INTERRUPTS == 1 -00049a 08dd .dw XT_INTON - .endif - -00049b 0fca .dw XT_DOT_VER -00049c 0c48 .dw XT_SPACE -00049d 09a4 .dw XT_F_CPU -00049e 04ce .dw XT_DOLITERAL -00049f 03e8 .dw 1000 -0004a0 065b .dw XT_UMSLASHMOD -0004a1 0589 .dw XT_NIP -0004a2 0a42 .dw XT_DECIMAL -0004a3 0b88 .dw XT_DOT -0004a4 0bd3 .dw XT_DOSLITERAL -0004a5 0004 .dw 4 -0004a6 486b -0004a7 207a .db "kHz " -0004a8 0c06 .dw XT_ITYPE - -0004a9 04ae .dw XT_EXIT - - .include "dict/nrww.inc" ; well, not really nrww, but simplifies things alot - - ; section together with the forth inner interpreter - - .include "words/exit.asm" - - ; Compiler - ; end of current colon word - VE_EXIT: -0004aa ff04 .dw $ff04 -0004ab 7865 -0004ac 7469 .db "exit" -0004ad 0490 .dw VE_HEAD - .set VE_HEAD = VE_EXIT - XT_EXIT: -0004ae 04af .dw PFA_EXIT - PFA_EXIT: -0004af 91af pop XL -0004b0 91bf pop XH -0004b1 cc6d jmp_ DO_NEXT - .include "words/execute.asm" - - ; System - ; execute XT - VE_EXECUTE: -0004b2 ff07 .dw $ff07 -0004b3 7865 -0004b4 6365 -0004b5 7475 -0004b6 0065 .db "execute",0 -0004b7 04aa .dw VE_HEAD - .set VE_HEAD = VE_EXECUTE - XT_EXECUTE: -0004b8 04b9 .dw PFA_EXECUTE - PFA_EXECUTE: -0004b9 01bc movw wl, tosl -0004ba 9189 -0004bb 9199 loadtos -0004bc cc6d 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: -0004bd 04be .dw PFA_DOBRANCH - PFA_DOBRANCH: -0004be 01fd movw zl, XL -0004bf 2755 -0004c0 0fee -0004c1 1fff -0004c2 1f55 -0004c3 bf5b -0004c4 91a7 -0004c5 91b7 readflashcell XL,XH -0004c6 cc58 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: -0004c7 04c8 .dw PFA_DOCONDBRANCH - PFA_DOCONDBRANCH: -0004c8 2b98 or tosh, tosl -0004c9 9189 -0004ca 9199 loadtos -0004cb f391 brbs 1, PFA_DOBRANCH ; 1 is z flag; if tos is zero (false), do the branch -0004cc 9611 adiw XL, 1 -0004cd cc51 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: -0004ce 04cf .dw PFA_DOLITERAL - PFA_DOLITERAL: -0004cf 939a -0004d0 938a savetos -0004d1 01fd movw zl, xl -0004d2 2755 -0004d3 0fee -0004d4 1fff -0004d5 1f55 -0004d6 bf5b -0004d7 9187 -0004d8 9197 readflashcell tosl,tosh -0004d9 9611 adiw xl, 1 -0004da cc44 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: -0004db 04dc .dw PFA_DOVARIABLE - PFA_DOVARIABLE: -0004dc 939a -0004dd 938a savetos -0004de 01fb movw zl, wl -0004df 9631 adiw zl,1 -0004e0 2755 -0004e1 0fee -0004e2 1fff -0004e3 1f55 -0004e4 bf5b -0004e5 9187 -0004e6 9197 readflashcell tosl,tosh -0004e7 cc37 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: -0004e8 04e9 .dw PFA_DOCONSTANT - PFA_DOCONSTANT: -0004e9 939a -0004ea 938a savetos -0004eb 01cb movw tosl, wl -0004ec 9601 adiw tosl, 1 -0004ed cc31 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: -0004ee 04ef .dw PFA_DOUSER - PFA_DOUSER: -0004ef 939a -0004f0 938a savetos -0004f1 01fb movw zl, wl -0004f2 9631 adiw zl, 1 -0004f3 2755 -0004f4 0fee -0004f5 1fff -0004f6 1f55 -0004f7 bf5b -0004f8 9187 -0004f9 9197 readflashcell tosl,tosh -0004fa 0d84 add tosl, upl -0004fb 1d95 adc tosh, uph -0004fc cc22 jmp_ DO_NEXT - .include "words/do-value.asm" - - ; System - ; runtime of value - VE_DOVALUE: -0004fd ff07 .dw $ff07 -0004fe 7628 -0004ff 6c61 -000500 6575 -000501 0029 .db "(value)", 0 -000502 04b2 .dw VE_HEAD - .set VE_HEAD = VE_DOVALUE - XT_DOVALUE: -000503 011b .dw DO_COLON - PFA_DOVALUE: -000504 01ae .dw XT_DOCREATE -000505 030e .dw XT_REVEAL -000506 01d1 .dw XT_COMPILE -000507 0509 .dw PFA_DOVALUE1 -000508 04ae .dw XT_EXIT - PFA_DOVALUE1: -000509 de1d call_ DO_DODOES -00050a 054a .dw XT_DUP -00050b 1011 .dw XT_ICELLPLUS -00050c 082c .dw XT_FETCHI -00050d 04b8 .dw XT_EXECUTE -00050e 04ae .dw XT_EXIT - - ; : (value) dup icell+ @i execute ; - .include "words/fetch.asm" - - ; Memory - ; read 1 cell from RAM address - VE_FETCH: -00050f ff01 .dw $ff01 -000510 0040 .db "@",0 -000511 04fd .dw VE_HEAD - .set VE_HEAD = VE_FETCH - XT_FETCH: -000512 0513 .dw PFA_FETCH - PFA_FETCH: - .if WANT_UNIFIED == 1 - .endif - PFA_FETCHRAM: -000513 01fc movw zl, tosl - ; low byte is read before the high byte -000514 9181 ld tosl, z+ -000515 9191 ld tosh, z+ -000516 cc08 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: -000517 ff01 .dw $ff01 -000518 0021 .db "!",0 -000519 050f .dw VE_HEAD - .set VE_HEAD = VE_STORE - XT_STORE: -00051a 051b .dw PFA_STORE - PFA_STORE: - .if WANT_UNIFIED == 1 - .endif - PFA_STORERAM: -00051b 01fc movw zl, tosl -00051c 9189 -00051d 9199 loadtos - ; the high byte is written before the low byte -00051e 8391 std Z+1, tosh -00051f 8380 std Z+0, tosl -000520 9189 -000521 9199 loadtos -000522 cbfc jmp_ DO_NEXT - .if WANT_UNIFIED == 1 - .endif - .include "words/cstore.asm" - - ; Memory - ; store a single byte to RAM address - VE_CSTORE: -000523 ff02 .dw $ff02 -000524 2163 .db "c!" -000525 0517 .dw VE_HEAD - .set VE_HEAD = VE_CSTORE - XT_CSTORE: -000526 0527 .dw PFA_CSTORE - PFA_CSTORE: -000527 01fc movw zl, tosl -000528 9189 -000529 9199 loadtos -00052a 8380 st Z, tosl -00052b 9189 -00052c 9199 loadtos -00052d cbf1 jmp_ DO_NEXT - .include "words/cfetch.asm" - - ; Memory - ; fetch a single byte from memory mapped locations - VE_CFETCH: -00052e ff02 .dw $ff02 -00052f 4063 .db "c@" -000530 0523 .dw VE_HEAD - .set VE_HEAD = VE_CFETCH - XT_CFETCH: -000531 0532 .dw PFA_CFETCH - PFA_CFETCH: -000532 01fc movw zl, tosl -000533 2799 clr tosh -000534 8180 ld tosl, Z -000535 cbe9 jmp_ DO_NEXT - .include "words/fetch-u.asm" - - ; Memory - ; read 1 cell from USER area - VE_FETCHU: -000536 ff02 .dw $ff02 -000537 7540 .db "@u" -000538 052e .dw VE_HEAD - .set VE_HEAD = VE_FETCHU - XT_FETCHU: -000539 011b .dw DO_COLON - PFA_FETCHU: -00053a 079b .dw XT_UP_FETCH -00053b 0636 .dw XT_PLUS -00053c 0512 .dw XT_FETCH -00053d 04ae .dw XT_EXIT - .include "words/store-u.asm" - - ; Memory - ; write n to USER area at offset - VE_STOREU: -00053e ff02 .dw $ff02 -00053f 7521 .db "!u" -000540 0536 .dw VE_HEAD - .set VE_HEAD = VE_STOREU - XT_STOREU: -000541 011b .dw DO_COLON - PFA_STOREU: -000542 079b .dw XT_UP_FETCH -000543 0636 .dw XT_PLUS -000544 051a .dw XT_STORE -000545 04ae .dw XT_EXIT - - ;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/dup.asm" - - ; Stack - ; duplicate TOS - VE_DUP: -000546 ff03 .dw $ff03 -000547 7564 -000548 0070 .db "dup",0 -000549 053e .dw VE_HEAD - .set VE_HEAD = VE_DUP - XT_DUP: -00054a 054b .dw PFA_DUP - PFA_DUP: -00054b 939a -00054c 938a savetos -00054d cbd1 jmp_ DO_NEXT - .include "words/qdup.asm" - - ; Stack - ; duplicate TOS if non-zero - VE_QDUP: -00054e ff04 .dw $ff04 -00054f 643f -000550 7075 .db "?dup" -000551 0546 .dw VE_HEAD - .set VE_HEAD = VE_QDUP - XT_QDUP: -000552 0553 .dw PFA_QDUP - PFA_QDUP: -000553 2f08 mov temp0, tosl -000554 2b09 or temp0, tosh -000555 f011 breq PFA_QDUP1 -000556 939a -000557 938a savetos - PFA_QDUP1: -000558 cbc6 jmp_ DO_NEXT - .include "words/swap.asm" - - ; Stack - ; swaps the two top level stack cells - VE_SWAP: -000559 ff04 .dw $ff04 -00055a 7773 -00055b 7061 .db "swap" -00055c 054e .dw VE_HEAD - .set VE_HEAD = VE_SWAP - XT_SWAP: -00055d 055e .dw PFA_SWAP - PFA_SWAP: -00055e 018c movw temp0, tosl -00055f 9189 -000560 9199 loadtos -000561 931a st -Y, temp1 -000562 930a st -Y, temp0 -000563 cbbb jmp_ DO_NEXT - .include "words/over.asm" - - ; Stack - ; Place a copy of x1 on top of the stack - VE_OVER: -000564 ff04 .dw $ff04 -000565 766f -000566 7265 .db "over" -000567 0559 .dw VE_HEAD - .set VE_HEAD = VE_OVER - XT_OVER: -000568 0569 .dw PFA_OVER - PFA_OVER: -000569 939a -00056a 938a savetos -00056b 818a ldd tosl, Y+2 -00056c 819b ldd tosh, Y+3 - -00056d cbb1 jmp_ DO_NEXT - .include "words/drop.asm" - - ; Stack - ; drop TOS - VE_DROP: -00056e ff04 .dw $ff04 -00056f 7264 -000570 706f .db "drop" -000571 0564 .dw VE_HEAD - .set VE_HEAD = VE_DROP - XT_DROP: -000572 0573 .dw PFA_DROP - PFA_DROP: -000573 9189 -000574 9199 loadtos -000575 cba9 jmp_ DO_NEXT - .include "words/rot.asm" - - ; Stack - ; rotate the three top level cells - VE_ROT: -000576 ff03 .dw $ff03 -000577 6f72 -000578 0074 .db "rot",0 -000579 056e .dw VE_HEAD - .set VE_HEAD = VE_ROT - XT_ROT: -00057a 057b .dw PFA_ROT - PFA_ROT: -00057b 018c movw temp0, tosl -00057c 9129 ld temp2, Y+ -00057d 9139 ld temp3, Y+ -00057e 9189 -00057f 9199 loadtos - -000580 933a st -Y, temp3 -000581 932a st -Y, temp2 -000582 931a st -Y, temp1 -000583 930a st -Y, temp0 - -000584 cb9a jmp_ DO_NEXT - .include "words/nip.asm" - - ; Stack - ; Remove Second of Stack - VE_NIP: -000585 ff03 .dw $ff03 -000586 696e -000587 0070 .db "nip",0 -000588 0576 .dw VE_HEAD - .set VE_HEAD = VE_NIP - XT_NIP: -000589 058a .dw PFA_NIP - PFA_NIP: -00058a 9622 adiw yl, 2 -00058b cb93 jmp_ DO_NEXT - ;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/r_from.asm" - - ; Stack - ; move TOR to TOS - VE_R_FROM: -00058c ff02 .dw $ff02 -00058d 3e72 .db "r>" -00058e 0585 .dw VE_HEAD - .set VE_HEAD = VE_R_FROM - XT_R_FROM: -00058f 0590 .dw PFA_R_FROM - PFA_R_FROM: -000590 939a -000591 938a savetos -000592 918f pop tosl -000593 919f pop tosh -000594 cb8a jmp_ DO_NEXT - .include "words/to_r.asm" - - ; Stack - ; move TOS to TOR - VE_TO_R: -000595 ff02 .dw $ff02 -000596 723e .db ">r" -000597 058c .dw VE_HEAD - .set VE_HEAD = VE_TO_R - XT_TO_R: -000598 0599 .dw PFA_TO_R - PFA_TO_R: -000599 939f push tosh -00059a 938f push tosl -00059b 9189 -00059c 9199 loadtos -00059d cb81 jmp_ DO_NEXT - .include "words/r_fetch.asm" - - ; Stack - ; fetch content of TOR - VE_R_FETCH: -00059e ff02 .dw $ff02 -00059f 4072 .db "r@" -0005a0 0595 .dw VE_HEAD - .set VE_HEAD = VE_R_FETCH - XT_R_FETCH: -0005a1 05a2 .dw PFA_R_FETCH - PFA_R_FETCH: -0005a2 939a -0005a3 938a savetos -0005a4 918f pop tosl -0005a5 919f pop tosh -0005a6 939f push tosh -0005a7 938f push tosl -0005a8 cb76 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: -0005a9 ff02 .dw $ff02 -0005aa 3e3c .db "<>" -0005ab 059e .dw VE_HEAD - .set VE_HEAD = VE_NOTEQUAL - XT_NOTEQUAL: -0005ac 011b .dw DO_COLON - PFA_NOTEQUAL: - .endif - -0005ad 126d -0005ae 05b3 -0005af 04ae .DW XT_EQUAL,XT_ZEROEQUAL,XT_EXIT - .include "words/equalzero.asm" - - ; Compare - ; compare with 0 (zero) - VE_ZEROEQUAL: -0005b0 ff02 .dw $ff02 -0005b1 3d30 .db "0=" -0005b2 05a9 .dw VE_HEAD - .set VE_HEAD = VE_ZEROEQUAL - XT_ZEROEQUAL: -0005b3 05b4 .dw PFA_ZEROEQUAL - PFA_ZEROEQUAL: -0005b4 2b98 or tosh, tosl -0005b5 f5d1 brne PFA_ZERO1 -0005b6 c030 rjmp PFA_TRUE1 - .include "words/lesszero.asm" - - ; Compare - ; compare with zero - VE_ZEROLESS: -0005b7 ff02 .dw $ff02 -0005b8 3c30 .db "0<" -0005b9 05b0 .dw VE_HEAD - .set VE_HEAD = VE_ZEROLESS - XT_ZEROLESS: -0005ba 05bb .dw PFA_ZEROLESS - PFA_ZEROLESS: -0005bb fd97 sbrc tosh,7 -0005bc c02a rjmp PFA_TRUE1 -0005bd c032 rjmp PFA_ZERO1 - .include "words/greaterzero.asm" - - ; Compare - ; true if n1 is greater than 0 - VE_GREATERZERO: -0005be ff02 .dw $ff02 -0005bf 3e30 .db "0>" -0005c0 05b7 .dw VE_HEAD - .set VE_HEAD = VE_GREATERZERO - XT_GREATERZERO: -0005c1 05c2 .dw PFA_GREATERZERO - PFA_GREATERZERO: -0005c2 1582 cp tosl, zerol -0005c3 0593 cpc tosh, zeroh -0005c4 f15c brlt PFA_ZERO1 -0005c5 f151 brbs 1, PFA_ZERO1 -0005c6 c020 rjmp PFA_TRUE1 - .include "words/d-greaterzero.asm" - - ; Compare - ; compares if a double double cell number is greater 0 - VE_DGREATERZERO: -0005c7 ff03 .dw $ff03 -0005c8 3064 -0005c9 003e .db "d0>",0 -0005ca 05be .dw VE_HEAD - .set VE_HEAD = VE_DGREATERZERO - XT_DGREATERZERO: -0005cb 05cc .dw PFA_DGREATERZERO - PFA_DGREATERZERO: -0005cc 1582 cp tosl, zerol -0005cd 0593 cpc tosh, zeroh -0005ce 9189 -0005cf 9199 loadtos -0005d0 0582 cpc tosl, zerol -0005d1 0593 cpc tosh, zeroh -0005d2 f0ec brlt PFA_ZERO1 -0005d3 f0e1 brbs 1, PFA_ZERO1 -0005d4 c012 rjmp PFA_TRUE1 - .include "words/d-lesszero.asm" - - ; Compare - ; compares if a double double cell number is less than 0 - VE_DXT_ZEROLESS: -0005d5 ff03 .dw $ff03 -0005d6 3064 -0005d7 003c .db "d0<",0 -0005d8 05c7 .dw VE_HEAD - .set VE_HEAD = VE_DXT_ZEROLESS - XT_DXT_ZEROLESS: -0005d9 05da .dw PFA_DXT_ZEROLESS - PFA_DXT_ZEROLESS: -0005da 9622 adiw Y,2 -0005db fd97 sbrc tosh,7 -0005dc 940c 05e7 jmp PFA_TRUE1 -0005de 940c 05f0 jmp PFA_ZERO1 - - .include "words/true.asm" - - ; Arithmetics - ; leaves the value -1 (true) on TOS - VE_TRUE: -0005e0 ff04 .dw $ff04 -0005e1 7274 -0005e2 6575 .db "true" -0005e3 05d5 .dw VE_HEAD - .set VE_HEAD = VE_TRUE - XT_TRUE: -0005e4 05e5 .dw PFA_TRUE - PFA_TRUE: -0005e5 939a -0005e6 938a savetos - PFA_TRUE1: -0005e7 ef8f ser tosl -0005e8 ef9f ser tosh -0005e9 cb35 jmp_ DO_NEXT - .include "words/zero.asm" - - ; Arithmetics - ; place a value 0 on TOS - VE_ZERO: -0005ea ff01 .dw $ff01 -0005eb 0030 .db "0",0 -0005ec 05e0 .dw VE_HEAD - .set VE_HEAD = VE_ZERO - XT_ZERO: -0005ed 05ee .dw PFA_ZERO - PFA_ZERO: -0005ee 939a -0005ef 938a savetos - PFA_ZERO1: -0005f0 01c1 movw tosl, zerol -0005f1 cb2d jmp_ DO_NEXT - .include "words/uless.asm" - - ; Compare - ; true if u1 < u2 (unsigned) - VE_ULESS: -0005f2 ff02 .dw $ff02 -0005f3 3c75 .db "u<" -0005f4 05ea .dw VE_HEAD - .set VE_HEAD = VE_ULESS - XT_ULESS: -0005f5 05f6 .dw PFA_ULESS - PFA_ULESS: -0005f6 9129 ld temp2, Y+ -0005f7 9139 ld temp3, Y+ -0005f8 1782 cp tosl, temp2 -0005f9 0793 cpc tosh, temp3 -0005fa f3a8 brlo PFA_ZERO1 -0005fb f3a1 brbs 1, PFA_ZERO1 -0005fc 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: -0005fd ff02 .dw $ff02 -0005fe 3e75 .db "u>" -0005ff 05f2 .dw VE_HEAD - .set VE_HEAD = VE_UGREATER - XT_UGREATER: -000600 011b .dw DO_COLON - PFA_UGREATER: - .endif -000601 055d .DW XT_SWAP -000602 05f5 .dw XT_ULESS -000603 04ae .dw XT_EXIT - .include "words/less.asm" - - ; Compare - ; true if n1 is less than n2 - VE_LESS: -000604 ff01 .dw $ff01 -000605 003c .db "<",0 -000606 05fd .dw VE_HEAD - .set VE_HEAD = VE_LESS - XT_LESS: -000607 0608 .dw PFA_LESS - PFA_LESS: -000608 9129 ld temp2, Y+ -000609 9139 ld temp3, Y+ -00060a 1728 cp temp2, tosl -00060b 0739 cpc temp3, tosh - PFA_LESSDONE: -00060c f71c brge PFA_ZERO1 -00060d cfd9 rjmp PFA_TRUE1 - .include "words/greater.asm" - - ; Compare - ; flag is true if n1 is greater than n2 - VE_GREATER: -00060e ff01 .dw $ff01 -00060f 003e .db ">",0 -000610 0604 .dw VE_HEAD - .set VE_HEAD = VE_GREATER - XT_GREATER: -000611 0612 .dw PFA_GREATER - PFA_GREATER: -000612 9129 ld temp2, Y+ -000613 9139 ld temp3, Y+ -000614 1728 cp temp2, tosl -000615 0739 cpc temp3, tosh - PFA_GREATERDONE: -000616 f2cc brlt PFA_ZERO1 -000617 f2c1 brbs 1, PFA_ZERO1 -000618 cfce rjmp PFA_TRUE1 - - .include "words/log2.asm" - - ; Arithmetics - ; logarithm to base 2 or highest set bitnumber - VE_LOG2: -000619 ff04 .dw $ff04 -00061a 6f6c -00061b 3267 .db "log2" -00061c 060e .dw VE_HEAD - .set VE_HEAD = VE_LOG2 - XT_LOG2: -00061d 061e .dw PFA_LOG2 - PFA_LOG2: -00061e 01fc movw zl, tosl -00061f 2799 clr tosh -000620 e180 ldi tosl, 16 - PFA_LOG2_1: -000621 958a dec tosl -000622 f022 brmi PFA_LOG2_2 ; wrong data -000623 0fee lsl zl -000624 1fff rol zh -000625 f7d8 brcc PFA_LOG2_1 -000626 caf8 jmp_ DO_NEXT - - PFA_LOG2_2: -000627 959a dec tosh -000628 caf6 jmp_ DO_NEXT - .include "words/minus.asm" - - ; Arithmetics - ; subtract n2 from n1 - VE_MINUS: -000629 ff01 .dw $ff01 -00062a 002d .db "-",0 -00062b 0619 .dw VE_HEAD - .set VE_HEAD = VE_MINUS - XT_MINUS: -00062c 062d .dw PFA_MINUS - PFA_MINUS: -00062d 9109 ld temp0, Y+ -00062e 9119 ld temp1, Y+ -00062f 1b08 sub temp0, tosl -000630 0b19 sbc temp1, tosh -000631 01c8 movw tosl, temp0 -000632 caec jmp_ DO_NEXT - .include "words/plus.asm" - - ; Arithmetics - ; add n1 and n2 - VE_PLUS: -000633 ff01 .dw $ff01 -000634 002b .db "+",0 -000635 0629 .dw VE_HEAD - .set VE_HEAD = VE_PLUS - XT_PLUS: -000636 0637 .dw PFA_PLUS - PFA_PLUS: -000637 9109 ld temp0, Y+ -000638 9119 ld temp1, Y+ -000639 0f80 add tosl, temp0 -00063a 1f91 adc tosh, temp1 -00063b cae3 jmp_ DO_NEXT - .include "words/mstar.asm" - - ; Arithmetics - ; multiply 2 cells to a double cell - VE_MSTAR: -00063c ff02 .dw $ff02 -00063d 2a6d .db "m*" -00063e 0633 .dw VE_HEAD - .set VE_HEAD = VE_MSTAR - XT_MSTAR: -00063f 0640 .dw PFA_MSTAR - PFA_MSTAR: -000640 018c movw temp0, tosl -000641 9189 -000642 9199 loadtos -000643 019c movw temp2, tosl - ; high cell ah*bh -000644 0231 muls temp3, temp1 -000645 0170 movw temp4, r0 - ; low cell al*bl -000646 9f20 mul temp2, temp0 -000647 01c0 movw tosl, r0 - ; signed ah*bl -000648 0330 mulsu temp3, temp0 -000649 08f3 sbc temp5, zeroh -00064a 0d90 add tosh, r0 -00064b 1ce1 adc temp4, r1 -00064c 1cf3 adc temp5, zeroh - - ; signed al*bh -00064d 0312 mulsu temp1, temp2 -00064e 08f3 sbc temp5, zeroh -00064f 0d90 add tosh, r0 -000650 1ce1 adc temp4, r1 -000651 1cf3 adc temp5, zeroh - -000652 939a -000653 938a savetos -000654 01c7 movw tosl, temp4 -000655 cac9 jmp_ DO_NEXT - .include "words/umslashmod.asm" - - ; Arithmetics - ; unsigned division ud / u2 with remainder - VE_UMSLASHMOD: -000656 ff06 .dw $ff06 -000657 6d75 -000658 6d2f -000659 646f .db "um/mod" -00065a 063c .dw VE_HEAD - .set VE_HEAD = VE_UMSLASHMOD - XT_UMSLASHMOD: -00065b 065c .dw PFA_UMSLASHMOD - PFA_UMSLASHMOD: -00065c 017c movw temp4, tosl - -00065d 9129 ld temp2, Y+ -00065e 9139 ld temp3, Y+ - -00065f 9109 ld temp0, Y+ -000660 9119 ld temp1, Y+ - - ;; unsigned 32/16 -> 16r16 divide - - PFA_UMSLASHMODmod: - - ; set loop counter -000661 e140 ldi temp6,$10 - - PFA_UMSLASHMODmod_loop: - ; shift left, saving high bit -000662 2755 clr temp7 -000663 0f00 lsl temp0 -000664 1f11 rol temp1 -000665 1f22 rol temp2 -000666 1f33 rol temp3 -000667 1f55 rol temp7 - - ; try subtracting divisor -000668 152e cp temp2, temp4 -000669 053f cpc temp3, temp5 -00066a 0552 cpc temp7,zerol - -00066b f018 brcs PFA_UMSLASHMODmod_loop_control - - PFA_UMSLASHMODmod_subtract: - ; dividend is large enough - ; do the subtraction for real - ; and set lowest bit -00066c 9503 inc temp0 -00066d 192e sub temp2, temp4 -00066e 093f sbc temp3, temp5 - - PFA_UMSLASHMODmod_loop_control: -00066f 954a dec temp6 -000670 f789 brne PFA_UMSLASHMODmod_loop - - PFA_UMSLASHMODmod_done: - ; put remainder on stack -000671 933a st -Y,temp3 -000672 932a st -Y,temp2 - - ; put quotient on stack -000673 01c8 movw tosl, temp0 -000674 caaa jmp_ DO_NEXT - .include "words/umstar.asm" - - ; Arithmetics - ; multiply 2 unsigned cells to a double cell - VE_UMSTAR: -000675 ff03 .dw $ff03 -000676 6d75 -000677 002a .db "um*",0 -000678 0656 .dw VE_HEAD - .set VE_HEAD = VE_UMSTAR - XT_UMSTAR: -000679 067a .dw PFA_UMSTAR - PFA_UMSTAR: -00067a 018c movw temp0, tosl -00067b 9189 -00067c 9199 loadtos - ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2) - ; low bytes -00067d 9f80 mul tosl,temp0 -00067e 01f0 movw zl, r0 -00067f 2722 clr temp2 -000680 2733 clr temp3 - ; middle bytes -000681 9f90 mul tosh, temp0 -000682 0df0 add zh, r0 -000683 1d21 adc temp2, r1 -000684 1d33 adc temp3, zeroh - -000685 9f81 mul tosl, temp1 -000686 0df0 add zh, r0 -000687 1d21 adc temp2, r1 -000688 1d33 adc temp3, zeroh - -000689 9f91 mul tosh, temp1 -00068a 0d20 add temp2, r0 -00068b 1d31 adc temp3, r1 -00068c 01cf movw tosl, zl -00068d 939a -00068e 938a savetos -00068f 01c9 movw tosl, temp2 -000690 ca8e jmp_ DO_NEXT - - .include "words/invert.asm" - - ; Arithmetics - ; 1-complement of TOS - VE_INVERT: -000691 ff06 .dw $ff06 -000692 6e69 -000693 6576 -000694 7472 .db "invert" -000695 0675 .dw VE_HEAD - .set VE_HEAD = VE_INVERT - XT_INVERT: -000696 0697 .dw PFA_INVERT - PFA_INVERT: -000697 9580 com tosl -000698 9590 com tosh -000699 ca85 jmp_ DO_NEXT - .include "words/2slash.asm" - - ; Arithmetics - ; arithmetic shift right - VE_2SLASH: -00069a ff02 .dw $ff02 -00069b 2f32 .db "2/" -00069c 0691 .dw VE_HEAD - .set VE_HEAD = VE_2SLASH - XT_2SLASH: -00069d 069e .dw PFA_2SLASH - PFA_2SLASH: -00069e 9595 asr tosh -00069f 9587 ror tosl -0006a0 ca7e jmp_ DO_NEXT - .include "words/2star.asm" - - ; Arithmetics - ; arithmetic shift left, filling with zero - VE_2STAR: -0006a1 ff02 .dw $ff02 -0006a2 2a32 .db "2*" -0006a3 069a .dw VE_HEAD - .set VE_HEAD = VE_2STAR - XT_2STAR: -0006a4 06a5 .dw PFA_2STAR - PFA_2STAR: -0006a5 0f88 lsl tosl -0006a6 1f99 rol tosh -0006a7 ca77 jmp_ DO_NEXT - .include "words/and.asm" - - ; Logic - ; bitwise and - VE_AND: -0006a8 ff03 .dw $ff03 -0006a9 6e61 -0006aa 0064 .db "and",0 -0006ab 06a1 .dw VE_HEAD - .set VE_HEAD = VE_AND - XT_AND: -0006ac 06ad .dw PFA_AND - PFA_AND: -0006ad 9109 ld temp0, Y+ -0006ae 9119 ld temp1, Y+ -0006af 2380 and tosl, temp0 -0006b0 2391 and tosh, temp1 -0006b1 ca6d jmp_ DO_NEXT - .include "words/or.asm" - - ; Logic - ; logical or - VE_OR: -0006b2 ff02 .dw $ff02 -0006b3 726f .db "or" -0006b4 06a8 .dw VE_HEAD - .set VE_HEAD = VE_OR - XT_OR: -0006b5 06b6 .dw PFA_OR - PFA_OR: -0006b6 9109 ld temp0, Y+ -0006b7 9119 ld temp1, Y+ -0006b8 2b80 or tosl, temp0 -0006b9 2b91 or tosh, temp1 -0006ba ca64 jmp_ DO_NEXT - - .include "words/xor.asm" - - ; Logic - ; exclusive or - VE_XOR: -0006bb ff03 .dw $ff03 -0006bc 6f78 -0006bd 0072 .db "xor",0 -0006be 06b2 .dw VE_HEAD - .set VE_HEAD = VE_XOR - XT_XOR: -0006bf 06c0 .dw PFA_XOR - PFA_XOR: -0006c0 9109 ld temp0, Y+ -0006c1 9119 ld temp1, Y+ -0006c2 2780 eor tosl, temp0 -0006c3 2791 eor tosh, temp1 -0006c4 ca5a jmp_ DO_NEXT - - .include "words/1plus.asm" - - ; Arithmetics - ; optimized increment - VE_1PLUS: -0006c5 ff02 .dw $ff02 -0006c6 2b31 .db "1+" -0006c7 06bb .dw VE_HEAD - .set VE_HEAD = VE_1PLUS - XT_1PLUS: -0006c8 06c9 .dw PFA_1PLUS - PFA_1PLUS: -0006c9 9601 adiw tosl,1 -0006ca ca54 jmp_ DO_NEXT - .include "words/1minus.asm" - - ; Arithmetics - ; optimized decrement - VE_1MINUS: -0006cb ff02 .dw $ff02 -0006cc 2d31 .db "1-" -0006cd 06c5 .dw VE_HEAD - .set VE_HEAD = VE_1MINUS - XT_1MINUS: -0006ce 06cf .dw PFA_1MINUS - PFA_1MINUS: -0006cf 9701 sbiw tosl, 1 -0006d0 ca4e 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: -0006d1 ff07 .dw $ff07 -0006d2 6e3f -0006d3 6765 -0006d4 7461 -../../common\words/q-negate.asm(11): warning: .cseg .db misalignment - padding zero byte -0006d5 0065 .db "?negate" -0006d6 06cb .dw VE_HEAD - .set VE_HEAD = VE_QNEGATE - XT_QNEGATE: -0006d7 011b .dw DO_COLON - PFA_QNEGATE: - - .endif -0006d8 05ba -0006d9 04c7 .DW XT_ZEROLESS,XT_DOCONDBRANCH -0006da 06dc DEST(QNEG1) -0006db 0aa5 .DW XT_NEGATE -0006dc 04ae QNEG1: .DW XT_EXIT - .include "words/lshift.asm" - - ; Arithmetics - ; logically shift n1 left n2 times - VE_LSHIFT: -0006dd ff06 .dw $ff06 -0006de 736c -0006df 6968 -0006e0 7466 .db "lshift" -0006e1 06d1 .dw VE_HEAD - .set VE_HEAD = VE_LSHIFT - XT_LSHIFT: -0006e2 06e3 .dw PFA_LSHIFT - PFA_LSHIFT: -0006e3 01fc movw zl, tosl -0006e4 9189 -0006e5 9199 loadtos - PFA_LSHIFT1: -0006e6 9731 sbiw zl, 1 -0006e7 f01a brmi PFA_LSHIFT2 -0006e8 0f88 lsl tosl -0006e9 1f99 rol tosh -0006ea cffb rjmp PFA_LSHIFT1 - PFA_LSHIFT2: -0006eb ca33 jmp_ DO_NEXT - - .include "words/rshift.asm" - - ; Arithmetics - ; shift n1 n2-times logically right - VE_RSHIFT: -0006ec ff06 .dw $ff06 -0006ed 7372 -0006ee 6968 -0006ef 7466 .db "rshift" -0006f0 06dd .dw VE_HEAD - .set VE_HEAD = VE_RSHIFT - XT_RSHIFT: -0006f1 06f2 .dw PFA_RSHIFT - PFA_RSHIFT: -0006f2 01fc movw zl, tosl -0006f3 9189 -0006f4 9199 loadtos - PFA_RSHIFT1: -0006f5 9731 sbiw zl, 1 -0006f6 f01a brmi PFA_RSHIFT2 -0006f7 9596 lsr tosh -0006f8 9587 ror tosl -0006f9 cffb rjmp PFA_RSHIFT1 - PFA_RSHIFT2: -0006fa ca24 jmp_ DO_NEXT - - .include "words/plusstore.asm" - - ; Arithmetics - ; add n to content of RAM address a-addr - VE_PLUSSTORE: -0006fb ff02 .dw $ff02 -0006fc 212b .db "+!" -0006fd 06ec .dw VE_HEAD - .set VE_HEAD = VE_PLUSSTORE - XT_PLUSSTORE: -0006fe 06ff .dw PFA_PLUSSTORE - PFA_PLUSSTORE: -0006ff 01fc movw zl, tosl -000700 9189 -000701 9199 loadtos -000702 8120 ldd temp2, Z+0 -000703 8131 ldd temp3, Z+1 -000704 0f82 add tosl, temp2 -000705 1f93 adc tosh, temp3 -000706 8380 std Z+0, tosl -000707 8391 std Z+1, tosh -000708 9189 -000709 9199 loadtos -00070a ca14 jmp_ DO_NEXT - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/rpfetch.asm" - - ; Stack - ; current return stack pointer address - VE_RP_FETCH: -00070b ff03 .dw $ff03 -00070c 7072 -00070d 0040 .db "rp@",0 -00070e 06fb .dw VE_HEAD - .set VE_HEAD = VE_RP_FETCH - XT_RP_FETCH: -00070f 0710 .dw PFA_RP_FETCH - PFA_RP_FETCH: -000710 939a -000711 938a savetos -000712 b78d in tosl, SPL -000713 b79e in tosh, SPH -000714 ca0a jmp_ DO_NEXT - .include "words/rpstore.asm" - - ; Stack - ; set return stack pointer - VE_RP_STORE: -000715 ff03 .dw $ff03 -000716 7072 -000717 0021 .db "rp!",0 -000718 070b .dw VE_HEAD - .set VE_HEAD = VE_RP_STORE - XT_RP_STORE: -000719 071a .dw PFA_RP_STORE - PFA_RP_STORE: -00071a b72f in temp2, SREG -00071b 94f8 cli -00071c bf8d out SPL, tosl -00071d bf9e out SPH, tosh -00071e bf2f out SREG, temp2 -00071f 9189 -000720 9199 loadtos -000721 c9fd jmp_ DO_NEXT - .include "words/spfetch.asm" - - ; Stack - ; current data stack pointer - VE_SP_FETCH: -000722 ff03 .dw $ff03 -000723 7073 -000724 0040 .db "sp@",0 -000725 0715 .dw VE_HEAD - .set VE_HEAD = VE_SP_FETCH - XT_SP_FETCH: -000726 0727 .dw PFA_SP_FETCH - PFA_SP_FETCH: -000727 939a -000728 938a savetos -000729 01ce movw tosl, yl -00072a c9f4 jmp_ DO_NEXT - .include "words/spstore.asm" - - ; Stack - ; set data stack pointer to addr - VE_SP_STORE: -00072b ff03 .dw $ff03 -00072c 7073 -00072d 0021 .db "sp!",0 -00072e 0722 .dw VE_HEAD - .set VE_HEAD = VE_SP_STORE - XT_SP_STORE: -00072f 0730 .dw PFA_SP_STORE - PFA_SP_STORE: -000730 01ec movw yl, tosl -000731 9189 -000732 9199 loadtos -000733 c9eb 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: -000734 0735 .dw PFA_DODO - PFA_DODO: -000735 9129 ld temp2, Y+ -000736 9139 ld temp3, Y+ ; limit - PFA_DODO1: -000737 e8e0 ldi zl, $80 -000738 0f3e add temp3, zl -000739 1b82 sub tosl, temp2 -00073a 0b93 sbc tosh, temp3 - -00073b 933f push temp3 -00073c 932f push temp2 ; limit ( --> limit + $8000) -00073d 939f push tosh -00073e 938f push tosl ; start -> index ( --> index - (limit - $8000) -00073f 9189 -000740 9199 loadtos -000741 c9dd jmp_ DO_NEXT - .include "words/i.asm" - - ; Compiler - ; current loop counter - VE_I: -000742 ff01 .dw $FF01 -000743 0069 .db "i",0 -000744 072b .dw VE_HEAD - .set VE_HEAD = VE_I - XT_I: -000745 0746 .dw PFA_I - PFA_I: -000746 939a -000747 938a savetos -000748 918f pop tosl -000749 919f pop tosh ; index -00074a 91ef pop zl -00074b 91ff pop zh ; limit -00074c 93ff push zh -00074d 93ef push zl -00074e 939f push tosh -00074f 938f push tosl -000750 0f8e add tosl, zl -000751 1f9f adc tosh, zh -000752 c9cc 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: -000753 0754 .dw PFA_DOPLUSLOOP - PFA_DOPLUSLOOP: -000754 91ef pop zl -000755 91ff pop zh -000756 0fe8 add zl, tosl -000757 1ff9 adc zh, tosh -000758 9189 -000759 9199 loadtos -00075a f01b brvs PFA_DOPLUSLOOP_LEAVE - ; next cycle - PFA_DOPLUSLOOP_NEXT: - ; next iteration -00075b 93ff push zh -00075c 93ef push zl -00075d cd60 rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination - PFA_DOPLUSLOOP_LEAVE: -00075e 910f pop temp0 -00075f 911f pop temp1 ; remove limit -000760 9611 adiw xl, 1 ; skip branch-back address -000761 c9bd 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: -000762 0763 .dw PFA_DOLOOP - PFA_DOLOOP: -000763 91ef pop zl -000764 91ff pop zh -000765 9631 adiw zl,1 -000766 f3bb brvs PFA_DOPLUSLOOP_LEAVE -000767 cff3 jmp_ PFA_DOPLUSLOOP_NEXT - .include "words/unloop.asm" - - ; Compiler - ; remove loop-sys, exit the loop and continue execution after it - VE_UNLOOP: -000768 ff06 .dw $ff06 -000769 6e75 -00076a 6f6c -00076b 706f .db "unloop" -00076c 0742 .dw VE_HEAD - .set VE_HEAD = VE_UNLOOP - XT_UNLOOP: -00076d 076e .dw PFA_UNLOOP - PFA_UNLOOP: -00076e 911f pop temp1 -00076f 910f pop temp0 -000770 911f pop temp1 -000771 910f pop temp0 -000772 c9ac jmp_ DO_NEXT - - ;;;;;;;;;;;;;;;;;;;;;;;;;;; - - .include "words/cmove_g.asm" - - ; Memory - ; copy data in RAM from higher to lower addresses. - VE_CMOVE_G: -000773 ff06 .dw $ff06 -000774 6d63 -000775 766f -000776 3e65 .db "cmove>" -000777 0768 .dw VE_HEAD - .set VE_HEAD = VE_CMOVE_G - XT_CMOVE_G: -000778 0779 .dw PFA_CMOVE_G - PFA_CMOVE_G: -000779 93bf push xh -00077a 93af push xl -00077b 91e9 ld zl, Y+ -00077c 91f9 ld zh, Y+ ; addr-to -00077d 91a9 ld xl, Y+ -00077e 91b9 ld xh, Y+ ; addr-from -00077f 2f09 mov temp0, tosh -000780 2b08 or temp0, tosl -000781 f041 brbs 1, PFA_CMOVE_G1 -000782 0fe8 add zl, tosl -000783 1ff9 adc zh, tosh -000784 0fa8 add xl, tosl -000785 1fb9 adc xh, tosh - PFA_CMOVE_G2: -000786 911e ld temp1, -X -000787 9312 st -Z, temp1 -000788 9701 sbiw tosl, 1 -000789 f7e1 brbc 1, PFA_CMOVE_G2 - PFA_CMOVE_G1: -00078a 91af pop xl -00078b 91bf pop xh -00078c 9189 -00078d 9199 loadtos -00078e c990 jmp_ DO_NEXT - .include "words/byteswap.asm" - - ; Arithmetics - ; exchange the bytes of the TOS - VE_BYTESWAP: -00078f ff02 .dw $ff02 -000790 3c3e .db "><" -000791 0773 .dw VE_HEAD - .set VE_HEAD = VE_BYTESWAP - XT_BYTESWAP: -000792 0793 .dw PFA_BYTESWAP - PFA_BYTESWAP: -000793 2f09 mov temp0, tosh -000794 2f98 mov tosh, tosl -000795 2f80 mov tosl, temp0 -000796 c988 jmp_ DO_NEXT - .include "words/up.asm" - - ; System Variable - ; get user area pointer - VE_UP_FETCH: -000797 ff03 .dw $ff03 -000798 7075 -000799 0040 .db "up@",0 -00079a 078f .dw VE_HEAD - .set VE_HEAD = VE_UP_FETCH - XT_UP_FETCH: -00079b 079c .dw PFA_UP_FETCH - PFA_UP_FETCH: -00079c 939a -00079d 938a savetos -00079e 01c2 movw tosl, upl -00079f c97f jmp_ DO_NEXT - - ; ( addr -- ) - ; System Variable - ; set user area pointer - VE_UP_STORE: -0007a0 ff03 .dw $ff03 -0007a1 7075 -0007a2 0021 .db "up!",0 -0007a3 0797 .dw VE_HEAD - .set VE_HEAD = VE_UP_STORE - XT_UP_STORE: -0007a4 07a5 .dw PFA_UP_STORE - PFA_UP_STORE: -0007a5 012c movw upl, tosl -0007a6 9189 -0007a7 9199 loadtos -0007a8 c976 jmp_ DO_NEXT - .include "words/1ms.asm" - - ; Time - ; busy waits (almost) exactly 1 millisecond - VE_1MS: -0007a9 ff03 .dw $ff03 -0007aa 6d31 -0007ab 0073 .db "1ms",0 -0007ac 07a0 .dw VE_HEAD - .set VE_HEAD = VE_1MS - XT_1MS: -0007ad 07ae .dw PFA_1MS - PFA_1MS: -0007ae e6e6 -0007af e0fe -0007b0 9731 -0007b1 f7f1 -0007b2 0000 delay 1000 -0007b3 c96b jmp_ DO_NEXT - .include "words/2to_r.asm" - - ; Stack - ; move DTOS to TOR - VE_2TO_R: -0007b4 ff03 .dw $ff03 -0007b5 3e32 -0007b6 0072 .db "2>r",0 -0007b7 07a9 .dw VE_HEAD - .set VE_HEAD = VE_2TO_R - XT_2TO_R: -0007b8 07b9 .dw PFA_2TO_R - PFA_2TO_R: -0007b9 01fc movw zl, tosl -0007ba 9189 -0007bb 9199 loadtos -0007bc 939f push tosh -0007bd 938f push tosl -0007be 93ff push zh -0007bf 93ef push zl -0007c0 9189 -0007c1 9199 loadtos -0007c2 c95c jmp_ DO_NEXT - .include "words/2r_from.asm" - - ; Stack - ; move DTOR to TOS - VE_2R_FROM: -0007c3 ff03 .dw $ff03 -0007c4 7232 -0007c5 003e .db "2r>",0 -0007c6 07b4 .dw VE_HEAD - .set VE_HEAD = VE_2R_FROM - XT_2R_FROM: -0007c7 07c8 .dw PFA_2R_FROM - PFA_2R_FROM: -0007c8 939a -0007c9 938a savetos -0007ca 91ef pop zl -0007cb 91ff pop zh -0007cc 918f pop tosl -0007cd 919f pop tosh -0007ce 939a -0007cf 938a savetos -0007d0 01cf movw tosl, zl -0007d1 c94d jmp_ DO_NEXT - - .include "words/store-e.asm" - - ; Memory - ; write n (2bytes) to eeprom address - VE_STOREE: -0007d2 ff02 .dw $ff02 -0007d3 6521 .db "!e" -0007d4 07c3 .dw VE_HEAD - .set VE_HEAD = VE_STOREE - XT_STOREE: -0007d5 07d6 .dw PFA_STOREE - PFA_STOREE: - .if WANT_UNIFIED == 1 - .endif - PFA_STOREE0: -0007d6 01fc movw zl, tosl -0007d7 9189 -0007d8 9199 loadtos -0007d9 b72f in_ temp2, SREG -0007da 94f8 cli -0007db d028 rcall PFA_FETCHE2 -0007dc b500 in_ temp0, EEDR -0007dd 1708 cp temp0,tosl -0007de f009 breq PFA_STOREE3 -0007df d00b rcall PFA_STOREE1 - PFA_STOREE3: -0007e0 9631 adiw zl,1 -0007e1 d022 rcall PFA_FETCHE2 -0007e2 b500 in_ temp0, EEDR -0007e3 1709 cp temp0,tosh -0007e4 f011 breq PFA_STOREE4 -0007e5 2f89 mov tosl, tosh -0007e6 d004 rcall PFA_STOREE1 - PFA_STOREE4: -0007e7 bf2f out_ SREG, temp2 -0007e8 9189 -0007e9 9199 loadtos -0007ea c934 jmp_ DO_NEXT - - PFA_STOREE1: -0007eb 99f9 sbic EECR, EEPE -0007ec cffe rjmp PFA_STOREE1 - - PFA_STOREE2: ; estore_wait_low_spm: -0007ed b707 in_ temp0, SPMCSR -0007ee fd00 sbrc temp0,SPMEN -0007ef cffd rjmp PFA_STOREE2 - -0007f0 bdf2 out_ EEARH,zh -0007f1 bde1 out_ EEARL,zl -0007f2 bd80 out_ EEDR, tosl -0007f3 9afa sbi EECR,EEMPE -0007f4 9af9 sbi EECR,EEPE - -0007f5 9508 ret - .if WANT_UNIFIED == 1 - .endif - .include "words/fetch-e.asm" - - ; Memory - ; read 1 cell from eeprom - VE_FETCHE: -0007f6 ff02 .dw $ff02 -0007f7 6540 .db "@e" -0007f8 07d2 .dw VE_HEAD - .set VE_HEAD = VE_FETCHE - XT_FETCHE: -0007f9 07fa .dw PFA_FETCHE - PFA_FETCHE: - .if WANT_UNIFIED == 1 - .endif - PFA_FETCHE1: -0007fa b72f in_ temp2, SREG -0007fb 94f8 cli -0007fc 01fc movw zl, tosl -0007fd d006 rcall PFA_FETCHE2 -0007fe b580 in_ tosl, EEDR - -0007ff 9631 adiw zl,1 - -000800 d003 rcall PFA_FETCHE2 -000801 b590 in_ tosh, EEDR -000802 bf2f out_ SREG, temp2 -000803 c91b jmp_ DO_NEXT - - PFA_FETCHE2: -000804 99f9 sbic EECR, EEPE -000805 cffe rjmp PFA_FETCHE2 - -000806 bdf2 out_ EEARH,zh -000807 bde1 out_ EEARL,zl - -000808 9af8 sbi EECR,EERE -000809 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: -00080a ff02 .dw $ff02 -00080b 6921 .db "!i" -00080c 07f6 .dw VE_HEAD - .set VE_HEAD = VE_STOREI - XT_STOREI: -00080d 1079 .dw PFA_DODEFER1 - PFA_STOREI: -00080e 00a4 .dw EE_STOREI -00080f 101a .dw XT_EDEFERFETCH -000810 1024 .dw XT_EDEFERSTORE - .if FLASHEND > $10000 - .include "words/store-i_big.asm" - - ; R( -- ) - ; writes a cell in flash - VE_DO_STOREI_BIG: -000811 ff04 .dw $ff04 -000812 6928 -000813 2921 .db "(i!)" -000814 080a .dw VE_HEAD - .set VE_HEAD = VE_DO_STOREI_BIG - XT_DO_STOREI: -000815 0816 .dw PFA_DO_STOREI_BIG - PFA_DO_STOREI_BIG: -000816 019c movw temp2, tosl ; save the (word) address -000817 9189 -000818 9199 loadtos ; get the new value for the flash cell -000819 93af push xl -00081a 93bf push xh -00081b 93cf push yl -00081c 93df push yh -00081d e0e1 ldi zl, byte3(DO_STOREI_atmega) -00081e bfeb out_ rampz, zl -00081f eff0 ldi zh, byte2(DO_STOREI_atmega) -000820 e0e0 ldi zl, byte1(DO_STOREI_atmega) -000821 9519 eicall -000822 91df pop yh -000823 91cf pop yl -000824 91bf pop xh -000825 91af pop xl - ; finally clear the stack -000826 9189 -000827 9199 loadtos -000828 c8f6 jmp_ DO_NEXT - - ; - .set _pc = pc - .org NRWW_START_ADDR - DO_STOREI_atmega: - ; write data to temp page buffer - ; use the values in tosl/tosh at the - ; appropiate place -01f000 d010 rcall pageload - - ; erase page if needed - ; it is needed if a bit goes from 0 to 1 -01f001 94e0 com temp4 -01f002 94f0 com temp5 -01f003 218e and tosl, temp4 -01f004 219f and tosh, temp5 -01f005 2b98 or tosh, tosl -01f006 f019 breq DO_STOREI_writepage - -01f007 01f9 movw zl, temp2 -01f008 e003 ldi temp0,(1<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: -000836 ff03 .dw $ff03 -000837 3e6e -000838 0072 .db "n>r",0 -000839 0829 .dw VE_HEAD - .set VE_HEAD = VE_N_TO_R - XT_N_TO_R: -00083a 083b .dw PFA_N_TO_R - PFA_N_TO_R: -00083b 01fc movw zl, tosl -00083c 2f08 mov temp0, tosl - PFA_N_TO_R1: -00083d 9189 -00083e 9199 loadtos -00083f 939f push tosh -000840 938f push tosl -000841 950a dec temp0 -000842 f7d1 brne PFA_N_TO_R1 -000843 93ef push zl -000844 93ff push zh -000845 9189 -000846 9199 loadtos -000847 c8d7 jmp_ DO_NEXT - .include "words/n_r_from.asm" - - ; Stack - ; move n items from return stack to data stack - VE_N_R_FROM: -000848 ff03 .dw $ff03 -000849 726e -00084a 003e .db "nr>",0 -00084b 0836 .dw VE_HEAD - .set VE_HEAD = VE_N_R_FROM - XT_N_R_FROM: -00084c 084d .dw PFA_N_R_FROM - PFA_N_R_FROM: -00084d 939a -00084e 938a savetos -00084f 91ff pop zh -000850 91ef pop zl -000851 2f0e mov temp0, zl - PFA_N_R_FROM1: -000852 918f pop tosl -000853 919f pop tosh -000854 939a -000855 938a savetos -000856 950a dec temp0 -000857 f7d1 brne PFA_N_R_FROM1 -000858 01cf movw tosl, zl -000859 c8c5 jmp_ DO_NEXT - - .include "words/d-2star.asm" - - ; Arithmetics - ; shift a double cell left - VE_D2STAR: -00085a ff03 .dw $ff03 -00085b 3264 -00085c 002a .db "d2*",0 -00085d 0848 .dw VE_HEAD - .set VE_HEAD = VE_D2STAR - XT_D2STAR: -00085e 085f .dw PFA_D2STAR - PFA_D2STAR: -00085f 9109 ld temp0, Y+ -000860 9119 ld temp1, Y+ -000861 0f00 lsl temp0 -000862 1f11 rol temp1 -000863 1f88 rol tosl -000864 1f99 rol tosh -000865 931a st -Y, temp1 -000866 930a st -Y, temp0 -000867 c8b7 jmp_ DO_NEXT - .include "words/d-2slash.asm" - - ; Arithmetics - ; shift a double cell value right - VE_D2SLASH: -000868 ff03 .dw $ff03 -000869 3264 -00086a 002f .db "d2/",0 -00086b 085a .dw VE_HEAD - .set VE_HEAD = VE_D2SLASH - XT_D2SLASH: -00086c 086d .dw PFA_D2SLASH - PFA_D2SLASH: -00086d 9109 ld temp0, Y+ -00086e 9119 ld temp1, Y+ -00086f 9595 asr tosh -000870 9587 ror tosl -000871 9517 ror temp1 -000872 9507 ror temp0 -000873 931a st -Y, temp1 -000874 930a st -Y, temp0 -000875 c8a9 jmp_ DO_NEXT - .include "words/d-plus.asm" - - ; Arithmetics - ; add 2 double cell values - VE_DPLUS: -000876 ff02 .dw $ff02 -000877 2b64 .db "d+" -000878 0868 .dw VE_HEAD - .set VE_HEAD = VE_DPLUS - XT_DPLUS: -000879 087a .dw PFA_DPLUS - PFA_DPLUS: -00087a 9129 ld temp2, Y+ -00087b 9139 ld temp3, Y+ - -00087c 90e9 ld temp4, Y+ -00087d 90f9 ld temp5, Y+ -00087e 9149 ld temp6, Y+ -00087f 9159 ld temp7, Y+ - -000880 0f24 add temp2, temp6 -000881 1f35 adc temp3, temp7 -000882 1d8e adc tosl, temp4 -000883 1d9f adc tosh, temp5 - -000884 933a st -Y, temp3 -000885 932a st -Y, temp2 -000886 c898 jmp_ DO_NEXT - .include "words/d-minus.asm" - - ; Arithmetics - ; subtract d2 from d1 - VE_DMINUS: -000887 ff02 .dw $ff02 -000888 2d64 .db "d-" -000889 0876 .dw VE_HEAD - .set VE_HEAD = VE_DMINUS - XT_DMINUS: -00088a 088b .dw PFA_DMINUS - PFA_DMINUS: -00088b 9129 ld temp2, Y+ -00088c 9139 ld temp3, Y+ - -00088d 90e9 ld temp4, Y+ -00088e 90f9 ld temp5, Y+ -00088f 9149 ld temp6, Y+ -000890 9159 ld temp7, Y+ - -000891 1b42 sub temp6, temp2 -000892 0b53 sbc temp7, temp3 -000893 0ae8 sbc temp4, tosl -000894 0af9 sbc temp5, tosh - -000895 935a st -Y, temp7 -000896 934a st -Y, temp6 -000897 01c7 movw tosl, temp4 -000898 c886 jmp_ DO_NEXT - .include "words/d-invert.asm" - - ; Arithmetics - ; invert all bits in the double cell value - VE_DINVERT: -000899 ff07 .dw $ff07 -00089a 6964 -00089b 766e -00089c 7265 -00089d 0074 .db "dinvert",0 -00089e 0887 .dw VE_HEAD - .set VE_HEAD = VE_DINVERT - XT_DINVERT: -00089f 08a0 .dw PFA_DINVERT - PFA_DINVERT: -0008a0 9109 ld temp0, Y+ -0008a1 9119 ld temp1, Y+ -0008a2 9580 com tosl -0008a3 9590 com tosh -0008a4 9500 com temp0 -0008a5 9510 com temp1 -0008a6 931a st -Y, temp1 -0008a7 930a st -Y, temp0 -0008a8 c876 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: -0008a9 ff02 .dw $ff02 -0008aa 2e75 .db "u." -0008ab 0899 .dw VE_HEAD - .set VE_HEAD = VE_UDOT - XT_UDOT: -0008ac 011b .dw DO_COLON - PFA_UDOT: - .endif -0008ad 05ed .dw XT_ZERO -0008ae 0b90 .dw XT_UDDOT -0008af 04ae .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: -0008b0 ff03 .dw $ff03 -0008b1 2e75 -0008b2 0072 .db "u.r",0 -0008b3 08a9 .dw VE_HEAD - .set VE_HEAD = VE_UDOTR - XT_UDOTR: -0008b4 011b .dw DO_COLON - PFA_UDOTR: - .endif -0008b5 05ed .dw XT_ZERO -0008b6 055d .dw XT_SWAP -0008b7 0b99 .dw XT_UDDOTR -0008b8 04ae .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: -0008b9 ff0d .dw $ff0d -0008ba 6873 -0008bb 776f -0008bc 772d -0008bd 726f -0008be 6c64 -0008bf 7369 -0008c0 0074 .db "show-wordlist",0 -0008c1 08b0 .dw VE_HEAD - .set VE_HEAD = VE_SHOWWORDLIST - XT_SHOWWORDLIST: -0008c2 011b .dw DO_COLON - PFA_SHOWWORDLIST: - .endif -0008c3 04ce .dw XT_DOLITERAL -0008c4 08c8 .dw XT_SHOWWORD -0008c5 055d .dw XT_SWAP -0008c6 10bd .dw XT_TRAVERSEWORDLIST -0008c7 04ae .dw XT_EXIT - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_SHOWWORD: -0008c8 011b .dw DO_COLON - PFA_SHOWWORD: - .endif -0008c9 10d8 .dw XT_NAME2STRING -0008ca 0c06 .dw XT_ITYPE -0008cb 0c48 .dw XT_SPACE ; ( -- addr n) -0008cc 05e4 .dw XT_TRUE -0008cd 04ae .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: -0008ce ff05 .dw $ff05 -0008cf 6f77 -0008d0 6472 -0008d1 0073 .db "words",0 -0008d2 08b9 .dw VE_HEAD - .set VE_HEAD = VE_WORDS - XT_WORDS: -0008d3 011b .dw DO_COLON - PFA_WORDS: - .endif -0008d4 04ce .dw XT_DOLITERAL -0008d5 008a .dw CFG_ORDERLISTLEN+2 -0008d6 07f9 .dw XT_FETCHE -0008d7 08c2 .dw XT_SHOWWORDLIST -0008d8 04ae .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: -0008d9 ff04 .dw $ff04 -0008da 692b -0008db 746e .db "+int" -0008dc 08ce .dw VE_HEAD - .set VE_HEAD = VE_INTON - XT_INTON: -0008dd 08de .dw PFA_INTON - PFA_INTON: -0008de 9478 sei -0008df c83f jmp_ DO_NEXT - .include "words/int-off.asm" - - ; Interrupt - ; turns off all interrupts - VE_INTOFF: -0008e0 ff04 .dw $ff04 -0008e1 692d -0008e2 746e .db "-int" -0008e3 08d9 .dw VE_HEAD - .set VE_HEAD = VE_INTOFF - XT_INTOFF: -0008e4 08e5 .dw PFA_INTOFF - PFA_INTOFF: -0008e5 94f8 cli -0008e6 c838 jmp_ DO_NEXT - .include "words/int-store.asm" - - ; Interrupt - ; stores XT as interrupt vector i - VE_INTSTORE: -0008e7 ff04 .dw $ff04 -0008e8 6e69 -0008e9 2174 .db "int!" -0008ea 08e0 .dw VE_HEAD - .set VE_HEAD = VE_INTSTORE - XT_INTSTORE: -0008eb 011b .dw DO_COLON - PFA_INTSTORE: -0008ec 04ce .dw XT_DOLITERAL -0008ed 0000 .dw intvec -0008ee 0636 .dw XT_PLUS -0008ef 07d5 .dw XT_STOREE -0008f0 04ae .dw XT_EXIT - .include "words/int-fetch.asm" - - ; Interrupt - ; fetches XT from interrupt vector i - VE_INTFETCH: -0008f1 ff04 .dw $ff04 -0008f2 6e69 -0008f3 4074 .db "int@" -0008f4 08e7 .dw VE_HEAD - .set VE_HEAD = VE_INTFETCH - XT_INTFETCH: -0008f5 011b .dw DO_COLON - PFA_INTFETCH: -0008f6 04ce .dw XT_DOLITERAL -0008f7 0000 .dw intvec -0008f8 0636 .dw XT_PLUS -0008f9 07f9 .dw XT_FETCHE -0008fa 04ae .dw XT_EXIT - .include "words/int-trap.asm" - - ; Interrupt - ; trigger an interrupt - VE_INTTRAP: -0008fb ff08 .dw $ff08 -0008fc 6e69 -0008fd 2d74 -0008fe 7274 -0008ff 7061 .db "int-trap" -000900 08f1 .dw VE_HEAD - .set VE_HEAD = VE_INTTRAP - XT_INTTRAP: -000901 0902 .dw PFA_INTTRAP - PFA_INTTRAP: -000902 2eb8 mov isrflag, tosl -000903 9189 -000904 9199 loadtos -000905 c819 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: -000906 011b .dw DO_COLON - PFA_ISREXEC: -000907 08f5 .dw XT_INTFETCH -000908 04b8 .dw XT_EXECUTE -000909 090b .dw XT_ISREND -00090a 04ae .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: -00090b 090c .dw PFA_ISREND - PFA_ISREND: -00090c d001 rcall PFA_ISREND1 ; clear the interrupt flag for the controller -00090d c811 jmp_ DO_NEXT - PFA_ISREND1: -00090e 9518 reti - .endif - - .include "words/pick.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_PICK: -00090f ff04 .dw $ff04 -000910 6970 -000911 6b63 .db "pick" -000912 08fb .dw VE_HEAD - .set VE_HEAD = VE_PICK - XT_PICK: -000913 011b .dw DO_COLON - PFA_PICK: - .endif -000914 06c8 .dw XT_1PLUS -000915 09bc .dw XT_CELLS -000916 0726 .dw XT_SP_FETCH -000917 0636 .dw XT_PLUS -000918 0512 .dw XT_FETCH -000919 04ae .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: -00091a 0002 .dw $0002 -00091b 222e .db ".",$22 -00091c 090f .dw VE_HEAD - .set VE_HEAD = VE_DOTSTRING - XT_DOTSTRING: -00091d 011b .dw DO_COLON - PFA_DOTSTRING: - .endif -00091e 0925 .dw XT_SQUOTE -00091f 01d1 .dw XT_COMPILE -000920 0c06 .dw XT_ITYPE -000921 04ae .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: -000922 0002 .dw $0002 -000923 2273 .db "s",$22 -000924 091a .dw VE_HEAD - .set VE_HEAD = VE_SQUOTE - XT_SQUOTE: -000925 011b .dw DO_COLON - PFA_SQUOTE: - .endif -000926 04ce .dw XT_DOLITERAL -000927 0022 .dw 34 ; 0x22 -000928 0ded .dw XT_PARSE ; ( -- addr n) -000929 09af .dw XT_STATE -00092a 0512 .dw XT_FETCH -00092b 04c7 .dw XT_DOCONDBRANCH -00092c 092e DEST(PFA_SQUOTE1) -00092d 01fd .dw XT_SLITERAL - PFA_SQUOTE1: -00092e 04ae .dw XT_EXIT - - .include "words/fill.asm" - - ; Memory - ; fill u bytes memory beginning at a-addr with character c - VE_FILL: -00092f ff04 .dw $ff04 -000930 6966 -000931 6c6c .db "fill" -000932 0922 .dw VE_HEAD - .set VE_HEAD = VE_FILL - XT_FILL: -000933 011b .dw DO_COLON - PFA_FILL: -000934 057a .dw XT_ROT -000935 057a .dw XT_ROT -000936 0552 -000937 04c7 .dw XT_QDUP,XT_DOCONDBRANCH -000938 0940 DEST(PFA_FILL2) -000939 124c .dw XT_BOUNDS -00093a 0734 .dw XT_DODO - PFA_FILL1: -00093b 054a .dw XT_DUP -00093c 0745 .dw XT_I -00093d 0526 .dw XT_CSTORE ; ( -- c c-addr) -00093e 0762 .dw XT_DOLOOP -00093f 093b .dw PFA_FILL1 - PFA_FILL2: -000940 0572 .dw XT_DROP -000941 04ae .dw XT_EXIT - - .include "words/environment.asm" - - ; System Value - ; word list identifier of the environmental search list - VE_ENVIRONMENT: -000942 ff0b .dw $ff0b -000943 6e65 -000944 6976 -000945 6f72 -000946 6d6e -000947 6e65 -000948 0074 .db "environment",0 -000949 092f .dw VE_HEAD - .set VE_HEAD = VE_ENVIRONMENT - XT_ENVIRONMENT: -00094a 04dc .dw PFA_DOVARIABLE - PFA_ENVIRONMENT: -00094b 0082 .dw CFG_ENVIRONMENT - .include "words/env-wordlists.asm" - - ; Environment - ; maximum number of wordlists in the dictionary search order - VE_ENVWORDLISTS: -00094c ff09 .dw $ff09 -00094d 6f77 -00094e 6472 -00094f 696c -000950 7473 -000951 0073 .db "wordlists",0 -000952 0000 .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENVWORDLISTS - XT_ENVWORDLISTS: -000953 011b .dw DO_COLON - PFA_ENVWORDLISTS: -000954 04ce .dw XT_DOLITERAL -000955 0008 .dw NUMWORDLISTS -000956 04ae .dw XT_EXIT - .include "words/env-slashpad.asm" - - ; Environment - ; Size of the PAD buffer in bytes - VE_ENVSLASHPAD: -000957 ff04 .dw $ff04 -000958 702f -000959 6461 .db "/pad" -00095a 094c .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENVSLASHPAD - XT_ENVSLASHPAD: -00095b 011b .dw DO_COLON - PFA_ENVSLASHPAD: -00095c 0726 .dw XT_SP_FETCH -00095d 09e9 .dw XT_PAD -00095e 062c .dw XT_MINUS -00095f 04ae .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: -000960 ff05 .dw $ff05 -000961 682f -000962 6c6f -000963 0064 .db "/hold",0 -000964 0957 .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENVSLASHHOLD - XT_ENVSLASHHOLD: -000965 011b .dw DO_COLON - PFA_ENVSLASHHOLD: - .endif -000966 09e9 .dw XT_PAD -000967 0a24 .dw XT_HERE -000968 062c .dw XT_MINUS -000969 04ae .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: -00096a ff0a .dw $ff0a -00096b 6f66 -00096c 7472 -00096d 2d68 -00096e 616e -00096f 656d .db "forth-name" -000970 0960 .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENV_FORTHNAME - XT_ENV_FORTHNAME: -000971 011b .dw DO_COLON - PFA_EN_FORTHNAME: -000972 0bd3 .dw XT_DOSLITERAL -000973 0007 .dw 7 - .endif -000974 6d61 -000975 6f66 -000976 7472 -../../common\words/env-forthname.asm(22): warning: .cseg .db misalignment - padding zero byte -000977 0068 .db "amforth" - .if cpu_msp430==1 - .endif -000978 04ae .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: -000979 ff07 .dw $ff07 -00097a 6576 -00097b 7372 -00097c 6f69 -00097d 006e .db "version",0 -00097e 096a .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENV_FORTHVERSION - XT_ENV_FORTHVERSION: -00097f 011b .dw DO_COLON - PFA_EN_FORTHVERSION: - .endif -000980 04ce .dw XT_DOLITERAL -000981 0041 .dw 65 -000982 04ae .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: -000983 ff03 .dw $ff03 -000984 7063 -000985 0075 .db "cpu",0 -000986 0979 .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENV_CPU - XT_ENV_CPU: -000987 011b .dw DO_COLON - PFA_EN_CPU: - .endif -000988 04ce .dw XT_DOLITERAL -000989 0075 .dw mcu_name -00098a 0c32 .dw XT_ICOUNT -00098b 04ae .dw XT_EXIT - .include "words/env-mcuinfo.asm" - - ; Environment - ; flash address of some CPU specific parameters - VE_ENV_MCUINFO: -00098c ff08 .dw $ff08 -00098d 636d -00098e 2d75 -00098f 6e69 -000990 6f66 .db "mcu-info" -000991 0983 .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENV_MCUINFO - XT_ENV_MCUINFO: -000992 011b .dw DO_COLON - PFA_EN_MCUINFO: -000993 04ce .dw XT_DOLITERAL -000994 0071 .dw mcu_info -000995 04ae .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: -000996 ff05 .dw $ff05 -000997 752f -000998 6573 -000999 0072 .db "/user",0 -00099a 098c .dw VE_ENVHEAD - .set VE_ENVHEAD = VE_ENVUSERSIZE - XT_ENVUSERSIZE: -00099b 011b .dw DO_COLON - PFA_ENVUSERSIZE: - .endif -00099c 04ce .dw XT_DOLITERAL -00099d 002c .dw SYSUSERSIZE + APPUSERSIZE -00099e 04ae .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: -00099f ff05 .dw $ff05 -0009a0 5f66 -0009a1 7063 -0009a2 0075 .db "f_cpu",0 -0009a3 0942 .dw VE_HEAD - .set VE_HEAD = VE_F_CPU - XT_F_CPU: -0009a4 011b .dw DO_COLON - PFA_F_CPU: - .endif -0009a5 04ce .dw XT_DOLITERAL -0009a6 0000 .dw (F_CPU % 65536) -0009a7 04ce .dw XT_DOLITERAL -0009a8 00e1 .dw (F_CPU / 65536) -0009a9 04ae .dw XT_EXIT - .include "words/state.asm" - - ; System Variable - ; system state - VE_STATE: -0009aa ff05 .dw $ff05 -0009ab 7473 -0009ac 7461 -0009ad 0065 .db "state",0 -0009ae 099f .dw VE_HEAD - .set VE_HEAD = VE_STATE - XT_STATE: -0009af 04dc .dw PFA_DOVARIABLE - PFA_STATE: -0009b0 0253 .dw ram_state - - .dseg -000253 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: -0009b1 ff04 .dw $ff04 -0009b2 6162 -0009b3 6573 .db "base" -0009b4 09aa .dw VE_HEAD - .set VE_HEAD = VE_BASE - XT_BASE: -0009b5 04ef .dw PFA_DOUSER - PFA_BASE: - .endif -0009b6 000c .dw USER_BASE - - .include "words/cells.asm" - - ; Arithmetics - ; n2 is the size in address units of n1 cells - VE_CELLS: -0009b7 ff05 .dw $ff05 -0009b8 6563 -0009b9 6c6c -0009ba 0073 .db "cells",0 -0009bb 09b1 .dw VE_HEAD - .set VE_HEAD = VE_CELLS - XT_CELLS: -0009bc 06a5 .dw PFA_2STAR - .include "words/cellplus.asm" - - ; Arithmetics - ; add the size of an address-unit to a-addr1 - VE_CELLPLUS: -0009bd ff05 .dw $ff05 -0009be 6563 -0009bf 6c6c -0009c0 002b .db "cell+",0 -0009c1 09b7 .dw VE_HEAD - .set VE_HEAD = VE_CELLPLUS - XT_CELLPLUS: -0009c2 09c3 .dw PFA_CELLPLUS - PFA_CELLPLUS: -0009c3 9602 adiw tosl, CELLSIZE -0009c4 940c 011f jmp_ DO_NEXT - - .include "words/2dup.asm" - - ; Stack - ; Duplicate the 2 top elements - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_2DUP: -0009c6 ff04 .dw $ff04 -0009c7 6432 -0009c8 7075 .db "2dup" -0009c9 09bd .dw VE_HEAD - .set VE_HEAD = VE_2DUP - XT_2DUP: -0009ca 011b .dw DO_COLON - PFA_2DUP: - .endif - -0009cb 0568 .dw XT_OVER -0009cc 0568 .dw XT_OVER -0009cd 04ae .dw XT_EXIT - .include "words/2drop.asm" - - ; Stack - ; Remove the 2 top elements - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_2DROP: -0009ce ff05 .dw $ff05 -0009cf 6432 -0009d0 6f72 -0009d1 0070 .db "2drop",0 -0009d2 09c6 .dw VE_HEAD - .set VE_HEAD = VE_2DROP - XT_2DROP: -0009d3 011b .dw DO_COLON - PFA_2DROP: - .endif -0009d4 0572 .dw XT_DROP -0009d5 0572 .dw XT_DROP -0009d6 04ae .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: -0009d7 ff04 .dw $ff04 -0009d8 7574 -0009d9 6b63 .db "tuck" -0009da 09ce .dw VE_HEAD - .set VE_HEAD = VE_TUCK - XT_TUCK: -0009db 011b .dw DO_COLON - PFA_TUCK: - .endif -0009dc 055d .dw XT_SWAP -0009dd 0568 .dw XT_OVER -0009de 04ae .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: -0009df ff03 .dw $ff03 -0009e0 693e -0009e1 006e .db ">in",0 -0009e2 09d7 .dw VE_HEAD - .set VE_HEAD = VE_TO_IN - XT_TO_IN: -0009e3 04ef .dw PFA_DOUSER - PFA_TO_IN: - .endif -0009e4 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: -0009e5 ff03 .dw $ff03 -0009e6 6170 -0009e7 0064 .db "pad",0 -0009e8 09df .dw VE_HEAD - .set VE_HEAD = VE_PAD - XT_PAD: -0009e9 011b .dw DO_COLON - PFA_PAD: - .endif -0009ea 0a24 .dw XT_HERE -0009eb 04ce .dw XT_DOLITERAL -0009ec 0028 .dw 40 -0009ed 0636 .dw XT_PLUS -0009ee 04ae .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: -0009ef ff04 .dw $ff04 -0009f0 6d65 -0009f1 7469 .db "emit" -0009f2 09e5 .dw VE_HEAD - .set VE_HEAD = VE_EMIT - XT_EMIT: -0009f3 1079 .dw PFA_DODEFER1 - PFA_EMIT: - .endif -0009f4 000e .dw USER_EMIT -0009f5 1042 .dw XT_UDEFERFETCH -0009f6 104e .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: -0009f7 ff05 .dw $ff05 -0009f8 6d65 -0009f9 7469 -0009fa 003f .db "emit?",0 -0009fb 09ef .dw VE_HEAD - .set VE_HEAD = VE_EMITQ - XT_EMITQ: -0009fc 1079 .dw PFA_DODEFER1 - PFA_EMITQ: - .endif -0009fd 0010 .dw USER_EMITQ -0009fe 1042 .dw XT_UDEFERFETCH -0009ff 104e .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: -000a00 ff03 .dw $ff03 -000a01 656b -000a02 0079 .db "key",0 -000a03 09f7 .dw VE_HEAD - .set VE_HEAD = VE_KEY - XT_KEY: -000a04 1079 .dw PFA_DODEFER1 - PFA_KEY: - .endif -000a05 0012 .dw USER_KEY -000a06 1042 .dw XT_UDEFERFETCH -000a07 104e .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: -000a08 ff04 .dw $ff04 -000a09 656b -000a0a 3f79 .db "key?" -000a0b 0a00 .dw VE_HEAD - .set VE_HEAD = VE_KEYQ - XT_KEYQ: -000a0c 1079 .dw PFA_DODEFER1 - PFA_KEYQ: - .endif -000a0d 0014 .dw USER_KEYQ -000a0e 1042 .dw XT_UDEFERFETCH -000a0f 104e .dw XT_UDEFERSTORE - - .include "words/dp.asm" - - ; System Value - ; address of the next free dictionary cell - VE_DP: -000a10 ff02 .dw $ff02 -000a11 7064 .db "dp" -000a12 0a08 .dw VE_HEAD - .set VE_HEAD = VE_DP - XT_DP: -000a13 0509 .dw PFA_DOVALUE1 - PFA_DP: -000a14 0074 .dw CFG_DP -000a15 101a .dw XT_EDEFERFETCH -000a16 1024 .dw XT_EDEFERSTORE - .include "words/ehere.asm" - - ; System Value - ; address of the next free address in eeprom - VE_EHERE: -000a17 ff05 .dw $ff05 -000a18 6865 -000a19 7265 -000a1a 0065 .db "ehere",0 -000a1b 0a10 .dw VE_HEAD - .set VE_HEAD = VE_EHERE - XT_EHERE: -000a1c 0509 .dw PFA_DOVALUE1 - PFA_EHERE: -000a1d 0078 .dw EE_EHERE -000a1e 101a .dw XT_EDEFERFETCH -000a1f 1024 .dw XT_EDEFERSTORE - .include "words/here.asm" - - ; System Value - ; address of the next free data space (RAM) cell - VE_HERE: -000a20 ff04 .dw $ff04 -000a21 6568 -000a22 6572 .db "here" -000a23 0a17 .dw VE_HEAD - .set VE_HEAD = VE_HERE - XT_HERE: -000a24 0509 .dw PFA_DOVALUE1 - PFA_HERE: -000a25 0076 .dw EE_HERE -000a26 101a .dw XT_EDEFERFETCH -000a27 1024 .dw XT_EDEFERSTORE - .include "words/allot.asm" - - ; System - ; allocate or release memory in RAM - VE_ALLOT: -000a28 ff05 .dw $ff05 -000a29 6c61 -000a2a 6f6c -000a2b 0074 .db "allot",0 -000a2c 0a20 .dw VE_HEAD - .set VE_HEAD = VE_ALLOT - XT_ALLOT: -000a2d 011b .dw DO_COLON - PFA_ALLOT: -000a2e 0a24 .dw XT_HERE -000a2f 0636 .dw XT_PLUS -000a30 0fff .dw XT_DOTO -000a31 0a25 .dw PFA_HERE -000a32 04ae .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: -000a33 ff03 .dw $ff03 -000a34 6962 -000a35 006e .db "bin",0 -000a36 0a28 .dw VE_HEAD - .set VE_HEAD = VE_BIN - XT_BIN: -000a37 011b .dw DO_COLON - PFA_BIN: - .endif -000a38 1279 .dw XT_TWO -000a39 09b5 .dw XT_BASE -000a3a 051a .dw XT_STORE -000a3b 04ae .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: -000a3c ff07 .dw $ff07 -000a3d 6564 -000a3e 6963 -000a3f 616d -000a40 006c .db "decimal",0 -000a41 0a33 .dw VE_HEAD - .set VE_HEAD = VE_DECIMAL - XT_DECIMAL: -000a42 011b .dw DO_COLON - PFA_DECIMAL: - .endif -000a43 04ce .dw XT_DOLITERAL -000a44 000a .dw 10 -000a45 09b5 .dw XT_BASE -000a46 051a .dw XT_STORE -000a47 04ae .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: -000a48 ff03 .dw $ff03 -000a49 6568 -000a4a 0078 .db "hex",0 -000a4b 0a3c .dw VE_HEAD - .set VE_HEAD = VE_HEX - XT_HEX: -000a4c 011b .dw DO_COLON - PFA_HEX: - .endif -000a4d 04ce .dw XT_DOLITERAL -000a4e 0010 .dw 16 -000a4f 09b5 .dw XT_BASE -000a50 051a .dw XT_STORE -000a51 04ae .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: -000a52 ff02 .dw $ff02 -000a53 6c62 .db "bl" -000a54 0a48 .dw VE_HEAD - .set VE_HEAD = VE_BL - XT_BL: -000a55 04dc .dw PFA_DOVARIABLE - PFA_BL: - .endif -000a56 0020 .dw 32 - - .include "words/turnkey.asm" - - ; System Value - ; Deferred action during startup/reset - VE_TURNKEY: -000a57 ff07 .dw $ff07 -000a58 7574 -000a59 6e72 -000a5a 656b -000a5b 0079 .db "turnkey",0 -000a5c 0a52 .dw VE_HEAD - .set VE_HEAD = VE_TURNKEY - XT_TURNKEY: -000a5d 1079 .dw PFA_DODEFER1 - PFA_TURNKEY: -000a5e 0080 .dw CFG_TURNKEY -000a5f 101a .dw XT_EDEFERFETCH -000a60 1024 .dw XT_EDEFERSTORE - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/slashmod.asm" - - ; Arithmetics - ; signed division n1/n2 with remainder and quotient - VE_SLASHMOD: -000a61 ff04 .dw $ff04 -000a62 6d2f -000a63 646f .db "/mod" -000a64 0a57 .dw VE_HEAD - .set VE_HEAD = VE_SLASHMOD - XT_SLASHMOD: -000a65 0a66 .dw PFA_SLASHMOD - PFA_SLASHMOD: -000a66 019c movw temp2, tosl - -000a67 9109 ld temp0, Y+ -000a68 9119 ld temp1, Y+ - -000a69 2f41 mov temp6,temp1 ;move dividend High to sign register -000a6a 2743 eor temp6,temp3 ;xor divisor High with sign register -000a6b ff17 sbrs temp1,7 ;if MSB in dividend set -000a6c c004 rjmp PFA_SLASHMOD_1 -000a6d 9510 com temp1 ; change sign of dividend -000a6e 9500 com temp0 -000a6f 5f0f subi temp0,low(-1) -000a70 4f1f sbci temp1,high(-1) - PFA_SLASHMOD_1: -000a71 ff37 sbrs temp3,7 ;if MSB in divisor set -000a72 c004 rjmp PFA_SLASHMOD_2 -000a73 9530 com temp3 ; change sign of divisor -000a74 9520 com temp2 -000a75 5f2f subi temp2,low(-1) -000a76 4f3f sbci temp3,high(-1) -000a77 24ee PFA_SLASHMOD_2: clr temp4 ;clear remainder Low byte -000a78 18ff sub temp5,temp5;clear remainder High byte and carry -000a79 e151 ldi temp7,17 ;init loop counter - -000a7a 1f00 PFA_SLASHMOD_3: rol temp0 ;shift left dividend -000a7b 1f11 rol temp1 -000a7c 955a dec temp7 ;decrement counter -000a7d f439 brne PFA_SLASHMOD_5 ;if done -000a7e ff47 sbrs temp6,7 ; if MSB in sign register set -000a7f c004 rjmp PFA_SLASHMOD_4 -000a80 9510 com temp1 ; change sign of result -000a81 9500 com temp0 -000a82 5f0f subi temp0,low(-1) -000a83 4f1f sbci temp1,high(-1) -000a84 c00b PFA_SLASHMOD_4: rjmp PFA_SLASHMODmod_done ; return -000a85 1cee PFA_SLASHMOD_5: rol temp4 ;shift dividend into remainder -000a86 1cff rol temp5 -000a87 1ae2 sub temp4,temp2 ;remainder = remainder - divisor -000a88 0af3 sbc temp5,temp3 ; -000a89 f420 brcc PFA_SLASHMOD_6 ;if result negative -000a8a 0ee2 add temp4,temp2 ; restore remainder -000a8b 1ef3 adc temp5,temp3 -000a8c 9488 clc ; clear carry to be shifted into result -000a8d cfec rjmp PFA_SLASHMOD_3 ;else -000a8e 9408 PFA_SLASHMOD_6: sec ; set carry to be shifted into result -000a8f cfea rjmp PFA_SLASHMOD_3 - - PFA_SLASHMODmod_done: - ; put remainder on stack -000a90 92fa st -Y,temp5 -000a91 92ea st -Y,temp4 - - ; put quotient on stack -000a92 01c8 movw tosl, temp0 -000a93 940c 011f jmp_ DO_NEXT - .include "words/uslashmod.asm" - - ; Arithmetics - ; unsigned division with remainder - VE_USLASHMOD: -000a95 ff05 .dw $ff05 -000a96 2f75 -000a97 6f6d -000a98 0064 .db "u/mod",0 -000a99 0a61 .dw VE_HEAD - .set VE_HEAD = VE_USLASHMOD - XT_USLASHMOD: -000a9a 011b .dw DO_COLON - PFA_USLASHMOD: -000a9b 0598 .dw XT_TO_R -000a9c 05ed .dw XT_ZERO -000a9d 058f .dw XT_R_FROM -000a9e 065b .dw XT_UMSLASHMOD -000a9f 04ae .dw XT_EXIT - .include "words/negate.asm" - - ; Logic - ; 2-complement - VE_NEGATE: -000aa0 ff06 .dw $ff06 -000aa1 656e -000aa2 6167 -000aa3 6574 .db "negate" -000aa4 0a95 .dw VE_HEAD - .set VE_HEAD = VE_NEGATE - XT_NEGATE: -000aa5 011b .dw DO_COLON - PFA_NEGATE: -000aa6 0696 .dw XT_INVERT -000aa7 06c8 .dw XT_1PLUS -000aa8 04ae .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: -000aa9 ff01 .dw $ff01 -000aaa 002f .db "/",0 -000aab 0aa0 .dw VE_HEAD - .set VE_HEAD = VE_SLASH - XT_SLASH: -000aac 011b .dw DO_COLON - PFA_SLASH: - .endif -000aad 0a65 .dw XT_SLASHMOD -000aae 0589 .dw XT_NIP -000aaf 04ae .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: -000ab0 ff03 .dw $ff03 -000ab1 6f6d -000ab2 0064 .db "mod",0 -000ab3 0aa9 .dw VE_HEAD - .set VE_HEAD = VE_MOD - XT_MOD: -000ab4 011b .dw DO_COLON - PFA_MOD: - .endif -000ab5 0a65 .dw XT_SLASHMOD -000ab6 0572 .dw XT_DROP -000ab7 04ae .dw XT_EXIT - .include "words/abs.asm" - - ; DUP ?NEGATE ; - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_ABS: -000ab8 ff03 .dw $ff03 -000ab9 6261 -000aba 0073 .db "abs",0 -000abb 0ab0 .dw VE_HEAD - .set VE_HEAD = VE_ABS - XT_ABS: -000abc 011b .dw DO_COLON - PFA_ABS: - - .endif - -000abd 054a -000abe 06d7 -000abf 04ae .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: -000ac0 ff03 .dw $ff03 -000ac1 696d -000ac2 006e .db "min",0 -000ac3 0ab8 .dw VE_HEAD - .set VE_HEAD = VE_MIN - XT_MIN: -000ac4 011b .dw DO_COLON - PFA_MIN: - .endif -000ac5 09ca .dw XT_2DUP -000ac6 0611 .dw XT_GREATER -000ac7 04c7 .dw XT_DOCONDBRANCH -000ac8 0aca DEST(PFA_MIN1) -000ac9 055d .dw XT_SWAP - PFA_MIN1: -000aca 0572 .dw XT_DROP -000acb 04ae .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: -000acc ff03 .dw $ff03 -000acd 616d -000ace 0078 .db "max",0 -000acf 0ac0 .dw VE_HEAD - .set VE_HEAD = VE_MAX - XT_MAX: -000ad0 011b .dw DO_COLON - PFA_MAX: - - .endif -000ad1 09ca .dw XT_2DUP -000ad2 0607 .dw XT_LESS -000ad3 04c7 .dw XT_DOCONDBRANCH -000ad4 0ad6 DEST(PFA_MAX1) -000ad5 055d .dw XT_SWAP - PFA_MAX1: -000ad6 0572 .dw XT_DROP -000ad7 04ae .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: -000ad8 ff06 .dw $ff06 -000ad9 6977 -000ada 6874 -000adb 6e69 .db "within" -000adc 0acc .dw VE_HEAD - .set VE_HEAD = VE_WITHIN - XT_WITHIN: -000add 011b .dw DO_COLON - PFA_WITHIN: - .endif -000ade 0568 .dw XT_OVER -000adf 062c .dw XT_MINUS -000ae0 0598 .dw XT_TO_R -000ae1 062c .dw XT_MINUS -000ae2 058f .dw XT_R_FROM -000ae3 05f5 .dw XT_ULESS -000ae4 04ae .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: -000ae5 ff07 .dw $ff07 -000ae6 6f74 -000ae7 7075 -000ae8 6570 -000ae9 0072 .db "toupper",0 -000aea 0ad8 .dw VE_HEAD - .set VE_HEAD = VE_TOUPPER - XT_TOUPPER: -000aeb 011b .dw DO_COLON - PFA_TOUPPER: - .endif -000aec 054a .dw XT_DUP -000aed 04ce .dw XT_DOLITERAL -000aee 0061 .dw 'a' -000aef 04ce .dw XT_DOLITERAL -000af0 007b .dw 'z'+1 -000af1 0add .dw XT_WITHIN -000af2 04c7 .dw XT_DOCONDBRANCH -000af3 0af7 DEST(PFA_TOUPPER0) -000af4 04ce .dw XT_DOLITERAL -000af5 00df .dw 223 ; inverse of 0x20: 0xdf -000af6 06ac .dw XT_AND - PFA_TOUPPER0: -000af7 04ae .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: -000af8 ff07 .dw $ff07 -000af9 6f74 -000afa 6f6c -000afb 6577 -000afc 0072 .db "tolower",0 -000afd 0ae5 .dw VE_HEAD - .set VE_HEAD = VE_TOLOWER - XT_TOLOWER: -000afe 011b .dw DO_COLON - PFA_TOLOWER: - .endif -000aff 054a .dw XT_DUP -000b00 04ce .dw XT_DOLITERAL -000b01 0041 .dw 'A' -000b02 04ce .dw XT_DOLITERAL -000b03 005b .dw 'Z'+1 -000b04 0add .dw XT_WITHIN -000b05 04c7 .dw XT_DOCONDBRANCH -000b06 0b0a DEST(PFA_TOLOWER0) -000b07 04ce .dw XT_DOLITERAL -000b08 0020 .dw 32 -000b09 06b5 .dw XT_OR - PFA_TOLOWER0: -000b0a 04ae .dw XT_EXIT - ;;;;;;;;;;;;;;;;;;;;;; - .include "words/hld.asm" - - ; Numeric IO - ; pointer to current write position in the Pictured Numeric Output buffer - VE_HLD: -000b0b ff03 .dw $ff03 -000b0c 6c68 -000b0d 0064 .db "hld",0 -000b0e 0af8 .dw VE_HEAD - .set VE_HEAD = VE_HLD - XT_HLD: -000b0f 04dc .dw PFA_DOVARIABLE - PFA_HLD: -000b10 0255 .dw ram_hld - - .dseg -000255 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: -000b11 ff04 .dw $ff04 -000b12 6f68 -000b13 646c .db "hold" -000b14 0b0b .dw VE_HEAD - .set VE_HEAD = VE_HOLD - XT_HOLD: -000b15 011b .dw DO_COLON - PFA_HOLD: - .endif -000b16 0b0f .dw XT_HLD -000b17 054a .dw XT_DUP -000b18 0512 .dw XT_FETCH -000b19 06ce .dw XT_1MINUS -000b1a 054a .dw XT_DUP -000b1b 0598 .dw XT_TO_R -000b1c 055d .dw XT_SWAP -000b1d 051a .dw XT_STORE -000b1e 058f .dw XT_R_FROM -000b1f 0526 .dw XT_CSTORE -000b20 04ae .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: -000b21 ff02 .dw $ff02 -000b22 233c .db "<#" -000b23 0b11 .dw VE_HEAD - .set VE_HEAD = VE_L_SHARP - XT_L_SHARP: -000b24 011b .dw DO_COLON - PFA_L_SHARP: - .endif -000b25 09e9 .dw XT_PAD -000b26 0b0f .dw XT_HLD -000b27 051a .dw XT_STORE -000b28 04ae .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: -000b29 ff01 .dw $ff01 -000b2a 0023 .db "#",0 -000b2b 0b21 .dw VE_HEAD - .set VE_HEAD = VE_SHARP - XT_SHARP: -000b2c 011b .dw DO_COLON - PFA_SHARP: - .endif -000b2d 09b5 .dw XT_BASE -000b2e 0512 .dw XT_FETCH -000b2f 0ba9 .dw XT_UDSLASHMOD -000b30 057a .dw XT_ROT -000b31 04ce .dw XT_DOLITERAL -000b32 0009 .dw 9 -000b33 0568 .dw XT_OVER -000b34 0607 .dw XT_LESS -000b35 04c7 .dw XT_DOCONDBRANCH -000b36 0b3a DEST(PFA_SHARP1) -000b37 04ce .dw XT_DOLITERAL -000b38 0007 .dw 7 -000b39 0636 .dw XT_PLUS - PFA_SHARP1: -000b3a 04ce .dw XT_DOLITERAL -000b3b 0030 .dw 48 ; ASCII 0 -000b3c 0636 .dw XT_PLUS -000b3d 0b15 .dw XT_HOLD -000b3e 04ae .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: -000b3f ff02 .dw $ff02 -000b40 7323 .db "#s" -000b41 0b29 .dw VE_HEAD - .set VE_HEAD = VE_SHARP_S - XT_SHARP_S: -000b42 011b .dw DO_COLON - PFA_SHARP_S: - .endif - NUMS1: -000b43 0b2c .dw XT_SHARP -000b44 09ca .dw XT_2DUP -000b45 06b5 .dw XT_OR -000b46 05b3 .dw XT_ZEROEQUAL -000b47 04c7 .dw XT_DOCONDBRANCH -000b48 0b43 DEST(NUMS1) ; PFA_SHARP_S -000b49 04ae .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: -000b4a ff02 .dw $ff02 -000b4b 3e23 .db "#>" -000b4c 0b3f .dw VE_HEAD - .set VE_HEAD = VE_SHARP_G - XT_SHARP_G: -000b4d 011b .dw DO_COLON - PFA_SHARP_G: - .endif -000b4e 09d3 .dw XT_2DROP -000b4f 0b0f .dw XT_HLD -000b50 0512 .dw XT_FETCH -000b51 09e9 .dw XT_PAD -000b52 0568 .dw XT_OVER -000b53 062c .dw XT_MINUS -000b54 04ae .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: -000b55 ff04 .dw $ff04 -000b56 6973 -000b57 6e67 .db "sign" -000b58 0b4a .dw VE_HEAD - .set VE_HEAD = VE_SIGN - XT_SIGN: -000b59 011b .dw DO_COLON - PFA_SIGN: - .endif -000b5a 05ba .dw XT_ZEROLESS -000b5b 04c7 .dw XT_DOCONDBRANCH -000b5c 0b60 DEST(PFA_SIGN1) -000b5d 04ce .dw XT_DOLITERAL -000b5e 002d .dw 45 ; ascii - -000b5f 0b15 .dw XT_HOLD - PFA_SIGN1: -000b60 04ae .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: -000b61 ff03 .dw $ff03 -000b62 2e64 -000b63 0072 .db "d.r",0 -000b64 0b55 .dw VE_HEAD - .set VE_HEAD = VE_DDOTR - XT_DDOTR: -000b65 011b .dw DO_COLON - PFA_DDOTR: - - .endif -000b66 0598 .dw XT_TO_R -000b67 09db .dw XT_TUCK -000b68 113a .dw XT_DABS -000b69 0b24 .dw XT_L_SHARP -000b6a 0b42 .dw XT_SHARP_S -000b6b 057a .dw XT_ROT -000b6c 0b59 .dw XT_SIGN -000b6d 0b4d .dw XT_SHARP_G -000b6e 058f .dw XT_R_FROM -000b6f 0568 .dw XT_OVER -000b70 062c .dw XT_MINUS -000b71 0c51 .dw XT_SPACES -000b72 0c61 .dw XT_TYPE -000b73 04ae .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: -000b74 ff02 .dw $ff02 -000b75 722e .db ".r" -000b76 0b61 .dw VE_HEAD - .set VE_HEAD = VE_DOTR - XT_DOTR: -000b77 011b .dw DO_COLON - PFA_DOTR: - - .endif -000b78 0598 .dw XT_TO_R -000b79 1255 .dw XT_S2D -000b7a 058f .dw XT_R_FROM -000b7b 0b65 .dw XT_DDOTR -000b7c 04ae .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: -000b7d ff02 .dw $ff02 -000b7e 2e64 .db "d." -000b7f 0b74 .dw VE_HEAD - .set VE_HEAD = VE_DDOT - XT_DDOT: -000b80 011b .dw DO_COLON - PFA_DDOT: - - .endif -000b81 05ed .dw XT_ZERO -000b82 0b65 .dw XT_DDOTR -000b83 0c48 .dw XT_SPACE -000b84 04ae .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: -000b85 ff01 .dw $ff01 -000b86 002e .db ".",0 -000b87 0b7d .dw VE_HEAD - .set VE_HEAD = VE_DOT - XT_DOT: -000b88 011b .dw DO_COLON - PFA_DOT: - .endif -000b89 1255 .dw XT_S2D -000b8a 0b80 .dw XT_DDOT -000b8b 04ae .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: -000b8c ff03 .dw $ff03 -000b8d 6475 -000b8e 002e .db "ud.",0 -000b8f 0b85 .dw VE_HEAD - .set VE_HEAD = VE_UDDOT - XT_UDDOT: -000b90 011b .dw DO_COLON - PFA_UDDOT: - .endif -000b91 05ed .dw XT_ZERO -000b92 0b99 .dw XT_UDDOTR -000b93 0c48 .dw XT_SPACE -000b94 04ae .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: -000b95 ff04 .dw $ff04 -000b96 6475 -000b97 722e .db "ud.r" -000b98 0b8c .dw VE_HEAD - .set VE_HEAD = VE_UDDOTR - XT_UDDOTR: -000b99 011b .dw DO_COLON - PFA_UDDOTR: - .endif -000b9a 0598 .dw XT_TO_R -000b9b 0b24 .dw XT_L_SHARP -000b9c 0b42 .dw XT_SHARP_S -000b9d 0b4d .dw XT_SHARP_G -000b9e 058f .dw XT_R_FROM -000b9f 0568 .dw XT_OVER -000ba0 062c .dw XT_MINUS -000ba1 0c51 .dw XT_SPACES -000ba2 0c61 .dw XT_TYPE -000ba3 04ae .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: -000ba4 ff06 .dw $ff06 -000ba5 6475 -000ba6 6d2f -000ba7 646f .db "ud/mod" -000ba8 0b95 .dw VE_HEAD - .set VE_HEAD = VE_UDSLASHMOD - XT_UDSLASHMOD: -000ba9 011b .dw DO_COLON - PFA_UDSLASHMOD: - .endif -000baa 0598 .dw XT_TO_R -000bab 05ed .dw XT_ZERO -000bac 05a1 .dw XT_R_FETCH -000bad 065b .dw XT_UMSLASHMOD -000bae 058f .dw XT_R_FROM -000baf 055d .dw XT_SWAP -000bb0 0598 .dw XT_TO_R -000bb1 065b .dw XT_UMSLASHMOD -000bb2 058f .dw XT_R_FROM -000bb3 04ae .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: -000bb4 ff06 .dw $ff06 -000bb5 6964 -000bb6 6967 -000bb7 3f74 .db "digit?" -000bb8 0ba4 .dw VE_HEAD - .set VE_HEAD = VE_DIGITQ - XT_DIGITQ: -000bb9 011b .dw DO_COLON - PFA_DIGITQ: - .endif -000bba 0aeb .dw XT_TOUPPER -000bbb 054a -000bbc 04ce -000bbd 0039 -000bbe 0611 -000bbf 04ce -000bc0 0100 .DW XT_DUP,XT_DOLITERAL,57,XT_GREATER,XT_DOLITERAL,256 -000bc1 06ac -000bc2 0636 -000bc3 054a -000bc4 04ce -000bc5 0140 -000bc6 0611 .DW XT_AND,XT_PLUS,XT_DUP,XT_DOLITERAL,320,XT_GREATER -000bc7 04ce -000bc8 0107 -000bc9 06ac -000bca 062c -000bcb 04ce -000bcc 0030 .DW XT_DOLITERAL,263,XT_AND,XT_MINUS,XT_DOLITERAL,48 -000bcd 062c -000bce 054a -000bcf 09b5 -000bd0 0512 -000bd1 05f5 .DW XT_MINUS,XT_DUP,XT_BASE,XT_FETCH,XT_ULESS -000bd2 04ae .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: -000bd3 011b .dw DO_COLON - PFA_DOSLITERAL: -000bd4 05a1 .dw XT_R_FETCH ; ( -- addr ) -000bd5 0c32 .dw XT_ICOUNT -000bd6 058f .dw XT_R_FROM -000bd7 0568 .dw XT_OVER ; ( -- addr' n addr n) -000bd8 06c8 .dw XT_1PLUS -000bd9 069d .dw XT_2SLASH ; ( -- addr' n addr k ) -000bda 0636 .dw XT_PLUS ; ( -- addr' n addr'' ) -000bdb 06c8 .dw XT_1PLUS -000bdc 0598 .dw XT_TO_R ; ( -- ) -000bdd 04ae .dw XT_EXIT - .include "words/scomma.asm" - - ; Compiler - ; compiles a string from RAM to Flash - VE_SCOMMA: -000bde ff02 .dw $ff02 -000bdf 2c73 .db "s",$2c -000be0 0bb4 .dw VE_HEAD - .set VE_HEAD = VE_SCOMMA - XT_SCOMMA: -000be1 011b .dw DO_COLON - PFA_SCOMMA: -000be2 054a .dw XT_DUP -000be3 0be5 .dw XT_DOSCOMMA -000be4 04ae .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: -000be5 011b .dw DO_COLON - PFA_DOSCOMMA: -000be6 01dc .dw XT_COMMA -000be7 054a .dw XT_DUP ; ( --addr len len) -000be8 069d .dw XT_2SLASH ; ( -- addr len len/2 -000be9 09db .dw XT_TUCK ; ( -- addr len/2 len len/2 -000bea 06a4 .dw XT_2STAR ; ( -- addr len/2 len len' -000beb 062c .dw XT_MINUS ; ( -- addr len/2 rem -000bec 0598 .dw XT_TO_R -000bed 05ed .dw XT_ZERO -000bee 029b .dw XT_QDOCHECK -000bef 04c7 .dw XT_DOCONDBRANCH -000bf0 0bf8 .dw PFA_SCOMMA2 -000bf1 0734 .dw XT_DODO - PFA_SCOMMA1: -000bf2 054a .dw XT_DUP ; ( -- addr addr ) -000bf3 0512 .dw XT_FETCH ; ( -- addr c1c2 ) -000bf4 01dc .dw XT_COMMA ; ( -- addr ) -000bf5 09c2 .dw XT_CELLPLUS ; ( -- addr+cell ) -000bf6 0762 .dw XT_DOLOOP -000bf7 0bf2 .dw PFA_SCOMMA1 - PFA_SCOMMA2: -000bf8 058f .dw XT_R_FROM -000bf9 05c1 .dw XT_GREATERZERO -000bfa 04c7 .dw XT_DOCONDBRANCH -000bfb 0bff .dw PFA_SCOMMA3 -000bfc 054a .dw XT_DUP ; well, tricky -000bfd 0531 .dw XT_CFETCH -000bfe 01dc .dw XT_COMMA - PFA_SCOMMA3: -000bff 0572 .dw XT_DROP ; ( -- ) -000c00 04ae .dw XT_EXIT - .include "words/itype.asm" - - ; Tools - ; reads string from flash and prints it - VE_ITYPE: -000c01 ff05 .dw $ff05 -000c02 7469 -000c03 7079 -000c04 0065 .db "itype",0 -000c05 0bde .dw VE_HEAD - .set VE_HEAD = VE_ITYPE - XT_ITYPE: -000c06 011b .dw DO_COLON - PFA_ITYPE: -000c07 054a .dw XT_DUP ; ( --addr len len) -000c08 069d .dw XT_2SLASH ; ( -- addr len len/2 -000c09 09db .dw XT_TUCK ; ( -- addr len/2 len len/2 -000c0a 06a4 .dw XT_2STAR ; ( -- addr len/2 len len' -000c0b 062c .dw XT_MINUS ; ( -- addr len/2 rem -000c0c 0598 .dw XT_TO_R -000c0d 05ed .dw XT_ZERO -000c0e 029b .dw XT_QDOCHECK -000c0f 04c7 .dw XT_DOCONDBRANCH -000c10 0c1a .dw PFA_ITYPE2 -000c11 0734 .dw XT_DODO - PFA_ITYPE1: -000c12 054a .dw XT_DUP ; ( -- addr addr ) -000c13 082c .dw XT_FETCHI ; ( -- addr c1c2 ) -000c14 054a .dw XT_DUP -000c15 0c27 .dw XT_LOWEMIT -000c16 0c23 .dw XT_HIEMIT -000c17 06c8 .dw XT_1PLUS ; ( -- addr+cell ) -000c18 0762 .dw XT_DOLOOP -000c19 0c12 .dw PFA_ITYPE1 - PFA_ITYPE2: -000c1a 058f .dw XT_R_FROM -000c1b 05c1 .dw XT_GREATERZERO -000c1c 04c7 .dw XT_DOCONDBRANCH -000c1d 0c21 .dw PFA_ITYPE3 -000c1e 054a .dw XT_DUP ; make sure the drop below has always something to do -000c1f 082c .dw XT_FETCHI -000c20 0c27 .dw XT_LOWEMIT - PFA_ITYPE3: -000c21 0572 .dw XT_DROP -000c22 04ae .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: -000c23 011b .dw DO_COLON - PFA_HIEMIT: -000c24 0792 .dw XT_BYTESWAP -000c25 0c27 .dw XT_LOWEMIT -000c26 04ae .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: -000c27 011b .dw DO_COLON - PFA_LOWEMIT: -000c28 04ce .dw XT_DOLITERAL -000c29 00ff .dw $00ff -000c2a 06ac .dw XT_AND -000c2b 09f3 .dw XT_EMIT -000c2c 04ae .dw XT_EXIT - .include "words/icount.asm" - - ; Tools - ; get count information out of a counted string in flash - VE_ICOUNT: -000c2d ff06 .dw $ff06 -000c2e 6369 -000c2f 756f -000c30 746e .db "icount" -000c31 0c01 .dw VE_HEAD - .set VE_HEAD = VE_ICOUNT - XT_ICOUNT: -000c32 011b .dw DO_COLON - PFA_ICOUNT: -000c33 054a .dw XT_DUP -000c34 06c8 .dw XT_1PLUS -000c35 055d .dw XT_SWAP -000c36 082c .dw XT_FETCHI -000c37 04ae .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: -000c38 ff02 .dw 0xff02 -000c39 7263 .db "cr" -000c3a 0c2d .dw VE_HEAD - .set VE_HEAD = VE_CR - XT_CR: -000c3b 011b .dw DO_COLON - PFA_CR: - .endif - -000c3c 04ce .dw XT_DOLITERAL -000c3d 000d .dw 13 -000c3e 09f3 .dw XT_EMIT -000c3f 04ce .dw XT_DOLITERAL -000c40 000a .dw 10 -000c41 09f3 .dw XT_EMIT -000c42 04ae .dw XT_EXIT - .include "words/space.asm" - - ; Character IO - ; emits a space (bl) - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_SPACE: -000c43 ff05 .dw $ff05 -000c44 7073 -000c45 6361 -000c46 0065 .db "space",0 -000c47 0c38 .dw VE_HEAD - .set VE_HEAD = VE_SPACE - XT_SPACE: -000c48 011b .dw DO_COLON - PFA_SPACE: - .endif -000c49 0a55 .dw XT_BL -000c4a 09f3 .dw XT_EMIT -000c4b 04ae .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: -000c4c ff06 .dw $ff06 -000c4d 7073 -000c4e 6361 -000c4f 7365 .db "spaces" -000c50 0c43 .dw VE_HEAD - .set VE_HEAD = VE_SPACES - XT_SPACES: -000c51 011b .dw DO_COLON - PFA_SPACES: - - .endif - ;C SPACES n -- output n spaces - ; BEGIN DUP 0> WHILE SPACE 1- REPEAT DROP ; -000c52 05ed -000c53 0ad0 .DW XT_ZERO, XT_MAX -000c54 054a -000c55 04c7 SPCS1: .DW XT_DUP,XT_DOCONDBRANCH -000c56 0c5b DEST(SPCS2) -000c57 0c48 -000c58 06ce -000c59 04bd .DW XT_SPACE,XT_1MINUS,XT_DOBRANCH -000c5a 0c54 DEST(SPCS1) -000c5b 0572 -000c5c 04ae 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: -000c5d ff04 .dw $ff04 -000c5e 7974 -000c5f 6570 .db "type" -000c60 0c4c .dw VE_HEAD - .set VE_HEAD = VE_TYPE - XT_TYPE: -000c61 011b .dw DO_COLON - PFA_TYPE: - - .endif -000c62 124c .dw XT_BOUNDS -000c63 029b .dw XT_QDOCHECK -000c64 04c7 .dw XT_DOCONDBRANCH -000c65 0c6c DEST(PFA_TYPE2) -000c66 0734 .dw XT_DODO - PFA_TYPE1: -000c67 0745 .dw XT_I -000c68 0531 .dw XT_CFETCH -000c69 09f3 .dw XT_EMIT -000c6a 0762 .dw XT_DOLOOP -000c6b 0c67 DEST(PFA_TYPE1) - PFA_TYPE2: -000c6c 04ae .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: -000c6d ff01 .dw $ff01 -000c6e 0027 .db "'",0 -000c6f 0c5d .dw VE_HEAD - .set VE_HEAD = VE_TICK - XT_TICK: -000c70 011b .dw DO_COLON - PFA_TICK: - .endif -000c71 0e1a .dw XT_PARSENAME -000c72 0f32 .dw XT_FORTHRECOGNIZER -000c73 0f3d .dw XT_RECOGNIZE - ; a word is tickable unless DT:TOKEN is DT:NULL or - ; the interpret action is a NOOP -000c74 054a .dw XT_DUP -000c75 0fb0 .dw XT_DT_NULL -000c76 126d .dw XT_EQUAL -000c77 055d .dw XT_SWAP -000c78 082c .dw XT_FETCHI -000c79 04ce .dw XT_DOLITERAL -000c7a 0fe5 .dw XT_NOOP -000c7b 126d .dw XT_EQUAL -000c7c 06b5 .dw XT_OR -000c7d 04c7 .dw XT_DOCONDBRANCH -000c7e 0c82 DEST(PFA_TICK1) -000c7f 04ce .dw XT_DOLITERAL -000c80 fff3 .dw -13 -000c81 0ca7 .dw XT_THROW - PFA_TICK1: -000c82 0572 .dw XT_DROP -000c83 04ae .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: -000c84 ff07 .dw $ff07 -000c85 6168 -000c86 646e -000c87 656c -000c88 0072 .db "handler",0 -000c89 0c6d .dw VE_HEAD - .set VE_HEAD = VE_HANDLER - XT_HANDLER: -000c8a 04ef .dw PFA_DOUSER - PFA_HANDLER: - .endif -000c8b 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: -000c8c ff05 .dw $ff05 -000c8d 6163 -000c8e 6374 -000c8f 0068 .db "catch",0 -000c90 0c84 .dw VE_HEAD - .set VE_HEAD = VE_CATCH - XT_CATCH: -000c91 011b .dw DO_COLON - PFA_CATCH: - .endif - - ; sp@ >r -000c92 0726 .dw XT_SP_FETCH -000c93 0598 .dw XT_TO_R - ; handler @ >r -000c94 0c8a .dw XT_HANDLER -000c95 0512 .dw XT_FETCH -000c96 0598 .dw XT_TO_R - ; rp@ handler ! -000c97 070f .dw XT_RP_FETCH -000c98 0c8a .dw XT_HANDLER -000c99 051a .dw XT_STORE -000c9a 04b8 .dw XT_EXECUTE - ; r> handler ! -000c9b 058f .dw XT_R_FROM -000c9c 0c8a .dw XT_HANDLER -000c9d 051a .dw XT_STORE -000c9e 058f .dw XT_R_FROM -000c9f 0572 .dw XT_DROP -000ca0 05ed .dw XT_ZERO -000ca1 04ae .dw XT_EXIT - .include "words/throw.asm" - - ; Exceptions - ; throw an exception - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_THROW: -000ca2 ff05 .dw $ff05 -000ca3 6874 -000ca4 6f72 -000ca5 0077 .db "throw",0 -000ca6 0c8c .dw VE_HEAD - .set VE_HEAD = VE_THROW - XT_THROW: -000ca7 011b .dw DO_COLON - PFA_THROW: - .endif -000ca8 054a .dw XT_DUP -000ca9 05b3 .dw XT_ZEROEQUAL -000caa 04c7 .dw XT_DOCONDBRANCH -000cab 0cae DEST(PFA_THROW1) -000cac 0572 .dw XT_DROP -000cad 04ae .dw XT_EXIT - PFA_THROW1: -000cae 0c8a .dw XT_HANDLER -000caf 0512 .dw XT_FETCH -000cb0 0719 .dw XT_RP_STORE -000cb1 058f .dw XT_R_FROM -000cb2 0c8a .dw XT_HANDLER -000cb3 051a .dw XT_STORE -000cb4 058f .dw XT_R_FROM -000cb5 055d .dw XT_SWAP -000cb6 0598 .dw XT_TO_R -000cb7 072f .dw XT_SP_STORE -000cb8 0572 .dw XT_DROP -000cb9 058f .dw XT_R_FROM -000cba 04ae .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: -000cbb ff05 .dw $ff05 -000cbc 7363 -000cbd 696b -000cbe 0070 .db "cskip",0 -000cbf 0ca2 .dw VE_HEAD - .set VE_HEAD = VE_CSKIP - XT_CSKIP: -000cc0 011b .dw DO_COLON - PFA_CSKIP: - .endif -000cc1 0598 .dw XT_TO_R ; ( -- addr1 n1 ) - PFA_CSKIP1: -000cc2 054a .dw XT_DUP ; ( -- addr' n' n' ) -000cc3 04c7 .dw XT_DOCONDBRANCH ; ( -- addr' n') -000cc4 0ccf DEST(PFA_CSKIP2) -000cc5 0568 .dw XT_OVER ; ( -- addr' n' addr' ) -000cc6 0531 .dw XT_CFETCH ; ( -- addr' n' c' ) -000cc7 05a1 .dw XT_R_FETCH ; ( -- addr' n' c' c ) -000cc8 126d .dw XT_EQUAL ; ( -- addr' n' f ) -000cc9 04c7 .dw XT_DOCONDBRANCH ; ( -- addr' n') -000cca 0ccf DEST(PFA_CSKIP2) -000ccb 1274 .dw XT_ONE -000ccc 0e0b .dw XT_SLASHSTRING -000ccd 04bd .dw XT_DOBRANCH -000cce 0cc2 DEST(PFA_CSKIP1) - PFA_CSKIP2: -000ccf 058f .dw XT_R_FROM -000cd0 0572 .dw XT_DROP ; ( -- addr2 n2) -000cd1 04ae .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: -000cd2 ff05 .dw $ff05 -000cd3 7363 -000cd4 6163 -../../common\words/cscan.asm(12): warning: .cseg .db misalignment - padding zero byte -000cd5 006e .db "cscan" -000cd6 0cbb .dw VE_HEAD - .set VE_HEAD = VE_CSCAN - XT_CSCAN: -000cd7 011b .dw DO_COLON - PFA_CSCAN: - .endif -000cd8 0598 .dw XT_TO_R -000cd9 0568 .dw XT_OVER - PFA_CSCAN1: -000cda 054a .dw XT_DUP -000cdb 0531 .dw XT_CFETCH -000cdc 05a1 .dw XT_R_FETCH -000cdd 126d .dw XT_EQUAL -000cde 05b3 .dw XT_ZEROEQUAL -000cdf 04c7 .dw XT_DOCONDBRANCH -000ce0 0cec DEST(PFA_CSCAN2) -000ce1 055d .dw XT_SWAP -000ce2 06ce .dw XT_1MINUS -000ce3 055d .dw XT_SWAP -000ce4 0568 .dw XT_OVER -000ce5 05ba .dw XT_ZEROLESS ; not negative -000ce6 05b3 .dw XT_ZEROEQUAL -000ce7 04c7 .dw XT_DOCONDBRANCH -000ce8 0cec DEST(PFA_CSCAN2) -000ce9 06c8 .dw XT_1PLUS -000cea 04bd .dw XT_DOBRANCH -000ceb 0cda DEST(PFA_CSCAN1) - PFA_CSCAN2: -000cec 0589 .dw XT_NIP -000ced 0568 .dw XT_OVER -000cee 062c .dw XT_MINUS -000cef 058f .dw XT_R_FROM -000cf0 0572 .dw XT_DROP -000cf1 04ae .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: -000cf2 ff06 .dw $ff06 -000cf3 6361 -000cf4 6563 -000cf5 7470 .db "accept" -000cf6 0cd2 .dw VE_HEAD - .set VE_HEAD = VE_ACCEPT - XT_ACCEPT: -000cf7 011b .dw DO_COLON - PFA_ACCEPT: - - .endif -000cf8 0568 -000cf9 0636 -000cfa 06ce -000cfb 0568 .DW XT_OVER,XT_PLUS,XT_1MINUS,XT_OVER -000cfc 0a04 -000cfd 054a -000cfe 0d38 -000cff 05b3 -000d00 04c7 ACC1: .DW XT_KEY,XT_DUP,XT_CRLFQ,XT_ZEROEQUAL,XT_DOCONDBRANCH -000d01 0d2a DEST(ACC5) -000d02 054a -000d03 04ce -000d04 0008 -000d05 126d -000d06 04c7 .DW XT_DUP,XT_DOLITERAL,8,XT_EQUAL,XT_DOCONDBRANCH -000d07 0d1a DEST(ACC3) -000d08 0572 -000d09 057a -000d0a 09ca -000d0b 0611 -000d0c 0598 -000d0d 057a -000d0e 057a -000d0f 058f -000d10 04c7 .DW XT_DROP,XT_ROT,XT_2DUP,XT_GREATER,XT_TO_R,XT_ROT,XT_ROT,XT_R_FROM,XT_DOCONDBRANCH -000d11 0d18 DEST(ACC6) -000d12 0d30 -000d13 06ce -000d14 0598 -000d15 0568 -000d16 058f -000d17 016e .DW XT_BS,XT_1MINUS,XT_TO_R,XT_OVER,XT_R_FROM,XT_UMAX -000d18 04bd ACC6: .DW XT_DOBRANCH -000d19 0d28 DEST(ACC4) - - - ACC3: ; check for remaining control characters, replace them with blank -000d1a 054a .dw XT_DUP ; ( -- addr k k ) -000d1b 0a55 .dw XT_BL -000d1c 0607 .dw XT_LESS -000d1d 04c7 .dw XT_DOCONDBRANCH -000d1e 0d21 DEST(PFA_ACCEPT6) -000d1f 0572 .dw XT_DROP -000d20 0a55 .dw XT_BL - PFA_ACCEPT6: -000d21 054a -000d22 09f3 -000d23 0568 -000d24 0526 -000d25 06c8 -000d26 0568 -000d27 017a .DW XT_DUP,XT_EMIT,XT_OVER,XT_CSTORE,XT_1PLUS,XT_OVER,XT_UMIN -000d28 04bd ACC4: .DW XT_DOBRANCH -000d29 0cfc DEST(ACC1) -000d2a 0572 -000d2b 0589 -000d2c 055d -000d2d 062c -000d2e 0c3b -000d2f 04ae 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: -000d30 011b .dw DO_COLON - .endif -000d31 04ce .dw XT_DOLITERAL -000d32 0008 .dw 8 -000d33 054a .dw XT_DUP -000d34 09f3 .dw XT_EMIT -000d35 0c48 .dw XT_SPACE -000d36 09f3 .dw XT_EMIT -000d37 04ae .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: -000d38 011b .dw DO_COLON - .endif -000d39 054a .dw XT_DUP -000d3a 04ce .dw XT_DOLITERAL -000d3b 000d .dw 13 -000d3c 126d .dw XT_EQUAL -000d3d 055d .dw XT_SWAP -000d3e 04ce .dw XT_DOLITERAL -000d3f 000a .dw 10 -000d40 126d .dw XT_EQUAL -000d41 06b5 .dw XT_OR -000d42 04ae .dw XT_EXIT - .include "words/refill.asm" - - ; System - ; refills the input buffer - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_REFILL: -000d43 ff06 .dw $ff06 -000d44 6572 -000d45 6966 -000d46 6c6c .db "refill" -000d47 0cf2 .dw VE_HEAD - .set VE_HEAD = VE_REFILL - XT_REFILL: -000d48 1079 .dw PFA_DODEFER1 - PFA_REFILL: - .endif -000d49 001a .dw USER_REFILL -000d4a 1042 .dw XT_UDEFERFETCH -000d4b 104e .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: -000d4c ff04 .dw $ff04 -000d4d 6863 -000d4e 7261 .db "char" -000d4f 0d43 .dw VE_HEAD - .set VE_HEAD = VE_CHAR - XT_CHAR: -000d50 011b .dw DO_COLON - PFA_CHAR: - .endif -000d51 0e1a .dw XT_PARSENAME -000d52 0572 .dw XT_DROP -000d53 0531 .dw XT_CFETCH -000d54 04ae .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: -000d55 ff06 .dw $ff06 -000d56 756e -000d57 626d -000d58 7265 .db "number" -000d59 0d4c .dw VE_HEAD - .set VE_HEAD = VE_NUMBER - XT_NUMBER: -000d5a 011b .dw DO_COLON - PFA_NUMBER: - .endif -000d5b 09b5 .dw XT_BASE -000d5c 0512 .dw XT_FETCH -000d5d 0598 .dw XT_TO_R -000d5e 0d9e .dw XT_QSIGN -000d5f 0598 .dw XT_TO_R -000d60 0db1 .dw XT_SET_BASE -000d61 0d9e .dw XT_QSIGN -000d62 058f .dw XT_R_FROM -000d63 06b5 .dw XT_OR -000d64 0598 .dw XT_TO_R - ; check whether something is left -000d65 054a .dw XT_DUP -000d66 05b3 .dw XT_ZEROEQUAL -000d67 04c7 .dw XT_DOCONDBRANCH -000d68 0d71 DEST(PFA_NUMBER0) - ; nothing is left. It cannot be a number at all -000d69 09d3 .dw XT_2DROP -000d6a 058f .dw XT_R_FROM -000d6b 0572 .dw XT_DROP -000d6c 058f .dw XT_R_FROM -000d6d 09b5 .dw XT_BASE -000d6e 051a .dw XT_STORE -000d6f 05ed .dw XT_ZERO -000d70 04ae .dw XT_EXIT - PFA_NUMBER0: -000d71 07b8 .dw XT_2TO_R -000d72 05ed .dw XT_ZERO ; starting value -000d73 05ed .dw XT_ZERO -000d74 07c7 .dw XT_2R_FROM -000d75 0dcf .dw XT_TO_NUMBER ; ( 0. addr len -- d addr' len' - ; check length of the remaining string. - ; if zero: a single cell number is entered -000d76 0552 .dw XT_QDUP -000d77 04c7 .dw XT_DOCONDBRANCH -000d78 0d93 DEST(PFA_NUMBER1) - ; if equal 1: mayba a trailing dot? --> double cell number -000d79 1274 .dw XT_ONE -000d7a 126d .dw XT_EQUAL -000d7b 04c7 .dw XT_DOCONDBRANCH -000d7c 0d8a DEST(PFA_NUMBER2) - ; excatly one character is left -000d7d 0531 .dw XT_CFETCH -000d7e 04ce .dw XT_DOLITERAL -000d7f 002e .dw 46 ; . -000d80 126d .dw XT_EQUAL -000d81 04c7 .dw XT_DOCONDBRANCH -000d82 0d8b DEST(PFA_NUMBER6) - ; its a double cell number - ; incorporate sign into number -000d83 058f .dw XT_R_FROM -000d84 04c7 .dw XT_DOCONDBRANCH -000d85 0d87 DEST(PFA_NUMBER3) -000d86 1147 .dw XT_DNEGATE - PFA_NUMBER3: -000d87 1279 .dw XT_TWO -000d88 04bd .dw XT_DOBRANCH -000d89 0d99 DEST(PFA_NUMBER5) - PFA_NUMBER2: -000d8a 0572 .dw XT_DROP - PFA_NUMBER6: -000d8b 09d3 .dw XT_2DROP -000d8c 058f .dw XT_R_FROM -000d8d 0572 .dw XT_DROP -000d8e 058f .dw XT_R_FROM -000d8f 09b5 .dw XT_BASE -000d90 051a .dw XT_STORE -000d91 05ed .dw XT_ZERO -000d92 04ae .dw XT_EXIT - PFA_NUMBER1: -000d93 09d3 .dw XT_2DROP ; remove the address - ; incorporate sign into number -000d94 058f .dw XT_R_FROM -000d95 04c7 .dw XT_DOCONDBRANCH -000d96 0d98 DEST(PFA_NUMBER4) -000d97 0aa5 .dw XT_NEGATE - PFA_NUMBER4: -000d98 1274 .dw XT_ONE - PFA_NUMBER5: -000d99 058f .dw XT_R_FROM -000d9a 09b5 .dw XT_BASE -000d9b 051a .dw XT_STORE -000d9c 05e4 .dw XT_TRUE -000d9d 04ae .dw XT_EXIT - .include "words/q-sign.asm" - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_QSIGN: -000d9e 011b .dw DO_COLON - PFA_QSIGN: ; ( c -- ) - .endif -000d9f 0568 .dw XT_OVER ; ( -- addr len addr ) -000da0 0531 .dw XT_CFETCH -000da1 04ce .dw XT_DOLITERAL -000da2 002d .dw '-' -000da3 126d .dw XT_EQUAL ; ( -- addr len flag ) -000da4 054a .dw XT_DUP -000da5 0598 .dw XT_TO_R -000da6 04c7 .dw XT_DOCONDBRANCH -000da7 0daa DEST(PFA_NUMBERSIGN_DONE) -000da8 1274 .dw XT_ONE ; skip sign character -000da9 0e0b .dw XT_SLASHSTRING - PFA_NUMBERSIGN_DONE: -000daa 058f .dw XT_R_FROM -000dab 04ae .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: -000dac 04e9 .dw PFA_DOCONSTANT - .endif -000dad 000a -000dae 0010 -000daf 0002 -000db0 000a .dw 10,16,2,10 ; last one could a 8 instead. - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_SET_BASE: -000db1 011b .dw DO_COLON - PFA_SET_BASE: ; ( adr1 len1 -- adr2 len2 ) - .endif -000db2 0568 .dw XT_OVER -000db3 0531 .dw XT_CFETCH -000db4 04ce .dw XT_DOLITERAL -000db5 0023 .dw 35 -000db6 062c .dw XT_MINUS -000db7 054a .dw XT_DUP -000db8 05ed .dw XT_ZERO -000db9 04ce .dw XT_DOLITERAL -000dba 0004 .dw 4 -000dbb 0add .dw XT_WITHIN -000dbc 04c7 .dw XT_DOCONDBRANCH -000dbd 0dc7 DEST(SET_BASE1) - .if cpu_msp430==1 - .endif -000dbe 0dac .dw XT_BASES -000dbf 0636 .dw XT_PLUS -000dc0 082c .dw XT_FETCHI -000dc1 09b5 .dw XT_BASE -000dc2 051a .dw XT_STORE -000dc3 1274 .dw XT_ONE -000dc4 0e0b .dw XT_SLASHSTRING -000dc5 04bd .dw XT_DOBRANCH -000dc6 0dc8 DEST(SET_BASE2) - SET_BASE1: -000dc7 0572 .dw XT_DROP - SET_BASE2: -000dc8 04ae .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: -000dc9 ff07 .dw $ff07 -000dca 6e3e -000dcb 6d75 -000dcc 6562 -000dcd 0072 .db ">number",0 -000dce 0d55 .dw VE_HEAD - .set VE_HEAD = VE_TO_NUMBER - XT_TO_NUMBER: -000dcf 011b .dw DO_COLON - - .endif - -000dd0 054a -000dd1 04c7 TONUM1: .DW XT_DUP,XT_DOCONDBRANCH -000dd2 0de7 DEST(TONUM3) -000dd3 0568 -000dd4 0531 -000dd5 0bb9 .DW XT_OVER,XT_CFETCH,XT_DIGITQ -000dd6 05b3 -000dd7 04c7 .DW XT_ZEROEQUAL,XT_DOCONDBRANCH -000dd8 0ddb DEST(TONUM2) -000dd9 0572 -000dda 04ae .DW XT_DROP,XT_EXIT -000ddb 0598 -000ddc 116b -000ddd 09b5 -000dde 0512 -000ddf 015f TONUM2: .DW XT_TO_R,XT_2SWAP,XT_BASE,XT_FETCH,XT_UDSTAR -000de0 058f -000de1 0157 -000de2 116b .DW XT_R_FROM,XT_MPLUS,XT_2SWAP -000de3 1274 -000de4 0e0b -000de5 04bd .DW XT_ONE,XT_SLASHSTRING,XT_DOBRANCH -000de6 0dd0 DEST(TONUM1) -000de7 04ae 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: -000de8 ff05 .dw $ff05 -000de9 6170 -000dea 7372 -000deb 0065 .db "parse",0 -000dec 0dc9 .dw VE_HEAD - .set VE_HEAD = VE_PARSE - XT_PARSE: -000ded 011b .dw DO_COLON - PFA_PARSE: - .endif -000dee 0598 .dw XT_TO_R ; ( -- ) -000def 0e01 .dw XT_SOURCE ; ( -- addr len) -000df0 09e3 .dw XT_TO_IN ; ( -- addr len >in) -000df1 0512 .dw XT_FETCH -000df2 0e0b .dw XT_SLASHSTRING ; ( -- addr' len' ) - -000df3 058f .dw XT_R_FROM ; ( -- addr' len' c) -000df4 0cd7 .dw XT_CSCAN ; ( -- addr' len'') -000df5 054a .dw XT_DUP ; ( -- addr' len'' len'') -000df6 06c8 .dw XT_1PLUS -000df7 09e3 .dw XT_TO_IN ; ( -- addr' len'' len'' >in) -000df8 06fe .dw XT_PLUSSTORE ; ( -- addr' len') -000df9 1274 .dw XT_ONE -000dfa 0e0b .dw XT_SLASHSTRING -000dfb 04ae .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: -000dfc ff06 .dw $FF06 -000dfd 6f73 -000dfe 7275 -000dff 6563 .db "source" -000e00 0de8 .dw VE_HEAD - .set VE_HEAD = VE_SOURCE - XT_SOURCE: -000e01 1079 .dw PFA_DODEFER1 - PFA_SOURCE: - .endif -000e02 0016 .dw USER_SOURCE -000e03 1042 .dw XT_UDEFERFETCH -000e04 104e .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: -000e05 ff07 .dw $ff07 -000e06 732f -000e07 7274 -000e08 6e69 -000e09 0067 .db "/string",0 -000e0a 0dfc .dw VE_HEAD - .set VE_HEAD = VE_SLASHSTRING - XT_SLASHSTRING: -000e0b 011b .dw DO_COLON - PFA_SLASHSTRING: - .endif -000e0c 057a .dw XT_ROT -000e0d 0568 .dw XT_OVER -000e0e 0636 .dw XT_PLUS -000e0f 057a .dw XT_ROT -000e10 057a .dw XT_ROT -000e11 062c .dw XT_MINUS -000e12 04ae .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: -000e13 ff0a .dw $FF0A -000e14 6170 -000e15 7372 -000e16 2d65 -000e17 616e -000e18 656d .db "parse-name" -000e19 0e05 .dw VE_HEAD - .set VE_HEAD = VE_PARSENAME - XT_PARSENAME: -000e1a 011b .dw DO_COLON - PFA_PARSENAME: - .endif -000e1b 0a55 .dw XT_BL -000e1c 0e1e .dw XT_SKIPSCANCHAR -000e1d 04ae .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: -000e1e 011b .dw DO_COLON - PFA_SKIPSCANCHAR: - .endif -000e1f 0598 .dw XT_TO_R -000e20 0e01 .dw XT_SOURCE -000e21 09e3 .dw XT_TO_IN -000e22 0512 .dw XT_FETCH -000e23 0e0b .dw XT_SLASHSTRING - -000e24 05a1 .dw XT_R_FETCH -000e25 0cc0 .dw XT_CSKIP -000e26 058f .dw XT_R_FROM -000e27 0cd7 .dw XT_CSCAN - - ; adjust >IN -000e28 09ca .dw XT_2DUP -000e29 0636 .dw XT_PLUS -000e2a 0e01 .dw XT_SOURCE -000e2b 0572 .dw XT_DROP -000e2c 062c .dw XT_MINUS -000e2d 09e3 .dw XT_TO_IN -000e2e 051a .dw XT_STORE -000e2f 04ae .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: -000e30 ff07 .dw $ff07 -000e31 6966 -000e32 646e -000e33 782d -000e34 0074 .db "find-xt",0 -000e35 0e13 .dw VE_HEAD - .set VE_HEAD = VE_FINDXT - XT_FINDXT: -000e36 011b .dw DO_COLON - PFA_FINDXT: - .endif -000e37 04ce .dw XT_DOLITERAL -000e38 0e42 .dw XT_FINDXTA -000e39 04ce .dw XT_DOLITERAL -000e3a 0088 .dw CFG_ORDERLISTLEN -000e3b 041c .dw XT_MAPSTACK -000e3c 05b3 .dw XT_ZEROEQUAL -000e3d 04c7 .dw XT_DOCONDBRANCH -000e3e 0e41 DEST(PFA_FINDXT1) -000e3f 09d3 .dw XT_2DROP -000e40 05ed .dw XT_ZERO - PFA_FINDXT1: -000e41 04ae .dw XT_EXIT - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - - XT_FINDXTA: -000e42 011b .dw DO_COLON - PFA_FINDXTA: - .endif -000e43 0598 .dw XT_TO_R -000e44 09ca .dw XT_2DUP -000e45 058f .dw XT_R_FROM -000e46 108b .dw XT_SEARCH_WORDLIST -000e47 054a .dw XT_DUP -000e48 04c7 .dw XT_DOCONDBRANCH -000e49 0e4f DEST(PFA_FINDXTA1) -000e4a 0598 .dw XT_TO_R -000e4b 0589 .dw XT_NIP -000e4c 0589 .dw XT_NIP -000e4d 058f .dw XT_R_FROM -000e4e 05e4 .dw XT_TRUE - PFA_FINDXTA1: -000e4f 04ae .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: -000e50 011b .dw DO_COLON - PFA_DEFAULT_PROMPTOK: -000e51 0bd3 .dw XT_DOSLITERAL -000e52 0003 .dw 3 -000e53 6f20 -000e54 006b .db " ok",0 - .endif -000e55 0c06 .dw XT_ITYPE -000e56 04ae .dw XT_EXIT - - ; ------------------------ - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_PROMPTOK: -000e57 ff03 .dw $FF03 -000e58 6f2e -../../common\words/prompt-ok.asm(43): warning: .cseg .db misalignment - padding zero byte -000e59 006b .db ".ok" -000e5a 0e30 .dw VE_HEAD - .set VE_HEAD = VE_PROMPTOK - XT_PROMPTOK: -000e5b 1079 .dw PFA_DODEFER1 - PFA_PROMPTOK: - .endif -000e5c 001c .dw USER_P_OK -000e5d 1042 .dw XT_UDEFERFETCH -000e5e 104e .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: -000e5f 011b .dw DO_COLON - PFA_DEFAULT_PROMPTREADY: -000e60 0bd3 .dw XT_DOSLITERAL -000e61 0002 .dw 2 -000e62 203e .db "> " - .endif -000e63 0c3b .dw XT_CR -000e64 0c06 .dw XT_ITYPE -000e65 04ae .dw XT_EXIT - - ; ------------------------ - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_PROMPTREADY: -000e66 ff06 .dw $FF06 -000e67 722e -000e68 6165 -000e69 7964 .db ".ready" -000e6a 0e57 .dw VE_HEAD - .set VE_HEAD = VE_PROMPTREADY - XT_PROMPTREADY: -000e6b 1079 .dw PFA_DODEFER1 - PFA_PROMPTREADY: - .endif -000e6c 0020 .dw USER_P_RDY -000e6d 1042 .dw XT_UDEFERFETCH -000e6e 104e .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: -000e6f 011b .dw DO_COLON - PFA_DEFAULT_PROMPTERROR: -000e70 0bd3 .dw XT_DOSLITERAL -000e71 0004 .dw 4 -000e72 3f20 -000e73 203f .db " ?? " - .endif -000e74 0c06 .dw XT_ITYPE -000e75 09b5 .dw XT_BASE -000e76 0512 .dw XT_FETCH -000e77 0598 .dw XT_TO_R -000e78 0a42 .dw XT_DECIMAL -000e79 0b88 .dw XT_DOT -000e7a 09e3 .dw XT_TO_IN -000e7b 0512 .dw XT_FETCH -000e7c 0b88 .dw XT_DOT -000e7d 058f .dw XT_R_FROM -000e7e 09b5 .dw XT_BASE -000e7f 051a .dw XT_STORE -000e80 04ae .dw XT_EXIT - - ; ------------------------ - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_PROMPTERROR: -000e81 ff06 .dw $FF06 -000e82 652e -000e83 7272 -000e84 726f .db ".error" -000e85 0e66 .dw VE_HEAD - .set VE_HEAD = VE_PROMPTERROR - XT_PROMPTERROR: -000e86 1079 .dw PFA_DODEFER1 - PFA_PROMPTERROR: - .endif -000e87 001e .dw USER_P_ERR -000e88 1042 .dw XT_UDEFERFETCH -000e89 104e .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: -000e8a ff04 .dw $ff04 -000e8b 7571 -000e8c 7469 .db "quit" -000e8d 0e81 .dw VE_HEAD - .set VE_HEAD = VE_QUIT - XT_QUIT: -000e8e 011b .dw DO_COLON - .endif - PFA_QUIT: -000e8f 02d1 -000e90 02d8 -000e91 051a .dw XT_LP0,XT_LP,XT_STORE -000e92 0eef .dw XT_SP0 -000e93 072f .dw XT_SP_STORE -000e94 0efc .dw XT_RP0 -000e95 0719 .dw XT_RP_STORE -000e96 0366 .dw XT_LBRACKET - - PFA_QUIT2: -000e97 09af .dw XT_STATE -000e98 0512 .dw XT_FETCH -000e99 05b3 .dw XT_ZEROEQUAL -000e9a 04c7 .dw XT_DOCONDBRANCH -000e9b 0e9d DEST(PFA_QUIT4) -000e9c 0e6b .dw XT_PROMPTREADY - PFA_QUIT4: -000e9d 0d48 .dw XT_REFILL -000e9e 04c7 .dw XT_DOCONDBRANCH -000e9f 0eaf DEST(PFA_QUIT3) -000ea0 04ce .dw XT_DOLITERAL -000ea1 0f15 .dw XT_INTERPRET -000ea2 0c91 .dw XT_CATCH -000ea3 0552 .dw XT_QDUP -000ea4 04c7 .dw XT_DOCONDBRANCH -000ea5 0eaf DEST(PFA_QUIT3) -000ea6 054a .dw XT_DUP -000ea7 04ce .dw XT_DOLITERAL -000ea8 fffe .dw -2 -000ea9 0607 .dw XT_LESS -000eaa 04c7 .dw XT_DOCONDBRANCH -000eab 0ead DEST(PFA_QUIT5) -000eac 0e86 .dw XT_PROMPTERROR - PFA_QUIT5: -000ead 04bd .dw XT_DOBRANCH -000eae 0e8f DEST(PFA_QUIT) - PFA_QUIT3: -000eaf 0e5b .dw XT_PROMPTOK -000eb0 04bd .dw XT_DOBRANCH -000eb1 0e97 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: -000eb2 ff05 .dw $ff05 -000eb3 6170 -000eb4 7375 -000eb5 0065 .db "pause",0 -000eb6 0e8a .dw VE_HEAD - .set VE_HEAD = VE_PAUSE - XT_PAUSE: -000eb7 1079 .dw PFA_DODEFER1 - PFA_PAUSE: -000eb8 0257 .dw ram_pause -000eb9 102e .dw XT_RDEFERFETCH -000eba 1038 .dw XT_RDEFERSTORE - - .dseg -000257 ram_pause: .byte 2 - .cseg - .include "words/cold.asm" - - ; System - ; start up amforth. - VE_COLD: -000ebb ff04 .dw $ff04 -000ebc 6f63 -000ebd 646c .db "cold" -000ebe 0eb2 .dw VE_HEAD - .set VE_HEAD = VE_COLD - XT_COLD: -000ebf 0ec0 .dw PFA_COLD - PFA_COLD: -000ec0 b6a4 in_ mcu_boot, MCUSR -000ec1 2422 clr zerol -000ec2 2433 clr zeroh -000ec3 24bb clr isrflag -000ec4 be24 out_ MCUSR, zerol - ; clear RAM -000ec5 e0e0 ldi zl, low(ramstart) -000ec6 e0f2 ldi zh, high(ramstart) - clearloop: -000ec7 9221 st Z+, zerol -000ec8 30e0 cpi zl, low(sram_size+ramstart) -000ec9 f7e9 brne clearloop -000eca 32f2 cpi zh, high(sram_size+ramstart) -000ecb f7d9 brne clearloop - ; init first user data area - ; allocate space for User Area - .dseg -000259 ram_user1: .byte SYSUSERSIZE + APPUSERSIZE - .cseg -000ecc e5e9 ldi zl, low(ram_user1) -000ecd e0f2 ldi zh, high(ram_user1) -000ece 012f movw upl, zl - ; init return stack pointer -000ecf ef0f ldi temp0,low(rstackstart) -000ed0 bf0d out_ SPL,temp0 -000ed1 8304 std Z+4, temp0 -000ed2 e211 ldi temp1,high(rstackstart) -000ed3 bf1e out_ SPH,temp1 -000ed4 8315 std Z+5, temp1 - - ; init parameter stack pointer -000ed5 eacf ldi yl,low(stackstart) -000ed6 83c6 std Z+6, yl -000ed7 e2d1 ldi yh,high(stackstart) -000ed8 83d7 std Z+7, yh - - ; load Forth IP with starting word -000ed9 eea2 ldi XL, low(PFA_WARM) -000eda e0be ldi XH, high(PFA_WARM) - ; its a far jump... -000edb 940c 011f 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: -000edd ff04 .dw $ff04 -000ede 6177 -000edf 6d72 .db "warm" -000ee0 0ebb .dw VE_HEAD - .set VE_HEAD = VE_WARM - XT_WARM: -000ee1 011b .dw DO_COLON - PFA_WARM: - .endif -000ee2 11b6 .dw XT_INIT_RAM -000ee3 04ce .dw XT_DOLITERAL -000ee4 0fe5 .dw XT_NOOP -000ee5 04ce .dw XT_DOLITERAL -000ee6 0eb7 .dw XT_PAUSE -000ee7 1059 .dw XT_DEFERSTORE -000ee8 0366 .dw XT_LBRACKET -000ee9 0a5d .dw XT_TURNKEY -000eea 0e8e .dw XT_QUIT ; never returns - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/sp0.asm" - - ; Stack - ; start address of the data stack - VE_SP0: -000eeb ff03 .dw $ff03 -000eec 7073 -000eed 0030 .db "sp0",0 -000eee 0edd .dw VE_HEAD - .set VE_HEAD = VE_SP0 - XT_SP0: -000eef 0509 .dw PFA_DOVALUE1 - PFA_SP0: -000ef0 0006 .dw USER_SP0 -000ef1 1042 .dw XT_UDEFERFETCH -000ef2 104e .dw XT_UDEFERSTORE - - ; ( -- addr) - ; Stack - ; address of user variable to store top-of-stack for inactive tasks - VE_SP: -000ef3 ff02 .dw $ff02 -000ef4 7073 .db "sp" -000ef5 0eeb .dw VE_HEAD - .set VE_HEAD = VE_SP - XT_SP: -000ef6 04ef .dw PFA_DOUSER - PFA_SP: -000ef7 0008 .dw USER_SP - .include "words/rp0.asm" - - ; Stack - ; start address of return stack - VE_RP0: -000ef8 ff03 .dw $ff03 -000ef9 7072 -000efa 0030 .db "rp0",0 -000efb 0ef3 .dw VE_HEAD - .set VE_HEAD = VE_RP0 - XT_RP0: -000efc 011b .dw DO_COLON - PFA_RP0: -000efd 0f00 .dw XT_DORP0 -000efe 0512 .dw XT_FETCH -000eff 04ae .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: -000f00 04ef .dw PFA_DOUSER - PFA_DORP0: -000f01 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: -000f02 ff05 .dw $ff05 -000f03 6564 -000f04 7470 -000f05 0068 .db "depth",0 -000f06 0ef8 .dw VE_HEAD - .set VE_HEAD = VE_DEPTH - XT_DEPTH: -000f07 011b .dw DO_COLON - PFA_DEPTH: - .endif -000f08 0eef .dw XT_SP0 -000f09 0726 .dw XT_SP_FETCH -000f0a 062c .dw XT_MINUS -000f0b 069d .dw XT_2SLASH -000f0c 06ce .dw XT_1MINUS -000f0d 04ae .dw XT_EXIT - .include "words/interpret.asm" - - ; System - ; Interpret SOURCE word by word. - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_INTERPRET: -000f0e ff09 .dw $ff09 -000f0f 6e69 -000f10 6574 -000f11 7072 -000f12 6572 -000f13 0074 .db "interpret",0 -000f14 0f02 .dw VE_HEAD - .set VE_HEAD = VE_INTERPRET - XT_INTERPRET: -000f15 011b .dw DO_COLON - .endif - PFA_INTERPRET: -000f16 0e1a .dw XT_PARSENAME ; ( -- addr len ) -000f17 054a .dw XT_DUP ; ( -- addr len flag) -000f18 04c7 .dw XT_DOCONDBRANCH -000f19 0f26 DEST(PFA_INTERPRET2) -000f1a 0f32 .dw XT_FORTHRECOGNIZER -000f1b 0f3d .dw XT_RECOGNIZE -000f1c 09af .dw XT_STATE -000f1d 0512 .dw XT_FETCH -000f1e 04c7 .dw XT_DOCONDBRANCH -000f1f 0f21 DEST(PFA_INTERPRET1) -000f20 1011 .dw XT_ICELLPLUS ; we need the compile action - PFA_INTERPRET1: -000f21 082c .dw XT_FETCHI -000f22 04b8 .dw XT_EXECUTE -000f23 0fbd .dw XT_QSTACK -000f24 04bd .dw XT_DOBRANCH -000f25 0f16 DEST(PFA_INTERPRET) - PFA_INTERPRET2: -000f26 09d3 .dw XT_2DROP -000f27 04ae .dw XT_EXIT - .include "words/forth-recognizer.asm" - - ; System Value - ; address of the next free data space (RAM) cell - VE_FORTHRECOGNIZER: -000f28 ff10 .dw $ff10 -000f29 6f66 -000f2a 7472 -000f2b 2d68 -000f2c 6572 -000f2d 6f63 -000f2e 6e67 -000f2f 7a69 -000f30 7265 .db "forth-recognizer" -000f31 0f0e .dw VE_HEAD - .set VE_HEAD = VE_FORTHRECOGNIZER - XT_FORTHRECOGNIZER: -000f32 0509 .dw PFA_DOVALUE1 - PFA_FORTHRECOGNIZER: -000f33 007c .dw CFG_FORTHRECOGNIZER -000f34 101a .dw XT_EDEFERFETCH -000f35 1024 .dw XT_EDEFERSTORE - .include "words/recognize.asm" - - ; System - ; walk the recognizer stack - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_RECOGNIZE: -000f36 ff09 .dw $ff09 -000f37 6572 -000f38 6f63 -000f39 6e67 -000f3a 7a69 -000f3b 0065 .db "recognize",0 -000f3c 0f28 .dw VE_HEAD - .set VE_HEAD = VE_RECOGNIZE - XT_RECOGNIZE: -000f3d 011b .dw DO_COLON - PFA_RECOGNIZE: - .endif -000f3e 04ce .dw XT_DOLITERAL -000f3f 0f48 .dw XT_RECOGNIZE_A -000f40 055d .dw XT_SWAP -000f41 041c .dw XT_MAPSTACK -000f42 05b3 .dw XT_ZEROEQUAL -000f43 04c7 .dw XT_DOCONDBRANCH -000f44 0f47 DEST(PFA_RECOGNIZE1) -000f45 09d3 .dw XT_2DROP -000f46 0fb0 .dw XT_DT_NULL - PFA_RECOGNIZE1: -000f47 04ae .dw XT_EXIT - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - ; ( addr len XT -- addr len [ dt:xt -1 | 0 ] ) - XT_RECOGNIZE_A: -000f48 011b .dw DO_COLON - PFA_RECOGNIZE_A: - .endif -000f49 057a .dw XT_ROT ; -- len xt addr -000f4a 057a .dw XT_ROT ; -- xt addr len -000f4b 09ca .dw XT_2DUP -000f4c 07b8 .dw XT_2TO_R -000f4d 057a .dw XT_ROT ; -- addr len xt -000f4e 04b8 .dw XT_EXECUTE ; -- i*x dt:* | dt:null -000f4f 07c7 .dw XT_2R_FROM -000f50 057a .dw XT_ROT -000f51 054a .dw XT_DUP -000f52 0fb0 .dw XT_DT_NULL -000f53 126d .dw XT_EQUAL -000f54 04c7 .dw XT_DOCONDBRANCH -000f55 0f59 DEST(PFA_RECOGNIZE_A1) -000f56 0572 .dw XT_DROP -000f57 05ed .dw XT_ZERO -000f58 04ae .dw XT_EXIT - PFA_RECOGNIZE_A1: -000f59 0589 .dw XT_NIP -000f5a 0589 .dw XT_NIP -000f5b 05e4 .dw XT_TRUE -000f5c 04ae .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: -000f5d ff06 .dw $ff06 -000f5e 7464 -000f5f 6e3a -000f60 6d75 .db "dt:num" -000f61 0f36 .dw VE_HEAD - .set VE_HEAD = VE_DT_NUM - XT_DT_NUM: -000f62 04e9 .dw PFA_DOCONSTANT - PFA_DT_NUM: - .endif -000f63 0fe5 .dw XT_NOOP ; interpret -000f64 01f2 .dw XT_LITERAL ; compile -000f65 01f2 .dw XT_LITERAL ; postpone - - ; ( -- addr ) - ; Interpreter - ; Method table for double cell integers - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_DT_DNUM: -000f66 ff07 .dw $ff07 -000f67 7464 -000f68 643a -000f69 756e -000f6a 006d .db "dt:dnum",0 -000f6b 0f5d .dw VE_HEAD - .set VE_HEAD = VE_DT_DNUM - XT_DT_DNUM: -000f6c 04e9 .dw PFA_DOCONSTANT - PFA_DT_DNUM: - .endif -000f6d 0fe5 .dw XT_NOOP ; interpret -000f6e 1265 .dw XT_2LITERAL ; compile -000f6f 1265 .dw XT_2LITERAL ; postpone - - ; ( addr len -- f ) - ; Interpreter - ; recognizer for integer numbers - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - - VE_REC_NUM: -000f70 ff07 .dw $ff07 -000f71 6572 -000f72 3a63 -000f73 756e -000f74 006d .db "rec:num",0 -000f75 0f66 .dw VE_HEAD - .set VE_HEAD = VE_REC_NUM - XT_REC_NUM: -000f76 011b .dw DO_COLON - PFA_REC_NUM: - .endif - ; try converting to a number -000f77 0d5a .dw XT_NUMBER -000f78 04c7 .dw XT_DOCONDBRANCH -000f79 0f82 DEST(PFA_REC_NONUMBER) -000f7a 1274 .dw XT_ONE -000f7b 126d .dw XT_EQUAL -000f7c 04c7 .dw XT_DOCONDBRANCH -000f7d 0f80 DEST(PFA_REC_INTNUM2) -000f7e 0f62 .dw XT_DT_NUM -000f7f 04ae .dw XT_EXIT - PFA_REC_INTNUM2: -000f80 0f6c .dw XT_DT_DNUM -000f81 04ae .dw XT_EXIT - PFA_REC_NONUMBER: -000f82 0fb0 .dw XT_DT_NULL -000f83 04ae .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: -000f84 ff08 .dw $ff08 -000f85 6572 -000f86 3a63 -000f87 6966 -000f88 646e .db "rec:find" -000f89 0f70 .dw VE_HEAD - .set VE_HEAD = VE_REC_FIND - XT_REC_FIND: -000f8a 011b .dw DO_COLON - PFA_REC_FIND: - .endif -000f8b 0e36 .DW XT_FINDXT -000f8c 054a .dw XT_DUP -000f8d 05b3 .dw XT_ZEROEQUAL -000f8e 04c7 .dw XT_DOCONDBRANCH -000f8f 0f93 DEST(PFA_REC_WORD_FOUND) -000f90 0572 .dw XT_DROP -000f91 0fb0 .dw XT_DT_NULL -000f92 04ae .dw XT_EXIT - PFA_REC_WORD_FOUND: -000f93 0f9a .dw XT_DT_XT - -000f94 04ae .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: -000f95 ff05 .dw $ff05 -000f96 7464 -000f97 783a -000f98 0074 .db "dt:xt",0 -000f99 0f84 .dw VE_HEAD - .set VE_HEAD = VE_DT_XT - XT_DT_XT: -000f9a 04e9 .dw PFA_DOCONSTANT - PFA_DT_XT: - .endif -000f9b 0f9e .dw XT_R_WORD_INTERPRET -000f9c 0fa2 .dw XT_R_WORD_COMPILE -000f9d 1265 .dw XT_2LITERAL - - ; ( XT flags -- ) - ; Interpreter - ; interpret method for WORD recognizer - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_R_WORD_INTERPRET: -000f9e 011b .dw DO_COLON - PFA_R_WORD_INTERPRET: - .endif -000f9f 0572 .dw XT_DROP ; the flags are in the way -000fa0 04b8 .dw XT_EXECUTE -000fa1 04ae .dw XT_EXIT - - ; ( XT flags -- ) - ; Interpreter - ; Compile method for WORD recognizer - .if cpu_msp430==1 - .endif - .if cpu_avr8==1 - XT_R_WORD_COMPILE: -000fa2 011b .dw DO_COLON - PFA_R_WORD_COMPILE: - .endif -000fa3 05ba .dw XT_ZEROLESS -000fa4 04c7 .dw XT_DOCONDBRANCH -000fa5 0fa8 DEST(PFA_R_WORD_COMPILE1) -000fa6 01dc .dw XT_COMMA -000fa7 04ae .dw XT_EXIT - PFA_R_WORD_COMPILE1: -000fa8 04b8 .dw XT_EXECUTE -000fa9 04ae .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: -000faa ff07 .dw $ff07 -000fab 7464 -000fac 6e3a -000fad 6c75 -../../common\words/dt-null.asm(12): warning: .cseg .db misalignment - padding zero byte -000fae 006c .db "dt:null" -000faf 0f95 .dw VE_HEAD - .set VE_HEAD = VE_DT_NULL - XT_DT_NULL: -000fb0 04e9 .dw PFA_DOCONSTANT - PFA_DT_NULL: - .endif -000fb1 0fb4 .dw XT_FAIL ; interpret -000fb2 0fb4 .dw XT_FAIL ; compile -000fb3 0fb4 .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: -000fb4 011b .dw DO_COLON - PFA_FAIL: - .endif -000fb5 04ce .dw XT_DOLITERAL -000fb6 fff3 .dw -13 -000fb7 0ca7 .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: -000fb8 ff06 .dw $ff06 -000fb9 733f -000fba 6174 -000fbb 6b63 .db "?stack" -000fbc 0faa .dw VE_HEAD - .set VE_HEAD = VE_QSTACK - XT_QSTACK: -000fbd 011b .dw DO_COLON - PFA_QSTACK: - .endif -000fbe 0f07 .dw XT_DEPTH -000fbf 05ba .dw XT_ZEROLESS -000fc0 04c7 .dw XT_DOCONDBRANCH -000fc1 0fc5 DEST(PFA_QSTACK1) -000fc2 04ce .dw XT_DOLITERAL -000fc3 fffc .dw -4 -000fc4 0ca7 .dw XT_THROW - PFA_QSTACK1: -000fc5 04ae .dw XT_EXIT - .include "words/ver.asm" - - ; Tools - ; print the version string - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_DOT_VER: -000fc6 ff03 .dw $ff03 -000fc7 6576 -../../common\words/ver.asm(12): warning: .cseg .db misalignment - padding zero byte -000fc8 0072 .db "ver" -000fc9 0fb8 .dw VE_HEAD - .set VE_HEAD = VE_DOT_VER - XT_DOT_VER: -000fca 011b .dw DO_COLON - PFA_DOT_VER: - .endif -000fcb 0971 .dw XT_ENV_FORTHNAME -000fcc 0c06 .dw XT_ITYPE -000fcd 0c48 .dw XT_SPACE -000fce 09b5 .dw XT_BASE -000fcf 0512 .dw XT_FETCH - -000fd0 097f .dw XT_ENV_FORTHVERSION -000fd1 0a42 .dw XT_DECIMAL -000fd2 1255 .dw XT_S2D -000fd3 0b24 .dw XT_L_SHARP -000fd4 0b2c .dw XT_SHARP -000fd5 04ce .dw XT_DOLITERAL -000fd6 002e .dw '.' -000fd7 0b15 .dw XT_HOLD -000fd8 0b42 .dw XT_SHARP_S -000fd9 0b4d .dw XT_SHARP_G -000fda 0c61 .dw XT_TYPE -000fdb 09b5 .dw XT_BASE -000fdc 051a .dw XT_STORE -000fdd 0c48 .dw XT_SPACE -000fde 0987 .dw XT_ENV_CPU -000fdf 0c06 .dw XT_ITYPE - -000fe0 04ae .dw XT_EXIT - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - .include "words/noop.asm" - - ; Tools - ; do nothing - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_NOOP: -000fe1 ff04 .dw $ff04 -000fe2 6f6e -000fe3 706f .db "noop" -000fe4 0fc6 .dw VE_HEAD - .set VE_HEAD = VE_NOOP - XT_NOOP: -000fe5 011b .dw DO_COLON - PFA_NOOP: - .endif -000fe6 04ae .DW XT_EXIT - .include "words/unused.asm" - - ; Tools - ; Amount of available RAM (incl. PAD) - VE_UNUSED: -000fe7 ff06 .dw $ff06 -000fe8 6e75 -000fe9 7375 -000fea 6465 .db "unused" -000feb 0fe1 .dw VE_HEAD - .set VE_HEAD = VE_UNUSED - XT_UNUSED: -000fec 011b .dw DO_COLON - PFA_UNUSED: -000fed 0726 .dw XT_SP_FETCH -000fee 0a24 .dw XT_HERE -000fef 062c .dw XT_MINUS -000ff0 04ae .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: -000ff1 0002 .dw $0002 -000ff2 6f74 .db "to" -000ff3 0fe7 .dw VE_HEAD - .set VE_HEAD = VE_TO - XT_TO: -000ff4 011b .dw DO_COLON - PFA_TO: - .endif -000ff5 0c70 .dw XT_TICK -000ff6 125e .dw XT_TO_BODY -000ff7 09af .dw XT_STATE -000ff8 0512 .dw XT_FETCH -000ff9 04c7 .dw XT_DOCONDBRANCH -000ffa 1005 DEST(PFA_TO1) -000ffb 01d1 .dw XT_COMPILE -000ffc 0fff .dw XT_DOTO -000ffd 01dc .dw XT_COMMA -000ffe 04ae .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: -000fff 011b .dw DO_COLON - PFA_DOTO: - .endif -001000 058f .dw XT_R_FROM -001001 054a .dw XT_DUP -001002 1011 .dw XT_ICELLPLUS -001003 0598 .dw XT_TO_R -001004 082c .dw XT_FETCHI - PFA_TO1: -001005 054a .dw XT_DUP -001006 1011 .dw XT_ICELLPLUS -001007 1011 .dw XT_ICELLPLUS -001008 082c .dw XT_FETCHI -001009 04b8 .dw XT_EXECUTE -00100a 04ae .dw XT_EXIT - .include "words/i-cellplus.asm" - - ; Compiler - ; skip to the next cell in flash - VE_ICELLPLUS: -00100b ff07 .dw $FF07 -00100c 2d69 -00100d 6563 -00100e 6c6c -00100f 002b .db "i-cell+",0 -001010 0ff1 .dw VE_HEAD - .set VE_HEAD = VE_ICELLPLUS - XT_ICELLPLUS: -001011 011b .dw DO_COLON - PFA_ICELLPLUS: -001012 06c8 .dw XT_1PLUS -001013 04ae .dw XT_EXIT - - .include "words/edefer-fetch.asm" - - ; System - ; does the real defer@ for eeprom defers - VE_EDEFERFETCH: -001014 ff07 .dw $ff07 -001015 6445 -001016 6665 -001017 7265 -001018 0040 .db "Edefer@",0 -001019 100b .dw VE_HEAD - .set VE_HEAD = VE_EDEFERFETCH - XT_EDEFERFETCH: -00101a 011b .dw DO_COLON - PFA_EDEFERFETCH: -00101b 082c .dw XT_FETCHI -00101c 07f9 .dw XT_FETCHE -00101d 04ae .dw XT_EXIT - .include "words/edefer-store.asm" - - ; System - ; does the real defer! for eeprom defers - VE_EDEFERSTORE: -00101e ff07 .dw $ff07 -00101f 6445 -001020 6665 -001021 7265 -001022 0021 .db "Edefer!",0 -001023 1014 .dw VE_HEAD - .set VE_HEAD = VE_EDEFERSTORE - XT_EDEFERSTORE: -001024 011b .dw DO_COLON - PFA_EDEFERSTORE: -001025 082c .dw XT_FETCHI -001026 07d5 .dw XT_STOREE -001027 04ae .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: -001028 ff07 .dw $ff07 -001029 6452 -00102a 6665 -00102b 7265 -00102c 0040 .db "Rdefer@",0 -00102d 101e .dw VE_HEAD - .set VE_HEAD = VE_RDEFERFETCH - XT_RDEFERFETCH: -00102e 011b .dw DO_COLON - PFA_RDEFERFETCH: - .endif -00102f 082c .dw XT_FETCHI -001030 0512 .dw XT_FETCH -001031 04ae .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: -001032 ff07 .dw $ff07 -001033 6452 -001034 6665 -001035 7265 -001036 0021 .db "Rdefer!",0 -001037 1028 .dw VE_HEAD - .set VE_HEAD = VE_RDEFERSTORE - XT_RDEFERSTORE: -001038 011b .dw DO_COLON - PFA_RDEFERSTORE: - .endif -001039 082c .dw XT_FETCHI -00103a 051a .dw XT_STORE -00103b 04ae .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: -00103c ff07 .dw $ff07 -00103d 6455 -00103e 6665 -00103f 7265 -001040 0040 .db "Udefer@",0 -001041 1032 .dw VE_HEAD - .set VE_HEAD = VE_UDEFERFETCH - XT_UDEFERFETCH: -001042 011b .dw DO_COLON - PFA_UDEFERFETCH: - .endif -001043 082c .dw XT_FETCHI -001044 079b .dw XT_UP_FETCH -001045 0636 .dw XT_PLUS -001046 0512 .dw XT_FETCH -001047 04ae .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: -001048 ff07 .dw $ff07 -001049 6455 -00104a 6665 -00104b 7265 -00104c 0021 .db "Udefer!",0 -00104d 103c .dw VE_HEAD - .set VE_HEAD = VE_UDEFERSTORE - XT_UDEFERSTORE: -00104e 011b .dw DO_COLON - PFA_UDEFERSTORE: - .endif - -00104f 082c .dw XT_FETCHI -001050 079b .dw XT_UP_FETCH -001051 0636 .dw XT_PLUS -001052 051a .dw XT_STORE -001053 04ae .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: -001054 ff06 .dw $ff06 -001055 6564 -001056 6566 -001057 2172 .db "defer!" -001058 1048 .dw VE_HEAD - .set VE_HEAD = VE_DEFERSTORE - XT_DEFERSTORE: -001059 011b .dw DO_COLON - PFA_DEFERSTORE: - .endif -00105a 125e .dw XT_TO_BODY -00105b 054a .dw XT_DUP -00105c 1011 .dw XT_ICELLPLUS -00105d 1011 .dw XT_ICELLPLUS -00105e 082c .dw XT_FETCHI -00105f 04b8 .dw XT_EXECUTE -001060 04ae .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: -001061 ff06 .dw $ff06 -001062 6564 -001063 6566 -001064 4072 .db "defer@" -001065 1054 .dw VE_HEAD - .set VE_HEAD = VE_DEFERFETCH - XT_DEFERFETCH: -001066 011b .dw DO_COLON - PFA_DEFERFETCH: - .endif -001067 125e .dw XT_TO_BODY -001068 054a .dw XT_DUP -001069 1011 .dw XT_ICELLPLUS -00106a 082c .dw XT_FETCHI -00106b 04b8 .dw XT_EXECUTE -00106c 04ae .dw XT_EXIT - .include "words/do-defer.asm" - - ; System - ; runtime of defer - VE_DODEFER: -00106d ff07 .dw $ff07 -00106e 6428 -00106f 6665 -001070 7265 -001071 0029 .db "(defer)", 0 -001072 1061 .dw VE_HEAD - .set VE_HEAD = VE_DODEFER - XT_DODEFER: -001073 011b .dw DO_COLON - PFA_DODEFER: -001074 01ae .dw XT_DOCREATE -001075 030e .dw XT_REVEAL -001076 01d1 .dw XT_COMPILE -001077 1079 .dw PFA_DODEFER1 -001078 04ae .dw XT_EXIT - PFA_DODEFER1: -001079 940e 0327 call_ DO_DODOES -00107b 054a .dw XT_DUP -00107c 1011 .dw XT_ICELLPLUS -00107d 082c .dw XT_FETCHI -00107e 04b8 .dw XT_EXECUTE -00107f 04b8 .dw XT_EXECUTE -001080 04ae .dw XT_EXIT - - ; : (defer) 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: -001081 ff0f .dw $ff0f -001082 6573 -001083 7261 -001084 6863 -001085 772d -001086 726f -001087 6c64 -001088 7369 -001089 0074 .db "search-wordlist",0 -00108a 106d .dw VE_HEAD - .set VE_HEAD = VE_SEARCH_WORDLIST - XT_SEARCH_WORDLIST: -00108b 011b .dw DO_COLON - PFA_SEARCH_WORDLIST: - .endif -00108c 0598 .dw XT_TO_R -00108d 05ed .dw XT_ZERO -00108e 04ce .dw XT_DOLITERAL -00108f 10a0 .dw XT_ISWORD -001090 058f .dw XT_R_FROM -001091 10bd .dw XT_TRAVERSEWORDLIST -001092 054a .dw XT_DUP -001093 05b3 .dw XT_ZEROEQUAL -001094 04c7 .dw XT_DOCONDBRANCH -001095 109a DEST(PFA_SEARCH_WORDLIST1) -001096 09d3 .dw XT_2DROP -001097 0572 .dw XT_DROP -001098 05ed .dw XT_ZERO -001099 04ae .dw XT_EXIT - PFA_SEARCH_WORDLIST1: - ; ... get the XT ... -00109a 054a .dw XT_DUP -00109b 10e4 .dw XT_NFA2CFA - ; .. and get the header flag -00109c 055d .dw XT_SWAP -00109d 0194 .dw XT_NAME2FLAGS -00109e 0182 .dw XT_IMMEDIATEQ -00109f 04ae .dw XT_EXIT - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - XT_ISWORD: -0010a0 011b .dw DO_COLON - PFA_ISWORD: - .endif - ; ( c-addr len 0 nt -- c-addr len 0 true| nt false ) -0010a1 0598 .dw XT_TO_R -0010a2 0572 .dw XT_DROP -0010a3 09ca .dw XT_2DUP -0010a4 05a1 .dw XT_R_FETCH ; -- addr len addr len nt -0010a5 10d8 .dw XT_NAME2STRING -0010a6 10ee .dw XT_ICOMPARE ; (-- addr len f ) -0010a7 04c7 .dw XT_DOCONDBRANCH -0010a8 10ae DEST(PFA_ISWORD3) - ; not now -0010a9 058f .dw XT_R_FROM -0010aa 0572 .dw XT_DROP -0010ab 05ed .dw XT_ZERO -0010ac 05e4 .dw XT_TRUE ; maybe next word -0010ad 04ae .dw XT_EXIT - PFA_ISWORD3: - ; we found the word, now clean up iteration data ... -0010ae 09d3 .dw XT_2DROP -0010af 058f .dw XT_R_FROM -0010b0 05ed .dw XT_ZERO ; finish traverse-wordlist -0010b1 04ae .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: -0010b2 ff11 .dw $ff11 -0010b3 7274 -0010b4 7661 -0010b5 7265 -0010b6 6573 -0010b7 772d -0010b8 726f -0010b9 6c64 -0010ba 7369 -0010bb 0074 .db "traverse-wordlist",0 -0010bc 1081 .dw VE_HEAD - .set VE_HEAD = VE_TRAVERSEWORDLIST - XT_TRAVERSEWORDLIST: -0010bd 011b .dw DO_COLON - PFA_TRAVERSEWORDLIST: - - .endif -0010be 07f9 .dw XT_FETCHE - PFA_TRAVERSEWORDLIST1: -0010bf 054a .dw XT_DUP ; ( -- xt nt nt ) -0010c0 04c7 .dw XT_DOCONDBRANCH ; ( -- nt ) is nfa = counted string -0010c1 10ce DEST(PFA_TRAVERSEWORDLIST2) -0010c2 09ca .dw XT_2DUP -0010c3 07b8 .dw XT_2TO_R -0010c4 055d .dw XT_SWAP -0010c5 04b8 .dw XT_EXECUTE -0010c6 07c7 .dw XT_2R_FROM -0010c7 057a .dw XT_ROT -0010c8 04c7 .dw XT_DOCONDBRANCH -0010c9 10ce DEST(PFA_TRAVERSEWORDLIST2) -0010ca 048a .dw XT_NFA2LFA -0010cb 082c .dw XT_FETCHI -0010cc 04bd .dw XT_DOBRANCH ; ( -- addr ) -0010cd 10bf DEST(PFA_TRAVERSEWORDLIST1) ; ( -- addr ) - PFA_TRAVERSEWORDLIST2: -0010ce 09d3 .dw XT_2DROP -0010cf 04ae .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: -0010d0 ff0b .dw $ff0b -0010d1 616e -0010d2 656d -0010d3 733e -0010d4 7274 -0010d5 6e69 -0010d6 0067 .db "name>string",0 -0010d7 10b2 .dw VE_HEAD - .set VE_HEAD = VE_NAME2STRING - XT_NAME2STRING: -0010d8 011b .dw DO_COLON - PFA_NAME2STRING: - - .endif -0010d9 0c32 .dw XT_ICOUNT ; ( -- addr n ) -0010da 04ce .dw XT_DOLITERAL -0010db 00ff .dw 255 -0010dc 06ac .dw XT_AND ; mask immediate bit -0010dd 04ae .dw XT_EXIT - .include "words/nfa2cfa.asm" - - ; Tools - ; get the XT from a name token - VE_NFA2CFA: -0010de ff07 .dw $ff07 -0010df 666e -0010e0 3e61 -0010e1 6663 -../../avr8\words/nfa2cfa.asm(6): warning: .cseg .db misalignment - padding zero byte -0010e2 0061 .db "nfa>cfa" -0010e3 10d0 .dw VE_HEAD - .set VE_HEAD = VE_NFA2CFA - XT_NFA2CFA: -0010e4 011b .dw DO_COLON - PFA_NFA2CFA: -0010e5 048a .dw XT_NFA2LFA ; skip to link field -0010e6 06c8 .dw XT_1PLUS ; next is the execution token -0010e7 04ae .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: -0010e8 ff08 .dw $ff08 -0010e9 6369 -0010ea 6d6f -0010eb 6170 -0010ec 6572 .db "icompare" -0010ed 10de .dw VE_HEAD - .set VE_HEAD = VE_ICOMPARE - XT_ICOMPARE: -0010ee 011b .dw DO_COLON - PFA_ICOMPARE: -0010ef 0598 .dw XT_TO_R ; ( -- r-addr r-len f-addr) -0010f0 0568 .dw XT_OVER ; ( -- r-addr r-len f-addr r-len) -0010f1 058f .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len ) -0010f2 05ac .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag ) -0010f3 04c7 .dw XT_DOCONDBRANCH -0010f4 10f9 .dw PFA_ICOMPARE_SAMELEN -0010f5 09d3 .dw XT_2DROP -0010f6 0572 .dw XT_DROP -0010f7 05e4 .dw XT_TRUE -0010f8 04ae .dw XT_EXIT - PFA_ICOMPARE_SAMELEN: -0010f9 055d .dw XT_SWAP ; ( -- r-addr f-addr len ) -0010fa 05ed .dw XT_ZERO -0010fb 029b .dw XT_QDOCHECK -0010fc 04c7 .dw XT_DOCONDBRANCH -0010fd 111c .dw PFA_ICOMPARE_DONE -0010fe 0734 .dw XT_DODO - PFA_ICOMPARE_LOOP: - ; ( r-addr f-addr --) -0010ff 0568 .dw XT_OVER -001100 0512 .dw XT_FETCH - .if WANT_IGNORECASE == 1 - .endif -001101 0568 .dw XT_OVER -001102 082c .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 -001103 054a .dw XT_DUP - ;.dw XT_BYTESWAP -001104 04ce .dw XT_DOLITERAL -001105 0100 .dw $100 -001106 05f5 .dw XT_ULESS -001107 04c7 .dw XT_DOCONDBRANCH -001108 110d .dw PFA_ICOMPARE_LASTCELL -001109 055d .dw XT_SWAP -00110a 04ce .dw XT_DOLITERAL -00110b 00ff .dw $00FF -00110c 06ac .dw XT_AND ; the final swap can be omitted - PFA_ICOMPARE_LASTCELL: -00110d 05ac .dw XT_NOTEQUAL -00110e 04c7 .dw XT_DOCONDBRANCH -00110f 1114 .dw PFA_ICOMPARE_NEXTLOOP -001110 09d3 .dw XT_2DROP -001111 05e4 .dw XT_TRUE -001112 076d .dw XT_UNLOOP -001113 04ae .dw XT_EXIT - PFA_ICOMPARE_NEXTLOOP: -001114 06c8 .dw XT_1PLUS -001115 055d .dw XT_SWAP -001116 09c2 .dw XT_CELLPLUS -001117 055d .dw XT_SWAP -001118 04ce .dw XT_DOLITERAL -001119 0002 .dw 2 -00111a 0753 .dw XT_DOPLUSLOOP -00111b 10ff .dw PFA_ICOMPARE_LOOP - PFA_ICOMPARE_DONE: -00111c 09d3 .dw XT_2DROP -00111d 05ed .dw XT_ZERO -00111e 04ae .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: -00111f ff01 .dw $ff01 -001120 002a .db "*",0 -001121 10e8 .dw VE_HEAD - .set VE_HEAD = VE_STAR - XT_STAR: -001122 011b .dw DO_COLON - PFA_STAR: - .endif - -001123 063f .dw XT_MSTAR -001124 0572 .dw XT_DROP -001125 04ae .dw XT_EXIT - .include "words/j.asm" - - ; Compiler - ; loop counter of outer loop - VE_J: -001126 ff01 .dw $FF01 -001127 006a .db "j",0 -001128 111f .dw VE_HEAD - .set VE_HEAD = VE_J - XT_J: -001129 011b .dw DO_COLON - PFA_J: -00112a 070f .dw XT_RP_FETCH -00112b 04ce .dw XT_DOLITERAL -00112c 0007 .dw 7 -00112d 0636 .dw XT_PLUS -00112e 0512 .dw XT_FETCH -00112f 070f .dw XT_RP_FETCH -001130 04ce .dw XT_DOLITERAL -001131 0009 .dw 9 -001132 0636 .dw XT_PLUS -001133 0512 .dw XT_FETCH -001134 0636 .dw XT_PLUS -001135 04ae .dw XT_EXIT - - .include "words/dabs.asm" - - ; Arithmetics - ; double cell absolute value - VE_DABS: -001136 ff04 .dw $ff04 -001137 6164 -001138 7362 .db "dabs" -001139 1126 .dw VE_HEAD - .set VE_HEAD = VE_DABS - XT_DABS: -00113a 011b .dw DO_COLON - PFA_DABS: -00113b 054a .dw XT_DUP -00113c 05ba .dw XT_ZEROLESS -00113d 04c7 .dw XT_DOCONDBRANCH -00113e 1140 .dw PFA_DABS1 -00113f 1147 .dw XT_DNEGATE - PFA_DABS1: -001140 04ae .dw XT_EXIT - ; : dabs ( ud1 -- +d2 ) dup 0< if dnegate then ; - .include "words/dnegate.asm" - - ; Arithmetics - ; double cell negation - VE_DNEGATE: -001141 ff07 .dw $ff07 -001142 6e64 -001143 6765 -001144 7461 -001145 0065 .db "dnegate",0 -001146 1136 .dw VE_HEAD - .set VE_HEAD = VE_DNEGATE - XT_DNEGATE: -001147 011b .dw DO_COLON - PFA_DNEGATE: -001148 089f .dw XT_DINVERT -001149 1274 .dw XT_ONE -00114a 05ed .dw XT_ZERO -00114b 0879 .dw XT_DPLUS -00114c 04ae .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: -00114d ff05 .dw $ff05 -00114e 6d63 -00114f 766f -001150 0065 .db "cmove",0 -001151 1141 .dw VE_HEAD - .set VE_HEAD = VE_CMOVE - XT_CMOVE: -001152 1153 .dw PFA_CMOVE - PFA_CMOVE: -001153 93bf push xh -001154 93af push xl -001155 91e9 ld zl, Y+ -001156 91f9 ld zh, Y+ ; addr-to -001157 91a9 ld xl, Y+ -001158 91b9 ld xh, Y+ ; addr-from -001159 2f09 mov temp0, tosh -00115a 2b08 or temp0, tosl -00115b f021 brbs 1, PFA_CMOVE1 - PFA_CMOVE2: -00115c 911d ld temp1, X+ -00115d 9311 st Z+, temp1 -00115e 9701 sbiw tosl, 1 -00115f f7e1 brbc 1, PFA_CMOVE2 - PFA_CMOVE1: -001160 91af pop xl -001161 91bf pop xh -001162 9189 -001163 9199 loadtos -001164 940c 011f 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: -001166 ff05 .dw $ff05 -001167 7332 -001168 6177 -001169 0070 .db "2swap",0 -00116a 114d .dw VE_HEAD - .set VE_HEAD = VE_2SWAP - XT_2SWAP: -00116b 011b .dw DO_COLON - PFA_2SWAP: - - .endif -00116c 057a .dw XT_ROT -00116d 0598 .dw XT_TO_R -00116e 057a .dw XT_ROT -00116f 058f .dw XT_R_FROM -001170 04ae .dw XT_EXIT - - .include "words/tib.asm" - - ; System - ; refills the input buffer - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_REFILLTIB: -001171 ff0a .dw $ff0a -001172 6572 -001173 6966 -001174 6c6c -001175 742d -001176 6269 .db "refill-tib" -001177 1166 .dw VE_HEAD - .set VE_HEAD = VE_REFILLTIB - XT_REFILLTIB: -001178 011b .dw DO_COLON - PFA_REFILLTIB: - .endif -001179 1194 .dw XT_TIB -00117a 04ce .dw XT_DOLITERAL -00117b 005a .dw TIB_SIZE -00117c 0cf7 .dw XT_ACCEPT -00117d 119a .dw XT_NUMBERTIB -00117e 051a .dw XT_STORE -00117f 05ed .dw XT_ZERO -001180 09e3 .dw XT_TO_IN -001181 051a .dw XT_STORE -001182 05e4 .dw XT_TRUE ; -1 -001183 04ae .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: -001184 ff0a .dw $FF0A -001185 6f73 -001186 7275 -001187 6563 -001188 742d -001189 6269 .db "source-tib" -00118a 1171 .dw VE_HEAD - .set VE_HEAD = VE_SOURCETIB - XT_SOURCETIB: -00118b 011b .dw DO_COLON - PFA_SOURCETIB: - .endif -00118c 1194 .dw XT_TIB -00118d 119a .dw XT_NUMBERTIB -00118e 0512 .dw XT_FETCH -00118f 04ae .dw XT_EXIT - - ; ( -- addr ) - ; System Variable - ; terminal input buffer address - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_TIB: -001190 ff03 .dw $ff03 -001191 6974 -001192 0062 .db "tib",0 -001193 1184 .dw VE_HEAD - .set VE_HEAD = VE_TIB - XT_TIB: -001194 04dc .dw PFA_DOVARIABLE - PFA_TIB: -001195 0285 .dw ram_tib - .dseg -000285 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: -001196 ff04 .dw $ff04 -001197 7423 -001198 6269 .db "#tib" -001199 1190 .dw VE_HEAD - .set VE_HEAD = VE_NUMBERTIB - XT_NUMBERTIB: -00119a 04dc .dw PFA_DOVARIABLE - PFA_NUMBERTIB: -00119b 02df .dw ram_sharptib - .dseg -0002df ram_sharptib: .byte 2 - .cseg - .endif - - .include "words/init-ram.asm" - - ; Tools - ; copy len cells from eeprom to ram - VE_EE2RAM: -00119c ff06 .dw $ff06 -00119d 6565 -00119e 723e -00119f 6d61 .db "ee>ram" -0011a0 1196 .dw VE_HEAD - .set VE_HEAD = VE_EE2RAM - XT_EE2RAM: -0011a1 011b .dw DO_COLON - PFA_EE2RAM: ; ( -- ) -0011a2 05ed .dw XT_ZERO -0011a3 0734 .dw XT_DODO - PFA_EE2RAM_1: - ; ( -- e-addr r-addr ) -0011a4 0568 .dw XT_OVER -0011a5 07f9 .dw XT_FETCHE -0011a6 0568 .dw XT_OVER -0011a7 051a .dw XT_STORE -0011a8 09c2 .dw XT_CELLPLUS -0011a9 055d .dw XT_SWAP -0011aa 09c2 .dw XT_CELLPLUS -0011ab 055d .dw XT_SWAP -0011ac 0762 .dw XT_DOLOOP -0011ad 11a4 .dw PFA_EE2RAM_1 - PFA_EE2RAM_2: -0011ae 09d3 .dw XT_2DROP -0011af 04ae .dw XT_EXIT - - ; ( -- ) - ; Tools - ; setup the default user area from eeprom - VE_INIT_RAM: -0011b0 ff08 .dw $ff08 -0011b1 6e69 -0011b2 7469 -0011b3 722d -0011b4 6d61 .db "init-ram" -0011b5 119c .dw VE_HEAD - .set VE_HEAD = VE_INIT_RAM - XT_INIT_RAM: -0011b6 011b .dw DO_COLON - PFA_INI_RAM: ; ( -- ) -0011b7 04ce .dw XT_DOLITERAL -0011b8 00a8 .dw EE_INITUSER -0011b9 079b .dw XT_UP_FETCH -0011ba 04ce .dw XT_DOLITERAL -0011bb 0022 .dw SYSUSERSIZE -0011bc 069d .dw XT_2SLASH -0011bd 11a1 .dw XT_EE2RAM -0011be 04ae .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: -0011bf ff0b .dw $ff0b -0011c0 6573 -0011c1 2d74 -0011c2 7563 -0011c3 7272 -0011c4 6e65 -0011c5 0074 .db "set-current",0 -0011c6 11b0 .dw VE_HEAD - .set VE_HEAD = VE_SET_CURRENT - XT_SET_CURRENT: -0011c7 011b .dw DO_COLON - PFA_SET_CURRENT: -0011c8 04ce .dw XT_DOLITERAL -0011c9 0084 .dw CFG_CURRENT -0011ca 07d5 .dw XT_STOREE -0011cb 04ae .dw XT_EXIT - .include "words/wordlist.asm" - - ; Search Order - ; create a new, empty wordlist - VE_WORDLIST: -0011cc ff08 .dw $ff08 -0011cd 6f77 -0011ce 6472 -0011cf 696c -0011d0 7473 .db "wordlist" -0011d1 11bf .dw VE_HEAD - .set VE_HEAD = VE_WORDLIST - XT_WORDLIST: -0011d2 011b .dw DO_COLON - PFA_WORDLIST: -0011d3 0a1c .dw XT_EHERE -0011d4 05ed .dw XT_ZERO -0011d5 0568 .dw XT_OVER -0011d6 07d5 .dw XT_STOREE -0011d7 054a .dw XT_DUP -0011d8 09c2 .dw XT_CELLPLUS -0011d9 0fff .dw XT_DOTO -0011da 0a1d .dw PFA_EHERE -0011db 04ae .dw XT_EXIT - - .include "words/forth-wordlist.asm" - - ; Search Order - ; get the system default word list - VE_FORTHWORDLIST: -0011dc ff0e .dw $ff0e -0011dd 6f66 -0011de 7472 -0011df 2d68 -0011e0 6f77 -0011e1 6472 -0011e2 696c -0011e3 7473 .db "forth-wordlist" -0011e4 11cc .dw VE_HEAD - .set VE_HEAD = VE_FORTHWORDLIST - XT_FORTHWORDLIST: -0011e5 04dc .dw PFA_DOVARIABLE - PFA_FORTHWORDLIST: -0011e6 0086 .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: -0011e7 ff09 .dw $ff09 -0011e8 6573 -0011e9 2d74 -0011ea 726f -0011eb 6564 -0011ec 0072 .db "set-order",0 -0011ed 11dc .dw VE_HEAD - .set VE_HEAD = VE_SET_ORDER - XT_SET_ORDER: -0011ee 011b .dw DO_COLON - PFA_SET_ORDER: - .endif -0011ef 04ce .dw XT_DOLITERAL -0011f0 0088 .dw CFG_ORDERLISTLEN -0011f1 03fe .dw XT_SET_STACK -0011f2 04ae .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: -0011f3 ff0f .dw $ff0f -0011f4 6573 -0011f5 2d74 -0011f6 6572 -0011f7 6f63 -0011f8 6e67 -0011f9 7a69 -0011fa 7265 -0011fb 0073 .db "set-recognizers",0 -0011fc 11e7 .dw VE_HEAD - .set VE_HEAD = VE_SET_RECOGNIZERS - XT_SET_RECOGNIZERS: -0011fd 011b .dw DO_COLON - PFA_SET_RECOGNIZERS: - .endif -0011fe 04ce .dw XT_DOLITERAL -0011ff 009a .dw CFG_RECOGNIZERLISTLEN -001200 03fe .dw XT_SET_STACK -001201 04ae .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: -001202 ff0f .dw $ff0f -001203 6567 -001204 2d74 -001205 6572 -001206 6f63 -001207 6e67 -001208 7a69 -001209 7265 -00120a 0073 .db "get-recognizers",0 -00120b 11f3 .dw VE_HEAD - .set VE_HEAD = VE_GET_RECOGNIZERS - XT_GET_RECOGNIZERS: -00120c 011b .dw DO_COLON - PFA_GET_RECOGNIZERS: - .endif -00120d 04ce .dw XT_DOLITERAL -00120e 009a .dw CFG_RECOGNIZERLISTLEN -00120f 03dd .dw XT_GET_STACK -001210 04ae .dw XT_EXIT - .include "words/code.asm" - - ; Compiler - ; create named entry in the dictionary, XT is the data field - VE_CODE: -001211 ff04 .dw $ff04 -001212 6f63 -001213 6564 .db "code" -001214 1202 .dw VE_HEAD - .set VE_HEAD = VE_CODE - XT_CODE: -001215 011b .dw DO_COLON - PFA_CODE: -001216 01ae .dw XT_DOCREATE -001217 030e .dw XT_REVEAL -001218 0a13 .dw XT_DP -001219 1011 .dw XT_ICELLPLUS -00121a 01dc .dw XT_COMMA -00121b 04ae .dw XT_EXIT - .include "words/end-code.asm" - - ; Compiler - ; finish a code definition - VE_ENDCODE: -00121c ff08 .dw $ff08 -00121d 6e65 -00121e 2d64 -00121f 6f63 -001220 6564 .db "end-code" -001221 1211 .dw VE_HEAD - .set VE_HEAD = VE_ENDCODE - XT_ENDCODE: -001222 011b .dw DO_COLON - PFA_ENDCODE: -001223 01d1 .dw XT_COMPILE -001224 940c .dw $940c -001225 01d1 .dw XT_COMPILE -001226 011f .dw DO_NEXT -001227 04ae .dw XT_EXIT - .include "words/marker.asm" - - ; System Value - ; The eeprom address until which MARKER saves and restores the eeprom data. - VE_MARKER: -001228 ff08 .dw $ff08 -001229 6d28 -00122a 7261 -00122b 656b -00122c 2972 .db "(marker)" -00122d 121c .dw VE_HEAD - .set VE_HEAD = VE_MARKER - XT_MARKER: -00122e 0509 .dw PFA_DOVALUE1 - PFA_MARKER: -00122f 00a6 .dw EE_MARKER -001230 101a .dw XT_EDEFERFETCH -001231 1024 .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: -001232 0008 .dw $0008 -001233 6f70 -001234 7473 -001235 6f70 -001236 656e .db "postpone" -001237 1228 .dw VE_HEAD - .set VE_HEAD = VE_POSTPONE - XT_POSTPONE: -001238 011b .dw DO_COLON - PFA_POSTPONE: - .endif -001239 0e1a .dw XT_PARSENAME -00123a 0f32 .dw XT_FORTHRECOGNIZER -00123b 0f3d .dw XT_RECOGNIZE -00123c 054a .dw XT_DUP -00123d 0598 .dw XT_TO_R -00123e 1011 .dw XT_ICELLPLUS -00123f 1011 .dw XT_ICELLPLUS -001240 082c .dw XT_FETCHI -001241 04b8 .dw XT_EXECUTE -001242 058f .dw XT_R_FROM -001243 1011 .dw XT_ICELLPLUS -001244 082c .dw XT_FETCHI -001245 01dc .dw XT_COMMA -001246 04ae .dw XT_EXIT - .endif - .include "words/bounds.asm" - - ; Tools - ; convert a string to an address range - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_BOUNDS: -001247 ff06 .dw $ff06 -001248 6f62 -001249 6e75 -00124a 7364 .db "bounds" -00124b 1232 .dw VE_HEAD - .set VE_HEAD = VE_BOUNDS - XT_BOUNDS: -00124c 011b .dw DO_COLON - PFA_BOUNDS: - .endif -00124d 0568 .dw XT_OVER -00124e 0636 .dw XT_PLUS -00124f 055d .dw XT_SWAP -001250 04ae .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: -001251 ff03 .dw $ff03 -001252 3e73 -001253 0064 .db "s>d",0 -001254 1247 .dw VE_HEAD - .set VE_HEAD = VE_S2D - XT_S2D: -001255 011b .dw DO_COLON - PFA_S2D: - .endif -001256 054a .dw XT_DUP -001257 05ba .dw XT_ZEROLESS -001258 04ae .dw XT_EXIT - .include "words/to-body.asm" - - ; Core - ; get body from XT - VE_TO_BODY: -001259 ff05 .dw $ff05 -00125a 623e -00125b 646f -00125c 0079 .db ">body",0 -00125d 1251 .dw VE_HEAD - .set VE_HEAD = VE_TO_BODY - XT_TO_BODY: -00125e 06c9 .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: -00125f 0008 .dw $0008 -001260 6c32 -001261 7469 -001262 7265 -001263 6c61 .db "2literal" -001264 1259 .dw VE_HEAD - .set VE_HEAD = VE_2LITERAL - XT_2LITERAL: -001265 011b .dw DO_COLON - PFA_2LITERAL: - .endif -001266 055d .dw XT_SWAP -001267 01f2 .dw XT_LITERAL -001268 01f2 .dw XT_LITERAL -001269 04ae .dw XT_EXIT - .include "words/equal.asm" - - ; Compare - ; compares two values for equality - VE_EQUAL: -00126a ff01 .dw $ff01 -00126b 003d .db "=",0 -00126c 125f .dw VE_HEAD - .set VE_HEAD = VE_EQUAL - XT_EQUAL: -00126d 011b .dw DO_COLON - PFA_EQUAL: -00126e 062c .dw XT_MINUS -00126f 05b3 .dw XT_ZEROEQUAL -001270 04ae .dw XT_EXIT - .include "words/num-constants.asm" - - .endif - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_ONE: -001271 ff01 .dw $ff01 -001272 0031 .db "1",0 -001273 126a .dw VE_HEAD - .set VE_HEAD = VE_ONE - XT_ONE: -001274 04dc .dw PFA_DOVARIABLE - PFA_ONE: - .endif -001275 0001 .DW 1 - - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_TWO: -001276 ff01 .dw $ff01 -001277 0032 .db "2",0 -001278 1271 .dw VE_HEAD - .set VE_HEAD = VE_TWO - XT_TWO: -001279 04dc .dw PFA_DOVARIABLE - PFA_TWO: - .endif -00127a 0002 .DW 2 - .if cpu_msp430==1 - .endif - - .if cpu_avr8==1 - VE_MINUSONE: -00127b ff02 .dw $ff02 -00127c 312d .db "-1" -00127d 1276 .dw VE_HEAD - .set VE_HEAD = VE_MINUSONE - XT_MINUSONE: -00127e 04dc .dw PFA_DOVARIABLE - PFA_MINUSONE: - .endif -00127f ffff .DW -1 - .include "dict_appl_core.inc" - - ; do not delete it! - - - .set DPSTART = pc - .set flashlast = pc - - .dseg - HERESTART: - .eseg - .include "amforth-eeprom.inc" -000072 ff ff - ; some configs -000074 80 12 CFG_DP: .dw DPSTART ; Dictionary Pointer -000076 e1 02 EE_HERE: .dw HERESTART ; Memory Allocation -000078 cc 00 EE_EHERE: .dw EHERESTART ; EEProm Memory Allocation -00007a 43 04 CFG_WLSCOPE: .dw XT_GET_CURRENT ; default wordlist scope -00007c 9a 00 CFG_FORTHRECOGNIZER: .dw CFG_RECOGNIZERLISTLEN ; Recognizer word set - ; LEAVE stack is between data stack and return stack. -00007e b0 21 CFG_LP0: .dw stackstart+1 -000080 98 04 CFG_TURNKEY: .dw XT_APPLTURNKEY ; TURNKEY -000082 96 09 CFG_ENVIRONMENT:.dw VE_ENVHEAD ; environmental queries -000084 86 00 CFG_CURRENT: .dw CFG_FORTHWORDLIST ; forth-wordlist -000086 7b 12 CFG_FORTHWORDLIST:.dw VE_HEAD ; pre-defined (compiled in) wordlist - CFG_ORDERLISTLEN: -000088 01 00 .dw 1 - CFG_ORDERLIST: ; list of wordlist id, exactly numwordlist entries -00008a 86 00 .dw CFG_FORTHWORDLIST ; get/set-order -00008c .byte (NUMWORDLISTS-1)*CELLSIZE ; one slot is already used - CFG_RECOGNIZERLISTLEN: -00009a 02 00 .dw 2 - CFG_RECOGNIZERLIST: -00009c 8a 0f .dw XT_REC_FIND -00009e 76 0f .dw XT_REC_NUM -0000a0 .byte (NUMRECOGNIZERS-2)*CELLSIZE ; two slots are already used - - EE_STOREI: -0000a4 15 08 .dw XT_DO_STOREI ; Store a cell into flash - - ; MARKER saves everything up to here. Nothing beyond gets saved - EE_MARKER: -0000a6 a6 00 .dw EE_MARKER - - ; default user area - EE_INITUSER: -0000a8 00 00 .dw 0 ; USER_STATE -0000aa 00 00 .dw 0 ; USER_FOLLOWER -0000ac ff 21 .dw rstackstart ; USER_RP -0000ae af 21 .dw stackstart ; USER_SP0 -0000b0 af 21 .dw stackstart ; USER_SP - -0000b2 00 00 .dw 0 ; USER_HANDLER -0000b4 0a 00 .dw 10 ; USER_BASE - -0000b6 e1 00 .dw XT_TX ; USER_EMIT -0000b8 ef 00 .dw XT_TXQ ; USER_EMITQ -0000ba b6 00 .dw XT_RX ; USER_KEY -0000bc d1 00 .dw XT_RXQ ; USER_KEYQ -0000be 8b 11 .dw XT_SOURCETIB ; USER_SOURCE -0000c0 00 00 .dw 0 ; USER_G_IN -0000c2 78 11 .dw XT_REFILLTIB ; USER_REFILL -0000c4 50 0e .dw XT_DEFAULT_PROMPTOK -0000c6 6f 0e .dw XT_DEFAULT_PROMPTERROR -0000c8 5f 0e .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: -0000ca 17 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 - -"ATmega2561" register use summary: -r0 : 26 r1 : 5 r2 : 9 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: 77 r17: 57 r18: 52 r19: 37 r20: 13 r21: 38 r22: 11 r23: 4 -r24: 187 r25: 133 r26: 28 r27: 17 r28: 7 r29: 4 r30: 81 r31: 41 -x : 4 y : 203 z : 41 -Registers used: 29 out of 35 (82.9%) - -"ATmega2561" 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 : 2 brcs : 1 break : 0 breq : 6 brge : 1 brhc : 0 -brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 3 brmi : 3 -brne : 13 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0 -brvs : 2 bset : 0 bst : 0 call : 1 cbi : 0 cbr : 0 -clc : 1 clh : 0 cli : 5 cln : 0 clr : 21 cls : 0 -clt : 0 clv : 0 clz : 0 com : 14 cp : 11 cpc : 10 -cpi : 2 cpse : 0 dec : 10 eicall: 1 eijmp : 0 elpm : 16 -eor : 3 fmul : 0 fmuls : 0 fmulsu: 0 icall : 0 ijmp : 1 -in : 14 inc : 3 jmp : 8 ld : 136 ldd : 4 ldi : 31 -lds : 1 lpm : 0 lsl : 14 lsr : 2 mov : 15 movw : 65 -mul : 5 muls : 1 mulsu : 2 neg : 0 nop : 1 or : 9 -ori : 0 out : 26 pop : 47 push : 39 rcall : 69 ret : 6 -reti : 1 rjmp : 102 rol : 32 ror : 5 sbc : 9 sbci : 3 -sbi : 3 sbic : 3 sbis : 0 sbiw : 7 sbr : 0 sbrc : 4 -sbrs : 3 sec : 1 seh : 0 sei : 1 sen : 0 ser : 3 -ses : 0 set : 0 sev : 0 sez : 0 sleep : 0 spm : 2 -st : 74 std : 8 sts : 1 sub : 6 subi : 3 swap : 0 -tst : 0 wdr : 0 -Instructions used: 71 out of 116 (61.2%) - -"ATmega2561" memory use summary [bytes]: -Segment Begin End Code Data Used Size Use% ---------------------------------------------------------------- -[.cseg] 0x000000 0x03e07e 1962 12820 14782 262144 5.6% -[.dseg] 0x000200 0x0002e1 0 225 225 8192 2.7% -[.eseg] 0x000000 0x0000cc 0 204 204 4096 5.0% - -Assembly complete, 0 errors, 8 warnings diff --git a/amforth-6.5/appl/atmega2561/atmega256.map b/amforth-6.5/appl/atmega2561/atmega256.map deleted file mode 100644 index b8ce7fe..0000000 --- a/amforth-6.5/appl/atmega2561/atmega256.map +++ /dev/null @@ -1,2503 +0,0 @@ - -AVRASM ver. 2.1.52 atmega256.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 00000098 -EQU SIGNATURE_002 00000002 -EQU UDR3 00000136 -EQU UBRR3H 00000135 -EQU UBRR3L 00000134 -EQU UCSR3C 00000132 -EQU UCSR3B 00000131 -EQU UCSR3A 00000130 -EQU OCR5CL 0000012c -EQU OCR5CH 0000012d -EQU OCR5BL 0000012a -EQU OCR5BH 0000012b -EQU OCR5AL 00000128 -EQU OCR5AH 00000129 -EQU ICR5H 00000127 -EQU ICR5L 00000126 -EQU TCNT5L 00000124 -EQU TCNT5H 00000125 -EQU TCCR5C 00000122 -EQU TCCR5B 00000121 -EQU TCCR5A 00000120 -EQU PORTL 0000010b -EQU DDRL 0000010a -EQU PINL 00000109 -EQU PORTK 00000108 -EQU DDRK 00000107 -EQU PINK 00000106 -EQU PORTJ 00000105 -EQU DDRJ 00000104 -EQU PINJ 00000103 -EQU PORTH 00000102 -EQU DDRH 00000101 -EQU PINH 00000100 -EQU UDR2 000000d6 -EQU UBRR2H 000000d5 -EQU UBRR2L 000000d4 -EQU UCSR2C 000000d2 -EQU UCSR2B 000000d1 -EQU UCSR2A 000000d0 -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 OCR4CL 000000ac -EQU OCR4CH 000000ad -EQU OCR4BL 000000aa -EQU OCR4BH 000000ab -EQU OCR4AL 000000a8 -EQU OCR4AH 000000a9 -EQU ICR4L 000000a6 -EQU ICR4H 000000a7 -EQU TCNT4L 000000a4 -EQU TCNT4H 000000a5 -EQU TCCR4C 000000a2 -EQU TCCR4B 000000a1 -EQU TCCR4A 000000a0 -EQU OCR3CL 0000009c -EQU OCR3CH 0000009d -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 OCR1CL 0000008c -EQU OCR1CH 0000008d -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 DIDR2 0000007d -EQU ADMUX 0000007c -EQU ADCSRB 0000007b -EQU ADCSRA 0000007a -EQU ADCH 00000079 -EQU ADCL 00000078 -EQU XMCRB 00000075 -EQU XMCRA 00000074 -EQU TIMSK5 00000073 -EQU TIMSK4 00000072 -EQU TIMSK3 00000071 -EQU TIMSK2 00000070 -EQU TIMSK1 0000006f -EQU TIMSK0 0000006e -EQU PCMSK2 0000006d -EQU PCMSK1 0000006c -EQU PCMSK0 0000006b -EQU EICRB 0000006a -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 EIND 0000003c -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 TIFR5 0000001a -EQU TIFR4 00000019 -EQU TIFR3 00000018 -EQU TIFR2 00000017 -EQU TIFR1 00000016 -EQU TIFR0 00000015 -EQU PORTG 00000014 -EQU DDRG 00000013 -EQU PING 00000012 -EQU PORTF 00000011 -EQU DDRF 00000010 -EQU PINF 0000000f -EQU PORTE 0000000e -EQU DDRE 0000000d -EQU PINE 0000000c -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 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 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 PORTE0 00000000 -EQU PE0 00000000 -EQU PORTE1 00000001 -EQU PE1 00000001 -EQU PORTE2 00000002 -EQU PE2 00000002 -EQU PORTE3 00000003 -EQU PE3 00000003 -EQU PORTE4 00000004 -EQU PE4 00000004 -EQU PORTE5 00000005 -EQU PE5 00000005 -EQU PORTE6 00000006 -EQU PE6 00000006 -EQU PORTE7 00000007 -EQU PE7 00000007 -EQU DDE0 00000000 -EQU DDE1 00000001 -EQU DDE2 00000002 -EQU DDE3 00000003 -EQU DDE4 00000004 -EQU DDE5 00000005 -EQU DDE6 00000006 -EQU DDE7 00000007 -EQU PINE0 00000000 -EQU PINE1 00000001 -EQU PINE2 00000002 -EQU PINE3 00000003 -EQU PINE4 00000004 -EQU PINE5 00000005 -EQU PINE6 00000006 -EQU PINE7 00000007 -EQU PORTF0 00000000 -EQU PF0 00000000 -EQU PORTF1 00000001 -EQU PF1 00000001 -EQU PORTF2 00000002 -EQU PF2 00000002 -EQU PORTF3 00000003 -EQU PF3 00000003 -EQU PORTF4 00000004 -EQU PF4 00000004 -EQU PORTF5 00000005 -EQU PF5 00000005 -EQU PORTF6 00000006 -EQU PF6 00000006 -EQU PORTF7 00000007 -EQU PF7 00000007 -EQU DDF0 00000000 -EQU DDF1 00000001 -EQU DDF2 00000002 -EQU DDF3 00000003 -EQU DDF4 00000004 -EQU DDF5 00000005 -EQU DDF6 00000006 -EQU DDF7 00000007 -EQU PINF0 00000000 -EQU PINF1 00000001 -EQU PINF2 00000002 -EQU PINF3 00000003 -EQU PINF4 00000004 -EQU PINF5 00000005 -EQU PINF6 00000006 -EQU PINF7 00000007 -EQU PORTG0 00000000 -EQU PG0 00000000 -EQU PORTG1 00000001 -EQU PG1 00000001 -EQU PORTG2 00000002 -EQU PG2 00000002 -EQU PORTG3 00000003 -EQU PG3 00000003 -EQU PORTG4 00000004 -EQU PG4 00000004 -EQU PORTG5 00000005 -EQU PG5 00000005 -EQU DDG0 00000000 -EQU DDG1 00000001 -EQU DDG2 00000002 -EQU DDG3 00000003 -EQU DDG4 00000004 -EQU DDG5 00000005 -EQU PING0 00000000 -EQU PING1 00000001 -EQU PING2 00000002 -EQU PING3 00000003 -EQU PING4 00000004 -EQU PING5 00000005 -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 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 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 TOIE5 00000000 -EQU OCIE5A 00000001 -EQU OCIE5B 00000002 -EQU OCIE5C 00000003 -EQU ICIE5 00000005 -EQU TOV5 00000000 -EQU OCF5A 00000001 -EQU OCF5B 00000002 -EQU OCF5C 00000003 -EQU ICF5 00000005 -EQU WGM50 00000000 -EQU WGM51 00000001 -EQU COM5C0 00000002 -EQU COM5C1 00000003 -EQU COM5B0 00000004 -EQU COM5B1 00000005 -EQU COM5A0 00000006 -EQU COM5A1 00000007 -EQU CS50 00000000 -EQU CS51 00000001 -EQU CS52 00000002 -EQU WGM52 00000003 -EQU WGM53 00000004 -EQU ICES5 00000006 -EQU ICNC5 00000007 -EQU FOC5C 00000005 -EQU FOC5B 00000006 -EQU FOC5A 00000007 -EQU ICR5H0 00000000 -EQU ICR5H1 00000001 -EQU ICR5H2 00000002 -EQU ICR5H3 00000003 -EQU ICR5H4 00000004 -EQU ICR5H5 00000005 -EQU ICR5H6 00000006 -EQU ICR5H7 00000007 -EQU ICR5L0 00000000 -EQU ICR5L1 00000001 -EQU ICR5L2 00000002 -EQU ICR5L3 00000003 -EQU ICR5L4 00000004 -EQU ICR5L5 00000005 -EQU ICR5L6 00000006 -EQU ICR5L7 00000007 -EQU TOIE4 00000000 -EQU OCIE4A 00000001 -EQU OCIE4B 00000002 -EQU OCIE4C 00000003 -EQU ICIE4 00000005 -EQU TOV4 00000000 -EQU OCF4A 00000001 -EQU OCF4B 00000002 -EQU OCF4C 00000003 -EQU ICF4 00000005 -EQU WGM40 00000000 -EQU WGM41 00000001 -EQU COM4C0 00000002 -EQU COM4C1 00000003 -EQU COM4B0 00000004 -EQU COM4B1 00000005 -EQU COM4A0 00000006 -EQU COM4A1 00000007 -EQU CS40 00000000 -EQU CS41 00000001 -EQU CS42 00000002 -EQU WGM42 00000003 -EQU WGM43 00000004 -EQU ICES4 00000006 -EQU ICNC4 00000007 -EQU FOC4C 00000005 -EQU FOC4B 00000006 -EQU FOC4A 00000007 -EQU TOIE3 00000000 -EQU OCIE3A 00000001 -EQU OCIE3B 00000002 -EQU OCIE3C 00000003 -EQU ICIE3 00000005 -EQU TOV3 00000000 -EQU OCF3A 00000001 -EQU OCF3B 00000002 -EQU OCF3C 00000003 -EQU ICF3 00000005 -EQU WGM30 00000000 -EQU WGM31 00000001 -EQU COM3C0 00000002 -EQU COM3C1 00000003 -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 FOC3C 00000005 -EQU FOC3B 00000006 -EQU FOC3A 00000007 -EQU TOIE1 00000000 -EQU OCIE1A 00000001 -EQU OCIE1B 00000002 -EQU OCIE1C 00000003 -EQU ICIE1 00000005 -EQU TOV1 00000000 -EQU OCF1A 00000001 -EQU OCF1B 00000002 -EQU OCF1C 00000003 -EQU ICF1 00000005 -EQU WGM10 00000000 -EQU WGM11 00000001 -EQU COM1C0 00000002 -EQU COM1C1 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 WGM13 00000004 -EQU ICES1 00000006 -EQU ICNC1 00000007 -EQU FOC1C 00000005 -EQU FOC1B 00000006 -EQU FOC1A 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 ISC00 00000000 -EQU ISC01 00000001 -EQU ISC10 00000002 -EQU ISC11 00000003 -EQU ISC20 00000004 -EQU ISC21 00000005 -EQU ISC30 00000006 -EQU ISC31 00000007 -EQU ISC40 00000000 -EQU ISC41 00000001 -EQU ISC50 00000002 -EQU ISC51 00000003 -EQU ISC60 00000004 -EQU ISC61 00000005 -EQU ISC70 00000006 -EQU ISC71 00000007 -EQU INT0 00000000 -EQU INT1 00000001 -EQU INT2 00000002 -EQU INT3 00000003 -EQU INT4 00000004 -EQU INT5 00000005 -EQU INT6 00000006 -EQU INT7 00000007 -EQU INTF0 00000000 -EQU INTF1 00000001 -EQU INTF2 00000002 -EQU INTF3 00000003 -EQU INTF4 00000004 -EQU INTF5 00000005 -EQU INTF6 00000006 -EQU INTF7 00000007 -EQU PCIE0 00000000 -EQU PCIE1 00000001 -EQU PCIE2 00000002 -EQU PCIF0 00000000 -EQU PCIF1 00000001 -EQU PCIF2 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 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 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 SRW00 00000000 -EQU SRW01 00000001 -EQU SRW10 00000002 -EQU SRW11 00000003 -EQU SRL0 00000004 -EQU SRL1 00000005 -EQU SRL2 00000006 -EQU SRE 00000007 -EQU XMM0 00000000 -EQU XMM1 00000001 -EQU XMM2 00000002 -EQU XMBK 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 SE 00000000 -EQU SM0 00000001 -EQU SM1 00000002 -EQU SM2 00000003 -EQU RAMPZ0 00000000 -EQU RAMPZ1 00000001 -EQU EIND0 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 PRUSART1 00000000 -EQU PRUSART2 00000001 -EQU PRUSART3 00000002 -EQU PRTIM3 00000003 -EQU PRTIM4 00000004 -EQU PRTIM5 00000005 -EQU PRADC 00000000 -EQU PRUSART0 00000001 -EQU PRSPI 00000002 -EQU PRTIM1 00000003 -EQU PRTIM0 00000005 -EQU PRTIM2 00000006 -EQU PRTWI 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 MUX5 00000003 -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 ADC8D 00000000 -EQU ADC9D 00000001 -EQU ADC10D 00000002 -EQU ADC11D 00000003 -EQU ADC12D 00000004 -EQU ADC13D 00000005 -EQU ADC14D 00000006 -EQU ADC15D 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 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 0001ffff -EQU IOEND 000001ff -EQU SRAM_START 00000200 -EQU SRAM_SIZE 00002000 -EQU RAMEND 000021ff -EQU XRAMEND 0000ffff -EQU E2END 00000fff -EQU EEPROMEND 00000fff -EQU EEADRBITS 0000000c -EQU NRWW_START_ADDR 0001f000 -EQU NRWW_STOP_ADDR 0001ffff -EQU RWW_START_ADDR 00000000 -EQU RWW_STOP_ADDR 0001efff -EQU PAGESIZE 00000080 -EQU FIRSTBOOTSTART 0001fe00 -EQU SECONDBOOTSTART 0001fc00 -EQU THIRDBOOTSTART 0001f800 -EQU FOURTHBOOTSTART 0001f000 -EQU SMALLBOOTSTART 0001fe00 -EQU LARGEBOOTSTART 0001f000 -EQU INT0addr 00000002 -EQU INT1addr 00000004 -EQU INT2addr 00000006 -EQU INT3addr 00000008 -EQU INT4addr 0000000a -EQU INT5addr 0000000c -EQU INT6addr 0000000e -EQU INT7addr 00000010 -EQU PCI0addr 00000012 -EQU PCI1addr 00000014 -EQU PCI2addr 00000016 -EQU WDTaddr 00000018 -EQU OC2Aaddr 0000001a -EQU OC2Baddr 0000001c -EQU OVF2addr 0000001e -EQU ICP1addr 00000020 -EQU OC1Aaddr 00000022 -EQU OC1Baddr 00000024 -EQU OC1Caddr 00000026 -EQU OVF1addr 00000028 -EQU OC0Aaddr 0000002a -EQU OC0Baddr 0000002c -EQU OVF0addr 0000002e -EQU SPIaddr 00000030 -EQU URXC0addr 00000032 -EQU UDRE0addr 00000034 -EQU UTXC0addr 00000036 -EQU ACIaddr 00000038 -EQU ADCCaddr 0000003a -EQU ERDYaddr 0000003c -EQU ICP3addr 0000003e -EQU OC3Aaddr 00000040 -EQU OC3Baddr 00000042 -EQU OC3Caddr 00000044 -EQU OVF3addr 00000046 -EQU URXC1addr 00000048 -EQU UDRE1addr 0000004a -EQU UTXC1addr 0000004c -EQU TWIaddr 0000004e -EQU SPMRaddr 00000050 -EQU ICP4addr 00000052 -EQU OC4Aaddr 00000054 -EQU OC4Baddr 00000056 -EQU OC4Caddr 00000058 -EQU OVF4addr 0000005a -EQU ICP5addr 0000005c -EQU OC5Aaddr 0000005e -EQU OC5Baddr 00000060 -EQU OC5Caddr 00000062 -EQU OVF5addr 00000064 -EQU URXC2addr 00000066 -EQU UDRE2addr 00000068 -EQU UTXC2addr 0000006a -EQU URXC3addr 0000006c -EQU UDRE3addr 0000006e -EQU UTXC3addr 00000070 -EQU INT_VECTORS_SIZE 00000072 -EQU ramstart 00000200 -EQU CELLSIZE 00000002 -SET WANT_ANALOG_COMPARATOR 00000000 -SET WANT_USART0 00000000 -SET WANT_TWI 00000000 -SET WANT_SPI 00000000 -SET WANT_PORTA 00000000 -SET WANT_PORTB 00000000 -SET WANT_PORTC 00000000 -SET WANT_PORTD 00000000 -SET WANT_PORTE 00000000 -SET WANT_PORTF 00000000 -SET WANT_PORTG 00000000 -SET WANT_TIMER_COUNTER_0 00000000 -SET WANT_TIMER_COUNTER_2 00000000 -SET WANT_WATCHDOG 00000000 -SET WANT_USART1 00000000 -SET WANT_EEPROM 00000000 -SET WANT_TIMER_COUNTER_5 00000000 -SET WANT_TIMER_COUNTER_4 00000000 -SET WANT_TIMER_COUNTER_3 00000000 -SET WANT_TIMER_COUNTER_1 00000000 -SET WANT_JTAG 00000000 -SET WANT_EXTERNAL_INTERRUPT 00000000 -SET WANT_CPU 00000000 -SET WANT_AD_CONVERTER 00000000 -SET WANT_BOOT_LOAD 00000000 -EQU intvecsize 00000002 -EQU pclen 00000003 -CSEG isr 0000013c -EQU INTVECTORS 00000039 -CSEG mcu_info 00000071 -CSEG mcu_ramsize 00000071 -CSEG mcu_eepromsize 00000072 -CSEG mcu_maxdp 00000073 -CSEG mcu_numints 00000074 -CSEG mcu_name 00000075 -SET codestart 0000007b -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 000021ff -SET stackstart 000021af -SET NUMWORDLISTS 00000008 -SET NUMRECOGNIZERS 00000004 -SET BAUD 00009600 -SET BAUD_MAXERROR 0000000a -SET VE_HEAD 0000127b -SET VE_ENVHEAD 00000996 -SET AMFORTH_RO_SEG 0001f000 -EQU F_CPU 00e10000 -EQU BAUDRATE_LOW 000000cc -EQU BAUDRATE_HIGH 000000cd -EQU USART_C 000000ca -EQU USART_B 000000c9 -EQU USART_A 000000c8 -EQU USART_DATA 000000ce -EQU URXCaddr 00000048 -EQU UDREaddr 0000004a -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 00000200 -DSEG usart_rx_in 00000210 -DSEG usart_rx_out 00000211 -CSEG VE_TO_RXBUF 0000007b -CSEG XT_TO_RXBUF 00000081 -CSEG PFA_rx_tobuf 00000082 -CSEG DO_NEXT 0000011f -CSEG VE_ISR_RX 00000092 -CSEG XT_ISR_RX 00000097 -CSEG DO_COLON 0000011b -CSEG usart_rx_isr 00000098 -CSEG XT_DOLITERAL 000004ce -CSEG XT_CFETCH 00000531 -CSEG XT_DUP 0000054a -CSEG XT_EQUAL 0000126d -CSEG XT_DOCONDBRANCH 000004c7 -CSEG usart_rx_isr1 000000a2 -CSEG XT_COLD 00000ebf -CSEG XT_EXIT 000004ae -CSEG XT_USART_INIT_RX_BUFFER 000000a4 -CSEG PFA_USART_INIT_RX_BUFFER 000000a5 -CSEG XT_INTSTORE 000008eb -CSEG XT_ZERO 000005ed -CSEG XT_FILL 00000933 -CSEG VE_RX_BUFFER 000000b1 -CSEG XT_RX_BUFFER 000000b6 -CSEG PFA_RX_BUFFER 000000b7 -CSEG XT_RXQ_BUFFER 000000d1 -CSEG XT_PLUS 00000636 -CSEG XT_SWAP 0000055d -CSEG XT_1PLUS 000006c8 -CSEG XT_AND 000006ac -CSEG XT_CSTORE 00000526 -CSEG VE_RXQ_BUFFER 000000cb -CSEG PFA_RXQ_BUFFER 000000d2 -CSEG XT_PAUSE 00000eb7 -CSEG XT_NOTEQUAL 000005ac -SET XT_RX 000000b6 -SET XT_RXQ 000000d1 -SET XT_USART_INIT_RX 000000a4 -CSEG VE_TX_POLL 000000db -CSEG XT_TX_POLL 000000e1 -CSEG PFA_TX_POLL 000000e2 -CSEG XT_TXQ_POLL 000000ef -CSEG VE_TXQ_POLL 000000e9 -CSEG PFA_TXQ_POLL 000000f0 -SET XT_TX 000000e1 -SET XT_TXQ 000000ef -SET XT_USART_INIT_TX 00000000 -CSEG VE_UBRR 000000f8 -CSEG XT_UBRR 000000fc -CSEG PFA_DOVALUE1 00000509 -CSEG PFA_UBRR 000000fd -ESEG EE_UBRRVAL 000000ca -CSEG XT_EDEFERFETCH 0000101a -CSEG XT_EDEFERSTORE 00001024 -CSEG VE_USART 00000100 -CSEG XT_USART 00000105 -CSEG PFA_USART 00000106 -CSEG XT_BYTESWAP 00000792 -SET pc_ 0000011b -CSEG PFA_COLD 00000ec0 -CSEG DO_INTERRUPT 00000134 -CSEG DO_EXECUTE 0000012a -CSEG XT_ISREXEC 00000906 -ESEG intvec 00000000 -DSEG intcnt 00000212 -SET AMFORTH_NRWW_SIZE 00001ffe -CSEG VE_MPLUS 00000154 -CSEG XT_MPLUS 00000157 -CSEG PFA_MPLUS 00000158 -CSEG XT_S2D 00001255 -CSEG XT_DPLUS 00000879 -CSEG VE_UDSTAR 0000015b -CSEG XT_UDSTAR 0000015f -CSEG PFA_UDSTAR 00000160 -CSEG XT_TO_R 00000598 -CSEG XT_UMSTAR 00000679 -CSEG XT_DROP 00000572 -CSEG XT_R_FROM 0000058f -CSEG XT_ROT 0000057a -CSEG VE_UMAX 0000016a -CSEG XT_UMAX 0000016e -CSEG PFA_UMAX 0000016f -CSEG XT_2DUP 000009ca -CSEG XT_ULESS 000005f5 -CSEG UMAX1 00000174 -CSEG VE_UMIN 00000176 -CSEG XT_UMIN 0000017a -CSEG PFA_UMIN 0000017b -CSEG XT_UGREATER 00000600 -CSEG UMIN1 00000180 -CSEG XT_IMMEDIATEQ 00000182 -CSEG PFA_IMMEDIATEQ 00000183 -CSEG XT_ZEROEQUAL 000005b3 -CSEG IMMEDIATEQ1 0000018b -CSEG XT_ONE 00001274 -CSEG XT_TRUE 000005e4 -CSEG VE_NAME2FLAGS 0000018d -CSEG XT_NAME2FLAGS 00000194 -CSEG PFA_NAME2FLAGS 00000195 -CSEG XT_FETCHI 0000082c -CSEG VE_NEWEST 0000019a -CSEG XT_NEWEST 0000019f -CSEG PFA_DOVARIABLE 000004dc -CSEG PFA_NEWEST 000001a0 -DSEG ram_newest 0000024b -CSEG VE_LATEST 000001a1 -CSEG XT_LATEST 000001a6 -CSEG PFA_LATEST 000001a7 -DSEG ram_latest 0000024f -CSEG VE_DOCREATE 000001a8 -CSEG XT_DOCREATE 000001ae -CSEG PFA_DOCREATE 000001af -CSEG XT_PARSENAME 00000e1a -CSEG XT_WLSCOPE 00000305 -CSEG XT_CELLPLUS 000009c2 -CSEG XT_STORE 0000051a -CSEG XT_HEADER 000002ea -CSEG VE_BACKSLASH 000001b9 -CSEG XT_BACKSLASH 000001bc -CSEG PFA_BACKSLASH 000001bd -CSEG XT_SOURCE 00000e01 -CSEG XT_NIP 00000589 -CSEG XT_TO_IN 000009e3 -CSEG VE_LPAREN 000001c2 -CSEG XT_LPAREN 000001c5 -CSEG PFA_LPAREN 000001c6 -CSEG XT_PARSE 00000ded -CSEG XT_2DROP 000009d3 -CSEG VE_COMPILE 000001cb -CSEG XT_COMPILE 000001d1 -CSEG PFA_COMPILE 000001d2 -CSEG XT_ICELLPLUS 00001011 -CSEG XT_COMMA 000001dc -CSEG VE_COMMA 000001d9 -CSEG PFA_COMMA 000001dd -CSEG XT_DP 00000a13 -CSEG XT_STOREI 0000080d -CSEG XT_DOTO 00000fff -CSEG PFA_DP 00000a14 -CSEG VE_BRACKETTICK 000001e4 -CSEG XT_BRACKETTICK 000001e8 -CSEG PFA_BRACKETTICK 000001e9 -CSEG XT_TICK 00000c70 -CSEG XT_LITERAL 000001f2 -CSEG VE_LITERAL 000001ec -CSEG PFA_LITERAL 000001f3 -CSEG VE_SLITERAL 000001f7 -CSEG XT_SLITERAL 000001fd -CSEG PFA_SLITERAL 000001fe -CSEG XT_DOSLITERAL 00000bd3 -CSEG XT_SCOMMA 00000be1 -CSEG XT_GMARK 00000202 -CSEG PFA_GMARK 00000203 -CSEG XT_GRESOLVE 00000207 -CSEG PFA_GRESOLVE 00000208 -CSEG XT_QSTACK 00000fbd -CSEG XT_LMARK 0000020d -CSEG PFA_LMARK 0000020e -CSEG XT_LRESOLVE 00000210 -CSEG PFA_LRESOLVE 00000211 -CSEG VE_AHEAD 00000214 -CSEG XT_AHEAD 00000219 -CSEG PFA_AHEAD 0000021a -CSEG XT_DOBRANCH 000004bd -CSEG VE_IF 0000021e -CSEG XT_IF 00000221 -CSEG PFA_IF 00000222 -CSEG VE_ELSE 00000226 -CSEG XT_ELSE 0000022a -CSEG PFA_ELSE 0000022b -CSEG VE_THEN 00000231 -CSEG XT_THEN 00000235 -CSEG PFA_THEN 00000236 -CSEG VE_BEGIN 00000238 -CSEG XT_BEGIN 0000023d -CSEG PFA_BEGIN 0000023e -CSEG VE_WHILE 00000240 -CSEG XT_WHILE 00000245 -CSEG PFA_WHILE 00000246 -CSEG VE_REPEAT 00000249 -CSEG XT_REPEAT 0000024e -CSEG PFA_REPEAT 0000024f -CSEG XT_AGAIN 00000262 -CSEG VE_UNTIL 00000252 -CSEG XT_UNTIL 00000257 -CSEG PFA_UNTIL 00000258 -CSEG VE_AGAIN 0000025d -CSEG PFA_AGAIN 00000263 -CSEG VE_DO 00000267 -CSEG XT_DO 0000026a -CSEG PFA_DO 0000026b -CSEG XT_DODO 00000734 -CSEG XT_TO_L 000002c5 -CSEG VE_LOOP 00000271 -CSEG XT_LOOP 00000275 -CSEG PFA_LOOP 00000276 -CSEG XT_DOLOOP 00000762 -CSEG XT_ENDLOOP 000002ac -CSEG VE_PLUSLOOP 0000027a -CSEG XT_PLUSLOOP 0000027f -CSEG PFA_PLUSLOOP 00000280 -CSEG XT_DOPLUSLOOP 00000753 -CSEG VE_LEAVE 00000284 -CSEG XT_LEAVE 00000289 -CSEG PFA_LEAVE 0000028a -CSEG XT_UNLOOP 0000076d -CSEG VE_QDO 0000028f -CSEG XT_QDO 00000293 -CSEG PFA_QDO 00000294 -CSEG XT_QDOCHECK 0000029b -CSEG PFA_QDOCHECK 0000029c -CSEG PFA_QDOCHECK1 000002a3 -CSEG XT_INVERT 00000696 -CSEG VE_ENDLOOP 000002a6 -CSEG PFA_ENDLOOP 000002ad -CSEG LOOP1 000002ae -CSEG XT_L_FROM 000002b9 -CSEG XT_QDUP 00000552 -CSEG LOOP2 000002b5 -CSEG VE_L_FROM 000002b6 -CSEG PFA_L_FROM 000002ba -CSEG XT_LP 000002d8 -CSEG XT_FETCH 00000512 -CSEG XT_PLUSSTORE 000006fe -CSEG VE_TO_L 000002c2 -CSEG PFA_TO_L 000002c6 -CSEG XT_TWO 00001279 -CSEG VE_LP0 000002cd -CSEG XT_LP0 000002d1 -CSEG PFA_LP0 000002d2 -ESEG CFG_LP0 0000007e -CSEG VE_LP 000002d5 -CSEG PFA_LP 000002d9 -DSEG ram_lp 00000251 -CSEG VE_CREATE 000002da -CSEG XT_CREATE 000002df -CSEG PFA_CREATE 000002e0 -CSEG XT_REVEAL 0000030e -CSEG PFA_DOCONSTANT 000004e9 -CSEG VE_HEADER 000002e5 -CSEG PFA_HEADER 000002eb -CSEG XT_GREATERZERO 000005c1 -CSEG PFA_HEADER1 000002fc -CSEG XT_OR 000006b5 -CSEG XT_DOSCOMMA 00000be5 -CSEG XT_FETCHE 000007f9 -CSEG XT_THROW 00000ca7 -CSEG VE_WLSCOPE 000002ff -CSEG PFA_DODEFER1 00001079 -CSEG PFA_WLSCOPE 00000306 -ESEG CFG_WLSCOPE 0000007a -CSEG VE_REVEAL 00000309 -CSEG PFA_REVEAL 0000030f -CSEG REVEAL1 00000319 -CSEG XT_STOREE 000007d5 -CSEG VE_DOES 0000031a -CSEG XT_DOES 0000031f -CSEG PFA_DOES 00000320 -CSEG XT_DODOES 00000332 -CSEG DO_DODOES 00000327 -CSEG PFA_DODOES 00000333 -CSEG XT_NFA2CFA 000010e4 -CSEG VE_COLON 0000033b -CSEG XT_COLON 0000033e -CSEG PFA_COLON 0000033f -CSEG XT_COLONNONAME 00000349 -CSEG VE_COLONNONAME 00000343 -CSEG PFA_COLONNONAME 0000034a -CSEG XT_RBRACKET 0000035e -CSEG VE_SEMICOLON 00000352 -CSEG XT_SEMICOLON 00000355 -CSEG PFA_SEMICOLON 00000356 -CSEG XT_LBRACKET 00000366 -CSEG VE_RBRACKET 0000035b -CSEG PFA_RBRACKET 0000035f -CSEG XT_STATE 000009af -CSEG VE_LBRACKET 00000363 -CSEG PFA_LBRACKET 00000367 -CSEG VE_VARIABLE 0000036b -CSEG XT_VARIABLE 00000371 -CSEG PFA_VARIABLE 00000372 -CSEG XT_HERE 00000a24 -CSEG XT_CONSTANT 0000037d -CSEG XT_ALLOT 00000a2d -CSEG VE_CONSTANT 00000377 -CSEG PFA_CONSTANT 0000037e -CSEG VE_USER 00000384 -CSEG XT_USER 00000388 -CSEG PFA_USER 00000389 -CSEG PFA_DOUSER 000004ef -CSEG VE_RECURSE 0000038f -CSEG XT_RECURSE 00000395 -CSEG PFA_RECURSE 00000396 -CSEG VE_IMMEDIATE 0000039a -CSEG XT_IMMEDIATE 000003a1 -CSEG PFA_IMMEDIATE 000003a2 -CSEG XT_GET_CURRENT 00000443 -CSEG VE_BRACKETCHAR 000003ac -CSEG XT_BRACKETCHAR 000003b1 -CSEG PFA_BRACKETCHAR 000003b2 -CSEG XT_CHAR 00000d50 -CSEG VE_ABORTQUOTE 000003b7 -CSEG XT_ABORTQUOTE 000003bc -CSEG PFA_ABORTQUOTE 000003bd -CSEG XT_SQUOTE 00000925 -CSEG XT_QABORT 000003ce -CSEG VE_ABORT 000003c1 -CSEG XT_ABORT 000003c6 -CSEG PFA_ABORT 000003c7 -CSEG VE_QABORT 000003c9 -CSEG PFA_QABORT 000003cf -CSEG QABO1 000003d4 -CSEG XT_ITYPE 00000c06 -CSEG VE_GET_STACK 000003d6 -CSEG XT_GET_STACK 000003dd -CSEG PFA_N_FETCH_E2 000003f4 -CSEG PFA_N_FETCH_E1 000003ea -CSEG XT_I 00000745 -CSEG XT_1MINUS 000006ce -CSEG XT_CELLS 000009bc -CSEG XT_OVER 00000568 -CSEG VE_SET_STACK 000003f7 -CSEG XT_SET_STACK 000003fe -CSEG PFA_SET_STACK 000003ff -CSEG XT_ZEROLESS 000005ba -CSEG PFA_SET_STACK0 00000406 -CSEG PFA_SET_STACK2 00000413 -CSEG PFA_SET_STACK1 0000040e -CSEG XT_TUCK 000009db -CSEG VE_MAPSTACK 00000415 -CSEG XT_MAPSTACK 0000041c -CSEG PFA_MAPSTACK 0000041d -CSEG XT_BOUNDS 0000124c -CSEG PFA_MAPSTACK3 00000438 -CSEG PFA_MAPSTACK1 00000427 -CSEG XT_R_FETCH 000005a1 -CSEG XT_EXECUTE 000004b8 -CSEG PFA_MAPSTACK2 00000434 -CSEG VE_GET_CURRENT 0000043b -CSEG PFA_GET_CURRENT 00000444 -ESEG CFG_CURRENT 00000084 -CSEG VE_GET_ORDER 00000448 -CSEG XT_GET_ORDER 0000044f -CSEG PFA_GET_ORDER 00000450 -ESEG CFG_ORDERLISTLEN 00000088 -CSEG VE_CFG_ORDER 00000454 -CSEG XT_CFG_ORDER 0000045b -CSEG PFA_CFG_ORDER 0000045c -CSEG VE_COMPARE 0000045d -CSEG XT_COMPARE 00000463 -CSEG PFA_COMPARE 00000464 -CSEG PFA_COMPARE_LOOP 00000470 -CSEG PFA_COMPARE_NOTEQUAL 0000047e -CSEG PFA_COMPARE_ENDREACHED2 00000479 -CSEG PFA_COMPARE_ENDREACHED 0000047a -CSEG PFA_COMPARE_CHECKLASTCHAR 0000047e -CSEG PFA_COMPARE_DONE 00000480 -CSEG VE_NFA2LFA 00000484 -CSEG XT_NFA2LFA 0000048a -CSEG PFA_NFA2LFA 0000048b -CSEG XT_NAME2STRING 000010d8 -CSEG XT_2SLASH 0000069d -CSEG VE_APPLTURNKEY 00000490 -CSEG XT_APPLTURNKEY 00000498 -CSEG PFA_APPLTURNKEY 00000499 -CSEG XT_INTON 000008dd -CSEG XT_DOT_VER 00000fca -CSEG XT_SPACE 00000c48 -CSEG XT_F_CPU 000009a4 -CSEG XT_UMSLASHMOD 0000065b -CSEG XT_DECIMAL 00000a42 -CSEG XT_DOT 00000b88 -CSEG VE_EXIT 000004aa -CSEG PFA_EXIT 000004af -CSEG VE_EXECUTE 000004b2 -CSEG PFA_EXECUTE 000004b9 -CSEG PFA_DOBRANCH 000004be -CSEG PFA_DOCONDBRANCH 000004c8 -CSEG PFA_DOLITERAL 000004cf -CSEG XT_DOVARIABLE 000004db -CSEG XT_DOCONSTANT 000004e8 -CSEG XT_DOUSER 000004ee -CSEG VE_DOVALUE 000004fd -CSEG XT_DOVALUE 00000503 -CSEG PFA_DOVALUE 00000504 -CSEG VE_FETCH 0000050f -CSEG PFA_FETCH 00000513 -CSEG PFA_FETCHRAM 00000513 -CSEG VE_STORE 00000517 -CSEG PFA_STORE 0000051b -CSEG PFA_STORERAM 0000051b -CSEG VE_CSTORE 00000523 -CSEG PFA_CSTORE 00000527 -CSEG VE_CFETCH 0000052e -CSEG PFA_CFETCH 00000532 -CSEG VE_FETCHU 00000536 -CSEG XT_FETCHU 00000539 -CSEG PFA_FETCHU 0000053a -CSEG XT_UP_FETCH 0000079b -CSEG VE_STOREU 0000053e -CSEG XT_STOREU 00000541 -CSEG PFA_STOREU 00000542 -CSEG VE_DUP 00000546 -CSEG PFA_DUP 0000054b -CSEG VE_QDUP 0000054e -CSEG PFA_QDUP 00000553 -CSEG PFA_QDUP1 00000558 -CSEG VE_SWAP 00000559 -CSEG PFA_SWAP 0000055e -CSEG VE_OVER 00000564 -CSEG PFA_OVER 00000569 -CSEG VE_DROP 0000056e -CSEG PFA_DROP 00000573 -CSEG VE_ROT 00000576 -CSEG PFA_ROT 0000057b -CSEG VE_NIP 00000585 -CSEG PFA_NIP 0000058a -CSEG VE_R_FROM 0000058c -CSEG PFA_R_FROM 00000590 -CSEG VE_TO_R 00000595 -CSEG PFA_TO_R 00000599 -CSEG VE_R_FETCH 0000059e -CSEG PFA_R_FETCH 000005a2 -CSEG VE_NOTEQUAL 000005a9 -CSEG PFA_NOTEQUAL 000005ad -CSEG VE_ZEROEQUAL 000005b0 -CSEG PFA_ZEROEQUAL 000005b4 -CSEG PFA_ZERO1 000005f0 -CSEG PFA_TRUE1 000005e7 -CSEG VE_ZEROLESS 000005b7 -CSEG PFA_ZEROLESS 000005bb -CSEG VE_GREATERZERO 000005be -CSEG PFA_GREATERZERO 000005c2 -CSEG VE_DGREATERZERO 000005c7 -CSEG XT_DGREATERZERO 000005cb -CSEG PFA_DGREATERZERO 000005cc -CSEG VE_DXT_ZEROLESS 000005d5 -CSEG XT_DXT_ZEROLESS 000005d9 -CSEG PFA_DXT_ZEROLESS 000005da -CSEG VE_TRUE 000005e0 -CSEG PFA_TRUE 000005e5 -CSEG VE_ZERO 000005ea -CSEG PFA_ZERO 000005ee -CSEG VE_ULESS 000005f2 -CSEG PFA_ULESS 000005f6 -CSEG VE_UGREATER 000005fd -CSEG PFA_UGREATER 00000601 -CSEG VE_LESS 00000604 -CSEG XT_LESS 00000607 -CSEG PFA_LESS 00000608 -CSEG PFA_LESSDONE 0000060c -CSEG VE_GREATER 0000060e -CSEG XT_GREATER 00000611 -CSEG PFA_GREATER 00000612 -CSEG PFA_GREATERDONE 00000616 -CSEG VE_LOG2 00000619 -CSEG XT_LOG2 0000061d -CSEG PFA_LOG2 0000061e -CSEG PFA_LOG2_1 00000621 -CSEG PFA_LOG2_2 00000627 -CSEG VE_MINUS 00000629 -CSEG XT_MINUS 0000062c -CSEG PFA_MINUS 0000062d -CSEG VE_PLUS 00000633 -CSEG PFA_PLUS 00000637 -CSEG VE_MSTAR 0000063c -CSEG XT_MSTAR 0000063f -CSEG PFA_MSTAR 00000640 -CSEG VE_UMSLASHMOD 00000656 -CSEG PFA_UMSLASHMOD 0000065c -CSEG PFA_UMSLASHMODmod 00000661 -CSEG PFA_UMSLASHMODmod_loop 00000662 -CSEG PFA_UMSLASHMODmod_loop_control 0000066f -CSEG PFA_UMSLASHMODmod_subtract 0000066c -CSEG PFA_UMSLASHMODmod_done 00000671 -CSEG VE_UMSTAR 00000675 -CSEG PFA_UMSTAR 0000067a -CSEG VE_INVERT 00000691 -CSEG PFA_INVERT 00000697 -CSEG VE_2SLASH 0000069a -CSEG PFA_2SLASH 0000069e -CSEG VE_2STAR 000006a1 -CSEG XT_2STAR 000006a4 -CSEG PFA_2STAR 000006a5 -CSEG VE_AND 000006a8 -CSEG PFA_AND 000006ad -CSEG VE_OR 000006b2 -CSEG PFA_OR 000006b6 -CSEG VE_XOR 000006bb -CSEG XT_XOR 000006bf -CSEG PFA_XOR 000006c0 -CSEG VE_1PLUS 000006c5 -CSEG PFA_1PLUS 000006c9 -CSEG VE_1MINUS 000006cb -CSEG PFA_1MINUS 000006cf -CSEG VE_QNEGATE 000006d1 -CSEG XT_QNEGATE 000006d7 -CSEG PFA_QNEGATE 000006d8 -CSEG QNEG1 000006dc -CSEG XT_NEGATE 00000aa5 -CSEG VE_LSHIFT 000006dd -CSEG XT_LSHIFT 000006e2 -CSEG PFA_LSHIFT 000006e3 -CSEG PFA_LSHIFT1 000006e6 -CSEG PFA_LSHIFT2 000006eb -CSEG VE_RSHIFT 000006ec -CSEG XT_RSHIFT 000006f1 -CSEG PFA_RSHIFT 000006f2 -CSEG PFA_RSHIFT1 000006f5 -CSEG PFA_RSHIFT2 000006fa -CSEG VE_PLUSSTORE 000006fb -CSEG PFA_PLUSSTORE 000006ff -CSEG VE_RP_FETCH 0000070b -CSEG XT_RP_FETCH 0000070f -CSEG PFA_RP_FETCH 00000710 -CSEG VE_RP_STORE 00000715 -CSEG XT_RP_STORE 00000719 -CSEG PFA_RP_STORE 0000071a -CSEG VE_SP_FETCH 00000722 -CSEG XT_SP_FETCH 00000726 -CSEG PFA_SP_FETCH 00000727 -CSEG VE_SP_STORE 0000072b -CSEG XT_SP_STORE 0000072f -CSEG PFA_SP_STORE 00000730 -CSEG PFA_DODO 00000735 -CSEG PFA_DODO1 00000737 -CSEG VE_I 00000742 -CSEG PFA_I 00000746 -CSEG PFA_DOPLUSLOOP 00000754 -CSEG PFA_DOPLUSLOOP_LEAVE 0000075e -CSEG PFA_DOPLUSLOOP_NEXT 0000075b -CSEG PFA_DOLOOP 00000763 -CSEG VE_UNLOOP 00000768 -CSEG PFA_UNLOOP 0000076e -CSEG VE_CMOVE_G 00000773 -CSEG XT_CMOVE_G 00000778 -CSEG PFA_CMOVE_G 00000779 -CSEG PFA_CMOVE_G1 0000078a -CSEG PFA_CMOVE_G2 00000786 -CSEG VE_BYTESWAP 0000078f -CSEG PFA_BYTESWAP 00000793 -CSEG VE_UP_FETCH 00000797 -CSEG PFA_UP_FETCH 0000079c -CSEG VE_UP_STORE 000007a0 -CSEG XT_UP_STORE 000007a4 -CSEG PFA_UP_STORE 000007a5 -CSEG VE_1MS 000007a9 -CSEG XT_1MS 000007ad -CSEG PFA_1MS 000007ae -SET cycles 00000001 -SET loop_cycles 00000e66 -CSEG VE_2TO_R 000007b4 -CSEG XT_2TO_R 000007b8 -CSEG PFA_2TO_R 000007b9 -CSEG VE_2R_FROM 000007c3 -CSEG XT_2R_FROM 000007c7 -CSEG PFA_2R_FROM 000007c8 -CSEG VE_STOREE 000007d2 -CSEG PFA_STOREE 000007d6 -CSEG PFA_STOREE0 000007d6 -CSEG PFA_FETCHE2 00000804 -CSEG PFA_STOREE3 000007e0 -CSEG PFA_STOREE1 000007eb -CSEG PFA_STOREE4 000007e7 -CSEG PFA_STOREE2 000007ed -CSEG VE_FETCHE 000007f6 -CSEG PFA_FETCHE 000007fa -CSEG PFA_FETCHE1 000007fa -CSEG VE_STOREI 0000080a -CSEG PFA_STOREI 0000080e -ESEG EE_STOREI 000000a4 -CSEG VE_DO_STOREI_BIG 00000811 -CSEG XT_DO_STOREI 00000815 -CSEG PFA_DO_STOREI_BIG 00000816 -CSEG DO_STOREI_atmega 0001f000 -SET _pc 00000829 -CSEG pageload 0001f011 -CSEG DO_STOREI_writepage 0001f00a -CSEG dospm 0001f02d -EQU pagemask ffffff80 -CSEG pageload_loop 0001f017 -CSEG pageload_newdata 0001f025 -CSEG pageload_cont 0001f027 -CSEG pageload_done 0001f02c -CSEG Wait_ee 0001f030 -CSEG wait_spm 0001f032 -CSEG VE_FETCHI 00000829 -CSEG PFA_FETCHI 0000082d -CSEG VE_N_TO_R 00000836 -CSEG XT_N_TO_R 0000083a -CSEG PFA_N_TO_R 0000083b -CSEG PFA_N_TO_R1 0000083d -CSEG VE_N_R_FROM 00000848 -CSEG XT_N_R_FROM 0000084c -CSEG PFA_N_R_FROM 0000084d -CSEG PFA_N_R_FROM1 00000852 -CSEG VE_D2STAR 0000085a -CSEG XT_D2STAR 0000085e -CSEG PFA_D2STAR 0000085f -CSEG VE_D2SLASH 00000868 -CSEG XT_D2SLASH 0000086c -CSEG PFA_D2SLASH 0000086d -CSEG VE_DPLUS 00000876 -CSEG PFA_DPLUS 0000087a -CSEG VE_DMINUS 00000887 -CSEG XT_DMINUS 0000088a -CSEG PFA_DMINUS 0000088b -CSEG VE_DINVERT 00000899 -CSEG XT_DINVERT 0000089f -CSEG PFA_DINVERT 000008a0 -CSEG VE_UDOT 000008a9 -CSEG XT_UDOT 000008ac -CSEG PFA_UDOT 000008ad -CSEG XT_UDDOT 00000b90 -CSEG VE_UDOTR 000008b0 -CSEG XT_UDOTR 000008b4 -CSEG PFA_UDOTR 000008b5 -CSEG XT_UDDOTR 00000b99 -CSEG VE_SHOWWORDLIST 000008b9 -CSEG XT_SHOWWORDLIST 000008c2 -CSEG PFA_SHOWWORDLIST 000008c3 -CSEG XT_SHOWWORD 000008c8 -CSEG XT_TRAVERSEWORDLIST 000010bd -CSEG PFA_SHOWWORD 000008c9 -CSEG VE_WORDS 000008ce -CSEG XT_WORDS 000008d3 -CSEG PFA_WORDS 000008d4 -CSEG VE_INTON 000008d9 -CSEG PFA_INTON 000008de -CSEG VE_INTOFF 000008e0 -CSEG XT_INTOFF 000008e4 -CSEG PFA_INTOFF 000008e5 -CSEG VE_INTSTORE 000008e7 -CSEG PFA_INTSTORE 000008ec -CSEG VE_INTFETCH 000008f1 -CSEG XT_INTFETCH 000008f5 -CSEG PFA_INTFETCH 000008f6 -CSEG VE_INTTRAP 000008fb -CSEG XT_INTTRAP 00000901 -CSEG PFA_INTTRAP 00000902 -CSEG PFA_ISREXEC 00000907 -CSEG XT_ISREND 0000090b -CSEG PFA_ISREND 0000090c -CSEG PFA_ISREND1 0000090e -CSEG VE_PICK 0000090f -CSEG XT_PICK 00000913 -CSEG PFA_PICK 00000914 -CSEG VE_DOTSTRING 0000091a -CSEG XT_DOTSTRING 0000091d -CSEG PFA_DOTSTRING 0000091e -CSEG VE_SQUOTE 00000922 -CSEG PFA_SQUOTE 00000926 -CSEG PFA_SQUOTE1 0000092e -CSEG VE_FILL 0000092f -CSEG PFA_FILL 00000934 -CSEG PFA_FILL2 00000940 -CSEG PFA_FILL1 0000093b -CSEG VE_ENVIRONMENT 00000942 -CSEG XT_ENVIRONMENT 0000094a -CSEG PFA_ENVIRONMENT 0000094b -ESEG CFG_ENVIRONMENT 00000082 -CSEG VE_ENVWORDLISTS 0000094c -CSEG XT_ENVWORDLISTS 00000953 -CSEG PFA_ENVWORDLISTS 00000954 -CSEG VE_ENVSLASHPAD 00000957 -CSEG XT_ENVSLASHPAD 0000095b -CSEG PFA_ENVSLASHPAD 0000095c -CSEG XT_PAD 000009e9 -CSEG VE_ENVSLASHHOLD 00000960 -CSEG XT_ENVSLASHHOLD 00000965 -CSEG PFA_ENVSLASHHOLD 00000966 -CSEG VE_ENV_FORTHNAME 0000096a -CSEG XT_ENV_FORTHNAME 00000971 -CSEG PFA_EN_FORTHNAME 00000972 -CSEG VE_ENV_FORTHVERSION 00000979 -CSEG XT_ENV_FORTHVERSION 0000097f -CSEG PFA_EN_FORTHVERSION 00000980 -CSEG VE_ENV_CPU 00000983 -CSEG XT_ENV_CPU 00000987 -CSEG PFA_EN_CPU 00000988 -CSEG XT_ICOUNT 00000c32 -CSEG VE_ENV_MCUINFO 0000098c -CSEG XT_ENV_MCUINFO 00000992 -CSEG PFA_EN_MCUINFO 00000993 -CSEG VE_ENVUSERSIZE 00000996 -CSEG XT_ENVUSERSIZE 0000099b -CSEG PFA_ENVUSERSIZE 0000099c -CSEG VE_F_CPU 0000099f -CSEG PFA_F_CPU 000009a5 -CSEG VE_STATE 000009aa -CSEG PFA_STATE 000009b0 -DSEG ram_state 00000253 -CSEG VE_BASE 000009b1 -CSEG XT_BASE 000009b5 -CSEG PFA_BASE 000009b6 -CSEG VE_CELLS 000009b7 -CSEG VE_CELLPLUS 000009bd -CSEG PFA_CELLPLUS 000009c3 -CSEG VE_2DUP 000009c6 -CSEG PFA_2DUP 000009cb -CSEG VE_2DROP 000009ce -CSEG PFA_2DROP 000009d4 -CSEG VE_TUCK 000009d7 -CSEG PFA_TUCK 000009dc -CSEG VE_TO_IN 000009df -CSEG PFA_TO_IN 000009e4 -CSEG VE_PAD 000009e5 -CSEG PFA_PAD 000009ea -CSEG VE_EMIT 000009ef -CSEG XT_EMIT 000009f3 -CSEG PFA_EMIT 000009f4 -CSEG XT_UDEFERFETCH 00001042 -CSEG XT_UDEFERSTORE 0000104e -CSEG VE_EMITQ 000009f7 -CSEG XT_EMITQ 000009fc -CSEG PFA_EMITQ 000009fd -CSEG VE_KEY 00000a00 -CSEG XT_KEY 00000a04 -CSEG PFA_KEY 00000a05 -CSEG VE_KEYQ 00000a08 -CSEG XT_KEYQ 00000a0c -CSEG PFA_KEYQ 00000a0d -CSEG VE_DP 00000a10 -ESEG CFG_DP 00000074 -CSEG VE_EHERE 00000a17 -CSEG XT_EHERE 00000a1c -CSEG PFA_EHERE 00000a1d -ESEG EE_EHERE 00000078 -CSEG VE_HERE 00000a20 -CSEG PFA_HERE 00000a25 -ESEG EE_HERE 00000076 -CSEG VE_ALLOT 00000a28 -CSEG PFA_ALLOT 00000a2e -CSEG VE_BIN 00000a33 -CSEG XT_BIN 00000a37 -CSEG PFA_BIN 00000a38 -CSEG VE_DECIMAL 00000a3c -CSEG PFA_DECIMAL 00000a43 -CSEG VE_HEX 00000a48 -CSEG XT_HEX 00000a4c -CSEG PFA_HEX 00000a4d -CSEG VE_BL 00000a52 -CSEG XT_BL 00000a55 -CSEG PFA_BL 00000a56 -CSEG VE_TURNKEY 00000a57 -CSEG XT_TURNKEY 00000a5d -CSEG PFA_TURNKEY 00000a5e -ESEG CFG_TURNKEY 00000080 -CSEG VE_SLASHMOD 00000a61 -CSEG XT_SLASHMOD 00000a65 -CSEG PFA_SLASHMOD 00000a66 -CSEG PFA_SLASHMOD_1 00000a71 -CSEG PFA_SLASHMOD_2 00000a77 -CSEG PFA_SLASHMOD_3 00000a7a -CSEG PFA_SLASHMOD_5 00000a85 -CSEG PFA_SLASHMOD_4 00000a84 -CSEG PFA_SLASHMODmod_done 00000a90 -CSEG PFA_SLASHMOD_6 00000a8e -CSEG VE_USLASHMOD 00000a95 -CSEG XT_USLASHMOD 00000a9a -CSEG PFA_USLASHMOD 00000a9b -CSEG VE_NEGATE 00000aa0 -CSEG PFA_NEGATE 00000aa6 -CSEG VE_SLASH 00000aa9 -CSEG XT_SLASH 00000aac -CSEG PFA_SLASH 00000aad -CSEG VE_MOD 00000ab0 -CSEG XT_MOD 00000ab4 -CSEG PFA_MOD 00000ab5 -CSEG VE_ABS 00000ab8 -CSEG XT_ABS 00000abc -CSEG PFA_ABS 00000abd -CSEG VE_MIN 00000ac0 -CSEG XT_MIN 00000ac4 -CSEG PFA_MIN 00000ac5 -CSEG PFA_MIN1 00000aca -CSEG VE_MAX 00000acc -CSEG XT_MAX 00000ad0 -CSEG PFA_MAX 00000ad1 -CSEG PFA_MAX1 00000ad6 -CSEG VE_WITHIN 00000ad8 -CSEG XT_WITHIN 00000add -CSEG PFA_WITHIN 00000ade -CSEG VE_TOUPPER 00000ae5 -CSEG XT_TOUPPER 00000aeb -CSEG PFA_TOUPPER 00000aec -CSEG PFA_TOUPPER0 00000af7 -CSEG VE_TOLOWER 00000af8 -CSEG XT_TOLOWER 00000afe -CSEG PFA_TOLOWER 00000aff -CSEG PFA_TOLOWER0 00000b0a -CSEG VE_HLD 00000b0b -CSEG XT_HLD 00000b0f -CSEG PFA_HLD 00000b10 -DSEG ram_hld 00000255 -CSEG VE_HOLD 00000b11 -CSEG XT_HOLD 00000b15 -CSEG PFA_HOLD 00000b16 -CSEG VE_L_SHARP 00000b21 -CSEG XT_L_SHARP 00000b24 -CSEG PFA_L_SHARP 00000b25 -CSEG VE_SHARP 00000b29 -CSEG XT_SHARP 00000b2c -CSEG PFA_SHARP 00000b2d -CSEG XT_UDSLASHMOD 00000ba9 -CSEG PFA_SHARP1 00000b3a -CSEG VE_SHARP_S 00000b3f -CSEG XT_SHARP_S 00000b42 -CSEG PFA_SHARP_S 00000b43 -CSEG NUMS1 00000b43 -CSEG VE_SHARP_G 00000b4a -CSEG XT_SHARP_G 00000b4d -CSEG PFA_SHARP_G 00000b4e -CSEG VE_SIGN 00000b55 -CSEG XT_SIGN 00000b59 -CSEG PFA_SIGN 00000b5a -CSEG PFA_SIGN1 00000b60 -CSEG VE_DDOTR 00000b61 -CSEG XT_DDOTR 00000b65 -CSEG PFA_DDOTR 00000b66 -CSEG XT_DABS 0000113a -CSEG XT_SPACES 00000c51 -CSEG XT_TYPE 00000c61 -CSEG VE_DOTR 00000b74 -CSEG XT_DOTR 00000b77 -CSEG PFA_DOTR 00000b78 -CSEG VE_DDOT 00000b7d -CSEG XT_DDOT 00000b80 -CSEG PFA_DDOT 00000b81 -CSEG VE_DOT 00000b85 -CSEG PFA_DOT 00000b89 -CSEG VE_UDDOT 00000b8c -CSEG PFA_UDDOT 00000b91 -CSEG VE_UDDOTR 00000b95 -CSEG PFA_UDDOTR 00000b9a -CSEG VE_UDSLASHMOD 00000ba4 -CSEG PFA_UDSLASHMOD 00000baa -CSEG VE_DIGITQ 00000bb4 -CSEG XT_DIGITQ 00000bb9 -CSEG PFA_DIGITQ 00000bba -CSEG PFA_DOSLITERAL 00000bd4 -CSEG VE_SCOMMA 00000bde -CSEG PFA_SCOMMA 00000be2 -CSEG PFA_DOSCOMMA 00000be6 -CSEG PFA_SCOMMA2 00000bf8 -CSEG PFA_SCOMMA1 00000bf2 -CSEG PFA_SCOMMA3 00000bff -CSEG VE_ITYPE 00000c01 -CSEG PFA_ITYPE 00000c07 -CSEG PFA_ITYPE2 00000c1a -CSEG PFA_ITYPE1 00000c12 -CSEG XT_LOWEMIT 00000c27 -CSEG XT_HIEMIT 00000c23 -CSEG PFA_ITYPE3 00000c21 -CSEG PFA_HIEMIT 00000c24 -CSEG PFA_LOWEMIT 00000c28 -CSEG VE_ICOUNT 00000c2d -CSEG PFA_ICOUNT 00000c33 -CSEG VE_CR 00000c38 -CSEG XT_CR 00000c3b -CSEG PFA_CR 00000c3c -CSEG VE_SPACE 00000c43 -CSEG PFA_SPACE 00000c49 -CSEG VE_SPACES 00000c4c -CSEG PFA_SPACES 00000c52 -CSEG SPCS1 00000c54 -CSEG SPCS2 00000c5b -CSEG VE_TYPE 00000c5d -CSEG PFA_TYPE 00000c62 -CSEG PFA_TYPE2 00000c6c -CSEG PFA_TYPE1 00000c67 -CSEG VE_TICK 00000c6d -CSEG PFA_TICK 00000c71 -CSEG XT_FORTHRECOGNIZER 00000f32 -CSEG XT_RECOGNIZE 00000f3d -CSEG XT_DT_NULL 00000fb0 -CSEG XT_NOOP 00000fe5 -CSEG PFA_TICK1 00000c82 -CSEG VE_HANDLER 00000c84 -CSEG XT_HANDLER 00000c8a -CSEG PFA_HANDLER 00000c8b -CSEG VE_CATCH 00000c8c -CSEG XT_CATCH 00000c91 -CSEG PFA_CATCH 00000c92 -CSEG VE_THROW 00000ca2 -CSEG PFA_THROW 00000ca8 -CSEG PFA_THROW1 00000cae -CSEG VE_CSKIP 00000cbb -CSEG XT_CSKIP 00000cc0 -CSEG PFA_CSKIP 00000cc1 -CSEG PFA_CSKIP1 00000cc2 -CSEG PFA_CSKIP2 00000ccf -CSEG XT_SLASHSTRING 00000e0b -CSEG VE_CSCAN 00000cd2 -CSEG XT_CSCAN 00000cd7 -CSEG PFA_CSCAN 00000cd8 -CSEG PFA_CSCAN1 00000cda -CSEG PFA_CSCAN2 00000cec -CSEG VE_ACCEPT 00000cf2 -CSEG XT_ACCEPT 00000cf7 -CSEG PFA_ACCEPT 00000cf8 -CSEG ACC1 00000cfc -CSEG XT_CRLFQ 00000d38 -CSEG ACC5 00000d2a -CSEG ACC3 00000d1a -CSEG ACC6 00000d18 -CSEG XT_BS 00000d30 -CSEG ACC4 00000d28 -CSEG PFA_ACCEPT6 00000d21 -CSEG VE_REFILL 00000d43 -CSEG XT_REFILL 00000d48 -CSEG PFA_REFILL 00000d49 -CSEG VE_CHAR 00000d4c -CSEG PFA_CHAR 00000d51 -CSEG VE_NUMBER 00000d55 -CSEG XT_NUMBER 00000d5a -CSEG PFA_NUMBER 00000d5b -CSEG XT_QSIGN 00000d9e -CSEG XT_SET_BASE 00000db1 -CSEG PFA_NUMBER0 00000d71 -CSEG XT_TO_NUMBER 00000dcf -CSEG PFA_NUMBER1 00000d93 -CSEG PFA_NUMBER2 00000d8a -CSEG PFA_NUMBER6 00000d8b -CSEG PFA_NUMBER3 00000d87 -CSEG XT_DNEGATE 00001147 -CSEG PFA_NUMBER5 00000d99 -CSEG PFA_NUMBER4 00000d98 -CSEG PFA_QSIGN 00000d9f -CSEG PFA_NUMBERSIGN_DONE 00000daa -CSEG XT_BASES 00000dac -CSEG PFA_SET_BASE 00000db2 -CSEG SET_BASE1 00000dc7 -CSEG SET_BASE2 00000dc8 -CSEG VE_TO_NUMBER 00000dc9 -CSEG TONUM1 00000dd0 -CSEG TONUM3 00000de7 -CSEG TONUM2 00000ddb -CSEG XT_2SWAP 0000116b -CSEG VE_PARSE 00000de8 -CSEG PFA_PARSE 00000dee -CSEG VE_SOURCE 00000dfc -CSEG PFA_SOURCE 00000e02 -CSEG VE_SLASHSTRING 00000e05 -CSEG PFA_SLASHSTRING 00000e0c -CSEG VE_PARSENAME 00000e13 -CSEG PFA_PARSENAME 00000e1b -CSEG XT_SKIPSCANCHAR 00000e1e -CSEG PFA_SKIPSCANCHAR 00000e1f -CSEG VE_FINDXT 00000e30 -CSEG XT_FINDXT 00000e36 -CSEG PFA_FINDXT 00000e37 -CSEG XT_FINDXTA 00000e42 -CSEG PFA_FINDXT1 00000e41 -CSEG PFA_FINDXTA 00000e43 -CSEG XT_SEARCH_WORDLIST 0000108b -CSEG PFA_FINDXTA1 00000e4f -CSEG XT_DEFAULT_PROMPTOK 00000e50 -CSEG PFA_DEFAULT_PROMPTOK 00000e51 -CSEG VE_PROMPTOK 00000e57 -CSEG XT_PROMPTOK 00000e5b -CSEG PFA_PROMPTOK 00000e5c -CSEG XT_DEFAULT_PROMPTREADY 00000e5f -CSEG PFA_DEFAULT_PROMPTREADY 00000e60 -CSEG VE_PROMPTREADY 00000e66 -CSEG XT_PROMPTREADY 00000e6b -CSEG PFA_PROMPTREADY 00000e6c -CSEG XT_DEFAULT_PROMPTERROR 00000e6f -CSEG PFA_DEFAULT_PROMPTERROR 00000e70 -CSEG VE_PROMPTERROR 00000e81 -CSEG XT_PROMPTERROR 00000e86 -CSEG PFA_PROMPTERROR 00000e87 -CSEG VE_QUIT 00000e8a -CSEG XT_QUIT 00000e8e -CSEG PFA_QUIT 00000e8f -CSEG XT_SP0 00000eef -CSEG XT_RP0 00000efc -CSEG PFA_QUIT2 00000e97 -CSEG PFA_QUIT4 00000e9d -CSEG PFA_QUIT3 00000eaf -CSEG XT_INTERPRET 00000f15 -CSEG PFA_QUIT5 00000ead -CSEG VE_PAUSE 00000eb2 -CSEG PFA_PAUSE 00000eb8 -DSEG ram_pause 00000257 -CSEG XT_RDEFERFETCH 0000102e -CSEG XT_RDEFERSTORE 00001038 -CSEG VE_COLD 00000ebb -CSEG clearloop 00000ec7 -DSEG ram_user1 00000259 -CSEG PFA_WARM 00000ee2 -CSEG VE_WARM 00000edd -CSEG XT_WARM 00000ee1 -CSEG XT_INIT_RAM 000011b6 -CSEG XT_DEFERSTORE 00001059 -CSEG VE_SP0 00000eeb -CSEG PFA_SP0 00000ef0 -CSEG VE_SP 00000ef3 -CSEG XT_SP 00000ef6 -CSEG PFA_SP 00000ef7 -CSEG VE_RP0 00000ef8 -CSEG PFA_RP0 00000efd -CSEG XT_DORP0 00000f00 -CSEG PFA_DORP0 00000f01 -CSEG VE_DEPTH 00000f02 -CSEG XT_DEPTH 00000f07 -CSEG PFA_DEPTH 00000f08 -CSEG VE_INTERPRET 00000f0e -CSEG PFA_INTERPRET 00000f16 -CSEG PFA_INTERPRET2 00000f26 -CSEG PFA_INTERPRET1 00000f21 -CSEG VE_FORTHRECOGNIZER 00000f28 -CSEG PFA_FORTHRECOGNIZER 00000f33 -ESEG CFG_FORTHRECOGNIZER 0000007c -CSEG VE_RECOGNIZE 00000f36 -CSEG PFA_RECOGNIZE 00000f3e -CSEG XT_RECOGNIZE_A 00000f48 -CSEG PFA_RECOGNIZE1 00000f47 -CSEG PFA_RECOGNIZE_A 00000f49 -CSEG PFA_RECOGNIZE_A1 00000f59 -CSEG VE_DT_NUM 00000f5d -CSEG XT_DT_NUM 00000f62 -CSEG PFA_DT_NUM 00000f63 -CSEG VE_DT_DNUM 00000f66 -CSEG XT_DT_DNUM 00000f6c -CSEG PFA_DT_DNUM 00000f6d -CSEG XT_2LITERAL 00001265 -CSEG VE_REC_NUM 00000f70 -CSEG XT_REC_NUM 00000f76 -CSEG PFA_REC_NUM 00000f77 -CSEG PFA_REC_NONUMBER 00000f82 -CSEG PFA_REC_INTNUM2 00000f80 -CSEG VE_REC_FIND 00000f84 -CSEG XT_REC_FIND 00000f8a -CSEG PFA_REC_FIND 00000f8b -CSEG PFA_REC_WORD_FOUND 00000f93 -CSEG XT_DT_XT 00000f9a -CSEG VE_DT_XT 00000f95 -CSEG PFA_DT_XT 00000f9b -CSEG XT_R_WORD_INTERPRET 00000f9e -CSEG XT_R_WORD_COMPILE 00000fa2 -CSEG PFA_R_WORD_INTERPRET 00000f9f -CSEG PFA_R_WORD_COMPILE 00000fa3 -CSEG PFA_R_WORD_COMPILE1 00000fa8 -CSEG VE_DT_NULL 00000faa -CSEG PFA_DT_NULL 00000fb1 -CSEG XT_FAIL 00000fb4 -CSEG PFA_FAIL 00000fb5 -CSEG VE_QSTACK 00000fb8 -CSEG PFA_QSTACK 00000fbe -CSEG PFA_QSTACK1 00000fc5 -CSEG VE_DOT_VER 00000fc6 -CSEG PFA_DOT_VER 00000fcb -CSEG VE_NOOP 00000fe1 -CSEG PFA_NOOP 00000fe6 -CSEG VE_UNUSED 00000fe7 -CSEG XT_UNUSED 00000fec -CSEG PFA_UNUSED 00000fed -CSEG VE_TO 00000ff1 -CSEG XT_TO 00000ff4 -CSEG PFA_TO 00000ff5 -CSEG XT_TO_BODY 0000125e -CSEG PFA_TO1 00001005 -CSEG PFA_DOTO 00001000 -CSEG VE_ICELLPLUS 0000100b -CSEG PFA_ICELLPLUS 00001012 -CSEG VE_EDEFERFETCH 00001014 -CSEG PFA_EDEFERFETCH 0000101b -CSEG VE_EDEFERSTORE 0000101e -CSEG PFA_EDEFERSTORE 00001025 -CSEG VE_RDEFERFETCH 00001028 -CSEG PFA_RDEFERFETCH 0000102f -CSEG VE_RDEFERSTORE 00001032 -CSEG PFA_RDEFERSTORE 00001039 -CSEG VE_UDEFERFETCH 0000103c -CSEG PFA_UDEFERFETCH 00001043 -CSEG VE_UDEFERSTORE 00001048 -CSEG PFA_UDEFERSTORE 0000104f -CSEG VE_DEFERSTORE 00001054 -CSEG PFA_DEFERSTORE 0000105a -CSEG VE_DEFERFETCH 00001061 -CSEG XT_DEFERFETCH 00001066 -CSEG PFA_DEFERFETCH 00001067 -CSEG VE_DODEFER 0000106d -CSEG XT_DODEFER 00001073 -CSEG PFA_DODEFER 00001074 -CSEG VE_SEARCH_WORDLIST 00001081 -CSEG PFA_SEARCH_WORDLIST 0000108c -CSEG XT_ISWORD 000010a0 -CSEG PFA_SEARCH_WORDLIST1 0000109a -CSEG PFA_ISWORD 000010a1 -CSEG XT_ICOMPARE 000010ee -CSEG PFA_ISWORD3 000010ae -CSEG VE_TRAVERSEWORDLIST 000010b2 -CSEG PFA_TRAVERSEWORDLIST 000010be -CSEG PFA_TRAVERSEWORDLIST1 000010bf -CSEG PFA_TRAVERSEWORDLIST2 000010ce -CSEG VE_NAME2STRING 000010d0 -CSEG PFA_NAME2STRING 000010d9 -CSEG VE_NFA2CFA 000010de -CSEG PFA_NFA2CFA 000010e5 -CSEG VE_ICOMPARE 000010e8 -CSEG PFA_ICOMPARE 000010ef -CSEG PFA_ICOMPARE_SAMELEN 000010f9 -CSEG PFA_ICOMPARE_DONE 0000111c -CSEG PFA_ICOMPARE_LOOP 000010ff -CSEG PFA_ICOMPARE_LASTCELL 0000110d -CSEG PFA_ICOMPARE_NEXTLOOP 00001114 -CSEG VE_STAR 0000111f -CSEG XT_STAR 00001122 -CSEG PFA_STAR 00001123 -CSEG VE_J 00001126 -CSEG XT_J 00001129 -CSEG PFA_J 0000112a -CSEG VE_DABS 00001136 -CSEG PFA_DABS 0000113b -CSEG PFA_DABS1 00001140 -CSEG VE_DNEGATE 00001141 -CSEG PFA_DNEGATE 00001148 -CSEG VE_CMOVE 0000114d -CSEG XT_CMOVE 00001152 -CSEG PFA_CMOVE 00001153 -CSEG PFA_CMOVE1 00001160 -CSEG PFA_CMOVE2 0000115c -CSEG VE_2SWAP 00001166 -CSEG PFA_2SWAP 0000116c -CSEG VE_REFILLTIB 00001171 -CSEG XT_REFILLTIB 00001178 -CSEG PFA_REFILLTIB 00001179 -CSEG XT_TIB 00001194 -CSEG XT_NUMBERTIB 0000119a -CSEG VE_SOURCETIB 00001184 -CSEG XT_SOURCETIB 0000118b -CSEG PFA_SOURCETIB 0000118c -CSEG VE_TIB 00001190 -CSEG PFA_TIB 00001195 -DSEG ram_tib 00000285 -CSEG VE_NUMBERTIB 00001196 -CSEG PFA_NUMBERTIB 0000119b -DSEG ram_sharptib 000002df -CSEG VE_EE2RAM 0000119c -CSEG XT_EE2RAM 000011a1 -CSEG PFA_EE2RAM 000011a2 -CSEG PFA_EE2RAM_1 000011a4 -CSEG PFA_EE2RAM_2 000011ae -CSEG VE_INIT_RAM 000011b0 -CSEG PFA_INI_RAM 000011b7 -ESEG EE_INITUSER 000000a8 -CSEG VE_SET_CURRENT 000011bf -CSEG XT_SET_CURRENT 000011c7 -CSEG PFA_SET_CURRENT 000011c8 -CSEG VE_WORDLIST 000011cc -CSEG XT_WORDLIST 000011d2 -CSEG PFA_WORDLIST 000011d3 -CSEG VE_FORTHWORDLIST 000011dc -CSEG XT_FORTHWORDLIST 000011e5 -CSEG PFA_FORTHWORDLIST 000011e6 -ESEG CFG_FORTHWORDLIST 00000086 -CSEG VE_SET_ORDER 000011e7 -CSEG XT_SET_ORDER 000011ee -CSEG PFA_SET_ORDER 000011ef -CSEG VE_SET_RECOGNIZERS 000011f3 -CSEG XT_SET_RECOGNIZERS 000011fd -CSEG PFA_SET_RECOGNIZERS 000011fe -ESEG CFG_RECOGNIZERLISTLEN 0000009a -CSEG VE_GET_RECOGNIZERS 00001202 -CSEG XT_GET_RECOGNIZERS 0000120c -CSEG PFA_GET_RECOGNIZERS 0000120d -CSEG VE_CODE 00001211 -CSEG XT_CODE 00001215 -CSEG PFA_CODE 00001216 -CSEG VE_ENDCODE 0000121c -CSEG XT_ENDCODE 00001222 -CSEG PFA_ENDCODE 00001223 -CSEG VE_MARKER 00001228 -CSEG XT_MARKER 0000122e -CSEG PFA_MARKER 0000122f -ESEG EE_MARKER 000000a6 -CSEG VE_POSTPONE 00001232 -CSEG XT_POSTPONE 00001238 -CSEG PFA_POSTPONE 00001239 -CSEG VE_BOUNDS 00001247 -CSEG PFA_BOUNDS 0000124d -CSEG VE_S2D 00001251 -CSEG PFA_S2D 00001256 -CSEG VE_TO_BODY 00001259 -CSEG VE_2LITERAL 0000125f -CSEG PFA_2LITERAL 00001266 -CSEG VE_EQUAL 0000126a -CSEG PFA_EQUAL 0000126e -CSEG VE_ONE 00001271 -CSEG PFA_ONE 00001275 -CSEG VE_TWO 00001276 -CSEG PFA_TWO 0000127a -CSEG VE_MINUSONE 0000127b -CSEG XT_MINUSONE 0000127e -CSEG PFA_MINUSONE 0000127f -SET DPSTART 00001280 -SET flashlast 00001280 -DSEG HERESTART 000002e1 -ESEG EHERESTART 000000cc -ESEG CFG_ORDERLIST 0000008a -ESEG CFG_RECOGNIZERLIST 0000009c -EQU UBRR_VAL 00000017 -EQU BAUD_REAL 00009600 -EQU BAUD_ERROR 00000000 diff --git a/amforth-6.5/appl/atmega2561/build.xml b/amforth-6.5/appl/atmega2561/build.xml deleted file mode 100644 index b7804aa..0000000 --- a/amforth-6.5/appl/atmega2561/build.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - Uploading Hexfiles for AVR atmega256 - - - - - - diff --git a/amforth-6.5/appl/atmega2561/dict_appl.inc b/amforth-6.5/appl/atmega2561/dict_appl.inc deleted file mode 100644 index a52b464..0000000 --- a/amforth-6.5/appl/atmega2561/dict_appl.inc +++ /dev/null @@ -1,5 +0,0 @@ -; this dictionary contains optional words -; they may be moved to the core dictionary if needed - -.include "words/applturnkey.asm" - diff --git a/amforth-6.5/appl/atmega2561/dict_appl_core.inc b/amforth-6.5/appl/atmega2561/dict_appl_core.inc deleted file mode 100644 index 93c0d8a..0000000 --- a/amforth-6.5/appl/atmega2561/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/atmega2561/words/applturnkey.asm b/amforth-6.5/appl/atmega2561/words/applturnkey.asm deleted file mode 100644 index f2726ff..0000000 --- a/amforth-6.5/appl/atmega2561/words/applturnkey.asm +++ /dev/null @@ -1,32 +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 -- cgit v1.2.3