home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / oh_fm / ab_com / ab.asm < prev    next >
Assembly Source File  |  1980-01-02  |  4KB  |  176 lines

  1. ;    'CLOCK WAIT' COMMAND FOR REAL-MODE
  2. ;    cw n(0-3,4-7)
  3.  
  4.     .8086
  5.  
  6. CODE    segment
  7.     assume    cs:CODE,ds:CODE,es:CODE,ss:CODE
  8.  
  9.     org    100h    ; .COM model
  10. cmdln    equ    80h
  11. cmdprm    equ    81h
  12.  
  13. CW    proc
  14.     mov    si,cmdprm        ; 空白スキップ
  15. skipf:    cmp    byte ptr [si],0Dh    ; パラメータ終わり?
  16.     je    check
  17.     cmp    byte ptr [si],' '    ; スペース?
  18.     je    next
  19.     cmp    byte ptr [si],09h    ; タブ?
  20.     jne    check
  21. next:    inc    si
  22.     jmp    skipf
  23. check:    mov    dx,0030h    ; 機種判別
  24.     in    al,dx
  25.     cmp    al,1
  26.     jne    not_towns
  27.     inc    dx
  28.     in    al,dx
  29.     cmp    al,1
  30.     je    old_towns
  31.     cmp    al,2
  32.     je    new_towns
  33.     cmp    al,4
  34.     jne    not_towns
  35.     jmp    new2_towns      
  36. not_towns:            ; TOWNSではない
  37.     mov    dx,offset msg4
  38. exit2:    mov    ah,09h
  39.     int    21h
  40. exit:    mov    ax,4C00h
  41.     int    21h
  42.  
  43. old_towns:            ; 旧TOWNSの場合
  44.     mov    dx,05E0h
  45.     mov    al,[si]
  46.     cmp    al,'N'
  47.     jne    lp1
  48.     mov    al,1
  49.     out    dx,al
  50.     jmp    exit
  51. lp1:    cmp    al,'B'
  52.     jb    status_old
  53.     cmp    al,'E'
  54.     ja    status_old
  55.     sub    al,'B'-4
  56.     out    dx,al
  57.     jmp    exit
  58. status_old:
  59.     mov    dx,offset msg5
  60.     mov    ah,09h
  61.     int    21h
  62.     mov    dx,offset msg2
  63.     mov    ah,09h
  64.     int    21h
  65.     mov    dx,05E0h
  66.     in    al,dx
  67.     mov    dx,offset msg
  68.     cmp    al,1
  69.     jne    lp2
  70.     mov    byte ptr cs:msg[21],'N'
  71.     jmp    exit2
  72. lp2:    add    al,'B'-4
  73.     mov    msg[21],al
  74.     jmp    exit2
  75.  
  76. new_towns:            ; 新TOWNSの場合
  77.         mov     dx,05E2h
  78.         mov     al,[si]
  79.         cmp     al,'N'
  80.         jne     lp3
  81.         mov     al,83h
  82.         out     dx,al
  83.         jmp     exit
  84. lp3:    cmp     al,'A'
  85.         jb      status_new
  86.         cmp     al,'E'
  87.         ja      status_new
  88.         sub     al,'A'-1
  89.         out     dx,al
  90.         jmp     exit
  91. status_new:
  92.     mov    dx,offset msg5
  93.     mov    ah,09h
  94.     int    21h
  95.         mov     dx,offset msg3
  96.         mov     ah,09h
  97.         int     21h
  98.         mov     dx,05E2h
  99.         in      al,dx
  100.         mov     dx,offset msg
  101.         cmp     al,83h
  102.         jne     lp4
  103.         mov     byte ptr cs:msg[21],'N'
  104.         jmp     exit2
  105. lp4:    add     al,'A'-1
  106.         mov     msg[21],al
  107.         jmp     exit2
  108.  
  109.  
  110.  
  111.  
  112. new2_towns:            ; 新新TOWNSの場合
  113.         mov     dx,05E2h
  114.         mov     al,[si]
  115.         cmp     al,'N'
  116.         jne     lp5
  117.         mov     al,83h
  118.         out     dx,al
  119.         jmp     exit
  120. lp5:    cmp     al,'0'
  121.         je      lp5_2
  122.         cmp     al,'A'
  123.         jb      status_new2
  124.         cmp     al,'E'
  125.         ja      status_new2
  126.         sub     al,'A'-1
  127. lp5_:   out     dx,al
  128.         jmp     exit
  129. lp5_2:  mov     al,0
  130.         jmp     lp5_
  131. status_new2:
  132.     mov    dx,offset msg5
  133.     mov    ah,09h
  134.     int    21h
  135.         mov     dx,offset msg3_
  136.         mov     ah,09h
  137.         int     21h
  138.         mov     dx,05E2h
  139.         in      al,dx
  140.         mov     dx,offset msg
  141.         cmp     al,83h
  142.         jne     lp6
  143.         mov     byte ptr cs:msg[21],'N'
  144.         jmp     exit2
  145. lp6:    add     al,'A'-1
  146.         cmp     al,'A'-1
  147.         je      lp8
  148. lp7:    mov     msg[21],al
  149.         jmp     exit2
  150. lp8:    mov     al,'0'
  151.         jmp     lp7
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. CW    endp
  160.  
  161. cr    equ    0Dh
  162. lf    equ    0Ah
  163. msg    db      "現在のウェイトモ-ド=  ",cr,lf,cr,lf 
  164.         db      "HELP: AB <mode(A-E & N)>",cr,lf
  165.     db    "mode:高速 0 <- A <- B <- C <- D <- E 低速",cr,lf
  166.     db    " ノーマル N(速度はCと同等)",cr,lf
  167.     db    "注:FM TOWNS モデル1/2では「B mode」まで、モデル1F/2F/1H/2Hでは「A mode」までしか指定できません。",cr,lf,"$"
  168. msg2    db    "< FM TOWNS モデル1/2 >",cr,lf,"$"
  169. msg3    db    "< FM TOWNS モデル1F/2F/1H/2H >",cr,lf,"$"
  170. msg3_    db    "< FM TOWNS モデル10F/20F/40H/80H >",cr,lf,"$"
  171. msg4    db    "< これはFM TOWNSではありません >",cr,lf,"$"
  172. msg5    db      "<<< AfterBurner.COM Version 2.0 >>>",cr,lf,"$"
  173.  
  174. CODE    ends
  175.     end    cw
  176.