[6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Kącik dla elektroniki retro - układy, urządzenia, podzespoły, literatura itp.
Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

[6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 08 lis 2017, 11:03

#slowanawiatr

Płytki tytułowe prezentowe w weekend trafiły na warsztat no i chciałoby się rzec - nie miała baba kłopotu to...
Ponieważ sprawa pomimo sęków jednak się toczy to ja postanowiła spisywać to, co się dzieje podczas prac, może komuś do czegoś się przyda? No i pamiątka zawsze jakaś będzie jak zwycięży frustracja i modułki owe w złości szurnę przez okno, a póki co takie treści stylistycznie niespójne powstają, można sobie ewentualnie poczytać jak bloga.


Niezobowiązujące fotki cyfrowego gifciku w tym poście :arrow: viewtopic.php?f=82&p=9604#p9598" target="_blank" target="_blank , tu próbuje je ożywić.

Jak wspominałam, został wykonany zaczepny mailing z firmą EKF, odezwał się w sumie całkiem sympatyczny pan z ichniego wsparcia technicznego, no i zaczęłam na słodkie oczka bajerować i sępić detale techniczne, oooch co za mordęga. I dziwie się, że taki problem jest odszukać jakiekolwiek dokumentacje do własnych produktów i je przekazać, to co dostałam to oficjalne kwity do produktów, ani tajemnica, ani nic. No chyba że się pan spłoszył, bo faktycznie wyskoczyłam jak królik z kapelusza z tym złomkiem. Tak czy inaczej nadesłany plik mb099.txt bardzo się przydaje, ponieważ zawiera info o organizacji pamięci, kody źródłowe do PAL-a oraz rozpiskę konektorów, użytkowego i systemowego, pliczek tu:
:arrow: http://bienata.waw.pl/temp/mb099.txt a tu wersja po translatorze:
:arrow: https://translate.google.pl/translate?s ... Fmb099.txt
(ascii art tu rozsypany, więc `rysunki` z oryginału trzeba brać)

Mając wiarygodne info gdzie masa a gdzie zasilanie i czego mniej więcej można się spodziewać podłączyłam jeden z modułów do zasilania. I w ten oto sposób dla cudnego mierniczka wskazówkowego od Wojtka zakończył się czas relaksu, a zaczęła się orka w roli amperomierza. Już mówię czemu. Z taką nieznaną elektroniką i w technicznie niewiadomym stanie to w/g mnie lepiej uważać, bo i 5V potrafi popalić układy. Stad V640 ustawiłam na zakres 1.5A, podcięcie w zasilaczu na 750mA i takie zasilanie poszło na płytkę. Modułki życzyły sobie odpowiednio 0.5A i 0.6A, akceptowalnie w miarę, różnica w/g mnie wynikała z działania oprogramowania, w drugim, tym o większym poborze z układy VIA były znacznie cieplejsze. No i rzecz najważniejsza dla mnie - taka wskazówka ustalona w okolicach 1/3 skali i po oswojeniu z wynikiem jest znakiem, że nic złego się nie dzieje. Jakiekolwiek gibnięcie, w górę szczególnie, jest sygnałem ostrzegawczym, takiej wizualnej kontroli kątem oka nie da żaden multimetr cyfrowy, analogowy - idealnie się tu sprawdza, szczególnie jak mam go przed nosem i zawsze w polu widzenia.

Podłączenie zasilania no i oczywiście AD2 w ruch (próbniki moje MIK03 w ludziach niestety, będą nazat po weekendzie co mnie martwi, bo się męczę bez nich okrutnie) - paradoksalnie komfort pracy z AD2 jest w tym przypadku dla mnie dyskusyjny. Próbnik logiczny MIK03 pokazywał 1/0/impulsy i do oględzin gdzie są aktywne sygnały a gdzie martwica jest idealny. Nie interesują mnie przecież na początku parametry czasowe przebiegów, ale sam fakt czy są czy nie i gdzie. Z AD2 jako oscyloskopem nieco kłopot, bo trzeba klikać po podstawie czasu, raz coś jest a raz nie ma, w stanie High-Z jakieś sianko pokazuje, znowu jak już jest sygnał, to ciekawość trudno powstrzymać i klikam coby zobaczyć dokładnie parametry, no a czas sobie leci... Zakładam, że to u mnie brak wprawy w takim szybkim bieganiu sondą po układzie i zgrubnej interpretacji wyników, w sumie to pierwszy raz taką jazdę mam wraz z AD2, jest okazja się nauczyć.

W podsumowaniu etapu pierwszego odpalenia - nic nie wybuchło, nic się nie usmażyło, na magistrali systemowej stabilne sygnały E i Q w kwocie 1MHz, znakiem tego - księżniczka Motorola daje znaki życia i można zacząć intensywniejsze googlowanie za opisami układów i samego procesora, z lekturą pliku od EKF w międzyczasie.

Ta jeszcze przeglądnęłam pisnaki swe ostatnie z chatu, nawiązać chcę teraz:

pytanie o sens

No więc właśnie, po jaką choinkę zadawać sobie trud z odpaleniem staroświeckiego złomu przemysłowego z końca lat osiemdziesiątych, poświęcać temu czas i być może w dalszej perspektywie - dosypać do zabawy nieco kaski. Tu się nakłada kilka spraw. Za mną to już od dawna chodził taki systemik na Motoroli 68xx, nawet łasym okiem patrzyłam na te pierwsze rupcie przywleczone z Irlandii kiedyś, ale jakoś wydały mi się dobre na dawców organów raczej a nie do reanimacji. Te dwa moduły co je mam to są w bardzo dobrym stanie technicznym, żadnych zabrudzeń, okopceń, widać że albo pracowały do końca w jakiejś kasecie albo zadbane leżakowały. Moduły są dwa, więc mam potencjalną wymienność elementów, gdybym wykonała jakiś głupi ruch skutkujący ofiarami. W płytce jest w mojej ocenie spory potencjał - ciekawy jak dla mnie procesor, radykalnie inny od tego, co nieco znam - Z80, elastyczna mapa pamięci (o tym dalej), gotowy port szeregowy wespół z konwerterami napięć +/- pod RS232, timery oraz 4x8 bitów I/O oraz do nich linie specjalne. Złączki też popularne, bo jedna to kasetowa EURO 64pin a druga to zwykłe igłowe na szeroką taśmę, no i całość z podstawkami precyzyjnymi wygląda po prostu bardzo ładnie. Jakieś opisy też są, więc nie będzie to jazda po ciemku, ale bardziej (lub mniej...) świadoma diagnostyka. No i to wyzwanie jest, trudno się nie zgodzić.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 08 lis 2017, 11:32

kolejne przydasie nadesłane od twórców tego cudaka, proszę:
:arrow: http://bienata.waw.pl/temp/bus987_eng.txt opis magistrali systemu w którym pracował modułek
:arrow: http://bienata.waw.pl/temp/busprints.txt jak wyżej, oryginalna wersja, niemiecka
:arrow: http://bienata.waw.pl/temp/mbref.txt opis programu MONOBUG-9,
translacja: :arrow: https://translate.google.pl/translate?s ... edit-text=

no i garść grafik starszych i nowszych modułów tego systemu, bardzo fajne to zrobili
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 08 lis 2017, 12:14

Prób ciąg dalszy, napędzany wizją że może uda mi się zagadać z programem monitora, co niby on jest na eprom-ach.
Przede wszystkim zachomikowałam potrzebne datasheet a pinout-y kostek zgromadzone na jednej karteczce robią za help podczas obmacywania płytki oscyloskopem. Ponieważ płytka na biurku leży jak widać, a układy na niej jak bądź - niektóre są na rysunku głową na dół, na nietoperza, co mi w sumie ułatwia trafianie sondą w konkretny sygnał.

złowrogiego milczenia objawy

No i tu pierwsze schody wystąpiły - płytka nijak zagadać nie chciała, a napisane w kwitach, że MONOBUG zgłasza się po starcie systemu po łączu szeregowym, a mój nie.
Pierwotnie zapięłam się do RS232 klasycznie, RxD/TxD z poziomami +/- kilka V i do portu na zadku komputera. No jakoś nic się nie wydarzyło. Kolejny krok to wyjęcie z podstawki UART-a i wyizolowanie końcówek R/T przy pomocy kolejnej pogiętej podstawki i test na kabelku USB ale z poziomami TTL - cisza. W między czasie doczytałam o kostkach transmiterów linii UA9636 i UA9637, ot zwykłe konwertery poziomów napięć dostosowane do pracy także z linią symetryczną. I sprawne jak woltomierz pokazał. Problem jest głębiej znaczy się.
No i tu dopiero wykonałam akcję, która powinna zostać zrobiona najpierwej - odpowiedź na pytanie - czy UART w ogóle pracuje? Bo chyba nie.
Podejrzenie takie było, ponieważ po resecie na linii TxD układu nic się nie działo, stabilne 1, żadnej sieczki nadawczej.
Brak impulsów wybierających na liniach CS0 i CS1 kostki 6551 pozwolił założyć, że pracujące (lub tak udające) oprogramowanie w ROM w ogóle nie dotyka UARTa, wcale.
No tak na logikę - wszelkie monitorki mają charakter konwersacyjny (a w/g opisu MONOBUG takim jest właśnie), wysyłają jakieś powitanie, potem czekają na polecenia z terminala. Czyli UART powinien być poolowany (co za słowo....) co jakiś czas, że o inicjalizacji układu etc nie wspomnę. A tu cisza, system w ogóle nie adresuje układu ACIA.

Tu temat idzie w kierunku - co tak naprawdę jest w dwóch kostkach EPROM (2716) w bankach B3 i B4. Bo ja mam mocne obawy, poparte bazgrołami na nalepkach, że to jakaś samoróbka, której głównym celem wcale nie jest gadanie po szeregowemu, możliwe, że nawet wcale tego nie robi. Układy są zaparkowane do odczytania w programatorze, pooglądamy hex i bin, może coś będzie wiadomo. No, a w kwitach do systemu piszą że monitorek jest w 2764 i okupuje górne 8kB mapy pamięci, tu jest coś z goła inne.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 08 lis 2017, 13:08

No i w ten sposób o odrobieniu grafomańskich zaległości jestem na bieżąco w miarę.

Małomówny UART w jednej a cieplejsze VIA w drugiej na taki mnie pomysł naprowadziły, aby jednak podziękować oryginalnym kostkom za wspópracę i skrobnąć kilka małych programików, które będa w stanie wykazać, że w ogóle pracują poszczególne elementy systemu. Taka procedura uruchamiana była w CA80 i to doskonale działało w przypadku kłopotów, więc warto spróbować. Jak na fejsiku wspomniałam - z szopy wyjechał cięższy sprzęt - emulator EPROM AVT270 i przelotka USB/LPT.
Jeżeli chodzi o oprogramowanie narzędziowe - będe trzymać się SB-Assembler, z kilku powodów. Po raz, elastyczny bardzo i przyjemny w pisaniu. Po dwa, umie wyprodukowac plik bin o zadanym konkretnie rozmiarze, to ważne ponieważ mogę wtenczas plik *.bin potraktować bezpośrednio jako wsad (obraz) dla emulatora.

to szkic, póki co, ale w ten deseń będa powstawać okruchy kodu, celem tego jest obserwacja dwóch krótkich ujemnych szpilek na wejściu /CS2 pierwszego po lewo VIA, podwójne szpileczki mają się pojawiać co jakisz czas, drewniane opóźnienie zrobione na nop-ach.

Kod: Zaznacz cały

   
       .cr   6809
      .tf   test1.bin,BIN
      .lf   test1.lst
      ;
      ; bank B4, 2764
      .or    $E000   
      ;
      ;dekoder PAL14L4 99-00      
VIA1    .eq $E000
VIA2    .eq   $E010
ACIA    .eq   $E020   
      ;
      ; gdzies tam zacznij
      .or   $F000
main:   
      lda   VIA1
      nop
      lda   VIA1      
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      bra main
      ;
      .no     $FFF2,$FF
      .da     main      ; swi3
      .da     main      ; swi2
      .da     main      ; firq
        .da     main      ; irq
        .da     main      ; swi
        .da     main      ; nmi
        .da     main      ; reset
      ;


Zagadek mam na tym etapie kilka, no nie ma lekko. Po pierwsze - zakładam, że moja wersja PAL to 99-00, tyle że na nalepce jest zero napisane mazakiem na drukowanej dwójce, tak wiec weryfikacja wersji dekodera jest podstawą.

Po drugie, wątpliwe są jeszcze dla mnie te prztyczki do organizacji mapy pamięci. Podstawek jest 8 (4+4), nazwane A i B, kolejne podstawki (sygnał /OE) są wybierane przez dekoderek 74139 sterowany liniami adresowymi A14 i A13, to dla banków B, banki A obskakuje druga połowa dekoderka.
Tylko że najstarsza podstawka zakładając ustawienia dla 8kB zapełnia przestrzeń E000-FFFF, a tam jest mapowane I/O przez PAL-a przecież :( no to jak? Chyba że dolna połówka z tych 8kB (E000-EFFF) jest wycinana przez PAL na korzyść I/O sygnałem USER - to do sprawdzenia, gdzie on sie podziewa po płytce. Ogarnięcie mapy pamięci tego modułu i sposobu jej ustawiania przytczkami wydaje mi się teraz krytyczne, bo bez tego to mogę sobie pisać programiki do upojenia, one będą robiły co chciały.

Jest też deko hardkorowy wariant, że na boku przygotuje sobie fizyczny eprom 2716 z testowym sofcikiem, choćby białego ceramicznego ruska i jego zapnę w miejsce tych wyjętych, wtedy odpada mi ryzyko, że np. emulator eprom idzie w szkodę i przez niego nie działa jak ja chcę. Ta myśl stąd, że emuluję kostkę 2764 a oryginalnie były tam 2716, zatem ja musiała przestawić prztyczki dla banku B, a czy dobrze? No ale to się okaże wkrótce.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » czwartek 09 lis 2017, 09:17

progres i drobny zonk

Programik testowy chytrze wymyślony w emulatorze oczywiście mi nie zadziałał i zrobiło się wtenczas równanie z kilkoma smutnymi niewiadomymi:
1. możliwe, że ustawienia dip-switch nie lubią konfiguracji 2 x 2kB + 1 x 8kB
2. możliwe, że sposób wybierania układu ROM (/OE+/CS) zależnościami czasowymi lub logiką nie pasuje do emulatora avt270 (vide wywnętrzenia :arrow: http://bienata.waw.pl/docs/003_TASZA_ar ... P_just.pdf strona 3, pod fot.3 )
3. możliwe, że wymyślony naiwny programik jest z koziej trąbki zupełnie i w takiej architekturze po prostu nie ruszy
4. możliwe, że zakładam błędnie posiadanie PLD w wersji 99-00 a to jest braciszek -02 inaczej dekodujący IO
5. możliwe, że emulator eprom mi zszedł tak ogólnie, zupełnie na śmierć (choć robiłam mu już dziwniejsze rzeczy i jakoś wytrzymał)

Rozwiązanie zagadki wydało mi się tylko jedno - ponownie przemyślany programik testowy zapakować do fizycznej kostki EPROM lub EEPROM, uspójnić rodzaje (w sensie pojemności) pamięci w bankach i takie coś poobserwować AD2.

W międzyczasie i dla relaksu, przy pomocy google , data-sheet do PAL14L4, skryptu do dekodera oraz omomierza powstała rozpiska gdzie są jakie sygnały na układzie PAL, przyda się do macania sondą.

Programik na nowo wygląda tak, binarny obraz jeszcze zweryfikowałam super edytorkiem bless - pierwsze 4kB puste, kod w połowie, wektory na końcu - jest ok.

Kod: Zaznacz cały

      .cr   6809
      .tf   test1.bin,BIN
      .lf   test1.lst
      ;
      .or    $E000
      .bs   $1000, $FF
      ;dekoder PAL14L4 99-00      
VIA1    .eq    $E000
VIA2    .eq   $E010
ACIA    .eq   $E020      

      
RESET:   
      lda   VIA1
      nop
      lda   VIA1      
      nop
      lda   VIA2
      nop
      lda   VIA2      
      nop
      lda   VIA2      
      nop
      lda   ACIA
      nop
      lda   ACIA
      nop
      lda   ACIA
      nop
      lda   ACIA
      nop      
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      bra RESET
      ;
      .NO     $FFF8,$FF
      .DA     RESET           
      .DA     RESET           
      .DA     RESET
      .DA     RESET         


Ta pustka zaraz od adresu startowego $E000 to z tego wynika, ze tam PLD, i to bez względu na wersje, wywłaszcza pamięć na korzyść zamapowanych IO, należało się wiec ze swoimi klamotami przenieść deko wyżej, no to w $F000 wycyrklowałam. Tu właśnie okazują się mega przydatne dyrektywy SB-Assemblera do rezerwacji pamięci, zapełniania jej fragmentów stałymi etc, można robić naprawdę przedziwne machlojki bezpośrednio z poziomu kodu źródłowego, bez obróbki bin czy hex zewnętrznymi narzędziami.

Aby uniknąć wielokrotnego przekładania kostki i oszczędzić jej utytrania nóżek programik obsługuje zagadnienie kompleksowo - generuje dwie szpilki dla kostki VIA1, trzy kolejne dla VIA2 oraz cztery w przypadku zdekodowania szeregowego ACIA. Aktywny kod zaczyna się w bezpiecznej odległości od okupowanego przez I/O obszaru, a obraz ma dokładnie 8192 bajty. Dodatkowo kostki 6116 z banków A1 i A2 zastąpiłam jedną 6264 - 8kB, tak aby było spójnie z ROM, switche ustawione w/g rozpiski od EKF. Jeżeli PLD będzie w tej wersji co myślę - AD2 pokaże śliczne szpileczki z dekodera.

No i efekt wow - system ożył, testy najpierw oscyloskopem a potem analizatorem stanów logicznych, wszystko gra!

Na marginesie - warto mieć takie klipsy pomiarowe na scalaki, tu na zdjęciach widać na DIP16 ale są nawet do DIP40. Zapinamy się od góry na kostkę, a pazurki czy haczyki do pinów klipsa, można na upartego nawet kabelki do płytki stykowej pociągnąć. Ja uważam to za sporo bezpieczniejsze niż grzebanie haczykami bezpośrednio przy wyprowadzeniach układu scalonego wbitego w podstawkę.

Przy okazji okazało się, że jednak zaczynam ciułać na nowy programator układów, ten LabTool kochany jest i służył dzielnie wiele lat, no ale żeby do zaprogramowania kostki odpalać na kanapie całą instalację i na ledwo zipiącym starożytnym laptopie...taka to refleksja mnie naszła.

Niedziałanie emulatora avt270 to temat rozwojowy i mam cichą nadzieje, że wynika z uroku systemu docelowego, a nie z awarii. No, bo bez emulatora to jakoś nie wyobrażam sobie dłubania w assemblerze i ciągłego przeprogramowywania kostek...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » czwartek 09 lis 2017, 20:06

dygresja teraz będzie

dobry zwyczaj...

...nie tyle nie pożyczaj, bo pomagać przecie trzeba sobie jakoś, ale jak sprzęt już wraca, to bez względu na to, co jest mówione i z jaką niewinną minką wręczane - urządzenie choć zgrubnie sprawdzić trzeba czy mu nie zrobiono krzywdy, bo różnie to bywa w życiu, a odwaga cywilna to towar deficytowy jakoś.

Jak się dziś okazało problem był jednak z emulatorem pamięci EPROM i to podły. AVT270 to dość odporna konstrukcja ale ma kilka słabych miejsc, jednym z nich jest układ resetu zdalnego systemu - fragment schematu na obrazku, całość tu: :arrow: https://serwis.avt.pl/manuals/AVT270.pdf

Reset ma dwa mody pracy - zerem lub jedynką, emulatorek był w trybie /RESET sprowadzając do zera logicznego wejście zerujące podczas procesu ładowania wsadu do własnego RAM.

Wskazana kostka to 74HC04, dwa inwerterki (typu OC) równolegle do siebie, reszta jako negatory uwikłana w logikę emulatora. No i te dwa miały upalone wyjścia, prawdy za cholerę się nie dowiem, ale domniemywać tylko mogę, że wyjście resetowe emulatora było zapięte do twardego UCC i podczas któregoś z kolei ładowana zawartości układziki nie dały już rady. Załadowanie pełnych 64kB to jest jakieś pięć, sześć sekund - przez tyle inwertery w stanie L dostawały sztywne zasilanie.... Reszta negatorów działa, bo emulator potrafi zmienić typ pamięci i przełączyć strony 32kB - a tam właśnie występują pozostałe kawałki U12. To w/g mnie potwierdza o udarze prądowym, gdyby zabiła go statyka - prawdopodobnie cała kostka byłaby martwa i emulator w ogóle by nie działał. Kiszka wyszła dopiero na CA80, bo temu zestawowi (CA80 i AVT270) ufam bezgranicznie, CA dość spektakularnie się resetuje zamrażając wyświetlacz, potem pisk startu systemu. Płytka motorolowa nie daje żadnych objawów startu, przynajmniej w tym stanie co teraz na warsztacie jest u mnie, a niedziałanie kodu wynikało, że ładowałam zawartość podczas normalnej pracy systemu - pewnie była masa konfliktów na magistrali, ewentualnie ładowało się cokolwiek. I stąd zupełnie przypadkowe i niepowtarzalne efekty na AD2.

Obraz testowego programiku załadowany do CA80 pięknie się wylistował poleceniem *D, tak wiec po wymianie kostki '04 emulator wraca przytulać się do Motorolki.

A z optymistycznych bardziej detali - z CA80 zapożyczyłam sobie NVRAM bq4010 - to 8kB pamięci z baterią, ciekawe jak w Motce będzie się sprawować.

Fota z poligonu, czyli mój kochany bajzel i dwa dni w plecy....
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » czwartek 09 lis 2017, 23:29

progres bezsprzeczny

z emulatorem pocerowanym po zepsuciu systemik motorolkowy odpalił, testowy program po załadowaniu pokazał takie same szpilki co puszczony z EEPROM, zatem czas na pierwszą zabawę, o proszę:

https://youtu.be/PZrD-LZSZ-s

https://youtu.be/K7ymvDTQTVI

znany, czerwieniusi wyświetlacz TIL311 tym razem zapięty do bitów PA0..PA3 układu VIA1, a taki oto prosty programik nim steruje, do którego jak zrobić delay() zerżnęłam z tej książki: :arrow: http://www.inf.pucrs.br/~calazans/under ... yLProg.pdf

til311.asm pisze:

Kod: Zaznacz cały

      .cr   6809
      .tf   til311.bin,BIN
      .lf   til311.lst
      .or    $E000
      .bs   $1000, $FF
      
VIA1       .eq    $E000
VIA1_PB      .eq   VIA1+0
VIA1_PA      .eq   VIA1+1
VIA1_DDRB   .eq   VIA1+2
VIA1_DDRA   .eq   VIA1+3

reset:   
      lds   #$1000      ; stosik

      lda   #$ff      ; PA jako out
      sta   VIA1_DDRA
      
      lda   #$00      ; a = 0
loop:      
      sta   VIA1_PA      ; pokaz
      inca         ; a++
      jsr   delay      ; ziew
      bra loop      
      
delay:      ldx   #10000      ;x=duzo
delay1:      dex         ;x--
      nop
      bne   delay1      ;until != 0
      rts
      
      .NO     $FFF0,$FF
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » sobota 11 lis 2017, 23:34

ciężkie życie dawcy organów

No więc właśnie, tak mi się roiło, że gdzieś w tych płytkach starych przywleczonych z bazaru widziałam pamięci 6264... no i proszę, sklerozy snać nie mam jeszcze, bo szybko płytki się znalazły, ale szmelc, łomatko. Niemniej jednak kostki firmy Hitachi po przetarciu wacikiem ze spirytusem wyglądają niczym nowe i bardzo pasują do podstawek banków A2 i A3. I tym prostym sposobem mam teraz na pokładzie 24kB statycznej pamięci RAM, w ciągłym adresowaniu 0000...5FFF, no cudności! A jeszcze bardziej biedne płyteczki po operacji wróciły do pudła, pewnie kiedyś coś znowu im wydłubię...

zabawy z układem VIA

Kostki VIA (Versalite Interface Adapter) jakoś tak spontanicznie trafiły jako pierwsze na warsztat, no niech tam, a z nich temat na dziś to Timer 1.
Dokumentacja do układu do poczytania: :arrow: http://www.vectrex.co.uk/files/datasheets/6522AP.pdf

Timer 1 z wolnego wybiegu

A na stronie 5-29 mamy opis Timer 1 in free-run mode, (najłatwiejszym do obserwacji w środowisku naturalnym) i tam w skrócie pisze, że układ automatycznie inicjuje liczniki załadowaną do zatrzasków wartością, jak się przeładowuje (0->N) to zgłasza przerwanie i co najfajniejsze - robi toggle na bicie PB7 układu. To toggle automatycznie dzieli częstotliwość sygnału E ( czy jak nazwać - Φ2 , u mnie w systemie 1MHz) przez 2 zatem całość pracuje w tym trybie jako dzielnik częstotliwości o podziale 2*N gdzie N to stała wpakowana do zatrzasków (para rejestrów VIA_T1CH:VIA_T1CL). W rejestrze kontrolnym VIA_ACR ustawiamy bity 7/6 na właściwy tryb i bit 0 zezwalający na pracę całości i voilà :)

Zrzutki z WF to sygnał Φ2, którego rozprowadzenie po module zweryfikowałam, aby się nie nabrać na ciszę, potem dla stałej 1000 - widać 500Hz przebiegu na wyjściu PB7. Zastanawia mnie, że minimalna wartość podzielnika N wyszła mi 6. Gdy wpisałam 5 układ VIA zamiast przebiegu wystawiał 1 i nie gadał dalej, sześć to najmniej co wolno wpisać i wychodzi z tego częstotliwość jakieś 62kHz.

Programik sterujący prosty i wygląda tak:

timer1.asm pisze:

Kod: Zaznacz cały

      .cr   6809
      .tf   timer1.bin,BIN
      .lf   timer1.lst
      .or    $E000
      .bs   $1000, $FF
      
VIA1       .eq    $E000
VIA1_ORB   .eq   VIA1+0
VIA1_IRB   .eq   VIA1_ORB
VIA1_ORA   .eq   VIA1+1
VIA1_IRA   .eq   VIA1_ORA
VIA1_DDRB   .eq   VIA1+2
VIA1_DDRA   .eq   VIA1+3
VIA1_T1CL   .eq   VIA1+4
VIA1_T1CH   .eq   VIA1+5
VIA1_T1LL   .eq   VIA1+6
VIA1_T1LH   .eq   VIA1+7
VIA1_T2CL   .eq   VIA1+8
VIA1_T2CH   .eq   VIA1+9
VIA1_SR      .eq   VIA1+10
VIA1_ACR   .eq   VIA1+11
VIA1_PCR   .eq   VIA1+12
VIA1_IFR   .eq   VIA1+13
VIA1_IER   .eq   VIA1+14

;divider   .eq   1000   ; na PB7 - 500Hz
divider      .eq   6      ; na PB7 - 62kHz

reset:   
      lds   #$1000      ; stosik

      lda #$FF
      sta VIA1_DDRB
      lda #$00
      sta VIA1_ORB
      
      lda   #divider
      sta   VIA1_T1CL
      
      lda   #divider/$100
      sta   VIA1_T1CH
      
      lda   #$C1
      sta   VIA1_ACR
      
loop:      
      bra   loop

      .NO     $FFF0,$FF
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset
                .DA     reset                               


Dojrzewam do myśli, że trzeba będzie przysiąść i napisać coś jakby plik nagłówkowy z tymi rejestrami oraz innymi stałymi dla tej płytki, bo to się coraz większe zaczyna na listingach robić...a póki co dopisuje VIA_xyz po kawałku....


Taki programowo sterowany dzielnik zegara można wykorzystać go generowania np. zegara dla RS232 czy innych synchronizacji. Można też pewnie do napędzania NMI lub do generowania modulowanych częstotliwościowo przebiegów na podstawie innych danych. Czyli fajna sprawa.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » niedziela 12 lis 2017, 22:05

patyczki do czyszczenia epromów

Fajna to zabawa niezmiernie takie rozkminianie nowego procesora i jego peryferiów, lecz aby kanapie przywrócić rolę miejsca użyteczności publicznej dla reszty rodziny to wystawkę z lapkiem i LabTool musiałam zdemontować, a to oznaczało, że kostki EPROM odczytać trzeba, bo to okazja jakby ostatnia i o tym traktuje dzisiejszy odcinek.

Najsamprzód errata względem treści poprzednich w kontekście typu układów EPROM występujących w tej całej imprezie. Są to mianowicie kostki nie 2716 ale jak się okazało namacalnie - czterokilobajtowe 2732. Patyczek do dłubania w uszach umaczany w wodzie ognistej (tak marnować dary boskie...) zmył reszty kleju pod poloplastrową nalepką i udało się zobaczyć napis na ceramice układu, no rychło w czas. Ważne to o tyle, że konfiguracja mojego LabTool wymaga zainstalowania specjalnej płytki konfigurującej połączenia, pomyłka może skutkować uszkodzeniem układu pamięci lub skrzywdzeniem programatora, co byłoby dość smutne.

Do odczytania były dwie pary układów, z dwóch płytek. Fotki dla fanu to po raz, ale też na zdjęciu widać, w którym banku mieszka odpowiednio podpisana kostka - to ułatwia dalsze dociekania. Po zgraniu obrazów EPROM do plików *.bin oraz do zrzutów ASCII *.txt, które łatwiej czasem diff-em oglądać można się na spokojnie pozastanawiać - kto zacz?

reiz - lovely

Tak mi translator napis z poloplastra przetłumaczył, no pięknie - tłumacząc dalej, bo zagadka kolejna, aczkolwiek już bez napinania się, ot dla relaksu. I tak - w obu modułach obrazy pamięci z banków B4 (najstarszy, startowy) są identyczne i nie jest to podstawowy monitorek MONOBUG9, ale jakaś 'customowa' wariacja na jego temat, to pierwszy wniosek.

Obrazy pamięci z banku B3 (już obszar użytkownika) są prawie identyczne z dokładnością do wcinki gdzieś mniej więcej w środku obszaru adresowego. Zawartość nie rzuca się w oczy jakimiś napisami, ani nic - obstawiam, że zawiera jak to mawiam - smutny kod, niegadający z użytkownikiem, może jakieś stałe do sterowania?

Ciekawe za to okazało się oglądanie końcówki obszaru adresowego banku systemowego B4, ponieważ tam, na ostatnich lokalizacjach księżniczka Motorola trzyma adresy wektorów przerwań, wyłuskana zawartość tablicy skoków jak poniżej:

Kod: Zaznacz cały

RESERVED $0000
SWI3     $FC7B
SWI2     $FC77
FIRQ     $FC87
IRQ      $FC83
SWI      $FC73
NMI      $FC7F
RESET    $D000 (!!!)


I tu drobna zaskoczka - po resecie procesor kieruje się pod adres $D000 a to jest bank B3, obszar użytkownika, tam jest ta druga kostka, ha! Dla przypomnienia mapa pamięci z pliku mb099.txt i kilka śmiałych domniemywań.

Kod: Zaznacz cały

 ----  0000
| A1 |
+----+ 2000 (2000, 800)
| A2 |
+----+ 4000 (1000, 1000)
| A3 |
+----+ 6000 (3000, 1800)
| A4 |
 ----  7FFF
 ----  8000
| B1 |
+----+ A000 (E000, E800)
| B2 |
+----+ C000 (D000, F000)
| B3 |
+----+ E000 (F000, F800)
| B4 |   only EPROM!
 ----  FFFF


Dla pełnego dekodowania bank B3 ma adres startowy $C000, ale wtenczas musiałaby tam siedzieć kostka 2764. Skoro mamy połowę mniej (2732) to niepełne dekodowanie skutkuje zjawiskiem, że adres $D000 jest tożsamy z $C000 i można go potraktować jako adres bazowy dla kodu w tym banku. I tak zrobiono właśnie, oprogramowanie modułu jest rozsmarowane po dwóch fizycznych bankach 4+4 kB zamiast wtyknąć to w jeden 8kB. Dlaczego? Może to cześć jakby stała i 'wymienna', zależna od innych detali architektury docelowego systemu, nie sposób się już tego dowiedzieć.

Wektory przerwań NMI, IRQ, FIRQ i reszty towarzystwa - skierowane są na bank systemowy B4, ale gdzie dalej prowadzą skoki, to już trzeba by dokładnie zdeasemblować kawałek tej binarki. A na chwilę obecną tylko jeden wniosek - oba moduły w raczej bardzo podobny sposób zarządzały przerwaniami (do IRQ na Monoboard zapięte jest całe stado: ACA+2xVIA)

Zrzuty kostek można potraktować jako ciekawostkę i dać sobie spokój, można też odrobinę podrążyć temat i chyba w wolnych chwilach będę to jednak robiła... kod obsługi przerwań zakładam, że będzie dla mnie ciekawy, bo ciągle usiłuję ogarnąć nowe Motorolkowe znalezisko i z takich żywych przykładów sporo się przecie można nauczyć, tak myślę. No i pewnie dowiem się więcej o tym, jak ten system kiedyś pracował.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » poniedziałek 13 lis 2017, 21:43

Odcinek dla podtrzymania tematu raczej, bo jakoś nie mam ani weny ani nastroju na dłubanie większe, ot porządki z konieczności tylko.
Archiwum na programy do płytki takie jest: :arrow: https://github.com/bienata/monoboard9
Powstał i będzie systematycznie przyrastał plik nagłówkowy monoboard9.inc ze stałymi, makrami i takimi tam.
https://github.com/bienata/monoboard9/b ... board9.inc
Programik do TIL311 już na nową modłę, sporo krótszy z racji wykorzystania zewnętrznych definicji
https://github.com/bienata/monoboard9/b ... til311.asm
Dwie nowe kostki RAM 6264 co tak ucieszyły, no to poszły precz z płytki, ponieważ przestawienie stosu na ich banki zawiesza system. Albo switche źle, albo kostki padnięte albo coś źle robię, to do wyjaśnienia.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » wtorek 14 lis 2017, 14:17

papier cierpliwy jest i wiele wytrzyma, kartka do poczekalni
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: j23 » środa 15 lis 2017, 07:09

tasza pisze:(...)i skrobnąć kilka małych programików, które będa w stanie wykazać, że w ogóle pracują poszczególne elementy systemu. Taka procedura uruchamiana była w CA80 i to doskonale działało w przypadku kłopotów, więc warto spróbować. Jak na fejsiku wspomniałam - z szopy wyjechał cięższy sprzęt - emulator EPROM AVT270 i przelotka USB/LPT.
Jeżeli chodzi o oprogramowanie narzędziowe - będe trzymać się SB-Assembler, z kilku powodów. Po raz, elastyczny bardzo i przyjemny w pisaniu. Po dwa, umie wyprodukowac plik bin o zadanym konkretnie rozmiarze, to ważne ponieważ mogę wtenczas plik *.bin potraktować bezpośrednio jako wsad (obraz) dla emulatora.

Bardzo ciekawe wydaje się wykorzystanie tego SB-Assemblera :) no i -jakby to napisać- kod jak kod - całkiem niezły (czy nie za mało komentarzy to kwestia gustu i pewnie czasu), natomiast całe obcykanie sytuacji (co i jak po kolei robić, metodyka postępowania) to tutaj "czapki z głów" jak to mówią.
Mogę zapytać Tasza co i jak z tym SB-Assemblerem, tzn.jakieś manuale, soft jest gdzieś? -potrafię "znaleźć" ale bardziej chodzi mi o to czy są jakieś wersje, jakieś know-how jak postępować z takim czy innym IDE od tego Assemblera. Osobiście mam doświadczenia jako takie (raczej znikome w porównaniu z Twoją wiedzą) w składni Assemblera x86 (MASM/TASM czyli odpowiednio produkty Microsoftu/Borland) i nieco większe jeśli chodzi o bardzo przyjemny swego czasu dla mnie Assembler 8051 znany mi głównie z emulatora Jagoda dla zestawu uruchomieniowego Panów Piotra i Pawła Gałki.
Fajnie tutaj napomknęłaś o tzw.tablicy wektorów przerwań - swego czasu była to dla mnie czarna magia kojarząca się z... podmianą tej tablicy, przy czym ja akurat takich "programów" pisać nie pisałem.
Trzymam kciuki za dalsze owocne dłubanie przy Motoroli i pozdrawiam! j23
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 15 lis 2017, 12:22

j23 pisze: (…)raczej znikome w porównaniu z Twoją wiedzą(…) Trzymam kciuki za dalsze owocne dłubanie przy Motoroli

Pierwsze niepotrzebne stanowczo, drugie przyda się ogromnie i dziękuje awansem.

vabank

…czyli historia o tym, jak zostałam Grażyną Memory Menedżmentu z rozgarnięciem na poziomie kupy jesiennych liści. Bo chcąc mieć wszystko parametryzowalne, definiowalne i super elastyczne niczym po dwóch godzinach robienia szpagatów na materacu, to ja do pliku https://github.com/bienata/monoboard9/b ... board9.inc nawstawiałam definicji opisujących krytyczne lokacje pamięci, w szczególności gdzie się kończy RAM i gdzie jest domyślne dno stosu dla programików mych. O, takie mniej więcej:
monoboard9.inc pisze:

Kod: Zaznacz cały

RAM_BEGIN    .eq $0000
RAM_END    .eq RAM_BEGIN+1*8192
USER_STACK    .eq RAM_END-1

Ponieważ operuje teraz bankami o rozmiarze 8kB, więc wyliczenie RAM_END bazuje na mnożeniu ilość banków*jego rozmiar. No super, tylko że jak ostatnio wspominałam – dwie kostki, jako narowiste paskudy zostały wyjęte z płytki (i przekazane dobrej duszy to sprawdzenia parametrów), no a mnożenie x3 zostało….boooshhe….
Póki program nie korzystał z procedur (JSR xxxx) to wszystko było cacy, bo jakaś tam jedna zapodziana zmienna mieszka sobie na stronie zerowej, w scratchpad. Ale stos leci od końca, w kierunku niższych adresów, zachowanie adresu powrotu na stosie wyśmienicie się udawało, choć dane szły w powietrze. Odzyskanie miejsca powrotu ze stosu podczas wykonywania rozkazu RTS skutkowało tym, że procesor brał z szyny dwa chałsty powietrza zamiast adresu i skakał sobie gdziekolwiek…. Nie zmodyfikowawszy po wyjęciu układzików definicji w *.inc , stos inicjowałam w nieistniejącym fizycznie banku RAM. Brawo JA.

I tu taka uwaga ogólna: to zagadnienie w książkach p.Gadrynika o Z80 jest maltretowane do znudzenia wręcz – obsługa stosu jest mega ważna, spójność zachowanych tam danych decyduje tak naprawdę o być/nie być większej aplikacji. Na stosie potrafi być przechowywana naprawdę spora ilość danych, utrata nad tym kontroli i jest pozamiatane. No i błędnie (niesymetrycznie) obsługiwany stos może nam wjechać w obszar danych (lub wręcz kodu) programu, takie błędy są masakrystycznie wręcz trudne do wyłapania. I właśnie miałam okazję sobie o tym przypomnieć….

tajmerkologia – zabaw w generowanie przebiegu ciąg dalszy

Na rysuneczku Fig.19 http://www.vectrex.co.uk/files/datasheets/6522AP.pdf widać jakie zależności liczbowe opisują przebieg generowany na PB7 w trybie free-run. Z dokładnością do paru pulsów Φ2 dodatnia i ujemna połówka przebiegu wyjściowego ma N cykli, cały okres 2N, gdzie N to stała załadowana do 16-bitowego licznika.
Jeżeli teraz wprowadzimy sobie do kompletu stałą systemową:
monoboard9.inc pisze:

Kod: Zaznacz cały

CLK2FREQ    .eq  1000000

to ilość impulsów (czyli stałą dla timera) konieczną do wygenerowania zadanej częstotliwości `f` można wyliczyć sobie ze wzroka:
N = CLK2FREQ / 2 /f

Przykład wykorzystania: https://github.com/bienata/monoboard9/b ... timer1.asm aby zrobić sobie 500Hz
timer1.asm pisze:

Kod: Zaznacz cały

divider      .eq   CLK2FREQ/2/500
      
      lda   #divider   ; lo
      sta   VIA1+T1CL      
      lda   /divider   ; hi
      sta   VIA1+T1CH


No, a wzorek owy to najlepiej ubrać sobie w makro, wtenczas można ładnie poukładać sobie stałe licznikowe w pamięci, na przykład jako tabelkę, ot choćby tak:
timer2.asm pisze:

Kod: Zaznacz cały

FREQ      .ma
      .dw   CLK2FREQ/2/]1
      .em      
freqArray:   
      >FREQ 100
      >FREQ 200


Cały programik, generujący przebiegi o wybieranej kolejno z tabeli częstotliwości wygląda tak: https://github.com/bienata/monoboard9/b ... timer2.asm

No i działanie na filmiku:
https://youtu.be/kKealEZXCNA

Programik drewniany może się wydawać, no ale do 68xx trzeba ewidentnie nabrać ogłady, deczko inaczej (mi przynajmniej) się pisze niż na Z80.
I strasznie mnie póki co męczy ochrona rejestrów, o ile akku A i B mogę push/pull-em odłożyć na kupkę, to z 16-bit rejestrem X co? No i jakieś wygibasy z pamięcią są:
delay() pisze:

Kod: Zaznacz cały

delay:      stx   temp      ; save X in temp
      pshb         ; stack B
      ldb   #10      ; outer loop - 10x
.delay1:      
      ldx   #60000      ; inner loop 60K
.delay2:   dex         ; x--
      nop
      bne   .delay2      ; until x != 0
      decb         ; b--
      bne   .delay1      ; until b != 0
      pulb         ; unstack B      
      ldx   temp      ; restore      
      rts   

:roll:

Tak czy inaczej timer numer jeden dał się oswoić, a Księżniczka Motorola okazuje się dość sympatycznym i wdzięcznym do współpracy stworzeniem, co mnie w sumie cieszy.
Przy okazji wyszło mi, z czego można się naumieć i póki co na zmianę kartkuję (o ile mogę tak powiedzieć) następujące opracowania:

:arrow: http://datasheets.chipdb.org/Motorola/6 ... serman.pdf
:arrow: http://www.8bit-era.cz/6800.html
:arrow: http://www.inf.pucrs.br/~calazans/under ... yLProg.pdf
:arrow: http://www.electronics.dit.ie/staff/ypa ... 206800.pdf
:arrow: http://hcvgm.org/Data_Sheets/Motorola/6800%20Assembly%20Language%20Programming%20(Lance%20Leventhal)(1978).pdf

Najważniejsze są dla mnie przykładowe strzępy kodu, w których jest poruszane identyczne lub podobne zagadnienie, co właśnie mi zaprząta głowę i podpatrując jak to zrobiono – klecę swoje i jakoś to idzie….

-- Q & A –

* O fajnym narzędziu SB-ASM wspominałam tu: :arrow: SB-Asm (temat), więc tam też ewentualnie rozwinę co potrzeba w przypadku gdyby kto walczył z tym narzędziem… A IDE żadnego nie mam, korzystam z gedit lub kate, kompilacja z palca, na kolanie skrypcikiem machniętym, to cały mój świat

* Ilość komentarzy to sprawa bardzo subiektywna, opisuje tekstem to, co uważam że ważne z punktu widzenia filozofii programiku, tak nieco abstrakcyjnie, to raczej własne moje notatki, niż materiał edukacyjny. No ale jeżeli jest życzenie aby bardziej detalicznie pisać, to nie ma sprawy, na złe mi to nie wyjdzie. Ja się uczę dopiero Motki, im więcej wiem, tym większa świadomość ile jeszcze przede mną do ogarnięcia….

* Tablica wektorów przerwań to pojęcie znane, technicznie to garść poukładanych za koleją adresów, pod które się skacze na różne okazje. Kwestia tylko jak to ładnie ubrać w zapis formalny, aby i wyglądało i było łatwe do analizy i zmian jak potrzeba. Dla Intel 8085 i komputerka mego dino-85 to było tak, że twarde wektory kierowałam do RAM, a tam via kolejna tabela (ale już modyfikowalna nawet w locie), one skokami szły w docelowe miejsca, w handlery przerwań, takie coś:
https://github.com/bienata/dinomon/blob ... inomon.lst to sztuczka podglądnięta w CA80 i jak się uważa, to działa wyśmienicie

Piaskownica moja wieczorna:
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 15 lis 2017, 22:04

W ramach poszerzania horyzontów poniższe się przydały:

:arrow: http://www.sbprojects.com/sbasm/6809.php
:arrow: http://members.casema.nl/hhaydn/howel/p ... ration.htm
:arrow: http://www.roust-it.dk/coco/The%20MC6809%20CookBook.pdf

O, noooo proszę, proszę, jak się doczyta co tam nowego podostawiali w 6809 wersus klasyczne 6800 to się świat od razu piękniejszy wydaje, delay() po tuningu i z niebieskimi ledzikami:

timer3.asm pisze:

Kod: Zaznacz cały

delay:      
      pshu   X,B      ; save X & B
      ldb   #10      ; outer loop
.delay1:      
      ldx   #10000      ; inner loop
.delay2:   
      dex         ; x--
      bne   .delay2      ; until x != 0
      decb         ; b--
      bne   .delay1      ; until b != 0
      pulu   X,B      ; restore
      rts      


procesor 6809 ma dwa stosy, ale czad!

w szczególności można na User Stack (nowy byt względem System Stack) zapamiętywać sobie rejestry hurtem, które tam potrzeba, tu chronię sobie 8-bit B oraz 16 bit X akurat, ale można i wszystko co jest
bieganie po 16-bitowych słowach w tabelce z freq. też można uchytrzyć, a mianowicie jest sobie adresowanie indeksowane z automatyczną inkrementacją/dekrementacją wskaźnika :), jest też sztuczka, że parę rejestrów aku. A i B można potraktować jako jeden D :) (podobnie jak czasem AF w Z80), zatem pierwsza modernizacja taka może być przykładowo:

timer3.asm pisze:

Kod: Zaznacz cały

      lda   ,x+         ; A := *(freqArray++)      
      sta   VIA1+T1CH   ; as HI
      lda   ,x+         ; A := *(freqArray++)      
      sta   VIA1+T1CL   ; as LO   

tu angażowany jest A i na piechotę wyładowywany do RAM, X inkrementowany osobno lub:
timer3.asm pisze:

Kod: Zaznacz cały

      ldd   ,x++      ; A := *freq, B := *(freq+1), freq +=2
      sta   VIA1+T1CH   ; set HI from A
      stb   VIA1+T1CL   ; and LO from B

gdzie z tabelki pobierany jest element do A|B i łup go do komórek pamięci, X zwiększany o 2 czyli ustawia się na następne słowo w tabeli, to jest cudne normalnie

cały programik tu, sprawdzony na częstościomierzu czy wyświetla i produkuje co trzeba i jest OK:
https://github.com/bienata/monoboard9/b ... timer3.asm
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: j23 » czwartek 16 lis 2017, 02:00

tasza pisze:(...)No super, tylko że jak ostatnio wspominałam – dwie kostki, jako narowiste paskudy zostały wyjęte z płytki (i przekazane dobrej duszy to sprawdzenia parametrów), no a mnożenie x3 zostało….boooshhe….
Póki program nie korzystał z procedur (JSR xxxx) to wszystko było cacy, bo jakaś tam jedna zapodziana zmienna mieszka sobie na stronie zerowej, w scratchpad. Ale stos leci od końca, w kierunku niższych adresów, zachowanie adresu powrotu na stosie wyśmienicie się udawało, choć dane szły w powietrze. Odzyskanie miejsca powrotu ze stosu podczas wykonywania rozkazu RTS skutkowało tym, że procesor brał z szyny dwa chałsty powietrza zamiast adresu i skakał sobie gdziekolwiek…. (...)
-nie żebym śmiał się z Ciebie, bo w żadnym wypadku, natomiast opis tej sytuacji tymi słowami po prostu wymiata :) :lol: :like:
Przypomniało mi się jak o mało co nie uszkodziłem kiedyś dysku twardego robiąc podobne eksperymenty z pętlami, ze stosem - wówczas CPU 80486DX4 działającego pod FreeDOS' em bodajże. W sumie po czasie to śmiać się z tego można, ale pamiętam co wtedy czułem jak w jednej chwili system się zawiesił a mnie przez głowę przemknęła myśl, że właśnie "załatwiłem" jedyny komputer jaki miałem.. ;)

tasza pisze:(...)O fajnym narzędziu SB-ASM wspominałam tu: :arrow: SB-Asm (temat), więc tam też ewentualnie rozwinę co potrzeba w przypadku gdyby kto walczył z tym narzędziem… A IDE żadnego nie mam, korzystam z gedit lub kate, kompilacja z palca, na kolanie skrypcikiem machniętym, to cały mój świat
Dzięki WIELKIE za link. Sprawdziłem wstępnie i taka ciekawostka, że -nie wiem w sumie czemu- ale jakoś rzuciły mi się w oczy słowa autora, że -w wolnym tłumaczeniu- "w sumie wersja 2 działa nadal dobrze, ale zrobiłem wersję 3 specjalnie żeby odłączyć się od Microsoft(...)" :) :lol: :) :like: -no comments... ;) a tak BTW to ja właśnie jestem w trakcie wszystkiego co tylko można, co związane z MS - switch over to Linux (zaważyły ku temu parametry pracy i szybkości - efektywności programów), tzn. W10 jak roślina sobie wegetuje, ale czy to NetBeans, czy to Eclipse, czy nawet programy do pracy z TRX (HAM Radio) jak fldigi, czy wsjt/wsjtx - to wszystko chodzi pod Debianem, który po prostu zostawia produkt MS daleeeeeeko w tyle. Ok, to tyle moich zwierzeń ;)

tasza pisze:(...)Ilość komentarzy to sprawa bardzo subiektywna, opisuje tekstem to, co uważam że ważne z punktu widzenia filozofii programiku, tak nieco abstrakcyjnie, to raczej własne moje notatki, niż materiał edukacyjny. No ale jeżeli jest życzenie aby bardziej detalicznie pisać, to nie ma sprawy, na złe mi to nie wyjdzie. (...)
To trochę nie tak Tasza.. Z mojego punktu widzenia jest dobrze jak jest, tzn.ja troszkę znam Assembler, kojarzę przynajmniej czym różni się składnia AT&T od składni Intel'a ;) plus fakt, że jednak komentując kod traci się trochę czasu na to (no właśnie to też pojęcie względne, bo zależy czy po jakimś czasie na niepatrzenia na kod będzie się kojarzyło bez komentarzy o co w nim biega). Tak na koniec to sobie myślę, że faktycznie o ile to nie jest jakiś epicki tutorial do Assemblera to w takim wątku tyle komentarzy ile jest to okey - IMHO.Sorry, że jakoś tak może wypomknąłem, że za mało komentarzy.

tasza pisze:(...)O, noooo proszę, proszę, jak się doczyta co tam nowego podostawiali w 6809 wersus klasyczne 6800 to się świat od razu piękniejszy wydaje(...)procesor 6809 ma dwa stosy, ale czad!
Hmm.. Dwa stosy, no to ciekawe. Mnie to zaraz naszło kojarzenie z podwójnym buforowaniem, co ma b.poważne konsekwencje odnośnie wizualizacji danych, potocznie to się odczuwa jako "brak migotania" obrazu, który jest wyświetlany linia po linii (to nie tylko archaiczne monitory CRT wchodzą w grę, ale ten efekt obserwuje się też przy tworzeniu obrazu za pomocą pióra laserowego)... Nie wiem czy to miałoby jakieś zastosowanie w przypadku tych dwóch stosów, ale ta nowinka mnie zaskoczyła, nie powiem.

Pozdrawiam! j23 Jarek
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
piotrek
User
User
Posty: 155
Rejestracja: niedziela 05 lis 2017, 02:46

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: piotrek » czwartek 16 lis 2017, 21:12

Hmm.. Dwa stosy, no to ciekawe. Mnie to zaraz naszło kojarzenie z podwójnym buforowaniem, co ma b.poważne konsekwencje odnośnie wizualizacji danych, potocznie to się odczuwa jako "brak migotania" obrazu, który jest wyświetlany linia po linii (to nie tylko archaiczne monitory CRT wchodzą w grę,

Pewnie chodzi o to, że jeden wskaźnik stosu SP jest używany na potrzeby RET, RETI a drugi US dla programisty na użytek własny PUSH, POP.
Jak sobie wyobrażasz to podwójne buforowanie z użyciem stosów? Moim zdaniem coś takiego całkowicie zablokuje stosy, bo przecież trzeba bufor wrzucić na stos i z niego ściągnąć.

Tak w ogóle, tasza, fajne to wszystko co tutaj piszesz. Nie mogę się doczekać kolejnej części bajki o Księżniczce Motoroli :)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » czwartek 16 lis 2017, 22:38

j23 pisze:nie żebym śmiał się z Ciebie
ponoć śmiech to zdrowie, więc spoczko, a do siebie i tego co tu wyczyniam to mam spory dystans

Prawda to, sbasm3 jest ponadplatformowy, ale ja bym się tu nie doszukiwała ideologii jakowejś, ale raczej zdrowego rozsądku: brak ograniczeń nakładanych przez 16-bit OS, darmowe środowisko uruchomieniowe i narzędzia do kodowania nowych nakładek czyli Python, wolny kod źródłowy, cóż więcej chcieć?

piotrek pisze:Pewnie chodzi o to, że jeden wskaźnik stosu SP jest używany na potrzeby RET, RETI a drugi US dla programisty na użytek własny PUSH, POP.

No więc właśnie tak to zaleca postrzegać dokumentacja procesora machnięta przez Motorolowców. Oczywiście na stosie nazwijmy to sprzętowym można trzymać w ograniczonym zakresie inne rzeczy niż licznik rozkazów i akumulator, ale to już zaczynają się wygibasy. Poza tym, podczas obsługi przerwania Motka wpycha na stos cały stan procesora, wszystkie rejestry, no to tylko tam jeszcze naszych gratów brakuje...
Tak intensywnie czytam sobie o User Stack i mi wychodzi interpretacja taka: technicznie - stos, obsługiwany dwoma rozkazami push/pull, ale taki stosik karteczek jakby, zawsze można go komuś podać, niech sobie pozdejmuje i poczyta co potrzeba i kiedy chce i w dowolnym momencie. Można, tak teoretyzuje, wykorzystać owe ustrojstwo do przekazywania parametrów do i zbierania wyników z procedurek, ot na przykład: podajemy procce adres gdzie ma poodkładać jakieś wyniki, etc. Gdzieś mi jeszcze mignęło przed oczami stwierdzenie, że 6809 jest przyjazny dla języków wysokiego poziomu (tu ok) i realizacji mutitaskingu... że prosze? w 8-bit? państwo zacne zioło tam musieli mieć... ale jak patrzę w takie cosie: https://en.wikipedia.org/wiki/Global_Descriptor_Table, i takie hasła znane z x86 jak Task Descriptor....no do takich zabaw mechanizm User Stack to jest jedyny wręcz....
Temat jest to fajny bardzo, ale aby go efektywnie dalej rozgryzać, to muszę najpierw komunikację z systemikiem swym jakąś lepszą wizualnie zrobić, tak aby jakieś dane pokazywać, dlatego też....

:idea: W dzisiejszej dobranocce wystąpi gościnnie moduł VFD :)

Znalazł się bidak w szafie, podczas szukania zupełnie innej zarąbiście potrzebnej mi rzeczy, która się akurat nie znalazła, ale w sumie dzięki temu mamy na pocieszenie to co poniżej.

Nie bój sie VFD...

No, to byłby już nawet nie odgrzewany kotlet ale chyba przeterminowana mrożonka, jakbym IW-18 tu wstawiła z garścią ULN2804, nie - jest zintegrowany moduł CU20025ECPB wykonany tak, że jest funkcjonalnym zamiennikiem wyświetlacza LCD 2x20. Tu kartka z opisem co i jak, wystarczająca w zupełności do podłączenia modułku do płytki.

:arrow: http://www.farnell.com/datasheets/49448.pdf

Jeżeli chodzi o oprogramowanie, to zerkałam w pierwsze z brzegu stronki z google z opisem o LCD

:arrow: https://mil.ufl.edu/3744/docs/lcdmanual ... #EntryMode
:arrow: https://www.8051projects.net/lcd-interf ... zation.php

Na chwile obecna zabaweczka podłączona jest na 8-bit do portu PA oraz wykorzystuje 2 bity portu PB dla sygnałów E oraz RS, co mnie zaczyna irytować, ponieważ I/O mi zabiera, więc w następnym podejściu zostanie to przerobione na tryb 4-bit i będzie okupowało tylko port PA kostki VIA1

Wcześniej męczony displayek TIL311 piękny zaprawdę, ale pojemnością informacyjną to on nie powala zbytnio, stąd potrzeba posiadania czegoś do wypisywania danych na boku, to takie przygotowania do weekendowego rozpoznawania portu szeregowego ACIA.

Cały programik tu: https://github.com/bienata/monoboard9/b ... r/vfd1.asm a automatyczna inkrementacja wskaźnika mega ułatwia iteracje po czymkolwiek, ot tu smyknięcie tekstu na wyświetlacz.

vfd1.asm pisze:

Kod: Zaznacz cały

vfdPrint:
      ; X - address of null terminated string
.vfdPr   lda      ,x+               ; *msg++
      beq      .vfdPrintExit      ; if char == 0 then exit      
      jsr      vfdData            ; else print
      jmp      .vfdPr
.vfdPrintExit
      rts


Programik niespecjalnej urody, ale i tak idzie do przeróbek zaniedługo, a póki co tak działa i radocha jest:

https://youtu.be/Wp9ZMByWGuo

Galeria plenerowa:
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
j23
Expert
Expert
Posty: 506
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: j23 » sobota 18 lis 2017, 00:31

piotrek pisze:
Hmm.. Dwa stosy, no to ciekawe. Mnie to zaraz naszło kojarzenie z podwójnym buforowaniem, co ma b.poważne konsekwencje odnośnie wizualizacji danych, potocznie to się odczuwa jako "brak migotania" obrazu, który jest wyświetlany linia po linii (to nie tylko archaiczne monitory CRT wchodzą w grę,

Pewnie chodzi o to, że jeden wskaźnik stosu SP jest używany na potrzeby RET, RETI a drugi US dla programisty na użytek własny PUSH, POP.
Jak sobie wyobrażasz to podwójne buforowanie z użyciem stosów? Moim zdaniem coś takiego całkowicie zablokuje stosy, bo przecież trzeba bufor wrzucić na stos i z niego ściągnąć.(...)

1. Nigdzie nie napisałem, że trzeba to robić WYŁĄCZNIE z użyciem tych dwóch stosów, od szybkiej komunikacji z procesorem są rejestry i pamięć RAM.
2. W podwójnym buforowaniu nie chodzi o to, że OBA bufory muszą być na stosie, mnie chodziło o fakt, że ten rodzaj stosu może UŁATWIĆ proces podwójnego buforowania.
3. Co to za pojęcie/definicja "zablokuje stosy"? ;) :lol: -może chodzi o PRZEPEŁNIENIE stosu? Bynajmniej mnie nauczyciele uczyli, że stos może się przepełnić co z kolei faktycznie skutkuje ZABLOKOWANIEM/ZAWIESZENIEM się programu/procesu.
4. Polecam poczytać (strona 15-11):
http://geneslinuxbox.net:6309/gene/Genes-os9-stf/6809%20Assembly%20Language%20Programming%20-%20Leventhal.pdf

Co by nie robić "intelektualnych przepychanek" w wątku Taszy proponuję kolejne hurrahop'owe uwagi kierować bezpośrednio do mnie na PW, chyba że Tasza życzy sobie tutaj podobnej dyskusji lub Twoje uwagi mają jakieś poparcie w KONKRETNYCH kontrargumentach.

Pozdrawiam! j23
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » sobota 18 lis 2017, 23:41

niepamięć

Czasem takie prozaiczne gesty pokazują, na kogo można liczyć w przypadku komplikacji, no i proszę - mały programatorek z funkcją testowania kostek mi pożyczono wieczorową porą. A pierwsze co, to on jawnie pokazał pamięciowego szkodnika, jedna z w sumie czterech dodatkowych SRAM 6264 okazała się martwa, skutecznie paraliżując system w przypadku zaadresowania zawartości do odczytu. No, i fura laminatów w formacie eurocard i złączki eltry jako gratis, na ucywilizowanie drutów obok MB09, bo że niby bajzel robię na stole...no cóż.

Tak więc mały optymistyczny drobiazg taki, że z czystym sumieniem zakomitowałam inc-a z RAM_END na trzydziestym drugim kilobajcie ciągłego obszaru pamięci https://github.com/bienata/monoboard9/c ... a12a61e553

Kod rozgrzebany, więc dłubania przy VFD wyniki (obsługa pozycjonowania tekstu) w formie króciutkiego filmiku:

https://youtu.be/gctPUwq-RwE

No i garstka fotek, także nowych kabelków do wyświetlacza i ikeowego porannego pająka, który też na troszkę pożyczony, ma mi farta dodawać...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » niedziela 19 lis 2017, 22:44

mono9 breakout board - d1

Idąc za życzliwą poradą wczorajszą i w ramach szeroko zakrojonego programu deburdelizacji okablowania strukturalnego wokół płytki MB09 takiego oto przydasia zaczęłam majstrować, aby kabelków nie zapinać bezpośrednio na złącze IDC50 modułu.

Przyczyn jest kilka. Po pierwsze troska o samo złącze, jak się kiedyś któraś igiełka wyłamie to będzie konkretny klops, po drugie zapinanie więcej niż jednego sygnału jest kłopotliwe i trzeba sztukować, po trzecie taśma od emulatora eprom zasłania mi złącze, a owe nieopisane wymaga przy każdej zmianie drutów zerkania w rozpiskę co do czego i dlaczego tak krzywo. Płyteczka, którą ja sobie wykonała do Analog Discovery 2 z pinami na sztorc i opisem na nalepce zdaje egzamin wyśmienicie, zatem na tę modłę - będzie sobie teraz płytka-załamka do MB09.

Póki co prototyp na przyciętym kawałku uniwersalki EURO160/100 (druga część obskoczy mi złącze systemowe), jeżeli w użytkowaniu potworek się sprawdzi i wykaże przydatność swą - powstanie docelowe pcb. No i uniwersalka nie zamyka mi konceptu, możliwe że tam pojawią się jakieś cosie, dodane z bieżącej potrzeby.

Stan na dziś wieczór jak poniżej, dalsze prace (lutowanki) na spokojnie i po przespaniu się z pomysłem.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek


gadamy portem szeregowym

Jako relaks po dość stresującej dawce operowania ostrymi narzędziami zaczynam oglądać temat portu szeregowego. Póki co na konwerterze USB/RS232, kabelku z wyjściami TTL, bo te bufory z +/-12V co są na MB09 jakoś mnie straszą. Piny RxD, TxD układu ACIA UM6551 wyizolowałam podstawką już na początku zabaw, teraz można korzystać w miarę wygodnie zapinając się i konwerterem i AD2.

Obrazek
Obrazek

No i póki co jest do przodu, plik nagłówkowy z dopisanymi identyfikatorami rejestrów, a ich użycie w dwóch maleńkich programikach jak poniżej. Zaczęłam od pojedynczych znaczków, przy okazji fajnie wyszło, że AD2 potrafi rozkminić ramki z portu szeregowego i zaczaić się na wybrany znaczek ASCII jako trigger, super!

:arrow: https://github.com/bienata/monoboard9/b ... rial-1.asm

Obrazek

Apetyt rośnie w miare jedzenia, zatem idąc dalej mam tak:
:arrow: https://github.com/bienata/monoboard9/b ... rial-2.asm

To już wysyłanie całego null terminated napisu, procedurka do nadawania znaczków w miarę cywilizowana i czeka na wysłanie poprzedniej zawartości bufora nadawczego, a takie to heheszki latały kabelkiem:

Obrazek
Obrazek

No i fajny katalog kostek UMC znalazłam gmerając w google za ACIA, wszystko w jednym miejscu: :arrow: http://bitsavers.informatik.uni-stuttgart.de/components/umc/UMC_Data_Book_1986.pdf

Fotogalerie przenoszę na swój site.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » wtorek 21 lis 2017, 23:00

mono9 breakout board - d2

...czyli kobieta z lutownicą, hehe, a tak na poważniej to czasem dobrze sobie taki maratonik dla przypomnienia zrobić, dobra lekcja cierpliwości, metodyczności w działaniu i tak ogólnie mocnych nerwów. Tak czy inaczej, po około dwóch godzinach majstrowania wyszło to co wyszło. W sumie tyleż czasu zapewne zajęłoby mi machnięcie projektu w Kicad i zrobienie czegoś termotransferem, no ale wtedy byłoby nudno. Fotoplastikon z autorskim komentarzem pod obrazkami, pisze jak ja sobie poradziłam, pewnie można inaczej, możliwe że staranniej lub efektywniej, kwestia zdolności w sumie...

Obrazek
Wiącha kabli sieciowych, taka mała pamiątka z wizyty naszej w serwerowni, na krosy do płytek stykowych czy prototypowania to mi chyba starczy do końca życia tego.

Obrazek
Obgryziona wierzchnia skórka, w niej kolejne sploty w swoich izolacjach, dokopać się do pojedynczych żył to niezła zabawa.

Obrazek
No i z takich właśnie pojedynczych warkoczy powyciągałam osobne druciki, o kurde...a pod podłogą techniczną naszego datacenter toć całe wężowisko takich, ale czad, że chłopaki to ogarniają co gdzie leci to szacunek.

Obrazek
Nie będzie żadnego Kubusia Literki ani nic, ponieważ mi nalepki ładne z opisami nie wyjdą, po zastanowieniu gruntownym zdecydowałam o dwóch podwójnych grzebykach, to z powodzeniem wystarczy. Do lutowania grzebyki zapięte ze sobą krótkimi fragmentami części żeńskiej do goldpin, a to wszystko przytrzymuje do płytki gumka recepturka.

Obrazek
Do lutowania taki tymczasowy przytrzymywacz jest wygodny i wystarczający, goldpiny nie wysuną się z otworków

Obrazek
Opowieść skąd wziął się na roztworze kalafonii w spirytusie napis `nie pić` wykracza poza tematykę tego forum, zatem poprzestanę tylko na stwierdzeniu, że dobrze jest przyszłe punkty lutownicze takim lakierem przeciągnąć.

Obrazek
Zwykły pędzelek szkolny z Biedronki z powodzeniem się nadaje, a komfort lutowania potem naprawdę niezły.

Obrazek
Śladów widocznych ani uciapań nie widać po wstępnym zalutowaniu złącz, warto sobie tak życie zatem ułatwić.

Obrazek
Kawałki drucików luzem, z takich oto przewodów będą cięte małe krosy.

Obrazek
Najpierwej zabieramy się za przymiarkę dla części wewnętrznej, i jak mamy wycyrklowany jeden drucik...

Obrazek
..to przycinamy ich sobie kolejne 24, pamiętamy że mamy takich 25+25 do zrobienia...

Obrazek
Zdejmowanie izolacji nożykiem do tapet, z jednej strony około 2mm, z drugiej jakieś 4-5 mm. Obgryzaczka do przewodów okazała się przy tak króciutkich drucikach nieporęczna, a nożyk paradoksalnie szybki w pracy i bezpieczny. Wystarczy dwa, trzy razy tak jakby przeturlać drucik po ostrzu opuszkiem palca, a potem paznokciem zahaczyć ten nadcięty kawalątek izolacji i bardzo ładnie schodzi. I nie ma się co bać, a jakby co, to rany o równych brzegach szybko się goją. Fotek z tego nie ma dokładnych ponieważ mam pazurki niezrobione dziś to po raz, a po dwa rąk mi zabrakło.

Obrazek
Analogiczną sztukę pomiarową wykonujemy dla dłuższego kabelka...

Obrazek
... a następnie przycinamy ich kolejne 24 na ten światły wzór.

Obrazek
No i tapeciak i paluszki w ruch, taki akcent kina gore, po chwili mamy gotowy drugi komplet krosów.

Obrazek
To ważne - końcówki dłuższą i krótszą trzeba koniecznie pocynować, to upierdliwe się może wydawać, ale proszę mi wierzyć potem i tak będzie z lutowaniem jazda, niech się chociaż tych drucików cyna dobrze trzyma.

Obrazek
Obrazek
Lutujemy wewnętrzny zestaw krosów, deczko pod kątem

Obrazek
A następnie kładziemy na płytce w kierunku docelowych punktów lutowniczych i sprawdzamy finalnie długość, te ewidentnie przydługie skracamy ucinkami.

Obrazek
I tak przygotowana płyteczka nadaje się do masowego polutowania, punkt po punkcie.

Obrazek
Wyszło jak wyszło, grunt że się trzyma. I tu kolejna uwaga - omomierz w dłoń czy inny wskaźnik ciągłości obwodu i sprawdzamy czy pomiędzy sąsiadującymi pinami nie ma zwarcia, oraz czy na grzebyku goldpin sąsiadujące piny ale wzdłuż drucika są zwarte. Jak teraz to zlekceważymy i zalutujemy kolejną warstwę, a potem okaże się, że coś nie gra - poprawki to jest masakra.

Obrazek
Obrazek
Drugi rządek krosów, tych dłuższych - analogicznie, najpierw ustalamy je pod kątem.

Obrazek
Następnie kolejno kładziemy na docelowe piny i lutujemy pracowicie.

Obrazek
Obrazek
Finalnie powstanie taka dzierganina i tu ponownie test omomierzem, dwie zasady - piny obok mają dać przerwę, piny po długości krosa - zwarcie. I żeby nie było, że taka zajezdolna manualnie jestem - w sumie interwencji odsysaczem do cyny było cztery, wszystkie po wykryciu niedoróbek miernikiem, a na oko - niby ok było, no takie życie.


Obrazek
No przecież musi być ledzik od zasilania, element tradycyjnie obowiązkowy

Obrazek
Pod spodem druciaczek, dałam plamę bo ledzik na górze już wlutowałam, a najbliższe Vcc na dole i we środku :( no, cóż zmęczenie zwykłe, ale udało mi się jakoś posztukować i zasilanie i masę. Przy okazji zastanawiam się czy tam, na masie grzebyka nie zapodać jeszcze dodatkowego, ale tak aby nie kolidował z przyszłymi opisami, zobaczę jeszcze...

Obrazek
Test ledzika.

Obrazek
Wstępne przymiarki nóżek, nie są zbyt seksowne, bo to jednak zbyt długie słupki dystansowe i jedne calowe a drugie metryczne, ale to było pod ręką akurat, jutro się za czymś lepszym rozglądnę po domku.

No i taka oto zabawka sobie wyszła, po zrobieniu kabla taśmowego powstaną opisy i zobaczymy co to warte tak naprawdę.
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: SuperGość » środa 22 lis 2017, 07:13

tasza pisze:Finalnie powstanie taka dzierganina i tu ponownie test omomierzem, dwie zasady - piny obok mają dać przerwę, piny po długości krosa - zwarcie. I żeby nie było, że taka zajezdolna manualnie jestem - w sumie interwencji odsysaczem do cyny było cztery, wszystkie po wykryciu niedoróbek miernikiem, a na oko - niby ok było, no takie życie.
Lutowanie to lutowanie ale jak widzę że krawędzie takiej płytki ręcznie wycinanej są ładnie obrobione to wiem że całość będzie działała :D - to są te szczególiki ...

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » środa 22 lis 2017, 21:10

mono9 breakout board - d3

Kolejny wieczór dłubaniny, także z wykorzystaniem cięższego sprzętu, o którym za chwilke, a temat przewodni dobranocki to - kabel taśmowy.

Najpierw, w nawiązaniu do seksi nóżek, uzupełniam niniejszym.
Obrazek
Obrazek
Obrazek
W lokalnej składnicy złomu udało się wyszukać cztery krótkie słupki dystansowe z gwintem M3, zatem zgrabne nóżki dla płytki swej mam z głowy.

Obrazek
Obrazek
Ani za długie, ani za krótkie - zabezpieczają drutologię na brzuszku przed ewentualnym kontaktem z przewodzącymi rzeczami na stole, tu jest ok, temat zamknięty.

Obrazek
Przechodzimy do kolejnego arcyważnego elementu - kabla spinającego MB09 z moim goldpinowym cudakiem. No i tu suchar mnie spotkał, ale pretensje tylko do siebie mogę mieć, no tak. Oto proszę - około metr bieżący taśmy 64 żyłki. Ucieszyłam się jak głupia z gwizdka, że taką resztkę napotkałam w naszym sklepiku z częściami, ale pytam - czy z tego jak oderwę 50 nitek to do złącza IDC50 będzie pasowało... No będzie, będzie, pani się nie martwi, na pewno będzie. A było przyjść ze złączem i sobie przymierzyć!

Obrazek
Obrazek
Zatem wszem i wobec - tak opisana taśma 64 żyły jak na fotkach wyżej nie nadaje się do IDC50, to nie ten raster, jest minimalnie mniejszy.

Obrazek
Tu widać, jak rozjeżdża się na 49-50 pinie dopiero, pewnie dla maleńkich rwanych tasiemek 10 pin czy nawet 20 byłoby spoko, ale na takiej dużej ilości żył - różnica dyskwalifikuje tasiemkę do zaciskania w klamerce 50.

Obrazek
No i właśnie, taką oto tasiemką mnie poratowano w fabryce, naprawdę zaczynam namacalnie odczuwać ile warte są dobre relacje z naszymi macherami od przemysłowej elektroniki... Tasiemka wprawdzie ze złomu i kazano mi posprawdzać czy żyłki są ciągłe, ale to i tak zbawienie było, bo prace nie stanęły w geście bezradności.


Obrazek
Tasiemka jest cudna wręcz i pstrokato kolorowa, zajefajna po prostu.

Obrazek
Niedogodność tylko taka, że złącza ma siwrot na wywrot - są niesymetrycznie zapięte na taśmie, ot - taka była specyfika urządzenia gdzie to pracowało.

Obrazek
Jakkolwiek zabawne to się wyda napiszę szczerze - autentycznie miałam przez chwilę dylemat: czy zrobić sobie jedną dłuższą czy dwie krótsze tasiemki z tego. No bo MB09 mam dwie sztuki, a ze względu na asymetrię wtyczek - jedna do ucięcia i tak.

Obrazek
Stanęło na jednej ale dłuższej, kiedyś w końcu właściwą taśmę 50 pin dorwę, aby drugi kabelek zrobić.

Obrazek
No i tu dochodzimy do nieco stresującego etapu - jak zapiąć wtykę, aby było symetrycznie. Przymiarki na sucho, a trudność w tym, że jedno złącze z taką przewijką, co odwraca taśmę na opak, trzeba się moment zastanowić, aby odwrotnie wtyku nie zapiąć.


Obrazek
Noooo i proszę - machineria klasy heavy-duty gotowa do akcji.

Obrazek
Imadełko ma maleńkie osłonki na szczęki, zrobione z gumo-tworzywa, aby nie zmiażdżyć ewentualnie czegoś - do zaciskania złącz osłonki trzeba zdjąć. Ich elastyczność może się zemścić okrutnie nierównomiernym naciskiem i złączka albo krzywo się zapnie albo chrupnie.

Obrazek
Obrazek
Obrazek
Dociskanie mega delikatne, a pamiętajmy że przecinamy wtyczką 50 pinów, opór jest spory i trzeba naprawdę obserwować złącze, czy następnym dokręceniem śruby nie zrobimy nieszczęścia.


Obrazek
Obrazek
Obrazek
Przy dobrze wpasowanej taśmie i dociśnięciu do końca - nie ma żadnych prześwitów, jest idealnie gładko.

Obrazek
Finalnie kabelek wygląda tak, teraz zabieramy się za zawijkę odwracającą złącze IDC50

Obrazek
Obrazek
Taśmę zawijamy zaraz przy brzegu, najlepiej na krawędzi blatu.

Obrazek
I uwaga - taka sprzączka jest cholernie krucha :( to znaczy jest odporna na rozciąganie i te maleńkie pazurki naprawdę mocno będą się trzymać w prowadnicach wtyku, ale jeden nierozważny ruch w bok podczas montażu i mogą się ułamać i po sprzączce, tu akurat klejenie już wiele nie pomoże...

Obrazek
Gotowy wtyk, już z zawinięta taśmą, faaajnie wyszło nieskromnie powiem.

Obrazek
Szybki teścik, jakby całość mogła wyglądać

Obrazek
Obrazek
No i wyszło, że mam pod kolor wtyki na taśmie i gniazda na płytkach, ale super!

Obrazek
Okazało się jednak, że taśma deczko sztywna i merda mi płytką po stole - oto gumkowo-recepturkowe rozwiązanie skrócenia taśmy, jest śmiesznie, ale rozmiarowo - akurat.

I tu nastąpiło podłączenie do tej MB09, którą się tak nieustannie zabawiam i... ledzik od zasilania nie zaświecił. No ale jak to? Przecież był sprawdzany na krokodylkach i 5V...na chwilę mnie zaniemogło jakoś.

Obrazek
Ano tak, dałam odwłoka wręcz fatalnie. I to jest konsekwencja takich ad-hoc lutowanek i improwizacji, kiedy nie ma się świeżej głowy i robi się coś mechanicznie. Tyle razy obracałam płytką w te i nazat, że zwyczajnie pomyliłam górę i dół na złączu i katoda leda szła na któryś z pinów VIA...

Obrazek
Fix szybki na szczęście i obyło się bez konsekwencji w stylu uszkodzony VIA, bo bym się chyba wtedy zapłakała...

Obrazek
Przy okazji łatki, zgodnie z tym co pisałam wcześniej - dodany grzebyk z masą, będzie łatwiej się zapinać do solderless-breadboard

Obrazek
Obrazek
No i wystawka na koniec, pozostało teraz określenie kolejności sygnałów - w pionie są zgodne z dokumentacją MB09, ale mogą (choć nie muszą) być w odbiciu lustrzanym względem pionowej osi, to potencjalna konsekwencja zawinięcia taśmy. Prawdę powie inwentaryzacja z natury wykonana omomierzem. Ale to już jutro, ze świeżym spojrzeniem. Teraz chill.

-- edytka --
wojtek pisze:(...)to wiem że całość będzie działała :D - to są te szczególiki ...

Dziękuje.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » piątek 24 lis 2017, 18:41

mono9 breakout board - d4

...i to w zasadzie chyba koniec dygresji na temat płytki-przelotki do Motorolkowego modułu.

Obrazek
Wczorajszym porankiem w takim pędzie do fabryki się zbierałam, że zapomniałam na śmierć płytki swej zabrać do przymiarek gdzie VIA-1 a gdzie VIA-2. No ale skoro możliwości są tylko dwie, to sobie chytrze wyrysowałam oba warianty w Kicad i druknęłam ślicznie - któryś przecież w domu musi pasować, ech...

Obrazek
Projektowanie takich nalepek w Kicad na warstwie Dwgs_User (Drawings) ma tę zaletę, że możemy sobie położyć komponent np. złącze w naturalnych rozmiarach, operujemy rastrem 100 mils (lub podział, 50 czy 25), jest po prostu wygodnie, potem drukujemy sobie tylko warstwę rysunkową i gotowe.

Obrazek
Karteczka już trafiona i odpowiednio przycięta i naklejamy ją przy pomocy zwykłej biurowej taśmy klejącej. Zabezpieczy to mechanicznie przed paluchami, a zdjąć w sumie łatwo, gdybym na inny koncept wpadła. No i płytka nie będzie uciapana klejem, a resztki po taśmie klejącej bardzo łatwo jest usunąć.

Obrazek
Tak nalepka na miejscu swym się prezentuje.

Obrazek
A tu już z zamontowanymi słupkami dystansowymi w formie czterech nóżek - to jest stan docelowy.

Obrazek
No i tak aktualnie cała piaskownica ma wygląda, jest dość wygodnie (póki co), a i Analog Discovery 2 odetchnęło z ulgą zapewne, bo ostatnio jakoś na dalszy plan Księżniczka Motorola je zepchnęła na fotkach wszelakich.

Obrazek
Płytka przelotka już zaprzęgnięta do regularnej pracy przy następnym odcinku dobranocki ... jest fajnie.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [6809] "10099-MBC9 MONOBOARDCOMPUTER 6809" - wiedźmy dłubanie nad uruchomieniem starocia

Postautor: tasza » piątek 24 lis 2017, 21:30

No, skoro tyle hałasu już narobiłam o płytkę-przelotkę do Motorolki, to wypadałoby teraz wykazać jej przydatność w domu i zagrodzie, zatem proszę - dziś na dobranoc pooglądamy sobie działanie przetwornika analogowo-cyfrowego cyfrowo-analogowego AD558.

:arrow: http://www.analog.com/media/en/technica ... /AD558.pdf

To jeden z moich rodzynków w kolekcji scalaków, ceramiczna obudowa ze złotym dekielkiem, no cudny on po prostu jest i ponoć już z kategorii tych kultowych. A ze względu na aparycję nie wyładował jeszcze w żadnym projekcie, szkoda mi zwyczajnie. Bo on służy głównie jako pokazowa atrakcja, taki freak-show.

Obrazek
Obrazek
Tu układzik AD558 w pełnej krasie, nie sposób mu uroku odmówić, takie zdanie moje.

Obrazek
Obrazek
A tak wygląda w instalacji testowej, tu płytka-przelotka już nie jest celem, ale środkiem, zagoniona do ciężkiej pracy.

Obrazek
Schemat podłączenia do VIA jest trywialny zaiste, no ale dla formalności dwa słowa: przetwornik pracuje w najprostszym z możliwych układzie aplikacyjnym, oba wejścia wybierające /CS są stale aktywne, więc zmiany na szynie danych układu są natychmiast odzwierciedlane na wyjściu analogowym, opóźnienie wiąże się tylko z czasem konwersji.

Pierwszy programik sterujący generujący przebieg piłokształtny (sygnał narasta liniowo) sprowadza się (pomijając inicjalizację VIA) do trzech linijek w assemblerze :) o, proszę:

ad558-saw.asm pisze:

Kod: Zaznacz cały

.loop:      
      inc   VIA1+ORA
      bra .loop


Bo skoro I/O w Motce jest mapowane jako pamięć RAM, a procesorek ma możliwość inkrementacji zawartości komórki o wskazanym adresie - zrobienie piły to nieustanny inc na porcie do którego zapięłam przetwornik, samo się zawinie z FF na 00 i nie trzeba nic więcej.

Cały programik oczywiście tu:
:arrow: https://github.com/bienata/monoboard9/b ... 58-saw.asm

A tak wygląda na ekraniku AD2:
Obrazek

No i zabawa się rozkręca, to może teraz wężownicę zrobimy czyli przebieg okresowy o kształcie sinusoidalnym...
Łatwo zgadnąć, że potrzeba przetwornikowi tabeli z wartościami funkcji sin w dziedzinie kolejnych próbek, oczywiście można ową wygoglować i skubnąć komuś z projektu. Ale że ja przy okazji ćwiczę sobie SciLab, to może zrobimy tak:

Obrazek

A tu cały skrypcik SciLab generujący wartości sinus dla kolejnych 256 próbek, pokrywających jeden pełen okres przebiegu.

:arrow: https://github.com/bienata/monoboard9/b ... ne-gen.sci

Skrypcik generuje próbki ale też układa je do pliku tekstowego waves.inc jako zestaw stałych. Ten plik potem wykorzystam w programie głównym jako definicje przebiegu, a clue programiku to te parę linijek:

ad558-sine.asm pisze:

Kod: Zaznacz cały

.init
      ldx   #SINE_WAVE_256
.gen      
      lda   ,x+
      sta   VIA1+ORA
      cmpx #SINE_WAVE_256+$FF      ; $100 produces a sample gap :)
      bne   .gen
      bra .init


A kompletny programik tu:
:arrow: https://github.com/bienata/monoboard9/b ... 8-sine.asm

Pierwsze uruchomienie i oczywiście zdziw - aaaale scerbate toto wysło...

Obrazek
Obrazek

No a to tylko trywialny błąd mój w określeniu końca tabeli, śmieszne więc zostawiam na pamiątkę.

A przy okazji można popatrzeć jak wygląda pod lupą kwantyzacja - sinus nie jest liniowy ale jak można się spodziewać - schodkowy, AD558 ma rozdzielczość osiem bitów więc schodki o wartości 1/256 pełnego zakresu są łatwo zauważalne.

Obrazek
Obrazek

Poprawiony programik generuje czysty sinus o częstotliwości dwieście parę Hz.

Obrazek

A tu inna ciekawostka - sinus jak sinus - ale zobaczmy jak wygląda FFT naszego węża z AD558 generowanego przez Motorolkę.

Obrazek

Pierwsze zaznaczenie to podstawowa harmoniczna, okolice 200-coś Hz, ale to nic nowego, ciekawe natomiast jest drugie, to w okolicy 60kHz. Może ktoś pamięta eksperymenty z timerem na wolnym wybiegu i ciekawostkę, że nie chciało się PB7 przełączać szybciej niż ~60kHz. No to właśnie tak wygadają zakłócenia generowane przez port pracujący na maksymalnej szybkości, powstają podczas skokowej zmiany wartości z jednej na drugą, tak na poważnie - powinno się te szkodniki odfiltrować jakimś górnozaporowym filtrem...ale to kiedyś.

--- edytka nocna ---
dwa razy wolniej, będzie trzy razy szybciej, miało być C/A ozywiście
Ostatnio zmieniony sobota 25 lis 2017, 02:38 przez tasza, łącznie zmieniany 1 raz.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)


Wróć do „Retro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości