RedPower Glitch's Helper Scripts

Discussion in 'Programming' started by glitch80, Jan 8, 2013.

  1. glitch80

    glitch80 Active Member

    Joined:
    Mar 26, 2012
    Messages:
    345
    Likes Received:
    232
    A few constants and word aliases I like to include in my scripts:
    Code:
    1 CONSTANT WHITE
    2 CONSTANT ORANGE
    4 CONSTANT MAGENTA
    8 CONSTANT LIGHT_BLUE
    16 CONSTANT YELLOW
    32 CONSTANT LIME
    64 CONSTANT PINK
    128 CONSTANT GRAY
    256 CONSTANT LIGHT_GRAY
    512 CONSTANT CYAN
    1024 CONSTANT PURPLE
    2048 CONSTANT BLUE
    4096 CONSTANT BROWN
    8192 CONSTANT GREEN
    16384 CONSTANT RED
    32768 CONSTANT BLACK
     
    : UNDER+ ROT + SWAP ;
     
    : RSHIFT U>> ;
     
    : LSHIFT << ;
    Generating very basic random numbers:
    Code:
    : RANDOM seed @ 31421 * 60927 + DUP seed ! ;
     
    : CHOOSE RANDOM UM* NIP ;
    This word returns the base 2 logarithm of the number on the top of the stack. Helpful when dealing with IOX bits. CHECK demonstrates a basic use.
    Code:
    : LOG2
        DUP
        32768 >= IF
            DROP 15
        ELSE
            -1 SWAP 
            BEGIN ?DUP WHILE
            1 UNDER+
            1 RSHIFT
            REPEAT
        THEN
    ;
     
    : CHECK
        LOG2 1 SWAP LSHIFT
        IOX@ AND IF
            1
        ELSE
            0
        THEN
    ;