home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / pao / ms_dos / swatch / src / itimer.asm < prev    next >
Assembly Source File  |  1980-01-02  |  3KB  |  143 lines

  1. ;==============================================================================
  2. ;    << MASM V5.1 >>  for  FM TOWNS
  3. ;==============================================================================
  4.     page        60,132
  5.     name        INT_TIMER
  6.     title        Interval Timer
  7. ;==============================================================================
  8. ;    タイマ管理BIOS
  9. ;
  10. ;    CREATE : 1990.08.17
  11. ;    FINISH : 1990.08.17  V0.50
  12. ;
  13. ;    MSC 用 関数(スモールモデル)
  14. ;    -- インターバルタイマの使用 --
  15. ;    intime_init(void) ;
  16. ;    intime_release(void) ;
  17. ;
  18. ;    < HISTORY >
  19. ;    1990.08.17 : CREATE
  20. ;
  21. ;    All Rights Reserved, Copyright (C) Y.Hirata 1990.
  22. ;
  23. ;    Programed by Y.Hirata ( NIFTY-ID : NAB03321 )
  24. ;==============================================================================
  25. ;
  26.             .286                            ;
  27.             .MODEL    SMALL,C                    ;
  28.             .STACK    100h                    ;
  29. ;
  30. ;********************************************
  31. ;            データ領域
  32. ;********************************************
  33.             .DATA                            ;
  34. ;
  35.             public    ITcount                    ;
  36. ITcount            dw        ?                    ; インターバルタイマ・カウンタ
  37. ;
  38. ;
  39. ;********************************************
  40. ;            コード領域
  41. ;********************************************
  42.             .CODE                            ;
  43. ;
  44. COPYRIGHT    db            0Dh
  45.             db            '     ',0Dh,0Ah,07h
  46.             db            0Dh,0Ah,'        '
  47.             db            'INTERVAL TIMER V0.50   1990-08-17',0Dh,0Ah
  48.             db            0Dh,0Ah,'        '
  49.             db            'Copyright (C) Y.Hirata 1990.'
  50.             db            0Dh,0Ah,0Dh,0Ah,1Ah
  51. ;
  52. ;
  53. ;********************************************
  54. ;            定数定義
  55. ;********************************************
  56. TRUE        EQU            1
  57. FALSE        EQU            0
  58. ;
  59. ZERO        EQU            0
  60. ;
  61. INT_TIME    EQU            97h                    ; タイマ管理BIOS
  62. ;
  63. INT_MODE    EQU            0                    ; 割り込みモード : インターバルモード
  64. INT_INF        EQU            0                    ; 割り込みモード使用
  65. ;
  66. TITLE_name    db            'INTERVAL TIMER'
  67. TITLE_len    EQU            $-TITLE_name
  68. ;
  69. ;
  70. ;********************************************
  71. ;            データ定義
  72. ;********************************************
  73. parablock    db        INT_MODE                ;
  74.             db        ZERO                    ;
  75.             dw        offset itimer_handr        ; ハンドラ・オフセット
  76.             dw        ?                        ; ハンドラ・セグメント
  77.             dw        ZERO                    ;
  78.             dw        1                        ; 10ms のインターバル設定
  79. ;
  80. itimer_no    db        ?                        ; タイマ管理番号
  81. ;
  82. ;
  83. ;********************************************
  84. ;            タイマハンドラ
  85. ;********************************************
  86. itimer_handr    proc    far                    ;
  87.             push    ds                        ;
  88. ;
  89.             mov        ax,@data                ; load ds
  90.             mov        ds,ax                    ;
  91.             mov        ax,ITcount                ;
  92.             inc        ax                        ;
  93.             mov        ITcount,ax                ; インターバルタイマカウンタ・インクリメント
  94. ;
  95.             pop        ds                        ;
  96.             ret
  97. itimer_handr    endp                        ;
  98. ;
  99. ;********************************************
  100. ;            タイマの登録
  101. ;********************************************
  102. ITIMER_init        proc    near                ;
  103.             push    ds                        ;
  104.             push    di                        ;
  105. ;
  106.             push    cs                        ;
  107.             pop        ds                        ; ds = cs
  108. ;
  109.             mov        WORD ptr [parablock+4],cs    ;
  110.             mov        di,offset parablock        ;
  111.             xor        ax,ax                    ;
  112.             int        INT_TIME                ;
  113. ;
  114.             mov        itimer_no,al            ; タイマ管理番号
  115. ;
  116.             pop        di                        ;
  117.             pop        ds                        ;
  118.             ret                                ;
  119. ITIMER_init        endp                        ;
  120. ;
  121. ;********************************************
  122. ;            タイマの取消
  123. ;********************************************
  124. ITIMER_release    proc    near                ;
  125.             push    ds                        ;
  126. ;
  127.             push    cs                        ;
  128.             pop        ds                        ; ds = cs
  129. ;
  130.             mov        ah,01h                    ;
  131.             mov        al,itimer_no            ;
  132.             int        INT_TIME                ;
  133. ;
  134.             shr        ax,8                    ; リターンコード
  135. ;
  136.             pop        ds                        ;
  137.             ret                                ;
  138. ITIMER_release    endp                        ;
  139. ;
  140. ;
  141.             end
  142.  
  143.