@@ -892,6 +892,47 @@ T "9b: Forth add jet add(3,4)=7" "0000000000000007" \
892892T " 9b: Forth add jet add(10,20)=30" " 000000000000001E" \
893893 " 0 N>N 6579297 N>N 10 N>N 20 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
894894
895+ # ── Phase 9b — remaining gate jets via SKNOCK ────────────────────────────────
896+ T " 9b: Forth sub jet sub(10,3)=7" " 0000000000000007" \
897+ " 0 N>N 6452595 N>N 10 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
898+ T " 9b: Forth sub jet sub(5,5)=0" " 0000000000000000" \
899+ " 0 N>N 6452595 N>N 5 N>N 5 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
900+
901+ T " 9b: Forth mul jet mul(6,7)=42" " 000000000000002A" \
902+ " 0 N>N 7107949 N>N 6 N>N 7 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
903+ T " 9b: Forth mul jet mul(0,99)=0" " 0000000000000000" \
904+ " 0 N>N 7107949 N>N 0 N>N 99 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
905+
906+ T " 9b: Forth div jet div(10,3)=3" " 0000000000000003" \
907+ " 0 N>N 7760228 N>N 10 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
908+ T " 9b: Forth div jet div(7,7)=1" " 0000000000000001" \
909+ " 0 N>N 7760228 N>N 7 N>N 7 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
910+
911+ T " 9b: Forth mod jet mod(10,3)=1" " 0000000000000001" \
912+ " 0 N>N 6582125 N>N 10 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
913+ T " 9b: Forth mod jet mod(12,4)=0" " 0000000000000000" \
914+ " 0 N>N 6582125 N>N 12 N>N 4 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
915+
916+ T " 9b: Forth lth jet lth(3,4)=yes" " 0000000000000000" \
917+ " 0 N>N 6845548 N>N 3 N>N 4 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
918+ T " 9b: Forth lth jet lth(4,3)=no" " 0000000000000001" \
919+ " 0 N>N 6845548 N>N 4 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
920+
921+ T " 9b: Forth gth jet gth(5,3)=yes" " 0000000000000000" \
922+ " 0 N>N 6845543 N>N 5 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
923+ T " 9b: Forth gth jet gth(3,5)=no" " 0000000000000001" \
924+ " 0 N>N 6845543 N>N 3 N>N 5 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
925+
926+ T " 9b: Forth lte jet lte(3,3)=yes" " 0000000000000000" \
927+ " 0 N>N 6648940 N>N 3 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
928+ T " 9b: Forth lte jet lte(4,3)=no" " 0000000000000001" \
929+ " 0 N>N 6648940 N>N 4 N>N 3 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
930+
931+ T " 9b: Forth gte jet gte(5,5)=yes" " 0000000000000000" \
932+ " 0 N>N 6648935 N>N 5 N>N 5 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
933+ T " 9b: Forth gte jet gte(2,5)=no" " 0000000000000001" \
934+ " 0 N>N 6648935 N>N 2 N>N 5 N>N JCORE2 JD JWRAP SKNOCK NOUN> ."
935+
895936# ── Phase 9f — %tame hint: compile Forth jet from Nock at eval time ──────────
896937# %tame fires at eval time → calls forth_eval_string(source-cord) → Forth word
897938# appears in dictionary. The enclosing %wild scopes the jet registration.
@@ -1012,6 +1053,48 @@ T "crash: unimplemented op12" "000000000000002A" "42 ."
10121053BEFORE " 0 N>N 1701667188 N>N 42 N>N CONS 11 N>N SWAP CONS 1 N>N 99 N>N CONS CONS NOCK DROP"
10131054T " crash: %tame atom clue" " 000000000000002A" " 42 ."
10141055
1056+ # -- %wild malformed clue crashes --
1057+ BEFORE " 0 N>N 42 N>N 0 N>N CONS 1 N>N SWAP CONS 1684826487 N>N SWAP CONS 1 N>N 99 N>N CONS CONS 11 N>N SWAP CONS NOCK DROP"
1058+ T " crash: %wild entry not cell" " 000000000000002A" " 42 ."
1059+ BEFORE " 0 N>N 6514020 N>N 42 N>N CONS 0 N>N CONS 1 N>N SWAP CONS 1684826487 N>N SWAP CONS 1 N>N 99 N>N CONS CONS 11 N>N SWAP CONS NOCK DROP"
1060+ T " crash: %wild sock not cell" " 000000000000002A" " 42 ."
1061+
1062+ # -- jet arg crashes --
1063+ BEFORE " 0 N>N 6514020 N>N 1 N>N 2 N>N CONS JCORE1 JD JWRAP NOCK DROP"
1064+ T " crash: jet dec cell sample" " 000000000000002A" " 42 ."
1065+ BEFORE " 0 N>N 6579297 N>N 1 N>N 2 N>N CONS 3 N>N JCORE2 JD JWRAP NOCK DROP"
1066+ T " crash: jet add cell arg" " 000000000000002A" " 42 ."
1067+ BEFORE " 0 N>N 6452595 N>N 1 N>N 2 N>N CONS 3 N>N JCORE2 JD JWRAP NOCK DROP"
1068+ T " crash: jet sub cell arg" " 000000000000002A" " 42 ."
1069+ BEFORE " 0 N>N 7107949 N>N 1 N>N 2 N>N CONS 3 N>N JCORE2 JD JWRAP NOCK DROP"
1070+ T " crash: jet mul cell arg" " 000000000000002A" " 42 ."
1071+ BEFORE " 0 N>N 7760228 N>N 1 N>N 2 N>N CONS 3 N>N JCORE2 JD JWRAP NOCK DROP"
1072+ T " crash: jet div cell arg" " 000000000000002A" " 42 ."
1073+ BEFORE " 0 N>N 6582125 N>N 1 N>N 2 N>N CONS 3 N>N JCORE2 JD JWRAP NOCK DROP"
1074+ T " crash: jet mod cell arg" " 000000000000002A" " 42 ."
1075+
1076+ # -- hax (tree edit) crashes --
1077+ BEFORE " 0 N>N 0 N>N 1 N>N 99 N>N CONS CONS 1 N>N 42 N>N CONS CONS 10 N>N SWAP CONS NOCK DROP"
1078+ T " crash: edit axis 0" " 000000000000002A" " 42 ."
1079+ BEFORE " 0 N>N 2 N>N 1 N>N 99 N>N CONS CONS 1 N>N 42 N>N CONS CONS 10 N>N SWAP CONS NOCK DROP"
1080+ T " crash: edit in atom" " 000000000000002A" " 42 ."
1081+
1082+ # -- slot indirect axis --
1083+ BEFORE " 42 N>N 0 N>N I63 CONS NOCK DROP"
1084+ T " crash: slot axis not direct" " 000000000000002A" " 42 ."
1085+
1086+ # -- %tame name mismatch --
1087+ BEFORE " 0 N>N 7303014 N>N 16642418994651194 N>N CONS 1 N>N SWAP CONS 1701667188 N>N SWAP CONS 1 N>N 0 N>N CONS CONS 11 N>N SWAP CONS NOCK DROP"
1088+ T " crash: %tame name mismatch" " 000000000000002A" " 42 ."
1089+
1090+ # -- op10/op11 structural crashes --
1091+ BEFORE " 0 N>N I63 1 N>N 99 N>N CONS CONS 1 N>N 42 N>N CONS CONS 10 N>N SWAP CONS NOCK DROP"
1092+ T " crash: op10 axis not direct" " 000000000000002A" " 42 ."
1093+ BEFORE " 0 N>N 42 N>N 1 N>N 42 N>N CONS CONS 10 N>N SWAP CONS NOCK DROP"
1094+ T " crash: op10 atom hint" " 000000000000002A" " 42 ."
1095+ BEFORE " 0 N>N I63 1 N>N 99 N>N CONS CONS 1 N>N 42 N>N CONS CONS 11 N>N SWAP CONS NOCK DROP"
1096+ T " crash: op11 tag not direct" " 000000000000002A" " 42 ."
1097+
10151098# ── Forth Primitives Smoke Tests ──────────────────────────────────────────
10161099# Basic sanity checks for core Forth words.
10171100
0 commit comments