EXRAMMODASM; PROGRAMM FUER 64K-RAM-MODUL
; ZUR UNTERSTUETZUNG BEI DER ASSEMBLER-
; PROGRAMMIERUNG DURCH SPEICHERBANK-
; WECHSEL ZUM SCHUTZ DES QUELLPROGRAMMES
	ORG	0BF00H
CAOS	EQU	0F003H
MODU	EQU	26H
M64K	EQU	0F6H
ARGN	EQU	0B781H
NUMVX	EQU	0B797H
;
	DEFW	7F7FH
	DEFM	'EXRAM'
	DEFB	1
	LD	B,L
	LD	C,80H
	LD	(NUMVX),BC
	IN	A,(C)
	CP	M64K
	JR	Z,EX2
ERROR:	CALL	CAOS
	DEFB	19H	;ERROR
	RET
;
EX2:	LD	HL,0B800H ;MODUL UMSCH.
	LD	BC,(NUMVX)
	LD	A,B
	ADD	L
	LD	L,A
	LD	A,M
	AND	0C0H
	OR	3
	XOR	80H
	LD	M,A
	OUT	(C),A
	CALL	CAOS
	DEFB	1CH
	CALL	CAOS
	DEFB	2CH
;
	LD	SP,0BFFEH
	LD	H,(IX+1)
	LD	L,(IX+4)
	PUSH	HL
	DI
	IN	A,(88H)	;RAM0 AUS
	RES	1,A
	OUT	(88H),A
;
	LD	A,1
	CALL	CAOS
	DEFB	31H	;SIXD
	IN	A,(88H)
	RES	1,A
	OUT	(88H),A
	POP	HL
	LD	A,H
	OUT	(84H),A
	LD	(IX+1),A
	LD	A,L
	AND	0FEH
	LD	(IX+4),A
	OUT	(86H),A
EX11:	LD	SP,1C4H
	EI
	CALL	CAOS
	DEFB	12H
;
; ZURUECKSTELLEN AUF RAM
	DEFW	7F7FH
	DEFM	'BACKRAM'
	DEFB	1
	DI
	LD	SP,0BFFEH
	LD	H,(IX+1)
	LD	L,(IX+4)
	PUSH	HL
	IN	A,(88H)
	SET	1,A	;RAM ON
	OUT	(88H),A
	LD	A,1
	CALL	CAOS
	DEFB	31H
	POP	HL
	LD	A,H
	LD	(IX+1),A
	OUT	(84H),A
	LD	A,L
	OR	1
	LD	(IX+4),A
	OUT	(86H),A
	JR	EX11
;
;VERLAGERN SPEICHERINHALT ZWISCHEN
;ZWEI SEITEN DES 64K-MODULS
	DEFW	7F7FH
	DEFM	'MCOPY'
	DEFB	1
	LD	A,(ARGN)
	CP	3
	JP	C,ERROR
	LD	A,C
MC1 	EXX
	LD	B,A
	LD	C,80H
	IN	A,(C)
	CP	M64K
	JP	NZ,ERROR
	LD	HL,0B800H
	LD	A,B
	ADD	L
	LD	L,A
	LD	A,M
	LD	L,A
	DI
	EXX
MCL 	LD	B,M
	EXX
	LD	A,80H
	XOR	L
	OUT	(C),A
	EXX
	LD	M,B
	EXX
	OUT 	(C),L
	EXX
	INC	HL
	AND	A
	PUSH	HL
	SBC	HL,DE
	POP	HL
	JR	NZ,MCL
	EI
	RET
;
