WRTVRM のラップ例
呼び出し先のラベルは C のヘッダに書いた名前に _ を付けたものにする
引数はスタックに積まれる
この関数では
SP+0 リターンアドレス(L)
SP+1 リターンアドレス(H)
SP+3 nAddress(L)
SP+4 nAddress(H)
SP+5 nParam
という順で格納されてコールされる
この例では返値がないが、8 ビット返値は A レジスタに 16 ビット返値は HL レジスタに入れてリターンする
;------------------------------------------------------------------------------
; WRTVRM.
; extern void msxBiosWriteVRAM( u16 nAddress, u8 nParam );
;------------------------------------------------------------------------------
_msxBiosWriteVRAM:
ld hl,#2 ;skip return addr.
add hl,sp
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld a,(hl)
ex de,hl
jp WRTVRM
この例では WRTVRM 内の ret で呼び出し元にリターンするという書き方
最終更新:2009年02月15日 15:46