1,951

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Dzięki Montezuma, zobaczymy co odpowie.
Ze swojej strony dodam, że Stefanowi Dorndorfowi jesteśmy mega wdzięczni za QMEG-a i za HyperXF.
Rozumiem też, że to już było kiedyś, a dziś każdy ma swoje życie, więc jeśli Stefan nie będzie miał ochoty do tego wracać, to też nie ma co rozpaczać ani jakoś bardzo mocno cisnąć, bo i tak mamy świetny system, a koncerty życzeń, to wiadomo, że zawsze można wymyślać:-)

1,952

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Nie korzystałem z HMODE.COM ale przecież trzeba go jakoś uruchomić, więc w trakcie działającej na komputerze gry i chęci zmiany dyskietki nie bardzo jest jak to zrobić. Na jedno wychodzi użycie wewnętrznego programu z ROM-u.

W zasadzie wymyśliłem bardzo prostą metodę na zmianę partycji przypiętej do D1: - odłączam stację od komputera, podłączam ją na chwilę do drugiego, którym zmieniam partycję i przełączam z powrotem stację do pierwszego kompa:-) W dzisiejszych czasach to żaden problem, przecież każdy z nas ma po kilka Atarek:-) hehehe:-)

Montezuma, skoro znasz osobiście Stefana Dorndorfa i siedzi on nadal w tematach Atari, to może można by go namówić na mały upgrade ROM-u do XF na fali popularyzacji klonów XF551 i używania ich z flopami 3,5" ostatnimi czasy? W zasadzie jest jedna rzecz, którą warto by zrobić i załatwiła by mega rewelacyjnie współpracę z partycjami. Chodziło by o dodanie dodatkowego modu, który mógłby działać sobie identycznie jak multi(M), z tą różnicą, żeby zmiana numeru stacji nie przesuwała wszystkich czterech partycji w zakresie D1-D4...D4-D7, tylko żeby zapętlała te partycje w obrębie czterech stacji D1,2,3,4->D2,3,4,1->D3,4,1,2->D4,1,2,3.

Edit: albo jeszcze mi przyszło do głowy alternatywne zrobienie innego moda: taki multi, który bez względu na to jaki numer stacji wybierzemy w XF551, to stacja zawsze widoczna by była jako D1, ale zmiana numeru stacji zamiast zmieniać ten numer, to by wybierała kolejne partycje, czyli jak wybierzemy D1, to mamy pierwszą partycję, a jak D2 to drugą, D3 trzecią, D4 czwartą. Mod taki był by właśnie przydatny do grania w grę wielodyskietkową, gdzie musimy zmieniać dyskietki zawsze w D1 i nic więcej nie potrzebujemy.
Ta druga propozycja to tak gdyby było może łatwiej coś takiego zrealizować. Oczywiście wiem, że to taki trochę koncert życzeń, ale kto wie, może by się Stefan Dorndorf przychylił gdyby wiedział jak wiele osób z tego korzysta, a myślę, że z racji obecnych projektów związanych z XF551 jest szansa, że się spopularyzuje nam to 3,5" do malucha.

1,953

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Pewnie tak, ale ja nie twierdzę że nie ma takowych, tylko że ja nie trafiłem.
Nowości wszystkie jakie oglądam mi chodzą, a stare największe hity też wszystkie chodzą.
Parę miałem przypadków, że coś nie chodziło, ale poszukałem innych wersji i też chodzą.

1,954

(23 odpowiedzi, napisanych Sprzęt - 8bit)

RoF działa z QMEG-iem bez problemu, z resztą działa też dokładnie z tej samej dyskietki, ale pod warunkiem, że w HyperXF podmapujemy tą partycję z RoF jako normalne D1. Działa też bez względu na ustawioną prędkość w QMEG-u.
Nie działa tylko jeśli chcemy ją zabootować z innej stacji niż D1 - test ten tylko pokazał, że nie wszystko da się odpalić metodą podmiany numerów stacji w QMEG-u, ale to miało służyć metodzie odpalania gier wielodyskowych z jednej partycjonowanej dyskietki, czyli taka kombinacja alpejska - da się tak, ale nie wszystko.

Nawiasem mówiąc co do samego działania gier pod QMEG-iem, to chyba są wg mnie jakieś mity, że coś tam nie działa. Ja osobiście używam tylko i wyłącznie QMEG-a, mam kolekcję swoich ulubionych gier, gdzie jest wszystko co mi przyszło do głowy, testowałem kilkaset tytułów i nie spotkałem się z grą, która by nie poszła z QMEG-iem. Używam ostatniej oficjalnej wersji QMEG 4.04, a wszystkie gry odpalam z SIO2SD lub z XF551 z HyperXF.
Zdarzają się z niektórymi tytułami dwa powtarzalne problemy (oba łatwe do rozwiązania):
1. Gry, które np. wyświetlają jakąś animację podczas ładowania (np. Yoomp), nie wczytają się z turbo prędkością, ale dla tych gier wystarczy wyłączyć turbo - jednak ja lubię mieć wszystko w turbo (i mam), więc szukam sobie innej wersji (np. znalazłem Yoomp bez tej czołówki animowanej w trakcie wczytywania i już).
2. Drugi problem, który występuje również czasami, to faktycznie niektóre gry nie chcą się wczytać pod QMEG-iem i komp wisi po wczytaniu, ale każdą taką grę znalazłem w innej wersji, która pod QMEG-iem zadziałała bez problemu. Poza tym zdarza się to bardzo rzadko, z bardzo niewielkim odsetkiem gier, w zasadzie pojedynczymi tytułami, nawet już nie pamiętam którymi.

Jakkolwiek w swoich dwóch podstawowych Atarkach oprócz QMEG-a mam również XL-OS, więc gdyby nawet się w końcu kiedyś trafiła taka gra, która pod QMEG-iem nie pójdzie, to w ostateczności mogę się przełączyć bez problemu na XL-OS, ale na razie nie miałem jeszcze ani razu takiej potrzeby.

1,955

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Ok, przetestowałem opcję ze zmianą numeru stacji w QMEG. Da się dzięki temu tak zrobić żeby móc korzystać ze wszystkich czterech "dyskietek" zapisanych na jednej fizycznej dyskietce, i żeby komputer widział je nam wszystkie w D1 w odpowiedni sposób "przekładając".

Zakładam, że mamy dyskietkę z czterema partycjami i zapisane wszystko na niej jak należy - wg pierwszego posta, tam opisałem jak to się przygotowuje.

I teraz robimy tak:
1. Włączamy stację bez dyskietki, włączamy kompa i przełączamy stację w tryb multi (klawisz M)
2. Wkładamy naszą dyskietkę i wciskamy Select+Reset -uruchomi się menu QMEG
3. Wciskamy Shift+4 co spowoduje, że stacja nr 4 będzie widziana jako D1
4. Upewniamy się, że mamy po lewej stronie napis COLD - jeśli nie to przełączamy na COLD klawiszem Tab.
5. Wciskamy Reset i bootuje się nam "dyskietka" D4 jako D1

Przy takim działaniu teraz możemy zmieniać numer stacji w XF551 co powoduje przesuwanie kolejnych "dyskietek" na pozycję D4, która w naszym QMEG-u jest ustawiona jako D1 - osiągnęliśmy co chcieliśmy.
Partycje na dyskietce możemy tak na prawdę nagrać sobie w dowolnej kolejności, ale zapisanie ich w odwrotnej kolejności tak jak zaproponował lopez ma taką zaletę, że w czasie przełączania numerów stacji w XF551 "zgadza nam się" numer stacji z numerem dyskietki, którą chcemy wybrać, więc łatwiej się połapać którą "dyskietkę" wybrać. Jeżeli zapiszemy partycje po kolei, to musimy więcej myśleć żeby odpowiednią podpinać zawsze pod D4 w XF551 i się nie pomylić.
Z całego tego systemu bardzo wygodnie korzysta się za pomocą przełącznika numerów stacji, który zaaplikowałem w moim wyświetlaczu tracków, bo przycisk mam z przodu stacji, a na wyświetlaczu wyświetla mi się d1,d2,d3,d4.

Tylko teraz żeby nie było za kolorowo, to tak: przetestowałem to dla pojedynczych obrazów bootowalnych i nie ze wszystkim to nam zadziała. W praktyce okazało się, że np. Rescue on Fractalus nie chce się zabootować przy takich kombinacjach i po odczycie kilku sektorów z dyskietki robi czarny ekran i wisi, a po chwili wyświetla LOAD ERROR. Z tego co zauważyłem, ten Rescue on Fractalus wczytuje się "nietypowo", tzn. jest animacja i efekty dźwiękowe w trakcie wczytywania, ścieżki na dyskietce lecą nie po kolei, a prędkość odczytu jest zmienna i taka po prostu nietypowa. Wskazuje to na fakt, że pewnie Rescue on Fractalus wykorzystuje jakieś własne procedury odczytu, co pewnie powoduje konflikt z procedurami QMEG-a podmieniającymi numery stacji i pewnie dyskietka po wczytaniu włąsnych procedur psuje podmiankę, próbuje dalej czytać z D1, ale nie ma tam już D4, więc się sypie. To taka moja teoria, nie wiem na pewno czy to tak dział, ale w każdym razie istotne jest to, że nie wszystko uda się zabootować z D4 wykorzystując mechanizm QMEG-a.

Najlepiej by było, gdyby bezpośrednio zmieniając numer stacji w XF551 dało się "obracać" cztery dyskietki w obrębie D1-D4 zamiast ich przesuwać w zakresie D1-D7 jak to jest w tym ROM-ie rozwiązane, no ale to już by wymagało modyfikacji ROM-u HyperXF, a ja tego zrobić nie potrafię...

1,956

(26 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

@lewiS tego Break'a wrzucasz w perhydrol albo w wodę utlenioną w kremie na dwa-trzy dni, obserwujesz kiedy się zrówna z resztą klawiszy i masz klawiaturę elegancką jak z jednego egzemplarza:-) Perhydrol 35% znajdziesz w hurtowniach chemicznych, lub wodę utlenioną w kremie 12% np. na allegro. Jedno i drugie kosztuje od kilku do maksymalnie kilkunastu zł, jedno i drugie można wykorzystywać wielokrotnie.

1,957

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Właśnie dokładnie to sobie pomyślałem, że można by na dyskietkę wrzucić taką grę czterodyskową. Myślałem, że jak się zmieni numer stacji, to obrócą się w kółko, ale okazało się, że przesuwają się tylko, więc chyba nie da się tak zrobić jak pisze uicr0Bee.

Szczerze mówiąc wrzucając opis tutaj liczyłem trochę na to, że ktoś wymyśli jak to zrobić, a też chciałem dopytać, czy gry czterodyskowe nie potrafią czytać sobie kolejnych dyskietek z kolejnych numerów stacji bez przekładania?

A i jeszcze pytanie: co w QMEG-u robi Shift+2,3,4, bo nie wiem? Podmienia właśnie tą stację wskazaną numerem z shiftem na D1?

I jeszcze kolejne pytanie: jakie gry są na czterech dyskietkach, żebym mógł to potestować jak znów znajdę chwilę na zabawę?

Aha, jeszcze dodam, że ten podział na dyskietki, który opisałem z numerami ścieżek i stron dyskietki, to dzięki wyświetlaczowi tracków, który zbudowałem, bo widać ładnie gdzie jeździ głowica i która się odzywa:-)

1,958

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Tak się bawiłem moją XF551 z flopem 3,5" 720kB i ROM-em HyperXF i pomyślałem, że się podzielę wrażeniami z obsługi w tym systemie partycji na dyskietkach, bo działa to bardzo fajnie.

ROM HyperXF pozwala podzielić dyskietkę 720kB na 4 partycje, co działa tak, jak byśmy mieli 4 osobne dyskietki na jednej dyskietce, przy czym możemy używać do wyboru albo wszystkich czterech dyskietek widzianych jako dyskietki w czterech odrębnych napędach, albo też możemy podmapować tylko jedną z tych partycji i mieć po prostu jedną stację z jedną z tych dyskietek.

Żeby z tego systemu skorzystać trzeba najpierw przestawić stację w tryb multi, żeby potrafiła nam podzielić dyskietkę na partycje. Robi się to tak, że włączamy sobie stację bez dyskietki, odpalamy komputer i wyskakuje nam menu od HyperXF. Wciśnięcie klawisza M powoduje przełączenie stacji w tryb multi. Teraz możemy sobie wyłączać i włączać kompa, restartować i cokolwiek z nim robić, a stacja będzie pracowała w trybie multi aż jej znów nie przestawimy inaczej, lub nie wyłączymy jej zasilania.

Testy zacząłem od SpartaDOS X. Pod Spartą stacja ustawiona w tryb multi widoczna jest jako cztery stacje, a dyskietka 3,5" DD podzielona jest tak, że:
- w pierwszej stacji mamy stronę pierwszą od ścieżki 0 do 39,
- w drugiej stacji mamy stronę pierwszą od ścieżki 40 do 79,
- w trzeciej stacji mamy stronę drugą od ścieżki 79 do 40,
- w czwartej stacji mamy stronę drugą od ścieżki 39 do 0.
Tak to wygląda fizycznie na naszej dyskietce, jednak komputer widzi nam tutaj cztery normalne odrębne dyskietki, które możemy sformatować w pojedynczej gęstości na 90kB lub w podwójnej na 180kB.
Formatujemy każdą dyskietkę osobno, zrobiłem to zarówno w formacie Sparty, jak i w formacie Atari i normalnie wszystkie cztery dyskietki śmigają niezależnie.

I teraz tak: jeżeli XF551 mamy ustawioną fizycznie na D1, to dyskietki są widziane jako D1,D2,D3,D4. Natomiast jak fizycznie XF551 przestawimy na inny numer stacji, to numerki się przesuwają do przodu, czyli jak ustawimy np. D3, to nasze cztery dyskietki są jako D3,D4,D5,D6.

Jak już mamy tak przygotowaną poczwórną dyskietkę, to możemy korzystać też z pojedynczo wybranej tylko jednej z nich, nie musimy używać zawsze wszystkich czterech w trybie multi. Do tego służą inne tryby HyperXF. Jeśli chcemy mieć tylko jeden numer stacji i podmontować pod nasz numer stacji tylko jedną z czterech dyskietek, to odpalamy HyperXF bez dyskietki i z menu wybieramy literę A,B,C,D, co spowoduje podmontowanie tylko jednej z partycji jako naszą dyskietkę. Jeśli potrzebujemy tylko pierwszej partycji, to w ogóle nie musimy nic robić, bo jak odpalimy sobie stację, to pierwsza dyskietka jest automatycznie widziana jako jedyna.

Kolejne testy przeprowadziłem z grami całodyskowymi. Można w ten sposób wrzucić sobie cztery niezależne gry całodyskietkowe na jedną dyskietkę. Potrzebny do tego jest oczywiście kopier jakiś sektorowy, ale ja miałem o tyle łatwo, że korzystam z QMEG-a, a on ma taki kopier wbudowany, co więcej korzysta z rozszerzonej pamięci, więc przerzuca sobie w całości dyskietki. Wziąłem sobie cztery gry w formacie atr: Road Race, Bruce Lee, Blue Max i Rescue on Fractalus.
Zrobiłem tak: włączyłem kompa ze stacją bez dyskietki ustawioną jako D1, żeby odpaliło się HyperXF i ustawiłem na tryb multi wciskając klawisz M. Następnie przestawiłem sobie tą stację na D2, żeby mieć swoje cztery partycje pod D2,D3,D4,D5. Teraz podłaczyłem SIO2SD i wybrałem jako D1 obraz dyskietki Road Race. Kopiowanie w QMEG robi się bardzo łatwo: wybieramy 1 (pierwsza stacja), wciskamy R(read) mamy zielony ekran, wciskamy Strat i odczytuje nam się sektorowo cała dyskietka do pamięci. Teraz wciskamy numer stacji, na którą chcemy zapisywać np. 2 i wciskamy W(write) mamy czerwony ekran wkładamy dyskietkę i wcviskamy Start - dyskietka najpierw się sformatuje (tylko w obrębie swojej partycji) i następnie zapisze sektor po sektorze. Operację powtarzamy dla wszystkich czterech dyskietek.
Żeby pograć w wybraną grę, to odpalamy najpierw kompa z włączoną stacją bez dyskietki, wybieramy A,B,C,D w zależności która chcemy grę, wyłączamy kompa, wkładamy dyskietkę, włączamy kompa i startuje nam wybrana gra.

Ogólnie jestem tym systemem zachwycony, więc bardzo polecam wszystkim. Dodam tylko jeszcze, że mając QMEG i HyperXF wszystko co powyżej opisałem działa nam cały czas w systemie turbo i śmiga bardzo szybko. Bajka:-)

1,959

(62 odpowiedzi, napisanych Fabryka - 8bit)

Po odczekaniu na produkcję płytek i po przerwie urlopowej całość dokończyłem.

Mamy nowy wsad, który obsługuje dwa warianty pracy:
- wersję uproszczoną - czyli sam tylko wyświetlacz tracków, bez żadnych bajerów,
- wersję pełną - z dodatkową obsługą przycisków, którymi można zmieniać numer stacji d1,d2,d3,d4

W najprostszej wersji podłączamy tylko podstawową płytkę, na której jest wyświetlacz i mikrokontroler.
Wystarczy podpiąć tylko zasilanie (VCC i GND) i trzy kabelki bezpośrednio ze złacza flopa: TRACK0, STEP, DIR.
Takie podpięcie daje nam działający w pełni wyświetlacz tracków bez dodatkowych bajerów.

Dodatkowo do płytki podstawowej można dopiąć dwie diody LED, które zapalają się sygnalizując pracę górnej i dolnej głowicy.
Żeby to zadziałało, to musimy ze złącza flopa dopiąć jeszcze czwarty kabelek z sygnałem SIDE.

Do tego momentu wyżej opisane rzeczy zadziałają nam z dowolną stacją 3,5" lub 5,25" na złączu shugart/ibm. Czyli nie tylko w XF551, ale również np. w stacjach od Atari ST, Amigi, czy PC.

Idąc dalej możemy jeszcze dopiąć do płytki podstawowej dwa przyciski oznaczone jako lewy i prawy.
Przycisk lewy służy do zmiany numeru stacji d1,d2,d3,d4. Zmiana następuje natychmiastowo i stacja od razu jest przełączona na odpowiedni numerek i tak widziana przez Atari.
Prawy przycisk natomiast służy do zapisania aktualnie wybranego numeru stacji (wyświetlonego na wyświetlaczu) w pamięci EEPROM mikrokontrolera jako numeru domyślnego. Po ponownym włączeniu stacja będzie się zgłaszała nam z tym numerkiem.
Zmiana numeru stacji polega na wystawianiu odpowiedniej kombinacji 00,01,10,11 na dwóch dodatkowych wyjściach z płytki oznaczonych S1 i S2. Żeby nam to działało w XF551, to musimy tutaj podpiąć dwa dodatkowe kabelki, które trzeba doprowadzić do elektroniki XF551 w miejsce dipswitchy/zworek, które trzeba wylutować lub rozłączyć, i zabezpieczyć, żeby nie było możliwości ich zwarcia do przeciwnego stanu niż podawany przez mikrokontroler.

Jeżeli nigdy nie wybieraliśmy numeru stacji i nie zapisywaliśmy go do EEPROM, to wyświetlacz nie będzie nam pokazywał numeru przy starcie i mamy tylko czysty wyświetlacz tracków Taka jest sytuacja początkowa zaraz po zaprogramowaniu mikrokontrolera. Natomiast jeśli już numer stacji wybierzemy i zapiszemy w EEPROM, to zawsze przy włączaniu wyświetlacz pokaże nam aktualny numer stacji przez dwie sekundy na powitanie. Jeżeli nie chcemy mieć tego powitania, to należy włączyć zasilanie trzymając prawy przycisk - powoduje to wykasowanie EEPROM-u, co sygnalizowane jest wyświetleniem się na chwilę 88 i powrót do uproszczonej wersji. W przypadku gdy nie ma ustawionego żadnego numeru stacji dyskietek, to piny S1 i S2 ustawione są tak jak dla stacji d1.

Załączam szereg zdjęć jak to sobie poskładałem u siebie. Stacja NEC 720kB 3,5" z epoki, elektronika to klon XF551 z ROM-em HyperXF, całość zbudowana w obudowie od SF354. Podłużne przyciski dopasowane również z epoki ze starego magnetowidu:-) Jak ktoś chce zobaczyć całość w działaniu, to wrzucam link do filmiku: https://drive.google.com/open?id=14raEa … At2voSyeDg

I teraz tak. Są dwie możliwości zanabycia drogą kupna ode mnie tego cudeńka.

1. Samo PCB - płytka podstawowa, oraz dorzucam płytkę pod przyciski/LED-y, chociaż zaznaczam, że płytka ta była robiona pod indywidualny mój jedyny w swoim rodzaju egzemplarz z przyciskami od magnetowidu - płytka ta druga jest dorzucona gratis, można wykorzystać, nie trzeba.
Koszt samego PCB to 15zł.

2. PCB +gratisowe pcb pod przyciski/LED-y opisane powyżej +zestaw elementów (zaprogramowany Attiny2313, wyświetlacze siedmiosegmentowe, tranzystory, rezystory, kondensatory, goldpiny). Zestaw nie będzie zawierał przycisków, dwóch diod LED, oraz kabelków - są to elementy, które trzeba sobie dobrać pod indywidualnie grzebane swoje jedyne i niepowtarzalne DIY:-)
Koszt takiego zestawu to 45zł.

W obu wariantach koszt wysyłki 9zł poleconym priorytetem, jak ktoś woli, to może być kurierem za 14zł, innych opcji wysyłki nie przewiduję.

Bardzo proszę o zapisy w miarę możliwości kto chce i może to jak najszybciej, bo potrzebuję oszacować ile kupić tych wyświetlaczy, bo ich nie mam, a nie chcę za dużo przestrzelić z ilością. Komplet elementów będę miał w ciągu kilku dni, pod koniec nadchodzącego tygodnia będę mógł realizować wysyłki. Ilość płytek ograniczona, więc kto pierwszy ten lepszy.

Na koniec publikuję kod źródłowy z komentarzami w celach edukacyjnych. W załączniku wrzucam też skompilowany wsad.

/*
 * trackDisplayProg.c
 * rev B
 * Created: 2019-05-19 18:37:50
 * Author : Mq
 */ 

#define F_CPU 1000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <util/delay.h>

#define AnL (1<<PA0)
#define AnR (1<<PA1)
#define Leds (1<<PB0)
#define S1 (1<<PD4)
#define S2 (1<<PD5)
#define Btns (1<<PD6)
#define Trk00 (1<<PD0)    // fdd pin 26
#define Dir (1<<PD1)    // fdd pin 18
#define Step (1<<PD2)    // fdd pin 20
#define Side (1<<PD3)    // fdd pin 32

uint8_t Digits[] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21,0x43};
                //   0    1    2    3    4    5    6    7    8    9    d

volatile uint8_t Mode = 0;    //0 track; 1 drive
uint8_t DrvNr = 0;
uint8_t DrvNrOld = 0;
volatile uint8_t TrkNr = 0;
volatile uint8_t DisplNr = 0;
uint8_t Autobit = 0;
uint8_t SideTmp = 0b1000;
volatile uint8_t BtnL = 0;
volatile uint8_t BtnR = 0;
volatile uint8_t Led1 = 0;
volatile uint8_t Led2 = 0;
volatile uint16_t LedsOff = 0;

int main(void)
{
    DDRD &= ~(Trk00 | Dir | Step | Side | Btns);    //Trk00,Dir,Step,Side,Btns    0 in
    DDRD |= S1 | S2;                                //numer stacji                1 out
    DDRA |= AnL | AnR;                                //AnL, AnR                    1 out
    DDRB = 0xff;                                    //port B - wyjscia            1 out

    PORTD |= Trk00 | Dir | Step | Side | Btns;        //Trk00,Dir,Step,Side,Btns    1 pull-up
    PORTD &= ~(S1 | S2);                            //numer stacji                0 D1
    PORTA |= AnL | AnR;                                //AnL, AnR                    1 off
    PORTB = 0xff;                                    //port B                    1 off

    DrvNr = eeprom_read_byte( (uint8_t  *) 0x00);
    if (DrvNr>3) { DrvNr = 0; }
        else { DisplNr = 101+DrvNr; }        //ustalenie powitania: nr stacji lub zero jesli nie ustawiono
    DrvNrOld = DrvNr;
    if (DrvNr==1) PORTD |= S2;        //d2
    if (DrvNr==2) PORTD |= S1;        //d3
    if (DrvNr==3) PORTD |= S1 | S2;    //d4

    //int0 - impulsy step
    GIMSK |= (1 << INT0);                    //włącz przerwanie z INT0
    MCUCR=0x02;                                //przerwanie z INT0 wyzwalane zboczem opadającym
    
    //timer1 - multipleksowanie wyswietlaczy
    TCCR1B |= (1 << WGM12);                    //ustaw timer w tryb CTC
    OCR1A = 31;                                //ustaw do ilu liczy timer -1MHz/64=15625(1Hz) -31(500Hz)
    TCCR1B |= ((1 << CS10) | (1 << CS11));    //CS10 włącza timer, CS11 ustawia preskaler na Fcpu/64
    TIMSK |= (1 << OCIE1A);                    //zezwolenie na przerwania dla CTC timer1

    sei();                                    //zezwolenie globalne na przerwania

    _delay_ms(100);                            //czas na sprawdzenie przyciskow
    if (BtnR==1) {                                        //wcisniety prawy przycisk podczas startu
        DrvNr = 0;                                        //d1
        DrvNrOld = 0;                                    //d1
        PORTD &= ~(S1 | S2);                            //d1
        eeprom_write_byte( (uint8_t  *) 0x00, 0xff);    //kasuje eeprom
        DisplNr = 88;                                    //zapalenie wszystkich segmentow wyswietlaczy
        BtnR = 0;
    }
    _delay_ms(2000);                        //wyswietlanie powitania przez 2sek.

    while (1)
    {
        if (SideTmp!=(PIND&Side)) { LedsOff = 3500;    SideTmp = (PIND&Side); }    //uaktywnienie ledow przy zmianie Side
        if (Mode==0) {                                                            //Mode=0 wyswietlanie tracków
            DisplNr = TrkNr;                                                    //wyswietlaj tracki
            if (LedsOff>0 && !(PIND&Side)) { Led1=0;Led2=1; }
            if (LedsOff>0 && (PIND&Side)) { Led1=1;Led2=0; }
            if (LedsOff==0) { Led1=0;Led2=0; }
        }
        if (Mode==1) {                                                            //Mode=1 wybór stacji
            DisplNr = 101+DrvNr;                                                //wyświetlaj nr stacji
            Led1=0;    Led2=0;
            if (BtnL==1) {                                        //lewy przycisk zmiana nr stacji
                if (DrvNr>2) DrvNr=0; else DrvNr++;
                if (DrvNr==0) PORTD &= ~(S1 | S2);                //d1
                if (DrvNr==1) { PORTD &= ~S1; PORTD |= S2; }    //d2
                if (DrvNr==2) { PORTD |= S1; PORTD &= ~S2; }    //d3
                if (DrvNr==3) PORTD |= S1 | S2;                    //d4
                _delay_ms(300); BtnL=0;
            }
            if (BtnR==1) {                                        //prawy przycisk zapis nr stacji w eeprom
                unsigned char i;
                for (i = 0; i < 20; i++)
                {
                    Led1 ^= 1;
                    Led2 ^= 1;
                    _delay_ms(25);
                }
                if (DrvNr != DrvNrOld) { DrvNrOld = DrvNr; eeprom_write_byte( (uint8_t  *) 0x00, DrvNr); }
                BtnR = 0;
            }
        }
        if (BtnL==1 && Mode==0) { Mode = 1; _delay_ms(300); BtnL=0; }    //lewy przycisk mode:zmiana stacji
        if (BtnR==1) BtnR=0;                                            //prawy przycisk nic
    }
}

ISR(INT0_vect)                                //obsluga przerwania z INT0
{
    if (TrkNr<79 && !(PIND&Dir)) TrkNr++;
    if (TrkNr>0 && (PIND&Dir)) TrkNr--;
    LedsOff = 3500;                            //czas do wygaszenia ledow -3500(7sek)
    Mode = 0;
}

ISR(TIMER1_COMPA_vect)    //przerwanie compare timera1
{
    if (TrkNr>0 && !(PIND&Trk00)) TrkNr = 0;    //wyzeruj licznik jesli glowica na track00
    if (LedsOff>0) LedsOff--;                        //odliczaj czas do wygaszenia ledow
    Autobit ^= 1;
    PORTB = 0xff;        //off
    if (Autobit==1)
    {
        PORTA &= ~AnL;    //0 on
        PORTA |= AnR;    //1 off
        PORTB = Digits[DisplNr/10];        //wyswietlenie dziesiatek
        if(Led2==1) PORTB &= ~(Leds);    //dolna glowica
        if(!(PIND&Btns)) BtnL=1;        //przycisk lewy
    }
    else
    {
        PORTA |= AnL;    //1 off
        PORTA &= ~AnR;    //0 on
        PORTB = Digits[DisplNr%10];        //wyswietlenie jednosci
        if(Led1==1) PORTB &= ~(Leds);    //gorna glowica
        if(!(PIND&Btns)) BtnR=1;        //przycisk prawy
    }
}

Potwierdzam, że z tą diodą zadziała tak jak napisał x_angel. Odkryłem ten temat kiedyś jak podpinałem jednocześnie adapter myszy na PS/2 zrobiony na PIC-u i do drugiego portu mój (S)NESctrl. W (S)NESctrl mam wszędzie diody w liniach, a w adapterze myszy dołożyłem też tak samo pod tą linię drugiego przycisku i wszystko śmiga. I tak jak pisał _tzok_ anodą w stronę złącza, katodą w stronę adaptera. Diodę można dać 1N4148, są takie małe w obudowie pod footprint 0805, na pewno da się gdzieś tam wcisnąć w adapterze. Można też dać jakąś diodę Schottkiego, one mają niższy spadek napięcia w kierunku przewodzenia, to stabilniej działa w niektórych Amigach 600/1200, bo niektóre płyty tam mają "słabą masę" na tym pinie od drugiego przycisku i potem może być kłopot czasami - ale jak używasz tego adaptera tylko do Atari, to bez znaczenia, bo w Atari zadziała Ci poprawnie każda dioda w tym wypadku.

1,961

(402 odpowiedzi, napisanych Fabryka - 8bit)

@Sikor, ad.5. miałem na myśli, żeby prowadnice takie po prostu spasowywały carta, nie na wcisk, tylko przy założeniu, że nie ma ani zatrzasków, ani też nie jest na wcisk, tylko po prostu na śrubkę, a prowadnice ewentualnie miałem na myśli w sensie, żeby się ten cart równo zamykał.

@ccwrc, nie rozumiem kwestii psucia estetyki śrubką pod spodem. Przy serii XE śrubka jest pod spodem, więc jej nie widać, a dla XL jest z tyłu więc też jej nie widać. Oryginalny cart miał tam logo Atari, więc faktycznie popsuł by się wygląd, ale obudowy Sikora nie będą miały tego logo, więc cart jak dobrze rozumiem będzie po prostu płaski pod spodem. Wiele cartów miało śrubkę i nawet te oryginalne z epoki z Warner z metalowym spodem też miały taką śrubkę i estetyki to nie psuło.

Jeszcze mnie naszła myśl, że w kwestii nie psujących estetyki śrubek, to mogą one być w takich cienkich zagłębieniach/rurkach jak np. były skręcane joysticki, pady, czy inne plastikowe zabawki - ale to już tak tylko wspominam odbiegając nieco od tematu.

1,962

(402 odpowiedzi, napisanych Fabryka - 8bit)

Faktycznie ccwrc porusza kwestie w słusznych kierunkach. Sikor, ja bym sugerował, żebyś pokonsultował to kilka razy łącznie z wizualizacjami projektów i żebyś robił na bieżąco poprawki i wrzucał na fora biorąc pod rozwagę uwagi wszystkich możliwych ludzi, bo to może mieć i na pewno będzie miało bezpośrednie przełożenie na końcową ilość zainteresowanych osób i być może powodzenie całego przedsięwzięcia...

Ja się osobiście nie znam jakie muszą być zaczepy czy tam śrubki, ale dla mnie ważne jest, żeby dało się to otwierać i zamykać bez popsucia. Jak zatrzaski są problemem, to ja bym optował za zrobieniem zamiast nich tylko prowadnic jakichś wchodzących jedne w drugie, typu jakieś wpusty/wypusty, żeby cart zamknięty się nie rozjeżdżał w boki, dać śrubkę od spodu, żeby wierzchu nie szpeciła i tyle.

Miejsce na naklejkę też jestem za tym, żeby było w rozmiarze takim jak w oryginalnych cartach, żeby dało się np wykorzystać oryginalne naklejki, lub tworzyć nowe w stylu tych starych oryginałów.

1,963

(15 odpowiedzi, napisanych Bałagan)

Słuchajcie, tak wam podpowiem, bo myślę sobie, że gdyby to narysować precyzyjnie w jakimś wektorowym programie, np. w Corelu, to można by takie coś wyciąć w pierwszej lepszej firmie, która robi wycinanki z plexi i kosztowało by to grosze. Robią to różne agencje reklamowe itp, jeśli są nastawieni na większe prace reklamowe, to takie drobiazgi wytną za grosze od ręki. Kiedyś wycinałem sobie na takiej zasadzie fronty do różnych obudów urządzeń elektronicznych, więc pamiętam, że to nie był żaden problem jeśli się robiło ze standardowych powszechnych grubości plexi.
Idąc dalej tym tropem widziałem, że pojawiło się ostatnimi czasy u Chińczyków mnóstwo firm, które robią wycinanki z plexi i to też kosztuje bardzo mało, ale nie pomnę teraz żadnego konkretnego adresu...

Ok, to na samo PCB nie róbcie listy, załatwiam od ręki na PW, natomiast na kit proszę się zapisywać.

Lista na kit (zestaw do samodzielutowania:-)):
1. Artu2tu 2szt.
2.

Ta modyfikacja w zasadzie podmienia tylko standardową pamięć DRAM na SRAM, mapa pamięci i sposób dostępu się nie zmienia.

Candle, nie jestem odkrywcą, nowatorem, ani tym bardziej geniuszem. Jedynie zaprojektowałem PCB do gotowego schematu i zrobiłem kilka sztuk płytek na potrzeby własne, oraz mogę się podzielić pozostałymi. Jak ktoś jest chętny, to mogę również udostępnić pliki Eagle do dowolnego użytku. Dodatkowo zaproponowałem wspólny zakup części, żeby osoby zainteresowane tematem mogły zaoszczędzić na kosztach wysyłek, bo do projektów DIY do retro kompów niestety trudno jest dostać części w jednym miejscu, a kupując w kilku różnych miejscach przepłaca się na wysyłkach. Jeśli jesteś zainteresowany płytkami, albo kompletem części, to zapraszam do współudziału w kosztach. Akcja jest jednorazowa i płytek jest dostępnych niewielka ograniczona ilość.

Lotharek: też jestem daleki od wciągania się w dyskusje poza tematem merytorycznym wątku. Perinoid wspomniał o Twoim produkcie, to napisałem o różnicy względem sygnału EXTSEL, bo na Twojej stronie nie ma o tym mowy, ani płytka będąca tam na zdjęciach nie uwzględnia tego sygnału, a przynajmniej nigdzie tam takiej opcji nie widać, ani opisana nie jest. Zrobiłeś nową wersję, to fajnie, bo ten sygnał warto uwzględnić, zwłaszcza, że jest to proste w implementacji. Dobra robota.

Wątek ma na celu rozpropagowanie sposobu implementacji pamięci statycznej w retro komputerach jako waloru edukacyjnego i stymulowanie dalszych projektów, więc bardzo proszę o ewentualny udział w wątku w tym kontekście. W pozostałych kwestiach nie dyskutuję, jedynie za słówko "zjechany" przepraszam jeśli kogoś uraziłem, może faktycznie było trochę nieeleganckie.

@pancio.net, ale napisałeś że "dwa zestawiki", a na liście że PCB. Samo PCB to nie zestawik, bo to tylko płyteczka jedna mała:-)
Popraw proszę, bo jak chcesz samo PCB, to wystarczy napisać do mnie PW bez żadnych zapisów i jest od ręki. "Zestawiki" natomiast rozumiem jako komplet elementów wraz z PCB, a na to proszę o zapisy, bo wtedy części muszę dopiero zamówić i muszę wiedzieć ile potrzeba jeśli są chętni.

Szczerze mówiąc pomyślałem o tym samym jak brałem się za budowę rozszerzenia i myślałem, że to poprawi kwestię pasków. Jednak u siebie nie zauważyłem wyraźnej różnicy z pamięcią SRAM w stosunku do DRAM. Prędzej poprawę w tym względzie dawała mi wymiana kondensatorów, ale to też różnie. Jak wiadomo każdy egzemplarz ma bardziej lub mniej widoczne te paski. Moim zdaniem tutaj chodzi nie tyle o samą pamięć, tylko o sygnały zegarowe, które pomimo podmiany pamięci nadal nam po płycie przecież biegają.
Mam jeszcze jedną płytę, która z tego co pamiętam chyba dawała bardzo wyraziste paski, postaram się przy wolnej chwili wylutować z niej procesor i sprawdzić pod tym kątem czy na niej zaobserwuję jakąś różnicę.

1,969

(2 odpowiedzi, napisanych Software, Gry - 8bit)

Ja używam i polecam tych, które opisałem pokrótce wraz z informacją skąd je wziąć tutaj: http://www.atari.org.pl/forum/viewtopic … 89#p247789

A tak w ogóle, to spoko, nie widzę problemu: jest sobie produkt Lotharka, niech sobie będzie, myślę, że jedno drugiemu nie przeszkadza. Lotharek robi produkty jakościowo dobre czego też nie neguję, target jak mniemam ma głównie na zachód, a my tu sobie dłubiemy DIY we własnym małym podwórku:-) W zasadzie dobrze też, że wspomniałeś o jego produkcie tutaj, bo faktycznie na forach powinno się ułatwiać trafianie linkami z jednych miejsc w kolejne dotyczące tego samego tematu gdyby ktoś w przyszłości czegoś sobie o tych sprawach szukał.
Moja praca, którą się dzielę w projektach w całości przeze mnie otwarcie udostępnianych ma też podtekst taki, żeby stymulować dalszy rozwój i powstawanie kolejnych projektów innych osób z wykorzystaniem naszej wspólnej wiedzy, którą mam nadzieję dalej pogłębiać.

@perinoid: Raczej nie "ma już", tylko "ma dopiero". Tori zaprojektował to jak wspomniałem już dawno temu. Produkt, który przytoczyłeś jest zjechany współcześnie właśnie ze schematu Toriego, ale nie uwzględnia poprawki dotyczącej sygnału EXTSEL, której Tori już nie opublikował i to w zasadzie jedyna różnica w samym układzie, poza oczywiście faktem, że jest produktem komercyjnym a nie DIY.
Projekt Toriego, jak i moja implementacja od początku ma charakter DIY, nie zamierzam z nikim, ani niczym konkurować, nie będę też tego produkował, ani handlował tym na szeroką skalę, a jedynie jest to akcja jednorazowa, bo chciałem coś takiego sobie zbudować i spopularyzować jednocześnie ten bardzo dobry projekt Torimana w celu udostępnienia go tym, którzy lubią sobie pomajsterkować i pogrzebać w Atari. Dobrałem też elementy takie, które są tanie i łatwe do lutowania i pozwolą na pobawienie się tym we własnym zakresie w domowym zaciszu:-)
W "Fabryce" idea jest też taka, żeby opisać zasadę działania, udostępnić schematy, itd. W wątku pominąłem dokładny opis działania, ale podlinkowałem na początku stronę Toriego, gdzie to wszystko jest dokładnie przedstawione.

Kilka lat temu Toriman zaprojektował układ podłączenia pamięci statycznej SRAM zamiast podstawowych 64kB DRAM. Tori zbudował i uruchomił z sukcesem prototyp oraz opublikował kompletny projekt z opisem działania na swojej stronie: http://raven1.magix.net/static/static.html

Od dawna chodziło mi po głowie zbudowanie wg tego projektu rozszerzenia, które zmieści się w całości pod procesorem, z wykorzystaniem takich elementów, które każdy będzie w stanie samodzielnie polutować sobie w domu. Z rozmów z Torimanem wiem, że udostępnia on projekty do ich budowy w domowym zaciszu w celu propagowania projektów DIY, a więc i ja chciałem dołożyć coś od siebie dla ludzi w tej materii i na podobnych zasadach udostępnić to, co zaprojektowałem. W załącznikach wrzucam więc schemat i wzór płytki pcb.

Moje rozwiązanie bazuje na tanich i póki co dostępnych jeszcze w sprzedaży kościach pamięci W24512AK o pojemności dokładnie 64kB - czyli idealnie tyle ile potrzebujemy. Dodatkowo kość, którą zaproponowałem występuje w obudowie DIP, co tym bardziej powinno ułatwić samodzielny montaż rozszerzenia.
Rozszerzenie wymaga bardzo mało elementów - poza kością pamięci musimy wlutować tylko jeden układ 74HCT00 w wersji smd oraz dwa kondensatory 100nF również w wersji smd i na koniec dwie listwy precyzyjne żeńskie.
Montaż w komputerze również jest bardzo prosty: usuwamy oryginalną pamięć DRAM, wyciągamy procesor z płyty głównej, montujemy w jego miejscu podstawkę jeśli nie mieliśmy, rozszerzenie wpinamy w podstawkę, a procesor w rozszerzenie. Dodatkowo podpinamy/lutujemy dwa kabelki - jeden z nich dostarcza sygnał CASINH, drugi EXTSEL. Na płytce są w tym celu przewidziane miejsca na goldpiny, lub można przylutować po prostu kabelki bezpośrednio do płytki.
W tym miejscu dołożę wyjaśnienie. Na stronie Torimana był przedstawiony schemat pierwotny, który nie uwzględniał jednej dość istotnej rzeczy. Właśnie sygnału EXTSEL. Sygnał ten jest używany w komputerach serii XL na złączu PBI, oraz w serii XE ze złączem ECI. Sygnał ten potrzebny jest jeżeli chcemy podłączyć zewnętrzne urządzenie dostarczające nam z zewnątrz pamięć RAM. Takie zewnętrzne urządzenia odłączają wewnętrzny RAM podpinając się w jego miejsce i do tego właśnie służy linia EXTSEL. Jeżeli nie uwzględnimy tej linii w naszym rozszerzeniu, to nie będzie możliwe wówczas korzystanie np. z zewnętrznych rozszerzeń pamięci, czy też kartridży diagnostycznych zawierających własny RAM.
W każdym razie, opisana tutaj wersja układu zawiera obsługę tej linii, czego implementacja była bardzo prosta i wymagała tylko wykorzystanie jednej nadmiarowej bramki z układu 74HCT00, która w pierwotnym schemacie Torimana pozostawała niewykorzystana, a więc nie trzeba było nawet dokładać ani jednego dodatkowego elementu, a sygnał EXTSEL mamy w razie czego uwzględniony w naszym układzie:-)

Na zdjęciach z testami rozszerzenie jest podłączone na płycie 65XE bez złącza ECI. W wypadku tej rewizji płyty sygnał EXTSEL nie jest używany, a kabelek został podpięty na wyrost, tylko po to, żeby pokazać gdzie się go podpina. W przypadku tej płyty głównej wystarczy podpiąć EXTSEL na rozszerzeniu SRAM bezpośrednio do plusa zasilania. Również w przypadku pozostałych rewizji płyt gdyby nie interesowało nas połączenie EXTSEL i z góry założymy, że nie jest nam ono potrzebne, wówczas możemy też podać tam po prostu plus zasilania. Najprościej definitywnie możemy uzyskać pozbycie się sterowania EXTSEL zwierając podczas lutowania nogę 13 i 14 układu 74HCT00. Na zdjęciach kabelki są podpięte złączkami pomiarowymi, bo przekładałem testowo rozszerzenie do różnych płyt, ale docelowo oczywiście warto te kabelki normalnie porządnie przylutować na płycie i dostosować ich długość elegancko:-)
Opis gdzie podłączyć owe dwa kabelki znajduje się na schemacie.

Ponieważ zamawiając płytki na własny użytek, jak zwykle zamówiłem więcej, więc są u mnie dostępne dla chętnych osób.
Możliwości są dwie: koszt płytki to 15zł (dostępne od ręki), ale jeśli chcecie, to mogę zebrać dodatkowo komplety elementów tworząc kompletne zestawy do samodzielnego montażu. Koszt takiego kompletnego zestawu to było by 45zł.
W obu przypadkach należy doliczyć koszt wysyłki 9zł.
Jeżeli kogoś interesują gołe płytki PCB, to proszę o kontakt na PW, dostępne są od ręki.
Osoby zainteresowane kompletem elementów do samodzielnego montażu proszę zapisać się w wątku na listę na kompletne kity do montażu, żebym wiedział ilu jest chętnych. Jak zbierze się lista, to zamówię elementy, pamięci muszę ściągnąć z Chin, więc czas realizacji to pewnie będzie około miesiąca.

Swój wzór płytek, a także schematy publikuję oraz sprzedaję płytki w porozumieniu i za zgodą Torimana.

Dziękujemy Torimanowi za świetny projekt:-)

Tori, niby tak, ale pamiętaj, że to nie jest tylko układ logiczny na bramkach, w którym wyjścia zmieniają się dynamicznie cały czas reagując na stany pochodzenia od czujników. W stacji jest sobie mikrokontroler, który interpretuje te stany tylko w określonych miejscach swojego programu. Możliwe, że mikrokontroler oczekuje zbocza a nie stanu, wtedy zasyfiony transoptor takiego zbocza nigdy nie wywoła. Ewentualnie od razu po starcie interpretuje, że jest na ścieżce zero, a później już go ten stan nie interesuje, więc dalej wózek sobie jeździ, tylko nie czyta nic z flopa, bo wydaje mu się, że jest na innej ścieżce niż jest w rzeczywistości. Tak sobie gdybam:-)

Podpieram podejrzenia Torimana. Nie znam się na stacjach 5,25" za bardzo w sensie praktycznym, bo takowych nie posiadam, ale ostatnimi czasy dużo bawiłem się tematem track0 w stacjach 3,5" przy okazji czyszczenia i naprawy jednego zabytkowego NEC-a oraz przy okazji konstruowania wyświetlacza tracków. Generalnie jest tak, że stacja 3,5" po włączeniu/resecie zjeżdża zawsze do track0, żeby zadziałał czujnik track0 i wtedy stacja wie na jakiej ścieżce ma głowicę. Później już stacja z tego czujnika nie korzysta, tylko liczy sobie tracki w górę i w dół, więc jak już ustali sobie położenie, to zjeżdżając na track0 nie będzie sprawdzała czujnika, więc nie stuknie w razie jego awarii. Jeżeli w 5,25" jest tak samo (a chyba tak), to ewidentnie kłopot z czujnikiem track0. Z doświadczeń moich z restaurowania NEC-a powiem, że raczej albo jest czujnik uszkodzony, albo jakiś kawałek elektroniki przy nim, albo jest zasyfiony, więc "nie widzi". Może być też kwestia regulacji tego czujnika (jego położenia zgodnego z track0), ale to raczej mało prawdopodobne, bo ten czujnik sam z siebie się raczej nie przestawia, a z doświadczenia też wiem, że jak się go trochę przesuwa w jedną czy drugą stronę, to nie robi różnicy. On nie musi być bardzo precyzyjnie ustawiony, bo głowica porusza się pełnymi krokami i czujnik musi tylko wskazywać czy dany krok jest tym zerowym, a dokładne położenie tego kroku reguluje ustawienie silnika z prowadnicami itd., a nie czujnik.
Inaczej mówiąc czujnik mówi nam tylko czy dany krok jest krokiem zerowym a nie czy jest precyzyjnie ustawiony na ścieżce dyskietki. Natomiast na starcie/resecie/zmianie dyskietki głowica jedzie do uzyskania sygnału z czujnika lub do oporu - stąd stuknięcie jeśli czujnik w porę nie zadziała.

1,975

(402 odpowiedzi, napisanych Fabryka - 8bit)

Fajne porównanie z klockami lego. Było by mega super gdyby obudowę dało się tak składać. Materiał gdyby był porównywalny, to też było by super. Jakiś czas temu przy okazji mojego snesctrl opisywałem komuś wrażenia z grania padem snes w porównaniu z chińskimi zamiennikami, i właśnie pisałem o tym, że pady snes oryginalne są z podobnego plastiku jak klocki lego. To daje zupełnie inne odczucia zarówno wzrokowe, jak i dotykowe, wrażenie o wiele lepszej jakości. Gdyby obudowy cartów dało się zrobić z tak dobrej jakości plastiku, to było by super.