1,051

(31 odpowiedzi, napisanych Emulacja - 8bit)

Z tą czytelnością / wydajnością byłem nieprecyzyjny. W czasach powstawania atari800 nie można było sobie pozwolić na taką architekturę, jaka jest w atari++, bo nie było komputerów, na których by to poszło. Sytuacja się zmieniła. Emulator powstał. Nie taki wierny jaki atari800, ale to już jest kwestia osobomiesięcy spędzonych nad kodem. Jego plusem jest spójność i łatwość modyfikacji i nie uważam, że autor przesadził z obiektowością. Jest poprostu konsekwentny. To nie jest kod w C tylko C++ i to dobry C++.  A żeby projekt sie nie zawalił i nie trzeba było go łatać, nie można sobie pozwolić na haki oszczędzające trochę czasu procesora.
A poza tym kod nie jest rozwijany w Visual Studio. W porcie windowsowym pomagał ktoś inny.

1,052

(28 odpowiedzi, napisanych Miejsca w sieci)

A co to właściwie jest? Czy to legalne? ;)

1,053

(31 odpowiedzi, napisanych Emulacja - 8bit)

Za bezpodstawne krytyczne uwagi biję się w pierś i przepraszam! Napisałem trochę emocjonalnie, bo wcześniejsze posty też takie były. W kwestię kradzieży źródeł nie będę wnikał, bo nie mam intencji bronić autora ani nie ma to znaczenia w wykorzystaniu samego emulatora.
Tak z pewnej perspektywy, to porównywanie obu emulatorów jest bardzo trudne, bo mają odmienne założenia. Atari800 powstawał w zamierzchłych czasach, gdy wydajność miała znaczenia i poświęcono dla niej czytelność, podczas gdy w atari++ wydajność została poświęcona dla czytelności. W rezultacie jak atari800Win zjada tak mało procesora, że taskinfo nawet nie chce pokazać ile, to atari++ potrafi zjeść nawet 7%, ale nie wydaje mi się, żeby dziś stanowiło to problem. Dla mnie atari800 przedstawia się jako bardzo stabilny i dojrzały projekt, w którym nie ma miejsca na eksperymenty i zwykły "szary człowiek z ulicy" nie ma nawet odwagi nic tam dopisać. Z drugiej strony atari++ po pobieżnym zapoznaniu się z architekturą jest bardzo czytelny i podatny na modyfikacje i eksperymentowanie w nim jest bardzo proste. Dodanie GTIA Upgrade wymagało kilku dni zapoznawania się z architekturą i dosłownie kilku godzin pisania. Przyznam się, że mam już w fazie testów emulację 65c816 + liniowy ram (pisałem parę tygodni wieczorkami, bo dużo rozkazów :P), a puszczenie high-ramu na wyższym zegarze ze zgodnością z WARPem wymaga kilku żmudnych (bo znowu dużo rozkazów) ale prostych modyfikacji.
W rezultacie przeznaczenie obu emulatorów może być także różne. Na atari800 można odpalać stare gierki, ale uważam, że współczesnym hardwarowym rozwiązaniom jakie mamy teraz na scenie przyda się support nawet kosztem tego, że jakiś pixel zasyfi, pokey zapierdzi albo nie odpali się stara gierka.

1,054

(18 odpowiedzi, napisanych Emulacja - 8bit)

A koszt dawcy pokeya?

1,055

(18 odpowiedzi, napisanych Emulacja - 8bit)

Jak włączysz tryby GTIA, to będzie kaszanka. Dopałka nic nie zmienia w tej kwestii. Tryby GTIA nawet "przeszkadzają" jej, bo spowalniają zmiany rejestrów. Obrazki prezentowane przez TeBe nie wykorzystują GR.9/10/11 i nawet na padniętym GTIA będą wyświetlane poprawnie.

1,056

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

OK. Zwracam honor :) Ściślej, to 65c816 wyciąga max 18 MHz jak jest w obudowie PLCC (DIP pewnie nawet mniej), a 20 MHz da się wyciągnąć przy obudowie QFP (pewnie dlatego, że jest mniejszy).

No to czekamy :)

1,057

(18 odpowiedzi, napisanych Emulacja - 8bit)

Pojęcie trudności jest względne: w atari800 byłoby to bardzo trudne (zbieżne do "niemożliwe"), podczas gdy w atari++ to tylko pare godzin kodowania.

1,058

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

Z Pasia experymentów wynika, że 14 MHz 65c816 (a szybszych nie ma, no chyba że na FPGA ;P) stabilnie chodzi maksymalnie przy 18 MHz więc 20 raczej się nie wyciągnie (radiator?)

1,059

(18 odpowiedzi, napisanych Emulacja - 8bit)

Spodobał mi się projekt Upgradu GTIA Psychola i po kilku dniach zabawy udało mi się zrobić w miarę działającą emulację tegoż w Atari++.
Wyniki działania można obejrzeć tu.

Na razie jest to wersja bardzo testowa, ale obrazki generowane przez gtia_simulator TeBego jak widać działają. Jak pojawią się jakieś nieścisłości, to skalibruję.

Potrzebuję tylko "pomocy prawnej" od Mądrych Głów z tego forum. Otóż Atari++ jest na licencji, którą, mimo że czytałem, to nie do końca rozumiem i zmieniony emulator udostępnię dopiero wtedy, jak będę pewny, że wszystko jest zgodnie z tą licencją. A więc co muszę zrobić / gdzie dodać jakie info, żeby nie łamać tej licencji?

1,060

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

Ożesz w morde tak na taśmie to bomba. A jak ktoś ma GTIA na podstawce, to nie lepiej byłoby zrobić jakąs przejściówkę, coby wtykać w podstawkę zamiast lutować?

A z puszczaniem procka na 20 MHz to chodzi Ci o 6502?
Tu bym się zastanowił, bo rodzi się inny standard dopałek procesorów oparty o 65c816 i nowy niekompatybilny standard niczego pozytywnego nie wniesie. Ale dopałka ANTICa jak najbradziej :)

1,061

(23 odpowiedzi, napisanych Bałagan)

A to dziwne, bo powinno być wolniejsze, bo wymaga przeparsowania tego co wrzuciliśmy do środka, a wszelkie Add* dodają tylko określone elementy. A w ogóle IE, skąd on pochodzi, ma jeszcze outerHTML ale jest zbyt hardkorowy i się nie przyjął ;)

1,062

(23 odpowiedzi, napisanych Bałagan)

Coś się ten XHTML nie waliduje i kodowania nie ma i javascript źle zaembedowany i jakiś counter co liczy do nieskończoności i kiedyś się wywali...

Moja wersja jest lepszejsza:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>Samopiszący się tekst!</title>
     <script type= "text/javascript">/*<![CDATA[*/ 
          var text = "atari.area rzondzi i pszoduje!";
          function a() {
            var e = document.getElementById('skrol');
            e.innerHTML = text.substring(0, e.innerHTML.length+1);  
          }
      /*]]>*/</script>
</head>
<body onload="window.setInterval(a, 250)">
      <p id="skrol"></p>
      <p>
            <a href="http://validator.w3.org/check?uri=referer"><img
              src="http://www.w3.org/Icons/valid-xhtml10"
              alt="Valid XHTML 1.0 Strict" height="31" width="88" />
            </a>
      </p>
</body>
</html>

;)

1,063

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

Pod maską ciasno :/ Czy tu się zmieści?
http://laoo.twojemiejsce.pl/gtia.jpg
I jeszcze pytania:
Czy da się wykryć dopałkę? Domyślam się, że jak będzie mapowanie pod $d02x to jakimiś trikami się da, w związku z tym co rejestry dopałki zwracają przy odczycie (unknown? $00? $ff?)


mikey: a ja tam się cieszę, że autor ofiaruje się lutować ustrojstwo. Jakby wypuścił od razu schematy na zasadzie "macie lutujcie sobie", to powstałyby dwie (niekompatybilne ze sobą) sztuki i na tym koniec.

1,064

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

Przeróbka niczego nie zmienia w dotychczasowych programach.  Jest przezroczysta. A możliwości "tego triku" zwiększa znacznie. Lepiej. Eliminuje konieczność zabawy w takie rzeczy. Po co zmieniać w połowie ekranu tryb graficzny, skoro można wyłączyć ANTICa i rysować efekty COLBAKiem.
Jestem bardzo zaintrygowany możliwością tej dopałki nawet jeśli chodzi o real-time efekty. Martwi mnie tylko jedno. Można albo "wyświetlać" zawartość pamięci rozszerzenia, albo do niej zapisywać. Jak wyświetla się jakiś pełnoekranowy efekt, to co prawda mamy podwójne buforowanie dzięki skrolowaniu, to zostaje mało czasu na wpisanie drugiej ramki animacji: czas jest tylko od pierwszej pustej linii na dole ekranu do ostatniej na górze i jest tego niewiele. Ale jakoś trzeba będzie sobie radzić. Ustawiamy DLI tu i tu i jazda ;)

1,065

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

Nie za bardzo rozumiem to ostatnie zdanie o centrowaniu. Jeżeli scrolling ustawimy na 0:0, to czy YPOS jest tożsame z offsetem w pamięci duszków przy rozdzielczości jednoliniowej podzielone przez 1,2,4 albo 8 w zależności od wysokości zmian, a XPOS jest tożsame z poziomą pozycją duszka (HPOS) podzieloną przez 2 albo 4 w zależności od tego czy zmiany są co pół albo co cały znak?

1,066

(9 odpowiedzi, napisanych Programowanie - 8 bit)

Ale takie GTIA Upgrada będzie potrafiło niezłą muzykę na tym grać ;)

1,067

(15 odpowiedzi, napisanych Programowanie - 8 bit)

Oczywiście. O błędach w BCD informowałem już w wersji 1.51, ale poprawka w 1.52 zmieniła je tylko na inne. Te dane mam nadzieje pomogą w uzyskaniu dobrej emulacji.

1,068

(15 odpowiedzi, napisanych Programowanie - 8 bit)

XXL: liczyłeś kombinacje bez powtórzeń 2 elementów ze zbioru 255 elementowego: 255*(255+1)/2=32640 :)

Jakby kogoś interesowało dotychczasowe wyniki razem z wynikiem epiego (thx) dla 6502 są tu
Zamieszczone wyniki dowodzą od razu twierdzenia z postu #2 i #3: dodanie zera do dowolnej liczby wygeneruje poprawną liczbę w BCD (nie chodzi tu o to, że wynik jest porawny, tylko liczba jest poprawna w sensie BCD), a więc dodanie zera do liczby niepoprawnej zmieni jej wartość (zero nie jest elementem neutralnym w zbiorze niepoprawnych liczb BCD ;P)

Dodatkowo widać, że atari++ ma poważne problemy z BCD, podczas gdy atari800 radzi sobie wyśmienicie, a UltraXE  daje niekiedy niepoprawny wynik.

==== EDIT ====

Dla pełności testu dodałem wyniki odejmowania w BCD i wszystko razem umieściłem w archiwum 7zip.

Z ciekawostek w 6502 błędna jest tylko flaga Z, atari800 działa dokładnie jak 6502, a UltraXE myli się częściej niż przy dodawaniu :)

1,069

(15 odpowiedzi, napisanych Programowanie - 8 bit)

Skoro już jesteśmy przy BCD miałbym małą prośbę. Żeby definitywnie przekonać się jak to jest z tymi flagami napisałem program, który wykonuje wszystykie 32896 możliwe dodawania dwóch liczb ośmiobitowych w BCD i zapisuje wynik wraz z flagami (700 kB). Programik jest tu. Wersja BCDD.XEX zapisuje wynik na D:, BCDH.XEX na H:, a BCDP.XEX na P:. Potrzebuję ochotnika, który uruchomi ten program na atari z 6502 i prześle mi wynik na laoo(at)icomp.pl. Chodzi mi o wynik na 6502, bo na 65c816 już sprawdziłem u siebie, a drugiej atarki nie mam. Sprawdziłem też na atari++ z emulacją 6502 jak i 65c02, na atar800win oraz na UltraXE. Każdy emulator robi to inaczej :)

Oczywiście jakby ktoś w komputerze miał 65c02 (podobno ostatnie modele atari mają. Prawda to w ogóle?) to też byłbym wdzięczny.

1,070

(15 odpowiedzi, napisanych Programowanie - 8 bit)

Napewno zadziała coś takiego:

tax
lda is_valid_bcd,x

:)

Ale wydaje mi się, że powinno wystarczyć coś takiego:

sta temp
lda #0
clc
sed
adc temp
cmp temp

i wtedy jeśli Z=1 to wartość jest poprawna. Trzeba to sprawdzić, ale wydaje mi się, że dodawania BCD polega na dodaniu normalnie i potem korekcji, więc jak dodamy do niepoprawnego BCD zero, to powinien zostać skorygowany.

Przy zabawie z BCD pamiętaj tylko o niepoprawnych wartościach flag N,V i Z na 6502 i poprawnych na 65c02/65c816.

1,071

(26 odpowiedzi, napisanych Emulacja - 8bit)

Nie jestem pewien w czym oryginalnie SoTe skompilował SAPa, ale podejrzewam, że w VS 2005. Na maszynie developerskiej skompilowane w nim programy działają pięknie, ale ich deployment potrafi napsuć człowiekowi krwi. Dużo krwi. Sesja z google zaoowocowała jakimś rozwiązaniem [które jest nieaktualne, bo niżej jest lepsze].

======== EDIT =========

Udało mi się skompilować statycznie. Pliczki są większe, ale nie wymagają msvcrt80.dll. Paczuszka jest tu.

Feedback mile widziany :)


Reasumując to nie wina .NETa, tylko najnowszego visuala, który aż kipi od nowoczesnych technologii, które wymagają conajmniej windowsa 2000 i z którymi są same problemy. Pewnie jakby skompilować to w jakimś np VC++ 6.0 to by poszło bez problemu nawet na win98, ale legalne to by już nie było ;)

1,072

(26 odpowiedzi, napisanych Emulacja - 8bit)

Skompilowałem za pomocą Visual C++ 2005 Express Edition (kompilator natywnego C++ nie mający nic wspólnego z dotnetami) i działa. Nie mam niestety dostępu do kompa bez .NET 2.0 i nie wiem czy działa bez .NETa, ale zaglądając do środka plików nie widzę tam żadnych odwołań do jakichkolwiek dotnetowych bibliotek. Tylko do MSVCR80.DLL.

1,073

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

Napewno normalne to nie jest. Napis pochodzi z SELF TESTu, ale na niego to nie wygląda. Jak masz aparat, to zrób fote, (albo filmik, jeśli efekt jest "dynamiczny").

1,074

(26 odpowiedzi, napisanych Emulacja - 8bit)

Dziwna sprawa z tym .NETem, bo wewnątrz SAP.exe jak i in_sap.dll nie ma żadnego odwołania do .NETa. tylko do MSVCR80.dll. Za to wymagany wydaje się być Direct X (DSOUND.dll)

1,075

(26 odpowiedzi, napisanych Emulacja - 8bit)

jellonek: to nie używaj i napisze se sam bez .net 2.0.
Autor zrobił to dla przyjemności bez żadnego wynagrodzenia i pisał to tak jak chciał i było mu wygodniej.