\ 94 CORE EXT
: .R ( n1 n2 -- ) \ 94 CORE EXT
\ Âûâåñòè íà ýêðàí n1 âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n2 ñèìâîëîâ.
\ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ n1, áîëüøå ÷åì n2,
\ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
\ øèðèíû.
>R DUP >R ABS
S>D <# #S R> SIGN #>
R> OVER - 0 MAX SPACES TYPE
;
: 0> ( n -- flag ) \ 94 CORE EXT
\ flag "èñòèíà" òîãäà è òîëüêî òîãäà, êîãäà n áîëüøå íóëÿ
0 >
;
: MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
\ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè.
\ Ñîçäàòü îïðåäåëåíèå ñ ñåìàíòèêîé âûïîëíåíèÿ, îïèñàííîé íèæå.
\ name Âûïîëíåíèå: ( -- )
\ Âîññòàíîâèòü ðàñïðåäåëåíèå ïàìÿòè ñëîâàðÿ è óêàçàòåëè ïîðÿäêà ïîèñêà
\ ê ñîñòîÿíèþ, êîòîðîå îíè èìåëè ïåðåä îïðåäåëåíèåì name. Óáðàòü
\ îïðåäåëåíèå name è âñå ïîñëåäóþùèå îïðåäåëåíèÿ. Íå òðåáóåòñÿ
\ îáÿçàòåëüíî âîññòàíàâëèâàòü ëþáûå îñòàâøèåñÿ ñòðóêòóðû, êîòîðûå
\ ìîãóò áûòü ñâÿçàíû ñ óäàëåííûìè îïðåäåëåíèÿìè èëè îñâîáîæäåííûì
\ ïðîñòðàíñòâîì äàííûõ. Íèêàêàÿ äðóãàÿ êîíòåêñòóàëüíàÿ èíôîðìàöèÿ,
\ êàê îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ, íå èçìåíÿåòñÿ.
HERE
\ [C]HERE , [E]HERE ,
GET-CURRENT ,
GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
CREATE ,
DOES> @ DUP \ ONLY
\ DUP @ [C]DP ! CELL+
\ DUP @ [E]DP ! CELL+
DUP @ SET-CURRENT CELL+
DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
DROP R> SET-ORDER
DP !
;
: SAVE-INPUT ( -- xn ... x1 n ) \ 94 CORE EXT
\ x1 - xn îïèñûâàþò òåêóùåå ñîñòîÿíèå ñïåöèôèêàöèé âõîäíîãî ïîòîêà äëÿ
\ ïîñëåäóþùåãî èñïîëüçîâàíèÿ ñëîâîì RESTORE-INPUT.
SOURCE-ID 0>
IF TIB #TIB @ 2DUP C/L 2 + ALLOCATE THROW DUP >R SWAP CMOVE
R> TO TIB >IN @
SOURCE-ID FILE-POSITION THROW
5
ELSE BLK @ >IN @ 2 THEN
;
: RESTORE-INPUT ( xn ... x1 n -- flag ) \ 94 CORE EXT
\ Ïîïûòêà âîññòàíîâèòü ñïåöèôèêàöèè âõîäíîãî ïîòîêà ê ñîñòîÿíèþ,
\ îïèñàííîìó x1 - xn. flag "èñòèíà", åñëè ñïåöèôèêàöèè âõîäíîãî
\ ïîòîêà íå ìîãóò áûòü âîññòàíîâëåíû.
\ Íåîïðåäåëåííàÿ ñèòóàöèÿ âîçíèêàåò, åñëè âõîäíîé ïîòîê,
\ ïðåäñòàâëåííûé àðãóìåíòàìè íå òîò æå, ÷òî è òåêóùèé âõîäíîé ïîòîê.
SOURCE-ID 0>
IF DUP 5 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
DROP SOURCE-ID REPOSITION-FILE ?DUP IF >R 2DROP DROP R> EXIT THEN
>IN ! #TIB ! TO TIB FALSE
ELSE DUP 2 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
DROP >IN ! BLK ! FALSE
THEN
;
: U.R ( u n -- ) \ 94 CORE EXT
\ Âûâåñòè íà ýêðàí u âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n ñèìâîëîâ.
\ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ u, áîëüøå ÷åì n,
\ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
\ øèðèíû.
>R U>D <# #S #>
R> OVER - 0 MAX SPACES TYPE
;
\EOF
: UNUSED ( -- u ) \ 94 CORE EXT
\ u - îáúåì ïàìÿòè, îñòàâøåéñÿ â îáëàñòè, àäðåñóåìîé HERE,
\ â áàéòàõ.
IMAGE-SIZE
HERE IMAGE-BASE - -
;