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ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ