ReC98/libs/master.lib/graph_extmode.asm

107 lines
2.3 KiB
NASM
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; master library - 9821
;
; Description:
; 9821拡張グラフィックモードの設定取得
;
; Function/Procedures:
; unsigned graph_extmode( unsigned modmask, unsigned bhal ) ;
;
; Parameters:
; modmask:上位8bit: BHを操作するビットマスク
; modmask:下位8bit: ALを操作するビットマスク
; bhal 上位8bit: BHに設定する値(modmaskに対応したビットのみ有効)
; 下位8bit: ALに設定する値(modmaskに対応したビットのみ有効)
;
; ビットの内容:
; AL b7 b6 b5 b4 b3 b2 b1 b0
; ++- 0 ノンインターレース
; 1 インターレース
; ++-++------- 00 15.98kHz
; 10 24.83kHz
; 11 31.47kHz
; BH b7 b6 b5 b4 b3 b2 b1 b0
; || || ++-++- 00 20行
; || || 01 25行
; || || 10 30行
; ++-++------------- 00 640x200(UPPER)
; 01 640x200(LOWER)
; 10 640x400
; 11 640x480
;
;
; Returns:
; 実際に設定した値(almod=bhmod=0ならば取得した値)
; (上位8bit=BH, 下位8bit=ALね)
;
; Binding Target:
; Microsoft-C / Turbo-C / Turbo Pascal
;
; Running Target:
; PC-9801/9821, ただし9821でないと実行しても何もしないで 0 を返す。
;
; Requiring Resources:
; CPU: V30
;
; Notes:
;
;
; Assembly Language Note:
;
;
; Compiler/Assembler:
; TASM 3.0
; OPTASM 1.6
;
; Author:
; 恋塚昭彦
;
; Revision History:
; 94/ 1/ 8 Initial: grpextmd.asm/master.lib 0.22
func GRAPH_EXTMODE ; graph_extmode() {
xor AX,AX
mov ES,AX
test byte ptr ES:[045ch],40h
jz short G31_NOTMATE
;
modmask = (RETSIZE+1)*2
bhal = (RETSIZE+0)*2
mov BX,SP
mov CX,SS:[BX+modmask]
mov DX,SS:[BX+bhal]
mov AH,31h
int 18h ; 拡張グラフアーキテクチャモードの取得
mov AH,BH
jcxz short EXT_DONE ; modmask=0だったら読み取って終わり
and DX,CX
not CX
and AX,CX
or AX,DX
mov CX,AX
mov BH,AH
mov AH,30h ; 拡張グラフアーキテクチャモードの設定
int 18h
test TextShown,1
jz short TEXT_SHOWN
mov AH,0ch
int 18h ; テキスト画面の表示
TEXT_SHOWN:
test CL,1
jz short NO_SETAREA
mov AH,0eh ; 一つの表示領域の設定
xor DX,DX
int 18h
NO_SETAREA:
test byte ptr ES:[0711h],1
jz short CURSOR_HIDDEN
mov AH,11h ; カーソルの表示
int 18h
CURSOR_HIDDEN:
mov AX,CX
EXT_DONE:
G31_NOTMATE:
ret 4
endfunc ; }