Browse Source

h68units: added some more IOCS calls, mostly related to hardware sprite handling

Karoly Balogh 1 year ago
parent
commit
bcaf8d1409
1 changed files with 70 additions and 0 deletions
  1. 70 0
      packages/h68units/src/h68kiocs.pas

+ 70 - 0
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.