10

VALUEForth ワードをTORPC/8 ( Minecraft modでエミュレートされたコンピューター)に実装したいと考えています。私の最善の試みは、コンパイル中に使用しない限り、正常に機能する単語のセットを取得します。より具体VALUE的には機能しますが、TO機能しません。

: VALUE CREATE , DOES> @ ;
: TO ' 3 + ! ;

私はそれを機能させるために考えられるすべてを試しましたが、私の最善の試みは私にこれをもたらします:

['] NameOfAValue 3 + !

プロセッサは純粋な 6502 ではなく、65816のカスタム バリアントである65EL02であることに注意してください。

編集 #1: どういうわけか、値の CREATE の呼び出しを忘れていました。ずっとそこにあったはずです。編集#2:私もTO3で切り替えました...おっと。+ずっと逆だったはず。

4

3 に答える 3

2

わかりました多くの試行錯誤と多くの検索の後、機能するはずのものを見つけましたが、redFORTH の 2 つのバグのために機能しません。

価値

\ Works fine, now to reset the value.
: VALUE \ n <name> --
    CREATE ,
    DOES> @
;

\ Works if not compiling, LITERAL and POSTPONE are broken.
: TO
    TIBWORD FIND 3 +
    STATE @ IF
        POSTPONE LITERAL
        POSTPONE !
    ELSE
        !
    THEN
; IMMEDIATE

LITERAL のバグのデモ

\ fails, very wierd error.
: TESTLIT [ 42 ] LITERAL ;
\ TESTLIT Unknown Token: TESTLIT
\ FORGET TESTLIT Unknown Token: TESTLIT
\ WORDS TESTLIT COLD SORTMATCH ...

POSTPONE のバグのデモ

\ fails, postpone is directly equivelent to [']
: TESTPOST POSTPONE + ; IMMEDIATE
: TEST 2 2 TESTPOST . ;
\ . 1935
\ ' + . 1935

バグレポートを提出するために出発します....

編集#1:さらに試行錯誤を重ね、少し悪口を言ったわけではありません(私はFORTHが苦手です)、それを機能させる方法を見つけました。

: TO
    TIBWORD FIND 3 +
    STATE @ IF
        (lit) (lit) , , \ store address
        (lit) ! ,
ELSE
        !
    THEN
; IMMEDIATE
于 2013-02-20T22:26:16.657 に答える