Autor Wątek: Interfejs M-397 naprawa  (Przeczytany 12105 razy)

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #60 dnia: 2024.01.07, 11:06:05 »
Thanks Johnny!

Noo, niezły galimatias. To dopiero wygląda na wersję beta. I ten napis "Spain" daje do myślenia. Wiem, że FDD było oferowane na rynku hiszpańskim (bodajże pod marką Inves, czyli Investrónica), ale nie podejrzewałem tam żadnej produkcji.

Johnny Red

  • **
  • Wiadomości: 56
  • Miejsce pobytu:
    Portugal
Odp: Interfejs M-397 naprawa
« Odpowiedź #61 dnia: 2024.01.07, 11:31:55 »
Thanks Johnny!

Noo, niezły galimatias. To dopiero wygląda na wersję beta. I ten napis "Spain" daje do myślenia. Wiem, że FDD było oferowane na rynku hiszpańskim (bodajże pod marką Inves, czyli Investrónica), ale nie podejrzewałem tam żadnej produkcji.

No problem.
We know boards were made in Spain. We don't know if only those were made there or others.
One of the EPROMs have a date and the FDD was released in 1984, so yes, those can be some of the first versions.
The LOAD ZX Museum have a previews one that looks like a prototype, but I have not yet seen it.
Investronica was going to release the FDD3 as InvesDisk 200 but it seems it was not popular.

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: Interfejs M-397 naprawa
« Odpowiedź #62 dnia: 2024.01.08, 08:12:38 »
Noo, niezły galimatias. To dopiero wygląda na wersję beta.
To jest najprawdopodobniej ta wersja w której przeniesiono komunikację z bitów 0-3,4,6 na 0-3,6,7. Dokładnie to robią te górne krosy.
Dolny zaś doprowadza do EPROM adres A11. Przedtem na tym pinie było 5V, zatem płytka przed przeróbką miała mieć pamięć 2716 a nie 2732.

Układ pozostałych ścieżek w okolicy układów PAL też się nieco różni z wersją dwupłytkową.
« Ostatnia zmiana: 2024.01.08, 08:21:32 wysłana przez ArturM »

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #63 dnia: 2024.01.08, 21:34:31 »
Dolny zaś doprowadza do EPROM adres A11. Przedtem na tym pinie było 5V, zatem płytka przed przeróbką miała mieć pamięć 2716 a nie 2732.

Ale to byłaby niezła sztuczka, bo w standardowym EPROM (2732) pozostało niewykorzystanych raptem kilkanaście bajtów. Czyżby w okrojonej wersji nie były zaimplementowane jakieś funkcjonalności?
« Ostatnia zmiana: 2024.03.02, 16:14:31 wysłana przez trojacek »

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #64 dnia: 2024.02.24, 11:43:11 »
Pozostaje sczytanie metodą brute force.

Małe speleo na własnym wątku, hehe :)
Dopiero sprawdzenie daty mojego wpisu uświadomiło mi, że to tyle lat trwało, ale... układy zostały rozszyfrowane :)
Klasyczne brute force okazało się niemożliwe, ponieważ w IC3 (GAL-u, który jest zabezpieczony przed odczytem) jest zaimplementowany rejestr. Oczywiście wiedząc, gdzie jest Q (wyjście), a gdzie CLK, i mając w łapkach schemat interfejsu (nawet niekompletny - wystarczy rozpisać, jaki sygnał jest na każdym pinie IC3), mogłem zacząć wyciągać wnioski, jak powinna wyglądać logika okołorejestrowa.

Na razie nic nie udostępniam, bo jeszcze będę testował w rożnych konfiguracjach, by się upewnić, że nie ma tam jakiegoś kruczka.
W odczytaniu IC3 z pomocą przyszedł mi programator Advantech, a w szczególności - procedura testowania z zadanymi wektorami. Drobnymi kroczkami, porównując wyniki z oryginalnym GAL, doszedłem do stanu, w którym komputer wstaje i poprawnie wczytuje programy z dyskietki.

Na czym testowałem:
- Gumiak z ROM NEC i procesorem SGS.
- TC2048 z ROM NEC i procesorem NMOS Zilog.
- FDD3000 oryginał (duża płyta).
- Interfejs, oczywiście, jak w wątku.

ROM w TC2048 raczej nie był tam oryginalnie, bo to standardowa wersja gumiakowo-plusowa. Ale diabli wiedzą, co ten komputer przeszedł, choć na szczęście nie ma śladu żadnych modów. A właśnie płyta 2048 standardowo pracuje z EPROM-em, więc mod proponowany dla NEC-a jest już fabrycznie zaimplementowany :)
Co nie zmienia faktu, że na obu komputerach nie działa TI-of-TTL...

PS. Dziś rano odkryłem jeszcze jedną drobną różnicę w stosunku do oryginału. Małe niedopatrzenie, które nijak nie zmienia działania, ale widzę, że warto jeszcze pocyzelować ;)
« Ostatnia zmiana: 2024.02.24, 11:52:49 wysłana przez trojacek »

Maryjan

  • *****
  • Wiadomości: 6666
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Interfejs M-397 naprawa
« Odpowiedź #65 dnia: 2024.02.24, 19:35:21 »
Widzę Jacku, że się "zawziąłeś".
Ale temat jak najbardziej ciekawy.
"Co miałem powiedzieć - przeczytałem..." Nikodem Dyzma

maxit

  • 128k+3
  • ***
  • Wiadomości: 159
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #66 dnia: 2024.02.24, 23:20:58 »
Są tacy co nie dają mu spokoju, więc Jacek nie ma wyboru ;)

Odkąd dowiedział się, że Interface do FDD3000 na dwóch GAL-ach istnieje i działa, jego życie nie jest już takie samo ;)
Zaczynałem od TIMEX`a....

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #67 dnia: 2024.03.02, 13:18:01 »
No i trafił mi się kolejny M-397 do naprawy.

Od razu widać, że zmieniane było złącze. Jest znacznie krótsze (bo ma krótkie piny), przez co generalnie źle styka z komputerem. Ale da się wsunąć do końca na gołą płytę komputera.
Pierwsze odpalenie to oczywiście porażka, bo korozja na złączu - normalna rzecz.
Drugie i kolejne również. No to trzeba sprawdzić EPROM.
Po rozkręceniu widzę EPROM z napisaną sumą kontrolną 05FAF2, czyli inną, niż w moim oryginalnym interfejsie (05F7E2). Po odczycie w programatorze suma się zgadza z zawartością.
Wkładam więc swój EPROM (05F7E2) i... interfejs rusza.
Ktoś kiedyś mocno kombinował i mu nie wyszło ;)

Porównałem obie zawartości EPROM i:
- ten z sumą 05F7E2 używa maski CFh, co działa z wszystkimi moimi interfejsami (na 2-płytkowym, na jednopłytkowym na GAL-ach i jednopłytkowym na EFGJ),
- ten z sumą 05FAF2 używa maski 5Fh, taki interfejs mi się jeszcze nie trafił.

Ale ewidentnie takie też istnieją, bo:

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)

Osobiście podejrzewam, że wersje z EPROM z sumą 05FAF2 (maska 5Fh) są na 2xGAL, tylko po prostu inne są wsady lub układy ścieżek.
« Ostatnia zmiana: 2024.03.02, 13:55:23 wysłana przez trojacek »

Johnny Red

  • **
  • Wiadomości: 56
  • Miejsce pobytu:
    Portugal
Odp: Interfejs M-397 naprawa
« Odpowiedź #68 dnia: 2024.03.03, 12:33:53 »

Porównałem obie zawartości EPROM i:
- ten z sumą 05F7E2 używa maski CFh, co działa z wszystkimi moimi interfejsami (na 2-płytkowym, na jednopłytkowym na GAL-ach i jednopłytkowym na EFGJ),
- ten z sumą 05FAF2 używa maski 5Fh, taki interfejs mi się jeszcze nie trafił.

I believe the 05FAF2 ROM is the most common in Portugal.

Johnny Red

  • **
  • Wiadomości: 56
  • Miejsce pobytu:
    Portugal
Odp: Interfejs M-397 naprawa
« Odpowiedź #69 dnia: 2024.03.08, 15:19:22 »
Porównałem obie zawartości EPROM i:
- ten z sumą 05F7E2 używa maski CFh, co działa z wszystkimi moimi interfejsami (na 2-płytkowym, na jednopłytkowym na GAL-ach i jednopłytkowym na EFGJ),
- ten z sumą 05FAF2 używa maski 5Fh, taki interfejs mi się jeszcze nie trafił.

Now that I read this again, can you send me or where can I get this 05F7E2 ROM?

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Interfejs M-397 naprawa
« Odpowiedź #70 dnia: 2024.03.08, 15:36:22 »
Attached.

Johnny Red

  • **
  • Wiadomości: 56
  • Miejsce pobytu:
    Portugal
Odp: Interfejs M-397 naprawa
« Odpowiedź #71 dnia: 2024.03.08, 19:23:01 »

Johnny Red

  • **
  • Wiadomości: 56
  • Miejsce pobytu:
    Portugal
Odp: Interfejs M-397 naprawa
« Odpowiedź #72 dnia: 2024.03.08, 20:47:43 »
Attached.

So in your opinion what does this difference in 7 bytes on TI ROMs?
0x542 C0 -> 50
0x551 80 -> 10
0x55A C0 -> 50
0x563 80 -> 10
0x589 C0 -> 50
0x590 80 -> 10
0x598 C0 -> 50

Left is 05F7E2, right is 05FAF2

ArturM

  • **
  • Wiadomości: 97
  • Miejsce pobytu:
    GZM
Odp: Interfejs M-397 naprawa
« Odpowiedź #73 dnia: 2024.03.08, 21:12:49 »
These values change the bit mask in this low level communication section:

  1322    SENDONE:LD      B,1             ;ilość bajtów = jeden
 1324            JR      SENDONE1        ;omiń pobranie danej
 1326    SEND:   LD      A,(HL)          ;bajt do A
 1327    SENDONE1:
                 LD      D,A             ;wpisz go do D
 1328            ADD     A,C             ;-------------
 1329            LD      C,A             ;-------------
 1330            PUSH    BC              ;zachowaj ile wysłał
 1331            LD      A,D             ;odtwórz bajt
 1332            AND     %00001111       ;wyślij młodsze
 1334            OUT     (239),A         ;z d6 i d4 jako zero
 1336            LD      E,A             ;młodsze do E
 1337            LD      A,D             ;bajt do A
 1338            AND     %11110000       ;wydziel starsze
 1340            RRCA                    ;SWAP A
 1341            RRCA                    ;
 1342            RRCA                    ;
 1343            RRCA                    ;
 1344            LD      D,A             ;zpisz starsze
 1345            LD      BC,80           ;B=0, C=%01010000
 1348    A_1348: IN      A,(239)         ;odczytaj port
 1350            AND     C               ;maskuj bity
 1351            CP      64              ;czy d6 ustawiony
 1353            JR      Z,L_94          ;jeśli tak to dalej
 1355            DJNZ    A_1348          ;inaczej powtórz w pętli 256 razy
 1357            JR      COMERR          ;skok bo się nie udało
 1359    L_94:   LD      A,E             ;weź młodsze
 1360            OR      16              ;ustaw d4
 1362            OUT     (239),A         ;wyślij do portu
 1364            LD      B,0             ;znowu powtarzamy 256 razy
 1366    A_1366: IN      A,(239)         ;odczytaj port
 1368            AND     C               ;maskuj bity
 1369            CP      80              ;czy d6 i d4 ustawione
 1371            JR      Z,L_97          ;tak to dalej
 1373            DJNZ    A_1366          ;inaczej powtórz w pętli
 1375            JR      COMERR          ;skok - nie udało się
 1377    L_97:   LD      A,D             ;starsze w D
 1378            OR      16              ;ustaw d4
 1380            OUT     (239),A         ;wyślij do stacji
 1382            LD      A,D             ;d4 teraz będzie zerem
 1383            OUT     (239),A         ;wyślij do stacji
 1385            LD      B,0             ;pętla 256
 1387    A_1387: IN      A,(239)         ;odczytaj ze stacji
 1389            AND     C               ;maskuj bity
 1390            JR      Z,L_99          ;jak wyzerowała to skocz
 1392            DJNZ    A_1387          ;inaczej powtórz jeszcze raz
 1394    COMERR: LD      A,0             ;wyślij informację do stacji
 1396            OUT     (239),A         ;że się nie udało
 1398            POP     BC              ;zdejmij ilość bajtów
 1399            POP     HL              ;to już koniec
 1400            JP      A_1233          ;--ERROR--
 1403    L_99:   POP     BC              ;wszystko ok, zdejmij ilość bajtów
 1404            INC     HL              ;następny bajt
 1405            DJNZ    SEND            ;wyślij
 1407            XOR     A               ;zeruj A bo już wszystkie
 1408            RET                     ;powróć

 1409    GETONE: LD      B,1             ;licznik bajtów
 1411    GET:    PUSH    BC              ;liczba bajtów na stos
 1412            LD      A,64            ;ustaw bit d6
 1414            OUT     (239),A         ;wyślij do stacji
 1416            LD      BC,80           ;B=256, C=%01010000
 1419    A_1419: IN      A,(239)         ;odczytaj z stacji
 1421            LD      E,A             ;odbierz pierwszy nibble
 1422            AND     C               ;maskuj bity
 1423            CP      16              ;czy d4 ustawiony
 1425            JR      Z,L_102         ;jeśli tak to dalej
 1427            DJNZ    A_1419          ;powtórz 256 razy
 1429            JR      COMERR          ;inaczej błąd
 1431    L_102:  LD      A,80            ;ustaw d6 i d4
 1433            OUT     (239),A         ;wyślij do stacji
 1435            LD      B,0             ;licznik
 1437            IN      A,(239)         ;wczytaj z portu
 1439            LD      D,A             ;odbierz drugi nibble
 1440            AND     C               ;czy d6 i d4 ustawione
 1441            JR      Z,L_104         ;tak, to dalej
 1443            DJNZ    -6              ;jak zawsze 256 razy
 1445            JR      COMERR          ;inaczej błąd
 1447    L_104:  OUT     (239),A         ;wyślij bajt
 1449            LD      A,E             ;pierwszy nibble do A
 1450            AND     %00001111       ;tylko 4 młodsze bity
 1452            LD      E,A             ;wpisz z powrotem
 1453            LD      A,D             ;drugi nibble
 1454            AND     %00001111       ;tylko 4 młodsze bity
 1456            RLCA                    ;przesuwamy o 4 bity
 1457            RLCA                    ;SWAP A
 1458            RLCA                    ;
 1459            RLCA                    ;
 1460            OR      E               ;łączymy nibble w bajt
 1461            LD      (HL),A          ;a wynik do pamięci
 1462            POP     BC              ;zdejmij ilość bajtów
 1463            ADD     A,C             ;
 1464            LD      C,A             ;--------------
 1465            INC     HL              ;następny bajt
 1466            DJNZ    GET             ;jak już wszystkie to
 1468            XOR     A               ;zeruj A
 1469            RET                     ;i wychodzimy bo już wszystkie

steev

  • *****
  • Wiadomości: 1366
  • Miejsce pobytu:
    inode 42
Odp: Interfejs M-397 naprawa
« Odpowiedź #74 dnia: 2024.03.08, 21:16:25 »
There are two bits used to sync transfer.
One bit, 6 (0x40) is used in both versions of firmware.
Second bit varies :
Bit 7 (0x80, mask 0xc0) in one, and bit 4 (0x10, mask 0x50) in another.

(TT3000 uses bits 4&5, mask 0x30)
Machines should work. People should think.