;64ÚÄÄÄÄÄÄÄÄÄÄ¿
;  ³CP/M*2    ³
;48ÃÄÄÄÄÄÄÄÄÄÄ´
;  ³BASIC     ³
;32ÃÄÄÄÄÄÄÄÄÄÄ´
;  ³IF1 Unused³
;16ÃÄÄÄÄÄÄÄÄÄÄ´
;  ³IF        ³
;0 ÀÄÄÄÄÄÄÄÄÄÄÙ

HD11    	EQU     $5CED
ROMDest		EQU		32768
ROMLen		EQU		16384


       	org     25000
Start:
        di

        ld		a, (ROMSel)
        or		a
        jr		nz, CheckROM1
        call	SaveIF1
        jr		SaveEnd

CheckROM1:
		cp		1
		jr		nz, CheckROM2
		call	SaveIF1Unused
		jr		SaveEnd

CheckROM2:
		cp		2
		jr		nz, CheckROM3
		call	SaveBasic
		jr		SaveEnd

CheckROM3:
		cp		3
		jr		nz, SaveEnd
		call	SaveCPM

SaveEnd:
        call    SelectBank0
        ei
        ret


SaveIF1:
		ld		hl, CopyBank0
		jp		PageInROM0


SaveIF1Unused:
		ld		hl, CopyBank1
		jp		PageInROM0

SaveBasic:
		jp		CopyBank0

SaveCPM:
		jp		CopyBank1




PageInROM0:
        ld		(HD11), hl
        rst		8
        defb	50
        ret						           ;page-out here

CopyBank0:
        call    SelectBank0
        call    CopyROM
        ret

CopyBank1:
        call    SelectBank1
        call    CopyROM
        ret




SelectBank0:
        ld		a, HC_CFG_ROM_BANK0
        out		(HC_CFG_PORT), a
        ret


SelectBank1:
        ld		a, HC_CFG_ROM_BANK1
        out		(HC_CFG_PORT), a
        ret


CopyROM:
        ld		hl, 0
        ld		de, ROMDest
        ld		bc, ROMLen
        ldir
        ret

ROMSel	db		0

        include "hccfg.asm"