( ëÏÍÐÉÌÑÃÉÑ ÞÉÓÅÌ ÓÌÏ×ÁÒØ.
ïó-ÎÅÚÁ×ÉÓÉÍÙÅ ÏÐÒÅÄÅÌÅÎÉÑ.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÚ 16-ÒÁÚÒÑÄÎÏÇÏ × 32-ÒÁÚÒÑÄÎÙÊ ËÏÄ - 1995-96ÇÇ
òÅ×ÉÚÉÑ - ÓÅÎÔÑÂÒØ 1999, ÍÁÒÔ 2000
)
: RDROP ['] C-RDROP INLINE, ; IMMEDIATE
: 2RDROP ['] C-2RDROP INLINE, ; IMMEDIATE
: 3RDROP ['] C-3RDROP INLINE, ; IMMEDIATE
5 CONSTANT CFL \ ÄÌÉÎÁ ËÏÄÁ, ËÏÍÐÉÌÉÒÕÅÍÏÇÏ CREATE × ÓÅÇÍÅÎÔ CS.
\ USER DOES>A \ ×ÒÅÍÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ - ÁÄÒÅÓ ÄÌÑ DOES>
: SET-CURRENT ( wid -- ) \ 94 SEARCH
\ õÓÔÁÎÏ×ÉÔØ ÓÐÉÓÏË ËÏÍÐÉÌÑÃÉÉ ÎÁ ÓÐÉÓÏË, ÉÄÅÎÔÉÆÉÃÉÒÕÅÍÙÊ wid.
CURRENT !
;
: GET-CURRENT ( -- wid ) \ 94 SEARCH
\ ÷ÏÚ×ÒÁÝÁÅÔ wid - ÉÄÅÎÔÉÆÉËÁÔÏÒ ÓÐÉÓËÁ ËÏÍÐÉÌÑÃÉÉ.
CURRENT @
;
: IS-TEMP-WL ( -- flag )
\ ÐÒÏ×ÅÒÑÅÔ, Ñ×ÌÑÅÔÓÑ ÌÉ ÔÅËÕÝÉÊ ÓÌÏ×ÁÒØ ËÏÍÐÉÌÑÃÉÉ ×ÒÅÍÅÎÎÙÍ (×ÎÅÛÎÉÍ)
GET-CURRENT CELL- @ -1 =
;
0 [IF]
: DP ( -- addr ) \ ÐÅÒÅÍÅÎÎÁÑ, ÓÏÄÅÒÖÁÝÁÑ HERE ÓÅÇÍÅÎÔÁ ÄÁÎÎÙÈ
IS-TEMP-WL
IF GET-CURRENT 6 CELLS + ELSE (DP) THEN
;
[THEN]
: ALLOT ( n -- ) \ 94
\ åÓÌÉ n ÂÏÌØÛÅ ÎÕÌÑ, ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ n ÂÁÊÔ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ. åÓÌÉ n ÍÅÎØÛÅ
\ ÎÕÌÑ - ÏÓ×ÏÂÏÄÉÔØ |n| ÂÁÊÔ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ. åÓÌÉ n ÎÏÌØ, ÏÓÔÁ×ÉÔØ
\ ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ÎÅÉÚÍÅÎÎÙÍ.
\ åÓÌÉ ÐÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ALLOT ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ×ÙÒÏ×ÎÅÎ É n
\ ËÒÁÔÎÏ ÒÁÚÍÅÒÕ ÑÞÅÊËÉ, ÏÎ ÏÓÔÁÅÔÓÑ ×ÙÒÏ×ÎÅÎÎÙÍ É ÐÏÓÌÅ ALLOT.
\ åÓÌÉ ÐÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ALLOT ÕËÁÚÁÔÅÌØ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÁÎÎÙÈ ×ÙÒÏ×ÎÅÎ ÎÁ
\ ÇÒÁÎÉÃÕ ÓÉÍ×ÏÌÁ É n ËÒÁÔÎÏ ÒÁÚÍÅÒÕ ÓÉÍ×ÏÌÁ, ÏÎ ÏÓÔÁÅÔÓÑ ×ÙÒÏ×ÎÅÎÎÙÍ ÎÁ
\ ÇÒÁÎÉÃÕ ÓÉÍ×ÏÌÁ É ÐÏÓÌÅ ALLOT.
DP +!
;
: , ( x -- ) \ 94
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÏÄÎÕ ÑÞÅÊËÕ × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ x × ÜÔÕ ÑÞÅÊËÕ.
DP @ 4 ALLOT !
;
: C, ( char -- ) \ 94
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÍÅÓÔÏ ÄÌÑ ÓÉÍ×ÏÌÁ × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ ÔÕÄÁ char.
DP @ 1 ALLOT C!
;
: W, ( word -- )
\ úÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÍÅÓÔÏ ÄÌÑ word × ÏÂÌÁÓÔÉ ÄÁÎÎÙÈ É ÐÏÍÅÓÔÉÔØ ÔÕÄÁ char.
DP @ 2 ALLOT W!
;