ReC98/libs/master.lib/vsync_wait.asm

69 lines
1.1 KiB
NASM

; master library - PC-9801
;
; Description:
; VSYNC(VBLANK)開始待ち
;
; Function/Procedures:
; void vsync_wait(void) ;
;
; Parameters:
; none
;
; Returns:
; none
;
; Binding Target:
; Microsoft-C / Turbo-C / Turbo Pascal
;
; Running Target:
; PC-9801
;
; Requiring Resources:
; CPU: 8086
;
; Notes:
; 割り込み禁止状態で呼び出すとハングアップの恐れがあります。
;
; Assembly Language Note:
;
;
; Compiler/Assembler:
; TASM 3.0
; OPTASM 1.6
;
; Author:
; 恋塚昭彦
;
; Revision History:
; 92/11/21 Initial: vsync.asm
; 93/ 8/ 8 Initial: vsyncwai.asm/master.lib 0.20
func VSYNC_WAIT ; vsync_wait() {
cmp vsync_OldMask,0
jnz short @@USING_INT
; VBLANKの立ち上がりを待つ
@@RUNNING:
jmp short $+2
jmp short $+2
in AL,0a0h
test AL,20h
jnz short @@RUNNING
@@SLEEPING:
jmp short $+2
jmp short $+2
in AL,0a0h
test AL,20h
jz short @@SLEEPING
ret
; Windowsではポート監視だと正しく読み取れないため、
; 割り込みを使っていればそちらを優先する。
@@USING_INT:
mov AX,vsync_Count1
@@INT_WAIT:
cmp AX,vsync_Count1
je short @@INT_WAIT
ret
endfunc ; }