FORTH for the SHARP PC-E500 (S)
|
11-13-2021, 07:19 PM
(This post was last modified: 11-17-2021 09:09 PM by robve.)
Post: #56
|
|||
|
|||
RE: FORTH for the SHARP PC-E500 (S)
(11-13-2021 12:07 PM)Klaus Overhage Wrote: I was curious whether the test suite works with Forth500. (https://forth-standard.org/standard/testsuite) Thanks for testing Forth500 and for providing a very useful example. I've added DATE.FTH to the Forth500 additions on GitHub. I also added a new SEE.FTH decompiler and a Galton board demo GALTON.FTH. I plan to add more examples. Contributions to Forth500 are more than welcome With the new CLOAD Forth500 command, I can load any Forth program without a problem with the CE-126P, not needing a serial cable to do so. Using option -dINV with PocketTools bin2wav fixed my wav transfer issues as suggested by Torsten Mücker, the PocketTools maintainer (I had helped him update PocketTools for the PC-E500 with new C code so that E500 BASIC images are fully compiled now with bas2img.) With -dINV I've not had a single transfer error. However, transfer over serial is nicer, because loading and compiling happen simultaneously. And serial is bidirectional. I'm waiting for a serial cable to arrive from Takamatsu Japan. They also offer 256KB FRAM cards for the PC-E500(S). I made a small change to DATE.FTH. I noticed that you defined RDROP but R>DROP is already included in Forth500. Either one is not standardized, so some Forth's use RDROP and other use R>DROP. Either one makes logically sense: R>DROP means R> DROP and RDROP simply means to drop from the R stack. So use R>DROP instead of RDROP in Forth500. Also please note that I've included extra words <> and > for all numeric versions (<> > D<> D> 0<> 0> D0<> D0> F<> F> F0<> F0>) for consistency. Also note that <= and >= are not part of the standard either, but these can be easily defined using INVERT and the Forth500 < and > words that already exist: Code: : <= > INVERT ; If you want to get the best performance by inlining this code, then define them IMMEDIATE with POSTPONEd words: Code: : <= POSTPONE > POSTPONE INVERT ; IMMEDIATE However, these words can now only be used in definitions (i.e. when compiling) and not interpreted and executed on the command line unless their definitions include a branch to execute code when in interpreting. Alas, Forth in general has no INLINE modifier (I think I can do that in Forth500 as its updated design allows something like that actually), but the result with IMMEDIATE and POSTPONE is the same, just a lot more code to write when the definition is long. But inlining long definitions won't keep compiled Forth compact. Inlining only two words like the ones above is useful though if you're keen to use these words instead of just writing > INVERT etc. - Rob "I count on old friends to remain rational" |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 7 Guest(s)