\ shamelessly stolen from gforth
\ added default: clause

0 constant case
  ( C: -- case-sys )
  ( R: -- )
  immediate

: of
  ( C:  -- of-sys )
  ( R: x1 x2 -- |x1 )
  1+ >r
  postpone over postpone =
  postpone if postpone drop
  r>
; immediate

: endof
  ( C: case-sys1 of-sys -- case-sys2 )
  ( R:  -- )
  >r postpone else r>
; immediate

: default:
  postpone drop
; immediate

: endcase
  ( C: case-sys -- )
  ( R: x -- )
  \ postpone drop \ moved to default:
  0 ?do postpone then loop
; immediate