eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaPortowanie CP/M
Ilość wypowiedzi w tym wątku: 19

  • 11. Data: 2024-07-09 12:26:10
    Temat: Re: Portowanie CP/M
    Od: Atlantis <m...@w...pl>

    On 9.07.2024 11:21, J.F wrote:

    > Postęp duży, ale - prawidłowo odtwarzasz rejestry po przerwaniu?

    Wydaje mi się, że tak. Niemniej patrząc w kod teraz uświadomiłem sobie
    jeszcze jedną rzecz, która naprowadziła mnie na trop możliwej przyczyny.
    Kilka źródeł w Internecie mocno zalecało wydzielenie osobnego stosu dla
    BIOS-a i podmienianie go przynajmniej w tych procedurach, które będą z
    niego najbardziej intensywnie korzystały. Powodem takiego stanu rzeczy
    jest fakt, że BDOS posiada stosunkowo mały stos.
    I teraz jeszcze raz rzuciłem okiem na procedury obsługi przerwań
    napisane dobrych parę lat temu. Widzę, że nawet te obecnie
    niezaimplementowane są "szablonami" w których bezsensownie jest cały
    kontekst. Pewnie parę lat temu przygotowałem je pod uzupełnienie treścią
    i nigdy tego nie zrobiłem. W czasach TinyBasic-a nie miało to znaczenia,
    bo używałem pojedynczego, sporego stosu.
    Teraz jednak BDOS podmienia stos na swój własny, o ograniczonym
    rozmiarze. Istnieje więc spora szansa, że odpalające się przerwania
    kumulują się i stos zostaje przepełniony.

    Jeśli mam rację, to wyłączanie przerwań zaraz po wejściu do procedur
    BIOS-a w pewnym stopniu chroniło także stos BDOS-a (bo do momentu
    podmiany stosów ciągle operujemy na starym). Okienko czasowe w którym
    przerwanie mogło spowodować nadpisanie pamięci nieco się zmniejszało.
    Niemniej przerwania odpalające się poza BIOS-em ciągle mogą spowodować
    problem. Mam nadzieję, że optymalizacja wykorzystania stosu w
    procedurach obsługi przerwań wystarczy do rozwiązania tego problemu.

    > Pamieci video tam nie masz, to jest RS na terminal ?

    Pamięć wideo jest, ale w postaci osobnego układu na osobnej magistrali.
    TMS9918 posiada swój własny VRAM, którego nie współdzieli z systemem, a
    z procesorem komunikuje się przez kilka rejestrów w przestrzeni IO.
    RS w tej chwili służy tylko do debugowania. Za systemowy terminal robi
    telewizor CRT oraz klawiatura od peceta, obsługiwana przez 8242.


  • 12. Data: 2024-07-09 22:57:20
    Temat: Re: Portowanie CP/M
    Od: Atlantis <m...@w...pl>

    No i hipoteza się potwierdziła. Wyłączyłem przerwania zupełnie przy
    inicjacji CPM. Potrzebowałem ich tak naprawdę tylko do obsługi
    klawiatury, więc przepisanie procedur jej obsługi na pooling rozwiązało
    problem. Teraz CP/M zaczął działać normalnie - DIR jest printowany w
    całości, podobnie jak zawartość plików w przypadku polecenia TYPE.
    Nie wszystko jeszcze działa poprawnie - muszę dopisać procedurę WRITE
    oraz wprowadzić kilka optymalizacji, ale teraz przynajmniej wiem, że
    system działa.


  • 13. Data: 2024-07-10 07:28:47
    Temat: Re: Portowanie CP/M
    Od: "J.F" <j...@p...onet.pl>

    On Tue, 9 Jul 2024 22:57:20 +0200, Atlantis wrote:
    > No i hipoteza się potwierdziła. Wyłączyłem przerwania zupełnie przy
    > inicjacji CPM. Potrzebowałem ich tak naprawdę tylko do obsługi
    > klawiatury, więc przepisanie procedur jej obsługi na pooling rozwiązało
    > problem. Teraz CP/M zaczął działać normalnie - DIR jest printowany w
    > całości, podobnie jak zawartość plików w przypadku polecenia TYPE.
    > Nie wszystko jeszcze działa poprawnie - muszę dopisać procedurę WRITE
    > oraz wprowadzić kilka optymalizacji, ale teraz przynajmniej wiem, że
    > system działa.

    No to teraz ciekawe - zmieniales jakies rejestry w przerwaniu,
    czy stos cos zajezdzał.

    Jak czytam, ze CCP startuje program ze stosem na 8 słów ...
    troche mało. Co prawda program powinien zaraz ustawic swój stos, ale
    nadal cos mało.

    A swoja droga - nie pamietam, ale zeby przerwania działaly, to BIOS
    musi ustawic odpowiednie instrukcje pod adresem 56 i ewentualnie
    innymi ... wpisujesz ?

    J.





  • 14. Data: 2024-07-10 09:03:24
    Temat: Re: Portowanie CP/M
    Od: Atlantis <m...@w...pl>

    On 10.07.2024 07:28, J.F wrote:

    > No to teraz ciekawe - zmieniales jakies rejestry w przerwaniu,
    > czy stos cos zajezdzał.

    Stos. Konkretnie stos BDOS/CCP. System został zaprojektowany w czasach,
    gdy RAM był drogi, więc pamięć była używana oszczędnie. Kilka źródeł
    ostrzegało, że jego rozmiar jest niewielki i pisząc BIOS warto
    podmieniać SP na osobny, wydzielony obszar pamięci. Nie wziąłem pod
    uwagę, że przerwania mogą się odpalać w dowolnym momencie, w pewnych
    sytuacjach prowadząc do przepełnienia stosu BDOS/CCP i nadpisania pamięci.


    > Jak czytam, ze CCP startuje program ze stosem na 8 słów ...
    > troche mało. Co prawda program powinien zaraz ustawic swój stos, ale
    > nadal cos mało.

    Podejrzewam, że Garry Kildall mógł zwyczajnie nie wziąć pod uwagę
    możliwości, że w tle będą działały przerwania.


    > A swoja droga - nie pamietam, ale zeby przerwania działaly, to BIOS
    > musi ustawic odpowiednie instrukcje pod adresem 56 i ewentualnie
    > innymi ... wpisujesz ?

    To chyba chodzi o przerwania wywoływane instrukcjami RST. Pozwalają one
    za pomocą szybkich (jednobajtowych) instrukcji wykonać skok pod adres
    zapisany właśnie pod tymi adresami.
    Ja mam przerwania zrealizowane za pomocą 8259, gdzie wektory (i same
    procedury obsługi) przerwań są na stałe zaszyte w EPROM-ie, w górnej
    części przestrzeni adresowej.

    Trochę szkoda, bo zależało mi na przerwaniach timera i RTC pracujących w
    tle, jednak obejdę się bez tego.


  • 15. Data: 2024-07-11 09:31:54
    Temat: Re: Portowanie CP/M
    Od: "J.F" <j...@p...onet.pl>

    On Wed, 10 Jul 2024 09:03:24 +0200, Atlantis wrote:
    > On 10.07.2024 07:28, J.F wrote:
    >> Jak czytam, ze CCP startuje program ze stosem na 8 słów ...
    >> troche mało. Co prawda program powinien zaraz ustawic swój stos, ale
    >> nadal cos mało.
    >
    > Podejrzewam, że Garry Kildall mógł zwyczajnie nie wziąć pod uwagę
    > możliwości, że w tle będą działały przerwania.

    Być może, ale czy nie troche dziwne ?
    W zasadzie, jednozadaniowy komputer osobisty ... no ale jak z
    terminalem po RS232, to w zasadzie musi mieć przerwania ... prawie
    musi.

    >> A swoja droga - nie pamietam, ale zeby przerwania działaly, to BIOS
    >> musi ustawic odpowiednie instrukcje pod adresem 56 i ewentualnie
    >> innymi ... wpisujesz ?
    >
    > To chyba chodzi o przerwania wywoływane instrukcjami RST. Pozwalają one
    > za pomocą szybkich (jednobajtowych) instrukcji wykonać skok pod adres
    > zapisany właśnie pod tymi adresami.

    Tak, tylko w prawdziwym przerwaniu te rozkazy są generowane
    zewnętrznie.

    > Ja mam przerwania zrealizowane za pomocą 8259, gdzie wektory (i same
    > procedury obsługi) przerwań są na stałe zaszyte w EPROM-ie, w górnej
    > części przestrzeni adresowej.

    Hm, jak to zrobiłes?

    Wiki cos mówi, ze on z 8085 może wspólpracować, ale o 8080 to google
    milczy.

    > Trochę szkoda, bo zależało mi na przerwaniach timera i RTC pracujących w
    > tle, jednak obejdę się bez tego.

    Alez możesz, tylko trzeba zmniejszyc zużycie stosu/założyć własny.
    Albo ... źródla CP/M jak widzę są dostępne, przekompilować z wiekszym
    stosem.

    J.


  • 16. Data: 2024-07-11 09:59:20
    Temat: Re: Portowanie CP/M
    Od: "J.F" <j...@p...onet.pl>

    On Thu, 11 Jul 2024 09:31:54 +0200, J.F wrote:
    > On Wed, 10 Jul 2024 09:03:24 +0200, Atlantis wrote:
    >> Ja mam przerwania zrealizowane za pomocą 8259, gdzie wektory (i same
    >> procedury obsługi) przerwań są na stałe zaszyte w EPROM-ie, w górnej
    >> części przestrzeni adresowej.
    >
    > Hm, jak to zrobiłes?
    >
    > Wiki cos mówi, ze on z 8085 może wspólpracować, ale o 8080 to google
    > milczy.

    A, ok, doczytałem, 8259 wysyła instrukcje CALL z adresem.

    >> Trochę szkoda, bo zależało mi na przerwaniach timera i RTC pracujących w
    >> tle, jednak obejdę się bez tego.
    >
    > Alez możesz, tylko trzeba zmniejszyc zużycie stosu/założyć własny.

    > Albo ... źródla CP/M jak widzę są dostępne, przekompilować z wiekszym
    > stosem.
    >

    J.


  • 17. Data: 2024-07-12 19:14:46
    Temat: Re: Portowanie CP/M
    Od: Atlantis <m...@w...pl>

    On 11.07.2024 09:31, J.F wrote:

    > Być może, ale czy nie troche dziwne ?
    > W zasadzie, jednozadaniowy komputer osobisty ... no ale jak z
    > terminalem po RS232, to w zasadzie musi mieć przerwania ... prawie
    > musi.

    Większość projektów komputerków retro jakie widziałem i tak korzysta z
    poolingu.


    > Hm, jak to zrobiłes?

    Już dokładnie nie pamiętam. Chyba po prostu skopiowałem rozwiązanie ze
    schematu jakiegoś innego, przetestowanego projektu.


    > Wiki cos mówi, ze on z 8085 może wspólpracować, ale o 8080 to google
    > milczy.

    8080 i 8085 są niemal identyczne. Różnice sprowadzają się do połowy
    magistrali adresowej multipleksowanej liniami danych, braku konieczności
    korzystania z dodatkowych układów (generator sygnałów zegarowych +
    kontroler magistrali), obecności wejścia i wyjścia szeregowego (i
    związanych z nimi przerwań) oraz oczywiście zasilania pojedynczym
    napięciem 5V.


    > Alez możesz, tylko trzeba zmniejszyc zużycie stosu/założyć własny.
    > Albo ... źródla CP/M jak widzę są dostępne, przekompilować z wiekszym
    > stosem.

    Pewnie tak. Obawiam się jednak, że nie będzie to takie proste. Z tego co
    pamiętam sporo założeń związanych z działaniem systemu opiera się na
    tym, że określone elementy kodu (np. BIOS-u) znajdą się w określonych
    miejscach, w stosunku do innych elementów. Jeśli zacznę zmieniać rozmiar
    buforów umieszczonych wewnątrz BDOS-a, może mi się to wszystko rozjechać
    i bez przepisania większej części kodu nie będzie tak łatwo tego naprawić.


  • 18. Data: 2024-07-12 20:45:49
    Temat: Re: Portowanie CP/M
    Od: "J.F" <j...@p...onet.pl>

    On Fri, 12 Jul 2024 19:14:46 +0200, Atlantis wrote:
    > On 11.07.2024 09:31, J.F wrote:
    >> Alez możesz, tylko trzeba zmniejszyc zużycie stosu/założyć własny.
    >> Albo ... źródla CP/M jak widzę są dostępne, przekompilować z wiekszym
    >> stosem.
    >
    > Pewnie tak. Obawiam się jednak, że nie będzie to takie proste. Z tego co
    > pamiętam sporo założeń związanych z działaniem systemu opiera się na
    > tym, że określone elementy kodu (np. BIOS-u) znajdą się w określonych
    > miejscach, w stosunku do innych elementów. Jeśli zacznę zmieniać rozmiar
    > buforów umieszczonych wewnątrz BDOS-a, może mi się to wszystko rozjechać
    > i bez przepisania większej części kodu nie będzie tak łatwo tego naprawić.

    Nie chce mi się patrzeć do tych źródeł, ale jeśli w miarę przyzwoicie
    napisany, to nie powinno być większych problemów.

    A w dodatku ten stos możesz umieścic gdzies wysoko, oryginalne miejsce
    pozostawić, a zmienić tylko adresy ładujące.

    J.


  • 19. Data: 2024-07-13 07:59:47
    Temat: Re: Portowanie CP/M
    Od: Atlantis <m...@w...pl>

    Swoją drogą, ktoś może kojarzy do czego można wykorzystać to wejście i
    wyjście szeregowe w 8085? Da się na tym zrobić implementację np. UART-a,
    bez konieczności stosowania zewnętrznych układów? Jak wygląda w takim
    przypadku ustalanie baudrate-u?

strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: