OldComp.cz
https://oldcomp.cz/

Přenos dat z PC do PMD-85 sériovým kanálem
https://oldcomp.cz/viewtopic.php?f=47&t=9146
Stránka 14

Autor:  Libor L.A. [ 28.11.2020, 10:36 ]
Předmět příspěvku:  Přenos dat z PC do PMD-85 sériovým kanálem

PMD-85 od verze 2 má v MONITORu na adrese 816Eh integrován mód terminál. V editačním režimu se spouští stiskem kláves Shift + CD. V tomto režimu je zajímavé to, že mimo běžného příjmu a vysílání zobrazitelných ASCII znaků lze prostřednictvím přijatých znaků vykonávat určité funkce.

mimo jiné:

řídicí kód 04h = načtení 128 následujících binárních bajtů ze sériové linky a uložení do RAM v PMD-85
řídicí kód 05h = skok na dodanou adresu v paměti PMD-85

Moje představa je taková, že na PMD-85 aktivuji mód terminál a na PC spustím program, který například intelhex nebo binární soubor pošle po částech do PMD-85 pomocí sériové linky. Může zaslat nejprve tisknutelné znaky, čímž se na obrazovce PMD-85 objeví jméno programu a jeho data, pak proběhne přenos vlastních dat a automatické spuštění programu. Při 57600 76800Bd by probíhal přenos dat rychlostí něco málo pod 5 6,5kB/sec. Obvod 8251 jede v režimu převzorkování x16 někde do 300kHz, takže ten by to měl zvládnout.

Hardware kabelu by neměl být problém. Už jsem kdysi zkoušel výstupním budičem sériového portu budit přímo optočlen v PMD-85 bez jakéhokoliv dalšího napájení nebo pomocných obvodů. Jen jsem tehdy jel na 19200Bd.

Ale teď na straně PC: Jednak je třeba mít na PC fyzický UART nebo USB náhražku, jednak je třeba napsat program pro Win7/10, který kulturně obslouží ten UART na úrovni dostupných služeb z API. Nehlásí se někdo?

Autor:  EC1045.01 [ 28.11.2020, 12:21 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Jo PMD85-2 a a dále se plánovalo i jako inteligentní terminál pokut se nepletu a pro tam jsou ty funkce. Blbé na tom je to, že musí být podpora na protistraně.

Pokut vezmu jak je to na SAPI-1 tak u ZPS-2 jde po pár úkonech nahrát/uložit přímo INTELHEX po RS232C (obsluha je stejná jak s kazetou aneb došlo jen k přesměrování). Pokut jde o CP/M na SAPI-1 tak Jirka Bíba napsal dva programy DOPC a DOCPM které přenášejí data pomoci protokolu XMODEM. První verzi měl pro DSM-1/2 ale udělal i jiné modifikace které chodí i na DSP-1 tj. 8251A to „A“ je nutné aneb se používají i řídící signály. Cele toto řešení má výhodu v tom že na protistraně stačí terminálový program.

Pokut chceš přenášet data s násobkem hodin x1 tak to nepojede spolehlivě aneb ty hodiny x16 nebo x64 jsou proto, aby se synchronizovalo vzorkování dat na cca prostředek přenášených bytů. Aneb po příchodu START bitu se odpočítá polovina pulzu hodin čímž se vzorkovaná dat za synchronizují s přesností 1/16 nebo 1/64. Je to proto, že přijímací a vysílací hodiny jedou asynchronně. Bavím se o asynchronním přenosu tj. UART.

V synchronním režimu se používají hodiny x1 a 8251 by měla umět něco jako BI-SINC jenže kde chceš sehnat protistranu, co bude umět synchronní přenos, když máš problém s USB převodníky aby uměli pořádně RS232C.

Ano na C2717 „Zbrojováček“ se v síti používá asynchronní přenos s hodinami x1 jenže ten kdo vysílá tak vysílá i hodiny takže všechny přijímače mají synchronní hodiny.

MHB1012 má oficiálně hodiny max. 300KHz ale jdou vybrat kusy, co snesou i cca 600KHz takže se dá spolehlivé přenášet data při 38400 BAUD. Ale i těch 19200 BAUD je hezké aneb kolik dat se bude přenášet aneb necelé 2KB za sekundu je docela slušné.

Autor:  Libor L.A. [ 28.11.2020, 12:54 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Ale ano, já počítám s asynchronním režimem se vzorkováním x16. PMD-85 po startu terminálu nastaví parametry: asynchronní režim, START+8DATA+2STOP, bez parity, vzorkování x16, 75852Bd (1,5% odchylka od 76800Bd), bez handshake. A čeká na příjem dat sériovým kanálem.

Na straně PMD-85 je vše připraveno. Softwarově i hardwarově. Stačí jen dodat sériová data ve správném formátu. A na to je zapotřebí napsat "terminál" pro Win7/10. To je ten problém.

Mohl bych napsat nějaký konvertor, který BIN soubor pro PMD-85 proloží řídicími kódy a výsledný soubor pošlu z PC do PMD-85 nějakým standardním terminálem. Některé terminály mi však na PC nejedou, neumí 76800Bd, nebo tam je jiný problém. A volat API pod Win7/10 prozatím neumím, či spíše jsem to ještě nikdy nedělal. Takže se budu muset naučit a napsat jednoduchý konzolový program, který BIN data z kompilace pro PMD-85 pošle na sériový port ve vhodném datovém formátu.


DOPLNĚNO: Nojo, hrome, 75852Bdx16 = moc. Čtyřikrát více než těch 300kHz garantovaných obvodem 8251. No nevadí, snížíme rychlost na 19200. To jsem v minulosti provozoval, to jede. I tak je to mnohem více, než těch 1200Bd u MGF kazety. Ostatně u těch 76kBd jsem měl stejně obavy, zda budiče v COM portu PC budou natolik silné, aby budily přímo optočlen.

Autor:  EC1045.01 [ 28.11.2020, 13:40 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Tak to jsem špatně pochopil, aneb jaksi si tam protiřečíš, tj. pokut MHB8251 snese hodiny pro přenos max. 300KHz a vzorkovat se bude x16 tak je to max. 19200 BAUD. Pro 76800 BAUD by při vzorkování x16 museli být ty hodiny 1.2288MHz což je 4x víc než 300KHz. Podle katalogu pro MHB8251A jsou max. hodiny pro x1 64KHz, x16 310KHz a pro x64 615KHz. Pokut máš ověřeno že MHB8251 snese bez problému hodiny až 1,3MHz pri x16 tak proč ne, aneb jsem reagoval na větu.

Libor L.A. píše:
Obvod 8251 jede v režimu převzorkování x16 někde do 300kHz, takže ten by to měl zvládnout.


To že půjdou některé MHB8251 honit na dvojnásobku než co je v katalogu bych věřil, ale čtyř násobek se mi moc nezdá.

Autor:  Libor L.A. [ 28.11.2020, 13:55 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Jasně, už jsem na to taky přišel, že to pojede max. do 19200Bd.

Teď jsem pochopil, že autor MONITORu nastavil ve skutečnosti přenosovou rychlost 4800Bd při vzorkování x16. No nevadí, to je dílčí problém, navíc snadno řešitelný a vlastně již vyřešený. Před spuštěním terminálu na PMD-85 je nutno zadat SUB C07C 07 00. Hodiny by se měly nastavit na 16x19200Hz, přesně to bude 19504Bd. Odchylka od 19200Bd činí 1,6%, což by mělo být pro sériový přenos ještě stravitelné.

Autor:  Libor L.A. [ 28.11.2020, 14:19 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Tak mě napadlo, že by bylo dobré vyhrabat ten cca 20 let starý program pro download dat z PC do PMD-85. Viz příloha. To jsem nevěděl o funkcích terminálu, takže to bylo řešeno tak jak bylo. No, ostuda, ale jelo to... A jelo to jednoduchým kabelem (jeden pár) přímo z budiče RS232/TxD na optočlen v PMD-85.

Přílohy:
DownloadPMD85.jpg
DownloadPMD85.jpg [ 184.53 KiB | Zobrazeno 13128 krát ]

Autor:  Busy [ 28.11.2020, 14:40 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Libor L.A. píše:
Teď jsem pochopil, že autor MONITORu nastavil ve skutečnosti přenosovou rychlost 4800Bd při vzorkování x16. No nevadí, to je dílčí problém, navíc snadno řešitelný a vlastně již vyřešený. Před spuštěním terminálu na PMD-85 je nutno zadat SUB C07C 07 00.
Nebolo by jednoduchsie najprv poslat prvych 128 bajtov defaultnou rychlostou 4800 Bd a spustit ich ? Tento 128 bajtovy program na PMD85 ponastavuje vsetko co treba (kludne aj 115200 Bd ak je to mozne) a cely nasledny prenos uz nebude zavisly na terminali ale bude uplne v rezii programov na PMD a PC. Uzivatel si nemusi pametat ziadne prikazy, nemusi nic nastavovat, iba PMD a PC prepoji kablom, na PMD spusti terminal klavesami Shift + CD, na PC spusti program na poslanie dat a vsetko ostatne sa urobi automaticky.

Autor:  Libor L.A. [ 28.11.2020, 14:49 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Busy píše:
Nebolo by jednoduchsie najprv poslat prvych 128 bajtov defaultnou rychlostou 4800 Bd a spustit ich ? Tento 128 bajtovy program na PMD85 ponastavuje vsetko co treba (kludne aj 115200 Bd ak je to mozne) a cely nasledny prenos uz nebude zavisly na terminali ale bude uplne v rezii programov na PMD a PC. Uzivatel si nemusi pametat ziadne prikazy, nemusi nic nastavovat, iba PMD a PC prepoji kablom, na PMD spusti terminal klavesami Shift + CD, na PC spusti program na poslanie dat a vsetko ostatne sa urobi automaticky.


Nojo, ale kdo přepne vysílací rychlost na straně PC po natažení zavaděče z 4800 na 19200Bd? A natahovat celý soubor rychlostí 4800Bd už zase není taková výhra. Já bych si stejně při vypalování nového 8kB BIOSu pro PMD-85 nastavil default 19200Bd. Ale je pravda, že jsem taky uvažoval o 128B dlouhém zavaděči, který by v PMD-85 začínal na adrese FFF0h a který by řešil nějaké ty datové záplaty.

Autor:  Busy [ 28.11.2020, 15:11 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Libor L.A. píše:
Busy píše:
Nebolo by jednoduchsie najprv poslat prvych 128 bajtov defaultnou rychlostou 4800 Bd a spustit ich ? Tento 128 bajtovy program na PMD85 ponastavuje vsetko co treba (kludne aj 115200 Bd ak je to mozne) a cely nasledny prenos uz nebude zavisly na terminali ale bude uplne v rezii programov na PMD a PC. Uzivatel si nemusi pametat ziadne prikazy, nemusi nic nastavovat, iba PMD a PC prepoji kablom, na PMD spusti terminal klavesami Shift + CD, na PC spusti program na poslanie dat a vsetko ostatne sa urobi automaticky.
Nojo, ale kdo přepne vysílací rychlost na straně PC po natažení zavaděče z 4800 na 19200Bd?
No ved ta aplikacia beziaca na PC. Posle 128 bajtov a spusti ich pri rychlosti 4800, prepne na vyssiu rychlost, pocka na nejaky ACK z PMD85 a potom vsetko odvysiela touto vyssou rychlostou.

PMD85 nevie nastavit 8251 na 115200 Bd ?

Autor:  Libor L.A. [ 28.11.2020, 15:15 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Aha, ty už počítáš s tím, že ta aplikace pro PC bude napsána. Já zatím počítám s tím co mám, tj. standardním terminálem, který umí poslat soubor. Pak tedy ano, máš pravdu, to by šlo. Jinak 8251 umí podle katalogu maximálně 300kHz na hodinovém vstupu, což dělá 19200Bd při vzorkování 16x. Ona umí i víc, ale v režimu vzorkování 64x. Bohužel to nevede ke zvýšení přenosové rychlosti. Spíše naopak.

Autor:  zdenek6 [ 28.11.2020, 16:03 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Pokud ještě nemáš nikoho na tu aplikaci pro Win, tak bych se do toho pustil...

Autor:  Libor L.A. [ 28.11.2020, 17:40 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Tak to by bylo super. Nejen že bych to nemusel vyvíjet od úplné nuly, ještě jsi ze všech nejblíž. Tudíž vzájemná komunikace a ladění tím bude operativnější.

Využil bych Busyho nápad s tím zavaděčem nahraným standardní rychlostí 4800Bd. Tím by vše v PMD-85 mohlo zůstat standardní. Zavaděč by obsahoval mmj. i textový stream, který by se vypsal na obrazovku jakožto název programu. Za tím zavaděčem bych přepnul na 19200Bd a vyslal 16x kód FFh pro synchronizaci UARTu v PMD-85. Pak by následovaly binární bloky dat, vždy TAG s kódem 04h, následovaný adresou bloku a 128 datovými bajty bloku samotného, dokud nebudou přenesena všechna data. Tolik zjednodušený principiální popis, skutečný datový protokol asi bude muset být robustnější a propracovanější.

Moje představa je, že by se jednalo o konzolovou aplikaci, stejně bych ji většinou volal například z PSPadu nebo jiného editoru s parametrem binárního souboru. Pokud by se jako další řádkový parametr uvedl textový string, byl by interpretován jako jméno programu, které se vypíše během natahování zavaděče do PMD-85. Pokud by se ti chtělo udělat k tomu i nějaké GUI aby se daly pod Win vybírat soubory a fungovalo to jako vzdálený disk pro koncového uživatele PMD-85, tak to už bych nechal na Tvém rozhodnutí. Ale to je o level výše. Tolik výchozí hromada myšlenek, stejně se to bude postupně ladit, měnit a hledat kompromisy.

Autor:  zdenek6 [ 28.11.2020, 18:07 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Ok, takže program pro konzoli, ujasněme si ty parametry, např.:

send2pmd COMx [-t "jméno"] [-d 0000] [-j 0000] soubor.bin

COMx asi povinný argument, dělat autodetekci by bylo zbytečně náročné.
-t title - titulek, když nebude uveden, použije se název souboru
-d cílová adresa, kam se má soubor nahrát, když nebude uveden, nahraje se od adresy 0000
-j kam se má skočit po načtení programu, když nebude uveden, skočí se do monitoru

soubor.bin - jakýkoliv soubor. Do budoucna: když bude mít koncovku pmd, spustí se simulace načítání z pásky.

Je to dost univerzální?
Kam nahrát ten loader? třeba od adresy 7800h, aby to bylo dost na konci paměti? Nebo počítat jen s 64kB modely a nahrát jej někam od B000?

Jdu vyhrabat převodník na ten sériový port, už jsem s tím kdysi dělal... Bude to pro mě takové malé osvěžení, celé měsíce programuju jen ARM STM32 a už mi z toho hrabe...

Autor:  Libor L.A. [ 28.11.2020, 18:40 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Teď se nabízí otázka, zda nespustit jen ten 128B dlouhý zavaděč, který nastaví max. rychlost UARTu a rovnou bude následně načítaná data podvrhovat jako bajty z MGF. Nemusel by se definovat žádný nový protokol a řada programů by měla jít jednoduše exportovat ze souborů emulátoru MGF pásky např. od RM-Teamu nebo prostě z původního surového bajtového streamu magnetofonové nahrávky.

Sice se to začíná odklánět od původní jednoduché představy, ale co vy ostatní na to?

Autor:  Czech Human [ 28.11.2020, 20:13 ]
Předmět příspěvku:  Re: Přenos dat z PC do PMD-85 sériovým kanálem

Virtuální čistě digitální kazeťák je celkem šikovný nápad ale zase tomu to všechno děsně trvá :-). Raději přidejte právě na rychlosti (a spolehlivosti) přenosu dat než vymýšlet kolo znovu - audiovstup ze zvukovky už PMD má :-). Za stejně tak důležité bych považoval i export dat z PMD, protože dostat i něco z PMD, to je aktuálně oser. Pak by se s ním dalo i pracovat jako se skutečným chytrým terminálem a posílat výsledná data i do PC :-). Ideálně aby se to dalo poslat i přes Basic, to pak něco naprogramuje i analfabet mého typu (že by PMD nebylo nutně v režimu terminál vysílat data do PC kde si je program přebere).

Stránka 14 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/