AFLOADASM;Programm AFLOAD (mit Adress-Anzeige!)
;
;Adressen 0000H-00EEH
;Programm ist verschieblich !
;
;%AFLOAD	Laden mit Adressanzeige
;
;%AFLOAD nnnn	Laden mit Adressanzeige
;		und Offset
;
;%AFLOAD nnnn 0	Laden mit Adressanzeige
;		und Offset, ein m|gli-
;		cher Selbststart wird
;		nicht ausgef}hrt!
;
;			` ml 30.06.1990
;---------------------------------------
ARGN	EQU 0B781H
ARG1	EQU ARGN+1
ARG2	EQU ARG1+2
ARG3	EQU ARG2+2
NUMVX	EQU 0B797H
PV1	EQU 0F003H
WAIT	EQU 14H
INLIN	EQU 17H
ERRM	EQU 19H
HLHX	EQU 1AH
HLDE	EQU 1BH
AHEX	EQU 1CH
OSTR	EQU 23H
CRLF	EQU 2CH
;-----------------------------------
	ORG 0
	DEFM '            ' ;Name
;000CH			;BLOAD f}r BASIC
	CALL 0F018H	;IRM ON
	LD HL,0
	LD (ARG1),HL
	CALL 0F00FH	;UP relativ
	DEFW BSTART-2-$
	CALL 0F01BH	;IRM OFF
	RET
	DEFW 7F7FH
	DEFM 'AFLOAD'
	DEFB 1
	LD A,(ARGN)
	AND A
	JR NZ,ARG0
	LD HL,0
	LD (ARG1),HL	;Offset
ARG0	CALL PV1
	DEFB OSTR
	DEFM 'Name :'
	DEFB 0
	CALL PV1
	DEFB INLIN
	EX (SP),HL
	LD (NUMVX),HL	;RET-Adr.
	EX (SP),HL
	LD HL,6
	ADD HL,DE	;6. Posit.
BSTART	LD E,0CH	;Anzahl
	LD BC,82F3H	;Portadr.
NAMOUT	LD A,M		;Name
	OUT (C),A
	INC HL
	INC B
	DEC E
	JR NZ,NAMOUT
	LD A,9
	LD B,80H
	OUT (C),A
NRDY	PUSH BC
	LD A,1
	CALL PV1
	DEFB WAIT
	POP BC
	IN A,(C)
	BIT 0,A
	JR NZ,NRDY	;nicht fertig
	BIT 7,A
	JR NZ,ERR	;Fehler
	LD BC,90F2H	;Portadr.
	LD HL,ARGN+3
LADR	INI
	INC B
	INC B
	LD A,B
	CP 97H
	JR NZ,LADR
	LD A,(ARGN+3)
	CP 2
	JR C,ERROR	; <  2 Argumente
	CP 0AH
	JR NC,ERROR	; > 10 Argumente
;Offsetberechnung
	LD BC,(ARG1)	;Offset
	LD HL,(ARG1+3)
	ADD HL,BC	;Anf-Adr.
	LD (ARG1+3),HL
	LD HL,(ARG2+3)
	ADD HL,BC	;End-Adr.
	LD (ARG2+3),HL
	LD HL,(ARG3+3)
	ADD HL,BC	;Start-Adr.
	LD (ARG3+3),HL
	LD A,(ARGN+3)
	CP 3
	JR C,ONST	;kein Start
	LD A,(ARGN)
	CP 2
	JR NC,ONST	; > 1 Argument
	PUSH HL		;Startadresse
;Anzeige der Adressen:
ONST	LD HL,(ARG1+3)
	LD DE,(ARG2+3)
	CALL PV1
	DEFB HLDE	;A,-E-Adresse
	LD A,(ARGN+3)
	CP 3
	JR C,NSTA	;kein Start
	PUSH HL
	LD HL,(ARG3+3)
	CALL PV1
	DEFB HLHX	;S-Adresse
	POP HL
NSTA	CALL PV1
	DEFB CRLF
NBLOCK	LD A,1
	LD BC,80F3H	;Portadr. Daten
	OUT (C),A
DNRDY	PUSH BC
	LD A,1
	CALL PV1
	DEFB WAIT
	POP BC
	IN A,(C)
	BIT 0,A
	JR NZ,DNRDY
	BIT 7,A
	JR Z,NERR
ERR	LD BC,81F3H	;Portadr. Fehler
	IN A,(C)
	CALL PV1
	DEFB AHEX
ERROR	CALL PV1
	DEFB ERRM
	POP HL
	LD HL,(NUMVX)
	JP (HL)
NERR	DEC C		;F2
BLW	INI		;Daten --> (HL)
	INC B		;B wie vorher
	INC B		;B+1
	PUSH HL
	SBC HL,DE
	POP HL
	RET NC		;wenn ENDE
	LD A,B
	AND A
	JR NZ,BLW	;80H Byte
	JR NBLOCK	;neuen Block
;00D7H
lf`[VQLHD@<9630MELO1§(>2’·MELO2§(>2’·