AMD und PS


AMD und PS

von wwl » Mo 16. Sep 2013, 17:29
Hallo,

gibt es irgendwo die Prüfsummenprogramme AMD und PS des Atari Magazins als Download?

Gruß, Wolfgang

Re: AMD und PS

von wwl » Do 19. Sep 2013, 09:25
Also ich habe mal folgendes versucht:

AMD-codierte Seiten eingescannt und mit OCR-Software in Text-Datei umgewandelt. Dann mit einer kleinen Software auf Tippfehler überprüft und in eine binäre Datei umgewandelt.

Problem: Die erzeugte Datei beginnt nicht mit $FFFF (Byte 0 und 1). Erst in Byte 2,3 findet sich die COM-File Anfangskennung $FFFF. Gibt es ein Dateiformat für ausführbaren Code, das nicht mit $FFFF beginnt?

Gruß, Wolfgang

Re: AMD und PS

von wwl » Do 19. Sep 2013, 09:53
Auf der Suche nach dem COM-File Format finde ich nur das folgende:
--------------------
Offset Description
00-01 $FFFF - Indicates a binary load file. Mandatory for first segment, optional for any other segment
02-03 Start Address. The segment will load at this address
04-05 End Address. The last byte to load for this segment
06-?? The actual segment data to load (End Address-Start Address + 1 bytes)
--------------------
Aber wo finde ich Informationen über die Init-Adresse eines Segments, bzw. die Run-Adresse des ganzen Programms?
Das muß ja nicht immer der Anfang des Segments bzw. der Anfang des des ersten Segments sein.

Gruß, Wolfgang

Re: AMD und PS

von eda70 » Do 19. Sep 2013, 10:53
Ich galube es wäre einfacher, wenn du mal ein Beispiel postest.
Sind AMD und PS bekannte Abkürzungen?

Re: AMD und PS

von dl7ukk » Do 19. Sep 2013, 10:57
Hallo,
Aber wo finde ich Informationen über die Init-Adresse eines Segments, bzw. die Run-Adresse des ganzen Programms?


Die Info zur RUN-Adresse findest Du in den Speicherzellen $0230/31 (L/H)

Dazu musst Du die Werte natürlich reinschreiben.

Re: AMD und PS

von wwl » Do 19. Sep 2013, 11:14
dl7ukk hat geschrieben:Hallo,
Aber wo finde ich Informationen über die Init-Adresse eines Segments, bzw. die Run-Adresse des ganzen Programms?


Die Info zur RUN-Adresse findest Du in den Speicherzellen $0230/31 (L/H)

Dazu musst Du die Werte natürlich reinschreiben.


Das ist klar! Aber woher nehmen? Die müssen doch im COM-File stehen. Aber wo dort? Das ist ja meine Frage!

Wolfgang

Re: AMD und PS

von wwl » Do 19. Sep 2013, 11:16
eda70 hat geschrieben:Ich galube es wäre einfacher, wenn du mal ein Beispiel postest.
Sind AMD und PS bekannte Abkürzungen?

Siehe meinen einleitenden Post. Als Nicht-Atari-Magazin-Leser sagt einem das nichts.

Gruß, Wolfgang

Re: AMD und PS

von eda70 » Do 19. Sep 2013, 11:28
Mehr Informationen wäre trotzdem hilfreich gewesen. (Ich beispielsweise kenn nicht alle gelesenen/überflogenen Hefte auswendig ;) )
Ich würde dann eben zuerst die Listings von PS bzw. AMD "übernehmen" zu finden in der Ausgabe 05/1987
oder entpsrechend nachbauen...
PS - Seite 62
AMD - Seite 68

Re: AMD und PS

von Mathy » Do 19. Sep 2013, 13:18
Hallo Wolfgang

Wenn man über ein Prüfsummenprogramm Daten eingibt, macht die Software vielleicht mehr als nur Prüfen ob was Du da eingegeben hast, auch stimmt. Man kann also mit der "nackten" Datei nichts anfangen, die muss durch den Prüfsummer durch.

Aber im den letzten 25 bis 30 Jahren haben viele von uns einiges eingetippt. Es währe also nicht unmöglich, dass was Du da probierst in den Rechner rein zu schütten, schon längst in digitaler Form vorhanden ist. Man muss halt nur fragen.

Tschüß

Mathy

Re: AMD und PS

von Tigerduck » Do 19. Sep 2013, 13:51
@wwl

Ich hab' die beiden Programme irgendwo in meiner Diskettensammlung.
Kann dir ein ATR machen und per email schicken.

Ach, was hab' ich es geliebt, wenn die eingetippten Programme dankt der Prüfung dann auch tatsächlich gleich gelaufen sind :D

Gruß

Tigerduck

Re: AMD und PS

von Sleepy » Do 19. Sep 2013, 14:04
Ja... HEX-Codes habe ich gerne zusammen mit einem Kunpel eingetippt. Wir haben die Buchstaben dann durch (Mädchen-) Namen mit gleichem Anfangsbuchstaben ersetzt damit´s nicht so langweilig wird.
So haben wir dem kleinen sogar das ellenlange Turbo Basic beigebracht... :bitbyter:

Und dann Super-Puzzler. :mrgreen:

Was hast Du denn eigentlich vor?


Sleepy

Re: AMD und PS

von wwl » Do 19. Sep 2013, 19:07
Sleepy hat geschrieben:Ja... HEX-Codes habe ich gerne zusammen mit einem Kunpel eingetippt. Wir haben die Buchstaben dann durch (Mädchen-) Namen mit gleichem Anfangsbuchstaben ersetzt damit´s nicht so langweilig wird.
So haben wir dem kleinen sogar das ellenlange Turbo Basic beigebracht... :bitbyter:

Und dann Super-Puzzler. :mrgreen:
Was hast Du denn eigentlich vor?
Sleepy

Ich hab auch eine Menge abgetippt (Turbo Basic war auch darunter). Aber ich dachte, das müßte heute einfacher gehen, über OCR eben. Also habe ich ein kleines Programm auf dem PC geschrieben, welches aus den AMD Files Binärfiles produziert. Als Opfer habe ich mir ein Spiel 'Cyrtabor' aus dem Heft Juli 89 S. 62 vorgenommen, Die Atari Magazine liegen hier auch auf dem ABBUC Server als Scans.

Das Listing beginnt mit

1000 JUYB MMMM ...

'J' steht für die Hex-Ziffer '9'
'U' steht für die Hex-Ziffer '3'
'Y' steht für die Hex-Ziffer '2'
'B' steht für die Hex-Ziffer 'D'
'M' steht für die Hex-Ziffer 'F'

Also $93, $2D, $FF, $FF ...

Das ist also eigentlich kein COM-File. Aber was dann?

Also mir geht es nicht direkt um dieses Spiel. Das war nur ein Testobjekt. Ich will einfach ein funktionierendes Verfahren, diese Listings umzuwandeln. Ich hab das Spiel auch als Download gefunden, aber die Dateilängen stimmen nicht überein. Wahrscheinlich eine andere Version?

Gruß, Wolfgang
Gruß, Wolfgang

Re: AMD und PS

von Mathy » Do 19. Sep 2013, 19:09
Hallo Wolfgang

Wie gross ist den der Unterschied? Hast Du die Daten schon mal verglichen?

Tschüß

Mathy

Re: AMD und PS

von CharlieChaplin » Do 19. Sep 2013, 21:33
Nun,

AMD und PS gab es in den Zeitschriften Computer Kontakt und Atari Magazin (beide vom Verlag Raetz-Eberle). Von AMD und PS gab es zudem zwei Versionen, denke mal in einem AM oder CK Artikel dürfte die Funktionsweise und die Unterschiede V1 vs. V2 erklärt worden sein. Falls Bedarf besteht, maile ich gerne ein paar Disks mit AMD und PS zu...

War jedoch selber nie ein großer Fan von AMD, mir war das Programm der Konkurrenz (Happy Computer) namens AMPEL lieber. Von Ampel hat man in Polen nunmehr auch ein PC-Programm entwickelt, zu finden unter dem Namen Atari Ampel Decoder: http://www.atarionline.pl/utils/Z.%20In ... %200.09.7z

-Andreas Koch.

P.S.: Könnte ja sein, dass 93 einfach eine Kennung (bzw. ein Code) ist, die besagt, dass dies ein AMD Programm ist (wird vermutlich von Intel, äh AMD abgeprüft und wenn dieser Code fehlt, gibt es eine Fehlermeldung a la "Dies ist kein AMD-Programm" und man muss Intel kontaktieren... ;-) )

Re: AMD und PS

von eda70 » Do 19. Sep 2013, 21:37
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?

Re: AMD und PS

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

Re: AMD und PS

von wwl » Fr 20. Sep 2013, 08:08
CharlieChaplin hat geschrieben: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.


Aha! Das erklärt vieles! Wo hast Du das denn gefunden?

Re: AMD und PS

von wwl » So 22. Sep 2013, 12:07
Es scheint, als existierten doch verschiedene Versionen dieses Spiels:
Hier jedenfalls meine Quick&Dirty Pipeline zur Umwandlung von AMD-Files (gepackt und ungepackt). Vielleicht hat jemand Bedarf.

Gruß, Wolfgang

PS Die letzte Zeile des AMD-Listings ist meist nicht komplett und wird dann von readamd nicht mehr bearbeitet. Da ist Handarbeit angesagt.