
; Mapper - Desabilita controle da Mapper pelo DOS2
; Disassemblado por Daniel Caetano

.z80

START:
	; Procura pelo byte 3A de D000 a FFFF
	DI
	LD	HL,0D000h
	LD	BC,02FFFh
SEARCH:
	LD	A,3Ah
	CPIR
	
	; Se nao encontrou, sai... Provavelmente DOS1
	JR	NZ,FINISH

	; Verif se valor do 2o. byte apos 3A eh F2h. Se nao, procura de novo
	INC	HL	
	LD	A,(HL)
	CP	0F2h
	JR	NZ,SEARCH

	; Verifica se o valor do byte entre 3A e F2 eh >= C8h. Nao? Proc. de novo
	DEC	HL
	LD	A,(HL)
	CP	0C8h
	JR	C,SEARCH

	; Verifica se este mesmo byte eh < CB
	CP	0CBh
	JR	NC,SEARCH

	; Substitui instrucoes 3A Cx F2 por DB FC 00
	; Ou seja, LD A,(F2Cxh) (8<=x<=B) por IN A,Fxh NOP (C<=x<=F)
	DEC	HL
	LD	(HL),0DBh
	INC	HL
	LD	A,(HL)
	SUB	0C7h
	ADD	A,0FCh
	LD	(HL),A
	INC	HL
	LD	(HL),00h
	JR	SEARCH

FINISH:
	EI
	RET
