For almost all breakpoints, the setting command takes the format

        BP* <parameters> [IF (condition)] [DO "statement"]

and the first 2 character 'BP' can be replaced with 'GO'

        GO* <parameters> [IF (condition)] [DO "statement"]

to set a single instance breakpoint

TRW will set the breakpoint, go, and clear it after the break

Condition must be enclosed in () w/o spaces after '(' and before ')'

        ==            Logical            Equal
        !=            Logical Not        Equal
        >             Logical Greater
        >=            Logical Greater or Equal
        <             Logical Less
        <=            Logical Less    or Equal

        &             Bit And
        |             Bit Or
        ^             Bit Xor

        >>            Bit Shift Right ; % 20h
        <<            Bit Shift Left  ; % 20h

;       !             Logical Not     ; NOT SUPPORTED
        &&            Logical And
        ||            Logical Or

        +             Add
        -             Sub
        *             Mul
        /             Division
        %             Mod

        ()            parentheses

        (byte)
        (word)
        (dword)
        *             get value by pointer

        +             positive
        -             negative

Example

        g  if ((byte)*eip==c2)
        g  if (*esp==ebx)
        go if (eip>401000 && eip<10000000)

DO statement
------------

The <statement> can be any valid TRW command
It must be enclosed in quotation marks

        bpx cs:401000 if (eax>200) do "d eax"
        gox 401000 if (cs!=28) do "d ss:esp"
        g if (eip<1000)

Soft break point
----------------

TRW supports soft breakpoint like

        bp if (condition)
        g  if (condition)
        go if (condition)

that is, breakpoint without address, with only condition

If you set a this kind of breakpoint and run,
TRW will run the program step by step,
and check the condition for EACH STEP

-> eof <-
