1 Ostatnio edytowany przez Pecus (2010-01-19 22:16:02)

Chodzi mi głównie o to czy w trybie rzeczywistym interfejsu KMK/JŻ IDE można po prostu czytać pierwszy sektor przez SIO zakładając, że ma 128b?

Oczywiście wiem, że ten sektor ma 512b, ale czy przeczyta się (chodzi oczywiście o jego pierwsze 128b) jeśli tego nie sprawdzę wcześniej i zastosuję procedurę taką jak przy innych gęstościach dyskietek?

Robiąc, w zasadzie od podstaw, nową wersję Micro Sparta DOS chciałbym uniknąć rozbudowywania programu o kolejny kawałek kodu, który będzie tylko sprawdzał czy ma do czynienia z HDD a potem sprawdzał dodatkowym rozkazem wielkość sektora.
W poprzedniej wersji wystarczało przeczytanie pierwszego sektora (zawsze tak samo, bo miał 128b) i sprawdzenie ustawionych w nim zmiennych i tak byłoby najprościej ... w zasadzie tak to już napisałem, ale nie mam jak sprawdzić...

Tak to jest jak się pisze program dla 4rech ludzi na świecie :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

2

Dla dwóch.

http://www.5oft.pl/

3

w tym jeden z nich go faktycznie uruchomi, ale moze cos sie zmieni ;)

przechodze na tumiwisizm

4

Miej też na względzie zaistniały fakt egzystencji nowego formatu, w którym kontroler pracuje w trybie natywnym i sektor w FS ma 512 bajtów fizycznie, a max rozmiar partycji (na chwilę obecną) to 32MB. Po szczegóły odsyłam do Draco :)

Kontakt: pin@usdk.pl

5

No właśnie do obsługi nowych formatów piszemy tę wersję (i starych też).
A pewnym trikiem najprawdopodobniej da się obniżyć MEMLO jeszcze o stronę :)

A Ty chyba masz teki dyszczek, wiec może po prostu odpaliłbyś komendę SIO czytającą pierwszy sektor tak jakby miał 128b i zobaczył co wychodzi ???

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

6

Pecus napisał/a:

A pewnym trikiem najprawdopodobniej da się obniżyć MEMLO jeszcze o stronę :)

przy dodatkowym buforze na sektor 512B? :)

co do sprawdzania czegokolwiek nadmieniam, że koderem nie jestem. Jeśli więc coś trzeba przetestować podeślij cokolwiek, co mogę uruchomić i sprawdzić co się dzieje :)

Kontakt: pin@usdk.pl

7 Ostatnio edytowany przez Pecus (2010-01-20 14:14:19)

O.K. Przygotuję kawałek programu ...

A Memlo przy dodatkowym buforze na 512b sektor, przy tej nowej koncepcji, nie powinno wzrosnąć ponad to, co jest teraz w Micro Sparta DOSie.. czyli będzie w granicach $A00.... mam nadzieję.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

8

Pecuś :) - pod Sparta DOS X przy konfigu mini mam $0EBA :P

Kontakt: pin@usdk.pl

9 Ostatnio edytowany przez Pecus (2010-01-20 15:37:03)

Tak, ale Micro Sparta DOS jest loaderem, i nie wymaga obecności samej SpartyX, nie zajmuje pamięci pod ROMem, ani rozszerzenia, więc $A00 to naprawdę niezły wynik, tym bardziej, ze tyle powinno się udać osiągnąć przy sektorach 512b.
Przy typowych wielkościach sektorów, MEMLO będzie w granicach $900 :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

10

Pecuś - zrób jeszcze jedno. Zerowanie 5,6 strony i od memlo do memtop - tuż przed uruchomieniem programu. Sporadycznie spotykane niektóre dziwnie napisane demka przez to właśnie zaczynają działać :)

Kontakt: pin@usdk.pl

11

Zerowanie on MEMLO do MEMTOP Micro Sparta DOS czyścił zawsze i czyścił będzie.... dodam tylko strony 5 i 6 w takim razie.

Wieczorkiem podrzucę Ci program sprawdzający jak to jest z czytaniem pierwszego sektora, bo skonczenie nowego MSDOSa jeszcze troche potrwa, trzeba wszystko od nowa napisać właściwie.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

12 Ostatnio edytowany przez Pin (2010-01-20 18:35:39)

.. zajebisty by był taki init dla vbxe - można by przynajmniej w pełnej formie z datą i czasem wywalić 2 kolumny dira w trybie txt, jakieś ładne kolorki :) - ..

dobra, szczekam wieczorem na pliczek.

Pecuś - jeśli masz syfGG, to może szybciej będzie poprzez: 3249345

Kontakt: pin@usdk.pl

13

Dzieki za pomoc...
No to już wiemy jak jest - pierwszy sektor w nowym filesystemie czyta się bez błędów jako 512b oraz jako 128b :)
Do sprawdzenia danych o reszcie dysku wystarczy 128, wiec procedura zostaje uniwersalna i będzie działała z innymi gęstościami.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

14

Oidp (ale sprawdzę to w domu) sektory z partycji ustawionej na 512 będą się zawsze odczytywać jako 512-bajtowe niezależnie od wartości DBYT, natomiast takie z partycji ustawionej na 256 bajtów będą się odczytywać jako 128-bajtowe jeśli DBYT ma wartość $xx80 oraz jako 256-bajtowe w przeciwnym wypadku.

KMK
? HEX$(6670358)

15

Właściwie to chodzi mi o to czy jak DBYT ustawię na $80 to odczytam bez błędu pierwszy sektor i zdobędę dane dotyczące reszty dysku bez dodatkowego kombinowanie z jakimiś PERCOMami czy innym dodatkowym sprawdzaniem ;)

I to osiągnąłem (co potwierdził Pin odpalając program testowy).... w sumie ciekawe czy odczytało się wtedy 512b ... nie sprawdziłem czy coś więcej niż pierwsze 128b do bufora weszło... bufor i tak jest przewidziany na więcej danych wiec nie przeszkadza mi to.

W sumie nawet jakby był błąd, a dane się odczytały to bym był zadowolony...

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

16 Ostatnio edytowany przez mono (2010-01-21 14:17:34)

Od strony osa: po odczycie ilości bajtów określonej w dbyt do bufora czytany jest bajt sumy kontrolnej (suma bajtów z bufora z przeniesieniami) i jeśli ona się zgadza z szyny szeregowej czyta się jeszcze bajt statusu i odczyt jest zakończony (przerwania blokowane itd.). Teoretycznie (nie sprawdzałem) więc powinno wystarczyć takie skonstruowanie 129 pierwszych bajtów sektora 512, żeby 128 to były dane a potem suma i os nie powinien czuć się oszukany.

Edit: Można by nawet nie przejmować się sumą kontrolną i ją olać nie przejmując się błędem. Ale to pewnie masz przećwiczone na sobie.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

17

więc powinno wystarczyć takie skonstruowanie 129 pierwszych bajtów sektora 512, żeby 128 to były dane a potem suma

Teoretycznie. Niestety akurat SDX zapisuje w pierwsym sektorze zmienne dane w rodzaju liczby wolnych sektorów, więc trudno byłoby osiągnąć stan, w którym ta pseudosuma kontrolna jest zawsze aktualna. Poza tym BIOS IDEI nie zlicza żadnych sum kontrolnych, bo i po co :)

KMK
? HEX$(6670358)