mirror of https://github.com/nmlgc/ReC98.git
139 lines
2.0 KiB
NASM
139 lines
2.0 KiB
NASM
; master library - GRPHICS - GRCG - GAIJI - PC98V
|
|
;
|
|
; Description:
|
|
; グラフィック画面へ外字を描画する
|
|
;
|
|
; Function/Procedures:
|
|
; void graph_gaiji_putc( int x, int y, int ank, int color )
|
|
;
|
|
; Parameters:
|
|
; x,y 開始左上座標
|
|
; ank 半角文字コード
|
|
; color 色( 0〜15 )
|
|
;
|
|
; Returns:
|
|
; none
|
|
;
|
|
; Binding Target:
|
|
; Microsoft-C / Turbo-C / Turbo Pascal
|
|
;
|
|
; Running Target:
|
|
; PC-9801V
|
|
;
|
|
; Requiring Resources:
|
|
; CPU: V30
|
|
; GRCG
|
|
;
|
|
; Notes:
|
|
; クリッピングは行っていません。
|
|
; 外字があらかじめ定義されている必要があります。
|
|
;
|
|
; Assembly Language Note:
|
|
;
|
|
;
|
|
; Compiler/Assembler:
|
|
; TASM 3.0
|
|
; OPTASM 1.6
|
|
;
|
|
; Author:
|
|
; Kazumi
|
|
;
|
|
; Revision History:
|
|
; 93/ 7/16 Initial: grpgjput.asm/master.lib 0.20
|
|
|
|
func GRAPH_GAIJI_PUTC ; graph_gaiji_putc() {
|
|
push BP
|
|
mov BP,SP
|
|
push DI
|
|
|
|
@@x = (RETSIZE+4)*2
|
|
@@y = (RETSIZE+3)*2
|
|
@@ank = (RETSIZE+2)*2
|
|
@@color = (RETSIZE+1)*2
|
|
|
|
mov CX,[BP+@@x]
|
|
mov DI,[BP+@@y]
|
|
mov DX,[BP+@@color]
|
|
mov BP,[BP+@@ank] ;BP
|
|
if GAME ge 4
|
|
add BP,5680h ;from gjwrite.asm
|
|
else
|
|
adc BP,5680h ;from gjwrite.asm
|
|
endif
|
|
and BP,0ff7fh
|
|
|
|
; GRCG setting..
|
|
pushf
|
|
mov AL,0c0h ;RMW mode
|
|
CLI
|
|
out 7ch,AL
|
|
popf
|
|
shr DX,1
|
|
sbb AL,AL
|
|
out 7eh,AL
|
|
shr DX,1
|
|
sbb AL,AL
|
|
out 7eh,AL
|
|
shr DX,1
|
|
sbb AL,AL
|
|
out 7eh,AL
|
|
shr DX,1
|
|
sbb AL,AL
|
|
out 7eh,AL
|
|
|
|
; CG dot access
|
|
mov AL,0bh
|
|
out 68h,AL
|
|
|
|
mov AX,DI ;-+
|
|
shl AX,2 ; |
|
|
add DI,AX ; |DI=y*80
|
|
shl DI,4 ;-+
|
|
mov AX,CX
|
|
and CX,7h ;CL=x%8(shift dot counter)
|
|
shr AX,3 ;AX=x/8
|
|
add DI,AX ;GVRAM offset address
|
|
mov ES,graph_VramSeg
|
|
|
|
mov AX,BP
|
|
out 0a1h,AL
|
|
mov AL,AH
|
|
out 0a3h,AL
|
|
mov DX,16
|
|
xor CH,CH
|
|
|
|
EVEN
|
|
@@PUT_LOOP:
|
|
mov AL,CH
|
|
or AL,00100000b ;L/R
|
|
out 0a5h,AL
|
|
in AL,0a9h
|
|
mov AH,AL
|
|
mov AL,CH
|
|
out 0a5h,AL
|
|
in AL,0a9h
|
|
mov BH,AL
|
|
mov BL,0
|
|
shr AX,CL
|
|
shr BX,CL
|
|
xchg AL,AH
|
|
stosw
|
|
mov ES:[DI],BL
|
|
add DI,78 ;next line
|
|
inc CH
|
|
dec DX
|
|
jnz short @@PUT_LOOP
|
|
|
|
; CG code access
|
|
mov AL,0ah
|
|
out 68h,AL
|
|
|
|
; GRCG off
|
|
xor AL,AL
|
|
out 7ch,AL ;grcg stop
|
|
|
|
pop DI
|
|
pop BP
|
|
ret 4*2
|
|
endfunc ; }
|