CP/M-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Memberlist || Home || Statistik || Kalender || Staff Willkommen Gast!
[ Unofficial CP/M Website ] [ Z80 Family Support Page ] [ Forum-Regeln ] [ Impressum/Kontakt ] [ Datenschutzerklärung ]

CP/M-Forum » CP/M-Software » Xmodem für Cp/m 3 » Threadansicht

Autor Thread - Seiten: -1- [ 2 ]
000
20.10.2013, 21:06 Uhr
atzensepp



Hallo miteinander,

habe eine Assembler-Quelle für XMODEM für CP/M2.2 bekommen.
(CP/M XMODEM 1.01 by Martin Eberhard ) Beim Versuch, das Programm - wie beschrieben - mit ASM zu übersetzen hagelte es hunderte von Fehlermeldungen -praktisch jede Zeile ein Fehler.
Schon die erstzen Zeilen wurden nicht gefressen:
;======================================================
FALSE equ 0
TRUE equ -1
...

Mit MAC konnte ich das File übersetzen. Der generierte Code allerdings bringt den Emulator mit "Bad opcode at PC 0002" zum Absturz.

Bisher war ich immer der Meinung, dass CP/M2-Programme auch auf CP/M3 laufen. Das scheint nicht der Fall zu sein oder es liegt am Assembler.
Würde es evtl. funktionieren, das Programm unter CPM2.2 zu büersetzen und auf den CP/M 3-Rechner zu bringen oder gibt es prinzipielle Unterschiede?
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
001
20.10.2013, 22:40 Uhr
proof80



Hallo Florian,

Befasse DIch mal näher mit der Schnittstellenprogrammierung unter CP/M 3. Das läuft da m.W.n. etwas anders ab als unter CP/M 2. Dort wird das über die BIOS-Leiste geführt, was auf der BDOS-Leiste noch nicht vorgesehen war - die wurde für CP/M 3 nämlich erweitert.

Vielleicht liegt es daran. Jedenfalls ist es deswegen kein Wunder, dass hardware-nahe Programme, die nativ für CP/M 2 geschrieben wurden, unter CP/M 3 nicht laufen. (Apropos: ist CDOS wirklich ein CP/M 2 oder kocht Cromenco da möglicherweise noch ein eigenes Süppchen?)

Die Fehlermeldung kann allerdings auch darauf schließen lassen, dass der Emulator möglicherweise nur eine 8080 nachbildet. Check doch mal, welcher Opcode auf PC 0002 liegt und ob das echter Z80-Code ist.

Gruß, Wolfram
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
002
21.10.2013, 19:33 Uhr
Alfred

Avatar von Alfred

Hallo Florian,

du brauchst auf jeden Fall auch den richtigen Macro Assembler, z.B. den Z80ASM.
Findest du hier: http://www.retroarchive.org/cpm/lang/lang.htm

Mit dem M80 könnte es auch funktionieren, evtl. musst du den Quellcode anpassen.

Hier gibt es auch eine Version 1.03 vom XMODEM:
https://groups.google.com/forum/#!topic/cromemco/HSdMyxvVLis

VG
Alfred
--
Das Leben ist verdammt kurz (meine Meinung)!
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
003
21.10.2013, 22:57 Uhr
atzensepp



Hallo Wolfram und Alfred,

XMODEM ließ sich unter CPM2.2 mit ASM übersetzen. Unter CP/M 2.2 gibt das Programm eine Startmeldung aus, Unter CP/M 3 auf dem Target nur "Herzchen". Ich denke Wolfram hat Recht: Das XMODEM-Programm müsste auf BDOS-Calls umgeschrieben werden. Mal seh'n ob ich mir das antun werde. Inzwischen läuft nämlich Kermit411 auch ganz gut.

Danke für Eure Hinweise!

Grüße
Florian
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
004
23.10.2013, 22:56 Uhr
atzensepp



Hallo,

Unter CP/M 3 lässt sich XMODEM103.Z80 mit ZASM(C).com übersetzen.
Es wird ein .REL File generiert. Wie generiert man daraus ein .COM ?
Mit reinem LINK wird zwar ein COM draus. Im DDT steht ab 0x100 nur Mist.
Frage ist ob man noch irgendwelche Parameter braucht.
Oder sind DDT bzw. SID nur für 8080?

Florian
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
005
23.10.2013, 23:06 Uhr
atzensepp



Ach herrje, jetzt sehe ich es erst: Das Programm kommuniziert via in/out mit einem TUART. Dann kann es so nicht gehen.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
006
25.10.2013, 22:33 Uhr
atzensepp



Gebe nicht auf: Nächster Schritt: Ersetzung der direkten IO-Aufrufe durch BDOS-Calls 3,4,7 und 8 für Zeichen-Ein/Ausgabe/Status für AUX:.

Nächstes Problem: CDOS und CPM 2, für das das Programm geschrieben wurde scheinen bei BDOS-Calls bestimmte Register (BC;HL) gutmütigerweise zu sichern, die CP/M 3 offenbar überschreibt, wodurch das "Herzchenproblem" zustande kommt.

Immerhin kommt jetzt schon mal eine Usage-Meldung und das Programm hängt sich ordentlich beim Recieve auf.

Dieser Post wurde am 25.10.2013 um 22:35 Uhr von atzensepp editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
007
26.10.2013, 16:07 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Florian

Ich habe das gleiche Problem zu lösen und baue mir gerade eine SIO-Karte für SEPIA. Der 16C550 hat die falschen Status-Register und lässt sich auch nicht wie eine SIO pre-initialisieren. Kermit, XMODEM, Move-IT u.a. serielle File-Transferprogramme lassen sich meiner Meinung nach nur schwer umschreiben oder patchen, zumal es hunderte div. Quellen gibt die jedoch nur für 8080 exsistieren. Die alten Programme setzen fast immer eine Z80-SIO oder einen 8251 UART voraus. Ergo, muss eine echte SIO her, welche man am besten auf alle I/O-Adressen im System (mundgerecht zum Programm) ansiedeln kann. Das machts dann einfacher. Auf den CTC verzichte ich ganz. Mit einem kleinen CPLD kann man var. Teiler mit DIP-Schalter so koppeln, dass man viele Baudraten manuell vorgeben kann. So braucht man hier auch keine CTC-Initialisierungen mehr zu berücksichtigen. Sag bescheid, wenn Du neue Infos hast.

SIO Foto unter: http://www.kolter.de/z80-sio-000a.jpg

Viele Grüße & Erfolg
Heinrich
--
Es gibt keine Probleme - nur Lösungen !

Dieser Post wurde am 26.10.2013 um 16:38 Uhr von Hein_Ko editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
008
27.10.2013, 09:18 Uhr
Alfred

Avatar von Alfred

Hallo Heinrich,

ein schönes Board mit viel Hardware, das gefällt mir :-)!

VG
Alfred
--
Das Leben ist verdammt kurz (meine Meinung)!
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
009
27.10.2013, 23:26 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Alfred

Danke für die Blumen :-)

Die SIO-Karte läuft jetzt mit Kermit-80 für KAYPRO II Model. Ich muss jedoch den Port mit einem kleinen INIT-Programm erst Grundinitialisieren. Unschön bzw. lästig ist nur, dass man jedes mal SET FILE-MODE BINARY eintippen muss, damit Kermit auf der anderen Seite die Pakete richtig auspackt.

Nun meine Frage @ Alle:
Hat Jemand eine Idee, wie man das CP/M-Kermit selber (mit Hex-Editor) patchen kann? Ich suche nur das Bit/Byte für die Umschaltung von ASCII-zu-BINARY.

Grüße
Heinrich
--
Es gibt keine Probleme - nur Lösungen !

Dieser Post wurde am 27.10.2013 um 23:31 Uhr von Hein_Ko editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
010
28.10.2013, 22:53 Uhr
atzensepp



Hallo Heinrich,

für CP/M-Kermit4.11 gibt es die Assembler-Sourcen:
http://www.columbia.edu/kermit/ftp/a/cpsdat.asm

cpsdat.asm enthält die Datenstrukturen. Das gesuchte Flag müsste cpmflg sein.

Aber "Ausrechnen" musst Du es selber.

Florian
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
011
29.10.2013, 21:46 Uhr
susowa




Zitat:
Hein_Ko postete
Unschön bzw. lästig ist nur, dass man jedes mal SET FILE-MODE BINARY eintippen muss, damit Kermit auf der anderen Seite die Pakete richtig auspackt.

Du musst nichts patchen. Wenn sich im KERMIT-Verzeichnis beim Start eine KERMIT.INI befindet, werden alle darin befindlichen Befehle vor dem Erreichen der Kermit-Kdo.-Zeile ausgeführt, wie z.B. auch "SET FILE-MODE BINARY"

MfG
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
012
29.10.2013, 22:25 Uhr
Hein_Ko

Avatar von Hein_Ko

Danke Florian
Danke Ralf

Den KERMIT.INI habe ich jetzt als ASCII-Text-Datei erzeugt, jedoch wird die Änderung nicht vom KERMIT-80 übernommen. Hast Du vielleicht ein kurzes Beispiel-script?

Oder muss man "Begin" und "End"... oder ähnliches im batch einfügen?

Grüße
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
013
29.10.2013, 23:44 Uhr
susowa




Zitat:
Hein_Ko postete
Den KERMIT.INI habe ich jetzt als ASCII-Text-Datei erzeugt, jedoch wird die Änderung nicht vom KERMIT-80 übernommen. Hast Du vielleicht ein kurzes Beispiel-script?

So steht es in der Beschreibung:

TAKE filespec

Take characters and commands from the specified file as if they were entered from the keyboard. This is useful if you want to set up a batch job. A command file can send, get, receive, set functions etc automatically. A TAKE command can be interrupted with ^C.
An automatic "TAKE KERMIT.INI" is executed from the default drive when Kermit-80 is loaded. This can be used to set defaults of band rate, parity, filetype, default drive etc.
If KERMIT.INI does not exist, control is given directly to the user.

Alle Befehle lt. Beschreibung sollte man nutzen können, irgendwelche Zusätze sind nicht notwendig, sie würden an dieser Stelle eher störend wirken.

MfG
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
014
30.10.2013, 00:27 Uhr
Hein_Ko

Avatar von Hein_Ko

Ja Ralf, das habe ich auch gelesen... geht aber leider nicht.
Ich habe nun die Versionen mit Hex-Editor verglichen (arbeite z.Zt. hier mit KERMIT-80 V3.9A). Bei der 411er Version scheint KERMIT.INI angefordert zu werden, bei der 3.9A hingegen nicht (Buffer fehlt). Ergo werde ich nun erst mal die 411er Version mit CPSKER.HEX MLoaden. Na mal sehen was da nun wieder raus kommt ;-)

Grüße
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
015
30.10.2013, 08:28 Uhr
susowa




Zitat:
Hein_Ko postete
Ergo werde ich nun erst mal die 411er Version mit CPSKER.HEX MLoaden.
Na mal sehen was da nun wieder raus kommt ;-)

Na dann wird es auch gehen :-).

Bei meiner umgestrickten Kermit-TCP/IP-Version 4.11 hat das sofort und ohne Probleme funktioniert. Mir war jetzt nicht bewusst, dass Du mit einer älteren Version probiert hast.

MfG
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
016
30.10.2013, 22:47 Uhr
Hein_Ko

Avatar von Hein_Ko

So, jetzt klappt es :-)

Mit "Mload KERM411=cpsker,cpvkpr" wurde Kemit 4.11 auf dem Zielsystem erzeugt, welches auch KERMIT.INI läd. Auf der Gegenseite habe ich mir nun von EMTEC.COM ein neues ZOC für Windows besorgt. Mit dieser Kombination lassen sich nun die Daten in beide Richtungen mit 38.400 kBaud sicher transferieren. Nur schade, das die Columbia Universität of NY keinen Z80 Code anbietet.

Grüße
Heinrich
--
Es gibt keine Probleme - nur Lösungen !

Dieser Post wurde am 30.10.2013 um 22:53 Uhr von Hein_Ko editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
017
31.10.2013, 03:52 Uhr
Hein_Ko

Avatar von Hein_Ko

Jetzt gehts auch von 600 Baud bis 115.2 kBaud :-)
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
018
31.10.2013, 08:32 Uhr
paulotto



Hallo Heinrich,

was hast Du denn noch gemacht, daß es vorher nur mit 38,4 kBaud lief und nun mit 115,2 kBaud?

Gruß,

Klaus
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
019
31.10.2013, 13:50 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Klaus,

Zuerst hatte ich lt. Beschreibung einen Quarzoszillator mit 2.4576 MHz verwendet, mit dem jedoch kein Takt von 1.8432 MHz erzeugt werden kann, um 115.2 kBaud zu erreichen. Da die Schaltung anstatt dem Z80 CTC Timer ein CPLD mit div. prog. Teilern verwendet, konnte mit 18.432 MHz und einem 10:1 Teiler der erforderliche Takt für den SIO erzeugt werden. Die anderen Clockraten (für niedrige Baudraten) werden durch Kombination von ungeraden und dualen Countern zurecht gerückt. Das war ein wenig knifflig. Laut SIO Datenblatt kann der UART bis 2,5 MBaud übertragen. Mal sehen, ob da noch was mehr geht :-)

Grüße
Heinrich
--
Es gibt keine Probleme - nur Lösungen !

Dieser Post wurde am 31.10.2013 um 13:53 Uhr von Hein_Ko editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
020
01.11.2013, 21:57 Uhr
atzensepp



Auch wenn inzwischen sehr viel interessantere Dinge über schnelle Übertragung auf SIO geschreiben wurden, kurze Info zum ursprünglichen Thema: XMODEM läuft auf CP/M 3 . Und zwar mit reinen BDOS-Aufrufen: Übertragung auf AUX-Kanal in Verbindung mit TeraTerm klappt. Dieser kann auch mittels "DEVICE.COM" auf verschiedene physikalische Schittstellen umgelegt werden. Allerdings mit CONSOLE klappen nur 128 Zeichen.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
021
02.11.2013, 00:16 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Florian

Ja, Sorry... ich bin da mit der SIO ein wenig ins Schwärmen gekommen und bin Happy, dass das nun endlich mit Kermit klappt. Thema abgehakt.

Mit XMODEM oder XMOD7 u.a. Versionen hatte ich jedoch kein Glück unter CP/M2.2 auf dem System. Ich dachte man könnte hierzu RDR und Punch als seriellen E/A-Kanal verwenden, so dass die Modem-Software keinem hardwarespezifischen Design mehr unterworfen ist. Mache ich da einen Denkfehler?

Grüße, Heinrich
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
022
02.11.2013, 16:03 Uhr
atzensepp



Hallo Heinrich,
Die cpm 2.2 Version von xmodem, die ich letztlich als Basis für die Arbeit verwendet habe, sollte das eigentlich so tun. Hat sie auf meinem 3er System allerdings nicht. Ein 2er System hab ich nicht. Auch mit der Umstellung der Bios-Aufrufe über BDOS call 50 hat es nicht hingehauen. Ich denke auch, dass es Implementierungsunterschiede der v24 ansteuerung zwischen unterschiedlichen Systemen gibt. Kann sein, dass es auf einer anderen Kiste geht.
Wenn Du willst, kann ich dir die Ausgangsversion quelle oder binary schicken. Wobei man mit der direkten Ansteuerung der sio natürlich viel mehr Möglichkeiten hat.
Mit der hohen baudrate wären auch tcpip slip/ppp verbindungen über die rs232 interessant. Vielleicht schaffst Du ja noch höhere Transferraten. Dann könnte man z80sock probieren.
Grüsse
Florian
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
023
03.11.2013, 10:56 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Florian

Vielen Dank für Dein Quellen-Angebot, das ich hiermit gerne annehme. Die Idee ist, das System über ein MODEM BBS-fähig zu machen. Ich habe noch eine Telefon-Nummer frei und möchte gerne eine feste Mailbox einrichten. Dazu benötige ich noch eine entsprechende CP/M2.2-Software. Darmals hatte ich mal auf einem PC "TELIX" mit Scripten aufgesetzt, was eine schöne Sache war.

Grüße
Heinrich
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
024
03.11.2013, 11:58 Uhr
proof80




Zitat:
Hein_Ko postete am 30.10.2013 um 22:47 Uhr
Nur schade, das die Columbia Universität of NY keinen Z80 Code anbietet.

Hallo Heinrich,

das Problem mit den ollen 8080-Mnemonics hatte ich auch, als ich an den PROF80-Sourcen gearbeitet hatte. Dabei ist ein kleines Übersetzungsprogramm herausgekommen, das zwar noch nicht perfekt ist, aber schon viel Arbeit abnimmt. Vielleicht wäre das für Dich interessant, zu finden unter http://www.prof80.de/i2zkurz.html (wie gesagt, nicht brandaktuell).

Gruß, Wolfram
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
Seiten: -1- [ 2 ]     [ CP/M-Software ]  



gaby.de

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek