home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 3
/
FreeSoftwareCollection3pd199x-jp.img
/
pao
/
ms_dos
/
cdplay
/
src
/
itimer.asm
< prev
next >
Wrap
Assembly Source File
|
1980-01-02
|
3KB
|
143 lines
;==============================================================================
; << MASM V5.1 >> for FM TOWNS
;==============================================================================
page 60,132
name INT_TIMER
title Interval Timer
;==============================================================================
; タイマ管理BIOS
;
; CREATE : 1990.08.17
; FINISH : 1990.08.17 V0.50
;
; MSC 用 関数(スモールモデル)
; -- インターバルタイマの使用 --
; intime_init(void) ;
; intime_release(void) ;
;
; < HISTORY >
; 1990.08.17 : CREATE
;
; All Rights Reserved, Copyright (C) Y.Hirata 1990.
;
; Programed by Y.Hirata ( NIFTY-ID : NAB03321 )
;==============================================================================
;
.286 ;
.MODEL SMALL,C ;
.STACK 100h ;
;
;********************************************
; データ領域
;********************************************
.DATA ;
;
public ITcount ;
ITcount dw ? ; インターバルタイマ・カウンタ
;
;
;********************************************
; コード領域
;********************************************
.CODE ;
;
COPYRIGHT db 0Dh
db ' ',0Dh,0Ah,07h
db 0Dh,0Ah,' '
db 'INTERVAL TIMER V0.50 1990-08-17',0Dh,0Ah
db 0Dh,0Ah,' '
db 'Copyright (C) Y.Hirata 1990.'
db 0Dh,0Ah,0Dh,0Ah,1Ah
;
;
;********************************************
; 定数定義
;********************************************
TRUE EQU 1
FALSE EQU 0
;
ZERO EQU 0
;
INT_TIME EQU 97h ; タイマ管理BIOS
;
INT_MODE EQU 0 ; 割り込みモード : インターバルモード
INT_INF EQU 0 ; 割り込みモード使用
;
TITLE_name db 'INTERVAL TIMER'
TITLE_len EQU $-TITLE_name
;
;
;********************************************
; データ定義
;********************************************
parablock db INT_MODE ;
db ZERO ;
dw offset itimer_handr ; ハンドラ・オフセット
dw ? ; ハンドラ・セグメント
dw ZERO ;
dw 1 ; 10ms のインターバル設定
;
itimer_no db ? ; タイマ管理番号
;
;
;********************************************
; タイマハンドラ
;********************************************
itimer_handr proc far ;
push ds ;
;
mov ax,@data ; load ds
mov ds,ax ;
mov ax,ITcount ;
inc ax ;
mov ITcount,ax ; インターバルタイマカウンタ・インクリメント
;
pop ds ;
ret
itimer_handr endp ;
;
;********************************************
; タイマの登録
;********************************************
ITIMER_init proc near ;
push ds ;
push di ;
;
push cs ;
pop ds ; ds = cs
;
mov WORD ptr [parablock+4],cs ;
mov di,offset parablock ;
xor ax,ax ;
int INT_TIME ;
;
mov itimer_no,al ; タイマ管理番号
;
pop di ;
pop ds ;
ret ;
ITIMER_init endp ;
;
;********************************************
; タイマの取消
;********************************************
ITIMER_release proc near ;
push ds ;
;
push cs ;
pop ds ; ds = cs
;
mov ah,01h ;
mov al,itimer_no ;
int INT_TIME ;
;
shr ax,8 ; リターンコード
;
pop ds ;
ret ;
ITIMER_release endp ;
;
;
end