Subversion Repositories Kolibri OS

Rev

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

  1. ( Ñëîâà íåìåäëåííîãî âûïîëíåíèÿ, èñïîëüçóåìûå ïðè êîìïèëÿöèè
  2.   ÷èñëîâûõ è ñòðî÷íûõ ëèòåðàëîâ â òåëî âûñîêîóðîâíåâîãî îïðåäåëåíèÿ.
  3.   ÎÑ-íåçàâèñèìûå îïðåäåëåíèÿ.
  4.   Copyright [C] 1992-1999 A.Cherezov ac@forth.org
  5.   Ïðåîáðàçîâàíèå èç 16-ðàçðÿäíîãî â 32-ðàçðÿäíûé êîä - 1995-96ãã
  6.   Ðåâèçèÿ - ñåíòÿáðü 1999
  7.   Ìîäèôèöèðîâàííî Ìàêñèìîâûì Ì.Î.
  8.   email:mak@mail.rtc.neva.ru
  9.   http://informer.rtc.neva.ru/
  10.   ò ä {812}105-92-03
  11.   ò ð {812}552-47-64
  12. )
  13.  
  14. : [LIT],    DUP
  15.   [ 0x058D W, ' DUP , ] INLINE,
  16.    0x058D W,       , ;
  17.  
  18. \ 0 [IF]
  19. : [']  \ 94
  20. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
  21. \ Êîìïèëÿöèÿ: ( "<spaces>name" -- )
  22. \ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëîì. Íàéòè name.
  23. \ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  24. \ Íåîïðåäåëåííàÿ ñèòóàöèÿ âîçíèêàåò, åñëè name íå íàéäåíî.
  25. \ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ,
  26. \ Âðåìÿ âûïîëíåíèÿ: ( -- xt )
  27. \ Ïîëîæèòü âûïîëíèìûé òîêåí èìåíè xt íà ñòåê. Âûïîëíèìûé òîêåí, âîçâðàùàåìûé
  28. \ ñêîìïèëèðîâàííîé ôðàçîé "['] X" ÿâëÿåòñÿ òåì æå çíà÷åíèåì, ÷òî è âîçâðàùàåìîå
  29. \ "' X" âíå ñîñòîÿíèÿ êîìïèëÿöèè.
  30.   ?COMP ' [LIT],
  31. ; IMMEDIATE
  32. \ [THEN]
  33.  
  34. : LITERAL \ 94 CORE
  35. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
  36. \ Êîìïèëÿöèÿ: ( x -- )
  37. \ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  38. \ Âðåìÿ âûïîëíåíèÿ: ( -- x )
  39. \ Ïîëîæèòü x íà ñòåê.
  40.  STATE @ IF LIT, THEN
  41. ; IMMEDIATE
  42.  
  43. : 2LITERAL \ 94 DOUBLE
  44. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
  45. \ Êîìïèëÿöèÿ: ( x1 x2 -- )
  46. \ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  47. \ Âðåìÿ âûïîëíåíèÿ: ( -- x1 x2 )
  48. \ Ïîëîæèòü ïàðó ÿ÷ååê x1 x2 íà ñòåê.
  49.  STATE @ IF DLIT, THEN
  50. ; IMMEDIATE
  51.  
  52. : SLITERAL  \ 94 STRING
  53. PSLITERAL ; IMMEDIATE
  54.  
  55. : PSLITERAL
  56. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
  57. \ Êîìïèëÿöèÿ: ( c-addr1 u -- )
  58. \ Äîáàâèòü ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  59. \ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr2 u )
  60. \ Âîçâðàòèòü c-addr2 u, îïèñûâàþùèå ñòðîêó, ñîñòîÿùóþ èç ñèìâîëîâ, çàäàííûõ
  61. \ c-addr1 u âî âðåìÿ êîìïèëÿöèè. Ïðîãðàììà íå ìîæåò ìåíÿòü âîçâðàùåííóþ
  62. \ ñòðîêó.
  63.  
  64.  STATE @ IF SLIT, \ ELSE  2DUP + 0 SWAP C!
  65. THEN
  66. ;
  67.  
  68.  
  69. : S"   \ 94+FILE
  70. \ Èíòåðïðåòàöèÿ: ( "ccc<quote>" -- c-addr u )
  71. \ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Çàïèñàòü ïîëó÷åííóþ
  72. \ ñòðîêó c-addr u âî âðåìåííûé áóôåð. Ìàêñèìàëüíàÿ äëèíà âðåìåííîãî
  73. \ áóôåðà çàâèñèò îò ðåàëèçàöèè, íî íå ìîæåò áûòü ìåíüøå 80 ñèìâîëîâ.
  74. \ Ñëåäóþùåå èñïîëüçîâàíèå S" ìîæåò ïåðåïèñàòü âðåìåííûé áóôåð.
  75. \ Îáåñïå÷èâàåòñÿ êàê ìèíèìóì îäèí òàêîé áóôåð.
  76. \ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
  77. \ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó
  78. \ âðåìåíè âûïîëíåíèÿ, îïèñàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  79. \ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr u )
  80. \ Âåðíóòü c-addr è u, êîòîðûå îïèñûâàþò ñòðîêó, ñîñòîÿùóþ èç ñèìâîëîâ ccc.
  81.  [CHAR] " PARSE [COMPILE] SLITERAL
  82. ; IMMEDIATE
  83.  
  84. : C"   \ 94 CORE EXT
  85. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
  86. \ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
  87. \ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè) è äîáàâèòü
  88. \ ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  89. \ Âðåìÿ âûïîëíåíèÿ: ( -- c-addr )
  90. \ Âîçâðàòèòü c-addr, ñòðîêó ñî ñ÷åò÷èêîì, ñîñòîÿùóþ èç ñèìâîëîâ ccc.
  91. \ Ïðîãðàììà íå äîëæíà ìåíÿòü âîçâðàùåííóþ ñòðîêó.
  92.  
  93.  [CHAR] " WORD [COMPILE] CLITERAL
  94.  
  95. ; IMMEDIATE
  96.  
  97. : CLITERAL ( addr -- )
  98.   STATE @ IF CLIT, THEN
  99. ; IMMEDIATE
  100.  
  101. : ."  \ 94
  102. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
  103. \ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
  104. \ Âûäåëèòü ccc, îãðàíè÷åííîå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó âðåìåíè
  105. \ âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  106. \ Âðåìÿ âûïîëíåíèÿ: ( -- )
  107. \ Âûâåñòè ccc íà ýêðàí.
  108.  ?COMP
  109.  [COMPILE] S"
  110.  ['] TYPE COMPILE,
  111. ; IMMEDIATE
  112.  
  113. : [CHAR]  \ 94
  114. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íåîïðåäåëåíà.
  115. \ Êîìïèëÿöèÿ: ( "<spaces>name" -- )
  116. \ Ïðîïóñòèòü âåäóùèå ïðîáåëû. Âûäåëèòü name, îãðàíè÷åííîå ïðîáåëàìè. Äîáàâèòü
  117. \ ñåìàíòèêó âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  118. \ Âðåìÿ âûïîëíåíèÿ: ( -- char )
  119. \ Ïîëîæèòü char, çíà÷åíèå ïåðâîãî ñèìâîëà name, íà ñòåê.
  120.   ?COMP
  121.   PARSE-WORD DROP C@ [COMPILE] LITERAL
  122. ; IMMEDIATE
  123.  
  124.  
  125. : ABORT"   \ 94
  126. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
  127. \ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
  128. \ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü îïèñàííóþ
  129. \ íèæå ñåìàíòèêó âðåìåíè âûïîëíåíèÿ â òåêóùåå îïðåäåëåíèå.
  130. \ Âûïîëíåíèå: ( i*x x1 -- | i*x )
  131. \ Óáðàòü x1 ñî ñòåêà. Åñëè ëþáîé áèò x1 íåíóëåâîé, âûâåñòè íà ýêðàí ccc è
  132. \ âûïîëíèòü çàâèñÿùèå îò ðåàëèçàöèè äåéñòâèÿ, âêëþ÷àþùèå ABORT.
  133. \ : ABORT"  \ 94 EXCEPTION EXT
  134. \ Ðàñøèðèòü ñåìàíòèêó CORE ABORT" ÷òîáû áûëî:
  135. \ Èíòåðïðåòàöèÿ: ñåìàíòèêà íå îïðåäåëåíà.
  136. \ Êîìïèëÿöèÿ: ( "ccc<quote>" -- )
  137. \ Âûäåëèòü ccc, îãðàíè÷åííûå " (äâîéíûìè êàâû÷êàìè). Äîáàâèòü ñåìàíòèêó
  138. \ âðåìåíè âûïîëíåíèÿ, äàííóþ íèæå, ê òåêóùåìó îïðåäåëåíèþ.
  139. \ Âðåìÿ âûïîëíåíèÿ: ( i*x x1 -- | i*x ) ( R: j*x -- | j*x )
  140. \ Óáðàòü x1 ñî ñòåêà. Åñëè ëþáîé áèò x1 íåíóëåâîé, âûïîëíèòü ôóíêöèþ
  141. \ -2 THROW, âûâîäÿ ccc, åñëè íà ñòåêå èñêëþ÷åíèé íåò êàäðà èñêëþ÷åíèé.
  142.  ?COMP
  143.  ?COMP  [COMPILE] C"
  144.   ['] (ABORT") COMPILE,
  145.  
  146. ; IMMEDIATE
  147.  
  148.