Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!mips!pacbell.com!att!ucbvax!ENG.SUN.COM!Mitch.Bradley From: Mitch.Bradley@ENG.SUN.COM Newsgroups: comp.lang.forth Subject: Re: eFORTH for 68000 Message-ID: <9104221400.AA16617@ucbvax.Berkeley.EDU> Date: 19 Apr 91 22:10:00 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: Mitch.Bradley%ENG.SUN.COM@SCFVM.GSFC.NASA.GOV Organization: The Internet Lines: 34 > I found a bug, plus a couple of things that probably won't affect use > in that ECB environment, but were no good when the code was ported to > a system with larger address space. > ... > The use of ALIGNED to find the end of strings may not work for strings > built by an arbitrary macroassembler, because it understands word-alignment > but not longword-alignment. > ... > Also note that there is a difference between something being a multiple of 4 > bytes in length, and having an ending address that is longword-aligned. > This may be important if you are relocating the code or running it thru > a linker. > ... > The use of the value MASKK as a compile-time mask to pick up the immediate > and compile-only bits of a name field is incorrect. It assumes 80X86 byte- > order. The best fix is to rewrite FIND. In my opinion, the best fix is to throw out eForth and start with a mature system (F83 comes to mind) that actually addresses at least a few of the many real problems that have to be addressed in order to make a portable system. Problems like byte ordering, alignment, possibly-variable widths of various kernel data items (branch offsets, code fields, does fields, user area offsets, threads, etc), code generation, I/O interface vectors, relocation, and loader formats. To my knowledge, the only portability issue that eForth has addressed is the issue of how many code words you have to write. In my experience, this issue is not a big deal. When I ported my system from 680x0 to SPARC, it only took me a couple of evenings to rewrite all the code words, and my system has relatively many code words (over 100). A few of the code words require some thought and care (FIND , UM/MOD , DODOES), and the rest are total no-brainers (e.g. +, AND , R> , 0< , SWAP). Mitch Bradley, wmb@Eng.Sun.COM