j
: Next unread message k
: Previous unread message j a
: Jump to all threads
j l
: Jump to MailingList overview
Hi everyone,
It seems that b(case)...b(of)...b(endof)...b(endcase) was broken in exactly the same way as the b(do)...b(loop) commands during Fcode evaluation. This patch fixes this, which now allows the Martux/Milax CDROM images to fail gracefully rather than segfaulting:
OpenBIOS for Sparc64 Configuration device id QEMU version 1 machine id 0 CPUs: 1 x SUNW,UltraSPARC-II UUID: 00000000-0000-0000-0000-000000000000 Welcome to OpenBIOS v1.0 built on May 24 2009 10:37 Type 'help' for detailed information
[sparc64] Booting file 'disk' with parameters '' Not a bootable ELF image Not a Linux kernel image Not a bootable a.out image Loading FCode image... Loaded 7392 bytes entry point is 0x4000 Evaluating FCode... isn't unique. isn't unique. claim virt = ffffffffffffffff size = 0 align = 0
seek failed
Can't mount root
byte-load: exception caught!
0 >
ATB,
Mark.
Attachments:
On 5/24/09, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Hi everyone,
It seems that b(case)...b(of)...b(endof)...b(endcase) was broken in exactly the same way as the b(do)...b(loop) commands during Fcode evaluation. This patch fixes this, which now allows the Martux/Milax CDROM images to fail gracefully rather than segfaulting:
Thanks, applied.
Mark Cave-Ayland wrote:
It seems that b(case)...b(of)...b(endof)...b(endcase) was broken in exactly the same way as the b(do)...b(loop) commands during Fcode evaluation. This patch fixes this, which now allows the Martux/Milax CDROM images to fail gracefully rather than segfaulting:
Just remembered that I forgot to post my test case for completeness:
\ Test Fcode case...of...endof...endcase \ Forth: 1 case 0 of ." zero" endof 1 of ." one" endof endcase here cc c, \ offset16 a6 c, \ 1 c4 c, \ b(case) a5 c, \ 0 1c c, 00 c, 0c c, \ b(of) 12 c, 04 c, 7a c, 65 c, 72 c, 6f c, \ b(") zero 90 c, \ type c6 c, 00 c, 10 c, \ b(endof) a6 c, \ 1 1c c, 00 c, 0b c, \ b(of) 12 c, 03 c, 6f c, 6e c, 65 c, \ b(") one 90 c, \ type c6 c, 00 c, 03 c, \ b(endof) c5 c, \ b(endcase) 00 c, \ end
ATB,
Mark.