ASM sources are greatly polished. More explanations are added as comments. Split environmental variable 'systemID' into 'CPU' and 'Model'. Most hForth source files can be used with other CPUs without modification by using conditional compilation (see COREEXT.F and DOUBLE.F for example). Thanks Neal Crook for comments and many valuable suggestions. Now all ASM sources can be assembled by TASM 1.0 and MASM 6.11. Many typographical errors are corrected. Control structure words are all revised. Control-flow stack is implemented on data stack. Control-flow stack item is represented by two data stack items as below: Control-flow stack item Representation (parameter and type) ----------------------- ------------------------------------- dest control-flow destination 0 orig control-flow origin 1 of-sys OF origin 2 case-sys x (any value) 3 do-sys ?DO origin DO destination colon-sys xt of current definition -1 hForth can detect a nonsense clause such as "BEGIN IF AGAIN THEN" easily. CS-ROLL and CS-PICK can be applied to the list of dests and origs only. This can be verified by checking whether the ORed type is 1. I can not think of a control-structure-mismatch that current hForth cannot catch. Some bugs are fixed including RESTORE-INPUT. Changes from 0.9.9 1997. 6. 30. Add TRHOW after FLUSH-FILE in SAVE-BUFFERS and BYE in MSDOS.F. 1997. 6. 23. Fix pack" in HF86ROM.ASM and HF86RAM.ASM. Fix SIO.F according to new EXE program structure. Changes from 0.9.7 1997. 5. 26. MSDOS.F: Fix RESTORE-INPUT to restore BLK correctly. 1997. 2. 28. Facelift to be used with other CPUs. 1997. 2. 19. Split environmental variable systemID into CPU and Model. 1997. 2. 6. Add Neal Crook's microdebugger and comments on assembly definitions. 1997. 1. 25. Add $THROWMSG macro and revise accordingly. 1997. 1. 18. Remove 'NullString' from assembly source. 1996. 12. 18. Revise 'head,'. 1996. 12. 14. DOSEXEC.F: Revise (DOSEXEC) in MSDOS.F. 1996. 12. 6. OPTIONAL.F: Fix 'compiles>' for colon-sys. 1996. 11. 29. OPTIONAL.F: Remove PICK which was added in assembly source. OPTIONAL.F: Revise CASE, ENDCASE, OF, ENDOF, RETRY for control-flow stack. OPTIONAL.F: Revise '.xt' due to the removal of 'do."' and change of 'doS"'. 1996. 12. 3. Revise PICK to catch stack underflow. 1996. 11. 29. Implement control-flow stack on data stack. Control-flow stack item consists of two data stack items, one for value and one for the type of control-flow stack item. control-flow stack item data stack representation dest control-flow_destination 0 orig control-flow_origin 1 of-sys OF_origin 2 case-sys x (any value) 3 do-sys ?DO_origin DO_destination colon-sys xt_of_current_definition -1 Add PICK. 'bal' is now the depth of control-flow stack. Drop 'lastXT'. Introduce 'notNONAME?' Add 'bal+' and 'bal-'. Drop 'orig+', 'orig-', 'dest+', 'dest-', 'dosys+', and 'dosys-'. Revise ':NONAME', ':', ';', 'linkLast', 'head,', RECURSE, 'DOES>', CONSTANT, CREATE, VALUE, VARIABLE, and QUIT. This change makes RECURSE work properly in ':NONAME ... ;' and '... DOES> ... ;'. Revise 'rake', AGAIN, AHEAD, IF, THEN, +LOOP, BEGIN, DO, ELSE, LOOP, UNTIL, and WHILE. Revise SLITERAL, '."', 'doS"' to allow a string larger than max char size. Revise $INSTR and remove 'do."'. Revise 'pack"'. ASM8086.F: Revise ';CODE' for control-flow stack. COREEXT.F: Provide CODE definition of ROLL. COREEXT.F: Revise '?DO' for control-flow stack. COREEXT.F: Revise 'C"' to catch exception -24 'parsed string overflow'. 1996. 8. 17. HF86EXE.ASM: Revise MAX-UD. 1996. 8. 10. HF86EXE.ASM: Replace 'COMPILE,' with 'code,' in the definition of 'compileCREATE'. 1996. 7. 19. DOUBLE.F: Fix 'M+'. Thanks M. Edward Borasky. 1996. 6. 19. Fix '/STRING'. 1996. 4. 15. ASM8086.F: ';CODE' is fixed. END-CODE is changed. 1996. 3. 1. MSDOS.F: Shift value of 'ior' of FILE words to system THROW code area, i.e. -4096..-256 . MSDOS.F: Remove subtle bug in 'SAVE-SYSTEM-AS'. Changes from 0.9.6 1996. 2. 10. Revise FM/MOD and SM/REM to catch result-out-of-range error in '80000. 2 FM/MOD'. 1996. 1. 19. Rename 'x,' to 'code,'; 'x@' to 'code@'; 'x!' to 'code!'; 'xb@' to 'codeB@' and 'xb!' to 'codeB!'. 1996. 1. 7 Rename non-Standard 'parse-word' to PARSE-WORD. 1995. 12. 2 Drop '?doLIST' and revise 'optiCOMPILE,'. 1995. 11. 28 Drop 'LIT,:' all together. Return CELLS to non-IMMEDIATE definition. Changes from 0.9.5 1995. 11. 27. In ASM8086.F ';CODE' is redefined following the change of 'DOES>' and 'doCREATE'. 1995. 11. 25. Add RETRY described by Dr. Astle in Forth Dimensions 17(4), 19-21 (1995). 1995. 11. 25. Make 'lastXT' VALUE word. 1995. 11. 24. For RAM model only Replace 'xhere' with HERE. Revise doVALUE, VALUE, TO, and all $VALUE macros. 1995. 11. 23. Revise doCREATE, CREATE, pipe, DOES>, and >BODY. 'pipe' is no longer processor-dependent. 1995. 11. 17. Move ERASE to ASM8086.F.