diff --git a/packages/h68units/src/h68kiocs.pas b/packages/h68units/src/h68kiocs.pas index 365794c103..87d457f539 100644 --- a/packages/h68units/src/h68kiocs.pas +++ b/packages/h68units/src/h68kiocs.pas @@ -23,7 +23,14 @@ procedure _iocs_b_curon; procedure _iocs_b_curoff; function _iocs_crtmod(mode: longint): longint; procedure _iocs_g_clr_on; +function _iocs_gpalet(colnum: longint; color: word): longint; function _iocs_vpage(page: longint): longint; +function _iocs_sp_init: longint; +procedure _iocs_sp_on; +procedure _iocs_sp_off; +function _iocs_sp_defcg(code: longint; size: longint; addr: pointer): longint; +function _iocs_sp_regst(spno: longint; mode: longint; x,y: longint; code: dword; prio: longint): longint; +function _iocs_spalet(mode: longint; block: longint; color: longint): longint; implementation @@ -53,6 +60,16 @@ asm trap #15 end; +function _iocs_gpalet(colnum: longint; color: word): longint; assembler; nostackframe; +asm + move.l d2,-(sp) + move.l d1,d2 + move.l d0,d1 + moveq.l #$ffffff94,d0 + trap #15 + move.l (sp)+,d2 +end; + function _iocs_vpage(page: longint): longint; assembler; nostackframe; asm move.l d0,d1 @@ -60,4 +77,57 @@ asm trap #15 end; +function _iocs_sp_init: longint; assembler; nostackframe; +asm + moveq.l #$ffffffc0,d0 + trap #15 +end; + +procedure _iocs_sp_on; assembler; nostackframe; +asm + moveq.l #$ffffffc1,d0 + trap #15 +end; + +procedure _iocs_sp_off; assembler; nostackframe; +asm + moveq.l #$ffffffc2,d0 + trap #15 +end; + +function _iocs_sp_defcg(code: longint; size: longint; addr: pointer): longint; assembler; nostackframe; +asm + move.l d2,-(sp) + move.l d1,d2 + move.l d0,d1 + move.l a0,a1 + moveq #$ffffffc4,d0 + trap #15 + move.l (sp)+,d2 +end; + +function _iocs_sp_regst(spno: longint; mode: longint; x,y: longint; code: dword; prio: longint): longint; assembler; nostackframe; +asm + movem.l d2/d3/d4/d5,-(sp) + movem.l 20(sp),d2/d3/d4/d5 + and.l #$80000000,d1 + move.b d0,d1 + moveq.l #$ffffffc6,d0 + trap #15 + movem.l (sp)+,d2/d3/d4/d5 +end; + +function _iocs_spalet(mode: longint; block: longint; color: longint): longint; assembler; nostackframe; +asm + move.l d2,-(sp) + move.l d3,-(sp) + move.l 12(sp),d3 + move.l d1,d2 + move.l d0,d1 + moveq.l #$ffffffcf,d0 + trap #15 + move.l (sp)+,d3 + move.l (sp)+,d2 +end; + end.