words/catch.asm

Jump to Vocabulary

; ( xt -- ) Exceptions
; R( -- ) or R( ny -- )
; execute the XT and restore stack frame if an exception is thrown
VE_CATCH:
    .db $05, "catch"
    .dw VE_HEAD
    .set VE_HEAD = VE_CATCH
XT_CATCH:
    .dw DO_COLON
PFA_CATCH:
    ; sp@ >r
    .dw XT_SP_FETCH
    .dw XT_TO_R
    ; handler @ >r
    .dw XT_HANDLER
    .dw XT_FETCH
    .dw XT_TO_R
    ; rp@ handler !
    .dw XT_RP_FETCH
    .dw XT_HANDLER
    .dw XT_STORE
    .dw XT_EXECUTE
    ; r> handler !
    .dw XT_R_FROM
    .dw XT_HANDLER
    .dw XT_STORE
    .dw XT_R_FROM
    .dw XT_DROP
    .dw XT_ZERO
    .dw XT_EXIT

Jump to Vocabulary