ReC98/libs/master.lib/grcg_setcolor.asm

81 lines
1.4 KiB
NASM

; master library - grcg - PC98V - CINT
;
; Function:
; void _pascal grcg_setcolor( int mode, int color ) ;
; void _pascal grcg_off(void) ;
;
; Description:
; ・グラフィックチャージャーのモード設定し、単色を設定する。
; ・グラフィックチャージャーのスイッチを切る。
;
; Parameters:
; int mode モード。
; int color 色。0..15
;
; Binding Target:
; Microsoft-C / Turbo-C / etc...
;
; Running Target:
; PC-9801V Normal Mode
;
; Requiring Resources:
; CPU: V30
; GRAPHICS ACCERALATOR: GRAPHIC CHAGER
;
; Compiler/Assembler:
; TASM 3.0
; OPTASM 1.6 ( MASM 5.0互換ならば OK )
;
; Author:
; 恋塚昭彦
;
; Revision History:
; 92/ 6/ 8 Initial
; 92/ 6/11 gc_setcolor()が"ret"で戻っていた(^^; -> ret 4 に修正
; (Thanks, Mikio)
; 92/ 6/16 TASM対応
; 92/ 7/10 mode reg設定時、割り込みを禁止
; 93/ 5/ 5 [M0.16] タイルレジスタ設定中まで割り込みを禁止したよーん
func GRCG_SETCOLOR ; {
mov BX,SP
; 引数
@@mode = (RETSIZE+1)*2
@@color = (RETSIZE+0)*2
mov AL,SS:[BX+@@mode]
mov AH,SS:[BX+@@color]
mov DX,007eh
pushf
CLI
out 7ch,AL
shr AH,1 ; B
sbb AL,AL
out DX,AL
shr AH,1 ; R
sbb AL,AL
out DX,AL
shr AH,1 ; G
sbb AL,AL
out DX,AL
shr AH,1 ; I
sbb AL,AL
out DX,AL
popf
ret 4
endfunc ; }
; void _pascal grcg_off(void) ;
func GRCG_OFF
xor AL,AL
out 7ch,AL
ret
endfunc