726

(35 odpowiedzi, napisanych Bałagan)

$100 lat, $100 lat...! :D
(Sprawdzałem właśnie moment, w którym rozpoczęła się belle époque ;P)

727

(44 odpowiedzi, napisanych Programowanie - 8 bit)

Częstotliwości nut?

728

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

Da się. Zależnie od typu carta wykonuje się najpierw CARTINI a potem ewentualnie CARTRUN: http://atariki.krap.pl/index.php/Cartri … C4%99ci%29
Ale zanim się tego dokona proponuję zresetować POKEY-a.

Edit: Niektóre gry potrafią nadpisać fragment obszaru carta, więc nie wszystko się tak da odpalić bez modyfikacji programu.

Edit 2: Nie pamiętam dokładnie, ale między CARTINI a CARTRUN może też być konieczne ustawienie RAMTOP i ponowne otwarcie E:

Edit 3: Coś w tej podobie:

  org $2000

  lda #%00000000
  sta SKCTL ;$D20F
  ldy #8
?clr sta POKEY,y  ;$D200
  dey
  bpl ?clr
  lda #%00000011
  sta SKCTL  ;$D20F
  jsr ?init
  ldx #$00
  lda #CLOSE ;$0C
  sta ICCMD,x ;$342
  jsr JCIOMAIN ;$E456
  lda #>$A000    ;$8000 dla 16K
  sta RAMTOP ;$6A
  lda #OPEN ;$03
  sta ICCMD,x
  lda #<e
  sta ICBUFA,x ;$344
  lda #>e
  sta ICBUFA+1,x
  lda #RW ;%1100
  sta ICAX1,x ;$34A
  txa
  sta ICAX2,x ;$34B
  jsr JCIOMAIN
?run jmp (CARTRUN) ;$BFFA
?init jmp (CARTINI) ;$BFFE

e .byte 'E:',$9B

  run $2000

Edit 4: Być może RAMTOP trzeba ustawić przed wywołaniem CARTINI, no i trzeba pamiętać że pamięć wtedy jest czysta, więc może przyda się jeszcze jakiś kod czyszczący od $400 do RAMTOP. Żeby zrobić to odpornym na RESET trzeba by jeszcze ustawić COLDST, BOOT oraz CASINI/DOSINI i DOSVEC na adresy odpowiednio ?init i ?run.

Edit 5: Spotkałem się z cartami, które inaczej inicjalizują się po włączeniu komputera a inaczej po RESET zależnie od flagi WARMST.

729

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

Nie, ale serio pytam - wywołanie DOS z BASIC-a wróci z powrotem do programu usera czyli do punktu wywołania xBIOS_RUN_SCRIPT?
Co się stanie kiedy po drodze wciśnięty zostanie RESET?

730

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

A DOS wraca do xBIOS-a? :>

KingKong JetLee karate miszcz.
Raid Over Moscow i Star Riders II / The Last Starfighter.

732

(31 odpowiedzi, napisanych Fabryka - 8bit)

@Adam Klobukowski: Czy poza emulacja Motoroli i timerów A,B,C,D coś jeszcze (dekompresja ICE rozumie się sama przez się)?

733

(105 odpowiedzi, napisanych Fabryka - 8bit)

Player do formatu .RAD mam już napisany (dla SDX), ale chciałem jeszcze zweryfikować czy mój gra dokładnie to, co playery z PC. Upublicznię kiedy tylko będzie to gotowe. Chyba, że Xxl zrobi wcześniej swój. Jeśli chcesz potestować to co jest, to podeślij maila :)

Edit: Idealnie byłoby mieć player do Adlib Trackera II, ale format .A2M jest nieco bardziej wymagający - może zrobię, ale to dalsza przyszłość.

734

(5 odpowiedzi, napisanych Programowanie - 8 bit)

Opisałem zasady używania OS-a przy wyłączonym ROM-ie w Atariki: http://atariki.krap.pl/index.php/Progra … nym_ROM-ie

735

(105 odpowiedzi, napisanych Fabryka - 8bit)

https://www.3eality.com/Public/Releases/RAD/ tu są źródła do Reality Adlib Trackera w wersji 1.0 pod DOS (asm 286) i 2.0 dla windows (c++). Zerknij na procedurę inicjalizacji chipa.

736

(105 odpowiedzi, napisanych Fabryka - 8bit)

O, przepraszam, zapomniałem o tym. No to nie przeprowadzać detekcji :)

737

(105 odpowiedzi, napisanych Fabryka - 8bit)

OPL3 (ymf 262) jest szybki więc delaye, o jakich pisze Toriman są wystarczające. OPL2 (np. ym 3812) jest wolny - tam po wybraniu adresu trzeba odczekać 3.3us, a po zapisie wartości 23us.
Zobacz do rejestrów $104 i $105 - tam konfiguruje się tryb OPL3 (układ domyślnie startuje w OPL2) który wpływa na liczbę algorytmów i ilość kanałów. Kiedy układ działa w trybie OPL2 wtedy masz na dwóch stronach dwa układy OPL2 (chyba, że masz 3812, to wtedy masz jeden OPL2 a górna strona jest nieaktywna).
Dobrze jest też przeprowadzić detekcję chipa - https://www.fit.vutbr.cz/~arnost/opl/op … #appendixB

Edit: literówka

738

(6 odpowiedzi, napisanych Programowanie - 8 bit)

623 czyli $26F to GPRIOR/GTIACTS - rejestr cień dla $D01B czyli PRIOR/GTIACTL: http://atariki.krap.pl/index.php/Rejestry_GTIA#GTIACTL
Konfiguruje on sposób wyświetlania grafiki przez GTIA, łączenie sprajtów w 5-go playera, nakładanie sprajtów oraz ich priorytety.
Nakładanie sprajtów realizowane jest parami:
- COLPM0 OR COLPM1
- COLPM2 OR COLPM3
przy czym nie ma znaczenia czy nakładany jest player z missilem, dwa missile czy dwa playery - nakładanie dotyczy pikseli o podanych kolorach.
W ten sposób w hiresie (GR.8/GR.0/ANTIC3) możesz dostać:
1. COLPF1
2. COLPF2
3. COLPF3 - kiedy włączysz piątego playera (wtedy kolor dla wszystkich missiles brany jest właśnie z COLPF3)
4. COLPM0
5. COLPM1
6. COLPM0 OR COLPM1
7. COLPM2
8. COLPM3
9. COLPM2 OR COLPM3
Możesz ewentualnie doliczyć jeszcze COLBAK czyli kolor ramki.
Możesz też eksperymentować z priorytetem 0 dla sprajtów i być może uzyskasz jeszcze dodatkowe kolory (nie eksperymentowałem z tym więc nic nie powiem).
To są kolory które możesz uzyskać w jednej linii skanningowej bez multiplikowania sprajtów ani zmiany kolorów  w rastrze.
Oczywiście na przerwaniu DLI możesz zmieniać wartości rejestrów kolorów, więc sumarycznie na ekranie możesz uzyskać wszystkie 128 kolorów (a z VBXE lub Sophia nawet 256).

Edit: Jeśli dodatkowo wziąć pod uwagę fakt, że tylko odcień dla zapalonego piksela jest brany z rejestru COLPF1, a kolor piksela jest kolorem tła (taki jaki wynika z nakładania sprajtów), to w linii masz 8*2=16 barw :)

739

(4 odpowiedzi, napisanych Fabryka - 8bit)

@Sukkor_benoth: To jest jakiś gotowy produkt? Możesz podać symbol?

Edit: Ciekawi mnie czy można by go podłączyć po prostu do wyjścia audio z Atari.

740

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

Cześć.
Czy "ciche trzaski, szumy i zakłócenia" słyszalne są wyłącznie na lewym kanale? Weź pod uwagę, że POKEY który zajmuje się komunikacją jest używany w Atari do generowania dźwięku. Stąd każdą komunikację przez złącze szeregowe słychać. Inaczej jest np. w C= który ma dźwięk odseparowany od transmisji szeregowej.
Jeśli "ciche trzaski, szumy i zakłócenia" słychać tylko na lewym kanale, to wszystko jest w porządku.
Jeśli faktycznie coś jest źle, to pomocne byłoby jakieś nagranie.

741

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

Adresy zestawów w ROM to $E000 i $CC00.

742

(216 odpowiedzi, napisanych Fabryka - 8bit)

To cyklowanie dotyczy pracy CPU w liniach 8..247? Ekler ma cykle dostępu dla odświeżania pamięci DRAM wtedy?

743

(216 odpowiedzi, napisanych Fabryka - 8bit)

Ale tym razem wojna będzie się odbywać na polu SRATARI. Półgębkiem też nadmienię że Eclaire jest zrealizowane w FPGA, a taka implementacja przez niektórych ortodoksów postrzegana jest jako EMULATOR. No, tak czy inaczej takie porównanie mogłoby być ciekawe, a i oczami wyobraźni już widzę epitety jakimi obrzucają się adwersarze. Atarowanie XXI wieku najwyższy czas zacząć :)

Edit: Urwało mi posta.

744

(198 odpowiedzi, napisanych Zloty)

A kiedy jest ten Black Friday i Cyber Monday cokolwiek by to nie było?

Mała ciekawostka odnośnie DATA.
Atari BASIC wewnętrznie pobiera dane z linii DATA za pomocą tej samej procedury, która realizuje INPUT. Tak więc dane w liniach DATA rozdzielane przecinkami traktowane są jako osobne. Polecam sprawdzić działanie takiego kodu:

10 DIM A$(100)
20 RESTORE 
30 READ A$
40 ? A$
50 GOTO 30
100 DATA 1ST LINE
110 DATA 2ND LINE,AND THE REST
120 DATA 3RD LINE
130 DATA 
140 DATA 4TH LINE

Edit: Dane w liniach DATA zawsze trzymane są w postaci niestokenizowanej - niezależnie od tego czy tam są liczby czy tekst, więc jest to mało optymalna metoda trzymania liczb dłuższych niż 6 cyfr.

746

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

Świetna wiadomość. Ciekawe czy znajdzie się drugi egzemplarz i czy uda się uzyskać schemat układu?

747

(22 odpowiedzi, napisanych Programowanie - 8 bit)

To błąd BASIC-a - ASC nie sprawdza długości ciągu i bierze zawsze pierwszy znak ze zmiennej tekstowej (czyli starą wartość, albo nieustaloną jeśli zmienna nie była zainicjalizowana wcześniej w pamięci). Uzupełniłem Atariki: http://atariki.krap.pl/index.php/Atari_ … ri%20BASIC

748

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Fox napisał/a:

Próbowałeś IF LEN(A$)=0 ?

Czy jest jakaś sytuacja kiedy A$="" nie zadziała, ale zadziała LEN(A$)=0 ?

749

(22 odpowiedzi, napisanych Programowanie - 8 bit)

10 DIM A$(1)
20 INPUT A$
30 K=0
40 IF A$="A" THEN K=1
50 IF A$="B" THEN K=2
60 IF A$="" THEN K=3
70 ? A$;K
80 GOTO 20

Działa stabilnie i przewidywalnie.

Czy DIM robisz w środku procedury przed INPUT? Za pomocą DIM nie można redeklarować zmiennej więc wyleci wtedy błąd - trzeba to zrobić tylko raz na początku programu. Jeśli go złapiesz TRAP-em, to nie zauważysz problemu.

750

(2 odpowiedzi, napisanych Programowanie - 8 bit)

Ale co w tym dziwnego? To jest po prostu rozwinięte dzielenie przez 9.