Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. REQUIRE [IF] ~MAK\CompIF.f
  2.  
  3. C" I'" FIND NIP
  4. [IF]
  5. : I'  BL WORD  FIND 0= IF -321 THROW THEN (  -? ) ;
  6. [THEN]
  7.  
  8.  
  9.  0x75 CONSTANT 0=   0x74 CONSTANT 0<>   0x79 CONSTANT 0<
  10.  0x78 CONSTANT 0>=  0x7D CONSTANT <     0x7C CONSTANT >=
  11.  0x7F CONSTANT <=   0x7E CONSTANT >     0x73 CONSTANT U<
  12.  0x72 CONSTANT U>=  0x77 CONSTANT U<=   0x76 CONSTANT U>
  13.  0x71 CONSTANT OV   0x70 CONSTANT NOV   0xE1 CONSTANT <>C0=
  14.  0xE2 CONSTANT C0=  0xE0 CONSTANT ?C0=  0xE3 CONSTANT C0<>
  15.  
  16. : SIF     (  - a) I'  EXECUTE  C,  HERE ( origin)  0 C, ( blank) ;
  17. : SWHILE  ( a1 "opcode" - a2 a1) SIF SWAP ;
  18. : STHEN   ( a -) HERE OVER 1+ - SWAP C! ;
  19. : SELSE   ( a - a') 0xEB ( short jmp) C,
  20.   HERE OVER - SWAP C!  HERE  0 C, ;
  21. : SBEGIN  ( - a) HERE ;
  22. : SUNTIL_ ( a opc -) C,  HERE  1+ - C, ;
  23. : SUNTIL  ( a -) I'  EXECUTE  SUNTIL_ ;
  24. : SAGAIN  ( a -) 0xEB SUNTIL_ ;
  25. : SREPEAT ( a a1 -) SAGAIN STHEN  ;
  26.  
  27. : SLOOP   ( a -) 0xE2 SUNTIL_ ;
  28. : SLOOPZ  ( a -) 0xE1 SUNTIL_ ;
  29. : SLOOPNZ ( a -) 0xE0 SUNTIL_ ;
  30.  
  31. : LIF    ( opcode - a) I'  EXECUTE  0xF10 + W,  HERE ( origin)  0 , ( blank) ;
  32. : LWHILE ( a1 opcode - a2 a1) LIF SWAP ;
  33. : LTHEN  ( a -) HERE OVER CELL+ - SWAP ! ;
  34. : LELSE  ( a - a') 0xE9 ( short jmp) C,
  35.   HERE OVER - SWAP !  HERE  0 , ;
  36. : LUNTIL ( a opc -)  I'  EXECUTE 0xF10 +  W,  HERE  CELL+ - , ;
  37. : LAGAIN  ( a -) 0xE9 C, HERE  CELL+ - , ;
  38. : LREPEAT ( a -) LAGAIN LTHEN ;
  39.  
  40. : II  BL WORD  FIND1 0=  ;