MARKGENASM 
	ORG	07000H
 
;***************************************
 
; MPM	6.5.87		B. SCHENK
 
; ASSEMBLIERUNG VON MASCHINENPROGRAMMEN
; -------------------------------------
; ERSTELLUNG EINER QUELLE VON EINEM IM
; SPEICHER BEFINDLICHEN MASCHINENPRO-
; GRAMM	MIT MARKENGENERIERUNG
 
;-PROGRAMME:
; MQI (EDAS-INIT)
; MQM (UEBERSETZUNG DES MC IN ASSEMBLER-
;     MNEMONIK)
 
;PARAMETERUEBERGABE:
; MQI ANF-ADR.EDAS-MC
; MQI	3000
;GESETZTE ADR.:'EDAS'-AUFRUF AUS MENU
;EDAS-ANFADR:3000H ODER MIT M022  6000H
;EDAS-ENDADR:4000H		  8000H
;BEACHTE:-VERFUEGBAREN SPEICHERBEREICH
;	 -MARKENTABELLE WIRD AB
;	  EDAS-MCEND-ADR. AUFGEBAUT
 
;MQM MC-ANFADR MC-ENDADR PR1PR2
;MQM BA00      BC00      7FDD
 
;PR1/PR2:PROLOGBYTES (MAX. 2 MOEGLICH)
;IM MC WIRD NACH DEN PROLOGBYTES GESUCHT
;EIN ENTSPRECHENDER EINTRAG ERFOLGT IM
;QUELLTEXT
;OHNE ANGABE DER PROLOGBYTES ERFOLGT EIN
;REASSEMBLIERTER TEXTEINTRAG
;BEACHTE:TABELLEN WERDEN ALS MNEMONIK
;        INTERPRETIERT
;	 FUER JP,JR,CALL
;	 WIRD DIE MARKENADRESSE IM
;	 QUELLTEXTSPEICHER EINGETRAGEN
 
 
;NACH DER UEBERSETZUNG DES MC WIRD ZU
;REEDAS GESPRUNGEN
 
;***************************************
 
REEDAS	EQU	0C0DAH
TXTA	EQU	40H
TXTL	EQU	46H
MERK1	EQU	0B7FEH
MERK2	EQU	0B7FFH
DIS	EQU	0D72AH
ARGN	EQU	0B781H
ARG1	EQU	0B782H
ARG2	EQU	0B784H
ARG3	EQU	0B786H
ARG4	EQU	0B788H
CURSOR	EQU	0B7A0H
FT1	EQU	0B900H
VERT	EQU	0F003H
MEM1	EQU	4000H
MEM2	EQU	8000H
 
	DEFW	7F7FH
	DEFM	'MQM'
	DEFB	1
	PUSH	HL
	POP	IY
	PUSH	HL
	LD	HL,,0
	LD	(ARG4),HL;OFFSET=0
	LD	A,(ARGN)
	CP	3
	JR	NC,MQ1
	LD	HL,0
	LD	(ARG3),HL
	LD	(ARG4),HL
	JR	MQ4
MQ1	LD	HL,(ARG3)
	XOR	A
	CP	H	;PROLOGTEST
	JR	Z,MQ2
	CP	L
	JR	NZ,MQ4
	LD	L,H
	JR	MQ3
MQ2	LD	H,L
MQ3	LD	(ARG3),HL
 
MQ4	POP	HL
	PUSH	HL
	CALL	QM
	POP	HL
	LD	(ARG1),HL
	LD	DE,(72H)
	DEC	DE
	LD	(3DH),DE
	CALL	SORT
 
	LD	HL,(TXTA)
	XOR	A
	LD	(MERK1),A
	LD	(MERK2),A
	LD	M,';'
	INC	HL
MM0	LD	M,0DH
	INC	HL
	LD	M,0AH
	INC	HL
	LD	M,9
	INC	HL
	EX	DE,HL	;EDAS-TXTADR DE
	PUSH	IY
	POP	HL	;MCADR
 
	CALL	MARKE	;SUCHE MARKE
	PUSH	DE	;DE EDAS TXTADR
 
	LD	A,(ARGN)
	CP	3
	JP	C,MQQ
	LD	DE,(ARG3)
	LD	A,D
	CP	M
	JR	Z,MQ5
	LD	A,E
	CP	M
	JP	NZ,MQQ
MQ5	INC	HL
	CP	M
	JP	NZ,MQQ
	POP	DE	;EDASTXT
	DEC	DE
	PUSH	HL	;EINTRAG PROLOG
	LD	HL,NA1
	LD	BC,9
	LDIR
	CALL	HAS
	EX	DE,HL
	LD	A,D
	CP	3AH
	JR	C,MQ51
	LD	M,30H	;0 BEI DD-PROLOG
	INC	HL
MQ51	LD	M,D
	INC	HL
	LD	M,E
	INC	HL
	LD	M,D
	INC	HL
	LD	M,E
	INC	HL
	EX	DE,HL
	LD	HL,NA2
	LD	BC,0AH
	LDIR
	POP	HL
	INC	HL
MQ6	LD	A,M
	CP	2
	JR	C,MQ7
	LD	(DE),A
	INC	HL
	INC	DE
	JR	MQ6
MQ7	LD	A,27H
	LD	(DE),A
	INC	DE
	PUSH	HL
	LD	HL,NA3
	LD	BC,8
	LDIR
	POP	HL
	PUSH	HL
	LD	A,M
	CALL	HAS
	EX	DE,HL
	LD	M,E
	INC	HL
	EX	DE,HL
	POP	HL
	INC	HL
	PUSH	HL
	POP	IY
	EX	DE,HL
	JP	MM0
;
MQQ	PUSH	HL
PTON	XOR	A
	CALL	0D8AFH	;BEFEHL
PTOF	POP	HL
	JP	Z,MQQ2	;JP/CALL
	JP	C,MQQ2	;JR
;
MQQB	XOR	A
	LD	B,A
	LD	C,A
	LD	DE,(ARG4)
	CALL	DIS	;DISASS-AUFRUF
	PUSH	IY
	POP	HL
	LD	BC,(ARG2)
	AND	A
	SBC	HL,BC
	JR	C,MM1	;MC-ADR < MC-END
END	LD	DE,(3DH)
	LD	HL,(74H)
	OR	A
	SBC	HL,DE
	JR	NC,END1
	POP	DE	;EDASTXT
	LD	HL,(3DH)
	LD	A,M
	DEC	HL
	LD	L,M
	LD	H,A
	PUSH	HL
	CALL	MARKE
	LD	HL,NA4	;EQU-EINTRAG
	LD	BC,5
	LDIR
	POP	HL
	CALL	HEXAS
	LD	A,'H'
	LD	(DE),A
	INC	DE
	LD	HL,NA3
	LD	BC,2
	LDIR
	PUSH	DE
	JR	END
END1	POP	HL
	DEC	HL
	LD	M,';'
	INC	HL
	LD	M,0DH
	INC	HL
	LD	M,0AH
	INC	HL
	LD	M,3	;TEXT-ENDE
	JR	MM4
MM1	CALL	VERT	;DISASS GIBT
	DEFB	23H	;MNEMONIK AUF BS
	DEFB	0BH
	DEFB	19H
	DEFB	0
	LD	DE,(CURSOR)
	CALL	VERT
	DEFB	32H	;TEXT VOM VIDEO-
	POP	DE	;RAM LESEN
MM2	LD	A,M	;AUF EDAS-TEXT-
	CP	0	;SPEICHER LADEN
	JR	Z,MM3
	LD	(DE),A
	INC	DE
	INC	HL
	JR	MM2
MM3	CALL	VERT
	DEFB	23H
	DEFB	2
	DEFB	0
	EX	DE,HL
	JP	MM0
MM4	LD	HL,(TXTA)
	LD	BC,1
MM5	LD	A,M
	CP	3	;ENDE
	JR	Z,MM7
	CP	27H	;" ' "
	JR	NZ,MM52
	DEC	HL
	LD	A,M
	INC	HL
	CP	'F'	;AF'
	JR	Z,MM6
MM51	INC	HL
	INC	BC
	LD	A,M
	CP	27H	;DEFM '  '
	JR	NZ,MM51
MM52	CP	20H
	JR	NZ,MM6
	INC	HL
	LD	A,M
	DEC	HL
	CP	20H	;BEI CP JP
	JR	Z,MM6
	LD	M,9	;TABULATOR
MM6	INC	HL
	INC	BC
	JR	MM5
MM7	PUSH	HL	;END-ADR TEXT
	LD	DE,(TXTL);AKTU.TEXT-ADR
	PUSH	HL
	LD	HL,(42H)
	XOR	A
	SBC	HL,DE
	POP	HL
	JR	Z,MM71
	POP	HL
	LD	(HL),';'
	PUSH	HL
MM71	LDDR		;UMLADEN AUF
	POP	HL	;EDAS-ARBEITS-
	LD	M,0	;BEREICH
	INC	DE
	LD	(TXTL),DE;ANF-ADR. TEXT
	JP	REEDAS	; ROMVERSION
			;SONST 0C0DAH
;
MQQ2	PUSH	HL
	LD	A,0CDH
	CP	M
	JR	NZ,MQQ22
	INC	HL
	LD	A,3
	CP	M
	JR	NZ,MQQ22
	INC	HL
	LD	A,0F0H
	CP	M
	POP	HL
	JP	Z,MQQB
	PUSH	HL
MQQ22	POP	HL
	XOR	A
	LD	B,A
	LD	C,A
	LD	DE,(ARG4)
	CALL	DIS
	CALL	0F003H
	DEFB	23H
	DEFB	0BH
	DEFB	19H
	DEFB	0
	LD	DE,(CURSOR)
	CALL	0F003H
	DEFB	32H
	POP	DE	;EDASTXT
MQQY	LD	A,M
	CP	30H
	JR	Z,MQQX
	LD	(DE),A
	INC	HL
	INC	DE
	JR	MQQY
MQQX	LD	A,'U'
	LD	(DE),A
MQQY1	INC	HL
	INC	DE
	LD	A,M
	CP	'H'
	JR	Z,MQQX1
	LD	(DE),A
	JR	MQQY1
MQQX1	CALL	0F003H
	DEFB	23H
	DEFB	2
	DEFB	0
	EX	DE,HL
	JP	MM0
;
HAS	LD	B,A	;HEX->ASCII
	AND	0F0H	;PE:A=HEXZAHL
	RLCA		;PA:H=ASCII-ZAHL
	RLCA		;     BIT4-7
	RLCA		;   L=BIT0-3
	RLCA
	ADD	30H
	CP	3AH
	JR	C,HAS1
	ADD	7
HAS1	LD	H,A
	LD	A,B
	AND	0FH
	ADD	30H
	CP	3AH
	JR	C,HAS2
	ADD	7
HAS2	LD	L,A
	RET
;
;
;GENERIERE MARKENTABELLE
;
TABA	EQU	72H
TABE	EQU	74H
;
QM	LD	HL,(TABA)
	LD	(TABE),HL
QM0	LD	HL,(ARG1)
	PUSH	HL
	LD	DE,(ARG2)
	OR	A
	SBC	HL,DE
	POP	HL
	JR	C,QM1
	RET
QM1	LD	DE,(ARG3)
	LD	A,M
	CP	D
	JR	Z,QM4
	CP	E
	JR	Z,QM5
QMM1	PUSH	HL
	CALL	0D8AFH
	POP	HL
	JR	NZ,QM6
	PUSH	HL
	LD	A,M
	CP	0CDH
	JR	NZ,QM11
	INC	HL
	LD	A,M
	CP	3
	JR	NZ,QM11
	INC	HL
	LD	A,M
	CP	0F0H
	JR	NZ,QM11
	INC	HL
	LD	A,M
	CP	23H
	JR	NZ,QM12
	LD	C,3
QM2	LD	B,0
	POP	HL
	ADD	HL,BC
QM3	INC	HL
	LD	A,M
	CP	2
	JR	NC,QM3
	INC	HL
	LD	(ARG1),HL
	JR	QM0
QM4	PUSH	HL
	INC	HL
	LD	A,M
	CP	D
	LD	C,1
	JR	Z,QM2
	POP	HL
	JR	QMM1
QM5	LD	D,E
	JR	QM4
QM6	JR	C,QM8
QM7	LD	C,B
	LD	B,0
	ADD	HL,BC
	LD	(ARG1),HL
	JR	QM0
QM8	PUSH	HL
	PUSH	BC
	INC	HL
	LD	A,M
	INC	HL
	LD	B,0
	LD	C,A
	BIT	7,A
	JR	Z,QM10
	NEG
	LD	C,A
	OR	A
	SBC	HL,BC
QM81	EX	DE,HL
QM9	LD	HL,(TABE)
	DEC	HL
	LD	M,D
	DEC	HL
	LD	M,E
	LD	(TABE),HL
	POP	BC
	POP	HL
	JR	QM7
QM10	ADD	HL,BC
	JR	QM81
QM11	POP	HL
	PUSH	HL
	PUSH	BC
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	JR	QM9
QM12	POP	HL
	LD	B,4
	JR	QM7
;
;HEX->ASCII PE:HL=HEX,DE=ADR
;
HEXAS	CALL	HEAS1
	PUSH	HL
	LD	H,L
	CALL	HEAS1
	POP	HL
	RET
HEAS1	LD	A,H
	AND	0F0H
	RRCA
	RRCA
	RRCA
	RRCA
	ADD	30H
	CP	3AH
	JR	C,HEAS2
	ADD	7
HEAS2	LD	(DE),A
	INC	DE
	LD	A,H
	AND	0FH
	ADD	30H
	CP	3AH
	JR	C,HEAS3
	ADD	7
HEAS3	LD	(DE),A
	INC	DE
	RET
;
SORT	PUSH	HL
	PUSH	DE
	PUSH	BC
	LD	DE,(74H)
	LD	HL,(72H)
	OR	A
	SBC	HL,DE
	JR	Z,SORE
	OR	A
	RR	H
	RR	L
	LD	B,H
	LD	C,L
SOR0	DEC	BC
	LD	A,B
	OR	C
	JR	NZ,SOR1
SORE	POP	BC
	POP	DE
	POP	HL
	RET
SOR1	PUSH	BC
	LD	H,D
	LD	L,E
SOR3	PUSH	BC
	PUSH	DE
	INC	HL
	INC	HL
	PUSH	HL
	EX	DE,HL
	LD	A,M
	INC	HL
	LD	H,M
	LD	L,A
	LD	A,(DE)
	LD	C,A
	INC	DE
	LD	A,(DE)
	LD	B,A
	OR	A
	SBC	HL,BC
	POP	HL
	POP	DE
	JR	NC,SOR5
	LD	A,(DE)
	LD	B,M
	EX	DE,HL
	LD	M,B
	LD	(DE),A
	EX	DE,HL
	INC	DE
	INC	HL
	LD	A,(DE)
	LD	B,M
	EX	DE,HL
	LD	M,B
	LD	(DE),A
	EX	DE,HL
	DEC	DE
	DEC	HL
SOR5	POP	BC
	DEC	BC
	LD	A,B
	OR	C
	JR	NZ,SOR3
	INC	DE
	INC	DE
	POP	BC
	JR	SOR0
;
;
;	SUCHE MARKE IN MTAB UND	EDAS-
;	EINTRAG Uxxxx
MARKE	PUSH	DE	;EDAS
	PUSH	HL	;MCADR
	LD	DE,(3DH);MTAB-ZELLE
	LD	HL,(74H)
	DEC	HL
	OR	A
	SBC	HL,DE
	JR	C,MAR1
	POP	HL
MAR0	POP	DE
MAR00	RET
MAR1	POP	HL	;MCADR
MAR2	LD	A,(DE)
	LD	B,A
	DEC	DE
	LD	A,(DE)
	LD	C,A	;BC=MARKE
	PUSH	HL
	OR	A
	SBC	HL,BC
	POP	HL
	JR	Z,MAR3	;MC=MARKE
	JR	C,MAR0	;MC<MARKE
	DEC	DE	;MC>MARKE
	JR	MAR2
MAR3	DEC	DE
	LD	(3DH),DE
	POP	DE	;EDASTXT
	DEC	DE
	LD	A,'U'
	LD	(DE),A
	INC	DE
	CALL	HEXAS
	LD	A,9
	LD	(DE),A
	INC	DE
	JR	MAR00
;
NA1	DEFM	';'
	DEFB	0DH
	DEFB	0AH
	DEFB	9
	DEFM	'DEFW'
	DEFB	9
NA2	DEFM	'H'
	DEFB	0DH
	DEFB	0AH
	DEFB	9
	DEFM	'DEFM'
	DEFB	9
	DEFB	27H
NA3	DEFB	0DH
	DEFB	0AH
	DEFB	9
	DEFM	'DEFB'
	DEFB	9
NA4	DEFM	'EQU'
	DEFB	9
	DEFB	30H
;
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ