(c)  騭, ᪢

ZXNet : 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW   : http://www.ivr.da.ru

          ணࠬ஢ থ  ᥬ Z80
          

(".  " 3/2002)
 ᫥ ।஢: 25.02.2003.

     ᠭ ணࠬ  ஢ ࠡ  譨
ன⢠   室 ணࠬ஢
প  ।񭭮 ६.  ⮣  
ᯮ짮 ⠩ (᫨  ),  ⠢  ணࠬ
ࠣ, ६ 믮 ண ࠢ ॡ㥬 ६
প.  ᯮᮡ   ᬠਢ  ,   
஬ ᪠ ஡.
       Z80 믮  ।񭭮
⢮ ⠪⮢.  稭 ॡ㥬 প  ⠪,
  ࠣ ணࠬ  ᮮ⢥騬 ६
믮. (ࠧ  ,  ࠡ ⠪ ࠣ 
  뢠.)
    㫠  ᫥ ६ প  ⠪:

                             N=Ft,

 N - ⢮ ⠪⮢,
    F - ⠪⮢  ,
    t - ६ প.

      ६ 믮    Z80 
ࠦ  楫 ᫮ ⠪⮢, 祭 १
᫥ 㣫  襣 楫 ᫠.

    ਬ:  㦭 প  5 , ⠪⮢  - 3,5
.  ॡ㥬 ⢮ ⠪⮢ ࠢ:

               5*10^-3  * 3,5*10^6  = 17500.

      ணࠬ஢  থ. 쭠
稭 প ᮮ⢥ 襬 ६ 믮
 Z80 - 4 ⠪.
     প  4 ⠪ 쭮 室  NOP - "
樨".  믮    祭 䫠 
ॣ஢,    믮 - ⢨ ( ,
   䥪⮢).
      楯窨 NOP'   প  8, 12,
16,... ⠪⮢ (..  ᫮  4N).
    প  5 ⠪⮢     
᫮ 室  ணࠬ  砥,  ᫮ 
믮.   ᥬ:

                   RET NC  (室  C=0),
                   RET C   (室  C=1),
                   RET NZ  (室  Z=0),
                   RET Z   (室  Z=1),
                   RET P   (室  S=0),
                   RET M   (室  S=1),
                   RET PO  (室  P/V=0),
                   RET PE  (室  P/V=1).

     䥪⮢   .  NOP', 
 প  9, 13, 17,... ⠪⮢ (..  ᫮ 
4N+1).
    祢,  ᯮ짮   襯᫥
 室  ﭨ     
䫠 (C, Z, S  P/V)    믮. ᫨ ﭨ
䫠 ⭮,  প  5 ⠪⮢  , 
 9, 13, 17,... - .  ⮣  砫 ⠭ 䫠
७    SCF (६  믮 - 4 ⠪),
᫥ 祣 ᯮ짮  RET NC,  ⥬ 
室  NOP'. ⠭ 䫠 ७ 㤥 
⮬ 砥  䥪⮬.
    প  6 ⠪⮢      
᫥ :

                   INC BC           DEC BC
                   INC DE           DEC DE
                   INC HL           DEC HL
                   INC SP           DEC SP

     NOP',   প  10, 14, 18,...
⠪⮢ (..  ᫮  4N+2).
    㪠     䫠,  
ᮤন ᮮ⢥饩 ॣ஢ . ᫨   
   ,   প  6 ⠪⮢ 
.   10, 14, 18,... ⠪⮢ - ,   
᫮ 室  ᫥  (JP $+3), 
믮 ன  10 ⠪⮢,   
室  NOP.
    প  7 ⠪⮢   ࠧ묨 ᯮᮡ.
   - ᯮ짮  LD r,(HL),  r -  
ॣ஢ A,B,C,D,E,H,L.      䫠, 
 ᮤন 饣  樨 ॣ. ᫨ 
 ॣ  ,   䫠 , 
  CP (HL). ᫨    ॣ, 
䫠, -  ᯮ짮  ᫮ 室 JR (
믮饬 ᫮).   :

                   JR NC  (室  C=0),
                   JR C   (室  C=1),
                   JR NZ  (室  Z=0),
                   JR Z   (室  Z=1).

    ⢥, ⮡     뫮 ᯮ짮,
室  ﭨ 䫠 C  Z   
믮.
     NOP',   প  11, 15, 19,...
⠪⮢ (..  ᫮  4N+3).

    ⠪,  , ᭮뢠  ᪠, ந
⮪ ணࠬ, ᯥ稢騩 㦭 প?  x -
稭 প  ⠪.  x  4, 稬 ⭮ a 
⮪ b.  b+4 -   ࢮ  (4, 5, 6  7
⠪⮢),  a-1 - ⢮ 塞 NOP'.

    ᬮਬ   ਬ.

    ਬ 1: x=18.   4: a=4, b=2. ,  ࢮ
 㤥 2+4=6 ⠪⮢,  ⢮ NOP' 㤥 4-1=3.
⢥騩 ࠣ ணࠬ 㤥 룫拉 ⠪:

           INC  HL
           NOP
           NOP
           NOP

    ਬ 2: x=29.   4: a=7, b=1. ,  ࢮ
 - 5 ⠪⮢, ⢮ NOP' - 6.  㦥 ࠭
㯮, প  5 ⠪⮢ ॠ ᫮ RET', 
  ਬ   ﭨ    
 䫠. ।,   ﭨ 䫠 祣 
⭮.  ਤ ᤥ ⠪:  
᫥⥫쭮  SCF: RET NC 砥 প  9
⠪⮢,  NOP' 㤥   .  १ 稬:

           SCF
           RET  NC
           NOP
           NOP
           NOP
           NOP
           NOP

     ,  , NOP'  ⠪ ணࠬ஢
প   쭮 , , ⮡ 
"ࠧ㢠" ⥪ ணࠬ   訡   NOP' 
 ⥪, 㤮 ᯮ짮 ४⨢ ᥬ DS N
(㣮 ਠ  - DEFS N).  뤥 ⮪ 
 N ⮢  (筮)   ﬨ.   0 - 
 ࠧ     NOP. 쪮 㡥, 
ᯮ㥬  ᥬ   ⢨⥫쭮
ﬨ. ᫨   ⠪, ਤ 㪠뢠 㫥 祭
: DS N,0.
     ࠧ, ᬮ७  ਬ  
ᠭ ⠪:

           INC  HL
           DS   3



           SCF
           RET  NC
           DS   5

    ᫨   ࠨ,   楯窠 NOP' 
   ,   ᯮ짮 ᫥騩 ࠣ
ணࠬ:

           LD   B,N
           DJNZ $

    ६  믮 - 13N+2 ⠪⮢ ( N=1..255). 
ࠧ, ᫨ 㦭 প  x ⠪⮢,  x-2  13,
砥 ⭮ a  ⮪ b. 祭 a 뢠, ᪮쪮
ࠧ   横 ( ᫮, 㦠  ॣ B), 
b - ᪮쪮 ⠪⮢  ⮬  (প   ६
ਤ ॠ  ᯮᮡ). ᫨ b=1, 2  3, ,
⠪  প   ६  , ਤ
㬥 a  1  㢥 b  13 (⥬ ᠬ 㢥稢
⠢ প  14, 15  16 ⠪⮢).

    ਬ: x=140.   13: a=10, b=8. ⥫쭮,
⢮ ஢ 横 㤥 10; প  ⠢訥 8
⠪⮢ ᯥ稢     NOP. 砥:

           LD   B,10
           DJNZ $
           DS   2

     ३  ᬮ७ ᯮᮡ ॠ樨 
⥫ থ.  থ  188  65535 ⠪⮢ 㤮
ᯮ짮 ᫥ 98- 楤:

           ORG  #8000   ; 㣮 ,  256.

TAB_ADR    DB   ADR_0\256
           DB   ADR_1\256
           ..............
           DB   ADR_31\256

ADR_28     NOP
ADR_24     NOP
ADR_20     NOP
ADR_16     NOP
ADR_12     NOP
ADR_8      NOP
ADR_4      NOP
ADR_0      NOP          ;4 ⠪.
           RET

ADR_29     NOP
ADR_25     NOP
ADR_21     NOP
ADR_17     NOP
ADR_13     NOP
ADR_9      NOP
ADR_5      NOP
ADR_1      RET  NZ      ;5 ⠪⮢.
           RET

ADR_30     NOP
ADR_26     NOP
ADR_22     NOP
ADR_18     NOP
ADR_14     NOP
ADR_10     NOP
ADR_6      NOP
ADR_2      INC  HL      ;6 ⠪⮢.
           RET

ADR_31     NOP
ADR_27     NOP
ADR_23     NOP
ADR_19     NOP
ADR_15     NOP
ADR_11     NOP
ADR_7      NOP
ADR_3      LD   A,(HL)  ;7 ⠪⮢.
           RET

WAIT       LD   DE,-156
           ADD  HL,DE
           LD   A,L
           AND  31
           LD   E,A

;⮡ ࠧ HL  32, 筮 ᤢ HL  5 ࠧ冷
;ࠢ,    ⪨   ᯮᮡ: ᤢ HL 
;3 ࠧ鸞 ,  뤢 訥  १ 
;,  ⥬ ந ⠭: A -> H -> L.

           XOR  A
           ADD  HL,HL
           RLA
           ADD  HL,HL
           RLA
           ADD  HL,HL
           RLA
           LD   L,H
           LD   H,A

;  ६ 믮 32 ⠪:

WAIT_1     DEC  HL
           LD   A,H
           OR   L
           NOP            ;
           NOP            ;প.
           JP   NZ,WAIT_1

           EX   DE,HL
           LD   H,TAB_ADR/256
           LD   L,(HL)
           JP   (HL)

    ,   "\" -  ᫥ ⪠ 
.  襯ਢ񭭮 楤  ᯮ, ⮡
 訩  塠⭮ 稭. ᫨  ᯮ㥬
 ᥬ    ন, , ,
।ᬮ७ ᯥ樠  ᫥ 襣 , 
 ᥬ ᠬ 뢠 訩 ,  १
  .  ࠩ 砥  ᯮ짮
ࠢ⢮ A\256=A-((A/256)*256).

    ॡ㥬 த⥫쭮 প  ⠪ ( 188 
65535) 㪠뢠  ॣ஢  HL । 맮
楤.  ⮬  㦭 ᯥ樠쭮 뢠, 
믮  㧪 ⮣ ᫠  HL  맮 楤
⮦  - ६:  㦥 뢠  ᠬ
楤.
    ᫨, ᪠,  -  ணࠬ 㦭 প 
500 ⠪⮢,  襬 ᫥饥:

           LD   HL,500
           CALL WAIT

     , ਬ ⮩ 楤  ॡ 
ணࠬ ᯥ樠   ६ 믮 . 
㦭  ࠧ 㬠,  ᫥⥫쭮 
ॠ    প. ⠢ 㦭 ᫮,  !
  뢠!
     ⮩ 楤ன 祭 㤮 짮, ᫨ 筠
稭 প ࠭  ⭠,  室 ""
   ⫠ ணࠬ.  ६ প ,
   ᫮   ணࠬ   ⫠稪.
     ᢮ ࠡ 楤  祭 ॣ஢ 
HL  DE,  ⠪   ॣ 䫠. ᫨ 
⥫쭮, ,  ᨬ  樨,  
࠭   ⥪  ⥬ ⠭ ( PUSH,
POP),   ६ 믮 楤 ⠭
ୠ⨢  ॣ஢, ᫨ ⠬  ᮤন 祣
㦭 ( EXX, EX AF,AF').  ⮬  㪠뢠 
HL ६ প  㤥  ६ 믮 
࠭  ⠭ ॣ஢ (᫥, ⮡  ⮬
㪠뢠 ६ প  ⠫  쭮 - 188
⠪⮢!). : ६ 믮  PUSH HL, PUSH DE,
PUSH AF - 11 ⠪⮢; POP HL, POP DE, POP AF - 10 ⠪⮢; EXX,
EX AF,AF' - 4 ⠪.

    ਬ:  㦭 প  750 ⠪⮢,  祭 HL 
DE    (ୠ⨢ ॣ - ⮦). ,
HL  DE  ᭠砫 ࠭  ⥪ (PUSH HL, PUSH DE), 
᫥ 맮 楤 - ⠭ (POP DE, POP HL).
뢠 ६ 믮  : 11+11+10+10=42 ⠪.
 ணࠬ 襬:

           PUSH HL ;࠭
           PUSH DE ;ॣ஢.

           LD   HL,750-42
           CALL WAIT

           POP  DE ;⠭
           POP  HL ;ॣ஢.

      楤 WAIT - 㭨ᠫ쭠,   砥
筮  ᯮ짮  , 祢,   
, 祬 ᯥ樠쭮 ᠭ  ॠ樨 ⭮
প ࠣ ணࠬ.  ᫨ 楤 뢠 
  ணࠬ,  ࠧ묨 ६ প,  
㤥 㦥 룮  ࠢ  ⥬,  ᫨   
  ᢮ ࠣ ணࠬ, ॠ騩 প.
    楤 WAIT  뫮 ,  ਭ樯, ᤥ  
 ਢ뢠  , ⭮ 256.     ᠭ
६  ⮬, ⮡ 쭠 প, ⨣  
, 뫠   , ..  㢥祭 
ᯮ짮 楤.

     ਢ ⥪   楤,  ॠ樨
 த⥫ থ ( 469  2^32-1 ⠪⮢).

WAIT_LONG  PUSH BC
           PUSH AF

           LD   BC,-405
           ADD  HL,BC
           LD   BC,-1
           EX   DE,HL
           ADC  HL,BC
           EX   DE,HL

           LD   A,L
           AND  3
           ADD  A,A
           ADD  A,A                ;*4
           ADD  A,WAIT_CODE\256
           LD   C,A
           LD   A,WAIT_CODE/256
           ADC  A,0
           LD   B,A
           PUSH BC

           LD   A,L
           RRA
           RRA
           CPL
           AND  15
           ADD  A,WAIT_NOP\256
           LD   C,A
           LD   A,WAIT_NOP/256
           ADC  A,0
           LD   B,A
           PUSH BC

; DEHL:

           XOR  A
           ADD  HL,HL
           EX   DE,HL
           ADC  HL,HL
           EX   DE,HL
           RLA
           ADD  HL,HL
           EX   DE,HL
           ADC  HL,HL
           EX   DE,HL
           RLA
           LD   L,H
           LD   H,E
           LD   E,D
           LD   D,A

; DE - ⢮ ஢ 横 ( - 64 ⠪).

           LD   BC,-1

WAIT_L1    ADD  HL,BC
           INC  L           ;஢塞: L=0?
           DEC  L           ;(  䫠 C).
           JP   Z,WAIT_L2
           EX   DE,HL
           ADC  HL,BC
           EX   DE,HL
           JR   WAIT_L1

WAIT_L2    LD   A,H         ;L=0,  HDE=0?
           OR   D           ; C 뢠.
           OR   E
           NOP              ;
           NOP              ;প
           RET  C           ; 4+4+5=13 ⠪⮢.
           JP   NZ,WAIT_L1
           RET              ;室  , ࠭
                            ;񭭮  ⥪.

WAIT_NOP   DS   15,0        ;15  NOP.
           RET              ;室  , ࠭
                            ;񭭮  ⥪.

WAIT_CODE  NOP
           JP   WAIT_EXIT
           RET  C
           JP   WAIT_EXIT
           INC  HL
           JP   WAIT_EXIT
           LD   A,(HL)
           JP   WAIT_EXIT

WAIT_EXIT  POP  AF
           POP  BC
           RET

     楤 - 119 ⮢. ॡ㥬 த⥫쭮
প  ⠪ 㪠뢠 ⠪: 訥 ࠧ 㦠
 ॣ஢  DE, 訥 -  HL.    ।饩
楤, ६ 믮  㧪  맮 ᯥ樠쭮
뢠  㦭.

    ਬ:  㦭 প  100000 ⠪⮢. 
⭠筮   #186A0.  ணࠬ 襬:

           LD   HL,#0001
           LD   DE,#86A0
           CALL WAIT_LONG

    ᫨  ணࠬ 㦥 ᯮ 楤 WAIT 
থ,  469 ⠪⮢,  稭 室 প 
  ࠧ ॢ室 65535,     楤
WAIT_LONG (⥬ ᠬ   ࠧ ணࠬ), 
⠢ 冷 ᪮쪮 맮 楤 WAIT.

    ਬ: 㦭 প  150000 ⠪⮢.  150000 
65535, 砥 ⭮ 2  ⮪ 18930.  ணࠬ 襬:

           LD   HL,65535
           CALL WAIT
           LD   HL,65535
           CALL WAIT
           LD   HL,18930
           CALL WAIT

    ᫥ ⬥,  楤 WAIT  WAIT_LONG 
ᮤঠ ᠬ ⪮; ᫥⥫쭮, 
 訢  .
