Komputerek CP/M na Z80 - problem z uruchomieniem

Oscyloskop to Siglent SDS 1104X-E w wersji 100 MHz. Więc z takimi przebiegami raczej nie powinien mieć problemu. Zakładam, że pokazany sygnał jest wiarygodny.

Reply to
Atlantis
Loading thread data ...
2022-01-25 o 02:17 -0800, Dawid Rutkowski napisał:

Z pewnością nie na 386, raczej gdzieś w okolicach Pentium 200 MHz. A poprawione wersje biblioteki BGI krążą po internecie, bez trudu można znaleźć poprawkę egavga.bgi.

Tu nie chodziło o porządne pisanie programów, tylko o to, aby te programy działały szybko. Bo wołanie BIOSu to droga sprawa.

Mateusz

Reply to
Mateusz Viste

BTW, widziałem ostatnio że twój programik był gwiazdzą w LGR :-)

c.

Reply to
Cezar

wtorek, 25 stycznia 2022 o 11:31:57 UTC+1 Mateusz Viste napisał(a):

Hmm, i na 3GHz CPU z 4MB cache nie wyleci na błędzie? To ciekawe, ile by się na 386 uruchamiało ;>

Może rzeczywiście nie 386, bo tam turbo pascala miałem. pentium miałem 166MHz - i tam już chyba nie działało (a wtedy "jeszcze nie było internetu" ;). Ale być może nawet na poprzednim 5x86 133MHz też już nie.

Ale właśnie chodzi o to, że na CP/M z wołaniem BIOSu dawało radę. Chyba że ten BIOS PC tak fatalny, no ale aż tak? To nie dzisiejsze czasy, gdy program księgowy wymaga kilku MB cache, bo inaczej pętle opóźniające nie dają pracować (bo niby dlaczego na komputerze, na którym bez problemów działał "raks2000", nagle "raks sql" nie potrafił zrobić tego samego? na to mi nie odpowiedział ich "informatyk" - za to twierdził kategorycznie, że jeśli firebird miałby być na innym komputerze, to łącze musi być gigabit - 100mbit będzie za mało. Wniosek - program raksa jest cudowny, to ten firebird działa fatalnie, no ale czego się spodziewać po darmowym programie...). No i można też powiedzieć, że 8088 był jednak trochę szybszy niż 8080 czy Z80 z zegarami tamtego czasu, czyli poniżej 4MHZ, bo Z80H to jednak później niż 1981.

I dla ustalenia uwagi skupmy się na programach "biurowych", działających w tekście na MDA. Gry to inna para kaloszy (dla CP/M, z braku spójnej grafiki, też nie było zbyt wiele). W sopwitcha - mimo że się uruchamiał - nigdy jednak nie pograłem, nawet z wyłączonym turbo nie było szans - hmmm, nie próbowałem wyłączać zewnętrznego cache, ale to też pewnie by dużo nie pomogło.

Co go grafiki zaś to wciąż zadziwia, jak dobry był monitor do MDA i jakim super pomysłem był hercules (ciekawe, skąd brali pamięci - czy taki pomysł jak sir Sinclair, żeby brać w połowie uszkodzone - ech, szkoda, że nie wpadł na to, żeby dorobić bankowanie w standardzie i możliwość wymiany tych 32kB połówek na pełne 64kB - oraz uruchomienie CP/M - inna sprawa, że do dziś mnie zadziwia, że na spectrum można było uruchomić terminal dla CP/M na FDD3000 - bo co to za terminal w 32*24 znaki? używał tak ktoś? timex jakoś upychał 64*24 - ale jak to wyglądało na telewizorze?). Przecież to było w 1982 - i dawało 720*348 na 12-calowym monitorze. macintosh z mc68000 w 1984 miał 512*342 na 9 calach. No ale lepsze pomysły na wykorzystanie.

Reply to
Dawid Rutkowski

Byl i Cobol - przegladalem archiwa czasopism, sporo reklam na CP/M bylo.

formatting link
prosze - MS Cobol. Ale nie, reklamy chyba byly innej firmy.

P.S. Jaka fajna czcionka.

formatting link
rocznik 1984, czy 1985 powiedzmy ...

Na CP/M sie po prostu nie dalo inaczej - za duzy rozrzut sprzetu. Pod L/inuxem tez sie nie da inaczej - system nie pozwoli.

A na PC nie bylo innego wyjscia - za slaby ten system, trzeba bylo siegac do sprzetu. Z CP/M tez zreszta dramat, bo albo masz jakis porzadny terminal, albo jestes skazany na ED :-)

J.

Reply to
J.F
2022-01-25 o 03:15 -0800, Dawid Rutkowski napisał:

Przetestuj, daj znać. Sam jestem ciekaw. :)

O ile wiem - tyle samo. Choć przez lata pojawiły się różne rodzaje i sposoby poprawy tego problemu, nie wykluczam że niektóre są miej udane od innych. Moja przygoda z TP była relatywnie krótka, nie doktoryzowałem się.

Możliwe, że tak było. Na DX4 nie miałem tego problemu, pojawił się jakoś później, właśnie w okolicach 200 MHz, ale przyznaję, że nie testowałem pośrednich CPU. W każdym razie 386 był już bardzo daleko, i postrzegany wówczas już w kategoriach muzealnych.

Kwestia API... Na XT odświeżenie ekranu wymagało zawołania 2000x tego:

formatting link
było funkcji "pobierz cały ekran z bufora i wrzuć do hardware".

Programiści pisali więc bezpośrednio do VRAM, bo to było wielokrotnie szybsze. Raz, że można było zrzucić pełny ekran w czasie jednego VBLANK, a dwa że nie trzeba było korzystać z BIOSu który mógł być w dużo wolniejszej pamięci przy braku ROM shadowing.

Trzeba do tego dodać, że BIOS PC-klonów przez długi czas był nie do końca zgodny z PC... Co można stwierdzić po lekturze RBIL i ilości wyjątków przy różnych wywołaniach.

Reasumując - ludzie nie pisali kiepskich programów, po prostu robili co mogli aby te programy działały zadowalająco sprawnie mając do dyspozycji to, co było.

Mateusz

Reply to
Mateusz Viste

Po prostu nie bylo innego wyjscia - sprzet byl nieokreslony, zostawał BIOS/BDOS do wykorzystania.

Byl przede wszystkim wzorowany na tym z CP/M.

Jesli chodzi o funkcje ekranowe, to byl po prostu zbyt wolny i zbyt ograniczony - prosciej bylo zapisac wprost w pamieci ekranu.

Obsluga portow szeregowych - fatalna. Potrzebowales cos ambitniejszego, to trzeba bylo buforowac na przerwaniach - i caly bios na smietnik.

Potem zaczela sie moda na wielozadaniowosc, a tu sie okazuje, ze te funkcje nie są "reentant".

Troche szybszy, ale niewiele - postep w zegarach Z80 tez byl. Wiekszy zysk byl na architekturze - czy to wewnetrznej 16-bit, czy zewnetrznej magistrali.

IBM mial troche doswiadczenia w komputerach, terminalach i uzytkownikach.

Ale to juz nie IBM. Choc tak prawde mowiac ... udana karta graficzna to dopiero jakas SVGA :-)

Chyba juz nie bylo problemu.

Ktos widac uzywal. Pytanie do czego :-)

Zawsze to lepiej, nawet duzo lepiej.

A nie bylo wyjscia na monitor?

Pamietam Amstrada, z firmowym kolorowym monitorem.

Niestety, w trybie 640 wychodzily jakies dwa pixele na jedna dziurke maski. Tryb byl chyba mono.

Ale i CGA w IBM nie lepsza ...

J.

Reply to
J.F
2022-01-25 o 11:12 +0000, Cezar napisał:

Nie kojarzę co to LGR, ale domyślam się, że chodzi o którąś z moich aplikacji retro. Od czasów nCoV19 odnotowałem znaczący wzrost zainteresowania w tym kontekście. Widać ludziom ostro się nudzi. :)

Mateusz

Reply to
Mateusz Viste

tak, dosmid ...

wystepował w kilku odcinkach...

formatting link
formatting link

Reply to
Cezar

A propos - jest gdzies jakis emulator CP/M, ale z terminalem?

Bo narasta we mnie ochota odpalenia czegos Turbo Borlanda

formatting link
ale jak tak czytam dodatek B o instalacji ... moze jednak wybic sobie durne pomysly, nawet jesli to tylko jedno popoludnie ...

J.

Reply to
J.F

Spróbuj rezystorem 470 podciągnąć do plusa linię zegara. Pamiętam, że miałem straszne problemy z pamięciami dynamicznymi jeśli go nie było. Podejrzałem go na jakimś schemacie jakiegoś kompa z Z80.

Może pomoże :)

jp

Reply to
jacek pozniak

wtorek, 25 stycznia 2022 o 13:08:05 UTC+1 Mateusz Viste napisał(a):

O, trzeba dysk z DOSem podłączyć, dobrze, że ID na płycie głównej ma. W sumie w tym komputerze mam jeszcze nawet stację 3,5" (i gniazdo na płycie) - ale dyskietek to już chyba nie, więc nawet nie ma jak sprawdzić, czy działa. I nawet DOS się uruchomi - a jakiś czas temu miałem problem, bo trzeba było zrobić linuxowy X-Terminal na komputerze dostarczonym przez klienta (przyjechał z monitorem, bo miał tylko displayport - a ja takiego monitora nie mam) i zonk - miał taki BIOS, że z pendrive'a po staremu instalka ruszała, ale z twardego dysku tylko na uefi pozwalał. Trzeba było dać pokój ze slackware 13.0.0.0.0 i zrobić ubuntu. Oczywiście potem podłączyli to do internetu, zrobił się auto-upgrade i przestało działać...

Szkoda, że te 386 i 5x86 sprzedałem. Ale moje pentium 166 znalazłem ostatnio w kącie w firmie. Z SC Trio64V+ oraz ISA'ową kartą dźwiękową z dodanym syntezerem wavetable. Tylko nie mam pojęcia, gdzie szukać mojej kolekcji MIDów :(

Zasilacz AT mam, ciekawe, czy się to uruchomi - późniejsze płyty poumierały, moja do durona i druga do athlona, w której raz wymieniłem kondensatory - i nawet nikt jej nie użył, bo zanim wziąłem się za wymianę, to do tej obudowy kupiłem już nową płytę, bo nie można było czekać - i te kondensatory też się wypęczniły, bez używania...

No dobra, pisali jak pisali, bo było szybciej - ale czy musieli? Zapewne mogli, bo jak ibm zrobił komputer osobisty, nieważne, jak kijowy, wcale nie lepszy od innych (ew. display i klawiatura - tak jak mówił Steve Jobs - na cholerę komu komputer z kolorem na monitorze, skoro przygotowuje się na nim czarno-białe dokumenty?), a do tego koszmarnie drogi i przez spory czas praktycznie nie do kupienia - to ten komputer jest najlepszy i możemy go traktować jako jedyny obowiązujący.

Tyle że CP/M miał chyba takie samo API - wyświetl znak, przyjmij znak - a dawało się robić programy używając BIOS. Nie wiem, jak działające, ale pewnie dobrze, skoro się to sprzedawało (no chyba że jedynie z braku laku, a apple II było jeszcze droższe - no ale jak ktoś kupuje komputer za 3k$, żeby uruchamiać na nim visicalca kosztującego 100$ - w żałosnym przekoneniu, że komputery mogą być programowanie przez laików - to na biednego nie trafiło).

A komputery na CP/M były przecież jeszcze słabsze od PC - 8080 lub Z80 (z 4-bitowym ALU) na 2,5 max.4MHz. PC nie był może dużo mocniejszy - 4,77MHz, taka sama 8-bit szyna danych - ale szybszy jednak nieco był. No chyba że procesor był za szybki dla pamięci, z którymi go sprzedawali ;>

To chyba było jakoś tak, że XT-286 był szybszy od AT, bo w AT były pamięci z wait-state, a w XT-286 0-wait state ;>

Ależ to bzdura.. Muszę poczytać, jak się realizuje taki wait-state w dostępie do pamięci. Na I2C wiadomo, ale z pamięciami?

Hmm, to jednak compaq i phoenix nie zrobili 100% dobrego? Jest gdzieś o tym jakaś historia? Bo wiki twierdzi, że było OK.

A właściwie to czy int 10h nie jest jednak w BIOS karty graficznej?

Reply to
Dawid Rutkowski
2022-01-26 o 02:30 -0800, Dawid Rutkowski napisał:

Fakt - nie musieli. Mogli pisać parszywie wolne programy i umrzeć z głodu, bo programy konkurencji działają sprawnie i gładko.

Skoro mówisz o API CP/M, to już nie BIOS, tylko funkcje systemowe, a te wołały zapewne bezpośrednio hardware. DOS też miał takie funkcje, ale ograniczone do poziomu CP/M i też boleśnie powolne, jeśli idzie o malowanie po ekranie.

Pierwszy z brzegu przykład dot. dość podstawowej operacji odczytu pozycji kursora:

formatting link
Wynika z tego, że BIOS Phoenix, w przeciwieństwie do IBM, resetował rejestr AL... i nieszczęście gotowe, jeśli program się tego nie spodziewał.

Dziś (tzn. wczoraj), tak. Przedwczoraj nie.

Mateusz

Reply to
Mateusz Viste

A gdzie tam - BDOS w CP/M byl uniwersalny, a wrecz jeden, jesli nie liczyc roznych wersji. Wszystko co dotyczylo hardware musialo przechodzic przez BIOS.

W dodatku nie bylo w zasadzie zadnych funkcji sterowania ekranem - wsystko zalezalo od tego jaki terminal byl podpiety lub emulowany.

I jeszcze np taki niuans

formatting link
"BDOS function 9 (C_WRITESTR) - Output string Supported by: All versions Entered with C=9, DE=address of string.

Display a string of ASCII characters, terminated with the $ character. Thus the string may not contain $ characters - so, for example, the VT52 cursor positioning command ESC Y y+32 x+32 will not be able to use row 4.

Under CP/M 3 and above, the terminating character can be changed using BDOS function 110. "

Juz VGA podstawiala wlasny BIOS.

J.

Reply to
J.F
2022-01-27 o 11:14 +0100, J.F napisał:

No dobra, ale z tego co teraz czytam, to "BIOS" był częścią CP/M :) Tą częścią wołającą bezpośrednio sprzęt właśnie.

VGA to jest właśnie wczoraj, razem z EGA i MCGA. Ale mowa była, zdaje się, o IBM PC z MDA (tj. tak sugerował Dawid).

Mateusz

Reply to
Mateusz Viste

środa, 26 stycznia 2022 o 13:31:24 UTC+1 Mateusz Viste napisał(a):

Hmm, w sumie to komputera z CP/M to nawet nie widziałem, nie mówiąc o używaniu. A ze starych PC-tów to tetrisa na XT widziałem - hmm, tak mi się zdaje, że kolory były CGA, ale może to był tryb CGA, a karta już EGA a nawet lepsza, bo chyba ChiWriter na tym działał - a może to było już nawet AT?

No ale tak czy siak - programy na CP/M używające jego API, projektowanego jeszcze w czasach teletype, a nie terminala, jakoś działały - np. tak wordstar z pełnoekranowym edytorem. Nie sądzę, by programy na PC w trybie tekstowym wymagały jakieś wspanialszej animacji. Więc na CP/M dawało się przez prymitywne wywołania systemowe, a na PC już nie? Nad tym się właśnie zastanawiam.

Chyba że CP/M ten wordstar potrafił w sposób naprawdę widoczny odświeżać ekran, takie "odwijanie papieru z rolki" ;>

Funkcje były niby BDOSa - ale tak naprawdę FDOSa - czyli połączonych BDOSa (uniwersalnego) i BIOSu (dostowywanego do konkretnego komputera). A BIOS oczywiście musiał odnosić się do sprzętu, no bo jak nie - nawet jak miał tylko wysłać znak na port szeregowy. I było API niżej-poziomowe - czyli program jak chciał mógł sobie odczytać/zapisać sektor dysku - i wyżej-poziomowe - czyli mógł zrzucić na OS tworzenie czy skasowanie pliku.

No cóż, ja miałem od razu VGA - i to nadzbiór. Ale do dziś mnie zastanawia - jak taka karta wyświetlała na początku jakieś napisy (zwykle w trybie tekstowym), np. swoją nazwę, to czy taki obraz tworzył przy resecie jakiś procesor na tej karcie czy też był to efekt BIOS-skanu i wywoływania przez BIOS PC-ta initu z BIOSu karty graficznej?

Reply to
Dawid Rutkowski

Tzn - BDOS napisal DR. BIOS pisal producent komputera.

Czy byl czescia ... no byl, bez BIOS CP/M nie dziala :-)

A i program uzytkownika mogl i funkcje BIOS wołac, byly do dyspozycji.

A masz racje - juz EGA miala wlasny.

Owszem - standardowy BIOS peceta obslugiwal MDA i CGA. Lepsze wymagaly biosu karty.

EGA ... no wiem, mam pewne opory nazywac to "wczoraj" :-)

Na pewno kolejna generacja, nie jest to "zwykly pecet" :-)

Tak czy inaczej - wszyscy Biosu uzywali tylko do wlaczenia trybu graficznego na karcie, albo nawet i to nie.

Cala reszta to juz bezposrednio w sprzet.

J.

Reply to
J.F
2022-01-27 o 02:50 -0800, Dawid Rutkowski napisał:

Tutaj można zobaczyć, jak to wyglądało:

formatting link

To drugie. Tj. option ROM.

Mateusz

Reply to
Mateusz Viste

Pan J.F napisał (myląc się przy tym):

^ literówka

Reply to
invalid unparseable

Tutaj BIOS nazywają "CP/M I/O drivers", i wszystko podpisane przez DR:

formatting link
Jakiś wyjątek?

Mateusz

Reply to
Mateusz Viste

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.