==============================================================================
͂߂

    8080,8085,Z80 ̃NXJz肵AZuł
    Ce, UCO̗jjbNɑΉĂ܂
    IuWFNg̓CeHEX`,g[S`ŏo͂Ƃł܂
    G~[^(j80, u80, c80, m80, j68)ɑgݍނ߂̃[hĂ܂
    ZASM(v1.64) ɎOo͂܂

    ̓IȎǵAeG~[^, tools80 ̃hLgQƂĂ

    ZASM(v1.64) ̎dlQlɂĂ܂
    http://www.vector.co.jp/soft/dos/prog/se010314.html

    błł
      EBIN, BAS`(DISK BASIC ̃x^t@C) ̏o͂ɑΉ\ł  
      EgpĂ͂ȂAhX͈͂`ł悤ɂH			  DS 
      EWJ}ÑG[OƂ
      EG[bZ[W𒚔Jɂ
      E̕΍                                        
      Ep\[X *߂Ă* END [ (~H)
      EWINCLUDE (~H)

      ESC/MP   Ή
      EMC6800  Ή


==============================================================================
\[XEt@C
  ER[h́uWindows-31JvƂĉ߂܂
  ExȊO͓sɏdċLqł܂
    ɃOt@C̎dl(Ղ)ɗR鐧ł
    RŁux[,x]vux,V{`v֎~Ă܂
  EJ̋؂蕶
      IyR[h(\,V{,x܂)  , ^u, J}
      Iyh(e܂)  J}
    ł
    AAp⊇ʂ̒̋؂蕶͖܂
    ܂uAF'ṽA|XgtB͓ȏĂ܂
    R͋؂蕶ƂĂ܂̂ŒӂĂ
  EZ~R(;) ȍ~̓RgƂĈ܂
    AAp̒̃Z~R͖܂
  E̓Xy[X,^uŕ\ł
    AZilog\L (WX^), (IX ... ), (IY ... ) ̊ʂ͎ł͂܂
    "(IX", "(IY" ̓L[[hł̂ŕłȂ_ɒӂĂ
    n, lm  (n), (lm) ́AŜʂň͂܂Ă邩ۂŋʂĂ܂
    svȊʂ͂Ȃł


==============================================================================
P[VEJE^
  EP[VEJE^ 0x0000 -> 0xFFFF z܂
    SC/MP łlł
    o͍ς݂̃AhX㏑悤Ƃۂɂ̓G[ƂȂ܂
  EP[VEJE^ \[Xt@ĆusvPʂɍXV܂
    }NœWJꂽꍇWJ́usvɐڂ܂
  EȃV{u$vŃANZXł܂


==============================================================================

  E] t32bit ŏ܂
  ELȂꍇA0xFFFF Ń}XNꂽlԂ܂
  E, TAB ŕ\ł

------------------------------------------------------------------------------
  Zq
  ~~~~~~~~~~~~~~~~~~~~
    (  )        : E    
    ~  !        : E   u!v: FALSE(0)  TRUE(0ȊO)
    *  /  %     :     
    +  -        :    u+v: 񂪊܂܂ꍇuAv  <Ή>
    << >>       :     ZpVtg(vẐ32bitt)
    <  <= >  >= :     񌋍ł͂܂
    == !=       :     񌋍ł͂܂                <Ή>
    &           :    u&v: 񂪊܂܂ꍇuAv  <Ή>
    ^           :     
    |           :     
    &&          :     Z]͂܂
    ||          :     Z]͂܂
    ?  :        : E    


  萔
  ~~~~~~~~~~~~~~~~~~~~
    ELɓĂ͂܂̂𐔒lƂĕ]܂
      E擪Ŏn܂														...擪܂́u_vŎn܂	Ƃ邩H
        Eu2001Bv͐Ƃĕ]܂G[ƂȂ܂
      E擪u$vŁA擪̌uv܂́uAv-uFv
        Eu$_123v͐Ƃĕ]܂										...u$_v 00H ƂėǂHHH
      E擪u@vŁA擪̌u0v-u7v
        Eu@_123v͐Ƃĕ]܂										...u@_v 00Q ƂėǂHHH
      Eu%v̖`ɂ邩u)vȊỎZqɑA擪̌u0v܂́u1v
        Eu%2001v͐Ƃĕ]܂
        Eu%1002v͐Ƃĕ]܂G[ƂȂ܂
    EtH[}bg (p͏󂯕t܂)
      E 2iFɁuBv܂ 擪Ɂu%v
      E 8iFɁuOv܂ uQv܂ 擪Ɂu@v
      E10iFɁuDv܂ (ʎqȂ)
      E16iFɁuHv܂ 擪Ɂu$v܂ 擪Ɂu0Xv
    E0xFFFF Ń}XN16bitlԂ܂
      bit15 ͕ł͂܂ (EVtgɒ)
    E擪ƂȂ錅ȊO̔Cӂ̌Ɂu_v}ł܂


  萔
  
  ~~~~~~~~~~~~~~~~~~~~
    Eu'v܂́u"vň͂܂ꂽ̂̂ꕶ̂̂𕶎萔A
      ȊO𕶎Ƃ܂

      萔̗F
        'A', '"', "'"

      ̗F
        'ABC', '"YES"'
        "" (0̕)
        ""&0 ̕]
        "GAME OVER"&0 ̕]

    EGXP[vɂ͑ΉĂ܂
    E萔́Al(ASCIIR[h/b)Ƃĕ]Ă܂
    E͘A(u+v,u&v) r(u==v,u!=v) \ł
      Zq̏ȂƂЕ̏ꍇẢZƂȂ܂
     u0̕vƘAl(萔܂)́uvɂȂ܂
      rŽʂ͐lƂȂ܂
    EOZɕ񂪊܂܂ꍇ
      E̕]ʂɂȂꍇ̓G[Ƃ܂
      E^,Ûǂ炩Ԃ\ꍇ́A
        lԂꍇ()Ƃ܂

        cond?"ABC":0
           "ABC"  chr$(0) Ԃ

        cond1?(cond2?"ABC":1+1):0
           "ABC"  chr$(1+1)  chr$(0) Ԃ
             chr$(1+1)  chr$(1)+chr$(1) ƂȂȂ̂Œ

        cond1?(cond2?"ABC":""+1+1):0
           "ABC"  chr$(1)+chr$(1)  chr$(0) Ԃ


  V{
  ~~~~~~~~~~~~~~~~~~~~
    Eq


==============================================================================
t@C
  Et@C͑΃pXŋLqł܂
    pX̋؂蕶́AvbgtH[ɂ炸u/vgpł܂
  E()Ƃď܂̂Łu"v܂́u'vň͂ł


==============================================================================
[
  E[߂ł́A]ȃp[^ĂG[Ƃ܂

------------------------------------------------------------------------------
  IF 
  ELSEIF 
  ELSE
  ENDIF
  ~~~~~~~~~~~~~~~~~~~~
    E0:FALSE / 0ȊO:TRUE
    E FALSE ̏ꍇA̐߂XLbv܂
    E!FALSE ̏ꍇA̐߂܂ŏi߂܂
      ̐߂ ELSEIF ꍇAENDIF ܂ŃXLbv܂
    EXLbvśAO̐擪 ";;"  "-" tďo͂܂
    E 1PASSڂɉłȂꍇ̓G[Ƃ܂
    ElXg\ł


  REPT 
  ENDM
  ~~~~~~~~~~~~~~~~~~~~
    EΉ ENDM ܂ł ̉񐔌JԂ܂ ([v}N)
    E 1PASSڂɉłȂꍇ̓G[Ƃ܂
      ̒l(JԂ/t32bit)n܂
    E[v񐔂̒lꍇ̓G[Ƃ܂
      [v񐔂 0xFFFF𒴂ꍇ͏s킸ɃG[Ƃ܂
    E[v}Nł́u[JxvWJ܂
    ElXg\ł


  IRP  ,  [,  [, ...]]
  ENDM
  ~~~~~~~~~~~~~~~~~~~~
    EΉ ENDM ܂ł (̐)JԂ܂ ([v}N)
    Éû܂܁vn܂
      nɂāA̕\𒲐Kv܂

      IRP var,"A","B","C","D","E"
        DB var
      ENDM

      IRP var,B,C,D,E,(HL),A
        LD A,var
      ENDM

    E[v}Nł́u[JxvWJ܂
    ElXg\ł


  IRPC  , ()
  ENDM
  ~~~~~~~~~~~~~~~~~~~~
    EΉ ENDM ܂ł (̒)JԂ܂ ([v}N)
    E͕]ɕ萔̒l()}Nɓn܂
      1PASSڂɉłȂꍇ̓G[Ƃ܂
    E[v}Nł́u[JxvWJ܂
    ElXg\ł


  }N MACRO [ [, ...]]
  ENDM
  ~~~~~~~~~~~~~~~~~~~~
    E}N`܂
    Eu.vŎn܂閼O͎g܂
    E}Ńu:v͖܂
    E}N͍Ē`ł܂ (̌ɂI[o[[h͔F߂܂)
      ʏ̃V{(x)Əd閼Ogpł܂A͕ۏ؂܂
    E}NɃjjbNꕔ̋[߂ƓOgpď㏑ł܂
      AA}N͑啶ʂ܂̂ŒӂĂ
      E}NɗD悳[߁FIF, ELSE, ENDIF, REPT, IRP, IRPC, ENDM
        ̖O͋[߂D悳܂
        }N`ł܂gpł܂
      E}NƂĂgp\ȋ[߁FMACRO
       uMACROvƂOgp\ŁA}N`ɎxႵ܂
      ELȊOF
        }ND悳邽߁Aň̐v͎̂gȂȂ܂
    E͍ő 16 ŁAdĂ͂܂
    Ȅꏊ́ÃWbNœ肵܂
        1. sA؂蕶, ZqɊ܂܂镶ŕ
           ɗp镶͌ΏۂɊ܂݂܂
           (^)̕ɂ́u"vu'v܂܂܂
        2. ꂽ񂪉ƓmF
           Ώۂ(^)ꍇ́A̓eSɈvꍇ̂
           Ƃ܂
           ȊO̕(^)̉ƈv镔͖܂
      āA
        EɉZq܂܂ꂽꍇA
        E񒆂̉ (̓eƊSɈvꍇ)
      ͎͓n܂
      ̓eƊSɈvꍇ́Aœeu܂

        DB MACRO a, +, b    ; 
             db a+b         ;udbvuavubv       u+v͖
             endm
        DB MACRO a, op, b   ; 
             db a op b      ; 邱 (aopb ͕Ȃ)
             endm

        DB MACRO r+r, r
             db r+r, r      ;udbvurvurvurv  ur+rv͖
             endm

        XOR MACRO reg
             if "reg"=="A"  ; reg ͎ɒuAƂĕ]܂
                            ; FXOR A  "A"=="A" (true)
                            ; FXOR B  "B"=="A" (false)
                LD reg,0    ; XOR A  LD A,0
             else           ;
                xor reg     ; XOR B  xor B
             endif          ;
             endm

    E̐擪Ɂu*vtꍇ́AЂƂȏ̎󂯕t܂
     u*v͉̖Oɂ͊܂܂܂
     u*vɂw肪ꍇ̓G[Ƃ܂

        DO MACRO key, *args, note
           DB  key
           IRP arg, args
           DB  "1.",arg
           ENDM
           DB  note
           ENDM

        DO "PC-8001mkIISR", "6",         "24K"
        DO "PC-8001mkII",   "2",         "24K"
        DO "PC-8001",       "0","1",     "24K"
        DO "PC-880",        "4","5","8", "32K"

    EɉZq͎g܂ (G[, xo܂)
    Eɖgp̂̂ĂG[, xo܂
    E}N`̓lXgł܂
    E}N`Ƀ}ŇĂяo⃋[v}N܂߂邱Ƃł܂A
      z`FbNĂ܂̂ŒӂĂ


  }N [ [, ...]]
  ~~~~~~~~~~~~~~~~~~~~
    EOƈ̐vĉLɓȂꍇA}NƂēWJ܂
        EOu:v                               ( x`)
        EAŏ̂̂啶ɑāuEQUv ( V{`)
        EAŏ̂̂u=v                 ( V{`)
      v̂ȂꍇAł̓G[Ƃ܂
        SUB MACRO regA,src
            SUB src
        ENDM
      uSUB A,(HL)v̓}NuSUB (HL)vɒuĂĕ]
      uSUB (HL)v͈̐vȂ̂ł̂܂܃AZuɓn

    Eu$v͓WJɊes]Ƃ̒lɂȂ܂

    ÉA񂻂̂̂n܂ (WJɂ͕]܂)
      ɑ}ꍇA]ɒӂĂ

        sample1 MACRO param
          LD A, param*10
        ENDM

        sample2 MACRO param
          LD A, (param)*10
        ENDM

        sample1 1+2    LD A, 1+2*10
        sample1 (1+2)  LD A, (1+2)*10
        sample2 1+2    LD A, (1+2)*10
        sample2 (1+2)  LD A, ((1+2))*10 ʂȊʂ͈e܂

    Ez`FbNĂ܂̂ŒӂĂ
        LD MACRO reg, val
        ;  LD reg,val&7FH   ; [vĕ|ˁH
           ld reg,val&7FH   ; OK
        ENDM


  ֐ FUNCTION [ , [... ,]] 
  ~~~~~~~~~~~~~~~~~~~~
    E̒Łu֐ ( [ , [... ,]] )v̌`Ŏgp܂
      F
        H FUNCTION v16, v16 >> 8;
        LDI H(SCORE);  LDI SCORE >> 8
    ÉuvƂĕ]ln܂
      }N̈Ƃ͈Ⴂ܂̂ŒӂĂ
    E֐̏e̓Oɏo͂܂
    EDB, DW ł́AOɌ^ĂȂƏł܂
      A񂪊܂܂Ȃꍇ͎sɃG[ƂȂ܂
      (gȂĂ)^̈KvɂȂ܂̂ŒӂĂ
      F
        TEST_NG FUNCTION     "ABC"
        TEST_OK FUNCTION v1, "ABC"
        DB  TEST_NG()   ; Ǒ^`FbNŐlƔfG[ƂȂ
        DB  TEST_OK("") ; ^̈^ (̓_~[)

     (dl) ł


  END [(G[bZ[W)]
  ~~~~~~~~~~~~~~~~~~~~
    Eȍ~̃\[X𖳎܂
      lXg}NłĂWJ𒆎~AI܂
    Es̓Oɏo͂܂
    EEND ̐錾ȂĂAG[,x͏o܂
    E(G[bZ[W) ꍇ́uIvƂ܂
      ܂ 0 ȊO̒lԂꍇ́uُIvƂ܂


  BINCLUDE (t@C) [, (offset) [, (TCY)]]
  ~~~~~~~~~~~~~~~~~~~~
    EIy[VJE^oCit@Cǂݍ݂܂
    E(t@C)
      1PASSڂɉłȂꍇ, ԂȂꍇ̓G[Ƃ܂
    E(offset)
      ȗꍇ 0 ƂȂ܂
      1PASSڂɉłȂꍇ, ̒lꍇ̓G[Ƃ܂
      t@CTCY傫ȒlłG[Ƃ܂
    E(TCY)
      ȗꍇ̓t@CTCYƂȂ܂
      1PASSڂɉłȂꍇ, ̒lꍇ̓G[Ƃ܂
      t@CTCY𒴂lłG[Ƃ܂
    Eǂݍݒ EOF 𒴂ꍇAwTCY܂ 0xFF Ŗ߂܂
    EOɂ͓ǂݍ񂾃t@C̓eL^܂ (bdl)
    EBINCLUDE ̂݁ADS,DW ŗ\񂵂̈㏑ł܂ (xȂ)
      t BINCLUDE œǂݍ񂾗̈ DS,DW ōĊ蓖Ăł܂


  INCLUDE (t@C)
  ~~~~~~~~~~~~~~~~~~~~
    EINCLUDE悩߂A(ENDɒBĂȂ)𑱂܂
    E1PASSڂɉłȂꍇ, ԂȂꍇ̓G[Ƃ܂
    ElXg\łAz`FbNĂ܂̂ŒӂĂ


  CHAIN (t@C)
  ~~~~~~~~~~~~~~~~~~~~
    ECHAIN悩߂A[EOF]܂ŃXLbv܂
    E1PASSڂɉłȂꍇ, ԂȂꍇ̓G[Ƃ܂
    EXLbvśAO̐擪 ";;" tďo͂܂
    ElXg\łAz`FbNĂ܂̂ŒӂĂ
    E}Nł͕̓ۏႵ܂
      uCHAIN悩߂Ȃv̂ł͂Ȃ̂Œ
        INCLUDEt@CCHAINꍇF
        EINCLUDEt@C CHAINAA[EOF]܂ŃXLbv܂
        EINCLUDEt@C̐e INCLUDEAA܂


  ORG 
  ~~~~~~~~~~~~~~~~~~~~
    EIy[VJE^ɒl(AhX)ݒ肵܂
    E(t32bit) 1PASSڂɉłȂꍇ̓G[Ƃ܂
    E̒lꍇ̓G[Ƃ܂
      AhX 0xFFFF𒴂ꍇ 16bitɃ}XN܂
    Exłݒ\łAIuWFNg𐶐ς݂̃AhX͎wł܂
    ulabel: ORG vƋLqꍇ label  ORG ݒÕAhXɂȂ܂
      O̊Ysɂ̓xł͂Ȃ ORG Őݒ肳ꂽAhXL^܂
      xƃV{/x̓s`Ɠ悤ɋ֎~邩܂


  DEFS  [,]
  DS    [,]
  ~~~~~~~~~~~~~~~~~~~~
    EIy[VJE^i߂܂
    Ep[^
      EXLbvoCg
      E(t32bit) 1PASSڂɉłȂꍇ̓G[Ƃ܂
      E̒lꍇ̓G[Ƃ܂
        XLbvɃAhX 0xFFFF𒴂ꍇ 16bitɃ}XNđs܂
    Ep[^
      Ep[^w肳ĂȂꍇ̓oCi𐶐܂
        ÃAhX́u\ς݁vƂĎgpłȂȂ܂
        BINCLUDE ̂݁ADS,DW ŗ\񂵂̈㏑\Ƃ܂ (xȂ)
          t BINCLUDE œǂݍ񂾗̈ DS,DW ōĊ蓖Ăł܂
        oCi𐶐AZup̃\[X̂܂ܗpꍇ́A
        }N DS I[o[ChĂ
        F
          DS MACRO off
             ds off,0   ;  ds ̓I[o[ChΏۂɂȂȂ
          ;  DEFS off,0 ; i DEFS gȂ
          ENDM
      Ep[^w肳Ăꍇ͂̒lŖ߂܂
        ̏ꍇ̓oCi𐶐܂


  DEFB  [, [, ...]]
  DB    [, [, ...]]
  ~~~~~~~~~~~~~~~~~~~~
    EBYTEf[^L܂
    Ef[^Ȃꍇ̓G[Ƃ܂
    EԂꍇ́A擪 ASCIIR[h(b) Ő؂o܂
      'ABC'  DB  41H,42H,43H
    E܂ޏꍇA1PASSڂɉłȂꍇ̓G[Ƃ܂
      ł́Af[^ςȂ̏ꍇG[ƂȂ܂
        UNDEF?"ABC":"DEF" (K3)
        "ABC"+UNDEF       (K4)
        u"ABC",UNDEFvƂΒʂ (1PASSځF41H,42H,43H, n)
      ܂܂Ȃ 2PASSڂɉłȂꍇ̂݃G[Ƃ܂
    Eu$v̓\[Xs̏I܂ŕω܂


  DEFW  [, [, ...]]
  DW    [, [, ...]]
  ~~~~~~~~~~~~~~~~~~~~
    EWORDf[^L܂ (SC/MP ̂ Big Endian)
    Ef[^Ȃꍇ̓G[Ƃ܂
    EԂꍇ́A擪 ASCIIR[h(b) Ő؂o܂
      'ABC'  DB  41H,00H,42H,00H,43H,00H ; 8080,8085,Z80
      'ABC'  DB  00H,41H,00H,42H,00H,43H ; SC/MP
    E܂ޏꍇA1PASSڂɉłȂꍇ̓G[Ƃ܂
      ł́Af[^ςȂ̏ꍇG[ƂȂ܂
      ܂܂Ȃ 2PASSڂɉłȂꍇ̂݃G[Ƃ܂
    Eu$v̓\[Xs̏I܂ŕω܂


  IyR[h [Iyh| [,...]]
  ~~~~~~~~~~~~~~~~~~~~
    EIyhɉߕsꍇ̓G[Ƃ܂
    EL߂ł͎ 1PASSڂɉłȂꍇ̓G[Ƃ܂
      ȊÓA 2PASSڂɉłȂꍇ̓G[Ƃ܂
      8080/8085 : RSTn
        Z80       : RSTn, BITn,uIM nv,uOUT (C),0v


  V{ EQU 
  V{  =  
  ~~~~~~~~~~~~~~~~~~~~
    EV{`܂
      xƓsł͒`ł܂ (loǧ₷D)
    Eu:ṽV{́A΃AhX̌vZΏۂƂȂꍇ܂
      Iy[VJE^͍XV܂
      ́u:v̓V{Ɋ܂߂܂
    EƂĕ]\ȕ̓V{Ɏg܂
      ݁A`ɂ̓G[ƂĂ܂
    EV{͍Ē`ł܂
      AAlŏ㏑ꍇ̓G[Ƃ܂
      xƓǗł̂ŏdł܂
      }NƂ͕ʊǗł̂ŏd\ł
    EV{̒lɕ͒`ł܂
    EIyR[h̓V{ƂĎg܂
    Eu$v̓Iy[VJE^킷ʂȃV{ƂĒ`ς݂ł
      u$v͑΃AhX̌vZΏۂƂȂꍇ܂
    E[J  e|EV{gpł܂
      ڍׂ́uxv̍QƂĂ
      ` PREFIX XVȂ_ăxƓł
    E 1PASSڂɉłȂꍇ̓G[Ƃ܂


  x(V{)
  ~~~~~~~~~~~~~~~~~~~~
    Ex`܂
      ̃x𓯂sŒ`ł܂ (loǧ₷D)
    El(萔)Ƃĕ]̑ΏۂƂȂ镶͎g܂
      ݂̓`FbNĂ܂񂪁A]ɃG[ɂȂƎv܂
        Ő̃xg\肪܂
        ̂ƂɃ`FbNǉ܂
    E[, IyR[h, V{`, }N`ȊOׂ͂ăxƂ܂
    Éu:v̓xɊ܂߂܂
    Ex͍Ē`ł܂
      V{ƓǗł̂ŏdł܂
      }NƂ͕ʊǗł̂ŏd\ł
    Exɂ̓Iy[VJE^̒lݒ肳܂
      x͎̒ő΃AhX̌vZΏۂƂȂꍇ܂
    Ex́u.vgāuPREFIX.suffixv̍\Ƃ邱Ƃł܂
      E"." Ŏn܂郉xu[JExvƌĂт܂
      Ex`Ɂu.vŎn܂ĂȂꍇ PREFIX XV܂
        PREFIX ̓x擪ŏ́u.v܂ł̕ɂȂ܂
      Eu.suffixv͖Ă܂܂
      E` PREFIX ȗꍇA݂ PREFIX ⊮܂
        AAPREFIX `̏ꍇ͉܂
      Ep PREFIX ȗꍇA݂ PREFIX ⊮܂
        AAPREFIX `̏ꍇ͉܂
      pu.suffixv݂̂ňӂɌ\ȏꍇ PREFIX Č܂
        āAPREFIX vȂꏊł̓G[ɂȂ܂
    Ee|ExF
      E[v}Nł́ue|ExvWJ܂
      EPREFIX ⊮ŁAŏɌu#v̒ [vID ⊮܂
      E⊮ꂽ [vID ́A[v𔲂ƌȂȂ܂
       u#v PREFIX ɒuꂽꍇlł


==============================================================================
G[bZ[W




------------------------------------------------------------------------------





==============================================================================
