von CharlieChaplin » Do 19. Sep 2013, 21:43 
eda70 hat geschrieben:wwl hat geschrieben:Das ist also eigentlich kein COM-File. Aber was dann?
Komisch in der Tat. Im gleichen Heft gibt es Listings, die mit FFFF beginnen. Damit scheint das schon mal ok.
Über diesem Listing steht im Gegensatz zu anderen "Gepacktes" AMD-Listing.
Damit könnte es bspw. die Adresse sein, an die entpackt werden soll.
Stellt sich die Frage, womit entpackt werden soll?
 
Aha, also handelt es sich wohl um AMD V2, da waren auch gepackte Listings erlaubt (um Platz zu sparen). Das AMD-Programm hat aus den gepackten Listings dann ungepackte ML-Dateien erzeugt. Einfach im Artikel zu AMD V2 mal nachlesen, was da an Erklärungen steht... gab es zu AMD V1 und V2 nicht auch Sources ?!? Mit den Sources könnte man vielleicht mehr erfahren... aha, gefunden.   -Andreas Koch.
---------- Source für AMD V2: -------
**************************************
*
* HILFSROUTINEN FUER AMD
*
**************************************
	ORG $9600,$A800
* "SPRUNGTABELLE":
	JMP INPUT	;9600
	JMP PS		;9603
	JMP CHANGE	;9606
	JMP LENGTH	;9609
*
KEYBDV	EQU $E420	Keyboard-Handler
EDITDV	EQU $E400	Editor-Handler
FR0	EQU $D4
* IOCB-Konstante
CIOV	EQU $E456
ICCOM	EQU $342
ICSTA	EQU $343
ICBAL	EQU $344
ICBAH	EQU $345
ICBLL	EQU $348
ICBLH	EQU $349
ICAX1	EQU $34A
ICAX2	EQU $34B
* CIO-Befehle
COPEN	EQU   3
CCLSE	EQU  12
CGTXT	EQU   5
CPTXT	EQU   9
CGBIN	EQU   7
CPBIN	EQU  11
*
ZIEL	EQU FR0
ABLE	EQU FR0+2
FMT	EQU FR0+4
**************************************
*
* HILFSROUTINEN 
*
**************************************
SCROUT	MACRO	  ;ZEICHEN->SCREEN
	JSR SCR1@
	JMP SCRE@
SCR1@	TAY
	LDA EDITDV+7
	PHA
	LDA EDITDV+6
	PHA
	TYA
	RTS
SCRE@	MEND
*
GETCHR	MACRO	  ;ZEICHEN UEBER K: LESEN
	JSR GKEY@
	JMP GEND@
GKEY@	LDA KEYBDV+5	simuliere
	PHA		;JMP GETCHR
	LDA KEYBDV+4
	PHA
	RTS
GEND@	MEND
*
PUTCHAR	SCROUT
	RTS
*
PULL	PLA
	TAY
	PLA
	TAX
	PLA
	PLA
	STA ZIEL+1
	PLA
	STA ZIEL
	PLA
	STA ABLE+1
	PLA
	STA ABLE
	TXA
	PHA
	TYA
	PHA
	RTS
*
* Aufruf ADD <Var1>, <Var2> 
*
ADD	MACRO EXPR1,EXPR2
	CLC
	LDA EXPR1
	ADC EXPR2
	STA EXPR1
	LDA EXPR1+1
	ADC EXPR2+1
	STA EXPR1+1
	MEND
*
* Aufruf: MUL <Var1>,<Var2>
*
MUL	MACRO EXPR1,EXPR2
	JMP MUL0@
HILF@	DFW 0
MUL0@	LDX #0
	STX HILF@
	STX HILF@+1
	LDY #16
	BNE MUL2@
MUL1@	CLC
	LDA HILF@
	ADC EXPR2
	STA HILF@
	LDA HILF@+1
	ADC EXPR2+1
	STA HILF@+1
MUL2@	LSR HILF@+1
	ROR HILF@
	ROR EXPR1+1
	ROR EXPR1
	DEY
	BMI MUL3@
	BCC MUL2@
	BCS MUL1@
MUL3@	EQU *
	MEND
**************************************
*
* EINGABE: LAENGE=USR(...,ZIEL,ABLE,FMT)
*
**************************************
*
INPUT	JSR PULL
	PLA
	STA FMT+1
	PLA
	STA FMT
	LDA #0
	STA Z1
	STA SFLAG
*
MLOOP	GETCHR
	STA G
	CMP #126
	BEQ BK
	CMP #27
	BNE J1
	LDA Z1
	BNE J1
	JMP ENDE
J1	LDA SFLAG
	BNE SMOD
	JSR CHECK
J7	LDA FLAG
	BNE PUT
	LDA #253
	STA G
PUT	LDA G
	JSR PUTCHAR
	LDA FLAG
	BEQ MLOOP
	LDY Z1
	LDA G
	STA (ZIEL),Y
	LDA #32
	STA G
	INC Z1
	INY
	LDA SFLAG
	BNE J3
*
	LDA #32
	CMP (FMT),Y    "SPACE"?
	BEQ PUT
J3	LDA (FMT),Y
	BNE MLOOP
	JMP ENDE	
*
BK	LDY Z1
	BEQ MLOOP
LOOP2	DEC Z1
	LDA G
	JSR PUTCHAR
*
	LDY SFLAG
	BEQ J2
	DEY
	DEY
	BNE JMP8
	LDA Z1
	CMP Z2
	BNE J2
JMP8	DEC SFLAG	
J2	LDA SFLAG
	BNE J5
	LDY Z1
	LDA (FMT),Y
	CMP #32
	BEQ LOOP2
J5	JMP MLOOP
*
SMOD	LDY SFLAG
	DEY
	BNE JMP1
* NUR ZIFFER ERLAUBT:
	JSR NUMBER
	BEQ RAUS
	INC SFLAG
	LDA Z1
	STA Z2
	JMP OK
JMP1	DEY
	BNE JMP2
* ZIFFERN,SPACE,*
	LDA G
	CMP #32
	BNE JMP3
	INC SFLAG
	JMP OK
JMP3	CMP #'*
	BNE JMP4
	INC Z1
	LDA #32
	JSR PUTCHAR
JMP5	LDA #'*
	JSR PUTCHAR
	DEC Z1
	JMP ENDE
JMP4	JSR NUMBER
	BEQ RAUS
	LDA Z1
	SEC
	SBC Z2
	CMP #5
	BNE OK
RAUS	LDA #0
	STA FLAG
	LDA #253
	STA G
	JMP PUT
* NUR "*"
JMP2	LDA G
	CMP #'*
	BEQ JMP5
	BNE RAUS
*
OK	LDA #1
	STA FLAG
	JMP PUT
*
G	DFB 0
FLAG	DFB 0
SFLAG	DFB 0
Z1	DFB 0
Z2	DFB 0
*
CHECK	LDA #1
	STA FLAG
	LDY Z1
	LDA (FMT),Y
	CMP #'1
	BNE CHAR
NUMBER	LDA G
	CMP #'0
	BCC FEHLER
	CMP #58
	BCS FEHLER
	LDA #1
	RTS
FEHLER	LDA #0
	STA FLAG
	RTS
CHAR	LDA G
	JSR NUMBER
	BEQ J6
	BNE JMP6
J6	LDA G
	CMP #32
	BNE J4
JMP6	LDY Z1
	LDA (FMT),Y
	AND #1
	BEQ FEHLER
	STA SFLAG
	LDA FLAG
	BNE JMP7
	INC FLAG
	RTS	
JMP7	INC SFLAG
	INC Z1
	LDY Z1
	STY Z2
	LDA #32
	STA (ZIEL),Y
	JMP PUTCHAR
J4	LDY #0
	INC FLAG
LOOP1	LDA (ABLE),Y
	BEQ FEHLER
	CMP G
	BEQ OK2
	INY
	BNE LOOP1
OK2	RTS
*
ENDE	LDA Z1
	STA FR0
	LDA #0
	STA FR0+1
	LDA #155
	JMP PUTCHAR
**************************************
*
* PS=USR(...,ADR(STR$),LEN(STR$))+Zeilennr.	 *
*
**************************************
PS	JSR PULL
	LDA #0
	STA AKKU2+1
	STA AKKU3
	STA AKKU3+1
	STA Z1
	LDA #1
	STA AKKU2
LOOP	LDY Z1
	LDA (ZIEL),Y
	STA AKKU1
	LDA #0
	STA AKKU1+1
	MUL AKKU1,AKKU2
	ADD AKKU3,AKKU1
	INC AKKU2
	INC Z1
	LDA Z1
	CMP ABLE
	BNE LOOP
	LDA AKKU3
	STA FR0
	LDA AKKU3+1
	STA FR0+1
	RTS
*
MINUS	DFW 0
AKKU1	DFW 0
AKKU2	DFW 0
AKKU3	DFW 0
****************************************
*
* NEW_LEN=USR(...,ADR(TXT$),ADR(ALLOW$))
*
***************************************
CHANGE	JSR PULL
	LDA #0
	STA Z2
	STA Z1
LOOP3	JSR FIND
	ASL
	ASL
	ASL
	ASL
	LDY Z2
	STA (ZIEL),Y
	JSR FIND
	CLC
	LDY Z2
	ADC (ZIEL),Y
	STA (ZIEL),Y
	INC Z2
	LDY Z1
J9	LDA (ZIEL),Y
	CMP #32
	BNE J8
	INC Z1
	INY
	JMP J9
J8	LDA (ZIEL),Y
	CMP #'A
	BCS LOOP3
	LDA #0
	STA FR0+1
	LDA Z2
	STA FR0
	RTS
*
FIND	LDY Z1
	LDA (ZIEL),Y
	LDY #$FF
LOOP4	INY
	CMP (ABLE),Y
	BNE LOOP4
	TYA
	INC Z1
	RTS
*****************************************
*
* ZAEHLROUTINE: LIEFERT DIE ANZAHL VON 12-ER EINHEITEN
*
************************************************
LENGTH	PLA
	PLA
	STA ABLE+1
	PLA
	STA ABLE
*
	LDX #$20
	LDA #0
	STA FR0
	STA FR0+1
*
	LDA #CCLSE
	STA ICCOM,X
	JSR CIOV
*
	LDA #COPEN
	STA ICCOM,X
	LDA #4
	STA ICAX1,X
	LDA #0
	STA ICAX2,X
	LDA ABLE
	STA ICBAL,X
	LDA ABLE+1
	STA ICBAH,X
	JSR CIOV
*
LOOP5	INC FR0
	BNE W
	INC FR0+1
W	LDA #CGBIN
	STA ICCOM,X
	LDA #12
	STA ICBLL,X
	LDA #0
	STA ICBLH,X
	LDA #BUF
	STA ICBAL,X
	LDA #BUF/256
	STA ICBAH,X
	JSR CIOV
	BPL LOOP5
*
	LDA #CCLSE
	STA ICCOM,X
	JMP CIOV
*
BUF	DFW 0,0,0,0,0,0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ