Author: wmb Date: 2008-08-28 11:03:16 +0200 (Thu, 28 Aug 2008) New Revision: 892
Modified: ofw/core/ofwcore.fth Log: OFW core - when booting a Forth script, copy it to allocated memory so that it doesn't get overwritten when it chainloads the next stage.
Modified: ofw/core/ofwcore.fth =================================================================== --- ofw/core/ofwcore.fth 2008-08-27 06:48:20 UTC (rev 891) +++ ofw/core/ofwcore.fth 2008-08-28 09:03:16 UTC (rev 892) @@ -245,11 +245,18 @@
defer interpret-string ( adr len -- ) ' evaluate is interpret-string
+: safe-include-buffer ( adr len -- ? ) + dup alloc-mem ( adr len adr1 ) + swap 2>r ( adr r: adr1,len ) + 2r@ move ( r: adr1,len ) + 2r@ include-buffer ( ? r: adr1,len ) + 2r> free-mem ( ? ) +; : execute-buffer ( adr len -- ) true abort" Unrecognized program format" ; : execute-buffer ( adr len -- ) \ Try Forth - " \ " 2over substring? if include-buffer exit then ( adr len ) - " purpose: " 2over substring? if include-buffer exit then ( adr len ) - " id: " 2over substring? if include-buffer exit then ( adr len ) + " \ " 2over substring? if safe-include-buffer exit then ( adr len ) + " purpose: " 2over substring? if safe-include-buffer exit then ( adr len ) + " id: " 2over substring? if safe-include-buffer exit then ( adr len )
execute-buffer ;