forum speccy.pl

Komputery z Z80 => CP/M - kompatybilne => Wątek zaczęty przez: trojacek w 2021.06.08, 15:08:20

Tytuł: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 15:08:20
Za namową jednego z naszych forumowych kolegów, zacząłem zaglądać do kodu Timex Terminala 3000, celem jego prostej transplantacji na TC2048. Generalnie chodzi o to, by mieć 80-kolumnowy terminal na TC2048/2068. Może się to uda, może nie, a może urodzi się jakiś ulep z kodem z różnych źródeł ;). Z robotami ruszę gdzieś w lipcu, bo wtedy powinienem mieć trochę wytchnienia :).

Na razie tylko deasembluję i przyglądam się rezultatom, no i odkopałem kilka ciekawych postów znalezionych na forum.
Na przykład pomysł sklonowania TT3000: https://www.speccy.pl/forum/index.php?topic=4693.msg82695#msg82695.

W deasembowanym kodzie widzę trzy zestawy fontów, w tym jeden z 32 ramkami. Widać też, że do komunikacji z FDD używany jest port #BF (czyli inny, niż w interfejsie M-397), jak również port ten, wraz z liniami A15-A8, obsługuje dodatkowe (nieistniejące w TC2048) rzędy klawiszy.

Tak więc mój pierwotny pomysł - by ROM TT3000 wrzucić w płytę TCC2048 - spalił na panewce. Nawet po zmianie portu do FDD to nie zadziała, bo będzie brakować klawiszy kursorów, Shift, Control i innych. Innymi słowy, trzeba wystrugać coś na bazie kodu z TT3000 i kodu z któregoś z emulatorów terminali (czyli programów wgrywanych do TC2048 lub ZX Spectrum).

Tak więc mamy trzy rodzaje terminali:
• TT3000, wyświetlający w 80 kolumnach (fizycznie licząc od trzeciej do 82), 3 zestawy znaków i ramki,
• Emulator terminala firmy Timex dla TC2048/2068, wyświetlający w 64 kolumnach,
• Emulator terminala firmy Polbrit dla ZX Spectrum, wyświetlający w 64 kolumnach, ale z matrycą 8x4 piksele (256x192), oferujący polskie znaki, kolorowanie tekstu, możliwość korzystania z grafiki, obsługę lokalnego portu drukarki (jakiś interfejs Centronics), dodawania własnych driverów (przypinanie własnych snippetów do określonych escape-kodów).

Żeby było weselej, wygląda na to, że każdy terminal obsługuje inny zestaw kodów sterujących - zarówno tych podstawowych (o kodach 0..31), jak i escape-kodów (czyli sekwencji po kodzie 27). Coś tam z ANSI, coś z VT100 lub VT52, trudno powiedzieć :) Dlatego właśnie zależy mi na zobaczeniu instrukcji obsługi od TT3000, która niestety zniknęła spod linka, którego kiedyś podawałem (https://www.speccy.pl/forum/index.php?topic=2006.msg81253#msg81253).

I tak zupełnie przy okazji - @Pear, wspominałeś, że miałeś bibliotekę graficzną rozszerzającą Timex Terminal Emulator, znalazłeś ją może? :)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 16:02:51
Znaleźć to nie problem, ale zgrać to już bardziej.
Jest na 3" dyskietce pod TOS-em, a źródła są oryginalnie w assemblerze ZEUS.
Zabij, nie pamiętam jak to się obsługiwało.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 16:08:07
Nie szkodzi, że Zeus, coś się wykombinuje, tylko znajdź ten plik (czy pliki), pliiiiz :)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: KWF w 2021.06.08, 16:30:44
ZEUS jest pod Windowsa: http://www.desdes.com/products/oldfiles/index.htm
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: Tygrys w 2021.06.08, 17:27:53
pear - a możesz udostępnić obraz tej dyskietki?
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 19:19:11
No właśnie wróciłem z garażu. Udało się zgrać.
Obraz zawiera chyba wszystko co ważne miałem/mam na dyskietkach pod TOS (obraz ma po 80 ścieżek na dwóch stronach, czyli 640KB).
W głównym katalogu są 2 pliki FN.ASM i GRPH64.ASM. To jednak nie ZEUS tylko jeszcze jakieś inne ustrojstwo co potrafiło współpracować z plikami na dyskietkach.
Próbowałem wyłuskać te 2 pliki SCADM-em, żeby podejrzeć, ale ten program pokazuje tylko pierwszych sto plików z katalogu dyskietki :( Tam jest znacznie więcej nagrane.
EDIT:
W razie czego jeszcze gdzieś się chyba znajdzie wersja skompilowana do porównania, czy to aby na pewno ostatnia wersja.
I proszę mnie nie pytać co i jak, bo pisałem ten kod, gdy byłem jeszcze przystojnym murzynem z kręconymi włosami.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 19:31:26
Oto dwa rzeczone pliki. Faktycznie trzeba je trochę obrobić, by przypominały czytelny listing.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 19:44:50
To ja chyba jeszcze ten wynikowy plik zgram, ale to jutro już. Możliwe, że na tej dyskietce będzie też zmodyfikowany terminal, który ten pakiet graficzny ładuje przy starcie.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 19:58:44
Na tym samym obrazie jest też ASM, którym te pliki zostały zrobione. Może Ci się uda rozkminić polecenia do obsługi. Mnie się to 30 lat temu udało, instrukcji nie miałem ;)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 20:02:20
Tak, widziałem, może w wolnej chwili spróbuję (ale może ktoś się okaże szybszy).
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 20:06:51
To ja chyba jeszcze ten wynikowy plik zgram, ale to jutro już. Możliwe, że na tej dyskietce będzie też zmodyfikowany terminal, który ten pakiet graficzny ładuje przy starcie.

Hmm, nie widzę... Tak wyglądają katalog główny i folder TERMINAL:
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 20:08:44
ASM i ASM.BIN to pliki assemblera.
Zmodyfikowany terminal jest na oddzielnej dyskietce. Niestety nie zgrałem wszystkiego od razu na obraz DSK, bo po jednym pliku to strasznie upierdliwe jest ;)
W czym to tak ładnie można oglądać ?
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 20:13:36
W czym to tak ładnie można oglądać ?

https://www.speccy.pl/forum/index.php?topic=722.msg8516#msg8516
Gdzieś to chyba Tygrys wrzucał, ale chyba tylko na svn-a.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.08, 20:59:05
A gdyby tak odczytać te pliki asm jako binarne ?
Teraz są oznaczone jako BASIC i stąd mają te dziwne numery linii.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.06.08, 21:00:32
Tłumaczone półmaszynowo, więc nie gwarantuję że bezbłędnie.
ale przynajmniej się kompiluje (w każdym razie wszystkimi czterema kompilatorami które mam na dysku ;) )
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.08, 21:08:55
Fiu, fiu, dobra robota, steev!
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.06.08, 21:14:12
Na deser wszystkie bejziki en masse.
To już w pełni maszynowo ;)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: pear w 2021.06.09, 05:31:34
Dzięki :) Hm, mam tylko wątpliwości, czy to na pewno to, bo coś za krótkie mi się wydaje.
Poprzeglądam jeszcze inne dyskietki.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.06.10, 19:46:35
Korzystając z drobnych przestojów w pracy oraz faktu, że zawsze mam włączone co najmniej 2 laptopy z dedykowanymi monitorami, zezowałem (zezem rozbieżnym, oczywiście) dziś sporo do kodu TT3000. A tam - kilka niespodzianek.

1. Terminal jest zrobiony "na motywach" VT52, ale oczywiście są pewne rozbieżności (do przełączania fontów oraz włączania/wyłączania inwersji wykorzystano kody, które w VT52 służą do innych celów). Do tego jest ładnie zaimplementowany bufor klawiatury, no ale to w zasadzie standard w terminalach.

2. Mapowanie klawiszy zrobiono wręcz elegancko. Bardzo łatwo je zmodyfikować do innego układu klawiszy (nie dotyczy 8 klawiszy specjalnych, czytanych z portu #nnBF). Banalizuje to poprawienie układu klawiszy do jakiegoś sensownego, współczesnego standardu, gdyby ktoś się podjął zrobienia klona TT3000 :) Pozwala to na zaadaptowanie jakiejś mniej lub bardziej generycznej klawiatury, o ile tylko jej matryca zmieści się w docelowej siatce 8x8 (tyle da się osiągnąć bez głębszego kombinowania, bo w porcie #BF pozostał jeszcze bit D6 do wykorzystania).

3. Matryca klawiatury to niezła kombinacja :) W zasadzie trzon jest odziedziczony po Spectrum/TC2048, do tego wspomniany port #nnBF (nn to stan niski wystawiany na jednej z linii A8-A15 - brzmi znajomo?) dla 8 dodatkowych klawiszy specjalnych, no ale jak zacząłem liczyć klawisze, doliczyłem się kolejnych 8 :D Otóż kody klawiszy nie są odczytywane po 5 bitów (D0..D4), tylko... po 6 (bo jeszcze dodatkowo D6). Szósta linia została wykorzystana, bo przecież terminal nie wykorzystuje magnetofonu, zatem wejście EAR jest w SCLD wolne :)

4. Jak już wspominałem, port #BF jest wykorzystywany do komunikacji z FDD. Do wysyłki służą bity 0..3 (czyli młodszy "nibble"), a bity 4 i 5 służą do sterowania przesyłem (natomiast bit 7 steruje diodą LED w klawiszu CAPSLOCK). W drugą stronę - z FDD do TT - jest tak samo (przy czym na bicie D7 pojawia się dodatkowo stan klawisza, zaadresowanego jedną z linii A8-A15, jak opisywałem powyżej).

5. Beeper siedzi na porcie #FE jak w Spectrum/TC2048 i służy do produkcji dźwięku przy naciskaniu klawiszy oraz przy "drukowaniu" kodu 07h (BELL).

6. Przy weryfikowaniu list kodów klawiszy z i bez shifta odkryłem, że w jednej z wersji klawiatury jest błąd na keycapie - znakowi zapytania towarzyszy backslash (\) zamiast slasha (/). Ma tak klawiatura z capsami podobnymi do klawiatury LoProfile. Wersja z "kółeczkami" na palce (coś jak klawiatury Siemensa) ma ten opis poprawiony.

7. TT3000 po starcie/resecie przeprowadza test ROM i RAM. Jak coś nie gra - wyświetla stosowny komunikat po portugalsku i się haltuje.

No i czas mi się skończył, do usłyszenia w następnym odcinku :)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.07.21, 18:10:21
No to mały teaser :)

Pozostaje mi przywieźć sobie fizyczne FDD3000 i sprawdzić, czy naprawdę działa.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.07.21, 18:53:34
A będzie też wersja PC?*) :)

*) lin/win
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.07.21, 19:14:20
Yyy,  nie rozumiem? Mało masz apek terminali na PC?
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.07.21, 19:50:14
Obsługujących wszystkie kody i dewiacje terminala dla FDD3(000)?
Hm, gdzieś tak... zero.
Jak jest to się chętnie dowiem.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.07.21, 20:53:57
Jakie dewiacje? To jest podzbiór VT52. Jedynym nietypowym kodem jest przełączanie na czcionkę portugalską (Esc N + litera łacińska).
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.07.21, 21:46:17
Hm.
Co w takim razie obsługiwało w przykładach z Twojej (niestety nieco uszkodzonej) dyskietki kody (^ = ESC) :
^O, ^P, ^Q, ^G, ^F, ^T0, ^T1, ^N, ^WD, ^WG i inne odpowiedzialne za grafikę i okna.

Terminal TMX (z szybkiego rycia kodu widzę, że chyba nie), terminal Unipolbrit, jakieś rozszerzenie ładowane na ZX przed/po terminalu , Masaj?
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.07.21, 22:05:51
Nie wiem, o czym piszesz. Grafika, okna? To nie jest VT52, mogę tylko zgadywać, że chodzi o jakieś rozszerzenia polbritowskie. Jak widzę, tytuł wątku okazał się adekwatny :D

Timex Monitor Emulator (dołączany standardowo do oryginalnej stacji FDD3000) obsługuje kody:
A (Cursor Up) - wiersz w górę
B (Cursor Down) - wiersz w dół
C (Cursor Forward) - znak do przodu
D (Cursor Back) - cofanie o znak
F - zmiana na graf font
G - zmiana plain font
H (Cursor Position) - SCREEN home
I - kursor w górę z ewentualnym scrollem
J (Erase in Display) - czyszczenie od kursora do końca ekranu
K (Erase in Line) - kasowanie linii na prawo od kursora
Y (Direct Cursor Address) - ustawianie kursora (włączenie oczekiwania na parametry)
Z (Identify) - wysyłka Esc + "/Z.", identyfikacja
L - INVERSE ON
M - INVERSE OFF
N - znak z innego fontu (PT)

OK - kombinacje Esc+L i Esc+M mają inne funkcje, niż w VT52. To faktycznie może powodować problemy, choć tak na oko, programy typu WordStar działają prawidłowo z tym terminalem.

TT3000 obsługuje dodatkowo kody Esc+O i Esc+P, ale na jakieś swoje wewnętrzne potrzeby (wygląda to na włączenie/wyłączenie obsługi kilku znaków specjalnych z puli 127-255).

Obrazek z Wikipedii (https://en.wikipedia.org/wiki/VT52).
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2021.07.21, 22:30:37
Nie wiem, o czym piszesz. Grafika, okna? To nie jest VT52, mogę tylko zgadywać, że chodzi o jakieś rozszerzenia polbritowskie. Jak widzę, tytuł wątku okazał się adekwatny :D
Piszę o tym co w załączniku :)
Wiem że to nie czysty VT52.
Przypuszczam że masz rację. Ale nie mam siły na analizę unipolbriterminala żeby to zweryfikować :(
A tytuł wątku w 101% trafny :>
---
edit : Jak mówi Księga : 'szukajcie aż znajdziecie' ;/
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2021.07.21, 22:59:15
No, ja w pełni rozumiem, sam odkładam temat mutacji polbritowskiej na jakąś nieokreśloną przyszłość. Wolałbym się skupić na wersji timexowej i ewentualnie ją rozbudowywać o jakieś funkcjonalności. Może nawet o wspomniane już ramki i grafikę :)

Jednak jako priorytet chciałbym umożliwić zmianę mapowania kodów Esc. Nie jest to jakiś rocket science, a pozwalałoby uruchamiać pogramy CP/M wymagające nieco odmiennych funkcjonalności terminala (na przykład Esc+L i Esc+M do dodawania/kasowania linii). Może nawet udałoby się zaimplementować nowsze wersje protokołu.

W załączeniu artykuł z Bajtka, zawierający spis kodów polbritowskich.
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2022.12.21, 13:48:14
A tak wygląda porównanie procedur wysyłki zawartości rejestru B do FDD.
Po lewej - kod TT3000.
Po prawej - kod z programu terminala dla TC2048.
Instrukcje z użyciem (iy+04h) to nakładanie statusu CapsLocka, nie występuje w TC2048. Dla zwiększenia czytelności kod TC2048 ma tam puste linie.
W negatywie - znalezione przeze mnie różnice, dotyczące, jak widać, starszych 4 bitów wysyłanych/odbieranych do/z FDD.

Opis bitów dla in/out:
D0..D3 - dane in/out w formie półbajtów (nibble)
D4, D5 - TT3000: bity sterujące wysyłką/odbiorem, 2048: 00
D6 - 2048: sterowanie wysyłką/odbiorem (TT3000 nie używa tego bitu)
D7 - TT3000: out: LED CapsLocka, in: odczyt dodatkowego rządka klawiatury (nie używany w cytowanym kodzie), 2048: sterowanie wysyłką/odbiorem
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: steev w 2022.12.21, 18:20:35
Dla porządku jeszcze dodam, że w posiadanych przeze mnie wersjach ROMów dla TI, oprócz romów z sygnałami maskowanymi bajtem $c0 (flagi transmicji na bitach 7,6) znajdują się też romy maskowane bajtem $50 (bity 6,4)
BYĆ MOŻE różnice dotyczą wersji interfejsu (Asic / TTL)
Tytuł: Odp: Terminal do FDD3000, czyli bajzel na kółkach
Wiadomość wysłana przez: trojacek w 2022.12.23, 16:55:35
A ja dla porządku dodaję jeszcze sporządzony na szybko z natury szkic dekodera I/O.
Wyjście "3" aktywuje LS244, wyjście "11" - LS273.
Jak (chyba) widać, jedyną linią adresową używaną do dekodowania jest A6.