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’·