626

Ja sprawdziłem ten SBX (nr rozkazu 203dec) - działa na emulatorze, z którego korzystam. Robi AND między A i X, odejmuje argument. Znaczników nie sprawdzałem. Ważne, że działa. To dla mnie coś nowego, ciekawego, bo nie znałem.

Dzięki za możliwość poznania tych ciekawostek.

Gdyby ktoś chciał, mogę zamieścić kod w Atari BASIC, który sprawdza ten SBX, czy to w ogóle działa. W BASIC działa.

627 Ostatnio edytowany przez Smaku (2019-03-04 23:42:50)

Pin napisał/a:

Np., większość efektów w demach operuje na dwóch instrukcjach: LDA, STA. Znajdź sensowne uproszczenie tej konstrukcji, oczywiste.

Zacząłem się najpierw zastanawiać nad tymi dwoma rozkazami, ale zatrzymuję się w momencie braku określenia rodzaju argumentu.

Trzeba by powiedzieć konkretnie, dla jakiej pary konkretnych (w kwestii argumentów) LDA i STA?

Ogólnie LDA to chyba ładowanie akumulatora - ale skąd wartość?

STA to z akumulatora do pamięci - tu jakoś obojętnie da się coś znaleźć, bez znaczenia, aby w pamięć.

Te nieoficjalne rozkazy robią konkretną robotę "hurtową", na konkretnych rejestrach, więc ogólnie pytać o LDA, STA, to trudno zacząć szukać zamiennika.

Hmm... pewnie któryś z tych nielegalnych robi za jednym zamachem liczbę w pamięć z pominięciem akumulatora, albo zależy, czy w A ma być liczba, czy nie?

Trzeba by pokazać konkretną parę LDA, STA - wtedy da się jakoś poszukać uproszczenia do jednego rozkazu, oczywiste.

Ogólnie nie bardzo jak zacząć, bo nie wiadomo czego szukać, oczywiste.

Też miałem wrażenie, przeglądając te nieoficjalne rozkazy, że muszą genialnie nadawać się do hurtowego przepisywania pamięci, w tym obrazu, itp. - w sposób kontrolowany, liczony, itp., czyli np. do dem, oczywiste.

Tylko teraz konkretnie trudno coś wymyślić, nie robiąc konkretnego czegoś, co chciałoby się przyspieszyć, oczywiste... trzeba mieć przykład jakiś i dopiero próbować.

A propos polskich liter do paragrafówki (w innym temacie) - problemem jest zasadniczo długi czas przepisywania zestawu znaków z ROM do RAM - trwa to ładnych kilka sekund, szczególnie w BASIC instrukcją POKE, oczywiste. Robiąc przepisanie w maszynowym, robi się indeksując po pamięci i w 3 sekundy maks CHARSET1 a nawet obydwa na raz są w RAM i polskie litery gotowe (albo cyrylica, inne, obojętne), oczywiste.

I teraz takie przepisanie w maszynowym również jednak trwa te 3 sekundy, przykładowo.

Można by tutaj szukać sposobu na użycie zamiennika - jako przykład tylko, że najpierw konkretne zadanie musi być w maszynowym => potem można spróbować poszukać metody na nieoficjalnych rozkazach, która by coś mogła przyspieszyć, albo skrócić kod programu, itp.

628

dobry artykuł, komentarze również:

We used illegal opcodes and a piggy-back board to add instructions to the 6502 processor. When we decoded an illegal opcode, we floated a no-op onto the instruction bus (for a defined number of cycles) and then let our custom PAL decode what really should happen. Doing this, we added a “paging register” for the zero-page and 1xx page (which you know are special). For the 1xx page, we detected when stack overflows and underflows happened and auto-adjusted the 1xx page register. Doing this gave us a 256-byte window into a (essentially) 64K stack. This was instrumental in the Forth interpreter we used to control a custom radar dish (details not available, sorry). We also took advantage of the fact that the 6502 was a DC-clock-safe processor , and essentially stopped the clock while slower RAM was being accessed and over-clocked the processor when it was talking to zero-page stuff. Lots of memories there. BTW, this was 1979-1982 or so…

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

629

tebe napisał/a:

test, który oszczędzi frustracji tym którzy nie wiedzą czym jest referencyjne Atari XE/XL

test na to czy to jest atari? po co? jak masz kod nie dla atari to robisz test na obecnosc procesora jakiego wymagasz :-)

http://atari.pl/hsc/ad.php?i=1.

630 Ostatnio edytowany przez Smaku (2019-03-06 21:27:22)

xxl napisał/a:

test na to czy to jest atari? po co? jak masz kod nie dla atari to robisz test na obecnosc procesora jakiego wymagasz :-)

Ja przykładowo zrobiłem test tego SBX, skoro mi zadziałał i to nawet pod Atari BASIC, to dla mnie kończy się temat, bo poznałem coś nowego, zobaczyłem, że działa, możliwe, że kiedyś sobie przypomnę, gdyby było to potrzebne do czegoś, lub mogło coś poprawić w programie.

Już nawet miałem pomysł przy przepisywaniu tych dużych bloków pamięci, jak zestawy znaków z ROM do RAM - zamiast przepisać wprost to samo, można dodać, albo podmienić rozkazem, żeby CPU przepisał zestawy od razu zmieniając je na jakieś inne czcionki, albo robić animacje czcionek, albo tak samo w grafice punktowej, szybkie przeliczenia dużych obszarów pamięci zamiast kilkoma rozkazami, można by jednym lub dwoma, przykładowo - takie widzę zastosowanie ewentualne tych rozkazów - z tego, co widać w opisach, czyli skomplikowane operacje jednym rozkazem - to zawsze jakoś da się wykorzystać, kiedy da się zauważyć jakieś sekwencje charakterystyczne w programie - i nagle okazuje się, że jakiś rozkaz z tych nieoficjalnych robi to samo od razu, zamiast trzema oficjalnymi, lub więcej.

To dla mnie tyle w tym temacie. Dzięki za wszystkie ciekawostki, które poznałem. Wystarcza mi. Nie przeszkadzam więcej.

==

Dodatkowo przyszła mi do głowy oczywista rzecz w sumie, że można by zrobić w drugą stronę zabawę z tymi rozkazami, że zamiast szukać jakichś sekwencji w programach "na czuja", żeby coś zamienić nieoficjalnymi, można by opisać te nieoficjalne wszystkie po kolei, jakie są w sposób sekwencji rozkazów oficjalnych - nie wiem, czy nie powtarzam czegoś, co mogło już być w tym temacie, bo to oczywisty pomysł pewnie, oczywiste, no ale dopóki moje zaciekawienie mi daje pomysły, no to tyle mogę, że napiszę, to zostanie dla innych zaciekawionych przynajmniej, hmm...

Przykładowo ten SBX, bo akurat mi zadziałał, więc skoro robi A and X i odejmuje daną, wynik zostawia w X, no to oficjalnie byłoby jakoś (mniej więcej):

LDA (do akumlatora)
AND (zrobienie and z liczbą w pamięci)
SBC (odjęcie liczby)
TAX lub podobny (z A do X)
I jeszcze znaczniki - czy same się ustawiają na oficjalnych tak samo, jak od razu tym SBX, czy trzeba dodatkowo jeszcze znaczniki poustawiać, więc kolejne rozkazy na dodatek, hmm...

Czyli jak by nie było minimum 8 do 10 cykli, żeby zrobić SBX na oficjalnych, oczywiste.

SBX ma 2 cykle, no więc...

I teraz pomysł jest oczywisty, że gdyby wszystkie nieoficjalne opisać najlepszym kodem oficjalnym, czyli standardowo, można by wszystkie istniejące programy w maszynowym przetestować po sekwencjach opisujących kody nieoficjalne i dla każdej sekwencji znalezionej podstawić jeden rozkaz nieoficjalny.

Czyli wyszedłby taki automat do przerabiania exe lub asm hurtem na to samo, ale z użyciem nieoficjalnych. Proste, oczywiste...

No tyle, co mi wpadło do głowy jako oczywiste. Może ktoś to kiedyś sprawdzi i zrobi, bo to jest jakaś zabawa przynajmniej ciekawa, tak mi się zdaje, ale mogę się mylić, oczywiste.

631

https://obrazki.elektroda.pl/8825603700_1602090735_thumb.jpg

publikacja w czasopismie Komputer z 88r

przykladowy programik robi uzytek z rozkazu TOP $nnnn (trzybajtowy NOP)

http://atari.pl/hsc/ad.php?i=1.

632

Czasami tęsknię za Smaku... folklor...

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email

633

Oczywiste ;)

Kontakt: pin@usdk.pl

634

STZ:

SHX $FFxx,Y
SHY $FFxx,X

LDX #0
SHX $abcd,Y

LDY #0
SHY $abcd,X

Przekroczenie strony spowoduje zapis na stronę zerową.

https://www.youtube.com/watch?v=jofNR_WkoCE

635

https://csdb.dk/release/?id=226987

https://www.youtube.com/watch?v=jofNR_WkoCE

636

pięknie,

to też jest ciekawe:
The 6502C “SALLY” found in Atari 8-bit computers also seems to work the same.
The 6507 used in the Atari 2600 VCS appears to work the same

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

637

bardzo pozytywne, podzial na stabilne i niestabilne :-)


a jeszcze niedawno atarowce beczaly "meee, meee, nie dziala" ;-)

http://atari.pl/hsc/ad.php?i=1.

638

https://www.masswerk.at/nowgobang/2021/ … al-opcodes

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

639

Przesunięcie arytmetyczne w prawo i skasowanie znacznika C:

anc #$fe
ror @

Znalazłem na https://codebase64.org/doku.php?id=base:3d_rotation

https://www.youtube.com/watch?v=jofNR_WkoCE