4,551

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

Użycie DSTATS ($0303) na numer sektora to chyba nie najszczęśliwszy pomysł - o ile się nie mylę, powrót z SIO zamazuje wpisaną wartość kodem statusu, nieprawdaż? No a poza tym masz tylko 7 bitów, konieczność robienia ORA przy zapisie albo AND przy odczycie, i niebezpieczeństwo, że gdzieś jakiś handler robi jednak LDA $0303/CMP #$40 ...

Już chyba lepiej jest wykorzystać na ten cel DTIMLO ($306). Całe 8 bitów i święty spokój.

Co do PERCOM - rozszerzenie do 24-bitów było w miarę naturalne, bo najstarszym bajtem numeru sektora jest bajt, gdzie oryginalna dokumentacja opiewa liczbę głowic napędu, odjąć 1. Ale dalej nie ma za bardzo ruchu. Myślałem o tym, żeby zdefiniować nową komendę po prostu, która zwracałaby a) wielkość partycji w sektorach, b) wielkość sektora. Razem 6 bajtów. Jest drobny problem co ma dla takiej partycji (powyżej 8 GB) zwracać PERCOM i czy w ogóle coś.

Z wielkością katalogu to chyba lekko przesadziłeś: odszukanie pliku w takim czymś trwałoby chyba z dobę.

Co do CHS: dokumentacja ATA stanowi, że przez CHS można zaadresować 65536 cylindrów, 255 sektorów na ścieżkę i 16 głowic. 255*16*65536 = 267386880 sektorów po 512 bajtów = 130560 MB.

Sektorów na ścieżkę jest 255 bo numeracja zaczyna się od 1 (inaczej niż w LBA).

Bity nieużywane (5 i 7) w rejestrze SDH muszą mieć określoną wartość  ze względu na kompatybilność wsteczną. Dlatego master to $80 a slave to $90. We współczesnych dyskach nie ma to znaczenia, ale w starych dyskach może mieć: któreś bity miały w standardzie ATA-1 wybierać rozmiar sektora (stąd nazwa rejestru: Sector-Device-Head).

Z 64-bitowymi tablicami partycji na razie się wstrzymaj - 32 bity na razie wystarczą, potem się zobaczy.

4,552

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

Pewnie 2.03, bo zdaje sie, że nastepnych nie zdążyłes puścić.

No to może 2.07 by wykrył ...

4,553

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

To fakt. Tyle że intencje były takie, aby bez problemu podłączyć dyski które teraz (w 2004 i dalej) można nabyć. Czy za jest to mało? Jeśli będziemy na atarce odtwarzać DivX'y, to pewnie tak  :lol:  :lol:  :lol:

Zdaje się, że współczesne dyski mozna podłączać bez problemu - tyle że większość pojemności się zmarnuje.

wiem, tryb LBA używany jest jesli dysk to potrafi obsluzyc. Z reguly kazdy dysk >8GB potrafi - bo inaczej sie niezaadresuje calej jego przestrzeni :)

Przez CHS da się spokojnie zaadresować wszystkie sektory każdego dysku o pojemności do 128 GB (ściślej: do 130560 MB). Ograniczenie do 8 GB dotyczy nie dysków, tylko bieżącej wersji oprogramowania do interfejsu KMK/JZ - gdzie numer sektora początkowego partycji jest zapisany na 24 bitach. Jak mówię, rozszerzenie tego do 32 bitów nie stanowi większego problemu o ile się ma więcej miejsca w ROM-ie (procedury przeliczania numeru sektora logicznego na CHS będą nieco dłuższe).

Wielkość partycji pozostanie pewnie 8 GB - w bloku PERCOM nie ma już miejsca na większą liczbę sektorów.

4,554

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

No wcale bym sie nie zdziwił. Sysinfo ma procedury testowania tej pamięci, ale nigdy nie było to sprawdzane na realnym sprzęcie. A tak w ogóle, to która wersja Sysinfo?

4,555

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

jesli masz biosa v1.2 i niemasz sparty, a chcesz uzywac sobie dysku slave - np. do skopiowania czegos od drugiego posiadacza hdd zide kmk, to polecam programik rezydenty zawierajacy hdbios14.bin, ktory sie relokuje na memlo. Programik realizuje to samo co hdbios13.sys pod sparte. potem uzywamy slave.com (by KMK) i kopiujemy co trzeba. Wada tego rozwiazania jest to ze po resecie musimy uruchomic ponownie slave.com - bios (kazdy) po resecie niszczy tablice z ramu - zmodyfikowana przez slave.com

Właśnie udało mi się całe slave.com (a ściślej nie program, tylko to co on robi) upchnąć w ROM-ie interfejsu. Z ta wersją ROM-u podpięcie - i odpięcie - dysku slave nie będzie wymagać żadnych wygibasów, wystarczy reset (albo media change).

... ja musiałem to wszystko rozpracować samemu, gdyż kilkakrotna próba kontaktu z kmk zakonczyla sie niepowodzeniem - probowalem przez p. Jacka Żuka i poprzez Lizarda - od tego drugiego wiem, ze KMK niebyl chetnie nastawiony do wspolpracy, wiec wszystko musialem rozpracowac samemu

Przyznam, że dość długo dumałem nad tym twoim zdaniem i im dłużej o tym myślę, tym bardziej jestem pewien, że ja nie tyle byłem niechętny do współpracy, co po prostu poprosiłem Lizarda, żeby udzielił ci wszelkich informacji. Ale może pamięć mnie zawodzi. Faktem jest natomiast, że przez kilka lat - jakieś sześć ostatnich - nic już nie robiłem na ośmiobitowym Atari i nie zanosiło się, bym do tego wrócił ...

4,556

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

niegy niespotkałem się z plikiem "CA2001.SYS"

A to (CA2001.SYS) jest moje dzieło, przyznaję. Kiedyś, bardzo dawno temu, miałem standardową CA 2001 i bardzo cierpiałem z powodu wolnej transmisji. CA2001.SYS to jest zmodyfikowany Synchromesh.

Ps. Czy to działa też pod dyskową wersją Sparty  :?:  :?:  :?:

Sądzę, że wątpię.

4,557

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

Sorry, dalem "Zmien" przy wlasnym poscie, ale nie przewidzialem, ze toto "zmieni" tresc wstawiajac po prostu nowy post. Idzie o to, ze w bloku PERCOM jest oczywiscie wykazana wielkosc sektora w bajtach, a nie zadna liczba cylindrow, jak mi sie - nie wiadomo dlaczego - napisalo poprzednio.

4,558

(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 - liczba bajtow na sektor, starszy bajt
7 - liczba bajtow na sektor, mlodszy bajt
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,559

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

No gratuluje, przynajmniej nie bede musial pisac nowego FDISK-a.

Co do ograniczen, to jak juz powiedzialem Duddiemu, sterownik powstawal 10 lat temu, kiedy za duzy uchodzil dysk 420 MB. Mozliwosc zaadresowania 8 GB byla wiec przyjeta z 20-krotnym naddatkiem. No ale mamy roku 2004 i teraz to jest 20x za malo.

Poniewaz i tak zamierzam zmienic format tablicy partycji - tak zeby partycji mogla byc nieograniczona liczba - wiec pewnie przy okazji zrobi sie 32-bitowa adresacje z mozliwoscia rozszerzenia w przyszlosci do 64 bitow ;-)

Gdybys planowal jakies bety tego partition wizarda, to chetnie przetestuje. No i jeszcze jedna uwaga: nie wszystkie dyski, ktore ludzie maja do Atari, obsluguja LBA. Moj np. nie obsluguje. CHS jest upierdliwy, ale bezpieczniejszy.

Co do bledu w 1.2, to chyba wlasnie tak bylo, ale glowy nie dam.

4,560

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

O ile mi wiadomo, to sa przerwania IRQ.

4,561

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

Nie wiem dlaczego, ale ja też to jakoś wolę ...  :D

4,562

(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,563

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

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

4,564

(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,565

(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,566

(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,567

(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,568

(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,569

(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,570

(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,571

(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,572

(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,573

(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,574

(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,575

(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ą ...