Changeset 506
- Timestamp:
- 02/08/08 04:14:39 (8 months ago)
- Location:
- trunk/thune
- Files:
-
- 8 modified
-
boot.c (modified) (3 diffs)
-
doc/UserManual (modified) (1 diff)
-
gl/gx_atoms.h (modified) (1 diff)
-
internal.h (modified) (1 diff)
-
mkboot.t (modified) (3 diffs)
-
rune/mkboot.t (modified) (1 diff)
-
scripts/obj_to_gx.t (modified) (2 diffs)
-
thune.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/thune/boot.c
r503 r506 24 24 " opcode! 19 'try make :try\n" 25 25 " opcode! 20 'ift make :ift\n" 26 " opcode! 21 'iff make :iff\n" 27 " opcode! 22 'if make :if\n" 28 " opcode! 23 'halt make :halt\n" 29 " opcode! 24 'quit make :quit\n" 30 " opcode! 25 'inc make :inc\n" 31 " opcode! 26 'dec make :dec\n" 32 " opcode! 27 '++ make :++\n" 33 " opcode! 28 '-- make :--\n" 34 " opcode! 29 'verify make :verify\n" 35 " opcode! 30 'forever make :forever\n" 26 " opcode! 21 'if-some make :if-some\n" 27 " opcode! 22 'iff make :iff\n" 28 " opcode! 23 'or-else make :or-else\n" 29 " opcode! 24 'if make :if\n" 30 " opcode! 25 'halt make :halt\n" 31 " opcode! 26 'quit make :quit\n" 32 " opcode! 27 'inc make :inc\n" 33 " opcode! 28 'dec make :dec\n" 34 " opcode! 29 '++ make :++\n" 35 " opcode! 30 '-- make :--\n" 36 " opcode! 31 'verify make :verify\n" 37 " opcode! 32 'forever make :forever\n" 36 38 " int!/decimal! :number!\n" 37 39 " word!/set-word!/get-word!/lit-word! :any-word!\n" … … 56 58 " to-block kernel-ops infuse\n" 57 59 "] proc :load ;(filename -- block)\n" 58 "[select if /keepdo] proc :case\n"60 "[select if-some do] proc :case\n" 59 61 "['break throw] proc :break\n" 60 62 "[\n" … … 90 92 "[ser old new | len] [\n" 91 93 " old length? :len\n" 92 " ser old find if /keep(new len change :ser recurse)\n"94 " ser old find if-some (new len change :ser recurse)\n" 93 95 " ser\n" 94 96 "] func :replace.all ;(ser old new -- ser)\n" -
trunk/thune/doc/UserManual
r503 r506 360 360 iff (logic -- ) Evaluate next value if false. 361 361 if/C (val val -- ) Evaluate next value if comparison is true. 362 if/keep (val -- [val]) Evaluate next value if true, else drop. 362 if-some (val -- [val]) Evaluate next value if true, else drop. 363 or-else (val -- [val]) Keep true value, or drop and evaluate next. 363 364 either (logic t-val f-val -- ) Evaluate either t-val or f-val. 364 365 forever (block -- ) Evaluate block until exception thrown. -
trunk/thune/gl/gx_atoms.h
r504 r506 1 1 // This file is automatically generated - do not edit. 2 2 3 #define UR_ATOM_DRAW_LIST_OPCODES 32 44 #define UR_ATOM_WIDTH 32 55 #define UR_ATOM_HEIGHT 32 66 #define UR_ATOM_AREA 32 77 #define UR_ATOM_RECT 3 288 #define UR_ATOM_RASTER 3 299 #define UR_ATOM_TEXTURE 33 010 #define UR_ATOM_ELEM 33 13 #define UR_ATOM_DRAW_LIST_OPCODES 326 4 #define UR_ATOM_WIDTH 327 5 #define UR_ATOM_HEIGHT 328 6 #define UR_ATOM_AREA 329 7 #define UR_ATOM_RECT 330 8 #define UR_ATOM_RASTER 331 9 #define UR_ATOM_TEXTURE 332 10 #define UR_ATOM_ELEM 333 11 11 #define UR_ATOM_CLOSE 184 12 #define UR_ATOM_FOCUS 33 213 #define UR_ATOM_RESIZE 33 314 #define UR_ATOM_KEY_DOWN 33 415 #define UR_ATOM_KEY_UP 33 516 #define UR_ATOM_MOUSE_MOVE 33 617 #define UR_ATOM_MOUSE_UP 33 718 #define UR_ATOM_MOUSE_DOWN 3 3819 #define UR_ATOM_MOUSE_WHEEL 3 3920 #define UR_ATOM_AMBIENT 34 021 #define UR_ATOM_DIFFUSE 34 122 #define UR_ATOM_SPECULAR 34 223 #define UR_ATOM_POS 34 324 #define UR_ATOM_SHADER 34 425 #define UR_ATOM_VERTEX 34 526 #define UR_ATOM_FRAGMENT 34 627 #define UR_ATOM_DEFAULT 34 712 #define UR_ATOM_FOCUS 334 13 #define UR_ATOM_RESIZE 335 14 #define UR_ATOM_KEY_DOWN 336 15 #define UR_ATOM_KEY_UP 337 16 #define UR_ATOM_MOUSE_MOVE 338 17 #define UR_ATOM_MOUSE_UP 339 18 #define UR_ATOM_MOUSE_DOWN 340 19 #define UR_ATOM_MOUSE_WHEEL 341 20 #define UR_ATOM_AMBIENT 342 21 #define UR_ATOM_DIFFUSE 343 22 #define UR_ATOM_SPECULAR 344 23 #define UR_ATOM_POS 345 24 #define UR_ATOM_SHADER 346 25 #define UR_ATOM_VERTEX 347 26 #define UR_ATOM_FRAGMENT 348 27 #define UR_ATOM_DEFAULT 349 28 28 #define UR_ATOM_WAIT 135 29 #define UR_ATOM_RGB 3 4830 #define UR_ATOM_RGBA 3 4931 #define UR_ATOM_DEPTH 35 032 #define UR_ATOM_CLAMP 35 133 #define UR_ATOM_REPEAT 35 234 #define UR_ATOM_NEAREST 35 335 #define UR_ATOM_LINEAR 35 436 #define UR_ATOM_MIN 35 537 #define UR_ATOM_MAG 35 638 #define UR_ATOM_MIPMAP 35 739 #define UR_ATOM_GRAY 3 5840 #define UR_ATOM_RGB 3 4841 #define UR_ATOM_RGBA 3 4942 #define UR_ATOM_ON 26 543 #define UR_ATOM_OFF 26 729 #define UR_ATOM_RGB 350 30 #define UR_ATOM_RGBA 351 31 #define UR_ATOM_DEPTH 352 32 #define UR_ATOM_CLAMP 353 33 #define UR_ATOM_REPEAT 354 34 #define UR_ATOM_NEAREST 355 35 #define UR_ATOM_LINEAR 356 36 #define UR_ATOM_MIN 357 37 #define UR_ATOM_MAG 358 38 #define UR_ATOM_MIPMAP 359 39 #define UR_ATOM_GRAY 360 40 #define UR_ATOM_RGB 350 41 #define UR_ATOM_RGBA 351 42 #define UR_ATOM_ON 267 43 #define UR_ATOM_OFF 269 44 44 #define UR_ATOM_ADD 203 45 #define UR_ATOM_BURN 3 5946 #define UR_ATOM_COLOR 36 047 #define UR_ATOM_TRANS 36 148 #define UR_ATOM_SPRITE 36 249 #define UR_ATOM_ONCE 36 350 #define UR_ATOM_PING_PONG 36 451 #define UR_ATOM_PONG 36 545 #define UR_ATOM_BURN 361 46 #define UR_ATOM_COLOR 362 47 #define UR_ATOM_TRANS 363 48 #define UR_ATOM_SPRITE 364 49 #define UR_ATOM_ONCE 365 50 #define UR_ATOM_PING_PONG 366 51 #define UR_ATOM_PONG 367 -
trunk/thune/internal.h
r502 r506 198 198 #define OP_TRY 19 199 199 #define OP_IF_TRUE 20 200 #define OP_IF_FALSE 21 201 #define OP_IF 22 202 #define OP_HALT 23 203 #define OP_QUIT 24 204 #define OP_INCREMENT 25 205 #define OP_DECREMENT 26 206 #define OP_INC_WORD 27 207 #define OP_DEC_WORD 28 208 #define OP_VERIFY 29 209 #define OP_FOREVER 30 210 #define OP_REDUCE 31 211 #define OP_DO_FUNC 32 200 #define OP_IF_SOME 21 201 #define OP_IF_FALSE 22 202 #define OP_OR_ELSE 23 203 #define OP_IF 24 204 #define OP_HALT 25 205 #define OP_QUIT 26 206 #define OP_INCREMENT 27 207 #define OP_DECREMENT 28 208 #define OP_INC_WORD 29 209 #define OP_DEC_WORD 30 210 #define OP_VERIFY 31 211 #define OP_FOREVER 32 212 #define OP_REDUCE 33 213 #define OP_DO_FUNC 34 212 214 //#define OP_END 255 213 215 -
trunk/thune/mkboot.t
r503 r506 25 25 opcode! 19 'try make :try 26 26 opcode! 20 'ift make :ift 27 opcode! 21 'iff make :iff 28 opcode! 22 'if make :if 29 opcode! 23 'halt make :halt 30 opcode! 24 'quit make :quit 31 opcode! 25 'inc make :inc 32 opcode! 26 'dec make :dec 33 opcode! 27 '++ make :++ 34 opcode! 28 '-- make :-- 35 opcode! 29 'verify make :verify 36 opcode! 30 'forever make :forever 27 opcode! 21 'if-some make :if-some 28 opcode! 22 'iff make :iff 29 opcode! 23 'or-else make :or-else 30 opcode! 24 'if make :if 31 opcode! 25 'halt make :halt 32 opcode! 26 'quit make :quit 33 opcode! 27 'inc make :inc 34 opcode! 28 'dec make :dec 35 opcode! 29 '++ make :++ 36 opcode! 30 '-- make :-- 37 opcode! 31 'verify make :verify 38 opcode! 32 'forever make :forever 37 39 38 40 int!/decimal! :number! … … 61 63 ] proc :load ;(filename -- block) 62 64 63 [select if /keepdo] proc :case65 [select if-some do] proc :case 64 66 65 67 ['break throw] proc :break … … 104 106 [ser old new | len] [ 105 107 old length? :len 106 ser old find if /keep(new len change :ser recurse)108 ser old find if-some (new len change :ser recurse) 107 109 ser 108 110 ] func :replace.all ;(ser old new -- ser) -
trunk/thune/rune/mkboot.t
r351 r506 122 122 ] 123 123 124 ;case func [blk] [select blk if /keepdo]124 ;case func [blk] [select blk if-some do] 125 125 126 126 break: does [throw 'break] -
trunk/thune/scripts/obj_to_gx.t
r458 r506 97 97 ) 98 98 99 geo/surfs if /keepwrite-surf99 geo/surfs if-some write-surf 100 100 ;" color 0.8,0.8,0.8" print 101 101 … … 232 232 | "usemtl" cl (data trim mtllib select :geo/surfs) 233 233 | "g" sl 234 | "o" cl (geo if /keepwrite-geo234 | "o" cl (geo if-some write-geo 235 235 gx-geom [ 236 236 data trim copy :name -
trunk/thune/thune.c
r503 r506 373 373 #define EMH_HALT(pc,end) 374 374 #endif 375 376 377 inline int ur_isFalse( UCell* c ) 378 { 379 return ur_is(c, UT_NONE) || (ur_is(c, UT_LOGIC) && ! ur_logic(c)); 380 } 375 381 376 382 … … 685 691 break; 686 692 687 case OP_IF_TRUE: // (logic -- ) 688 val = UR_TOS; 689 if( ur_is(val, UT_NONE) || 690 (ur_is(val, UT_LOGIC) && ! ur_logic(val)) ) 693 case OP_IF_TRUE: // (logic -- ) 694 if_true: 695 if( ur_isFalse( UR_TOS ) ) 691 696 goto if_skip; 692 697 UR_S_DROP; 693 698 break; 694 699 695 case OP_IF_FALSE: // (logic -- ) 696 val = UR_TOS; 697 if( ur_is(val, UT_NONE) || 698 (ur_is(val, UT_LOGIC) && ! ur_logic(val)) ) 700 case OP_IF_SOME: // (val -- [val]) 701 if( ur_isFalse( UR_TOS ) ) 702 goto if_skip; 703 break; 704 705 case OP_IF_FALSE: // (logic -- ) 706 if( ur_isFalse( UR_TOS ) ) 699 707 goto if_do; 700 708 if_skip: … … 705 713 break; 706 714 707 case OP_IF: // (val val -- ) 715 case OP_OR_ELSE: // (val -- [val]) 716 if( ur_isFalse( UR_TOS ) ) 717 goto if_do; 718 if( pc != end ) 719 ++pc; 720 break; 721 722 case OP_IF: // (val val -- ) 708 723 { 709 724 int n; … … 716 731 goto if_skip; 717 732 718 case UR_ATOM_GT:719 n = ur_greaterThan( UR_TOS, ur_s_next(UR_TOS) );720 break;721 722 case UR_ATOM_LT:723 n = ur_lessThan( UR_TOS, ur_s_next(UR_TOS) );724 break;725 726 733 case UR_ATOM_NEQ: 727 734 if( ! ur_equal( ut, UR_TOS, ur_s_next(UR_TOS) ) ) … … 729 736 goto if_skip; 730 737 738 case UR_ATOM_GT: 739 n = ur_greaterThan( UR_TOS, ur_s_next(UR_TOS) ); 740 break; 741 742 case UR_ATOM_LT: 743 n = ur_lessThan( UR_TOS, ur_s_next(UR_TOS) ); 744 break; 745 731 746 case UR_ATOM_GTE: 732 747 n = ur_greaterOrEqual( UR_TOS, ur_s_next(UR_TOS) ); … … 737 752 break; 738 753 739 case UR_ATOM_KEEP: // (val -- [val])740 UR_S_GROW;741 val = UR_TOS;742 if( ur_is(val, UT_NONE) ||743 (ur_is(val, UT_LOGIC) && ! ur_logic(val)) )744 goto if_skip;745 goto execute;746 747 754 //case UR_ATOM_ZERO: 748 755 // break; 756 757 default: 758 goto if_true; 749 759 } 750 760 if( n == 1 )
