Autor Wątek: FDD3000 + CP/M + Terminal  (Przeczytany 11804 razy)

PROTON

  • ****
  • Wiadomości: 478
  • Miejsce pobytu:
    Warszawa
FDD3000 + CP/M + Terminal
« dnia: 2017.03.06, 15:03:05 »
W ramach ćwiczeń, planuję zrobić terminal do stacji dysków FDD3000.
Coś w rodzaju TT3000 z wyjściem VGA 1024x768 i ze złączem USB do podpięcia klawiatury PC i złączem do stacji.

Komunikacja ze stacją odbywa się za pośrednictwem 12 przewodów (6 wejściowych i 6 wyjściowych), tu nie przewiduję problemu. Problem mam taki, że nie mam opisu komunikacji, jakie komendy są wysyłane i odbierane. Czy ktoś z was ma taki opis?
Może trzeba dezassemblować kod TT3000? A może łatwiej będzie dezassemblować CP/M-a?

pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #1 dnia: 2017.03.06, 15:06:15 »
Można zacząć od kodu, który znajduje się w interfejsie M-397.
Najwięcej na ten temat wie trojacek.
ZX/Enterprise/CPC/Robotron/C128D

silenter

  • *****
  • Wiadomości: 1337
  • Miejsce pobytu:
    Warszawa/Radzymin
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #2 dnia: 2017.03.06, 15:15:59 »
Coś w rodzaju TT3000 z wyjściem VGA 1024x768 i ze złączem USB do podpięcia klawiatury PC i złączem do stacji.
A jaki masz pomysł na realizację sprzętową?
Ja bym kombinował z atmega 328p stara klawiatura pecetowa ze złączem DIN (komunikacja serialowa)
to spokojnie wystarcza do obsługi VGA.

https://www.youtube.com/watch?v=mrRGosn48gw

Inna opcja to raspberry pi 0/w - wtedy byłoby jeszcze WiFi i Bluetooth
128k +2 UK issue 1, JS128, FDD3000 in restoration, ZAXON MGT +D, PEAR AmpY, Pear ExEar :), PEAR TI-OF-TTL+FDD35, co to tu robi??? => 2xCDTV&A500

https://soundcloud.com/silenter

https://www.youtube.com/channel/UCKZhL7Lq1zUDDnRDTJKhN4A

PROTON

  • ****
  • Wiadomości: 478
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #3 dnia: 2017.03.06, 15:46:11 »
FPGA, robię na MAX10 ( płytka MAXimator ). Generator obrazu wymaga częstotliwości 65MHz, co w przypadku FPGA nie stanowi problemu.
Wieczorem wrzucę fotki tego co zrobiłem, może jakieś inne pomysły macie na FPGA?


silenter

  • *****
  • Wiadomości: 1337
  • Miejsce pobytu:
    Warszawa/Radzymin
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #4 dnia: 2017.03.06, 15:53:27 »
FPGA, robię na MAX10 ( płytka MAXimator ).
Dla mnie to za wysoko. Ja swoją edukację w tym względzie zakończyłem 25 lat temu na GAL/PAL :(
128k +2 UK issue 1, JS128, FDD3000 in restoration, ZAXON MGT +D, PEAR AmpY, Pear ExEar :), PEAR TI-OF-TTL+FDD35, co to tu robi??? => 2xCDTV&A500

https://soundcloud.com/silenter

https://www.youtube.com/channel/UCKZhL7Lq1zUDDnRDTJKhN4A

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #5 dnia: 2017.03.06, 16:14:25 »
Można zacząć od kodu, który znajduje się w interfejsie M-397.
Najwięcej na ten temat wie trojacek.

Dzięki za kredyt, ale co ja tam wiem? :)
Generalnie są tu dwa zagadnienia - protokół terminalowy (podobny do VT52) oraz komunikacja sprzętowa (pseudodupleks na 4 bitach, czyli bajt idzie na dwa razy, tzw. nibble mode).

Po stronie FDD nie trzeba nic zmieniać, jeśli robi się komunikację po spirali. Po stronie terminala trzeba zrobić to, co jest w EPROM-ie M397 (warstwa sprzętowa) oraz w programie "terminal emulator", który jest na fabrycznej dyskietce. Albo zajrzeć do kodu TT3000, tam jest wszystko.
Niski poziom to raptem dwie funkcje - wyślij dane z bufora i odbierz dane do bufora. Można żywcem wziąć te z M397 albo odkopać je w danych z TT3000. Niestety nie mam pod ręką żadnej dokumentacji, przekopię wieczorem dysk laptopa, powinienem coś mieć na ten temat.

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #6 dnia: 2017.03.06, 16:18:51 »
Komunikacja ze stacją odbywa się za pośrednictwem 12 przewodów (6 wejściowych i 6 wyjściowych), tu nie przewiduję problemu. Problem mam taki, że nie mam opisu komunikacji, jakie komendy są wysyłane i odbierane. Czy ktoś z was ma taki opis?
Może trzeba dezassemblować kod TT3000? A może łatwiej będzie dezassemblować CP/M-a?
Jeśli chodzi o sam protokół komunikacyjny, wystarczą Ci źródła BIOSa dla FDD. Są w necie (oraz np. tu)
Jeśli chodzi o resztę, potrzebujesz dość dokładną emulację (jeśli się nie mylę) VT52 (większość softterminali które znalazłem radośnie ignorowała np. znak kontrolny czyszczenia ekranu od pozycji kursora)
Machines should work. People should think.

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #7 dnia: 2017.03.06, 16:21:32 »
Niski poziom to raptem dwie funkcje - wyślij dane z bufora i odbierz dane do bufora. Można żywcem wziąć te z M397 albo odkopać je w danych z TT3000. Niestety nie mam pod ręką żadnej dokumentacji, przekopię wieczorem dysk laptopa, powinienem coś mieć na ten temat.
Nie można z M397.
Protokoły TOS i CP/M się nieco różnią - w sumie niewiele, ale już znacząco...
A sam M397 przy pracy z CP/M nie bierze udziału, port jest obsługiwany samodzielnie przez program terminala.
Jeśli zerkać to albo do TT3000, albo do programu terminala z dyskietki startowej CP/M.
Machines should work. People should think.

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #8 dnia: 2017.03.06, 17:15:35 »
No proszę, warto wiedzieć :)
A przypomniało mi się, że mam gdzieś zdeasemblowany monitor-emulator. Na którymś z kilkudziesięciu obrazów dyskietek... Postaram się znaleźć.

zibi

  • ***
  • Wiadomości: 123
  • Miejsce pobytu:
    Gdańsk
  • gg: 2830
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #9 dnia: 2017.03.06, 18:21:18 »
 Z tym rPi0w to jest nawet myśl - można by się po ssh "logować" do cp/m ;P

PROTON

  • ****
  • Wiadomości: 478
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #10 dnia: 2017.03.06, 19:42:02 »
Na dzień dzisiejszy wygląda to tak.
Generator sygnału VGA 1024x768@60Hz
Generator znaków (czcionka 8bit atari), znaki są wrzucona z bitmapy znalezionej w sieci, bitmapa rozdzielczość 128x128, znaki 8x16.
Jedynie co trzeba zrobić przy podmiance znaków to, skonwertować do BMP 1 bit, hexeditorem wywalić nagłówki i odwrócić kolejność lini. Pliki BMP zapisywane są od dołu.
Dołożona jest pamięć RAM 4kB na bufor znaków, wykorzystane jest tylko 3200 komórek pamięci, reszta do wykorzystania jako rejestry konfiguracyjne: kolor tła, kolor ramki, kolor czcionki, współrzędne kursora, kształt kursora, itp...

Do zrobienia jest, kursor, obsługa klawiatury USB/PS2, interfejs stacji fdd3000 i logika terminala.

Interfejs VGA wygląda tak:
ENTITY VGA is
port(
DATA: IN STD_LOGIC_VECTOR(7 downto 0);
ADDR: IN STD_LOGIC_VECTOR(12 downto 0);
WE: IN STD_LOGIC;

R: OUT STD_LOGIC;
G: OUT STD_LOGIC;
B: OUT STD_LOGIC;
VSYNC: OUT STD_LOGIC;
HSYNC: OUT STD_LOGIC;
CLK: IN STD_LOGIC;
RST: IN STD_LOGIC
);

end VGA;

czyli:

DATA 8 bitów
ADDR 12 bitów
EN 1 bit enable

tymi wejściami zapisujemy bezpośrednio w pamięci tekst do wyświetlenia, oraz do rejestrów konfiguracyjnych.

R,G,B,VSYNC,HSYNC - wyjście VGA, Na płytce mam tylko 3 bitowe VGA, można uzyskać tylko 8 kolorów. Optymalne było by 4 bitowe - 16 kolorów.

CLK - wejście zegara, w moim przypadku 10MHz, układ ma PLL który generuje potrzebną częstotliwość.

Układ jest zajęty w 14%, w przypadku najsłabszego MAX10 będzie to około 65-70%, w razie czego kod można zsyntezować na innym środowisku pod inny układ, np. XILINX-a.


steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #11 dnia: 2017.03.06, 21:44:11 »
Śliczna czcionka.
I mały problem.
Terminal ZX ma zakodowane trzy zestawy czcionek, TT ma cztery (choć do czwartego nie znalazłem odwołań w kodzie)
W załączniku w naturalnej wielkości (żywcem wycięte z :) )

edit:
Żeby nie było nieporozumień - charset do którego nie znalazłem odwołań w kodzie, to tt_2, ten mniejszy, z samymi rameczkami.
Nie wiem czy to jakieś resztki po kompilacji, czy przedłużenie pierwszego zestawu - aż tak się w kod nie zagłębiałem...
« Ostatnia zmiana: 2017.03.06, 23:00:00 wysłana przez steev »
Machines should work. People should think.

PROTON

  • ****
  • Wiadomości: 478
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #12 dnia: 2017.03.06, 22:56:13 »
Dzięki za załącznik, przerobię czcionki.

pear

  • *****
  • Wiadomości: 5511
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #13 dnia: 2017.03.07, 07:04:55 »
W przypadku korzystania z ZX Spectrum jako terminala była możliwość używania bibliotek graficznych.
Nie wiem czy TT3000 miał taką możliwość. Niby to był tylko terminal, ale na tych samych układach co Timex TC2048.
ZX/Enterprise/CPC/Robotron/C128D

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: FDD3000 + CP/M + Terminal
« Odpowiedź #14 dnia: 2017.03.07, 07:59:40 »
TT3000 ma za mało RAM-u, by ładować biblioteki.