RS232 in BASIC-80 / MBASIC

  • Du hast auf der Questar_cpm diskette folgende Programe,

    Code
    Wobei BSEND und BRCV wohl von BYROM SOFTWARE TELECOMMUNICATIONS SERIAL NO. LB-357 VERSION    4.4
    COPYRIGHT (C) 1980   ist und 2 Rechner mit einander verbindet.


  • Bsend habe ich vor Wochen probiert und keine Kommunikation mit meinem Windowsrechner hinbekommen. Mit dem jetzigen Wissen wär es nochmal ein Versuch wert.


    Mit PIP habe ich es schon fast geschafft, dskparam.com zu übertragen. Leider hat der Z80emu keine daten auf meine serielle Schnittstelle schicken wollen und mit dem Windows Terminalprogramm Hterm konnte ich dem lauschenden Questar/m kein Ende der Datenübertragung übermitteln.


    Bin guter Dinge, dass das noch was wird.

  • Habe mit PIP weiter experimentiert und bin einen Schritt weiter. Die Daten werden strukturiert übertragen und auch das Ende der Übertragung wird erkannt auf Questar/M Seite. (Siehe Screenshots)


    Geholfen hat es im Sendeprogramm TeraTerm einen Delay von 1 msec/char einzubauen. Die Einstellungen sind 9600 Baud 8N1 XON/XOFF.


    Leider scheitert Load DSKPRAM.HEX mit folgender Fehlermeldung:

    Code
    ERROR: INVERTED LOAD ADDRESS, LOAD ADDRESS 0000

    Mit DDT DSKPRAM.HEX komme ich auch nicht weiter, da das Programm dann hängt.


    Sind die Daten, die ich per Emulator "Z80Emu" und dem Programm genhex.com erzeugt habe überhaupt richtig? Wenn nein, wie erzeuge ich die Hexfiles? Das in Fritzes Doku genannte UNLOAD finde ich nirgends.

  • Probier mal mit dem DDT


    DDT

    i dsdkpram.hex


    dann mit SAVE n dspram.com sichern



    At any point in the debug run, the operator can stop execution of DDT by using either

    a ctl-C or Go (jmp to location 0000H), and save the current memory image by using a

    SAVE command of the form


    SAVE n filename.COM


    where n is the number of pages (256 byte blocks) to be saved on disk. The number of blocks

    is determined by taking the high order byte of the address in the TP A and converting this

    number to decimal. For example, if the highest address in the Transient Program

    Area is 1234H, the number of pages is 12H or 18 in decimal. The operator could type a

    ctl-C during the debug run, returning to the Console Command Processor level, followed

    by


    SAVE 18 X.COM [Beispiel]

  • Nur damit ich es richtig verstehe:

    Du willst DSKPRAM.COM in DSKPRAM.HEX umwandeln, damit Du es als Textdatei und nicht als Binärdatei senden kannst?


    Eine andere Möglichkeit dazu ist UUENCODE/UUDECODE, für das Decodieren gibt es hier eine BASIC-Version, die man in überschaubarer Zeit direkt auf dem Zielrechner eintippen kann.


    https://archives.scovetta.com/…tarter-kit/index30b5.html


    Ich habe bislang immer kompilierte Versionen auf die Zielmaschine bringen können, daher habe ich die BASIC-Version noch nicht selber ausprobiert.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Es hat endlich geklappt!:P


    1. dskpram.com und unload23.com auf eine virtuelle Diskette gezogen in Z80EMU mit der Funktion import->binary

    2. Im virtuellen CP/M mit unload23 die dskpram.hex erstellt

    3. Diese per export->binary als Datei in die Windowswelt geholt

    4. Per Send File in Teraterm die Datei an den Questar/M (dort PIP dskpram.hex=RDR:ÄEBÜ) übertragen

    5. Am Ende der Übertragung hängt der Zielrechner - dann Teraterm schließen und Putty starten und dort die Taste "PAUSE/Unterbr" drücken

    5. Mit dem LOAD Programm aus dskpram.hex wieder eine dskpram.com gemacht.

    6. Fertig: Programm ist auf der Exotenmaschine ausführbar!


    Wow, das war ein Stück Tüftelei!! Danke an alle, die mich unterstützt haben.


    Ergebnis im Anhang!!

  • Passt doch... und jetzt noch die anderen Programme, und Qterm, Mex, Kermit oder ähnliches und was es da noch so schönes gibt falls wir die serielle

    Schnittstelle konfigurieren können.

    Die Patchadresse in PIP für send und recieve könnte hierbei helfen. Nur so ein Gedanke .

    ::hacking::



    Drive Parameter Block (DPB):


    4000 04 0F 01 7300 7F00 C000 2000 0300

  • Habe das "Probe2.com" auf dem gleichen Weg probiert...das sind 47 kB als .hex-Datei!!

    Hat leider nicht geklappt.


    Geklappt hat bisher:

    skew.com

    uudecode.com (waren 29 kB als Hex-Datei)


    Probiere jetzt probe2.com per uue-Format zu übertragen (23 kB).


    Welches Programm gibt die Infos zu den Low-Level Disk-I/O und zur seriellen Schnittstelle aus? So wie ich es im Emulator gesehen habe, müsste das probe2 sein, oder? Finde dazu kein Manual.

  • Probe2 entspricht probe102.com aus http://oldcomputers-ddns.org/p…utils/sysutl/00-index.txt

    Code
    PROBE102.LBR    38272  12-28-86  Display address of CCP, BDOS, & BIOS


    Wenn ich mir probe2.com z.B. mit Notepad++ anschaue finde ich:



    PROBE Version 1.01 2 Sep 1984


    PROBE will tell you what version of CP/M or MP/M you are

    running, and display the I/O byte if appropriate. It then

    displays the addresses of the CCP, BDOS, and BIOS. The BIOS

    jump table will next be displayed including the extended BIOS

    calls for CP/M+, and XIOS calls if running MP/M. It then

    displays the disk parameter blocks (DPB's), disk parameter

    headers (DPH's), group size, total disk size, number of

    directory entries, space required for directory entries, total

    usable space on the disk, and the disk space allocation vectors

    for any selected drive (A: through P:).


    PROBE was written in 'c' to help decode the disk formats of

    a number of different machines to aid in transportability. It

    was inspired by BDLOC, TELL, ALLOC, and a number of other public

    domain CP/M utilities.


    Paul Sittler - My Word!! RCP/M (409) 845-0510 (late nights)

    Veterinary Public Health RCP/M (409) 845-0509 (24 hours)

    Dept of Veterinary Public Health, Texas A&M University

    College Station, Texas 77840-4468

  • Ja, genau! Habe ich mittlerweile auch gesehen als dieser Text beim Programmstart langsam auf dem Bildschirm ausgegeben wurde.


    Wollte sehen, ob man die Infos irgendwie auf die serielle Schnittstelle schicken kann. Hab jetzt Fotos gemacht und in dem Questar/M Thread eingestellt.

  • Ja, genau! Habe ich mittlerweile auch gesehen als dieser Text beim Programmstart langsam auf dem Bildschirm ausgegeben wurde.


    Wollte sehen, ob man die Infos irgendwie auf die serielle Schnittstelle schicken kann. Hab jetzt Fotos gemacht und in dem Questar/M Thread eingestellt.

    Unter CP/M + gibt es PUT und GET um I/O umzuleiten


    Für CP/M 2 sind externe Programme notwendig.


    P bringt eine UNIX aehnliche Pipe, so dass die Bildschirmausgabe in eine Datei umgelenkt werden kann.

  • Des Weiteren kann eventuell auch die IOBYTE Funktion genutzt werden.


    http://www.seasip.info/Cpm/iobyte.html

    http://www.gaby.de/cpm/manuals…htm/ch1.htm#Section_1.6.1



    IOBYTE details (weiss gerade nicht die Quelle)

  • Da wohl die IOBYTE Funktion implementiert ist sollte auch Generic Kermit gehen.


    Auszug aus http://www.z80.eu/downloads/cpkermit.txt



    1.6.1. Generic Kermit-80


    "Generic Kermit-80" is an implementation of Kermit that should run on any 8080-

    compatible CP/M 2.2 system with no modification at all, or perhaps only a minor

    one. Unlike other Kermit-80 implementations, it contains no system-dependent

    manipulation of the serial port.

    All I/O is done with standard CP/M BIOS calls, and I/O redirection is done using the CP/M IOBYTE function, which,

    according to the Digital Research CP/M Operating System Manual, is an optional feature of any particular CP/M implementation.

    If your system does not provide

    the IOBYTE function, Generic Kermit-80 will not work; furthermore, not all

    systems that implement IOBYTE do so in the same way. The SET PORT command may

    be used to select the devices to be used for input and output. Table 1-1 lists

    the options to the SET PORT command and their effects.


    -----------------------------------------------------------------------


    SET PORT xxx input from output to

    CRT CRT: CRT:

    PTR PTR: PTP:

    TTY TTY: TTY:

    UC1 UC1: UC1:

    UR1 UR1: UP1:

    UR2 UR2: UP2:


    Table 1-1: Kermit-80 SET PORT Options

  • Ich habe mir das Kermit411 nach der Beschreibung von Peter z80.eu mal als Generic CP/M2 Kermit erstellt und kann es ohne Fehler starten.

    In http://www.z80.eu/downloads/cpkermit.txt lese ich:


    ?Kermit has not been configured for a target systemor
    ?Consistency check on configuration failed


    The first message indicates that the overlay wasnot found where the system-independent module expected to find it, probably

    because the overlay address is incorrect;

    the second indicates that the version of CPXLNK used in the system-dependent module is incompatible with the system-

    independent module.


    Folglich hast du für dein System nicht das richtige Modul gelinkt, mit den vielen CPV???? Dateien hat man sich bei der

    Auswahl schnell vertan.




    Ich habe das Kermit unter MYZ80 mal generiert und konnte es ohne Fehlermeldung starten.

    ftp://kermit.columbia.edu/kermit/a/cpsker.hex | Kermit

    ftp://kermit.columbia.edu/kermit/a/cpvgen.hex | "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)


    Siehe: kermit.zip


    09:31 C0:WORK>

    09:31 C0:WORK>dir


    Drive C0 [WORK] Files: 3/88k Free: 6984k

    CPSKER .HEX 68k : CPVGEN .HEX 4k : KGEN39 .COM 16k :


    # ich nutze ein MLOAD für ZCPR


    09:32 C0:WORK>mload kg411=cpsker,cpvgen

    MLOAD ver. 2.4 Copyright (C) 1983, 1984, 1985

    by NightOwl Software, Inc.

    Loaded 26086 bytes (65E6H) to file C0:KG411.COM

    Start address: 0100H Ending address: 73C7H Bias: 0000H

    Saved image size: 29440 bytes (7300H, - 230 records)


    09:33 C0:WORK>dir


    Drive C0 [WORK] Files: 4/120k Free: 6952k

    CPSKER .HEX 68k : CPVGEN .HEX 4k : KG411 .COM 32k : KGEN39 .COM 16k


    # Aufruf von Kermit mit KG411.COM



    09:33 C0:WORK>kg411

    Kermit-80 v4.11 configured for Generic CP/M-80 with Generic (Dumb) CRT Terminal


    type selected


    For help, type ? at any point in a command

  • Komisch. Ich denke, dass ich die gleiche Vorgehensweise gewählt habe.

    mload kermit=cpsker,cpvgen

    Die Files habe ich auf der von Dir verlinkten Seite heruntergeladen.


    Werde es nochmal in Ruhe versuchen und zum Vergleich die von Dir erzeugte Version testen.

  • Jetzt habe ich es hinbekommen! :)

    Irgendwas hat die Übertragung gestört - habe jetzt als Abhilfe folgenden Befehl verwendet, um die ASCII Bildschirmausgabe abzuschalten:

    PIP KGEN39=RDR:ÄBÜ


    Kermit läuft und jetzt habe ich einen Memory-Dump des Rechners endlich in die Moderne Welt übertragen können.


    Kermit (kgen39.com) braucht nur die Option SET FILE-MODE BINARY und es unterhält sich rasend schnell und komfortabel mit dem Programm Teraterm (Transfer>Kermit>Receive).


    Kermit 411 läuft ebenfalls - dort muss die Option nicht gesetzt werden.


    Das ist ein echter Quantensprung im Vergleich zu PIP - danke fritzeflink !