From: George H. <geo...@us...> - 2011-07-21 14:30:01
|
Update of /cvsroot/win32forth/win32forth/src/kernel In directory vz-cvs-4.sog:/tmp/cvs-serv10054 Modified Files: fkernel.f Log Message: Added execute-parsing and task-status. Index: fkernel.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/kernel/fkernel.f,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -d -r1.75 -r1.76 *** fkernel.f 13 Jul 2011 11:52:26 -0000 1.75 --- fkernel.f 21 Jul 2011 14:29:59 -0000 1.76 *************** *** 1993,2014 **** next c; ! -2 CELLS ( init offset so TCB is 0 ) ( order IS important ) ! DUP USER RP0 CELL+ ( initial return stack pointer ) ! DUP USER SP0 CELL+ ( initial data stack pointer ) ! DUP USER TCB CELL+ ( task control block ) ! DUP ( *1 ) ( absolute min user area ) ! DUP USER &EXREC CELL+ ( for exception handling ) ! DUP USER &EXCEPT CELL+ ( for exception handling ) ! DUP USER HANDLER CELL+ ( throw frame ) ! DUP USER LP CELL+ ( local variable pointer ) ! DUP USER OP CELL+ ( object pointer ) ! DUP USER BASE CELL+ ( numeric radix ) ! DUP | USER RLLEN CELL+ ( read line length, used in file i/o see read-line ) ! DUP | USER RLNEOF CELL+ ( read line not eof, used in file i/o see read-line ) ! DUP USER HLD CELL+ ( numeric output pointer ) ! 80 CHARS ALIGNED + ( numeric output formatting buffer ) ! DUP USER PAD CELL+ ( extra ) ! MAXSTRING CHARS ALIGNED + ( user string buffer ) ! DUP NEXT-USER ! ( save top user variable offset in NEXT-USER ) ( *2 ) OVER - CONSTANT USEREXTRA ( add to USERMIN if you are going to do I/O ) ( *1 ) 3 CELLS + CONSTANT USERMIN ( absolute min user area ) --- 1993,2015 ---- next c; ! -3 CELLS ( init offset so TCB is 0 ) ( order IS important ) ! DUP USER TASK-STATUS CELL+ ( 32 bits for miscellaneous purposes. ) ! DUP USER RP0 CELL+ ( initial return stack pointer ) ! DUP USER SP0 CELL+ ( initial data stack pointer ) ! DUP USER TCB CELL+ ( task control block ) ! DUP ( *1 ) ( absolute min user area ) ! DUP USER &EXREC CELL+ ( for exception handling ) ! DUP USER &EXCEPT CELL+ ( for exception handling ) ! DUP USER HANDLER CELL+ ( throw frame ) ! DUP USER LP CELL+ ( local variable pointer ) ! DUP USER OP CELL+ ( object pointer ) ! DUP USER BASE CELL+ ( numeric radix ) ! DUP | USER RLLEN CELL+ ( read line length, used in file i/o see read-line ) ! DUP | USER RLNEOF CELL+ ( read line not eof, used in file i/o see read-line ) ! DUP USER HLD CELL+ ( numeric output pointer ) ! 80 CHARS ALIGNED + ( numeric output formatting buffer ) ! DUP USER PAD CELL+ ( extra ) ! MAXSTRING CHARS ALIGNED + ( user string buffer ) ! DUP NEXT-USER ! ( save top user variable offset in NEXT-USER ) ( *2 ) OVER - CONSTANT USEREXTRA ( add to USERMIN if you are going to do I/O ) ( *1 ) 3 CELLS + CONSTANT USERMIN ( absolute min user area ) *************** *** 5053,5064 **** \ -------------------- Evaluate --------------------------------------------- ! : EVALUATE ( addr len -- ) \ interpret string addr,len ! save-input (save-input) ! (SOURCE) 2! ! >IN OFF ! -1 TO SOURCE-ID ! ['] INTERPRET CATCH ! (restore-input) restore-input drop ! THROW ; \ -------------------- Include file support --------------------------------- --- 5054,5071 ---- \ -------------------- Evaluate --------------------------------------------- ! : execute-parsing ( addr len xt -- ... ) ! -rot -if ! save-input (save-input) ! (SOURCE) 2! ! >IN OFF ! -1 TO SOURCE-ID ! CATCH ! (restore-input) restore-input drop ! THROW ! else 2drop drop then ; ! ! : evaluate ( addr len -- ) \ interpret string addr,len ! ['] interpret execute-parsing ; ! \ -------------------- Include file support --------------------------------- |