Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. \ 94 CORE EXT
  2.  
  3. : .R ( n1 n2 -- ) \ 94 CORE EXT
  4. \ Âûâåñòè íà ýêðàí n1 âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n2 ñèìâîëîâ.
  5. \ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ n1, áîëüøå ÷åì n2,
  6. \ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
  7. \ øèðèíû.
  8.   >R DUP >R ABS
  9.   S>D <# #S R> SIGN #>
  10.   R> OVER - 0 MAX SPACES TYPE
  11. ;
  12. : 0> ( n -- flag ) \ 94 CORE EXT
  13. \ flag "èñòèíà" òîãäà è òîëüêî òîãäà, êîãäà n áîëüøå íóëÿ
  14.   0 >
  15. ;
  16.  
  17. : MARKER ( "<spaces>name" -- ) \ 94 CORE EXT
  18. \ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè.
  19. \ Ñîçäàòü îïðåäåëåíèå ñ ñåìàíòèêîé âûïîëíåíèÿ, îïèñàííîé íèæå.
  20. \ name Âûïîëíåíèå: ( -- )
  21. \ Âîññòàíîâèòü ðàñïðåäåëåíèå ïàìÿòè ñëîâàðÿ è óêàçàòåëè ïîðÿäêà ïîèñêà
  22. \ ê ñîñòîÿíèþ, êîòîðîå îíè èìåëè ïåðåä îïðåäåëåíèåì name. Óáðàòü
  23. \ îïðåäåëåíèå name è âñå ïîñëåäóþùèå îïðåäåëåíèÿ. Íå òðåáóåòñÿ
  24. \ îáÿçàòåëüíî âîññòàíàâëèâàòü ëþáûå îñòàâøèåñÿ ñòðóêòóðû, êîòîðûå
  25. \ ìîãóò áûòü ñâÿçàíû ñ óäàëåííûìè îïðåäåëåíèÿìè èëè îñâîáîæäåííûì
  26. \ ïðîñòðàíñòâîì äàííûõ. Íèêàêàÿ äðóãàÿ êîíòåêñòóàëüíàÿ èíôîðìàöèÿ,
  27. \ êàê îñíîâàíèå ñèñòåìû ñ÷èñëåíèÿ, íå èçìåíÿåòñÿ.
  28.   HERE
  29. \  [C]HERE , [E]HERE ,
  30.   GET-CURRENT ,
  31.   GET-ORDER DUP , 0 ?DO DUP , @ , LOOP
  32.   CREATE ,
  33.   DOES> @ DUP \ ONLY
  34. \  DUP @ [C]DP ! CELL+
  35. \  DUP @ [E]DP ! CELL+
  36.   DUP @ SET-CURRENT CELL+
  37.   DUP @ >R R@ CELLS 2* + 1 CELLS - R@ 0
  38.   ?DO DUP DUP @ SWAP CELL+ @ OVER ! SWAP 2 CELLS - LOOP
  39.   DROP R> SET-ORDER
  40.   DP !
  41. ;
  42.  
  43. : SAVE-INPUT ( -- xn ... x1 n )  \ 94 CORE EXT
  44. \ x1 - xn îïèñûâàþò òåêóùåå ñîñòîÿíèå ñïåöèôèêàöèé âõîäíîãî ïîòîêà äëÿ
  45. \ ïîñëåäóþùåãî èñïîëüçîâàíèÿ ñëîâîì RESTORE-INPUT.
  46.   SOURCE-ID 0>
  47.   IF TIB #TIB @ 2DUP C/L 2 + ALLOCATE THROW DUP >R SWAP CMOVE
  48.      R> TO TIB  >IN @
  49.      SOURCE-ID FILE-POSITION THROW
  50.      5
  51.   ELSE BLK @ >IN @ 2 THEN
  52. ;
  53. : RESTORE-INPUT ( xn ... x1 n -- flag ) \ 94 CORE EXT
  54. \ Ïîïûòêà âîññòàíîâèòü ñïåöèôèêàöèè âõîäíîãî ïîòîêà ê ñîñòîÿíèþ,
  55. \ îïèñàííîìó x1 - xn. flag "èñòèíà", åñëè ñïåöèôèêàöèè âõîäíîãî
  56. \ ïîòîêà íå ìîãóò áûòü âîññòàíîâëåíû.
  57. \ Íåîïðåäåëåííàÿ ñèòóàöèÿ âîçíèêàåò, åñëè âõîäíîé ïîòîê,
  58. \ ïðåäñòàâëåííûé àðãóìåíòàìè íå òîò æå, ÷òî è òåêóùèé âõîäíîé ïîòîê.
  59.   SOURCE-ID 0>
  60.   IF DUP 5 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
  61.      DROP SOURCE-ID REPOSITION-FILE ?DUP IF >R 2DROP DROP R> EXIT THEN
  62.      >IN ! #TIB ! TO TIB FALSE
  63.   ELSE DUP 2 <> IF 0 ?DO DROP LOOP -1 EXIT THEN
  64.      DROP >IN ! BLK ! FALSE
  65.   THEN
  66. ;
  67. : U.R ( u n -- ) \ 94 CORE EXT
  68. \ Âûâåñòè íà ýêðàí u âûðàâíåííûì âïðàâî â ïîëå øèðèíîé n ñèìâîëîâ.
  69. \ Åñëè ÷èñëî ñèìâîëîâ, íåîáõîäèìîå äëÿ èçîáðàæåíèÿ u, áîëüøå ÷åì n,
  70. \ èçîáðàæàþòñÿ âñå öèôðû ÷èñëà áåç âåäóùèõ ïðîáåëîâ â ïîëå íåîáõîäèìîé
  71. \ øèðèíû.
  72.   >R  U>D <# #S #>
  73.   R> OVER - 0 MAX SPACES TYPE
  74. ;
  75. \EOF
  76. : UNUSED ( -- u ) \ 94 CORE EXT
  77. \ u - îáúåì ïàìÿòè, îñòàâøåéñÿ â îáëàñòè, àäðåñóåìîé HERE,
  78. \ â áàéòàõ.
  79.   IMAGE-SIZE
  80.   HERE IMAGE-BASE - -
  81. ;