Strona 14 z 16

Re: Komputer 8-bitowy

: ndz, 26 marca 2023, 23:32
autor: ballasttube
Dziękuję, Kolego Jethrotull, za odpowiedź.
Poproszę o wersję PNG.
Zależnie od Kolegi uznania
poproszę o przesłanie tych plików
(karty dźwiękowej może nie być,
jeżeli konieczne jest ograniczenie
sumarycznej wielkości plików) albo tutaj,
o ile to nie koliduje z tutejszymi
procedurami i nie jest to zbyt egoistyczne
z mej strony,że publiczną przestrzeń forum
zajmuję moją sprawą,albo na PRV do mnie
na leon22@op.pl.
Pozdrawiam uprzejmie.
Życzę dobrego wieczoru.
Jacek"b/t"

Re: Komputer 8-bitowy

: ndz, 26 marca 2023, 23:38
autor: Olkus
jethrotull pisze: wt, 21 marca 2023, 17:49 Mogę Ci polecić pewną architekturę do zaimplementowania ;)
Bardzo chętnie ;) Aczkolwiek to na razie plany na dalszą przyszłość....

Pozdrawiam,
A.

Re: Komputer 8-bitowy

: czw, 30 marca 2023, 11:57
autor: jethrotull
Mam nadzieję, że nikt się nie obrazi.

CPU:
main.png
UART:
DART.png
Karta dźwiękowa:
download/file.php?id=98489&mode=view

Karta VGA:
download/file.php?id=96840&mode=view
Możliwe jest też użycie układu TellyMate: http://www.batsocks.co.uk/readme/art_SerialVideo_1.htm

Klawiatura:
download/file.php?id=93663&t=1
Możliwe jest też podłączenie zwykłej klawiatury PS2

Re: Komputer 8-bitowy

: sob, 1 kwietnia 2023, 04:32
autor: ballasttube
Dziękuję,Kolego Jethrotull i pozdrawiam.
Jacek

Re: Komputer 8-bitowy

: wt, 16 maja 2023, 16:40
autor: jethrotull
Zakończyłem, po wielu potknięciach, budowę karty graficznej PAL. Jest ona oparta luźno o ten pomysł:
https://www.waveguide.se/?article=bitma ... -interface
z m.in. następującymi zmianami:
- posiada generator znaków (jest wyłącznie znakowa)
- używa 2KB dwuportowej pamięci RAM jako pamięci obrazu
- znaczna część logiki jest skondensowana w układzie ATF16V8
- inny generator sygnału ładowania rejestru przesuwnego

Co do zasady działania, idea jest podobna jak przypadku mojej karty VGA, jednak diabeł tkwi w szczegółach. W obu kartach linia zawiera 64 bajty pamięci obrazu, mimo że nie wszystkie te bajty są wyświetlane jako znaki. Część znaków jest "przykryta" wygaszaniem poziomym. To rozwiązanie "marnuje" część pamięci obrazu, ale umożliwia użycie tego samego zestawu liczników i do adresowania tej pamięci, i do sterowania generatorem synchronizacji. Jednak rejestr pszesuwny nie jest wyłączany na czas wygaszania, i nadal emituje piksele odpowiadające tym niewidocznym znakom. W standardzie VGA, gdzie jest osobny sygnał obrazu i osobny dla synchronizacji nie ma to znaczenia. W przypadku monitora CRT co prawda może to powodować odwrócone i roziągnięte przypadkowe znaki rysowane przez cofającą się wiązkę elektronów, ale przynajmniej nie wpływa to na synchronizację. Przy monitorze LCD można sobie emitować cokolwiek w czasie wygaszania bez żadnych negatywnych następstw.

Karta PAL nie jest taka prosta, gdyż piksele i sygnał wygaszania są transmitowane jedną i tą samą linią. Emitowanie jakichkolwiek zapalonych pikseli w czasie wygaszania powoduje zatem problemy z synchronizacją. Co więcej, piksele te zakłócają ustalenie przez telewizor poziomu czerni, i tym samym uniemożliwiają uzyskanie poprawnego kontrastu (nawet na telewizorach LCD!).

Karta nie ma żadnego wbudowanego mechanizmu sprzętowego zapewniającego że żadne zapalone piksele nie będą emitowane w czasie wygaszania. Dlatego karta ta, w przeciwieństwie do karty VGA, nie działa poprawnie samodzielnie - nie podłączona do komputera. Komputer musi zainicjalizować pamięć obrazu i upewnić się że pod adresami znajdujacymi się poza obszarem widocznym są jedynie puste znaki (spacje lub zera). Jeden z widocznych na zdjęciach potencjometrów służył do ustalenia stosunku sygnału pikseli i sygnału synchronizacji. W przypadku pracy bez podłączonego komputera potencjometr ten umożliwiał uzyskanie albo zadowalającej geometrii obrazu, albo właściwego kontrastu, ale nie obu jednocześnie.

O ile wyzerowanie wszystkich bajtów pamięci obrazu odpowiadających obszarom wygaszania poziomego pozwala uzyskać prawidłowy obraz, o tyle w przypadku wygaszania pionowego nie mamy tego luksusu. Obraz łącznie zawiera 64 znaki (w tym 50 widocznych) w każdej z 32 linii, łącznie wymaga więc 2KB pamięci obrazu, czyli innymi słowy całej dostępnej pamięci. Nie zostaje już żaden obszar który można by wyzerować i emitować z niego same czarne piksele w okresie wygaszania pionowego. Ponieważ mój telewizor potrafi wyświetlić o kilka linii więcej niż 32, 33. linia była po prostu powtórką pierwszej itd. Aby to naprawić, użyłem pewnej sztuczki. Jako że używam jedynie połowy generatora znaków, drugą (górną) połowę całkowicie wyzerowałem, następnie linię N17 (na schemacie) podłączyłem do najwyższej linii adresowej generatora znaków. Wysoki stan tej linii (czyli numer linii ekranu powyżej 256, czyli numer linii znaków powyżej 32) powoduje że generator znaków "przełącza się" na swoją pustą połowę, i '165 emituje jedynie czarne piksele.

Ostatnią różnicą względem schematu jest inny generator sygnału ładowania rejestru przesuwnego. Na schemacie jest to generator impulsu wyzwalany dowolnym zboczem zbudowany na bramce XOR (IC8B) i linii opóźniającej złożonej z trzech bramek NOT (IC3D, IC3E, IC3F). Taki układ nie zachowywał się poprawnie w moim przypadku, generował wielokrotne impulsy gdzie powinny być pojedyncze. Po sprawdzeniu oscyloskopem okazało się, że wejście tego generatora jest poprawne, a wyjście zawiera nadprogramowe impulsy rozmaitej amplitudy. Zdecydowałem się zamiast tego na rozwiązanie sprawdzone w karcie VGA: inwerter z wejściem Schmitta, a wejście to połączone z linią N3 przez filtr górnoprzepustowy RC o stałej czasowej rzędu kilkudziesięciu ns. To rozwiązanie pozwoliło wreszcie uzyskać całkowicie stabilny i kontrastowy obraz. Załączone zdjęcie jest przepalone, w rzeczywistości wyświetlane znaki są idealnie ostre i czytelne, przynajmniej na telewizorze. Przy wyświetlaniu na czteroipółcalowym monitorze cofania znaki są zbyt małe aby można je wygodnie odczytać z rozsądnej odległości. Na zdjęciu widać też jak działa napisany przeze mnie wierszowy edytor tekstu.

Na koniec jeszcze jedna ciekawostka(?): karta VGA wyświetla znaki od pierwszego bajtu każdej linii, natomiast karta PAL wyświetla dopiero od siódmego bajtu. Wymaga to programowego przesunięcia każdego znaku w pamięci obrazu o siedem bajtów w stosunku do początku linii (np. pierwszy wyświetlany znak pierwszej linii ma adres VIDEO_RAM + 07h).
IMG_20230501_214827142.jpg
IMG_20230502_180431707.jpg

Re: Komputer 8-bitowy

: śr, 17 maja 2023, 14:42
autor: jethrotull
Wiecie może, czy istnieją jakieś porządne, mechaniczne klawisze (nie microswitche) pasujące do perfboardu? Coś w stylu Cherry https://www.google.com/search?q=cherry+ ... 31&dpr=2.5, tylko że Cherry ma dziwny rozstaw pinów.

Re: Komputer 8-bitowy

: sob, 27 maja 2023, 12:53
autor: staszeks
nawet nie wiedziałem, że w moich szpoargałech zachowało się coś takiego.

Re: Komputer 8-bitowy

: sob, 27 maja 2023, 15:41
autor: staszeks
Powinienem dodać, że jako jednostkę centralną w tym systemie przewidziano MCY7880

Re: Komputer 8-bitowy

: czw, 10 sierpnia 2023, 11:19
autor: jethrotull
Po długiej walce napisałem zestaw narzędzi programistycznych dla wymyślonego przeze mnie języka programowania.
Zestaw zawiera:
:arrow: zaprezentowany już wcześniej edytor tekstu
:arrow: kompilator konwertujący kod źródłowy do bajtkodu
:arrow: interpreter bajtkodu

W przeciwieństwie do większości dialektów BASICa dostępnych na typowych komputerach ośmiobitowych, mój jezyk programowania jest bardziej strukturalny - nie wymaga wpisywania numerów linii kodu i skakania do nich, zamiast tego wspiera nazwane procedury i pełne konstrukty programisytyczne jak pętla WHILE, czy instrukcje warunkowe z dowolną liczbą instrukcji w blokach IF/ELSE (np. w ATARI BASIC można użyć tylko jednej instrukcji w bloku IF, a ELSE nie występuje w ogóle). Nie są natomiast wspierane zmienne lokalne. Ich dodanie nie byłoby wielkim problemem, natomiat biorąc pod uwagę ograniczone zasoby sprzętowe, nie wydaje mi się jakoby było to celowe.

Na poniższym przykładzie widać prosty program zapisany w edytorze i jego wyjście.
IMG_20230810_110352220.jpg
IMG_20230810_110418429.jpg

Re: Komputer 8-bitowy

: czw, 10 sierpnia 2023, 14:37
autor: Tomasz Gumny
Miło poczytać, że Twój projekt wszedł na wyższy poziom (języka). I gratuluję determinacji.

Re: Komputer 8-bitowy

: czw, 10 sierpnia 2023, 22:21
autor: Alek
Wygląda bardzo fajnie :D . Ja łudzę się, że da się kiedyś chociaż częściowo odtworzyć oprogramowanie do MSA-80...

Re: Komputer 8-bitowy

: śr, 25 października 2023, 18:24
autor: jethrotull
Wróciłem ostatnio do tematu zapisywania danych w postaci dźwięku. Próbowałem to onegdaj zrobić "na piechotę", generując odpowiednie zmodulowane przebiegi akustyczne i demodulując je później analogowo w celu odzyskania danych, z których to dwóch zadań ukończyłem jedynie pierwsze. Następnie zdałem sobię sprawę, że istnieją już urządzenia do modulowania i demodulowania dźwięku w celu przesyłu danych cyfrowych, a mianowicie modemy. Moją uwagę przyciągnął układ Motoroli MC 145442. Co ważne, modemy takie nie tylko występują w postaci pojedynczego chipu (i to niewielkiego, wąski DIP20), ale także są dostępne na allegro. Pierwszy kupiony układ okazał się co prawda martwy, ale już kolejne działają bez zarzutu.

Kiedy piszę, że modem działa w postaci układu na jednym czipie to dokładnie to mam na myśli, jego poziom sygnału wyjściowego oraz czułość wejścia analogowego są wystarczająco wielkie aby zbędne były jakiekolwiek dodatkowe wzmacniacze. Wszystko co potrzebne do działania takiego modemu to kryształ do oscylatora i kilka elementów pasywnych.

W ramach testów udało mi się przesłać portem szeregowym (przez Putty) ciąg znaków z zawrotną prędkością 300 bodów na modem, a następnie nagrać wygenerowany sygnał zmodulowany na komórkę za pomocą aplikacji rejestrującej dźwięk. Następnie dokonałem operacji odwrotnej, i na terminalu ukazały się wpisane wcześniej znaki (a także kilka śmieci).
IMG_20231025_174455608.jpg
IMG_20231025_174517060.jpg
Karta katalogowa: https://wolumen53.com/pdf/MC145442_MC14 ... torola.pdf

Podłączenie takiego układu do mikrokomputera (np. na procesorze 8085, który ma wbudowany "port szeregowy") nie powinno być zbyt wielkim wyzwaniem.

Re: Komputer 8-bitowy

: śr, 20 marca 2024, 15:49
autor: jethrotull
Zmęczyło mnie użeranie się z klawiaturami PS2. Mają one szereg cech, które z mojego punktu widzenia są niedogodnościami:
- brak na rynku gniazd PS2 przyjaznych dla płytek prototypowych;
- generowanie własnego sygnału zegarowego który ma częstotliwość równą częstotliwości bitów x1 - np. UART wbudowany w procesor Z180 nie potrafi pracować z takim zegarem, wymaga zegara co najmniej x16;
- niekonsystentne zachowanie między róznymi modelami klawiatur, np. niektóre modele same się nie resetują po załączeniu napięcia;
- całkowicie szalone przesyłanie danych z hosta do klawiatury;
- przesyłanie scankodów zamiast kodów ASCII - wymagana translacja;

Postanowiłem więc zbudować własną klawiaturę, z następującymi założeniami
- klawisze mechaniczne;
- zasilanie z komputera;
- łączenie z komputerem złączem jack 3.5mm;
- przesyłanie znaków ASCII...
- ... za pomocą normalnego protokołu szeregowego...
- ... o dowolnj prędkości transmisji;

W tym celu zakupiłem klawisze Royal Kludge. One również nie są przyjazne płytkom prototypowym. Po raz pierwszy od jakichś dwudziestu lat wytrawiłem więc własną płytkę, i była to niemal kompletna porażka. Móstwo mostków niewytrawionej miedzi, a jednocześnie niemal wszystkie ścieżki poprzegryzane przez roztwór trawiący. Ostatecznie z miedzi ostały się tylko pady lutownicze, a wszystkie połączenia wykonałem ręcznie linką.

Mózgiem urządzenia jest mikrokontroler 87c51. Od razu zaprzyjaźniłem się z asemblerem tego układu - dużo rejestrów i bardzo ortogonalna lista rozkazów (przynajmniej w porównaniu z x80/z80). Mikrokontroler skanuje klawisze, zapewnia programowy debouncing, konwertuje scankody do ASCII i przesyła przez wbudowany UART. Prędkość przesyłu programowana za pomocą mikroswitchy. x51 ma timer służący do generacji baudrate'u, dzięki czemu można uzyskać dowolną prędkość przesyłu, a nie tylko zegar/całkowita potęga dwójki.

Ze względu na użycie trzypinowego złącza jack, możliwe jest przesyłanie tylko w jednym kierunku - z klawiatury do hosta, ale to jest ok, bo klawiatura się sama resetuje, więc nie wymaga resetowania programowego przez hosta.

Układ klawiatury, jak widać, bardzo minimalistyczny - 10 cyfr, 26 liter, dwa klawisze funkcyjne: SHIFT do wpisywania wielkich liter i FUNC do znaków specjalnych, plus enter i spacja. Zrezygnowałem z typowego, długiego klawisza spacji, zamiast tego mam spację w prawym dolnym rogu, jak w Spectrumie.
IMG_20240320_125817430.jpg

Re: Komputer 8-bitowy

: śr, 20 marca 2024, 16:02
autor: Tomasz Gumny
Sygnalizację wstecz, np. reset a nawet jakąś transmisję możesz zrobić "na jednym drucie". Wyjścia z otwartym kolektorem (również RxD/TxD) w '51 doskonale się do tego nadają.
P.S. Musiałem sprawdzić co znaczy "niekonsystentne". :D

Re: Komputer 8-bitowy

: czw, 21 marca 2024, 16:40
autor: jethrotull
I schemat klawiatury:
8751kbd.png