; FILE: Source:modules/BPPCFix.ASM          REV: 0 --- Disable ppc.library of blizzppc

;
; BPPCFix module for BlizKick
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Written by Harry Sintonen.
;
; based on:
;
;** BPPCFix_kickcode.asm
;**
;** Disables ppc.library resident modules on Amigas with BPPC
;** Written in 1998 by Frank Wille <frank@phoenix.owl.de>
;**
;** V1.0  26-Dec-98
;**       created
;
;
;

	incdir	"include:"
	include	"exec/types.i"
	include	"exec/libraries.i"

	include	"exec/execbase.i"

	include	"blizkickmodule.i"	; Some required...

	SECTION	MODULE,CODE
_DUMMY_LABEL
 BK_MOD BKMF_SingleMode,_end,(RTF_COLDSTART)<<24+37<<16+NT_UNKNOWN<<8+0,_name,_idstr,_init

; Singlemode on,
; COLDSTART module, requires KS V37.x or better, module type NT_UNKNOWN, priority 0.

_init	movem.l	d0-a6,-(sp)
	move.l	(4).w,a6

	jsr	(-$84,a6)		; Forbid()

	move.l	(ResModules,a6),a0
	move.l	a0,a1
	bra.b	loop_end
loop:
	move.l	d0,(a1)+
	bpl.b	1$
	bclr	#31,d0
	move.l	d0,a0
	move.l	d0,a1
	bra.b	loop_end
1$:	move.l	d0,a2

; compare module name with "ppc.library"
	move.l	(RT_NAME,a2),a2		; name of current module
	lea	(ppc_name,pc),a3
	moveq	#12-1,d0
2$:	cmpm.b	(a2)+,(a3)+
	dbne	d0,2$
	bne.b	loop_end
	subq.l	#4,a1			; ppc.library found - remove module

loop_end:
	move.l	(a0)+,d0
	bne.b	loop

	clr.l	(a1)
	jsr	(-$27c,a6)		; CacheClearU()

	jsr	(-$8a,a6)		; Permit()

exit	movem.l	(sp)+,d0-a6
	rts

ppc_name
	dc.b	'ppc.library',0

_name	dc.b	'BPPCFix',0
_idstr	dc.b	'BPPCFix 1.0 (2.5.99)',0
	CNOP	0,2
_end

	SECTION	VERSION,DATA

	dc.b	'$VER: BPPCFix_MODULE 1.0 (2.5.99)',0

