N CM11
; SPEICHERMODIFIKATION FUER MCS 80
;
; KONSTANTENDEFINITION
ANZ:	DEF	15	;ANZAHL DER KOMMANDOS
;
MEM:	LD	HL,(RM.MEMSV)
	PUSH	AF
	PUSH	BC
	PUSH	DE
	PUSH	HL
	PUSH	IX
	PUSH	IY
	LD	IX,AHX
	LD	D,H
	LD	E,L
M02:	LD	A,MC.CLEAR
	CALL	MC.BSN
M04:	PUSH	DE
	LD	DE,5
	CALL	MC.BKS
	POP	DE
M06:	CALL	UP4
N10:	PUSH	DE
M12:	LD	DE,0
	EX	(SP),HL
	CALL	MC.HDS
	EX	(SP),HL
	LD	A,'>'
	CALL	MC.BSS
	PUSH	HL
M14:	CALL	UP3
M22:	CALL	MC.TST
	JRZ	M22-#
	LD	HL,ARG
	LD	BC,ANZ
	CPIR
	JRZ	M23-#
	POP	HL
	POP	DE
	CMP	MC.OFF
	JRZ	RET-#
	CMP	MC.ENTER
	JRNZ	M48-#
	CALL	UP2
	JR	M04-#
RET:	POP	IY
	POP	IX
	POP	HL
	POP	DE
	POP	BC
	POP	AF
	RET
M48:	PUSH	DE
	LD	DE,5
	LD	C,2
	CMP	MC.INS
	CALL	MC.BSZ
	POP	DE
	JR	M06-#
M23:	LD	HL,ADR+ANZ+ANZ-2
	OR	A
	SBC	HL,BC
	SBC	HL,BC
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	PUSH	DE
	POP	IY
	POP	HL
	POP	DE
	JMP	(IY)
KHX:	LD	IX,AHX
	JR	M06-#
KTX:	LD	IX,ATX
	JR	M06-#
KLI:	DEC	DE
	JR	M06-#
KRE:	INC	DE
KR1:	JR	M06-#
KUP:	LD	BC,0FFF0H
	JR	KN1-#
KDO:	LD	BC,00010H
	JR	KN1-#
KLA:	LD	BC,0FF00H
	JR	KN1-#
KNE:	LD	BC,00100H
KN1:	ADD	HL,BC
	EX	DE,HL
	ADD	HL,BC
	EX	DE,HL
	JR	KR1-#
KGO:	PUSH	HL
	CALL	UP1
	EX	(SP),HL
	POP	BC	;NEUE ADRESSE IN BC
	JRC	KG1-#	;FEHLERRUECKKEHR
	LD	H,B	;NEUE ADRESSE NACH HL UND DE
	LD	L,C
	LD	D,H
	LD	E,L
KG1:	JMP	M02
KMO:	PUSH	HL
	PUSH	DE
	CALL	UP1
	JRC	KM2-#
	PUSH	HL
	LD	DE,00302H
	CALL	MC.HDA
	LD	B,H
	LD	C,L
	POP	HL
	JRC	KM2-#
	POP	DE
	PUSH	DE
	EX	DE,HL
	PUSH	HL
	LD	H,B
	LD	L,C
	SCF
	SBC	HL,DE
	LD	B,H
	LD	C,L
	INC	BC
	POP	HL
	EX	DE,HL
	JRC	KM2-#
	PUSH	HL
	SBC	HL,DE
	POP	HL
	JRNC	KM1-#
	ADD	HL,BC
	EX	DE,HL
	ADD	HL,BC
	EX	DE,HL
	DEC	DE
	DEC	HL
	LDDR
	JR	KM2-#
KM1:	LDIR
KM2:	JR	KVF-#
KIN:	PUSH	HL
	CALL	UP1
	JRC	KI3-#
	SCF
	SBC	HL,DE
	JRC	KI3-#
	CALL	UP2
	JRC	KI3-#
	EX	DE,HL
	LD	C,A
KI1:	LD	A,D
	OR	E
	JRZ	KI2-#
	DEC	DE
	LD	(HL),C
	INC	HL
	JR	KI1-#
KI2:	EX	DE,HL
KI3:	POP	HL
	JR	KG1-#
KVF:	POP	DE
	POP	HL
	JR	KG1-#
KVG:	PUSH	HL
	PUSH	DE
	CALL	UP1
	JRC	KVF-#
	PUSH	HL
	LD	DE,00302H
	CALL	MC.HDA
	LD	DE,5
	CALL	MC.BKS
	POP	DE
	JRC	KVF-#
	SCF
	SBC	HL,DE
	JRC	KVF-#
	LD	B,H
	LD	C,L
	INC	BC
	POP	HL
	EX	DE,HL
	LD	IY,0
	PUSH	HL
	PUSH	DE
	PUSH	BC
KV1:	LD	A,(DE)
	CPI		;TEST: IDENTISCH ?
	JRNZ	KV2-#	;NEIN
K11:	JPPO	KV3	;TEST: ALLES VERGLICHEN ?, JA
	INC	DE	;NEIN, NAECHSTE ADRESSE
	JR	KV1-#	;ZYKLUS
KV2:	INC	IY	;DIFFERENZENZAEHLER ERHOEHEN
	JR	K11-#	;ZYKLUS
KV3:	PUSH	IY
	POP	HL
	LD	DE,00600H
	LD	A,'D'
	CALL	MC.BSS
	INC	E
	INC	E
	CALL	MC.HDS
	POP	BC
	POP	DE
	POP	HL
	PUSH	DE
KV4:	LD	A,(DE)
	CPI
	JRNZ	KV5-#
K41:	JPPO	KV9
	INC	DE
	JR	KV4-#
KV5:	PUSH	AF
	PUSH	HL
	PUSH	BC
	PUSH	DE
	DEC	HL
	LD	A,(HL)
	LD	DE,00202H
	CALL	MC.HDS
	LD	DE,0
	POP	HL
	CALL	MC.HDS
	PUSH	AF
	LD	A,'>'
	CALL	MC.BSS
	INC	E
	POP	AF
	CALL	MC.HBS
	CALL	MC.BKS
	EX	DE,HL
	PUSH	DE
	LD	HL,(RM.MEMSV)
	CALL	UP4
	PUSH	HL
	PUSH	BC
	CALL	UP3
	POP	BC
	POP	HL
KV6:	CALL	MC.TST
	JRZ	KV6-#
	CMP	MC.OFF
	JRNZ	K61-#
	POP	DE
	POP	BC
	POP	HL
	POP	AF
	EX	DE,HL
	EX	(SP),HL
	JMP	KVF
K61:	CMP	MC.ENTER
	JRNZ	KV7-#
	POP	DE
	PUSH	DE
	CALL	UP2
	CALL	UP3
	LD	DE,00602H
	DEC	IY
	PUSH	IY
	POP	HL
	CALL	MC.HDS
	JR	KV8-#
KV7:	CMP	'V'
	JRNZ	KV6-#
KV8:	POP	DE
	POP	BC
	POP	HL
	POP	AF
	JR	K41-#
KV9:	LD	A,' '
	LD	DE,5
	CALL	MC.BSS
	INC	E
	CALL	MC.BSS
	DEC	E
	CALL	MC.BKS
K10:	CALL	MC.TST
	JRZ	K10-#
	POP	DE
	POP	HL
	JMP	M02
KLO:	PUSH	HL
	PUSH	DE
	CALL	UP1
	JRC	KL3-#
	PUSH	HL
	LD	DE,00302H
	CALL	MC.HDA
	LD	DE,5
	CALL	MC.BKS
	POP	DE
	JRC	KL3-#
	AND	A
	SBC	HL,DE
	JRC	KL3-#
	JRZ	KL3-#
	LD	B,H
	LD	C,L
	POP	HL
	PUSH	HL
	EX	DE,HL
KL1:	LD	A,(DE)
	CMP	(HL)
	JRZ	KL5-#
KL2:	INC	DE
	LD	A,D
	OR	E
	JRNZ	KL1-#
	JR	KL3-#
KL5:	PUSH	HL
	PUSH	BC
	PUSH	DE
KL6:	CPI
	JRNZ	KL7-#
	JPPO	KL8
	INC	DE
	LD	A,D
	OR	E
	JRZ	OFF-#
	LD	A,(DE)
	JR	KL6-#
KL7:	POP	DE
	POP	BC
	POP	HL
	JR	KL2-#
KL8:	POP	DE
	LD	HL,(RM.MEMSV)
	CALL	UP4
	PUSH	DE
	CALL	UP3
	LD	DE,0
	EX	(SP),HL
	CALL	MC.HDS
	EX	(SP),HL
KL9:	CALL	MC.TST
	JRZ	KL9-#
	CMP	MC.OFF
	JRZ	OFF-#
	CMP	MC.ENTER
	JRZ	KL7-#
	JR	KL9-#
OFF:	POP	DE
	POP	BC
	POP	HL
KL3:	POP	DE
	POP	HL
	JMP	M02
KTE:	PUSH	DE
	LD	DE,5
	CALL	MC.BSS
	INC	E
	LD	A,' '
	CALL	MC.BSS
	CALL	MC.BKS
KT1:	CALL	MC.TST
	JRZ	KT1-#
	CALL	MC.BSS
	LD	DE,5
	CALL	MC.HBS
	CALL	MC.BKS
	POP	DE
	JMP	M06
; SPEICHERABZUG DRUCKEN (DUMP)
KPR:	PUSH	HL	;REGISTER RETTEN
	CALL	UP1	;KOMMANDOAUSGABE, PARAMETEREINGABE
	JRC	KP1-#	;FEHLERRUECKKEHR
	PUSH	DE	;AKTUELLE ADRESSE RETTEN
	EX	DE,HL	;AKTUELLE ADR.-HL, ENDADR.-DE
	CALL	MC.DMP	;UP DRUCK
	POP	DE	;REGISTER RUECKSPEICHERN
KP1:	POP	HL	;
	JMP	M02	;
UP1:	PUSH	DE
	LD	DE,00200H
	CALL	MC.BSS
	LD	E,2
	CALL	MC.HDA
	POP	DE
	RET
UP2:	PUSH	DE
	PUSH	HL
	LD	DE,5
	LD	A,082H
	CALL	MC.ZLE
	LD	A,L
	POP	HL
	POP	DE
	RC
	LD	(DE),A
	INC	DE
	RET
UP3:	LD	D,0
M15:	LD	E,8
	LD	A,' '
	CALL	MC.BSS
	INC	E
	LD	B,010H
	CALL	MC.HDS
	CALL	MC.BSS
	INC	E
M16:	LD	A,' '
	DEC	C
	JRNZ	M18-#
	LD	A,'>'
M18:	CALL	MC.BSS
	INC	E
	LD	A,(HL)
	INC	HL
	JMP	(IX)
AHX:	CALL	MC.HBS
	JR	M20-#
ATX:	CALL	MC.BSS
	INC	E
	LD	A,' '
	CALL	MC.BSS
	INC	E
M20:	DJNZ	M16-#
	INC	D
	LD	A,D
	CMP	010H
	JRNZ	M15-#
	RET
UP4:	PUSH	DE
	XOR	A
	EX	DE,HL
	SBC	HL,DE
	LD	B,H
	LD	C,L
	EX	DE,HL
	CMP	B
	JRZ	M10-#
	LD	DE,0FFF0H
	INC	B
	JRZ	M08-#
	LD	DE,00010H
M08:	ADD	HL,DE
	POP	DE
	JR	UP4-#
M10:	LD	(RM.MEMSV),HL
	POP	DE
	INC	C
	RET
ARG:	DB	'HS'
	DB	MC.LEFT
	DB	MC.RIGHT
	DB	MC.UP
	DB	MC.DOWN
	DB	'ZNGMIVLTP'
ADR:	DA	KHX
	DA	KTX
	DA	KLI
	DA	KRE
	DA	KUP
	DA	KDO
	DA	KLA
	DA	KNE
	DA	KGO
	DA	KMO
	DA	KIN
	DA	KVG
	DA	KLO
	DA	KTE
	DA	KPR
;
	END

