🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.misc.telefonia
Article #243369

Re: Połączenie modemów przez VoIP

#243369
From: Krzysztof Halasa
Date: Sat, 27 Aug 2022 10:48
177 lines
9770 bytes
"J.F" <jfox_xnospamx@poczta.onet.pl> writes:

> W full duplexie nie ma, ale w half duplexie jest.
> I do tego sluzy linia RTS ... czy raczj sluzyla ..

Który modem działa (na odcinku DTE-DCE) w half-dupleksie?

> V.24 circuit 133, RS-232 circuit CJ, DB-25 pin 4.

>> The ON condition on Circuit CJ (Ready for Receiving) indicates that the
>> DTE is capable of receiving data.
>
> Wow - nazwe zmienili? I numer obwodu?

Raczej dodali. Modemy ze sprzętowym handshakingiem pojawiły się
mniej-więcej w czasach, gdy upadał PRL. "Nowy" RTS jest w RS-232
z 1991 r. (wersja z 1986 r. jeszcze tego nie ma). Rekomendacja V.24
miała to od początku (pierwsza oficjalna wersja z 1988 r).

>> The OFF condition indicates that the DTE is not capable of receiving
>> data and causes the DCE, or the intermediate function, to retain the
>> data. In some DCEs the OFF condition on Circuit CJ (Ready for Receiving)
>> also causes a signal to be transmitted to the distant DTE causing an OFF
>> condition to be placed on Circuit CB (Clear to Send) extending the flow
>> control to distant DTE.
>
> Fajne, ale "in some".

Przecież to nie jest norma ustalająca działanie modemów, pokazuje tylko
(wtedy i dziś) istniejącą sytuację na styku DCE-DTE.
W praktyce hw flow control między modemami działa z MNP/V.42 zawsze.
W połączeniu transparentnym nie ma jak przekazać drugiej stronie
informacji o konieczności wstrzymania transmisji.

>> Nie, 8250 ani 16450 nie były "wystarczająco szybkie". To były scalaki
>> podpięte do szyny ISA (a właściwie XT-BUS), czasy dostępu (zwłaszcza
>> 8250) typu setek ns, były w stanie "zbuforować" ok. jednego bajta
>> danych, co oznaczało - przy np. szybkości 115200 bps - kilkadziesiąt,
>> a przynajmniej kilkanaście tysięcy przerwań/sekundę. I to pod warunkiem,
>> że opóźnienie obsługi nie przekroczy kilkudziesięciu us (dolicz do tego
>> zależności czasowe generowane np. przez twarde dyski). 
>
> Opoznienie o jeden czy nawet 2 bajty, czyli 100-200us tolerowane.

Nie.

Przy 115200 bps transmisja jednego znaku trwa ok. 87 us.

Powiedzmy, że odebrałeś znak w chwili T. Nie wiem jakie dokładnie
były dodatkowe opóźnienia wewnątrz 8250/16450, ale nawet zakładając, że
ich nie było: w chwili T otrzymywałeś też sygnał IRQ i CPU komputera
łaskawie zaczynał (albo i nie) obsługę przerwania. W tym samym czasie
odbiornik zaczynał odbieranie kolejnego znaku do swojego rejestru
przesuwnego.
Nowy znak był gotowy w rejestrze przesuwnym w chwili T + 87 us (nieco
wcześniej, bo scalak nie czekał do samego końca bitu stop). Jeśli nie
zdążyłeś odebrałeś znaku z bufora - to sorry, bufor nie mógł pomieścić
jednocześnie obu znaków. Ciesz się, że w ogóle był bufor, bo inaczej
musiałbyś odebrać znak z rejestru przesuwnego, np. w czasie między
ostatnim próbkowaniem bitu STOP i oraz początkiem START :-)

> A dyski byly przerywalne.

Przez kogo? Dyski (IRQ 14 i 15) miały wyższy priorytet od portów
szeregowych (IRQ 3 i 4, czasem także 5 i 7).
Ze specjalną kartą z IRQ 9 (IRQ 2 w nomenklaturze XT BUS), to może tak.
Co ciekawe, pamiętam, że kiedyś miałem kabel z karty modemowej
(z headera do ustawiania przerwań) do karty (chyba) VGA (to przerwanie
było wtedy często zbędne). Ale nie pamiętam dokładnie szczegółów, może
chodziło po prostu o wolne przerwanie.

W każdym razie temat pracy dysków vs gubienie znaków na RS-232 to była
norma na różnych forach w tamtych czasach (później z modyfikatorami "IO
CHRDY" i "bus mastering IDE" w czasach Tritona (a pewnie także wcześniej
w czasach Saturna itp)).

>> To po prostu nie miało prawa działać, 
>
> Tyle, ze działało :-)

To w jakiejś równoległej rzeczywistości.
Albo w takiej opcji, że program transmitował dane w pollingu
z wyłączonymi przerwaniami (na chwilę, np. na czas transmisji bloku).
Jak zapewne pamiętasz, były takie rozwiązania (np. IIRC Norton Commander
4 mógł tak robić) - po coś chyba istniały?

>> Praktyka była taka, że 16450 działały "od biedy" @ 38400 bps, natomiast
>> 8250 @ 9600 bps (albo i nie) - to ostatnie mogło być spowodowane nie
>
> Moze w jakim linuxie, u mnie zawsze chodzilo na 115200.
> Nawet w linuxie.

Na jakim komputerze i w którym roku???

Na tej samej zasadzie ja portem równoległym ściągałem dane z magistrali
SPI (czy jakiejś tam podobnej) z gwarantowanym samplingiem < 1 us.
Wystarczyło (w dwurdzeniowym CPU) zablokować jeden rdzeń. Ale to raczej
nie znaczy, że port równoległy w pececie jest wystarczająco szybki do
takich celów.

>> tylko samym scalakiem, ale także konstrukcją karty wieloportowej, której
>> używałem (jednakże 8250 były wolniejsze i mogły wymagać dodatkowych wait
>> statów na ISA itp).
>
> Jak miales jakas dziwną kartę, to oczywiscie tak.

Ale co w niej było dziwnego? 8250 był wolniejszy od 16450, wait staty
mogły być niezbędne.

> Pamietam takie zagadnienie  16 portow, 9600, ale na 8080.
> No i ktos podobnie policzyl, ze to nie ma prawa dzialac na
> przerwaniach, wiec przerwanie bylo jedno, co 0.5ms, w przerwaniu
> sprawdzane wszytkie porty, zapisywane do buforow ... i dzialalo.

2000 przerwań/sekundę. Krótkie przerwania, niewiele rejestrów do
odłożenia na stos (i zdjęcia z niego), i to tylko 9600 bps.
A Ty chcesz 115200 bps, na (w tamtych czasach typowo) jakimś 386DX-25
z pipelined RAM :-)
2000 przerwań/sekundę byłoby problemem dla tamtego peceta. Ale może
pokonywalnym. Natomiast 20 tysięcy przerwań/sekundę by go zabiło.

No i nie twierdzę, że tak by się w ogóle nie dało zrobić. Ale pecet to
był komputer uniwersalny, nie miał marnować 50% CPU na polling portów.
Sam procesor kosztował setki dolców, nie lepiej było kupić za grosze
kartę z 16550A (albo tylko samego scalaka i wymienić)?

> A moze ... brak przerwania od TE? 
> Wpisujesz ostatni bajt, za chwile przjdzie przerwanie THRE, 
> wtedy juz nie bedzie nic do wyslania ... ale uart ciagle wysyla.
> I trzeba sprawdzac, kiedy sie zakonczy.

Tak właśnie było, ale to 100 razy mniej istotny problem (jeśli w ogóle
był to problem).

To przerwanie służyło do poinformowania CPU o tym, że może wysyłać
kolejny bajt, i nic nie mówiło o tym, co się dzieje na wyjściu.
Dodatkowo przerwanie jakiego chcesz byłoby typowo bezużyteczne, ponieważ
zwykle HD DCE nie mogły zdjąć sygnału z linii natychmiast po bicie STOP,
musiały nieco odczekać (w przeciwnym przypadku często pojawiały się
przekłamania, które np. rozwiązywano programowo transmitując dodatkowy
bajt - miałem raz coś takiego na RS-485). Wszystko razem powodowało, że
i tak konieczne było sprzętowe rozwiązanie (oczywiście HD DCE to było
sprzętowe rozwiązanie).

>> Połączenie DCE-DTE raczej nigdy nie było wolniejsze niż DCE-DCE.
>
> BYlo takie samo, zanim sie pojawily smartmodemy.

No raczej. Jak "dumb" modemy miałyby realizować jakikolwiek flow
control?

>> To działało, bo po prostu handshaking RTS/CTS działał.
>
> IMHO - dzialalo, bo komputery byly szybkie.

To sprawa względna, dla mnie zawsze były za wolne.

W każdym razie z całą pewnością 16450 itp. sprawiały problemy z modemami
V.32 i szybszymi i można ich było używać z szybkością max 38400 bps
(chociaż oczywiście w pollingu działały i @ 115200).
Po wymianie na 16550A lub nowszego scalaka (były praktycznie
kompatybilne pin-pin) problem magicznie znikał. Z tym samym komputerem,
rzecz jasna.
Np. typowe karty RS-232 (wtedy raczej nie było jeszcze tych portów na
płycie głównej) miały wlutowanego 16450 oraz podstawkę na drugiego
scalaka. Można tam było włożyć 16550A i nowsze scalaki, niektóre miały
jeszcze dłuższe FIFO. Były też specjalne karty od razu z odpowiednim
scalakiem, wieloportowe itp.

> Jak widac, cos tam w definicji zmienili, ale czy wszystkie modemy 
> to respektowały?

Nie. Tylko te prawidłowo skonfigurowane.
BTW domyślna konfiguracja była często niewłaściwa, stąd tematy
o "init stringach".
-- 
Krzysztof Hałasa
Technical Details
Message-ID: <m3tu5y0xod.fsf@intrepid.localdomain>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!1.us.feeder.erje.net!feeder.erje.net!border-1.nntp.ord.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <9137c096-eed0-46b4-a048-f7f2e75295fbn@googlegroups.com> <108uxk52aws2r.1vhn4o5ffl8cn$.dlg@40tude.net> <1h01audmytjqr.3nlrwt3e3eyj$.dlg@40tude.net> <m3h72kknaz.fsf@intrepid.localdomain> <wu7yswwoetkm$.17fo18l60vjt5.dlg@40tude.net> <m3y1vtyyeq.fsf@intrepid.localdomain> <16jfjbcx9bpkt$.agbjl81nivm7.dlg@40tude.net> <m3edxg2nt8.fsf@intrepid.localdomain> <ddtt0r312est.abzmrt8obfif.dlg@40tude.net> <m3czcxp8dc.fsf@intrepid.localdomain> <17cq9v2hiia5c.5hhfxm97f2y$.dlg@40tude.net> <m3h728e17q.fsf@intrepid.localdomain> <1vmix87l2k510$.1evnm1d4822im.dlg@40tude.net> <m3k06yve27.fsf@intrepid.localdomain> <9287039d32iz.16bswik2el0aa.dlg@40tude.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!1.us.feeder.erje.net!feeder.erje.net!border-1.nntp.ord.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: Krzysztof Halasa <khc@pm.waw.pl>
Newsgroups: pl.misc.telefonia
Subject: Re: Połączenie modemów przez VoIP
References: <9137c096-eed0-46b4-a048-f7f2e75295fbn@googlegroups.com> <108uxk52aws2r.1vhn4o5ffl8cn$.dlg@40tude.net> <1h01audmytjqr.3nlrwt3e3eyj$.dlg@40tude.net> <m3h72kknaz.fsf@intrepid.localdomain> <wu7yswwoetkm$.17fo18l60vjt5.dlg@40tude.net> <m3y1vtyyeq.fsf@intrepid.localdomain> <16jfjbcx9bpkt$.agbjl81nivm7.dlg@40tude.net> <m3edxg2nt8.fsf@intrepid.localdomain> <ddtt0r312est.abzmrt8obfif.dlg@40tude.net> <m3czcxp8dc.fsf@intrepid.localdomain> <17cq9v2hiia5c.5hhfxm97f2y$.dlg@40tude.net> <m3h728e17q.fsf@intrepid.localdomain> <1vmix87l2k510$.1evnm1d4822im.dlg@40tude.net> <m3k06yve27.fsf@intrepid.localdomain> <9287039d32iz.16bswik2el0aa.dlg@40tude.net>
Date: Sat, 27 Aug 2022 12:48:34 +0200
Message-ID: <m3tu5y0xod.fsf@intrepid.localdomain>
Cancel-Lock: sha1:l8RYGZMMY68J00ZmD9lM4ONiJsE=
MIME-Version: 1.0
Lines: 177
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 195.187.100.13
X-Trace: 1661597317 unt-rea-a-02.news.neostrada.pl 468 195.187.100.13:54984
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit