PICGEN  ASM;------------------------------------
;Bilderzeugung f}r EDIPIC und DIASHOW
;
;verschieblich:	0000 03F6 0017
;
;reassembliert:	23.04.92
;KC85/3-Bilder:	25.04.92
;HIRES-Bilder:	09.12.93
;Fehlertexte:	11.12.93
;
;PICGEN.ASM		` ML-Soft
;------------------------------------
CRT	EQU	0
WAIT	EQU	14H
INTB	EQU	16H
INLIN	EQU	17H
ERRM	EQU	19H
AHEX	EQU	1CH
OSTR	EQU	23H
OCHR	EQU	24H
CRLF	EQU	2CH
SAVE	EQU	36H
;
LF	EQU	0AH
CLS	EQU	0CH
CR	EQU	0DH
ESC	EQU	1BH
;
	ORG	0
 
;Aufruf aus anderen Programmen
;z.B. BASIC:
;
	CALL	IRMON
	PUSH	AF
	CALL	UREL
	DW	START-2-$
	CALL	IRMOF
	POP	AF
	RET
;-------
	DW	7F7FH
	DB	'PICGEN',1
START:	LD	A,(7FFFH)
	PUSH	AF
	LD	A,(IX+1)
	PUSH	AF		;3x
	LD	A,(COLOR)	;merken
	PUSH	AF
	LD	A,ESC
	CALL	PV1
	DB	CRT
	LD	A,'1'
	BIT	2,(IX+1)
	JR	Z,PIC1
	INC	A	;Anzeige wie
PIC1:	CALL	PV1	;Zugriff
	DB	CRT
	LD	HL,0
	LD	(WINON),HL
	LD	HL,2028H
	LD	(WINLG),HL
	LD	A,7		;schwarz
	LD	(COLOR),A	;wei~
	LD	A,CLS
	CALL	PV1
	DB	CRT
	CALL	PV1
	DB	OSTR
	DB	LF
	DB	' DAS PROGRAMM DIENT '
	DB	'ZUM ABSPEICHERN VON'
	DB	LF,19H,LF
	DB	' BILDERN, WELCHE SIC'
	DB	'H IM IRM DES NICHT'
	DB	LF,19H,LF
	DB	' ANGEZEIGTEN BILDES '
	DB	'BEFINDEN. ES IST'
	DB	LF,19H,LF
	DB	' NUR AUF DEM KC85/4 '
	DB	'EINSETZBAR UND'
	DB	LF,19H,LF
	DB	' DIENT ZUR SCHNELLEN'
	DB	' GEWINNUNG VON'
	DB	LF,19H,LF
	DB	' BILDERN FUER "EDIPI'
	DB	'C" ODER "DIASHOW".'
	DB	LF,19H,LF
	DB	' ES WERDEN NUR UNKOM'
	DB	'PRIMIERTE DATEIEN'
	DB	LF,19H,LF
	DB	' AUSGEGEBEN.'
	DB	LF,19H,LF
	DB	' (1)-TAPE (2)-DISK',0
	CALL	UREL
	DW	INKEY-2-$
	PUSH	AF
	CALL	PV1
	DB	OSTR
	DB	LF,19H,LF
	DB	' BILD VOM KC85/3-(1)'
	DB	' KC85/4-(2)',0
	CALL	UREL
	DW	INKEY-2-$
	LD	C,0	;Kennbyte
	LD	A,2	;2 Adressen
	LD	(ARGN),A
	LD	HL,7FFFH	;Aadr
	LD	(ARG1),HL
	LD	HL,0A800H	;Eadr
	LD	(ARG2),HL
	JR	Z,KC3
	SET	2,C	;KC85/4
	CALL	PV1
	DB	OSTR
	DB	LF,19H,LF
	DB	' (1)-PIXEL (2)-COLOR',0
	CALL	UREL
	DW	INKEY-2-$
	JR	NZ,AUFL
	SET	0,C	;Pixel
AUFL:	CALL	PV1
	DB	OSTR
	DB	LF,19H,LF
	DB	' (1)-NORMAL (2)-HIRES'
	DB	0
	CALL	UREL
	DW	INKEY-2-$
	JR	Z,KC3P
	SET	3,C	;HIRES
	LD	HL,8000H
	LD	(ARG1),HL ;ohne Kennbyte
	JR	KC3P
 
KC3:	CALL	PV1
	DB	OSTR
	DB	LF,19H,LF
	DB	' (1)-PIXEL (2)-PIXEL'
	DB	' & COLOR',0
	CALL	UREL
	DW	INKEY-2-$
	SET	0,C	;Pixel
	JR	Z,KC3P
	LD	HL,0B200H	;Eadr
	LD	(ARG2),HL
	RES	0,C	;Pixel & Farbe
KC3P:	LD	A,C
	LD	(7FFFH),A ;Kennbyte
	CALL	PV1
	DB	OSTR
	DB	LF,19H,LF
	DB	' NAME :________',0
	LD	A,'P'
	BIT	3,C
	JR	Z,NAM1
	LD	A,'H'
NAM1:	CALL	PV1
	DB	OCHR
	LD	A,'I'
	CALL	PV1
	DB	OCHR
	LD	A,'C'
	BIT	2,C
	JR	Z,NAM2
	LD	A,'P'
	BIT	0,C
	JR	NZ,NAM2
	LD	A,'F'
NAM2:	CALL	PV1
	DB	OCHR
	LD	A,7	;Spalte
	LD	(CURSO),A
	CALL	PV1
	DB	INLIN
	LD	HL,7
	ADD	HL,DE
	LD	DE,ARG4	;Dateiname
	LD	BC,12
	LDIR
	CALL	PV1
	DB	OSTR
	DB	LF,' (1)-Start '
	DB	'(2)-Abbruch',0
	CALL	UREL
	DW	INKEY-2-$
	JR	Z,PICS
	POP	AF
	JR	ENDE	;-> Abbruch
PICS:	CALL	PV1
	DB	OSTR
	DB	CR,LF,LF,' ',ESC,0
	LD	A,'3'	;Zugriff Bild 1
	BIT	0,(IX+1)
	JR	Z,PIC2
	INC	A	;Zugriff Bild 0
PIC2:	CALL	PV1
	DB	CRT
	LD	A,(7FFFH)
	BIT	2,A
	JR	Z,SAV1	;KC85/3
	BIT	0,A
	JR	NZ,SAV1	;Pixel
	CALL	PV1
	DB	OSTR
	DB	ESC,'9',0;Farbe ein
SAV1:	LD	HL,ARG4	;Dateiname
	POP	AF
	JR	NZ,DISK
	LD	DE,STBT
	LD	A,(DE)
	OR	3	;Zeichen u.
	LD	(DE),A	;Farbe aus!
	CALL	PV1
	DB	SAVE
	LD	HL,STBT
	LD	A,M
	AND	0FCH
	LD	M,A
ENDE:	POP	AF
	LD	(COLOR),A
	POP	AF
	LD	(IX+1),A
	OUT	84H,A
	POP	AF
	LD	(7FFFH),A
	LD	A,ESC
	CALL	PV1
	DB	CRT
	LD	A,'1'
	BIT	2,(IX+1)
	JR	Z,PIC4
	INC	A	;Anzeige wie
PIC4:	CALL	PV1	;Zugriff
	DB	CRT
	LD	A,CLS
	CALL	PV1
	DB	CRT
	RET
 
DISK:	LD	E,12
	LD	BC,83F3H
NAMOUT:	OUTI
	INC	B
	INC	B
	DEC	E
	JR	NZ,NAMOUT
	LD	HL,ARGN	;Adressen
	LD	DE,0B0BH
	LD	B,91H
DOUT:	LD	C,0F2H
	OUTI		;Daten
	INC	B
	INC	B
	DEC	E
	JR	NZ,DOUT
	LD	A,D	;Steuerbyte
	PUSH	DE
	CALL	UREL
	DW	STEUER-2-$
	POP	DE
	JR	NZ,ERROR
	BIT	3,D	;open?
	JR	Z,DNEXT
	LD	HL,(ARG1)	;Aadr
DNEXT:	PUSH	HL
	LD	DE,(ARG2)	;Eadr
	AND	A
	SBC	HL,DE
	POP	HL
	LD	B,81H
	LD	DE,0380H
	JR	C,DOUT	;weiter!
	LD	A,43H	;close
	CALL	UREL
	DW	STEUER-2-$
END1:	JR	ENDE
 
ERROR:	LD	A,ESC
	CALL	PV1
	DB	CRT
	LD	A,'1'
	BIT	0,(IX+1)
	JR	Z,PIC3	;Zugriff wie
	INC	A	;Anzeige
PIC3:	CALL	PV1
	DB	CRT
	LD	BC,83F1H
	IN	A,(C)
	CP	20H	;DEP ab 2.0?
	JR	NC,ERRTX;ja
	LD	BC,81F3H
	IN	A,(C)	;Fehlernummer
	CALL	PV1
	DB	AHEX
	CALL	PV1
	DB	ERRM
ERRW:	CALL	PV1
	DB	INTB
	JR	END1
ERRTX:	LD	BC,00F1H;Fehlertext
ERRT1:	IN	A,(C)
	INC	B
	AND	A
	JR	Z,ERRW	;00=Ende
	CALL	PV1
	DB	OCHR
	JR	ERRT1
;---------------
;Unterprogramme:
 
INKEY:	CALL	PV1
	DB	OSTR
	DB	' ? _',8,0
	CALL	PV1
	DB	INTB
	CP	'1'
	JR	Z,CHR		;Z=1
	CP	'2'
	JR	NZ,INKEY
	OR	A		;Z=0
CHR:	PUSH	AF
	CALL	PV1
	DB	OCHR	;Anzeige
	POP	AF
	RET
 
STEUER:	LD	BC,80F3H
	OUT	(C),A
READY:	PUSH	BC
	LD	A,1
	CALL	PV1
	DB	WAIT
	POP	BC
	IN	A,(C)	;fertig?
	BIT	0,A
	JR	NZ,READY
	BIT	7,A	;Fehler?
	RET
 
;-------
ARGN	EQU	0B781H
ARG1	EQU	0B782H
ARG2	EQU	0B784H
ARG4	EQU	0B788H
WINON	EQU	0B79CH
WINLG	EQU	0B79EH
CURSO	EQU	0B7A0H
STBT	EQU	0B7A2H
COLOR	EQU	0B7A3H
PV1	EQU	0F003H
UREL	EQU	0F00FH
IRMON	EQU	0F018H
IRMOF	EQU	0F01BH
À@Àt(Àp6ÀnTop of Text: End of Text: StLOR	EQU	0B7A3H
PV1	EQU	0F003H
UREL	EQU	0F00FH
IRMON	EQU	0F018H
IRMOF	EQU	0F01BH
À@Àt(Àp6ÀnTop of Text: End of Text: St