76

(14 odpowiedzi, napisanych Fabryka - 8bit)

Gienek napisał/a:

Jak carta nie ma to widzimy FF.

To tylko częściowo prawda. W komputerach gdzie magistrala jest pull-upami podciągnięta do 5V pojawią się $FF-y, ale tam gdzie ich nie ma dostaniesz losowe wartości wynikające ze stanów nieustalonych. Krótko mówiąc - tam nie muszą być $FF-y i nie wolno na tym polegać.

Gienek napisał/a:

Ale migracja dotyczy tylko(?) ROM. Więc w obszarze 55XX żadne FF się nie pojawią (?).

$D5XX - nie pojawią się.

Gienek napisał/a:

Czy w ATARI bez żadnych modyfikacji jest jakakolwiek szansa dostać się pod RAM $D5XX?

Nie ma szans.

Gienek napisał/a:

Czy zapis na $D5XX zawsze idzie do carta, czy w zależności od PORTB jest w stanie trafić gdzieś indziej?

Zawsze idzie do carta.

Gienek napisał/a:

Jeżeli jest SELFTEST to zapis w $5000 idzie na manowce czy zapisze pod RAM "pod spodem"?

Nie zapisze. Tu nie ma jak w C= że zapis do ROM trafia do RAM.

77

(14 odpowiedzi, napisanych Fabryka - 8bit)

I tak działają cartridge z Bounty Bob.

78

(14 odpowiedzi, napisanych Fabryka - 8bit)

Gienek napisał/a:

Więc bit PORTB (dla SelfTestu) chyba nie wpływa na D5 tylko na 50.

Oczywiście. Chodziło mi o to, że RAM jest podłożony pod całą pamięć Atari - pod $D000-$D7FF również. W standardowym komputerze ta pamięć nie jest dostępna, bo PORTB mapuje ROM z $D000-$D7FF w $5000-$57FF. Po instalacji xxl-owego MapRAM-u można za pomocą PORTB przemapowywać też RAM w $D000-$D7FF w $5000-$57FF.
Na stronie $D5 znajdują się rejestry sprzętowe, ale nie RAM/ROM dlatego procedury CopyFrom/CopyTo nie mają tu nic do roboty. Coś tam jest innego zepsute, ale gdzie?

79

(14 odpowiedzi, napisanych Fabryka - 8bit)

Gienek napisał/a:

Jakie D0? Coś tu jest więcej zakręcone...

To oznacza, że breakpoint ustawiany przez BPC jest nieaktywny. Mnie chodziło o breakpointa ustawianego przez B.

Gienek napisał/a:

Jak było samo "GetByte" to D(isassembly) pokazywało kod poprawnie ale procek leciał na manowce.
Jak dodałem MEMORY_CopyFromCart to ruszył mi zarówno tester jak i inny programik co robię, który to na rzeczywistym sprzęcie też działa.

Wygląda na to, że emulator robi jakieś przebitki z pamięci - przedziwne. Musi jakiś bug.

Gienek napisał/a:

Nie mam za bardzo porównania, bo w sumie to nie spotkałem się z kombinacją, że procek wykonuje kod na stronie D5xx. A przecież nie ma ku temu żadnych przeszkód.

Cartridge typ 47 "AST 32 KB cartridge" mapuje swoją pamięć na $D5xx i patrzyłem co on robi zanim się zabrałem za oglądanie Twojego.

80

(14 odpowiedzi, napisanych Fabryka - 8bit)

Mnie się wydaje, że to co Fox mówi to jest zło i niedobro. MEMORY_CopyFromCart i MEMORY_CopyToCart służą do przerzucania pamięci między komputerem a cartridgem, a bajty na $D5xx w komputerze nie są pamięcią - adresy $D0xx-$D7xx są przecież mapowane w obszar $5000-$57FF i teraz zależnie od tego czy mamy tam ROM to pokaże się tam SELF-TEST, a jeśli jest włączony MapRAM to może tam się pokazać też RAM który jest w tym obszarze (o ile konfiguracja PORTB mówi żeby tę pamięć podłączyć). Więc jedyne co tak możesz zrobić to ustawić zawartość pamięci, ale odczyt pamięci w MEMORY_HwGetByte (memory.c) i tak do tego nie sięgnie, bo ten obszar kierowany jest to CARTRIDGE_GetByte.
Wygląda mi ten kod Twój dobrze, ale zwróć uwagę że w CARTRIDGE_GetByte masz

return GetByte(&CARTRIDGE_main, addr, no_side_effects) & GetByte(&CARTRIDGE_piggyback, addr, no_side_effects);

więc może masz jakiś przelotowy drugi cart zamapowany który zwraca coś na $D5xx. Albo może masz jakieś urządzenie włączone?
Albo coś zapisuje Ci $D5xx i przemapowuje bank? Próbowałeś ustawiać breakpointa na zapis do $D5xx?

b WRITE>=D500
b WRITE<=D5FF

Edit: Ale fiksacja :) Cart Ci działa poprawnie, a tylko listowanie kodu za pomocą D(isassembly) przy domyślnym adresie listuje Ci kod spod złego adresu :) Pooglądaj co się dzieje w monitor.c.

81

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

Bo to prawdopodobnie jest zwykły kod cyklujący zmiany w rastrze na obrazku. Można użyć czegokolwiek co trwa 6 cykli.

82

(9,967 odpowiedzi, napisanych Bałagan)

xxl napisał/a:

dlaczego nie nazwali tego akwavita ?

To by była uzurpacja. Akwawita już jest! I działa całkiem nieźle ;P

83

(9,967 odpowiedzi, napisanych Bałagan)

"Mieli do wyboru wojnę lub hańbę, wybrali hańbę, a wojnę będą mieli także."
Winston Churchil

84

(9,967 odpowiedzi, napisanych Bałagan)

Jestem w ciężkim szoku. Wolność ma każdy - jeden postąpi jak idiota, ale drugi ją wykorzysta mądrze. W ustroju gdzie nie ma wolności, nie ma jej nikt - ani idiota, ani mądry.

85

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

Super! Ale ten POKEY dzwoni na górze :) Ale JANUSZ PELC nie działa...

86

(5 odpowiedzi, napisanych Różne)

Ładne, ładne... W pierwszej chwili przeczytałem "zupełnie zapomniałem o ogłoszeniu wyniku konkursu na nowe logo Last Party. Zwycięzcami zostali..." :)

To jest retro! Silnik musi być stary. Zapominacie się Panowie :)

88

(348 odpowiedzi, napisanych Fabryka - 8bit)

Drum Machine is a tool to play specified samples once you press a key (HELP, START, SELECT, OPTION, BREAK and SHIFT), push joystick in specific direction or press a trigger. This is a tool I made for Pinokio. He used to use it on his chiptune concertos. Sample playing speed is very arbitrary because by design it was used to play only drum samples, not for the music nor playing tones.

Edit: Try /A $D600 /O COVOX

89

(348 odpowiedzi, napisanych Fabryka - 8bit)

I've never written NEOPlay for COVOX, however there are several compo works by Yerzmyey, Pinokio, V0yager and Wiecz0r with player working on COVOX or POKEY. It includes playing routine made by Epi for NEO Tracker. Look at the bottom of the site XL Digital

90

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

I'm not sure Lotharek described well this movie, because NEOPLAYH works with SoundBoard (available as VBXE core, or separate soundcard) but doesn't play through simple 4-channel COVOX.

91

(136 odpowiedzi, napisanych Zloty)

Vasco może teraz cytować niejaką Jandę zresztą Krystynę.

92

(31 odpowiedzi, napisanych Scena - 8bit)

Wrzuć na pigwę. Za chwilę nie będzie można napisać posta bez zgody całego forum na piśmie i poświadczonej przez notariusza.

93

(13 odpowiedzi, napisanych Programowanie - 8 bit)

W wersji ST też jest F551.

94

(13 odpowiedzi, napisanych Programowanie - 8 bit)

No niestety, bo nie ma łoktru z ST na jutubie.

95

(13 odpowiedzi, napisanych Programowanie - 8 bit)

W amigowej wersji na końcu "Arctic Antics" na rakiecie napisane jest "F551" - czy ktoś z ST mógłby sprawdzić czy u nich jest "SPIES IN SPACE" czy coś innego?

W ostatnim numerze Tajemnic Atari 10/93 https://tajemnice.atari8.info/10_93/10_93.html wydrukowany został program do transmisji danych między Atari XL/XE a Amigą 500.
W numerze pięknie opisano działania programów, zaprezentowano kilka obrazków przesłanych z Amigi i skonwertowanych z trybów amigowych do atarowego szesnasto-kolorowego GRAPHICS 9, ale też listingi programów dla Atari i dla Amigi razem z krótkim kodem źródłowym transmittera służącego do przesłania programu dla Amigi z Atari. (*)
Niestety zapomniano o schemacie kabelka łączącego obydwa komputery.

Analizując program dla Atari oraz źródło transmittera udało mi się odtworzyć schemat kabelka, który załączam.

Dla porządku przypomnę jeszcze autorów, gdyż w artykule nie zostali odpowiednio wyeksponowani:
- Paweł Rzucidło (RYMEK) - program dla Amigi
- Marcin Grochowina alias MAG(M) - program dla Atari i elektronika
- Piotr Mazur (PIER) - testowanie i elektronika

Jeśli dobrze pamiętam program był testowany na komputerach Atari 65XE oraz Amiga 500 z 1MB RAM i wszystkie opóźnienia w protokole dostosowane były do zegara tego komputera.

Schemat kabla, jak i oprogramowanie dostępne jest w archiwum użytków Atari Online w sekcjach:
- Telekomunikacja / AtoA Transmitter / AtoA Transmitter * http://atarionline.pl/v01/index.php?ct= … ransmitter
- Inne platformy / Amiga / Atoa 1.0.* http://atarionline.pl/v01/index.php?ct= … miga#Amiga

P.S. Znany jest też protokół komunikacji gdyby komuś przyszło do głowy napisać nowy kompatybilny soft.
---
(*) - Wersja HTML artykułu dostępna na stronie jest niepełna i nie zawiera listingu programu dla Amigi ani programu źródłowego transmittera. Wersja DJVU ma wszystko, prócz oczywiście schematu kabla.

97

(117 odpowiedzi, napisanych Programowanie - 8 bit)

Jest ta chora notacja:

sta lab2:$ffff,y

która niby ma zastępować:

lab2 = *+1
  sta $ffff,y

a jest kompletnie nieintuicyjna i zaciemniająca tylko kod - a już kompletnie nie wiem jak przy jej pomocy zrealizować np.:

lab2 = *+2
  sta $ffff,y

@tebe: Może lepiej byłoby mieć inną deklarację etykiety:

etyk
etyk+
etyk++

analogicznie do skoków @+ i @-. Oznaczałyby one odpowiednio *+0, *+1 i *+2.
W kodzie odwołujesz się oczywiście do lab (plus mówi tylko o modyfikacji bieżącego licznika adresu):

opcod sta msb
adr+  lda $FFFF,x
msb++ lda $F000,y
lo+
hi++
      sta $FFFF

Hę?

P.S. Analogicznie mogłoby działać lab-, lab--, itd., choć osobiście nie widzę eleganckiego zastosowania, ale może się komuś przyda.

Tysiące... w emulatorach Altirra i Atari800 :)

99

(123 odpowiedzi, napisanych Fabryka - 8bit)

Dziękuję. Bangla pięknie.

100

(123 odpowiedzi, napisanych Fabryka - 8bit)

Taki kod:

.enum bool
    no
    yes
.ende

    org $400

    lda #bool(no)
    lda #bool(yes)
    lda #bool.no
    lda #bool.yes
    lda #no
    lda #yes

maluje mi to:

        lda #bool(no)
test.asx (11) ERROR: Undeclared label NO (BANK=0)
        lda #bool(yes)
test.asx (12) ERROR: Undeclared label YES (BANK=0)
        lda #bool.no
test.asx (13) ERROR: Undeclared label BOOL.NO (BANK=0)
        lda #bool.yes
test.asx (14) ERROR: Undeclared label BOOL.YES (BANK=0)

a listing wygląda tak:

mads 2.1.7
Source: test.asx
     1
     2                     opt o+ h- c- ?+
     3
     4                 .enum bool
     5 = 0000                no
     6 = 0001                yes
     7                 .ende
     8
     9                     org $400
    10
    11 0400 A9 00            lda #bool(no)
    12 0402 A9 00            lda #bool(yes)
    13 0404 A9 00            lda #bool.no
    14 0406 A9 00            lda #bool.yes
    15 0408 A9 00            lda #no
    16 040A A9 01            lda #yes
    17
    18
    19                     end

a przecież wg dokumentacji:

mads napisał/a:

Do etykiet wyliczeniowych odwołujemy się przy pomocy składni:
enum_name (field)
lub bezpośrednio podobnie jak w przypadku odwołań do bloków .LOCAL, .PROC, czyli po nazwie typu oddzielone znakiem kropki występują kolejne pola, np.:
lda #portb(rom_off)
dta portb.rom_on, portb.rom_off

Czy to ładnie tak?