826

(364 odpowiedzi, napisanych Fabryka - 8bit)

Mq napisał/a:

Adres żeby ustawić, to trzeba zlutować _tylko_jedno_ z połączeń na tej "drabince". Moja sugestia jest taka, żeby poprosić Mono o wytyczne, bo to on pisze soft. Mono jak czytasz, to proszę, wypowiedz się tu:-)

Moje programiki można konfigurować podając adres karty za pomocą /A adres, więc docelowy adres urządzenia nie jest wielkim problemem. Domyślnie przyjmowany jest adres bazowy $D500.
Jeśli dobrze widzę adres bazowy SONari może być skonfigurowany za pomocą jumperów SJ3..10 (wg schematu http://raven1.magix.net/sonari/SONari_stereo.pdf) co $20 bajtów. Ponieważ SlightSID siedzi sobie w obszarze $D500..$D542, to może niech adres bazowy SONari byłby w $D560? To będzie Y3 (czyli SJ6) zwarty?

Edit: Pamiętajcie jeszcze o SJ1 i SJ2 jak nie chcecie żeby programy wypisywały Wam że znalazły AY a macie wsadzone YM :)

827

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

@Impuls: Zerknij na kolejną odsłonę rodziny 65 czyli na 65C816 i od razu humor Ci się poprawi. Tego procesora możesz używać z Rapidusem.

seban napisał/a:

EDIT2: sprawdziłem wersję XEX, po 28 levelu który ma "?" jako układ bloków do rozbicia... następuje level 29 z dwoma rzędami klocków u góry, po czym odpala się level 30 i to jest już kaszana i śmiecie na ekranie. sprawdzę zatem oryginał na carcie. Sprawdziłem oryginał na carcie, odpalony na real sprzęcie. Gra zachowuje się dokładnie tak samo... sieczka na 30-levelu.

Czyżby autor założył że nikt nie dotrze tak daleko?

EDIT3: LOL... autor popełnił błąd w kodzie ;) zakładał że poziomów będzie 49... jednak poziomów w grze umieścił 29... poziom 30 faktycznie nie istnieje... po poprawce w kodzie gry po przejściu 29 poziomu... gra po prostu startuje od nowa tzn. od poziomu nr 1 :) nie ma żadnego zakończenia, nawet napisu "congratulations" :D

Niesamowite - Nexuss na carcie, choć też zepsuty. Ale odkrycie jest fajne - wielkie dzięki za podrążenie tematu i za poprawkę!

829

(106 odpowiedzi, napisanych Fabryka - 8bit)

Ja też chętnie nabyłbym taki zamiennik lub też dwa.

830

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

Zanabyłem drogą kupna 130XE SECAM od Bitmana i stwierdzam, że FGTIA poprawnie generuje wszystkie sprajty i obsługuje kolizje (testowane na SysInfo2), ma 8 odcieni i zarówno tryby ANTIC-a, jak i GTIA wyświetla poprawnie.

831

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

Podłączone i sprawdzone. Monitor ma proporcje 4:3 a do tego co Panowie pisali http://www.atari.org.pl/forum/viewtopic … 38#p241338 podzielę się swoimi wrażeniami:
1. Atari 130XE PAL obraz z wyjścia VBXE (RGB) podłczone przez SCART - obraz stabilny i ostry, nic nie drży. Sygnałów composite video ani chroma/luma nie testowałem, bo nie mam kabelków.
2. Atari 130XE SECAM obraz z wyjścia monitorowego (video output) podłączony przez SCART - obraz stabilny i ostry, kolory chyba poprawne bo nieco inne niż w PAL.
Nie zaobserwowałem opóźnień.
Więc ten monitor (LG FLATRON M1917A) chyba można spokojnie polecić do VBXE.

832

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

Dzięki Panowie. Poczytałem wątki, w których pisaliście o różnych modelach. Niestety LG M1721A nie udało się namierzyć, ale zamówiłem LG FLATRON M1917A i zobaczymy jak się będzie sprawować. Obadam rzecz jak już przyjdzie i zdam relację.

833

(157 odpowiedzi, napisanych Zloty)

No bardzo ładna inwitka. Gratulacje Lisu!

834

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Tak czułem niestety. Szkoda. Ale zrobię w wolnej chwili jednak test, bo kto wie - może wszyscy będziemy zaskoczeni :) Dzięki.

835

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

No i niestety kolejny monitorek (tym razem Commodore 1084, wcześniej Phillips 8833) odszedł do Krainy Wiecznych Łowów.
Używałem go głównie do działań z VBXE i pomyślałem, że może spróbuję się zaopatrzyć w jakiś monitor LCD tym razem. CRT są już leciwe i niestety będą wysiadać coraz częściej (jakkolwiek zakupię jakiś CRT na pewno, ale chciałbym mieć jakiś sprzęt co do którego nie będę musiał się obawiać że lada dzień i ten przeniesie się na łono Abrahama).
Moja idealna wizja:
1. Obsługa PAL, NTSC i SECAM.
2. Obsługa interlace zarówno standardowego (mruganie naprzemienne ramkami parzystymi), jak i Rybagsowego (ramki parzyste i nieparzyste).
3. Wejście RGB, wejście obsługujące sygnał ze standardowego gniazda monitorowego Atari.
4. Proporcje ekranu 4:3.
5. Małe opóźnienie bo miło byłoby gdyby dało się na nim grać.
Oczywiście liczę się z tym, że może ideał nie jest możliwy do spełnienia.
Czy możecie mi jakiś model polecić?

836

(75 odpowiedzi, napisanych Programowanie - 8 bit)

Wszystko to znajdziesz u Zientary w "Procedurach Wejścia/Wyjścia": http://tajemnice.atari8.info/ksiazki/index.html
Można spojrzeć do "Procedur interpretera BASIC-a" w jaki sposób realizowane jest LOCATE - wydaje mi się, że x i y należało wstawić do COLCRS i ROWCRS po czym wykonać GET (PLOT analogicznie, ale z PUT-em). Ale głowy nie dam.

837

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

Pin do ściągnięcia zasobów z internetu używa Atari :] Serio.

838

(56 odpowiedzi, napisanych Bałagan)

AS... napisał/a:

W ramach świątecznego prezentu, proponuję odbanować Bezrobottnego :)

Chciałbyś wprowadzić na forum element baśniowy?

839

(56 odpowiedzi, napisanych Bałagan)

Ale Święty Mikołaj był 2 tygodnie temu. Teraz CHOINKA :)
Zdrowych i spokojnych oraz szczęśliwego nowego!

Dziękuję, płytki dotarły całe i zdrowe.

tr1x napisał/a:

I teraz pytanie o program, który posłuży do przeprowadzenia tego eksperymentu. Wstępnie wydaje mi się, że program, którego kod wstawiłem w pierwszym wpisie w tym wątku (korzystający z joysticka i operujący na rejestrach cieniach) będzie odpowiedni. Można go zmodyfikować, aby zmieniał także (albo wyłącznie -- fotorezystor będzie umieszczony przy górnej krawędzi ekranu) kolor ramki. Joystick nie będzie tu elementem, w stosunku do którego cokolwiek mierzymy, a jedynie wyzwalaczem zmiany koloru tła (można też co sekundę zmieniać kolor tła, o czym pisałeś). Jeśli dobrze rozumiem, to ponieważ w tym programie operujemy na rejestrach cieniach, to synchronizujemy się z powrotem pionowym i dzięki temu pozbywamy się problemu związanego z niepewnością, gdzie była plamka w momencie zmiany koloru tła.

Tak jest. W tym przypadku cienie będą doskonałe.
Przykładowy program zmieniający kolor co 1s z czarnego na biały:

RTCLOK = $12
COLBAKS = $2C8

  ldx #$00
  ldy RTCLOK+2
blink:
  tya
  clc
  adc #50
  tay
sync:
  cpy RTCLOK+2
  bne sync
  stx COLBAKS
  txa
  eor #$0F
  tax
  jmp blink

Testujesz i sterujesz rejestry cienie, które są aktualizowane na przerwaniu VBLK. To powoduje, że od fizycznej zmiany stanu joysticka do aktualizacji rejestru PTRIG może minąć prawie cała ramka czyli 312 linii skanningowych (PAL). Następnie na podstawie cienia ustawiasz stan rejestru cienia dla koloru COLOR2 - zostanie on zaktualizowany dopiero przy następnym VBLK - czyli po kolejnych prawie 312 liniach skanningowych. Co więcej sterujesz COLPF2 a więc obszar tła w trybie GR.0 a więc kolor zieniany jest w ograniczonym obszarze. Więc przy Twojej metodzie pomiaru miną min 1 a max 2 ramki ekranu w reakcji na wychylenie joystickiem.
Ile to może zabrać czasu? 114 cykli na linię * 312 linii skanningowych / 1773447 Hz = 20 ms. To jest czas trwania ramki w PAL.
Proponuję użyć rejestrów hardwareowych, wtedy na natychmiastową zmianę stanu joysticka będzie można natychmiast zmienić kolor tła ekranu. Proponuję też wyświetlać ekran pusty i zmieniać kolor ramki ekranu w reakcji nie na wychylenie joysticka, ale na stan przycisku.

RTCLOK = $12
TRIG0 = $D010
COLBAK = $D01A
DMACTL = $D400
NMIEN = $D40E
NMIRES = $D40F

  lda RTCLOK+2
sync:
  cmp RTCLOK+2
  beq sync
  lda #$00
  sta DMACTL
  sta NMIEN
  sta NMIRES
loop:
  ldx #$00
  lda TRIG0
  bne skip
  ldx #$0F
skip:
  stx COLBAK
  jmp loop

Monitor CRT powinien dać opóźnienie od 0 do 20 ms, ponieważ fotorezystor bada punkt na ekranie, przez który przebiegnie plamka (pewnie jakiś obszar) a przecież wciśnięcie przycisku mogło się zdarzyć w pierwszej linii skanningowej, a badanie plamki w ostatniej. Reakcja na zmianę stanu przycisku odbywa się w ciągu 12 cykli CPU więc w ok. 7us i to właściwie powinien być najkrótszy obserwowalny czas reakcji CRT.
Wydaje mi się, że w ten sposób dałoby się precyzyjniej określić opóźnienie LCD, ale cudów nie oczekiwałbym - podejrzewam, że czas reakcji skróci się o 20..50 ms.
Przerwania NMI wyłączam ze względu na odświeżanie rejestrów hardwareowych na podstawie rejestrów cieni na VBLK.

Edit: Może nie prościej, ale czy nie lepiej byłoby zamiast testować stan joysticka badać skok sygnału luminancji a element światłoczuły ustawić na górze ekranu? I mrugać wtedy ekranem co np. 1s?

843

(734 odpowiedzi, napisanych Kolekcjonowanie)

http://whizzosoftware.com/sio2arduino/vapi.html

844

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

A mógłbyś powiedzieć gdzie ten czeski sklepik?

845

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Mamy taki BCB:

bcb_transfer:
?srcad  .long SOURCE
?srcdy  .word 1
?srcdx  .byte 0
?dstad  .long TARGET
?dstdy  .word 1
?dstdx  .byte 0
?width  .word 1-1
?height .byte 64-1
?and    .byte %00000000
?xor    .byte %00000000
?coll   .byte %00000000
?zoom   .byte $00
?patt   .byte %00000000
?mode   .byte 1  ;TRANSPARENTCOPY

Jak VBXE to wykona? Czy pobierze BCB i:
1. zorientuje się że w wyniku AND i XOR  jest zawsze 0 i pominie wykonanie blita - czyli skończy tylko na pobraniu BCB?
2. będzie pobierać dane z SOURCE 64 razy, ale nie zapisze niczego w TARGET?

846

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

Kiedyś widziałem ogłoszenie o takiej mniej więcej wymowie: "Kupię mieszkanie 2-pokojowe w rozsądnej cenie, uwzględniającej zarobki na podkarpaciu". Uwzględnilibyście?

847

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

Mapper oparty o RAM byłby chyba najszybszym rozwiązaniem, bo podejrzewam że wyzwaniem tutaj są reżimy czasowe związane z dostępem do odpowiedniego carta na magistrali.
Czy trzeba by aż FPGA to nie wiem. Wyobrażam sobie to np tak, że taki mapper mógłby być cartridgem diagnostycznym z własną pamięcią EEPROM do zachowania ustawień. Przy włączeniu komputera taki cart startuje, mapuje sobie ROM w $A000..$BFFF i przepisuje ustawienia z EEPROM do własnego RAM używanego właśnie do mapowania (może też na jakąś kombinację klawiszy wchodzić do edytora i umożliwiać modyfikację mapy i jej zapis w EEPROM). Potem cart wraca do OS-a z już skonfigurowanym mapowaniem i pozwala na normalną pracę całego systemu (mógłby co najwyżej jeszcze przed powrotem zorientować się czy nie jest aktywny jakiś inny cart diagnostyczny żeby przekazać mu sterowanie).
Ponieważ mapowane są tylko rejestry na $D5 to wystarczy 256 komórek RAM o szerokości 12-bit - ten RAM używany byłby wyłącznie do przemapowywania adresów na stronie $D5 kiedy sygnał CCTL jest aktywny czyli trzymałby ustawienia A0..A7 kierowanych na magistralę adresową cartów - sygnały A8..A12 nie są przemapowywane. Za to w RAM trzeba jeszcze dodatkowo trzymać informację o numerze carta, który ma być uaktywniany CCTL-em.
Kiedy S4 lub S5 są aktywne ta mapa nie jest używana, ale potrzebny byłby dodatkowo jeden rejestr do wyboru carta mapującego swoje obszary adresowe $8000..$9FFF i $A000..$BFFF. Powiedzmy że dolna połówka odpowiadałaby za nr carta dla obszaru $A000..$BFFF, a górna za $8000..$9FFF - ten selektor też odpowiadałby za to, z których cartów byłyby przyjmowane sygnały RD4 i RD5.
Czyli z grubsza:
- 2 demultipleksery dla R/W i FI2 Edit: a może nawet nie są potrzebne,
- RAM dla A0..A7 i nru carta + dekoder 1 z N dla CCTL,
- rejestr 4-bit + dekoder dla S4 + multiplekser RD4 do obsługi $8000..$9FFF,
- rejestr 4-bit + dekoder dla S5 + multiplekser RD5 do $A000..$BFFF,
- no i pewnie bufory dla magistrali danych + trochę logiki żeby mapowanie odbywało się tylko dla CCTL.
W przestrzeni adresowej Atari musiałyby być dostępne rejestry do:
- adresowania EEPROM mappera (adres, wartość)
- adresowania RAM mappera (adres, wartość)
- rejestr selekcji cartów dla obszarów $8000..$9FFF i $A000..$BFFF,
- i pewnie jakiś rejestr aktywujący/deaktywujący mapper żeby można było modyfikować konfigurację w EEPROM.
To oczywiście zarys fabuły. Diabeł jak zawsze tkwi w szczegółach...
Może zamiast RAM dałoby się tam wsadzić jakiś programowany układ kombinacyjny, który zależnie od stanu wejść wystawiałby wyjścia?

Edit: Właśnie mapper załatwiałby całkowicie kwestię dekodera. Żaden konstruktor cartridgy nie musiałby robić pełnego dekodera (zresztą w istniejących cartach rzadko który ma pełny dekoder) - precyzyjne adresowanie robiłby sam mapper.

Edit 2: Sloty po N bajtów dla każdego carta na stronie $D5 nie są dobrym pomysłem ze względu na to że tam jest tłoczno. Niektóre cartridge z bankowaną pamięcią potrafią zająć pół strony (bo przełączanie banków polega na odczycie konkretnego adresu $D5xx) i na inne urządzenia robi się mało miejsca. Poza tym nie ma reguły gdzie taki cart będzie miał swoje rejestry - czy na początku strony, czy może na końcu? A chodzi o to, żeby tę stronę jednak wykorzystać do maksimum. Gdyby EEPROM miał więcej bajtów, to można by w nim trzymać presety.

Edit 3: Właściwie to gdyby zastosować PLD który programowany byłby na etapie edycji ustawień mappera, to całe urządzenie mogłoby (chyba) być zrealizowane tylko za jego pomocą. Mamy wtedy jeden układ kombinacyjny i może udałoby się spełnić nawet restrykcje czasowe na magistrali gdyby układ był dość szybki. W przestrzeni adresowej Atari trzeba byłoby mieć wtedy tylko rejestry do EEPROM-u, rejestry do programowania PLD (niedostępne kiedy mapper jest aktywny) i rejestr aktywujący mapper. A oprogramowanie konfiguracyjne mogłoby być nawet w postaci pliku .XEX bo raz zaprogramowany PLD działałby już zawsze aż do kolejnej zmiany.

848

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

Wewnętrzne BASIC-i i gry (XEGS) mimo, że leżą w tym samym obszarze adresowym co cart ($A000..$BFFF) są obsługiwane bitami PORTB ($D301). Natomiast prawdziwy cart po włożeniu do slota sygnalizuje ten fakt w rejestrze TRIG3 ($D013) i ten właśnie rejestr sprawdza OS na przerwaniu VBLKD porównując go z GINTLK ($3FA) - jeśli się różnią następuje JMP * co powoduje zwis komputera.
Sparta obchodzi to blokując drugą fazę VBLK przez SEI, przełącza carta po czym aktualizuje zawartość GINTLK. Ot i cała sztuka. Więc rygor o którym pisze toriman1 da się obejść instalując sekwencję rozkazów LDA TRIG3; STA GINTLK na VBLKI, bo to jest ograniczenie OS-a a nie hardware.
Nie jestem pewny czy carty które mają tylko rejestry na $D5 powodują ustawienie TRIG3. Edit: Jestem już pewny - wystawienie RD5 przez carta powoduje ustawienie TRIG3, a carty urządzeń zazwyczaj tego nie robią - tylko carty z pamięcią w $A000..$BFFF.

@toriman1: Pinokiu chodzi o mapowanie adresów pod którymi rejestry różnych cartów są widoczne na $D5. Wtedy carty mogłyby mieć bardzo prostą konstrukcję dekodera adresów, ale mapper pozwalałby lokować ich rejestry w prawie dowolnie wybranych obszarach I/O, co pozwoliłoby na włączenie naraz SONari, SIDari, YAMari, SlightSID-a, samplera od Mirage, SIDE i co tam jeszcze kto chce, ale z rejestrami każdego z tych cartów dostępnymi w innych obszarach $D5.
Wydaje mi się, że taki mapper można zrealizować jakąś szybką pamięcią na wejściu której podasz adres, R/W, S4/5 i CCTL a dostaniesz informację o nrze slotu do którego przełączyć adres, dane i informacje o bramkowaniu magistrali danych, sterującej i sygnałów zwrotnych od carta.

Edit: Literówki.

Edit 2: Przykład:

Slot 0: SIDari
Slot 1: SONari
Slot 2: coś co gra muzykę SID-em i AY-kiem.

Mapowanie adresów:
$D500..$D53F RW - aktywacja slotu 0, adres wystawiany dla carta to $D500..$D53F, RW, CCTL i dane przepuszczane
$D540..$D543 RW - aktywacja slotu 1, adres wystawiany dla carta to $D500..$D503, RW, CCTL i dane przepuszczane
$8000..$9FFF R - aktywacja slotu 2, adres bez zmian, RW, S4 i dane przepuszczane
$A000..$BFFF R - aktywacja slotu 2, adres bez zmian, RW, S5 i dane przepuszczane

Slot 0 i 1 jest uaktywniany przy odczycie lub zapisie, slot 2 tylko przy odczycie.
Tylko slot 2 powinien mieć przepuszczane na stałe sygnały RD4 i RD5 - w mapperze mógłby być dostępny rejestr do selekcji slotu, żeby można było przełączać aktywne obszary $8000..$9FFF i $A000..$BFFF z różnych cartów.
Poza tymi obszarami żaden slot nie jest uaktywniany.

849

(364 odpowiedzi, napisanych Fabryka - 8bit)

Nie umim :/ Podejrzewam, że trzeba by skompilować biblioteki resid i ayemu dla Win$. Ściągnięcie mingw i podanie dodatkowo --target=windx przy ./configure wykłada mi się na bibliotekach DirectX.
Może ktoś bardziej obeznany w tych rzeczach mógłby to skompilować, albo przynajmniej przygotować jakąś instrukcję?

Edit: W moim przypadku w grę wchodzi kroskompilacja - nie mam i nie używam Windowsa.

850

(364 odpowiedzi, napisanych Fabryka - 8bit)

Pod tym samym linkiem znajduje się zaktualizowane moje lokalne repozytorium git projektu Atari800 z dołożoną obsługą SIDari oraz SONari. Obsługiwane są zarówno wersje z jednym chipem, jak i z dwoma.