Hi everyone,
This patch fixes the Fcode evaluation of b(field) which was implemented incorrectly. With this patch applied, corruption seen in several of the package words for Milax/Martux has now disappeared. Included below are the Fcode test cases I used (courtesy of Milax):
\ Test Fcode struct...field...constant (no headers) \ Forth: struct /x field >filesize /x field >offset /x field >block0 constant /file-record 0 >offset . here cc c, \ offset16 a5 c, \ 0 02 c, 48 c, \ /x b5 c, 08 c, 00 c, \ new-token be c, \ b(field) 02 c, 48 c, \ /x b5 c, 08 c, 01 c, \ new-token be c, \ b(field) 02 c, 48 c, \ /x b5 c, 08 c, 02 c, \ new-token be c, \ b(field) b5 c, 08 c, 03 c, \ new-token ba c, \ b(constant) a5 c, \ 0 08 c, 01 c, \ Fcode #801 9d c, \ Display stack 00 c, \ End
\ Headers version here cc c, \ offset16 a5 c, \ 0 02 c, 48 c, \ /x b6 c, 09 c, 3e c, 66 c, 69 c, 6c c, 65 c, 73 c, 69 c, 7a c, 65 c, \ named-token (>filesize) 08 c, 00 c, be c, \ b(field) 02 c, 48 c, \ /x b6 c, 07 c, 3e c, 6f c, 66 c, 66 c, 73 c, 65 c, 74 c, \ named-token (>offset) 08 c, 01 c, be c, \ b(field) 02 c, 48 c, \ /x b6 c, 07 c, 3e c, 62 c, 6c c, 6f c, 63 c, 6b c, 30 c, \ named-token (>block0) 08 c, 02 c, be c, \ b(field) b6 c, 0c c, 2f c, 66 c, 69 c, 6c c, 65 c, 2d c, 72 c, 65 c, 63 c, 6f c, \ named-token (/file-record) 72 c, 64 c, 08 c, 03 c, ba c, \ b(constant) a5 c, \ 0 08 c, 01 c, \ Fcode #801 9d c, \ Display stack 00 c, \ End
ATB,
Mark.