5,651

(92 odpowiedzi, napisanych Fabryka - 8bit)

nowa wersje http://atari.pl/dcturbo.rar

kolejna optymalizacja przyniosla (z racji tego ze dziala duzo szybciej) mozliwosc uruchomienia przerwan DLI w kazdej linii, wiec moze zrobic grafike z linii trybu gr.15 i gr.8 na przemian ze zmiana palety kolorow?

5,652

(53 odpowiedzi, napisanych Programowanie - 8 bit)

a widzisz, nie da sie. to tylko command i motor ctrl mozna przeprogramowac :/

trzeba krosowac kabel sygnaly interrupt i motor ctrl

z postu 36 zmianimy:

komp 1/2: motor ctrl (out) interrupt (in)

cala reszta tak samo? slaby punkt?

5,653

(53 odpowiedzi, napisanych Programowanie - 8 bit)

jakas wskazowka czego szukac? cos pokrecilem? konkretnie co?

5,654

(53 odpowiedzi, napisanych Programowanie - 8 bit)

:/ tez juz pislame w poscie 16.

jest tam jeszcze kilka mozliwosci przeprogramowania PIA i postaram sie przez weekend rozpracowac co jeszcze mozna z tego wycisnac.

a komentarz do postu 36 ?

5,655

(53 odpowiedzi, napisanych Programowanie - 8 bit)

:/ pisalem...

komputer 1 linia A(in) linia B(out)
komputer 2 linia A(out) linia B(in)
(to determinuje priorytet)

5,656

(53 odpowiedzi, napisanych Programowanie - 8 bit)

kilka razy wczesniej pisalem, ze PIA ma 4 linie w gniezdzie SIO: COMMAND,MOTOR CTL,PROCEED,INTERRUPT. wiadomo jak programuje je OS ale okazalo sie ze mozna je dowolnie zaprogramowac jako wejscie lub wyjscie, wszystkie maja bity statusu w PIA itd. linia MOTOR CTL jest nie do uzytku bo jest sprzetowo zablokowana przez tranzystor na plycie atari, pozostale linie sa do wykorzystania

5,657

(10 odpowiedzi, napisanych Bałagan)

niestety tylko murzyni umieja rapowac.

> Efekt działania Burów/Niemców i innych białych najeźdźców, którzy nakradli się tam ( i w sąsiednich krajach typu Zimbabwe, Botswana czy Namibia) a potem "rozkurwili" całą tamtejszą kulturę i populację.

jaka kulture?

5,658

(53 odpowiedzi, napisanych Programowanie - 8 bit)

:-) nie chodzi o znaczenie pojecia bo sprowadzimy rozmowe do poziomu 'czytania instrukcji obslugi' ;-) tylko gdzie problem KONKRETNIE wystepuje w tym przypadku :-)

@Krótki: komputer nie przelacza linii COMMAND kiedy chce.
mamy 3 linie wejscia/wyjscie PIA jedna z nich to COMMAND znaczenie znane, obydwa komputery maja ta linie ustawiona na WEJSCIE (czyli odwrotnie jak standardowo) lub standardowo na WYJSCIE a mozliwosc komunikacji rozstrzygana 'nizej'.

mamy komputer 1 i 2, komputer 1 zglasza status linia 1 PIA, komputer 2 linia 2 PIA czyli:
komputer 1 linia A(in) linia B(out)
komputer 2 linia A(out) linia B(in)
obydwa obsluguja przerania generowane przez PIA (ale tez niekoniecznie - moga ustawiac bity przeciwnego kompuera nie wywolujac przerwan - cpu moze miec prerwania zablokowane ale odpowiednie bity w PIA beda sie zachowywaly jak trzeba nadal).

czyli mamy taka sytuacje:
1|2 - komputery
1) 0|0 - konfigurowane linie PIA
2) 0|1
3) 1|0
4) 1|1

sytuacja 2 i 3 jest jasna - jeden z nich zajmuje siec. rozumiem Krótki, ze chodzi o sytuacje 4.

no wiec tak:
komputery chca zglosic chec przejecia sieci, sprawdzaja 2 linie PIA i napotykaja sytuacje 1) 0|0 czyli moga zglaszac chec. ustawiaja swoje linie satusu co sprzetowo ustawia odpowiedni bit w PIA drugiego komputera.

i teraz mamy sytuacje 4) 1|1 czyli obydwa komputery chca przejac siec. obydwa komputery sprawdzaja bity statusu ORAZ bity konfiguracji swojej linii statusu.
komputer A napotyka 1|1 (mam priorytet, zajmuje siec - konfiguruje COMMAND lub nie zaleznie od tego co na poczatku napisalem ale komunikacja jest mozliwa, siec nalezy do mnie)
KOMPUTER B napotykam 1|1 (nie mam priorytetu, kasuje swoja linie, sytuacja 3) 1|0 - ktos inny ma siec, wyjdz.

o to chodzilo?

5,659

(53 odpowiedzi, napisanych Programowanie - 8 bit)

wytlumacz, mozliwe ze roznie to rozumiemy.

5,660

(53 odpowiedzi, napisanych Programowanie - 8 bit)

e, tam. na uparciocha COMMAND i INTERRUPT tez by sie dalo.
nie wiem czy pisalem ale INTERRUPT i PROCEED opisane w atariki jako wejscie przerwan moze byc rownie dobrze skonfigurowane na WEYJSCIE :-) linie COMMAND,INTERRUPT i PROCEED programuje sie dokladnie tak samo :-)

przydaloby sie zeby ktos obeznany sprzetowo dal kilka wskazowek.


---
dwa komputery, jedna stacja, wszystko podlaczone STANDARDOWYM kablem SIO, atarki nie moga wymieniac sie danymi (tylko pozostalymi dwoma liniami PIA, ktore oznaczaja zajecie sieci) ale moga korzystac ze wspolnej stacji dyskow. jedna zmiana - obydwie atarki maja ustawione COMMAND na wejscie, przelaczenie ktorejkolwiek na wyjscie a co za tym idzie zajecie sieci i uzycie stacji zglasza liniami PIA, zeby druga atarka nie mogla przelaczyc command na wyjscie.

ogolnie to ciekawi mnie dlaczego atari8bitowe nie mialo zadnej namiastki sieci - a moze mialo?

5,661

(53 odpowiedzi, napisanych Programowanie - 8 bit)

@Fox: bardziej Atari2Atari :)

@drac030: nie, poniewaz korzystajac z jednej konfigurowanej linii COMMAND obydwa komputery moga dla siebie byc widziane jako stacji dyskow czyli komputer A jest stacja dla komputera B a komputer B stacja dla komputera A, w przypadku SimDrive raczej tak nie jest. ciekawe tez o ile SimDrive bylby mniej skomplikowany gdyby autor wiedzial ze linia COMMAND jest konfigurowana i moze sluzyc za wejscie przerwan.

ps. simdrive http://www.ftp.pigwa.net/stuff/collecti … simdrv.gif zeby czytelnik wiedzial o czym mowa.

@Krótki: oczywiscie, ze autorzy OS nie musza wykorzystywa zasoby komputera. dopoki jest mozliwosc odlaczenia os jest ok.

5,662

(53 odpowiedzi, napisanych Programowanie - 8 bit)

zamienic kolejnosc tych dwoch przewodow w kablu?

5,663

(53 odpowiedzi, napisanych Programowanie - 8 bit)

wydaje mi sie ze nie masz racji. kolejny przyklad:

> Celowo w protokole SIO wyłącznie jednostka centralna ma prawo zewrzeć linię COMMAND.

w takim razie podlaczamy dwa komputery zwyklym kablem SIO, jeden dziala jako host standardowo, w drugim ustawiamy linie COMMAND jako wejscie i uruchamiamy program "emulator stacji dyskow". mozna?

5,664

(53 odpowiedzi, napisanych Programowanie - 8 bit)

> Podczas współpracy komputera z 4 stacjami dysków wszystko się dzieje zgodnie z protokołem SIO, więc stwierdzenie "taka sytuacja występuje cały czas" wygląda na oderwane zarówno od rzeczywistości jak i od tej dyskusji.

jesli komputer wysyla komende do stacji numer x to COMMAND jest zwarty a 3 pozostale stacje nie szaleja. to normalna sytuacja.

> A w jaki sposób ...

no to podlaczmy kilka komputerow i kilka stacji dyskow w siec. jak moglaby wygladac siec zbudowana w oparciu o SIO? sprobujmy. mamy do dyspozycji 3 bity statusu linii przerwan. mozemy je dowolnie programowac jako wejscie i wyjscie wiec z dowolnego kompa w sieci mozemy ustawiac bity w PIA na kazdym innym komputerze w sieci. dowolny komputer aby przeprowadzic jakas operacje sprawdza status jednego z tych bitow (odpowiedzialnego za zajeta siec) jesli siec jest wolna ustawiamy bit i przeprowadza komunikacje, skonczyl, uwalnia siec. pomysl na szybko. moze to tak dzialac?

5,665

(53 odpowiedzi, napisanych Programowanie - 8 bit)

@Adam, to zalezy od Electrona :D http://atariarea.krap.pl/forum/viewtopic.php?id=8378

@Krótki: nie wydaje mi sie, jesli masz 4 stacje podlaczone jednoczesnie to taka sytuacja wystepuje caly czas i nic zlego sie nie dzieje. zeby uruchomic jakas akcje musi byc wspolpraca PIA i POKEYA po stronie atari.
ale pobujajmy troszke: zalozmy, ze napiszemy sobie bios dla stacji np.2001 w ktorym damy mozliwosc stacji dyskow samodzielnego nawiazywania kontaktu z inna stacja w systemie? dzieki bitowi PBCTL moglibysmy wykryc takie urzadzenie w lancuszku SIO ;-)

5,666

(130 odpowiedzi, napisanych Scena - 8bit)

gwiazdy leca nie w tym kierunku co trzeba?

zeby to sie przerodzilo w gre :-)

5,667

(53 odpowiedzi, napisanych Programowanie - 8 bit)

najwazniejsza i wlasciwie nowa informacja jest ta, ze linia COMMAND moze byc zaprogramowana jako wejsciem przerwan i po przyslowiowym jednym POKE na standardowym atari bez jakichkolwiek rozszerzen systemowa procedura rozpoznania przerwania IRQ nie moze go zidentyfikowac. reszta to tylko dodatkowe informacje z debugownia ;-)

no ale racja, skoro mozna zastapic systemowa procedure rozpoznania przerwania wlasna to w tym sensie OS atari nie ma bledow i jest przemyslany (raczej system w sensie sprzetu) - bo jesli OS Atari na jakims polu niedomaga zawsze mozna go wylaczyc i zastapic swoja procka. po to wlasnie jest ;-)

jest jeszcze jedna niescislosc w obsludze PIA, moze po weekendzie cos sie urodzi.

5,668

(53 odpowiedzi, napisanych Programowanie - 8 bit)

@Fox: przystawka dla cheaterow w grach ;-)

debugowalem i oto wyniki:

oprocz bledu z nieprzechwyceniem przerwan z BPI jest kolejny. mozna generowac niezidentyfikowane (przez OS atari) przerwania poprzez PIA, blad w systemowej procedurze rozpoznania znajduje sie tu:

$C0AD  bit $D303
$C0B0  bpl $C0B8
$C0B5  jmp ($0204)
$C0B8

brakuje sprawdzenia bitu 6 $D303 chociazby rozkazem bvc/bvs

cytat z atariki: Rejestr kontroli portu B. Znaczenie bitów:
bit 7: status przerwania IRQ portu B (1 - wystąpiło)
bit 6: nieużywany (zawsze 0)
bit 5: nieużywany (zawsze 1)
bit 4: nieużywany (zawsze 1)
bit 3: sterowanie linią COMMAND gniazda SIO (0 - aktywna)
bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
bit 1: nieużywany (zawsze 0)
bit 0: zezwolenie na przerwanie IRQ portu B (1 - dozwolone)

nieprawda, nieuzywany chyba przez system operacyjny bo normalnie mozna programowac PIA. powinno byc:

bit 7: status przerwania IRQB1 portu B (1 - wystąpiło)
bit 6: status przerwania IRQB2 portu B (1 - wystąpiło)
bit 5: funkcje1
bit 4: funkcje1
bit 3: funkcje1
bit 2: bit wyboru funkcji rejestru PORTB: 0 - rejestr kierunku przepływu danych, 1 - rejestr przesyłania danych.
bit 1: funkcje2
bit 0: funkcje2

w zaleznosci od funkcji1
bit 3: moze byc linią COMMAND gniazda SIO lub wejsciem przerwan

funkcje2: wybieraja zachowanie linii INTERRUPT

nie ma informacji ze linia "COMMAND" MOZE BYC WEJSCIEM PRZERWAN i zglasza to bitem 6 w rejestrze PBCTL PIA?

to samo dotyczy PACTL. mozna zaprogramowac linie MOTOR CTL tak, ze bedzie WEJSCIEM przerwan - tylko tu jest problem taki, ze atari ma sprzetowa blokade w postaci tranzysotra, wiec jesli chcemy odbierac ta linia przerwania nalezy wpiac sie przed tranzystor ;-) tu sobie mozna wymyslec rozszerzenie ktore z tego korzysta bo z gniezda SIO nie mozna wywolac tego przerwania.

czy ktos ze sprzetowcow moze to potwierdzic lub zaprzeczyc?

5,669

(130 odpowiedzi, napisanych Scena - 8bit)

rewelka

5,670

(74 odpowiedzi, napisanych Fabryka - 8bit)

ok. czyli dla pelnej jasnosci mozesz ustawic kolor tla na niebieski a kolor czcionki na czerwony z luminancja rozniaca sie o 2? a co sie stanie jesli postawisz obiekt PM "za" znakiem - znak przejmie kolor obiektu PM czy nie.

---
mozesz zrobic dobrej jakosci zdjecie ?

5,671

(53 odpowiedzi, napisanych Programowanie - 8 bit)

jeszcze to:

$C0A2  bit $D302
$C0A5  bpl $C0AD
$C0A7  lda $D300
$C0AA  jmp ($0202)
$C0AD

i niby wszystko jasne i wlasciwie zgodne z tym co jest w literaturze i atariki, ale pierwszy port PIA ma dwie linie do portu SIO, ta procka wyzej bada przerwanie na jednej z nich. w dokumentacji PIA jest, ze druga linia tez moze byc zaprogramowana jako wejscie przerwania i zglasza to bitem 6 czyli w powyzszej procedurze brakuje rozkazu:

BVC

no i wlasnie to jest niezgodne z literatura bo np na atariki mozna przeczytac ze sa to kombinacje nieuzywana (w takim razie po co jest inicjowana tak, ze zostaje programowo wylaczona).
czy po wlaczeniu atari zacznie przyjmowac przerwania dwoma niezaleznymi liniami na porcie A? caly czas mowie o porcie A a nie porcie B!!!

jesli to prawda, to procka rozpoznania przerwania IRQ w atari ma co najmniej dwa bledy.

a moze sie myle i faktycznie na atari to jest jakos sprzetowo zablokowane. moze to ktos zweryfikowac przynajmniej teoretycznie?

5,672

(53 odpowiedzi, napisanych Programowanie - 8 bit)

i nie mozemy tego wykryc ani obsluzyc bez wylaczania OS, a wplyw to ma dzialanie komputera.

5,673

(74 odpowiedzi, napisanych Fabryka - 8bit)

slabo widac.. to wychodzi tylko z kolorem czarnym czy moga byc inne?

5,674

(53 odpowiedzi, napisanych Programowanie - 8 bit)

@mono, to ze mozna obslugiwac standardowa sytuacje przerwania przez wektor VIMIRQ to jest jasne, mowimy o niestandardowej sytuacji gdy atari skacze do $C0C9

drac030 napisał/a:

W ogóle to nie wiem, dlaczego jest tam to PHA/PLA/RTI, chyba wystarczyłoby RTI zamiast tego. Ale może chodzi o pozostawienie 3 bajtów miejsca na JMP () przez wektor użytkownika (który jak sobie doda urządzenie generujące "niezidentyfikowane" przerwanie, to może sobie i OS spaczuje). Albo po prostu o pozostawienie miejsca na przyszłe rozszerzenie o taki wektor.

samo rti nie wystarczy bo OS podczas sprawdzania czy nie ma ustawionego bitu $10 stanu procesora wczesniej zrzuca ze stosu rejestr A wlasnie do $028C. czyli musi byc:

lda $028C
PHA

czyli 4 bajty a nie 3
bo zaraz po nich jest procka wyjscie z przerwania dla calej reszty

PLA
RTI

z tym patchowaniem osa to tez srednio, to tak jakby sie przyznac ze programisci OSa nie wiedzieli co pisza :/

moze jest inne potencjalne zrodlo takiego przerwania? ktore z premedytacja musi byc ignorowane?

5,675

(53 odpowiedzi, napisanych Programowanie - 8 bit)

zalozmy ze tak bylo. czy nie rozsadniej by bylo zastosowac dokladnie ten sam schemat jak w calej procedurze obslugi przerwania niemaskowalnego i skoczyc przez wektor (powiedzmy wektor przerwania niezidentyfikowanego) do procki opuszczajacej przerwanie? to by mialo sens, bo z OSa mozligysmy takie 'dziwne' urzadzenie obslugiwac. nie jest to zadne zabezpieczenie bo uzywajac OS nic z tym nie mozemy zrobic, ani oprogramowac ani nawet wykryc takiej sytuacji (bez odlaczania OS).

czy oprocz zle zdefiniowanego urzadzenia PBI cos moze wygenerowac takie niezidentyfikowane przerwanie?