1,751

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

Nie mam stacji 5,25, używam tylko 3,5", ale na moje to ROM A i ROM B właśnie tym się różnią, że nie będzie jeden działał na stacji 3,5, a drugi na stacji 5,25:-)

Aha, nie wiem jaką tam kość użyliście, ale generalnie nie może być tak, że jakaś noga adresowa "wisi" w powietrzu. Wg schematów w oryginalnej stacji noga A12 jest dopięta na stałe do masy, a noga A13 do +5V. Czyli wg tego co napisał pancio.net jak nagrał te obrazy, to wychodzi, że jeśli tylko po prostu wsadziłeś kość w podstawkę wszystkimi nogami, to odpala Ci się HYPROMB - czyli wersja dla stacji 3,5". Jeśli masz stację 5,25, to najprościej odegnij nogę A13 (pin 26) tak żeby nie weszła w podstawkę i kawałkiem przewodu przylutuj ją gdzieś w pobliżu do masy -sprawdź miernikiem, ale wg schematu na tymże EPROM-ie masa powinna być na nogach 2,14 i 22, więc możesz ten kabelek nalutować na eprom z wierzchu bez grzebania w płytce stacji.

1,752

(402 odpowiedzi, napisanych Fabryka - 8bit)

Tak, tak, z paczkomatu:-) Niezły miałem polew jak zobaczyłem rozmiar opakowania - aż trudno mi tą płytkę było odnaleźć w środku:-)
Wracając do tematu okienka, to jak widzisz wymierzyłeś dokładnie tyle ile zaproponowałem, żeby było:-)

1,753

(402 odpowiedzi, napisanych Fabryka - 8bit)

Sikor, wpadła mi w ręce oryginalna płytka z kartridża XEGS z grą One On One. W komplecie mam do niej oryginalną naklejkę z tegoż kartridża i nie pasuje ona do okienka w wydrukowanej obudowie od Ciebie.
Naklejka ma 55x53mm, a okienko 54,5x52,5mm.
Myślę, że okienko powinno być większe w obie strony o 1mm niż naklejka, żeby naklejka mieściła się w nim swobodnie. Czyli jakieś 56x54mm by musiało mieć okienko, nie wiem jakie jest w oryginale.

O faktycznie, przeoczyłem tą uwagę.
Niemniej chętnie bym się coś więcej na temat tych tekstów/fontów/wyświetlania dowiedział, bo akurat się tym bawię w danym momencie:-)

Mam pytanie dot. zawartości materiałów binarnych. Co to jest za plik z tymi polskimi fontami? Oprócz tego, że ma polskie fonty, to zauważyłem, że ma trochę pozmieniane też inne literki. Np. S jest bardziej zawinięte itp. Ale najistotniejsze co zauważyłem, to font ma zamienione miejscami przecinek i średnik. Pytam z ciekawości, to tak ma być, czy może jest to jakaś wersja "rozgrzebana" czy coś w tym stylu? A może celowo font ma szereg jakichś zmian. Czy jest gdzieś do tego opis jakiś autora, lub coś, albo możesz Sikor Ty coś więcej o tym pliku opowiedzieć?

I może trochę wybiegnę tutaj do przodu, ale mam pytanie dot. przygotowania tekstów do gry i ich wyświetlania.
Kłopot jest taki, że jak chcę przykładowo wyświetlić większe ilości tekstu całymi ekranami, to najmniej kosztowne wydaje się być wrzucenie takich tekstów również jako dane binarne i wówczas wyświetlanie ich za pomocą MOVE bezpośrednio wrzucając pod adres ekranu z odpowiednim ofsetem. To działa super, jednak żeby w ogóle zadziałało, to teksty muszą być przygotowane w kodowaniu znaków z użyciem INTERNAL CODE. Jednak jak mamy tak przygotowane teksty, to z kolei nie da się (chyba) łatwo takiego tekstu wydłubywać jednocześnie z pamięci i wyświetlać za pomocą standardowych PRINT, czy TEXT, czy pojedynczych znaków przez CHR$, bo wszystkie te polecenia wymagają z kolei tekstu zakodowanego jako ATASCII. Czy da się jakoś łatwo radzić sobie z tą dualną naturą kodowania znaków na Atari (IC/ATASCII)?

Tak, ja sobie sporo skorzystałem z Twoich porad, tak że super.

Co do tworzenia na Atari i opisywania pod tym kątem, to jestem jak najbardziej za - ma to też swoją dużą wartość, więc kontynuuj to właśnie tak.

Ja te swoje "udogodnienia" pecetowe opisałem tutaj tylko tak nawiasem, w dzisiejszych czasach jest mnóstwo różnych narzędzi, z których można korzystać na różne sposoby, tylko tyle chciałem pokazać. Odpowiada mi bardzo tutorial pokazujący jak to się wszystko robi na Atari, bo mówimy cały czas o Atari tylko i wyłącznie. Natomiast znając już jak się coś tam robi na Atari i mając podstawy można poszukiwać jakby w kolejnych krokach udogodnień, dodatkowych narzędzi itp. - ale to już indywidualnie co kto tam lubi.

Ja z uwag mam tylko coś o czym już mówiliśmy wcześniej, ale chciałbym przypomnieć: żeby wszystkie pliki, całość prac trzymać w jednym atr i nie bawić się w ustalanie gęstości i innych takich. I tak większość chyba programuje to i testuje pod emulatorem na pececie z racji wygody, a jeśli ktos jest takim hardkorowcem, że robi wszystko na Atari, to również poradzi sobie bez problemu z samodzielnym podzieleniem tego sobie jak mu wygodnie na dyskietkach.
Tak że proponował bym atr 720kB i wrzucić wszystko do niego - ale to już decyzja Sikora.

Ja obecnie dość dużo grzebałem akurat w TBXL przy okazji refaktoringu mojej starej gry z dzieciństwa The Last Disk (udostępniałem na sąsiednim forum) i przy tej okazji doświadczyłem różnych koncepcji, co zaowocowało wypracowaniem najwygodniejszej dla mnie metody pracy. Oczywiście każdy robi po swojemu, ale napiszę jak ja to robię, może się przyda innym.
Po pierwsze skorzystałem z narzędzi Sikora opisanych w tym wątku - wszystko bardzo się przydaje.
Robię tak, że mam atr 720kB, na którym mam MyDOS, TBXL, i pozostałe narzędzia. Pracuję pod Altirra, więc odpalam tego atr-a i z niego startuję. Dodatkowo mam podmapowany katalog na pececie jako H6: i w tym katalogu trzymam cały listing pisanego programu w zwykłym pliku textowym, którego edytuję sobie na pececie (używam akurat Notepad++, który koloruje mi ładnie składnię).
I teraz tak: pracę zaczynam od odpalenia Altirra, następnie uruchamiam TB.COM.
W TBXL piszę sobie ENTER "H6:GRA" (plik nazwałem GRA, żeby szybko się wpisywało).
To powoduje wciągnięcie całego listingu i już można go odpalić RUN
Następnie podczas wprowadzania zmian w listingu nie robię całej operacji za każdym razem od nowa, tylko kopiuję z pliku tekstowego kilka linijek, które akurat pozmieniałem i zwyczajnie w Altirra robię prawym przyciskiem wklej. I znowu RUN.
Bardzo szybko się w taki sposób pracuje. Program przerywam Reset(F5), albo Break(F7). Jak zmienię bardzo dużo w kodzie, to ewentualnie "odświeżam" całość, więc w Altirra robię Shift+F5(cold start), L->TB.COM, ENTER "H6:GRA" i już.
Dodatkowo na każdym etapie wklejania kodu do Altirra można przytrzymać F1(przyspieszenie emulacji), co powoduje szybkie wykonanie szeregu operacji tak długo jak trzymamy F1 - jak puścimy, to wszystko pracuje z powrotem z normalną prędkością.

Jeszcze co do łączenia plików z danymi. Używam Super Packera od Sikora, jest fajny, używam też Mossada - też wszystko super. Ale jak już mamy plik z danymi i chcemy do niego dokładać kolejne dane, które i tak mamy na pececie, to już robię to inaczej, szybciej. Plik binarny edytuję sobie na pececie programem HxD Hex Editor. Jak sobie otworzymy w nim nasz plik z danymi, to zobaczymy, że nagłówek, który dołożył nam Super Packer jest bardzo prosty i można go szybko i łatwo zmieniać ręcznie. Pierwsze dwa bajty, to FFFF, następnie mamy dwa bajty adresu początkowego pod jaki wczytane zostaną nasze dane, a następnie dwa bajty adresu końcowego. Oba adresy mają odwrotnie zapisane bajty (najpierw bajt młodszy, a później starszy -trzeba na to zwrócić uwagę). I teraz jak do swojego pliku doklejam np. kolejne dane, to po prostu wklejam te dane na końcu pliku w HexEditorze, do adresu końcowego dodaję odpowiednią ilość bajtów i poprawiam go ręcznie w pliku. Zapisuję sobie plik i gotowe. Poprawiony plik wrzucam sobie na swojego atr-a również w Altirra. Odmontowuję dyskietkę, wchodzę sobie w Tools->Disk explorer, tam usuwam stary plik, a nowy przeciągam i upuszczam do wnętrza atr-a. I gotowe, podmontowuję z powrotem atr-a i już mam zaktualizowane dane.
Dane binarne wczytuję w pierwszej linii programu za pomocą BLOAD, więc jak robię RUN, to nie muszę o tym pamiętać. Jak już program jest skończony, to wywalam tą linijkę z BLOAD, a dalej kompiluję i łączę wszystko w całość już tak jak opisał Sikor w swoich poradnikach.

1,758

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Tak, temat jest wyjaśniony, wiemy skąd się brały moje błędy.
Robiłem IF sprawdzający czy jest pusty string, w sensie, że wciśnięto Return, a następnie kolejny IF sprawdzający co jest w A$.

Jednak zastanawiające jest to, że mamy LEN(A$)=0, a pomimo to jak wyświetlimy ASC(A$), to wyświetli nam się kod znaku wcześniej tam wprowadzonego. Ciekawe z czego wynika taki błąd, czy jest to błąd Basica? Tak czy owak samo zachowanie jest wyjaśnione, więc należy na to uważać podczas programowania.

1,759

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Tak, tylko, że nawet gdy to robiłem, to mi się działy jaja. Nie mam już tego problematycznego kodu, ale myślę, że kłopot polegał na tym, że sprawdzałem sobie w szeregu IF-ami po kolei te warunki, tylko że w różny sposób. Prawdopodobnie mój problem się powtarzał dlatego, że na początku sprawdzałem w pierwszej linii Return, więc obojętnie czy sprawdzałem LEN(A$)=0, czy też A$="", to ten warunek prawdopodobnie działał poprawnie i przypisywał odpowiednią wartość pod moją zmienną wynikową. Tylko że po sprawdzeniu tego warunku leciały jeszcze warunki dot. poszczególnych wprowadzonych liter i prawdopodobnie któryś z tych warunków również zwracał prawdę i nadpisywał mi zmienną wynikową inną wartością. Stąd miałem bałagan. Myślę, że temat jest wyjaśniony.

1,760

(22 odpowiedzi, napisanych Programowanie - 8 bit)

@Sikor, no to może jakiś taki zbieg właśnie u mnie zachodził. Ale u mnie kod żyje, a jak nad czymś siedzę, to po kilku godzinach mam już zupełnie coś innego niż miałem na początku, więc nawet nie mam już jak swojego błędu odtworzyć.

Natomiast odpaliłem Twój programik, zmodyfikowałem mu tylko linię, żeby po return wpisywał K=9.

1 DIM A$(1)
2 Z=0
10 GOSUB 100
12 GOTO 10
100 K=0
101 INPUT A$:IF A$="" THEN K=9
102 IF A$="X" THEN K=1
104 Z=Z+1:? A$,K,ASC(A$),Z
105 RETURN

READY
RUN
?X
X         1         88        1
?A
A         0         65        2
?
          9         65        3
?

I faktycznie to będzie ten problem.
Za pierwszym razem wpisałem X i się K ustawiło na 1,
za drugim razem wpisałem A i się K ustawiło na 0,
za trzecim razem dałem tylko return - i zadziałał warunek sprawdzający A$="", ale ASC(A$) pokazał kod poprzedniego klawisza, czyli A.
No i tu jest pies pogrzebany, mamy z jakiegoś powodu sytuację, że A$ jest jednocześnie pusty i niepusty. Nie mam pod ręką żywego Atari, żeby sprawdzić, czy też się tak zachowa. Testy robiłem na Altirra 3.20 w zwykłym Basicu.

@Pin, PROC i EXEC jest fajny, przejrzystość kodu bez dwóch zdań itd. Jak robisz pojedynczy skok, to też PROC EXEC zajmie Ci mniej pamięci niż GOSUB RETURN, bo PROC/ENDPROC zajmuje mniej niż RETURN. Ale za to EXEC zajmuje więcej niż GOSUB, więc jak masz do wykonania dziesiątki skoków do tego samego podprogramu, to każdy EXEC zajmuje więcej pamięci niż GOSUB i zaczyna program puchnąć. Akurat to co grzebię jest na tyle duże, że zależy mi na pamięci i każdy bajt się liczy, więc robię GOSUB.

1,761

(22 odpowiedzi, napisanych Programowanie - 8 bit)

@mono: u mnie oba te IF-y działały tak samo. Jednak gdy zastosowałem którykolwiek z nich, to mój problem występował tak samo.

@Sikor: też myślę że jest to warte zbadania, zwykle jestem dociekliwy w takich kwestiach, ale przesiedziałem nad tym dzisiaj chyba ze trzy godziny i potrzebuję rozwiązania skutecznego, żeby działało, a GET mi to zapewnił - trochę już opadłem nad tym z sił.

1,762

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki Sikor:-) GET załatwia mi temat super, uprościł mi program, ulepszył i w ogóle jest gites:-) A problem który miałem zniknął.
Niemniej jednak nie wiem co mogło być problemem, pętle opóźniające i PAUSE też przetestowałem, ale nie pomagało.
Skoro jednak GET się sprawdza w moim przypadku idealnie, to nie będę już drążył.

1,763

(22 odpowiedzi, napisanych Programowanie - 8 bit)

@mono, strukturę programu mam dokładnie taką jak napisałeś w przykładzie. Z tym że ja ten program mam dłuuuugi na kilkaset linii i jest to trochę rozstrzelone, ale DIM jest na początku, wywoływane tylko raz, kolejność wszystkich działań jest taka jak u Ciebie.

@Fox, dzięki za przypominajkę, zapomniałem już że się tak sprawdzało w Basicu - przypominam sobie dawne czasy po wielu latach, a mam przyzwyczajenia ze współczesnych języków, głównie z C i podobnych.
Jednak przy tak postawionym warunku mam te same problemy, te same objawy.

Ciekawe jest to, że ten problem pojawia mi się dość rzadko, raz na kilkadziesiąt wprowadzonych liter, lub Returnów.

Testuję to pod Altirrą, może ona robi jakiś problem?
Dziwna sprawa, bo na takim krótkim programiku jak te powyższy od mono nie udaje mi się tego błędu odtworzyć, a dzieje się na długim programie. Mam w nim też bardzo dużo GOSUB-ów jednych w drugich i gdzieś tam głęboko w nich siedzi dopiero ten INPUT A$. Może są jakieś granice stosu i coś się przez to kaszani ze zmiennymi?

1,764

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Sprawdziłem, nie pomaga. Wiem co robi, przywraca 255 w buforze klawiatury po wciśnięciu jakiegoś klawisza, bo tam zostaje ostatnio wciśnięty klawisz. Nie pomyślałem o tym, ale tak jak mówię, teraz przetestowałem i nic to niestety nie daje w tym wypadku.

Testowałem teraz jeszcze wielokrotnie temat na różne sposoby i widzę, że problem pojawia się jak próbuję sprawdzić czy nie ma pustego stringa po wciśnięciu Return na INPUT. Może w takim wypadku jest coś dziwnego/losowego w A$ czasami, bo właśnie w wypadku jak testuję taki warunek, to również inne warunki potem się sypią.

1,765

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Mam taki kłopot w Turbo Basicu, ale nie wiem czy może dotyczyć też zwykłego Basica.
Mam w programie coś takiego w podprogramie po GOSUB:

DIM A$(1)
...

K=0
INPUT A$
IF A$="X" THEN K=1
? A$,K
RETURN

Kłopot polega na tym, że czasami warunek się sprawdza, a czasami nie chce zaskoczyć. Program w pętli działa, ciągle wyświetlając od nowa INPUT, wprowadzam sobie jakiś znak i w 90% przypadków znak jest wprowadzony, ale od czasu do czasu pomimo, że go wprowadzam, to ? wyświetla mi nic dla A$ a K=0, chociaż powinno być 1
Czy jest jakiś znany błąd związany z poleceniem INPUT, albo jakieś zastrzeżenia co do użycia tego polecenia np. w pętlach, albo w podprogramach GOSUB?

Edit: wygląda na to, że znalazłem pewną prawidłowość, ale i tak bym chciał to jakoś wyjaśnić.
Otóż w swoim programie mam szereg warunków:
IF A$="X" THEN K=1
IF A$="Y" THEN K=2
IF A$="Z" THEN K=3
Problem zaczął się jak chciałem jeszcze sprawdzać wciśnięcie samego Return. Dodałem warunek:
IF A$=" " THEN K=9
Próbowałem też IF A$="" THEN K=9
W obu przypadkach działa tak sprawdzanie pustego stringu - ale właśnie czasem działa a czasem nie, a oprócz tego dodanie takiego warunku powoduje że wszystkie pozostałe "normalne warunki" też zaczynają działac czasami, a czasami nie.
Ciekawe...

1,766

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

Jeszcze niedawno twierdziłem, że dobrze zachowany zasilacz Atari, który był dobrze traktowany, przechowywany w pokojowych warunkach w suchym i ciepłym miejscu, regularnie używany, który ma idealne napięcie - że taki będzie służył jeszcze całą wieczność:-) Wszyscy mówili, że to kwestia czasu, a ja odpowiadałem "co ty pie...":-) Do niedawna:-) W zeszłym miesiącu gram sobie spokojnie w His Dark Majesty, a tu nagle dźwięk robi buuu..., śmieci na ekranie, pasy jadą. Wyłączam, włączam, za chwilę to samo. No i padł se zasilacz panie. Piękny, oryginalny, miałem go od nowości, zawsze świetnie traktowany, aż tu nadszedł jego kres. Na szczęście zasilacz ma 4V, więc tylko Atari przestało działać do czasu podmianki zasilacza na inny sprawny.

1,767

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

W Atari nie:-)

1,768

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

Te "pomarszczenia" występują na wszystkich płytach z tego okresu, to nie jest żadna korozja ani nic w tym rodzaju, to kwestia technologiczna, nie należy się tym przejmować, ani myśleć, że coś jest nie tak jak być powinno.

Edit: pisałem w tym samym czasie, seban mnie ubiegł, i to bardziej rzetelnie:-)

1,769

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

Proszę bardzo.
A jest do 5,25"
B jest do 3,5"

1,770

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

Kwarc tam jest 8,33MHz, praktycznie nie do zdobycia. Jak by co, to "robi" się taki z generatora 33,33MHz i 74HCT74. Prosty dzielnik przez 4 załatwia temat, tak robimy to w klonach XF551.
Ale... Po zastanowieniu raczej myślę, że kwarc w dalszej kolejności podejrzeń jest, bo przecież jer pisał, że stacja przy uruchomieniu zachowuje się prawidłowo, więc procesorek jakąś inicjację na starcie prawdopodobnie wykonuje, a bez kwarcu by tego nie zrobił. Można jednak dla pewności sprawdzić oscyloskopem, lub analizatorem logicznym czy jest w ogóle przebieg jakiś z zegara.
Podmień EPROM.

1,771

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

Również obstawiał bym ROM. One po latach padają, tak samo jak OS w kompie, czy Basic. Akurat podmianka tego ROMu jest tania, wsadź sobie jakiś EEPROM, one są tanie i łatwo dostępne. Przy okazji podmianka wskazana, bo możesz sobie Hyper XF wsadzić, jak radził wcześniej perinoid. Polecam również, przyjemny soft.

Natomiast drugą rzecz jaką bym jeszcze sprawdził, to czy przypadkiem kwarc nie padł - też po latach im się zdarza niedomagać.

1,772

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

Ale co się dziwicie, przecież to są stare telewizory, które się wyrzuca na śmietnik, a jeszcze jest z tym kłopot, żeby wyrzucić. Takiego elektrośmiecia leży pełno ludziom po różnych garażach i piwnicach i nie ma co z tym robić, przecież nikt tego nie kupuje, paru retro maniaków tylko może by się tym zachwyciło.
Sam mam jeden mega fajny i w pełni sprawny telewizor, tylko że duży, chciałem go wydać za darmo, ale nie ma chętnych i pewnie wywalę w końcu jak gratowóz będzie krążył, bo już kilka razy mi żona kazała, gratowóz jeździ jakoś co pół roku, więc na razie udawało mi się "zapomnieć" o tym:-) bo mi szkoda tego tv. Jak ktoś chce, to aktualne tu: http://www.atari.org.pl/forum/viewtopic.php?id=16147

1,773

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

Stary, co to za porównanie? Oczywiście, że CRT nic nie przebije, ani teraz ani nigdy. A to dlatego, że nasze komputerki były pod takowe projektowane. Chyba nikt zdrowy na umyśle nie używa LCD, żeby mieć lepszy obraz i parametry? LCD używa się dlatego, że zajmuje mniej miejsca i dlatego, że CRT się kończą i nie ma już ich prawie, a jak są to już nie dają rady za bardzo.

Natomiast z tym lagiem, to ja tam nie wiem. Fakt, może scrolle nie sa idealne, ale na 710MP w grach wszystko jest gites, wystarczająco dobrze, żeby sobie normalnie pograć w cokolwiek bądź i nie zastanawiać się w trakcie gry, że coś jest nie tak.

1,774

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

Nie mam porównania z 711, ale na moim 710 faktycznie przyznam, że z Amigi obraz nie jest taka żyleta, tylko jakby delikatnie rozmazany. Z tym że nie ma tragedii, normalnie używam i jestem zadowolony. Nie wspomniałem też, więc dodam, że podłączałem oprócz wymienionych wcześniej sprzętów również C64 po s-video tak samo jak Atarkę i było też ładnie jak dla mnie.
Czytałem kiedyś że ludzie pisali o tym, że faktycznie chyba 711 ma ostrzejszy obraz np. po RGB z Amigi, ale też czytałem, że komuś coś tam właśnie drgało czy skakało, a na 710 nie, tylko już nie pamiętam co to było i gdzie czytałem...
Tak jak mówię, ja nie mam porównania, bo w zasadzie używam cały czas tylko tej swojej 710-tki, a kupiłem ją ze dwa lata temu na olx za 50zł od gościa, dla którego był bez wartości, bo używał go wcześniej jako zwykły monitor do peceta, więc jak sobie kupił nowego wypasa, to ten był dla niego złomem do pozbycia się, a dla mnie skarbem i perełką:-)

I prawie tak samo robi się 256k lub 320k. Jakieś deja vu mam z tymi tematami:-)