Commit Graph

53 Commits

Author SHA1 Message Date
Jesse D. McDonald a1c55c0d64 fix for inverted condition in ABS 2020-10-28 01:21:02 -05:00
Jesse D. McDonald e7dacc5582 fix WITHIN to match ANS FORTH (low ≤ test < high) 2020-10-27 22:55:28 -05:00
Jesse D. McDonald 63b0c745ab rename WORD to PARSE-NAME (from FORTH 2012) which is a better match for the interface 2020-10-27 21:52:24 -05:00
Jesse D. McDonald 28559fc98c unify AGAIN and REPEAT; allow multiple WHILEs and BEGIN … WHILE … UNTIL 2020-10-27 21:18:17 -05:00
Jesse D. McDonald 1ceedba773 redefine 2CONSTANT in terms of CREATE DOES>, saving two cells per use 2020-10-27 16:59:00 -05:00
Jesse D. McDonald 687012b7df add #DFP for Decimal Fixed Precision numeric output 2020-10-27 16:56:44 -05:00
Jesse D. McDonald 67bb06dd8f refactor & reorganize 2020-10-27 16:56:44 -05:00
Jesse D. McDonald e268cac0a4 add a COMPOSE combinator and ALIAS defining word 2020-10-25 02:14:37 -05:00
Jesse D. McDonald 24682b970b align ALLOCATE'd memory to 8 bytes with a magic number in the extra cell 2020-10-25 01:49:42 -05:00
Jesse D. McDonald 0d107e17d2 add a generic MERGE-SORT function for linked lists 2020-10-24 20:49:00 -05:00
Jesse D. McDonald 7de6cf5a0c add tests for numeric literal parsing 2020-10-24 15:15:40 -05:00
Jesse D. McDonald 59ed031ca4 add parsing for binary, octal, and hexadecimal literals 2020-10-24 14:12:30 -05:00
Jesse D. McDonald f89a98e0b0 disallow interpreting string literals in bootstrap mode 2020-10-24 14:08:09 -05:00
Jesse D. McDonald 36e704b6cb fix for redundant U* primitive (signed and unsigned are the same) 2020-10-24 14:03:50 -05:00
Jesse D. McDonald 8dbc2939fc add DUPLICATE to ALLOCATE and copy a string or other data 2020-10-24 11:14:33 -05:00
Jesse D. McDonald 89c2f4df3d read string literals into a dynamically resized transient buffer 2020-10-24 11:07:38 -05:00
Jesse D. McDonald 46211d5662 make ALLOCATE of 0 bytes and FREE with a null address no-ops 2020-10-24 10:52:26 -05:00
Jesse D. McDonald d68804f866 add a Makefile rule for refreshing test expected results 2020-10-24 10:48:38 -05:00
Jesse D. McDonald 688fe7369e change %ALLOT to return the aligned address of the data structure 2020-10-23 23:33:14 -05:00
Jesse D. McDonald 21eb4fafc4 add CLOSURE to capture data and code in a single execution token 2020-10-23 23:32:35 -05:00
Jesse D. McDonald 15fa156d02 add N@ and N! to transfer a group of cells to or from memory 2020-10-23 23:31:11 -05:00
Jesse D. McDonald 92d806298b reorganize into multiple word lists & shrink bootstrap words 2020-10-23 19:39:29 -05:00
Jesse D. McDonald 4b98e19304 use ALLOCATE for the terminal input buffer and search order entries 2020-10-23 12:33:29 -05:00
Jesse D. McDonald 9cf133a715 remove BUDDY-STATS from the test output since the details vary 2020-10-23 12:31:20 -05:00
Jesse D. McDonald c09ca4a9e4 add RESIZE definition to match ALLOCATE and FREE 2020-10-23 01:32:33 -05:00
Jesse D. McDonald 7b44312892 add allocation of blocks for small objects with mmap 2020-10-22 23:34:05 -05:00
Jesse D. McDonald 64a1ee9810 add a simple unit-test framework 2020-10-22 21:03:27 -05:00
Jesse D. McDonald 447c212f09 implement LEAVE, [IF]…[ELSE]…[THEN], and various other changes 2020-10-22 20:55:01 -05:00
Jesse D. McDonald 77607934cd add a full complement of double-cell primitives 2020-10-21 20:11:40 -05:00
Jesse D. McDonald bcf5d80be0 add a basic README.md file 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 9e21704825 add large-object allocation (over 4 MB) with mmap 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 53c76a2e6a tweak prompt format 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 1a0fb71dd2 display exception code in default THROW handler 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 4460297631 add pictured numeric output definitions as per ANS FORTH 2020-10-21 00:44:23 -05:00
Jesse D. McDonald d90c8857e2 formalize 'THROW with string' & ensure default string is empty 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 96ebc29630 simplify primitive code 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 2ceb9f75da add more double-cell numeric primitives and definitions 2020-10-21 00:44:23 -05:00
Jesse D. McDonald b22e3e9c93 implement ALLOCATE and FREE using buddy allocator 2020-10-21 00:44:23 -05:00
Jesse D. McDonald c0434e415a fix for RSHIFT implemented as left shift 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 2eaa43f85f add decoding for { … } literals in SEE 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 29b949d583 add exception handling with THROW and CATCH, and a version of SEE 2020-10-21 00:44:23 -05:00
Jesse D. McDonald c0391de969 revise the input system to better align with ANS FORTH 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 3ae2ff353b add more primitives from the ANS FORTH standard 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 4528e9c5d8 add project .gdbinit script to simplify debugging 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 1d56576f49 separate bootstrap (asm) definitions from runtime definitions 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 3790a647fd implement the Search-Order word set 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 60333e365c fix DOES> to work as described in the ANS Forth standard 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 3a4e040ec1 implement CASE/OF, looping structures, :NONAME, and more 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 2d8f282611 revise startup code with comments and new definitions 2020-10-21 00:44:23 -05:00
Jesse D. McDonald 09afabc21c move comment words \ and ( to myforth.S for earlier commenting 2020-10-21 00:44:23 -05:00