4,551

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

Gdzie znajde opis obslugiwanych komend kontrolera ?

Odpowiadam solidniej na pytanie pierwsze: kiedyś była jakas dokumentacja, ale zginęła. Ale, ponieważ właśnie dokonałem znaleziska najnowszych źródeł sterownika (v. 1.4, o których byłem przekonany, ze przedpadły), mogę ci powiedzieć co następuje:

Kontroler obsługuje normalnie komendy: read/put/write sector (przy czym write = put), read status, read percom. Przy tym trzeba pamiętać, że wielkość transferu jest z góry określona, to znaczy niezależna od tego, co zapiszemy w DBYT. *NIEMNIEJ* DBYT trzeba ustawiać, bo z powodu że najnowsza wersja sprzętu przeznacza aż 3 kilo na program sterownika, być może zrobię z DBYT jakiś użytek.

Blok PERCOM wygląda tak:

0 - wartość 1 (znaczy, że twardy dysk)
1 - numer wersji zczytany z ROM-u ($14 = 1.4)
2 - starszy bajt liczby sektorów partycji
3 - młodszy bajt liczby sektorów partycji
4 - najstarszy bajt liczby sektorów partycji
5 - flagi, nie pamiętam, zapisuje to FDISK
6 - starszy bajt liczby cylindrów napędu
7 - młodszy bajt liczby cylindrów napędu
8 - $FF
9 - "I"
10 - "D"
11 - "E"

Ponieważ ktoś napisał, że PERCOM SIO2IDE wygląda podobnie, więc przypuszczałbym, że ktoś się tu zainspirował moimi wynalazkami.

Rozkaz read status zwraca 4 bajty, z czego:

bajt 0, bit 3 = 1 - write protection, bit 4 = 1 - podpięte są dwa dyski
bajt 1, rejestr ERROR kontrolera (bieżąca wartość), eor #$FF
bajt 2, bez znaczenia
bajt 3, bez znaczenia

Rozkazy dodatkowe:

$E6 - SLEEP - powinien zaparkować dysk i faktycznie to robi w przypadku większości napędów.

$E7 - RESET - resetuje oba napędy, co powinno je obudzić (jeśli zrobiono przedtem SLEEP)

$EC - INDENTIFY DRIVE - zwraca informacje o napędzie (p. dokumentacja dysków ATA)

$EE - MEDIA CHANGE - odczytuje na nowo bootsektor dysku (mam na myśli master boot sektor, z tablicą partycji i wszystkim) do wewnętrznej pamięci sterownika, oraz resetuje wewnętrzne zmienne.

Jedyny parametr, jakiego te rozkazy wymagają, to numer którejkolwiek partycji w DUNIT, no i $31 w DDEVIC. Jak będzie więcej miejsca, to się może zrobi, żeby DUNIT nie trzeba było ustawiać (bo i po co).

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

Dodatkowa informacja: numer wersji sterownika jest zapisany pod adresem $d804 w postaci DCB, tj. $14 = 1.4

4,552

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

No piknie, że żadnych kabli, ale wolałbym żeby przynajmniej pamięci się dało wymieniać  :?

4,553

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

No niech ci będzie, chociaż dziko jest pisać nie widząc treści tego, co napisał poprzednik :/

Co do nowego oprogramowania, to przecież KMK/JZ IDE jest nowym urządzeniem, więc to nie OS współpracuje ze sterownikiem, ale sterownik z OS-em. "Inne kontrolery" będą się zachowywac tak samo, o ile spełniają standardy ustalone dla nowego urządzenia ...

4,554

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

Niestety, przycisk "Odpowiedz" nie cytuje postu poprzednika. Robi to własnie przycisk "Cytuj". Czy jego używanie jest zabronione? Gdzie to jest napisane w FAQ i Regulaminie?

4,555

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

Zawsze znajdzie się inteligent, który nie będzie mógł zrozumieć dlaczego asembler wywala błąd (ostrzeżenie) dla ciągu rozkazów: ldx #$00.w, ldy #$01.b. Bo przyrostki raczzej powinny służyć tylko celom informacyjnym, ew. ostrzegawczym podczas asemblacji, ale rozmiar operandu powinien być dobierany w zależności od "ręcznych" ustawień asemblera (.ib/.iw).

Właśnie. Co powinien wg was wyprodukować asembler z powyższych rozkazów zapisanych jeden po drugim, i w jakim stanie zostawić rozmiar rejestrów indeksowych po zasemblowaniu tego kawałka kodu?

Powinien zrobić to samo co po

.iw
ldx #0
.ib
ldy #0

4,556

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

... no to panowie - prosze kończyć poprawiony rom. Heh - dwadzieścia kilka kompów już ma na pokładzie 65c816... :D

Można byłoby pomyśleć o paru rozszerzeniach przy okazji, nie? Np.:

1) możliwość przypisania dowolnego obszaru pamięci jako bloku IOCB
2) możliwość zajęcia pierwszego wolnego IOCB (czyli CIO przydziela deskryptor)
3) wywoływanie funkcji systemu przerwaniami programowymi - bo jak program ma działać w pamięci powyżej 64k to o tablicy skoków i tak mozna zapomnieć ...

No i gdyby tak rejestry I/O adresować 24-bitowo, a zmienne w RAM-ie 16-bitowo, to programy w oddzielnych bankach pamięci mogłyby działać niezależnie, wtedy tylko mały schedulerek ...

Pomyślę o tym jeszcze.

MM: Do odpowiadania sluzy przycisk Odpowiedz, a nie cytuj!!! Last Warning.

4,557

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

To musiałem cos przegapić. Jak się nazywa to archiwum?

ROMOS.ARC

Jak nie ma czegoś u Ciebie, to pewnie jest u mnie, a jak nie ma u mnie, to nie ma wcale. ;)

No właśnie, właśnie. Będę musiał zrobić mały sercz na dysku.

4,558

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

Spieszę z wyjaśnieniem, że pisząc pod 65816 i tak trzeba pamiętać jakiego rozmiaru są aktualnie rejestry, bo będzie zwis. Nie widzę więc potrzeby stosowania przyrostków i wg mnie wystarczy dyrektywa typu .aw czy .ab.

Przecież teoretyzujemy. Zauważ jednak, że lda #xxxx.w zamiast .aw/lda pozwoliłoby *przynajmniej* zaoszczędzić 1 wers na ekranie :)

4,559

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

to

lda #$2000

jeszcze asm moglby zrozumiec jako word, ale z tym

lda #$0000


byloby ciezko, wiec zapisa tego w ten sposob

lda.w #$0000

 
jednak wydaje sie calkiem logiczne

no ale user, wiadomo bedzie musial wiedziec ze przed chwila wlaczyl 16-bitowe rejestry i tylko dla takich rejestrow bedzie dodawal za mnemonikiem '.b' lub '.w'

Alternatywnie (co również używane jest na m68k) można byłoby zamiast

.AW
LDA #$0000

dawać

LDA #$0000.W

Myślę, że pozwoliłoby to uniknąć problemów z braniem LDA.W za rozkaz różny od LDA.B czy też LDA.

4,560

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

Filename     Length  Date     Time
============ ======= ======== ======
816ROM.DOC      3868  3-28-93 18:45
CHARSET1.BIN    1024  6-16-96 16:18
CHARSET2.BIN    1024  6-16-96 13:46
CIO.MAE         5430  5-27-97 11:18
EDITOR.MAE      4675  5-27-97 11:18
FPLAB.MAE        358  5-27-97 11:18
FPLAB.MAE        358  5-27-97 11:18
HEADER.MAE       150  6-16-96 16:53
HRDWARE.MAE      792  5-27-97 11:18
INIT.MAE        6675  6-16-96 16:53
INT.MAE        10119  6-16-96 16:53
KEYBD.MAE       2734  5-27-97 11:18
LABELS.MAE       136  5-27-97 11:18
MAKE.MAE         474  5-27-97 11:18
MATHROM.BIN     2048  6-16-96 16:20
NEWDEV.MAE      6853  6-16-96 16:53
PAGE0.MAE       1399  5-27-97 11:18
PAGE2.MAE       2167  5-27-97 11:18
PAGE3.MAE        902  5-27-97 11:18
PRINTER.MAE      896  5-27-97 11:18
SCREEN.MAE     11091  5-27-97 11:18
SELFTEST.BIN    2048 10-12-90 22:30
SIO.MAE         3845  5-27-97 11:18
SPOX              26  3-28-93 18:45
UNIFY.BAT         13  3-28-93 18:45
VECTORS.MAE      196  5-27-97 11:18
        ==== =======
Total     25   68943

!!!

To musiałem cos przegapić. Jak się nazywa to archiwum?

4,561

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

Nawet nie wypada mi przypominać, że zapowiadałeś się gdzieś tak koło sierpnia. ;-)
No to czekam.

Tak, jest jednak jeden problem: ja śpię w dzień, a działam w nocy. Godzina 18.00 to dla mnie rano. Póki mi się to nie przestawi z powrotem, trudno mi będzie kogokolwiek odwiedzić :/

4,562

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

Jedynym znanym mi asemblerem posiadającym jakieś ograniczenia jest Quick Assembler.

Też nie rozumiem przywiązania niektórych to tego badziewia.

Kombinacje typu LDA.W zaporzyczone zostały z asemblera MC680xx. W przypadku oryginału ma to sens, gdyż rozmmiar danej zapisany jst w kodzie rozkazu.

Wbrew pozorom w przypadku 65c816 też ma to pewien sens, jeśli

LDA.W #$2000

zastępuje

.AW
LDA #$2000

Czyli w LDA.W mamy swego rodzaju kombinację mnemonika i pseudorozkazu. Próbowałem do tego kiedyś przekonać Johna Harrisa (twórcę MAE) nim jeszcze się MAE 1.0 pokazało, ale bez większych sukcesów.

Wadą tego rozwiązania byłaby niewątpliwie konfuzja juzerów: co drugi myślałby, że LDA.W to rzeczywisty rozkaz i w zwiątku z tym nie trzeba już robić REP/SEP.

4,563

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

Mała ilość ROM-u na program obsługi ;-)

Właśnie mi o czymś przypomniałeś. Jak już chyba wiesz, znalazł się w końcu człowiek, któremu udało się wykonać płytki interfejsu w poprawionej wersji. http://www.allegro.pl/show_item.php?item=31986233
W tej wersji ilość pamięci ROM i RAM została podwojona. Czy istniejące oprogramowanie wykorzystuje już tę możliwość?

BTW mógłbyś mi podesłać wersję ROM-u 1.4, bo nie mogę u siebie znaleźć nic nowszego niż 1.2?

Istniejące oprogramowanie ciągle jest pod 1,5 kilobajta ROM-u.

Co do wersji 1.4, mogę podrzucić, mam od paru dni atarynkę poskładaną i uruchomioną, zrobiłem przegląd dysku i znalazłem plik nazwany hdbios14.bin, co jest najwyraźniej właśnie wersją 1.4 przeznaczoną do wypalenia w epromie.

Natomiast co do wysyłania, to może po prostu wpadłbym do ciebie z komputerem, o ile nie masz nic przeciwko. Bo połączenia atari z internetem jeszcze nie opracowałem :>

4,564

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

... a procki leżą i czekają. Tzn. nie pisze tego do ciebie - bo z czego mi się wydaje masz oryg. SWEET16;- Dla zainteresowanych - są wolne jeszcze 2 szt. dip40 - wolne = v. 4mhz :D  :D

A propos: czy masz opracowany montaż tak, żeby można było łatwo dorzucić trochę pamięci liniowo powyżej 64k? Bo z tego co pamiętam tam trzeba robić jakieś sztuczki, z powodu procesor wystawia najstarszy bajt adresu na szynie danych najpierw i to trzeba złapać zewnętrzną elektroniką ...

4,565

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

... to jeszcze jedna rzecz.  :D W dokumentacji do SysINFO znalazłem wzmianke o DracOS. Czy istnieje jakakolwiek działająca i dostępna wersja tego OS'a ??

(i okazało się, że jestem jedynym szaleńcem czytającym doce :lol: )

Nie istnieje, niestety. Miałem nawet sporo napisane, ale źródła przepadły mi razem z padniętym dyskiem.

4,566

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

... jest już coś takiego - lub mniej więcej coś takiego. SIMDRV. Co potrzeba>? Atari + interface IDE KMK, SIMDRV i drugie Atari. O czzzo chodzi? Atarka z twardzielem udostępnia po SIO drugiej Atarce dowolnie wybraną partycję z KMK. .. hehe działa jak SIO2PC .. .udało mi się z tego "wycisnąć" ok. 68k baud.  :D , - .. oczywiście na kablu jest mała "drabinka". Ale mała.  :lol:

PS> pardzo przydatne na party .. hehe

No ale atarka z twardzielem robi wtedy za "centralny serwer", którego inicjator wątku chciał unikać jak ognia :D

Co do ethernetu, jeśli PC/XT sobie radzi, to atari z 65c816 też sobie poradzi ...

4,567

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

MM: Ostatni raz poprawiam bledne cytowanie, draco, opamietaj sie :)

Ee? Nie widzę w tamtym poście żadnego cytatu.

4,568

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

... pytanie takie - troche nie w temacie:: ale mam nadzieje skierowane do odpowiedniej osoby - jak 2d2.com jest zoptymalizowane w strone 65c816 ?? :lol:

Bffff.... nie pamiętam. Zdaje się, że szybsze są procedury przerwań, bo używają szesnastobitowego akumulatora. Dlatego - chyba - na 65c816 można uzyskać wyższe częstotliwości samplowania.

4,569

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

>Moja propozycja byłaby inna: skoro i tak trzeba ingerować w procedury systemowe, i istnieje możliwość konfliktu z innymi urządzeniami SIO, to może lepiej byłoby zrobić to na nowym urządzeniu? Tam też są przerwania, a przynajmniej SIO nie będzie bruździć, no i może dałoby się po prostu podłączyć w ten sposób kartę ethernet :-)

to jest rozwiazanie idealne, ale naklady sporo wieksze - pracy przedewszystkim

Ba :-) Przede wszystkim, trzeba byłoby zbudować interfejs, ale znam kogoś, kto ma to opanowane. Inna rzecz to dalsze postępowanie z kartą ethernet: ja nie mam o tym pojęcia.

4,570

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

No właśnie mi o IRQ idzie: czy jak podamy zgłoszenie SIO na złącze szeregowe komputera, który o transmisji szeregowej wcale nie myśli (czyli nie zajmuje się w danej chwili wykonywaniem procedury SIO), to przerwanie szeregowe wystąpi, czy nie?

Poza tym, nawet jeśli wystąpi, to przewiduję problemy w sytacji, kiedy do komputera oprócz sieci będzie też podpięta lokalna stacja dysków. Mianowicie co będzie, kiedy komputer A będzie się usiłował skontaktować z komputerem B w chwili, kiedy komputer B właśnie jest w trakcie gadania ze stacją?

Trzeba byłoby albo założyć, że wszyscy prowadzą nasłuch wszystkiego, co się w sieci pojawia (tak chyba działa SIO, jak masz trzy stacje, to wszystkie słuchają, co komputer ma do powiedzenia, a tylko jedna odpowiada) - ale to z kolei nie daje wiedzy, który komputer jest w tej chwili zajęty, a który wolny (bo protokół SIO nie przewiduje nadawania numeru komputerowi, tylko stacjom). Albo uzupełnić protokół SIO o wysyłanie do jakiegoś centralnego serwera zawiadomień, że komp numer ten a ten jest zajęty albo wolny.

Moja propozycja byłaby inna: skoro i tak trzeba ingerować w procedury systemowe, i istnieje możliwość konfliktu z innymi urządzeniami SIO, to może lepiej byłoby zrobić to na nowym urządzeniu? Tam też są przerwania, a przynajmniej SIO nie będzie bruździć, no i może dałoby się po prostu podłączyć w ten sposób kartę ethernet :-)

MM: Ostatni raz poprawiam bledne cytowanie, draco, opamietaj sie :)

4,571

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

Masz jak zwykle rację, drogi Watsonie. Jednak intencja pytania była inna, bo ja równie dobrze wiem, po co jest tryb NONE. Chciałbym się po prostu przy okazji przekonać, czy Sparta i w tym trybie - kiedy jest RAM pod ROMem - nie wpisuje tych wektorów, na skutek jakiegoś błędu czy zaniedbania (bo niewątpliwie na Atari 800 można sobie ROM odłączać i rzeczy wpisywać podeń, co nie przynosi żadnego efektu).

4,572

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

Test jest prosty pod warunkiem, że ci kobieta nie śpi blisko miejsca, gdzie stoi Atari, i pewnie zaczęłaby marudzić, gdybym zaczął w środku nocy to sprawdzać. Powiedzmy, że stanęło na twoim.

Jednak z drugiej strony jest to trochę zależne od trybu pracy, bo w trybie NONE Sparta z pewnością niczego pod ROM-em nie ustawia (jak jesteś przy kompie, to sprawdź).

4,573

(1 odpowiedzi, napisanych Emulacja - 16/32bit)

Ciekawa rzecz. Jak sie zmieni rom na tos'a to nie mozna skorzystac z image'a z afros'em. Wyglada na to , ze trzeb sobie radzic jak z "czystym" falconem.

Tak, bo Afros nie zawiera sterownika do dysku. Sterownik taki - ale kiepski, bo nie mający np. XHDI - zawiera w sobie EmuTOS.

MM: PO CO cytujesz cala wiadomosc, po ktorej piszesz swoja odpowiedz, last warning -> regulamin.

4,574

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

Możliwe, że tak jest, aczkolwiek mam wrażenie, że kiedyś próbowałem skorzystac z tych wektorów i odkryłem, że istnieją tylko w trybie za przeproszeniem osram.

Sprawdziłbym teraz, ale nie mam warunków (może jutro).

4,575

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

Witam,

A gdyby tak podlaczyc 2 atarki kablem sio (null sio ?) czy jest program na atari emulujacy stacje dyskow? zwykly dos by dzialal...

pierwsze atari mogloby widziec powiedzmy ramdysk drugiego jako swoja stacje. dlaczego ramdysk? bo tak jest w konfigu ;-) konfig urzadzenia O: na lokalu zawiera numer maszyny lokalnej, nazwe oraz numer ewentualnie katalog udostepnianego urzadzenia, moze tez pass ;-)

gdyby taki program obslugi urzadzenia O[n]: dzialal na przerwaniu sio,
to mozna by bylo stworzyc powiedzmy urzadzenie O[n]: na obydwuch atari i wymianiac dane poprzez np. ramdysk.

no dobrze, sio jest podobne do rs232, rs232 do rj45, z czego sio mozna wsadzic w wtyczke rj45, switche maja rj45 jesli nie mieszjaa w protokole transmisji to moze by tak n atari podlaczyc do siebie, co by sie stalo po wywolaniu O7: ?

:-)

prosta siec lokalna? czy raczej za duzo grzybkow?

Obawiam się, że realizacji tego pomysłu trzeba byłoby napisać od nowa pół SIO, albo nawet całe. Kiedy komputer współpracuje ze stacją, to komputer inicjuje transmisję, stacja jest pasywna, po prostu czeka, a potem reaguje na rozkazy z komputera. O ile pamiętam, przebieg komunikacji jest z grubsza taki (załóżmy, że to ma być write sector):

1. komputer programuje pokeya na nadawanie
2. komputer wysyła do stacji komendę (6 bajtów)
3. komputer przeprogramowuje pokeya na odbiór
4. stacja nadsyła wiadomość, że taka komenda jest ogólnie do zrealizowania i prosimy kontynuować (albo, wiadomo, że nie jest i wtedy tu się procedura kończy)
5. komputer przeprogramowuje pokeya na nadawanie
6. komputer wysyła dane
7. komputer przeprogramowuje pokeya na odbiór
8. stacja przysyła wiadomość, że się udało (albo że się nie udało)
9. stacja przechodzi w stan oczekiwania na dalsze rozkazy
10. komputer zamyka interes i spada do domu

To tak działa, bo stacja czeka nieustannie, aż ktoś do niej zagada. Komputer natomiast na to nie czeka. Ergo, jeślibyś połączył przez SIO dwa kompy i jednemu kazał zagadać do drugiej strony przez kabel, to zapewne nie byłoby żadnej odpowiedzi, bo przerwanie SIO to jest ostatnia rzecz, na jaką ten drugi w danej chwili czeka.

Aczkolwiek należałoby spróbować, a nuż ...