26

(7 odpowiedzi, napisanych Programowanie - 8 bit)

@Bober
Racja. I mało tego sam sobie to sprowokowałem. Cart startuje mi z A000-BFFF. Tam sobie ustawiam jakąś DL itp. I teraz robię następujący błąd. Ponieważ ATARI OS nie lubi jak się włącza i wyłącza carta. Po prostu traktuje to jako "wykryto cartridge" i chce robić reset. To ja robię taki trik:

lda #01
sta CRITIC

Takie coś załatwia, że podczas każdego VBLANK nie sprawdzana jest różnica między TRIG3 i GINTLK. Generalnie super sprawa, bo mam więcej wolnych cykli i szybciej się ładują dane z carta. I w ogóle mogę pstrykać na RD5...
ALE
CRITIC też wyłącza jakieś odświeżania rejestrów sprzętowych względem ich cieni. To też powoduje, że ANTIC ma coś tam nie ustawiane i jak przed CRITIC był na $Axxx i wczytywany XEX coś tam namiesza i robi śmietnik to ANTIC powoli wędruje w stronę $D5xx. Jak ją tylko dotknie to masakra. O tym czy doczłapie się do tego adresy decyduje jak długo to trwa i jaki śmietnik był. No i na małych XEX wszystko działało. Ale jak XEX był długi i jeszcze jak miał dużo tych bloków DOSowych FFFF to nagle cyk... i jakiś dziwny bank włączony. :/

Za diabła nie idzie tego wyłapać. W emu breakpointy na procka nic nie dają, bo tu ANTIC ładuje się na magistralę i chce czytać.

Natomiast okazuje się, że trzeba zrobić bardzo prosty trik

lda #$01
sta CRITIC
lda #$00
sta DMACTL

czyli dla aktywowanych operacji krytycznych czasowo, dla bezpieczeństwa wyłączyć ANTICa. Żeby nie trafił przez przypadek na odczyt D5XX gdzie standard maxflash szaleje.

I po operacjach czytania na carcie

lda TRIG3
sta GINTLK
lda #$00
sta CRITIC

I ładnie pojawia się obraz wtedy kiedy trzeba, nawet jak XEXy mają jakieś czołówki w czasie ładowania to wszystko śmiga. Wyłączenie CRITIC powoduje, że już VBLANK ładnie pilnuje ANTICa. A że TRIG3 i GINTLK jest identyczne to nie ma reakcji na pstrykanie cartem.

No taki niuans :)

Edit
@Fox
W ogóle przed wczytywaniem XEXa wyłączyłem DMA. Ale niektóre gry po kilku blokach włączają sobie czołówkę. Potem ja czytając dalej znowu włączam CRITIC i za random-czas klapa.

27

(7 odpowiedzi, napisanych Programowanie - 8 bit)

Zawiesiłem się na następującym problemie. Robiąc loader wczytujący różne XEXy z carta w standardzie Maxflash wyszło mi takie coś, że czasami ni stąd ni z owąd przełącza mi się bank w carcie. Pozakładałem "milion" breakpointów w EMU i wszystko OK. Ale... Niektóre gry (ZORRO) składają się z wielu bloków tych DOSowych i podczas wczytywania ustawiają jakieś śmieci na DL. Zwykle podczas wczytywania to nie przeszkadza, że tam jakieś cudaki po ekranie latają.

No ale wygląda na to, że przy ANTICu ustawionym na pałę, może się zdarzyć taka sytuacja, że sięgnie on szyną aż do D5XX. A tam maxflash nawet na READ przełączy bank. No masakra jakaś. Czy to w ogóle możliwe, żeby ANTIC z jakąś randomowy listą hulał po całej przestrzeni? Da się go jakoś przytemperować?

28

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

Tak w Decathlonie jest jakiś algorytm całkujący... Zmiana stanu joya podbija, a brak powoduje opadanie siły, więc pewnie da się pobudzać go trochę wolniej. W każdym razie co ramkę sprawdza stan joya. Żeby słupek siły był zablokowany na maks to musi być co ramkę zmiana (i to robi ten hack w przykładzie, zmienia BEQ na BNE sprawdzające czy w nowej ramce była zmiana). Bez tego słupek tylko pulsuje do maksa, co łatwo sprawdzić włączając emu na mniejszym speedzie.

29

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

To jest ciekawe, że kiedyś graliśmy i na 20ms a teraz jest super jak jest 80ms a jeszcze jak dojdą jakieś chmury to czasem po 200ms jest delay. Ale też zaobserwowałem, że odpalenie ATARI młodemu pokoleniu daje jakąś dodatkową frajdę właśnie z tego pixelperfect i tych 20ms. Po prostu błysk, dym i "zabity". Bezwzględnie, bezlitości, bez dyskusji.

No ja czyściłem tego na zdjęciu joya. Tak mu się robi co jakieś kilka lat (bo ma już 35). Mikrostyk (ta blaszka w środku) pokrywa się jakimś nalotem no i robią się takie dziwne opóźnienia. Może to jest to?

W sumie mógłbym wymienić na nowy styk, no ale skoro da się naprawić. Joy ma jeden tylko przycisk, toporny że aż ręka boli. Swoją drogą kolega w owym czasie miał lutownicę kupioną w sklepie identyczną jak rączka tego joya :) Dlatego obstawiam, że mikrostyk też jest bez jakiejś filozofii i pasuje od "Żuka".

Natomiast w mechanizmie mikrostyku to ten ruch nie jest taki idealnie prostopadło-równoległy. Więc przy nalocie pierwsze dotknięcie może mieć faktycznie jeszcze dużą rezystancję. Dopiero jak się "wwierci" to łapie.

... robię ten "oscyloskop" :)

EDIT
Decathlon sprawdza co 20ms. Założyłem breakpoint na odczycie PORTA i co odczyt przyrasta na tablicy czasu o 0,02s. Czyli maksa można nabić machając 25Hz. No to dzisiejsze pady wymiękają :)

EDIT2
Nie mogłem się powstrzymać i zrobiłem turbohacka dla Decathlona. Nawet z tym 110 przez płotki nie jest łatwe :)

30

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

@Mq
Dobrze piszesz. Takie coś da niezłą regularność detekcji. Bo raczej szybciej niż linia to programy nie wykrywają zmian.

Taki coś mi przyszło do głowy, że jak jest program ANTICa i np. co linie ma LMS z przerwaniem DLI to w zasadzie można mieć przygotowane wcześniej te kombinacje naciśnięcia przycisków i kierunków w postaci grafik. I teraz co linię sprawdzam port i ustawiam adres następnej linii na tą odpowiednią grafikę.
Powstanie taki obraz działania styków. W zasadzie można się trigować jak oscyloskop, czyli od pierwszego skoku do 239 linii i stop. Powiedzmy, ileś do tyłu i będzie wykres jakości działania przycisku.
Aż to sprawdzę, czy taki numer przejdzie :)

31

(5 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki!

32

(5 odpowiedzi, napisanych Programowanie - 8 bit)

Poszukuję 1024 bajtów z polskimi fontami. Taki gotowy 1kB do wklejenia w MADS do programiku co robię (wieloplatformowego). Robię taką wybieraczkę do cartów jak "MaxFlashStudio", ale żeby i inne standardy cartów łyknęło. No i chciałbym, żeby polskie tytuły były PO POLSKU :) Od strony PC bazuje na UTF-8. Wszystko sobie przekodowałem no ale lenistwo odrzuca mnie od pikselowania fontów. A całkiem możliwe, że ktoś to już zrobił :)

33

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

Jak masz omomierz taki z epoki (analogowy) do dwie szpile i do kabelka joya. Zobaczysz po wskazówce czy zanim nie złapie to nie lata w te i nazad. Bo jeszcze może być tak, że "gra" sprawdza joya w jakiś tam czasach a u Ciebie zanim zaskoczy styk to "podzwoni" przez chwilę. Wtedy powstaje randomowy delay. U mnie takie kwiatki się robiły i ostatecznie rozebrałem i joya i mikrostyk (na te sprężynki) i czyściłem. Bo mój joy ma tylko jeden przycisk bo to epokowe polskie dzieło :)

EDIT:
A jak często odświeża ATARI port? Tam da radę szybciej niż 50Hz? Bo przyszedł mi taki pomysł, żeby zrobić tester na zasadzie "waterfall". Raczej by pokazało czy styki utraciły na kontakcie.

34

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

This is a standard 16kB cartridge. It can be easily converted to XEGS-128kB (S-XEGS).

35

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

Tak, logika musi być dość złożona, gdy chcę, żeby $D5xx było jakimś ostatnim bankiem pamięci flash. Wtedy trzeba błyskiem przestawić adresy. Podobny trik robi S-XEGS, gdy pojawia się nS5 to ma włączyć ostatni bank.

Natomiast jak przestrzeń może się pokrywać, to już jest banał.

Teraz carty zgodne z maxflashem mają:
nCE = nS5
Robię trik:
nCE = ( nS5 AND nCCTL )

i wtedy "chyba" A000-BFFF widzi cały bank a $D5XX widzi tylko $B500-$B5FF? Tego drugiego nie jestem pewien :/

Generalnie to próbuję wybrnąć z problemu konwersji ATR do CAR, gdzie muszę gdzieś dać kod obsługi carta. Niestety ale programy nie stosując żadnych zasad i latają po całej pamięci włącznie ze stosem. Jak to jest krótki kod na kilka bajtów to gdzieś wciśnie. Ale jakby był dłuższy (np. zapisy itp) to kłopot. A zakres $D500-$D5FF nie są w stanie zepsuć bo to jest już sprawa sprzętowa.
Natomiast bez sensu byłoby lutować ekstra pamięć na obsługę $D500-$D5FF. Więc kombinuje jakby tu jedną kostką pokryć dwa zakresy gdzie tylko jeden z nich jest wyłączany.

36

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

Nie za bardzo można zignorować bo coś w sobie mają.

Załóżmy, że cart ma 8kB pamięci. I można go włączać/wyłączać zapisem do D500. No to ten cart pojawiał się będzie w obszarze A000-BFFF. Tu jest wszystko jasne.

Ale skoro taki blok jest podłączony na wszystkich pinach A0-A12 do pamięci carta. I teraz pojawia się nCCTL, który również aktywuje CE pamięci (identycznie jak nS5), to jakiś blok z tego 8kB musi się pojawić.
Bo to by oznaczło, że wysyłam polecenie do D500, żeby cart się wyłączył. RD5 idzie w niski. Pojawia się RAM, ale nCCTL nadal może dobrać się do carta tylko poprzez stronę $D5. I normalnie kod wykonać.

Natomiast totalną masakrę mózgową robi zagadka, gdy mamy cart maxflash reagujący na odczyt i zapis z MOŻLIWOŚCIĄ czytania z $D500
i robimy JMP $D500.
I chcemy zaraz po tym od $D500 wywołać kod JMP $A000.
To w którym banku powinien być JMP, w którym $A0 a w którym $00?
:)

37

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

Ale potrzebuje przetestować taki trik:
A000-BFFF normalnie pstrykane jak w maxflash8mbit, ale z jednym wyjątkiem banki przełączam tylko na ZAPIS do $D500
Natomiast na odczyt z $D5XX chcę podłączyć bank carta, bez względu na to, czy on jest ON czy OFF.

Taki trik spowoduje, że w zakresie $D500-$D5FF mam procedurę niezniszczalną (nie musze trzymać kopii w RAM), odporną na włączanie i wyłączanie carta oraz na wszelkie przełączania ROM/RAM i pamięci rozszerzone itd.

Tylko, który fragment bloku 8kB podepnie się pod te 256 bajtów.
Jeżeli wyższe adresy są nie ruszane. Tzn. że
D5 -> 11010101
To by znaczyło, że:
A15 - 1
A14 - 1
A13 - 0
Te idą na złącza carta:
A12 - 1
A11 - 0
A10 - 1
A9 - 0
A8 - 1
10101 to jest $15 czyli pod $D5XX podepnie mi się $1500 - $15FF obszaru carta.
Podsumowując miałbym pod D5 kopię kodu z banku od 5376 do 5631.
Takie okienko 256-bajtowe widziane ZAWSZE przez dziurkę $D5XX,

38

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

Jeżeli nCCTL=0 to podpinana jest strona $D5xx. Ale to jest adres 8-bit.

Jaki stan na złączu carta w tym czasie mają: A12, A11, A10, A9, A8 ?
Same ZERO
Same JEDEN
Czy kopia magistrali ATARI czyli 10101?

39

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

A jak wstaje układ analogowy od wizji w ATARI? Może na domyślnym czerwonym i jest to jedyny moment kiedy ATARI ma czerwoną żyletę.
Tak zaprojektowali, że ten kolor jest "serwisowy" :)

40

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

@Cyprian
Na pewno nie ma nigdzie w OS ustawiania koloru czerwonego? Bo ja raz tak miałem, albo źle wsadziłem carta albo coś tam miałem na nim źle przylutowane. No i po włączeniu było ciemno czerwone tło. O tyle było to dziwne, że przecież jakieś LDA STA musiałby się wykonać. A jak magistrala zwarta to niby jak.
Też mam 65XE bez ECI. Widocznie one bootują prosto z piekła.

41

(117 odpowiedzi, napisanych Programowanie - 8 bit)

@tebe
Pierwsza linijka jest OK.
Ale ciekawe bo w kodzie masz WHITE a u mnie przejęło główny kolor terminala (czyli zielony). W sumie powinno na DARKGRAY też jakoś mądrze zareagować.
Tło jest czarne, ale minimalnie przeźroczyste, więc coś się tam przebija jak na pulpicie jest jasna tapeta.

Ja bym kolorowanie włączył na opcję. Bez opcji niech idzie jak "w matrixie".

Edit: dodałem JPG

42

(117 odpowiedzi, napisanych Programowanie - 8 bit)

Skompilowałem "Mad Assembler 2.1.5 Latest" pod MacoOS i mam taką dziwną rzecz, której nie było w poprzedniej wersji.
Na zwykłe polecenie "mads" odpowiadał jaka wersja itp. Teraz wydawało mi się, że jest pusto. Ale jak zaznaczyłem całe okno do skopiowania to okazało się, że coś tam wyświetla, ale jest to CZARNE. A że mam czarne tło terminala to guzik widać.

Da się jakoś wyłączyć to kolorowanie tekstu, albo żeby MADS wiedział, żeby nie pisać czarnym fontem jak tło jest czarne?

43

(32 odpowiedzi, napisanych Fabryka - 8bit)

Ja pozbywam się płytek po różnych pomysłach. Polutowane i działa. Nie będę tego potem odtwarzał, czyli jest to co mi zostało:
https://allegrolokalnie.pl/oferta/atari-cartridge-yjf

Idzie po kosztach, no i jak jest SpartaDOS-X to 5% leci dla chłopaków z teamu.

44

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

Super, że się udało ;)

P.S. Jak znam życie, to dopiero teraz Cię to wciągnie :)

45

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

To przynajmniej już wiesz, że pamięci są OK. Nie mam schematu żeby zobaczyć gdzie RD4 się pląta po płycie. Ale możliwe, że ktoś wkładał w czasie pracy cartridge, które miało na stałe RD4 do VCC i uwalił coś.

Edit.
Na schemacie idzie wprost do PAL16L8.

Edit.2
Jeszcze możesz sprawdzić, czy w czasie kiedy testuje "czerwone kropki" to nS4 na złączu karta jest na stanie niskim. Będzie wiadomo, że system chce się dobrać do carta.

46

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

Jeżeli masz techniczne możliwości to odpal któryś z poniższych starterów.
Jeżeli wyskoczy Ci tak jak na obrazku to raczej na pewno RD4 się knoci.

47

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

No ja piszę o bugu w Atari800, bo źle interpretuje samotny RD4.

48

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

A emulator się wiesza :)
Dokładnie:
Zrobienie CAR z kodem 53  ma zaemulować wsadzenie cartridgea ale TYLKO w zakres 8000-9FFFF. Fizycznie to jest RD4=5V RD5=0V. Dla systemu RD4=5V to jest wciąż CART OFF. Więc system powinien, przejść do inicjacji dyskietki potem albo BASIC albo SELF TEST.
Jeżeli RD5=5V to CART ON i robiony jest skok $BFFx (x - najpierw init a potem run). Tymczasem emulator atar800 dla tego typu carta (edit: tylko z RD4=5V) odruchowo skacze do INIT a tam są zera i całość się wiesza.
Po prostu cart RD4=5V jest taki specyficzny, jest, ale nie podlega inicjalizacji. A w atari800 wszystko leci na jedno kopyto.

49

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

POKE oszukało SELF TEST. Wartość 192 jest na zdrowym ATARI kiedy to podczas procedury RESET system robi detekcje ile masz pamięci. I teraz tak. Jakbyś miał uszkodzoną pamięć to któryś z kwadracików byłby czerwony. Jak są wszystkie tzn., że coś Ci wisi na zakresie adresowym, gdzie zwykle siedzą carty. Ja bym teraz poszedł w dwie drogi. Jedną to wsadził pustego RAM-CARTa, który to podstawi RAM i lekko ogłupi system. Druga droga, wsadził carta który steruje liniami RD4 i RD5 (carty od Sikora S-XEGS). Taki cart wyłączony ściągnie logiką RD4 i RD5 do masy. I teraz tak, jak nie ściągnie to walnięty MMU. A jak ściągnie to styki carta do czyszczenia.
No możesz też wziąć ode mnie "ATARI Cartridge PCB - Wyprowadzona magistrala" i na chamca drutem zewrzeć RD4 i RD5 do masy.

Z wciśniętym Option wchodzi odrazu do Self Test.

A czyli emulator ATARI800 ma buga :)

50

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

Trop z RD4 jest całkiem dobry.
Gdy pod emulatorem spreparowałem cartridge z kodem 53 (Low bank 8 KB cartridge) wypełniony FF-ami (bo tak objawia się gdy RD4 zaskoczy a carta nie ma). To wyskakuje BASIC, potem BYE i test kończy się na kropkach w dwóch rzędach.
Ale bez BASICa system się wiesza. Też tak masz, że po włączeniu z OPTION wiesza się?

EDIT.
Jeżeli BASIC startuje to daj:
POKE 740,192
BYE
i zrób test pamięci