Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MCY7880 i układ mikroprocesorowy na polskich elementach

Atlantis86 24 Maj 2018 20:32 12006 252
  • #211
    Atlantis86
    Poziom 19  
    Tak swoją drogą, jeśli już mowa o interesujących procesorach retro...
    Ktoś z Was zetknął się może kiedyś z ciekawostką opisywaną w tym artykule? Radziecki CPU zgodny z architekturą minikomputera PDP-11. Czy biorąc pod uwagę zaszłości historyczne można liczyć na to, że uda się ten układ dostać gdzieś w Polsce? Czy raczej jedyna szansa to polowania na Ebay'u?
  • IGE-XAOIGE-XAO
  • #212
    maciej_333
    Poziom 34  
    Trochę czasu nic się tu nie działo. Ostatnio sporo bawiłem się z programowaniem 8042 i klawiatury na PS/2 w moim komputerze z 8080. Mam już odwzorowane całe zachowanie tej klawiatury, jakie jest w PC. Tzn. oprogramowałem SHIFT, ALT, CTRL, diody NUM LOCK, SCROLL LOCK, CAPS LOCK i zachowanie klawiatury, kiedy diody te są zapalone. Klawiatura numeryczna też działa prawidłowo. Dla niektórych klawiszy jak, kursory, F0-F12 itd. zrobiłem osobne funkcje do ich obsługi. Przygotowałem też program do obsługi polskich znaków, tworząc tym samym własny standard kodowania tych znaków. Jak na razie można pisać, wysyłając znaki do terminala po RS232. Oprogramowałem już DMA 8257 i wstępnie 8275. Mam już zatem zgłoszenia z 8275 do DMA i transfer danych. Analizowałem to 16-kanałowym analizatorem stanów logicznych. Brak jednak generatora znaków i całej reszty do formowania sygnału wizji.

    Znalazłem też dzisiaj rewelacyjną książkę o CP/M: Jonson-Laird A., The CP/M programmer's handbook, 1983.

    Przy okazji autor podaje ciekawe stwierdzenie w początkowej dedykacji: "Perfection is an English education, an American salary, and a Japanese wife.".
  • IGE-XAOIGE-XAO
  • #213
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #214
    maciej_333
    Poziom 34  
    nowyARM napisał:
    maciej_333 napisał:
    Przygotowałem też program do obsługi polskich znaków, tworząc tym samym własny standard kodowania tych znaków.

    Ja bym użył AmigaPL. Wyjątkowo dobrze przemyślany standard.

    Myślałem o tym. Przeglądałem wszystkie standardy kodowania, ale żaden się nie nadaje. Wszystkie standardy tego typu kodują polskie znaki z najstarszym bitem ustawionym tj. powyżej 0x80. Takie bajty w pamięci 8275 traktowałby jako specjalne znaki sterujące wyświetlaniem np. koniec linii/ramki ze stopem dla DMA, lub nie. Tutaj generator znaków może mieć tylko 128 znaków. Powciskałem zatem polskie znaki zamiast kodów niektórych znaków niedrukowanych, które nie są potrzebne dla CPM. Nie da się zatem łatwo przerobić łańcucha z małych liter na duże i odwrotnie z tymi znakami. Chyba tylko taki kompromis jest możliwy.

    Ponadto zrobiłem też 4 banki w generatorze znaków, jakie są sterowane prze linie GPA0 i GPA1 z 8275. Wstawię tam np. różne elementy semigrafiki.
  • #215
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #216
    maciej_333
    Poziom 34  
    nowyARM napisał:
    Ale nie ma się co przejmować, drukarka D-100 miał 64 znaki :-) Może nie każda wersja, ale pierwsza na TTL (szybsza, niż następczyni na MCY8080) tylko 64.

    Pewnie, że nie ma co się tym martwić. Chociaż program mam tak napisany, że da się go wyjątkowo łatwo przerobić na znaki diakrytyczne dowolnego języka pod warunkiem, że będzie ich tyle samo, albo mniej niż w języku polskim. Chyba język niemiecki by się załapał.
    Wstawiam w załączniku schemat, prawie całego komputera. Brakuje już tylko rozrysowanej synchronizacji dla wizji. W wielu rozwiązaniach robiono to na 74123. Ja zrobię synchronizację na TTL. Układów trochę więcej, ale nie będzie trzeba tego dostrajać z oscyloskopem. Pobawię się też w robienie pióra świetlnego.
  • #217
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #219
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #220
    maciej_333
    Poziom 34  
    nowyARM napisał:
    I pomyśleć, że to wszystko można zamknąć w jednym FPGA.

    Tak, ale nie takie są założenia projektu. Ma powstać komputer zbliżony do epoki, ale z zachowaniem zdrowego rozsądku. Stąd stosowanie dużych i współczesnych pamięci RAM i sporego EPROM. Jest też 8042, jako kompromis. Nie chciało mi się robić własnej klawiatury na 8279.

    nowyARM napisał:
    Masz jakieś doświadczenia z 8251? Podobno jest jakiś bug z inicjalizacją, którą można zrbić raz po włączeniu zasilania.

    Mam oprogramowany tak 8251, jak i 8253 (buadrate dla 8251). Bawiłem się odpowiednikiem polskim MCY7851, radzieckim, jaki i D8251 (NEC). Układy działają normalnie, ale po każdym ładowaniu programu do symulatora EPROM wciskam RESET na płycie. Nie próbowałem potem zmieniać raz ustalonej konfiguracji. Myślałem też o 16C550. Układ jest fajny, ma kolejkę itd, ale byłby zbyt mało retro. Co ciekawe 16C550 jest zaimplementowany w strukturze współczesnego wielordzeniowego procesora DSP TMS320C6678.
  • #221
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #222
    maciej_333
    Poziom 34  
    Udało mi się w końcu uruchomić 8275. Mam zatem CRT. Żeby było ciekawiej podstawiłem zamiast 8257 odpowiednik radziecki KP580ИK57. Przynajmniej w podstawowej konfiguracji działa poprawnie. Chociaż ich układy to nie są ścisłe odpowiedniki. Bardzo ciekawie to wygląda we współpracy z 8275 produkcji Intel.

    Synchronizację zrobiłem jednak na 74123. Pozwala to w łatwy sposób przesuwać obraz poprzez zmianę punktu początkowego impulsów synchronizacji. Jednak i tak coś mi ucina z każdej strony. Będę musiał trochę zmienić zależności czasowe i ograniczyć ilość wierszy i znaków na wiersz. Obecny tryb tekstowy to 37x63 (37 wierszy, 63 znaki na wiersz). Znak jest wykonany w matrycy 8x8. W takiej konfiguracji nawet na telewizorze 24" znaki są dosyć małe. Zmiana szerokości znaku nawet nie jest aż taka uciążliwa, gorzej z wysokością. Inny problem to szybkość wtórnika na T2. Różne pojemności powodują nieco nierównomierne świecenie znaków i trochę nieostry obraz. Poziomy napięć na wyjściu przetwornika C/A są takie sobie. Poziom czerni ma trochę za dużą wartość. Różnica poziomów dla znaku szarego i rozjaśnionego jest niewielka.

    Z układem miałem trochę kłopotów. Nie zwróciłem uwagi, że 7402 ma inne wyprowadzenia niż np. 7400. Inny kłopot był z synchronizacją. Nie miałem zanegowanych tych impulsów. Rozwiązałem to poprzez dołączenie wejścia bramki EXOR U31B do wyjścia prostego U29B.

    Pobór prądu z samego zasilacza +5 V to aktualnie 1,6 A. Jeśli zastąpić symulator EPROM pamięcią EPROM, to jest to raptem 1,4 A.

    Dla zainteresowanych wstawiam schemat i zdjęcia.

    Widok płytki:
    MCY7880 i układ mikroprocesorowy na polskich elementach

    Ekran telewizora:
    MCY7880 i układ mikroprocesorowy na polskich elementach

    Następny etap to uruchomienie na tym CPM i stacji dyskietek. Mam już całkiem fajny kontroler GM82C765B w obudowie DIP40.

    EDIT
    Pobawiłem się z tym trochę i rozwiązałem dotychczasowe problemy. Rozbudowałem też generator znaków i sprawdziłem już pełne możliwości 8275. Mam już też obsługę kreślenia różnych znaków, łączników itd., czyli Character Attribute Code. Nawet z tak prostym układem można osiągnąć ciekawe efekty. Pobawiłem się też z semigafiką. Załączam zdjęcie obrazu. Na lepszym telewizorze (nawet 14") uzyskuje się znacznie wyraźniejszy obraz.
    MCY7880 i układ mikroprocesorowy na polskich elementach
  • #223
    CHOPIN66
    Poziom 12  
    Mógł by kolega wrzucić jeszcze raz tego pdf-a? U mnie wyświetlają się tylko dwa układy w lewym dolnym rogu schematu. A poza tym wyszło super. Oby więcej takich projektów.

    Moderowany przez Marek_Skalski:

    Usunąłem zbędny cytat w postaci całości poprzedniego postu.

  • #224
    maciej_333
    Poziom 34  
    U mnie wyświetla się ten plik poprawnie. Wstawiam aktualny schemat w *.png i *.pdf. Niestety w *.png nie jest on specjalnie czytelny.

    Tym razem dodałem GM82C765B, czyli kontroler FDD. Jak dotąd zdążyłem odczytać tylko status z tego układu. Właśnie zwykła dyskietka 3,5" z PC ma tu pracować jako pamięć masowa. Ponadto dodałem też generację bardzo prostych dźwięków za pomocą 8253. Ogólnie aplikacja 8275 jest trochę inna niż w literaturze. Zamiast stosować dodatkowy bufor trójstanowy i parę bramek do wyłączania generatora znaków przy układzie wytwarzania znaków atrybutowych zwiększyłem pamięć generatora. Tym samym znaki te to dodatkowe banki w generatorze. Układ jest znacznie prostszy, a dziś nie ma to znaczenia, bo i tak o pojemną pamięć EPROM można się potknąć na ulicy.
  • #225
    pgru2
    Poziom 8  
    Świetny projekt. Gratuluję. Jak oceniasz trudność polutowania całości? Zastanawiam się czy z moimi niewielkimi umiejętnościami lutowania mógłbym samemu polutować ten projekt i wykorzystać te procesory? Jeśli wymyśliłeś własny format kodowania PL-znaków, to może warto go dodać/zgłosić do konwertera Gżegżółka. Jeśli mogę coś zaproponować to może warto byś wymyślił jakąś nazwę dla tego komputera, może związaną ze 100 leciem Niepodległości Polski?
  • #226
    maciej_333
    Poziom 34  
    pgru2 napisał:
    Świetny projekt. Gratuluję. Jak oceniasz trudność polutowania całości? Zastanawiam się czy z moimi niewielkimi umiejętnościami lutowania mógłbym samemu polutować ten projekt i wykorzystać te procesory? Jeśli wymyśliłeś własny format kodowania PL-znaków, to może warto go dodać/zgłosić do konwertera Gżegżółka. Jeśli mogę coś zaproponować to może warto byś wymyślił jakąś nazwę dla tego komputera, może związaną ze 100 leciem Niepodległości Polski?

    Dziękuję za uznanie. Niektóre rzeczy nie są trudne w wymyśleniu. Właściwie każdy może stworzyć własny system kodowania polskich znaków, funkcję okna dla FFT, albo modulację delta itd. Tylko takie "nowości" nie wiele wnoszą. Niestandardowe kodowanie znaków diakrytycznych to akurat tu po prostu konieczność z uwagi na ograniczenia 8275.

    Nazwę komputera mam już wmyśloną. Początkowo chciałem nazwać go Feniks, bo ten odradzał się z popiołów. Komputer powstaje w dużej mierze ze złomu. Po przeczytaniu powieści Mary Shelley "Frankenstein" uznałem, że ta nazwa będzie lepsza. Po załadowaniu systemu CPM zmierzam wstawić jego podobiznę z odpowiednio dobranych znaków z przepastnych banków mojego generatora znaków. Chodzi tu już nie o opis książkowy, a raczej kreację Borisa Karloffa z 1931.

    Pobawiłem się też bardziej GM82C765B. Mogę już ustawić głowicę na cylinder 0, i potem na dowolnie wybrany z określonej strony dysku. Odczytywałem też parę innych rzeczy, jak rozmiar sektora. Teraz muszę się zabrać za odczyt danych z sektora i obsługę tego przez DMA.

    Możesz spróbować polutować taki układ, jak masz ochotę. Wychodzi ponad 40 układów i jakieś 40 m kynaru. W zasadzie to nie jest takie trudne, ale wymaga trochę staranności i uwagi, by nie popełnić błędów. Poprawnie zmontowany komputer uruchomi się oczywiście od razu. Jak chcesz się pobawić, to zacznij już zbierać układy. Nie wszystkie tak łatwo kupić. Za jakiś czas (kilka miesięcy) powinienem już mieć wersję ostateczną z uruchomionym CPM.
  • #227
    pgru2
    Poziom 8  
    Czy mógłbyś dodać jako drugą opcję/wersję z Feniksem?
  • #228
    maciej_333
    Poziom 34  
    pgru2 napisał:
    Czy mógłbyś dodać jako drugą opcję/wersję z Feniksem?

    Będę miał to na uwadze, ale spodziewałbym się ukończenia projektu pewnie za kilka miesięcy. Z drugiej strony stwór stworzony przez Wiktora Frankensteina nie jest wg książki w pełni postacią negatywną. W rzeczywistości stwór, który faktycznie w powieści nie ma imienia był początkowo dobry, ale brak akceptacji przez ludzi i odrzucenie przez Wiktora uczyniły go złym.
  • #229
    maciej_333
    Poziom 34  
    Nie wiem ile osób jeszcze tu zagląda, ale chciałbym zaprezentować ostatnie wyniki moich prac. Udało już mi się uruchomić kontroler stacji dyskietek. Obecnie jestem w stanie odczytać i zapisać sektor w danym cylindrze po danej stronie dyskietki. Dane do i z kontrolera FDC przesyłane są przez DMA. Obsługuję zatem zwykłe dyskietki 3,5 " za pomocą 8080. Nie znalazłem współczesnych komputerów RETRO z taką funkcją na 8080. Są jednak takie przykłady z Z80.

    Pobawiłem się też już dosyć dawno w pisanie na ekranie telewizora. Zrobiłem zatem coś jakby prostą konsolę. Poniższe zdjęcie dotyczy obrazu, jaki powstał z bezpośredniego wystukania tekstu na klawiaturze rozwijanego komputera.
    MCY7880 i układ mikroprocesorowy na polskich elementach

    Obecnie powoli zaczynam integrować mój kod z CPM.
  • #230
    pgru2
    Poziom 8  
    Ja zaglądam :-)
    W jakim formacie będą dyskietki? Jeśli to będzie format własny komputera - czy będzie jakieś narzędzie do wgrywania plików, na Linuxa?
    Ładnie to wygląda na zdjęciu. Powodzenia z CPMem.
  • #231
    maciej_333
    Poziom 34  
    pgru2 napisał:
    Ja zaglądam :-)
    W jakim formacie będą dyskietki? Jeśli to będzie format własny komputera - czy będzie jakieś narzędzie do wgrywania plików, na Linuxa?
    Ładnie to wygląda na zdjęciu. Powodzenia z CPMem.

    Aktualnie do testów mam zwykłe dyskietki, formatowane pod Windows. Jest tam zatem FAT12. W takiej sytuacji mamy sektory po 512 B na każdy z 80 cylindrów dla każdej ze stron. Taki jest też rozmiar jednostki alokacji. Początkowo chciałem sformatować dyskietkę z sektorami 128 B, ale w MFM (podwójna gęstość zapisu) nie ma takiej możliwości z moim kontrolerem. Pozostanę zatem z sektorem 512 B i taką też jednostką alokacji. Utrudni to jednak zapis danych przez CPM, bo ten zapisuje dane w porcjach 128 B. Jest to jednak ułatwienie przy zapisie na PC. Sam format zapisu będzie zgodny z CPM. Nie mam ochoty tak przerabiać BDOS, by dopasować go do obsługi FAT12. Raczej będzie trzeba przesyłać dane po RS232, lub napisać własny program. Jednak czy da się wykorzystując stację dyskietek na USB dowolnie manipulować z cylindrami i sektorami ? Może jakoś uda się to odczytać programem ANADISK, pod DOS.
  • #232
    pgru2
    Poziom 8  
    Próbowałem nagrać na stacji USB dyskietkę na Elwro 800 JR, używając CPC Disk XP i opcji dla stacji USB. Przy 1 z formatów(wybór jako formatu IBM Single Size 40 tracks) próbował nagrać pierwszy sektor ale nie dało się dalej. Być może to problem ze stacją dyskietek na USB - jedna z najtańszych nowych, przy zwykłym nagrywaniu plików potrafi mieć sporo błędów. Tym bardziej, że przy innych formatach po prostu przeskakiwała dalej. Być może rawrite2 sobie poradzi(rawrite2 na zwykłe stacje, nie USB dobrze nagrywa pliki .img dla Elwro 800 JR). Co do oprogramowania to chyba dla Elwro 804 JR PC było chyba przynajmniej reklamowane, takie które potrafiło pod CP/J(zgodny z CP/M) czytać dyskietki IBMa(DOSowe).
  • #233
    BlueDraco
    Specjalista - Mikrokontrolery
    Walka z dyskietkami godna uznania - podziwiam, ale jeśli chodzi o uzyskanie działającego komputera, łatwiej byłoby użyć np. karty SD. BIOS dla CP/M - to marne kilkadziesiąt..kilkaset linii kodu asemblerowego. Dużo łatwiej napisać obsługę SD niż sterownika dyskietek (jeszcze łatwiej CF) - gotowe rozwiązania można znaleźć w sieci.
    Przy współczesnych pojemnościach nośników można też sobie pozwolić na marnowanie pojemności czy to SD, czy dyskietki - używając tylko pierwszych128 bajtów każdego sektora 512 B - pewnie tak jest łatwiej, niż mordować PC sektorami po 128 bajtów. Byś może łatwiej będzie obsłużyć taki format pod CP/M, kopiując parametry formatu z PC.
    Istnieją też sposoby (opisane np. na z80.eu) na zapisanie zawartości dyskietki na komputerze docelowym bez użycia PC, poprzez transmisję plików do pamięci przez terminal i zapis z pamięci na dyskietkę. W takis sposób powstał obraz dyskietki dla mojego komputerka z Z80 i 8085.

    Właśnie zacząłem montaż wersji SDC_One z 8080, a dokładniej - z MCY7880 i UCY74S424. ;) Jak coś ruszy - wrzucę obrazki i ekrany, ale to jeszcze parę tygodni. Zaczynam od uruchomienia i testów zasilania.
  • #234
    maciej_333
    Poziom 34  
    BlueDraco napisał:
    Walka z dyskietkami godna uznania - podziwiam, ale jeśli chodzi o uzyskanie działającego komputera, łatwiej byłoby użyć np. karty SD.

    Walka z dyskietkami była naprawdę ciekawa. Zresztą nie ja pierwszy robię coś takiego dla komputera retro. Jeżeli ktoś myśli, że uruchomienie stacji dyskietek jest proste, to jest w błędzie. Sterownik stacji to już obecnie masa kodu, a to i tak dopiero początek. Do tego dochodzi tzw. blocking/deblocking dla CPM. CPM jest do tego przygotowany. Ogólnie idea jest taka, że BIOS ma własny bufor o rozmiarze sektora fizycznego. Potem CPM zapisuje swoje sektory 128 B przez BIOS. Dopiero, kiedy bufor się wypełni dochodzi do zapisu fizycznego na dyskietkę. Podobnie z odczytem. Odczytywany jest fizyczny sektor, zaś do CPM kopiuje się oczekiwany przez niego sektor logiczny.

    BlueDraco napisał:
    BIOS dla CP/M - to marne kilkadziesiąt..kilkaset linii kodu asemblerowego.

    W moim przypadku jest to jak dotąd jakieś 1500 linii kodu. Spokojnie przekroczę 4 kB dla BIOS. Już sama obsługa klawiatury przez 8042 w taki sposób, by jej zachowanie było zgodne z PC to jakieś 1,5 kB. Do tego trzeba sterowników do masy innych układów. Ogólnie "trochę" przesadziłem ze stopniem skomplikowania tego komputera.

    Miałeś rację kolego BlueDraco, by mieć w tym jakiś umiar. Rozbudowa systemu wbudowanego może iść praktycznie w nieskończoność, a mam jeszcze masę pomysłów. Na razie jest ponad 40 różnych układów.

    BlueDraco napisał:
    Dużo łatwiej napisać obsługę SD niż sterownika dyskietek (jeszcze łatwiej CF) - gotowe rozwiązania można znaleźć w sieci.

    Tak, można to zrobić. Pisałem już gdzieś o tym wcześniej. Nie ma wielkiego problemu, by np. z 8255 zrobić obsługę karty SDHC w trybie SPI. Wielkiej częstotliwości szyny nie będzie, ale nie o to chodzi. Tyle, że to nie jest zbyt ciekawe. Obecnie myślę nawet na dołączeniu jeszcze stacji 5,25". Stacje 8" są niestety dosyć drogie. Sprzęt mam przygotowany, bo piny na płycie są zgodne z PC.
  • #235
    pgru2
    Poziom 8  
    Jeśli kogoś interesuje moje zdanie - to uważam, że stacja dyskietek jak najbardziej pasuje do takiego projektu. Oczywiście nie twierdzę, że napisanie obsługi jest łatwe - z czegoś wynikały także spore koszty stacji z epoki czy duża liczba formatów zwłaszcza 5,25 .

    Dodano po 1 [godziny] 42 [minuty]:

    Nie wiem czy dobrze zrobiłem listę elementów(będę szukał tych elementów) - ale na podstawie załączonego w tym wątku pdfa projekt chyba wymaga przynajmniej:
    3X 8212
    8228
    8224
    M27C256
    6264
    TLC551001
    74154
    62256
    i8259
    8257
    8212
    8251
    i8253
    GM82C765B
    8042
    SN75188
    SN75189
    4X74123
    8275
    M27C128
    74166
    74163
    74175
    ----------

    9X SN7404
    2X SN7400
    3X 7410
    6X SN740D
    4X SN74LS04
    SN7410
    2X SN7486
    2X SN7402
    3X SN7409
  • #236
    maciej_333
    Poziom 34  
    Lista układów może być dobra. Mogę wygenerować właściwie BOM z programu Kicad. Jednak nie widzę w tym wielkiego sensu. Muszę jeszcze wprowadzić niezbędne poprawki. Zwróć uwagę, że np. SN7400, to po prostu 7400. Może więc to być np. UCY7400. Jeżeli chcesz wykonać taki układ, to zacznij od szukania układów serii 82XX i 80XX. Tzn. będą to np. 8212, 8259, 8257, 8275, 8080 itd. Trudniej będzie zdobyć 8042. Będziesz musiał poszukać jakiejś starej płyty głównej od PC. Poza tym w układzie jest np. tylko jeden 74LS04. Zwróć uwagę, że układ ten zawiera 6 bramek NOT. Stąd oznaczenia w stylu U36A, U36B itd. Podobnie jest z innymi bramkami.

    Okazuje się, że przerabianie CPM, by oddzielić program od danych jest złożone. Wprawdzie taki system po modyfikacjach i inicjalizacji poszczególnych zmiennych działa, ale jest kłopotliwy. Program załadowany do TPA nie ma możliwości nadpisania CCP.

    Aktualnie zastosowałem inne rozwiązanie. Dopasowałem kod CCP i BDOS, by mogły się kompilować razem z BIOS'em w jednym pliku, oraz by wszystko było zgodne z moim asemblerem. Za pomocą ORG dobrałem wszystko tak, by poszczególne moduły były w odpowiednich adresach. CPM został ustawiony w RAM. W trakcie ładowania programu do symulatora EPROM kod CPM jest przesuwany w górny obszar EPROM. Potem normalnie startuje BIOS i kopiuje kod CPM do RAM. W ten sposób wszystko jest na swoim miejscu, tak jak to było po kompilacji. Nie mam zamiaru bootować CPM z dyskietki, bo jest to za wolne rozwiązanie.

    Okazało się, że muszę przerobić jednak sposób w jaki wybierane są banki dla RAM. Nie działa to w pełni zgodnie z moimi oczekiwaniami dla DMA. Skoro CPM nie będzie się wykonywał bezpośrednio z EPROM, to trzeba zmniejszyć obszar EPROM do 8 kB i zrobić 4 banki. Ponadto trzeba też będzie dołożyć kolejne 8kB RAM w to miejsce.
  • #237
    BlueDraco
    Specjalista - Mikrokontrolery
    Zrób pełne 64 KiB RAM (np. połowa układu 128 KiB) i EPROM o dowolnej pojemności odwzorowany w całą przestrzeń adresową. Przy starcie RAM niech będzie tylko do zapisu, a odczyt zawsze z ROM. Zapis do jakiegoś portu wyjściowego (jeden przerzutnik) niech wyłącza odczyt z ROM i włącza odczyt z RAM. W ten sposób bez składania RAM z paru układów i choinki bramek masz możliwość skopiowania dowolnych fragmentów ROM w dowolne miejsca RAM, a potem pełne 64 KiB RAM do dyspozycji.
  • #238
    maciej_333
    Poziom 34  
    BlueDraco napisał:
    Zrób pełne 64 KiB RAM (np. połowa układu 128 KiB) i EPROM o dowolnej pojemności odwzorowany w całą przestrzeń adresową. Przy starcie RAM niech będzie tylko do zapisu, a odczyt zawsze z ROM. Zapis do jakiegoś portu wyjściowego (jeden przerzutnik) niech wyłącza odczyt z ROM i włącza odczyt z RAM. W ten sposób bez składania RAM z paru układów i choinki bramek masz możliwość skopiowania dowolnych fragmentów ROM w dowolne miejsca RAM, a potem pełne 64 KiB RAM do dyspozycji.

    Gdybym projektował ten układ jeszcze raz, to faktycznie tak bym zrobił. Teraz będzie to raczej zbyt wiele zmian w układzie. Jednak oczywiście rozważę to. Jest to bardzo dobre i elastyczne rozwiązanie, pasujące do bardzo różnych konfiguracji systemu.

    Zresztą idea odnośnie pamięci i banków była taka, by pamięć obrazu stanowiła osobny bank pamięci. Dzięki temu mamy większe TPA o jakieś 5 kB i istnieje możliwość łatwego przełączania pomiędzy kilkoma załadowanymi obrazami. DMA ma samo przestawiać bank w chwili potrzeby przesłania znaków do 8275. Jednak nie działa to idealnie. 8275 zgłasza DRQ kiedy mu się podoba, co przeszkadza w transmisji w innym kanale. Trzeba było wykorzystać do tego sygnał DACK i AEN - nie zaś AEN i DRQ.

    Odnośnie CPM, to nie chcę go uruchamiać bezpośrednio z RAM, bo obawiam się pewnej kwestii. Widać, że CPM modyfikuje czasem tablice adresów różnych funkcji. Jednak kto wie, czy nie ma tam gdzieś samo modyfikującego się kodu. Taki wymyślny program już też gdzieś widziałem.
  • #239
    BlueDraco
    Specjalista - Mikrokontrolery
    CP/M jest napisany do działania z RAM i bez sporych przeróbek nie może działać z ROM, a po tych przeróbkach to już nie jest CP/M, bo ma niezgodną mapę pamięci. Kod i dane w CP/M są równo wymieszane i podczas pracy są modyfikowane komórki pamięci "w środku" kodu systemu, więc raczej nie masz wyjścia... ;) Jest gdzieś w sieci dostępny system przerobiony z CP/M do umieszczenia w ROM.
  • #240
    maciej_333
    Poziom 34  
    BlueDraco napisał:
    CP/M jest napisany do działania z RAM i bez sporych przeróbek nie może działać z ROM, a po tych przeróbkach to już nie jest CP/M, bo ma niezgodną mapę pamięci. Kod i dane w CP/M są równo wymieszane i podczas pracy są modyfikowane komórki pamięci "w środku" kodu systemu, więc raczej nie masz wyjścia... ;) Jest gdzieś w sieci dostępny system przerobiony z CP/M do umieszczenia w ROM.

    Bawiłem się w ten sposób poprzez oddzielenie kodu od danych. Potem przed startem inicjalizowałem komórki RAM, tak jak to było oryginalnie w CPM. System nawet się uruchomił. Były zgłoszenia do funkcji BIOS związanych z dyskiem. Zatem system próbował odczytać tablicę alokacji. Jednak nie jest to zbyt dobre rozwiązanie. Należy pozostać przy RAM.


    Nie wiesz może jak z kontrolerami WD37C65, lub GM82C765 zrobić formatowanie poszczególnych cylindrów ? Napisałem stosowny program, przygotowałem pattern z nagłówkami dla poszczególnych sektorów (C, H, R, N), który jest przesyłany do kontrolera przez DMA, ale zawiesza się to po sformatowaniu 3-4 cylindrów. Po prostu nie pojawia się przerwanie po zakończeniu formatowania. Próbowałem różnych rzeczy, dodawałem opóźnienie itd. Nie istotne od jakiego cylindra zacząć. Po dłuższym oczekiwaniu na przerwanie rzędu minut przestaje obracać się dysk, albo robi to z przerwami...

    Jeszcze inne pytanie dotyczy formatowania FAT12. Czy formatując tak dyskietkę pod Windows już jest zrobiony sprzętowo przekos (skew) dla poszczególnych sektorów ?

    Inna sprawa, to mogę odczytać tylko sektory z numerami od 1 do 17. Przecież w FAT12 mamy 18 sektorów na cylinder. Próbowałem różnych komend z różnymi ustawieniami, ale wydaje się jakby tych sektorów nie było.