vim:ft=forth:ts=2:sw=2:expandtab:foldmethod=marker:foldmarker=\ –\ ,\\ —:
Machine interface
code halt $3fff $4530 end-code
code bye $3fff end-code
code standby $d072 $00d8 $4530 end-code
code stop $d072 $00f8 $4530 end-code
code reset $4382 $0120 end-code
code nop $4530 end-code
code dint $c232 $4530 end-code
code eint $d232 $4530 end-code
code sr@ $8324 $4784 $0000 $4207 $4530 end-code
code default-handler
$c0f1 $00f8 $0000 $1300 end-code
code <irq $8224 $4784 $0000 $4684 $0002 $4117 $0002 $4530 end-code
code irq> $4135 $4781 $0000 $4437 $4436 $1300 end-code
Compiler and control flow
code docol $4136 $1205 $4605 $4530 end-code
code dovar $8324 $4784 $0000 $4137 $4530 end-code
code docon $8324 $4784 $0000 $4137 $4727 $4530 end-code
code lit $8324 $4784 $0000 $4537 $4530 end-code
code branch $4525 $4530 end-code
code ?branch $5307 $4437 $2402 $5325 $4530 $4525 $4530 end-code
code exit $4135 $4530 end-code
code execute $4706 $4437 $4600 end-code
Stack operations
code dup $8324 $4784 $0000 $4530 end-code
code drop $4437 $4530 end-code
code swap $4426 $4784 $0000 $4607 $4530 end-code
code over $4426 $8324 $4784 $0000 $4607 $4530 end-code
code rot $4426 $4784 $0000 $4417 $0002 $4684 $0002 $4530 end-code
code ?dup $9307 $2001 $4530 $8324 $4784 $0000 $4530 end-code
code nip $5324 $4530 end-code
code >r $1207 $4437 $4530 end-code
code r> $8324 $4784 $0000 $4137 $4530 end-code
code r@ $8324 $4784 $0000 $4127 $4530 end-code
code rdrop $5321 $4530 end-code
code sp@ $8324 $4784 $0000 $4407 $4530 end-code
code rp@ $8324 $4784 $0000 $4107 $4530 end-code
code sp! $4704 $4437 $4530 end-code
code rp! $4701 $4437 $4530 end-code
Memory operations
code c@ $4767 $4530 end-code
code c! $4436 $46c7 $0000 $4437 $4530 end-code
code @ $4727 $4530 end-code
code ! $44b7 $0000 $4437 $4530 end-code
Logical operators
code and $f437 $4530 end-code
code or $d437 $4530 end-code
code invert $e337 $4530 end-code
code not $8317 $7707 $4530 end-code
code xor $e437 $4530 end-code
code aligned $5317 $c317 $4530 end-code
code bis! $443a $da87 $0000 $4437 $4530 end-code
code bic! $443a $ca87 $0000 $4437 $4530 $4530 end-code
code xor! $443a $ea87 $0000 $4437 $4530 end-code
code bis $443a $da07 $4530 end-code
code bic $443a $ca07 $4530 end-code
code bit@ $b4b7 $0000 $2c02 $4307 $4530 $4337 $4530 end-code
Arithmetic
code + $5437 $4530 end-code
code - $4436 $8706 $4607 $4530 end-code
code um* $442a $430c $430d $430b $4316 $b607 $2402 $5a0c
$6b0d $5a0a $6b0b $5606 $2bf8 $4c84 $0000 $4d07
$4530 end-code
code u/mod $430b $442a $430c $4036 $0011 $970b $2801 $870b $6c0c
$2c09 $8316 $2406 $5a0a $6b0b $2bf6 $870b $d312
$3ff6 $c312 $4b84 $0000 $4c07 $4530 end-code
code um/mod $443b $442a $430c $4036 $0011 $970b $2801 $870b $6c0c
$2c09 $8316 $2406 $5a0a $6b0b $2bf6 $870b $d312
$3ff6 $c312 $4b84 $0000 $4c07 $4530 end-code
code abs $9307 $3402 $e337 $5317 $4530 end-code
code 1+ $5317 $4530 end-code
code 2+ $5327 $4530 end-code
code 4+ $5227 $4530 end-code
code 1- $8317 $4530 end-code
code 2- $8327 $4530 end-code
code 4- $8227 $4530 end-code
code char+ $5317 $4530 end-code
code cell+ $5327 $4530 end-code
code char- $8317 $4530 end-code
code cell- $8327 $4530 end-code
code 2/ $1107 $4530 end-code
code 2* $5707 $4530 end-code
code cells $5707 $4530 end-code
code chars $4530 end-code
code cell $8324 $4784 $0000 $4327 $4530 end-code
code /cell $1107 $4530 end-code
code lshift $4436 $f037 $001f $2403 $5606 $8317 $23fd $4607 $4530 end-code
code rshift $4436 $f037 $001f $2404 $c312 $1006 $8317 $23fc $4607 $4530 end-code
code shl $3fff $4530 end-code
code shr $3fff $4530 end-code
code 0= $8317 $7707 $4530 end-code
code 0<> $8317 $7707 $e337 $4530 end-code
code 0< $9307 $3402 $4337 $4530 $4307 $4530 end-code
code 0<= $9307 $2403 $2802 $4307 $4530 $4337 $4530 end-code
code 0> $9317 $3402 $4307 $4530 $4337 $4530 end-code
code 0>= $9307 $3402 $4307 $4530 $4337 $4530 end-code
code = $4436 $8706 $2402 $4307 $4530 $4337 $4530 end-code
code < $4436 $8706 $3402 $4337 $4530 $4307 $4530 end-code
code u< $4436 $8706 $2802 $4307 $4530 $4337 $4530 end-code
code m+ $5784 $0002 $6384 $0000 $4437 $4530 end-code
code emit $b3e2 $0003 $27fd $47c2 $0067 $4437 $4530 end-code
code key $b3d2 $0003 $27fd $8324 $4784 $0000 $4257 $0066 $4530 end-code
code key? $8324 $4784 $0000 $b3d2 $0003 $2002 $4307 $4530 $4337 $4530 end-code
: negate invert 1+ ;
: true 0 invert ;
: false 0 ;
: 2dup over over ;
: tuck swap over ;
: 2swap rot >r rot r> ;
: ?negate 0< if negate then ;
: dnegate swap invert swap invert 1 m+ ;
: ?dnegate 0< if dnegate then ;
: dabs dup ?dnegate ;
: m* 2dup xor >r swap abs swap abs um* r> ?dnegate ;
: u* um* drop ;
: * m* drop ;
: h! ! ;
: h@ @ ;
: sm/rem 2dup xor >r
over >r abs >r dabs r> um/mod
swap r> ?negate swap r> ?negate ;
: /mod >r dup 0< r> sm/rem ;
: */mod >r m* r> sm/rem ;
: */ */mod swap drop ;
variable (source-id)
: source-id (source-id) @ ;