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.  
  9.  
  10. HEX
  11.  
  12.  
  13. : DO   \ 94
  14. \ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
  15. \ Š®¬¯¨«ïæ¨ï: ( C: -- do-sys )
  16. \ ®«®¦¨âì do-sys ­  á⥪ ã¯à ¢«¥­¨ï. „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï,
  17. \ ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î. ‘¥¬ ­â¨ª  ­¥§ ¢¥à襭  ¤® à §à¥è¥­¨ï
  18. \ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
  19. \ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n1|u1 n2|u2 -- ) ( R: -- loop-sys )
  20. \ “áâ ­®¢¨âì ¯ à ¬¥âàë 横«  ­  ¨­¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1. ¥®¯à¥¤¥«¥­­ ï
  21. \ á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ­¥ ®¤­®£® ⨯ . ‚á¥, ç⮠㦥
  22. \ ­ å®¤¨«®áì ­  á⥪¥ ¢®§¢à â®¢, áâ ­®¢¨âáï ­¥¤®áâã¯­ë¬ ¤® â¥å ¯®à, ¯®ª  ­¥
  23. \ ¡ã¤ãâ ã¡à ­ë ¯ à ¬¥âàë 横« .
  24.   ?COMP
  25.   ['] C-DO INLINE,
  26.  SetOP  0x68 C, DP @ 4 ALLOT
  27.  SetOP  0x52 C,    \ PUSH EDX
  28.  SetOP  0x53 C,    \ PUSH EBX
  29.  4 ALIGN-NOP
  30.  DP @ DUP TO :-SET
  31. ; IMMEDIATE
  32.  
  33. : ?DO   \ 94 CORE EXT
  34. \ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
  35. \ Š®¬¯¨«ïæ¨ï: ( C: -- do-sys )
  36. \ ®«®¦¨âì do-sys ­  á⥪ ã¯à ¢«¥­¨ï. „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï,
  37. \ ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î. ‘¥¬ ­â¨ª  ­¥§ ¢¥à襭  ¤® à §à¥è¥­¨ï
  38. \ ¯®âॡ¨â¥«¥¬ do-sys, â ª¨¬ ª ª LOOP.
  39. \ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n1|u1 n2|u2 -- ) ( R: --  | loop-sys )
  40. \ …᫨ n1|u1 à ¢­® n2|u2, ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á ¬¥áâ , ¤ ­­®£® ¯®âॡ¨â¥«¥¬
  41. \ do-sys. ˆ­ ç¥ ãáâ ­®¢¨âì ¯ à ¬¥âàë 横«  ­  ¨­¤¥ªá n2|u2 ¨ ¯à¥¤¥« n1|u1
  42. \ ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  ?DO. ¥®¯à¥¤¥«¥­­ ï
  43. \ á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ n1|u1 ¨ n2|u2 ­¥ ®¤­®£® ⨯ . ‚á¥, ç⮠㦥
  44. \ ­ å®¤¨«®áì ­  á⥪¥ ¢®§¢à â®¢, áâ ­®¢¨âáï ­¥¤®áâã¯­ë¬ ¤® â¥å ¯®à, ¯®ª  ­¥
  45. \ ¡ã¤ãâ ã¡à ­ë ¯ à ¬¥âàë 横« .
  46.  ?COMP
  47.  OP0 @ :-SET  UMAX TO :-SET
  48.  ['] NIP DUP INLINE, INLINE,
  49.   0xBB C, HERE 4 ALLOT
  50.   ['] C-?DO INLINE,
  51.  DP @ DUP TO :-SET
  52. ; IMMEDIATE
  53.  
  54. : LOOP   \ 94
  55. \ ˆ­â¥à¯à¥â æ¨ï: ( C: do-sys -- )
  56. \ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
  57. \  §à¥è¨âì ¢á¥ ¯®ï¢«¥­¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ­­®© do-sys ¨ á«¥¤ãî饩
  58. \ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï ¤«ï ¢ë¯®«­¥­¨ï á«®¢ §  LOOP.
  59. \ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( -- ) ( R: loop-sys1 --  | loop-sys2 )
  60. \ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
  61. \ à¨¡ ¢¨âì ¥¤¨­¨æã ª ¨­¤¥ªáã 横« . …᫨ ¨­¤¥ªá 横«  áâ « à ¢­ë¬ ¯à¥¤¥«ã,
  62. \ ã¡à âì ¯ à ¬¥âàë 横«  ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  横«®¬. ˆ­ ç¥
  63. \ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á ­ ç «  横« .
  64.  ?COMP
  65.  24 04FF W, C, \ inc dword [esp]
  66.  HERE 2+ - DUP SHORT?   SetOP SetJP
  67.  IF
  68.    71 C, C, \ jno short
  69.  ELSE
  70.    4 - 0F C, 81 C, , \ jno near
  71.  THEN    SetOP
  72.  0C24648D , \ lea esp, 0c [esp]
  73.  DP @ SWAP !
  74. ; IMMEDIATE
  75.  
  76. : +LOOP    \ 94
  77. \ ˆ­â¥à¯à¥â æ¨ï: ( C: do-sys -- )
  78. \ „®¡ ¢¨âì ᥬ ­â¨ªã ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï, ¤ ­­ãî ­¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥­¨î.
  79. \  §à¥è¨âì ¢á¥ ¯®ï¢«¥­¨ï LEAVE ¬¥¦¤ã ¯®§¨æ¨¥©, ¤ ­­®© do-sys ¨ á«¥¤ãî饩
  80. \ ¯®§¨æ¨¥© ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï ¤«ï ¢ë¯®«­¥­¨ï á«®¢ §  LOOP.
  81. \ ‚à¥¬ï ¢ë¯®«­¥­¨ï: ( n -- ) ( R: loop-sys1 --  | loop-sys2 )
  82. \ ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
  83. \ à¨¡ ¢¨âì n ª ¨­¤¥ªáã 横« . …᫨ ¨­¤¥ªá 横«  ­¥ ¯¥à¥á¥ª £à ­¨æã ¬¥¦¤ã
  84. \ ¯à¥¤¥«®¬ 横«  ¬¨­ãá ¥¤¨­¨æ  ¨ ¯à¥¤¥«®¬ 横« , ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ á
  85. \ ­ ç «  横« . ˆ­ ç¥ ã¡à âì ¯ à ¬¥âàë 横«  ¨ ¯à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áà §ã
  86. \ §  横«®¬.
  87.   ?COMP  
  88.  ['] ADD[ESP],EAX  INLINE,
  89.   ['] DROP INLINE,
  90.  HERE 2+ - DUP SHORT?   SetOP SetJP
  91.  IF
  92.    71 C, C, \ jno short
  93.  ELSE
  94.    4 - 0F C, 81 C, , \ jno near
  95.  THEN    SetOP
  96.  0C24648D , \ lea esp, 0c [esp]
  97.  DP @ SWAP !
  98. ; IMMEDIATE
  99.  
  100. : I   \ 94
  101. \ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
  102. \ ‚믮«­¥­¨¥: ( -- n|u ) ( R: loop-sys -- loop-sys )
  103. \ n|u - ª®¯¨ï ⥪ã饣® (¢­ãâ७­¥£®) ¨­¤¥ªá  横« . ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï
  104. \ ¢®§­¨ª ¥â, ¥á«¨ ¯ à¬¥âàë 横«  ­¥¤®áâ㯭ë.
  105.  ?COMP  ['] C-I  INLINE,
  106. ; IMMEDIATE
  107.  
  108. : J   \ 94
  109.   ?COMP  ['] C-J  INLINE,
  110. ; IMMEDIATE
  111.  
  112. : LEAVE    \ 94
  113. \ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
  114. \ ‚믮«­¥­¨¥: ( -- ) ( R: loop-sys -- )
  115. \ “¡à âì ⥪ã騥 ¯ à ¬¥âàë 横« . ¥®¯à¥¤¥«¥­­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨
  116. \ ®­¨ ­¥¤®áâ㯭ë. à®¤®«¦¨âì ¢ë¯®«­¥­¨¥ áࠧ㠧  ᠬ묨 ¢­ãâ७­¨¬¨ DO ... LOOP
  117. \ ¨«¨ DO ... +LOOP.
  118.  ?COMP
  119.  SetOP 0824648D , \ lea esp, 08 [esp]
  120.  SetOP C3 C,  \ ret
  121. ; IMMEDIATE
  122.  
  123. : UNLOOP  \ 94
  124. \ ˆ­â¥à¯à¥â æ¨ï: ᥬ ­â¨ª  ­¥®¯à¥¤¥«¥­ .
  125. \ ‚믮«­¥­¨¥: ( -- ) ( R: loop-sys -- )
  126. \ “¡à âì ¯ à ¬¥âàë 横«  ⥪ã饣® ã஢­ï. UNLOOP âॡã¥âáï ¤«ï ª ¦¤®£®
  127. \ ã஢­ï ¢«®¦¥­¨ï 横«®¢ ¯¥à¥¤ ¢ë室®¬ ¨§ ®¯à¥¤¥«¥­¨ï ¯® EXIT.
  128. \ ¥®¤­®§­ ç­ ï á¨âã æ¨ï ¢®§­¨ª ¥â, ¥á«¨ ¯ à ¬¥âàë 横«  ­¥¤®áâ㯭ë.
  129.  ?COMP
  130.  SetOP  0C24648D , \ lea esp, 0c [esp]
  131. ; IMMEDIATE
  132.  
  133. DECIMAL
  134.