Welcome, Guest. Please login or register.


Author Topic: EXDOS (Read 88779 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #120 on: 2011.November.13. 11:08:47 »
Laci! FISH cikk kiegészítendõ:
FISH 21-nél C-ben a meghajtó adatterület szegmensszámát kapjuk vissza (ez a beépített eszközöknél a rendszerszegmens, bõvítéseknél (pl merevlemez) azonban bármi más is lehet)

FISH 29-nél a hordozó helyett írjunk formázási típusbájtot, ahogy máshol is. A szövegben pedig a "A funkció ellenõrzi," helyett: A FISH nem végez ellenõrzést a típusbájttal kapcsolatban, azt változatlanul adja tovább a meghajtó kezelõprogramjának. A hívásnál a DE-vel megfelelõ méretû pufferterületre kell mutatni, ez a beépített lemezegység kezelõnél 6500 bájtot jelent.
A Ramdisk-et kezelõ RAMUNIT nem kezeli a funkció hívást, a floppy meghajtókat kezelõ UNITH egység pedig a következõ módon hajtja végre...

És még egy apróság a paraméterek leírását jobb lenne a FISHDOC-ban használt módon megadni, úgy olvashatóbb lenne.

Offline Lacika

  • EP addict
  • *
  • Posts: 2990
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: EXDOS
« Reply #121 on: 2011.November.13. 17:35:28 »
A Ramdisk-et kezelõ RAMUNIT nem kezeli a funkció hívást, a floppy meghajtókat kezelõ UNITH egység pedig a következõ módon hajtja végre...

Mi a mondat vége? :oops:
Jól gondolom: "A Ramdisk-et kezelõ RAMUNIT nem kezeli a funkció hívást, a floppy meghajtókat kezelõ UNITH egység pedig a következõ módon hajtja végre: a funkció ellenõrzi, hogy az adott meghajtó alkalmas-e a kívánt formátumban való mûködésre, és szükség esetén 40-ben korlátozza a sávok számát, ill. 1-ben az oldalakét."

És még egy apróság a paraméterek leírását jobb lenne a FISHDOC-ban használt módon megadni, úgy olvashatóbb lenne.

... ???
Halandók számára lefordítva ez mit jelent?  :oops:

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #122 on: 2011.November.13. 17:51:05 »
Jól gondolom:
Jól.
Quote
Halandók számára lefordítva ez mit jelent?  :oops:
Pl:
Ehelyett:
Quote
19. Szektorok írása (logikai szektor)
DE = SZEK      DE = következõ SZEK
H = SZEKN      H = kiírt SZEKN
L = MEGH        L = MEGH
IX = TRC          IX = TRC a következõ bájtra mutat

Ez:
Quote
Paraméterek :   IX -> transzfercím
                DE =  logikai szektorszám
                 H =  írandó szektorok száma
                 L =  meghajtó száma (1...26)

Eredmények :    IX -> aktualizált memóriacím
                DE =  következö logikai szektorszám
                 H =  írt szektorok száma
                 L =  ua. a meghajtó szám

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #123 on: 2011.November.13. 19:08:56 »
A FISH nem végez ellenõrzést a típusbájttal kapcsolatban, azt változatlanul adja tovább a meghajtó kezelõprogramjának.
Ez egyébként abból a szempontból jó hír, hogy viszonylag egyszerûen meg lehet majd oldani, hogy egy készülõ új "normális" Turbo Exdos tudjon a FORMAT paranccsal HD-s lemezt is formázni. A FORMAT feldolgozásába kell újabb paramétereket belevenni, ill. a UNITH formázó részét kibõvíteni.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #124 on: 2011.November.16. 14:50:15 »
FISH 21-nél javítandó:
"IX = meghajtó adatterület+8" helyett: meghajtó adatterület (ez az EXDOS által belsõleg használt meghajtó leíró +8 bájtjára mutat)

táblázat:
IX-08h: meghajtó RAM terület szegmensszáma, kivéve a beépített egységek esetén, ott a UNITH meghajtóinál 0, RAMUNIT-nál 2
IX-07h,06h: meghajtó RAM terület címe, beépített EXDOS egységek esetén ez szokásosan az EXDOS RAM terület 80h bájtjára mutat, bõvítõ egységek esetén megegyezik azzal a címmel, amit a bõvítõ megadott a leírok létrehozásához, tehát a meghajtóleíróblokk 0. bájtjára mutat
IX-05h: meghajtó kezelõprogram szegmensszáma
IX-04h,03h: meghajtó kezelõprogram címe (3. lapon)
IX-02h: belsõ egységszám, minden egység esetén 0-tól induló belsõ sorszám, és addig tart ahány alegységet kezel (pl a floppyt kezelõ UNITH esetén ez 0-3)
IX-01h: (1-26) meghajtószám MAPDISK átirányításhoz, ha nincs átirányítás, akkor megegyezik a fizikai meghajtószámmal
IX+00h: (1-26) fizikai meghajtószám, 1-tõl kezdõdik, beláncolás sorrendjében folyamatosan növekvõen kerül kiosztásra
IX+01h: belsõ lemezcsere ellenõrzés jelzõbájt
IX+02h: cluster maszk (egy clusterben lévõ szektorok száma-1)
IX+03h: cluster eltolás (clusterméret 2-es alapú logaritmusa, azaz 2 hanyadik hatványa a méret)
IX+04h,05h: boot szektorok száma=elsõ FAT szektor sorszáma
IX+06h: FAT példányok száma
IX+07h: bejegyzések száma az utolsó fõkönyvtár szektorban, 0 ha 16 bejegyzés van, azaz a teljes szektort kitölti
IX+08h: fõkönyvtár teljes szektorainak száma, ha ez elözõ érték nem 0, akkor van még 1 csonka szektor is
IX+09h: FAT szektorok száma
IX+0Ah,0Bh: elsõ fõkönyvtár szektor sorszáma
IX+0Ch,0Dh: 2. cluster logika szektorszáma (elsõ adatszektor)
IX+0Eh,0Fh: legnagyobb lehetséges cluster sorszám+1 (clusterek száma+2)
IX+10h: "piszkos diszk"-jelzõ : 0 = tiszta ; 1 = piszkos (UNDEL jelzõbájt)
IX+11h-14h: 32 bites lemez azonosító (ID) (amelyik lemez nem tartalmaz ilyet, ott FFFFFFFFh)
IX+15h: formazási típusbájt
IX+16h,17h: aktuális könyvtár kezdõ cluster száma, (IX+17h) 7-es bitje 1 ha a fõkönyvtár az aktuális
IX+18-57: aktuális útvonal sztring, 00h-val lezárva
« Last Edit: 2011.November.16. 14:59:07 by Zozosoft »

Offline Mayer Gábor

  • EP fan
  • *
  • Posts: 215
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 3.6.24 Firefox 3.6.24
    • View Profile
Re: EXDOS
« Reply #125 on: 2011.November.16. 17:57:48 »
hol kell javítani?

Amúgy a wikiben van az exdosnak oldala? Ha nincs akkor létrehozom. Kezdetnek feltehetnénk az exdos verziók leírását, ha jobb ötlet nincs akkor a te ezzel kapcsolatos postod alapján, illetve linkeket a romokra vagy ha lehet, akkor csatolni őket wikibe.
« Last Edit: 2011.November.16. 18:41:05 by Mayer Gábor »

Offline Lacika

  • EP addict
  • *
  • Posts: 2990
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: EXDOS
« Reply #126 on: 2011.November.16. 18:48:04 »
Megtörtént!

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #128 on: 2011.November.18. 11:02:35 »
Egy kis boot szektorológia  :)
Így néz ki az EXDOS boot szektor:

00-02 EBH. FEH, 90H IBM ( Ugrás a betöltõ kódra)
03-10 "EXDOS 1.0" rendszer (formázó software)
11-12 512 byte / szektor
13      szektor/cluster
14-15 boot szektorok száma (általában 1)
16      FAT példányok száma (általában 2)
17-18 fõkönyvtár bejegyzések száma
19-20 lemez szektorainak száma
21      formázási típusbájt (F8h-FFh)
22-23 egy FAT példány szektorainak száma
24-25 szektor/sáv
26-27 fejek száma
28-29 rejtett szektorok száma
Innentõl csak EXDOS (vagy VT-DOS) lemezeken:
30      C9H RET, az MSX-DOS BOOT program belépési pontja
31-63 0 nullázás
64-69 "VOL_ID" azonosító string
70     0 UNDEL jelzõ-byte
71-74 32 bites lemezazonosító
75-99 0 nullázás
100-511 E5H üres terület

A 03-29 terjedõ terület megfelel a FAT szabványban leírtaknak, most inkább a körítéssel foglalkoznék:
A 00-02 címen található egy x86-os ugróutasítás, amire az EXDOS-nak nincs semmi szüksége, de kompatibilitási okokból oda teszi, mivel egyes Microsoft operációs rendszerek - a saját szabványuktól eltérõen - ellenõrzik ennek a meglétét is. Ebbe futottak bele az Atarisok, mivel a korai TOS verziók nem írták ezt oda, így a PC-k nem olvasták az Atarin formázott lemezeket.
30-as címen az MSX tulajdonosokra gondoltak, hogy egy véletlen meghajtóban felejtett EP lemez esetén nem okozzon elszállást a bootolási kísérlet, ezért egy RET utasítást tettek erre a belépési pontra.
64-74 bájtokon terül el az EXDOS saját extrái: 64-69 bájtokon a "VOL_ID" azonosító jelzi, hogy ez egy EP lemez, és tartalmazza a következõ 2 adatot. 70-en egy jelzõ bájt jelzi, hogy a lemez tartalmaz törölt, de helyreállítható fájlokat. 71-74 bájtokon pedig egy véletlenszerû 32 bites lemezazonosító található, aminek lemezcsere ellenõrzésnél veszi hasznát.

Az EXDOS megalkotása óta eltelt több mint 25 évben újabb szabványok újabb adatokat pakoltak a boot szektorba:

28-31 rejtett szektorok száma (32 bit)
32-35 lemez szektorainak száma (32 bit)
36      fizikai meghajtó szám (PC) (00h floppy, 80h HDD)
37      CHKDSK jelzõbájt (Windows NT alapú rendszerek)
38      kibõvített boot szektor jelzõbájt (29h) ez jelzi, hogy a következõ paraméterek léteznek
39-42 32 bites lemezazonosító
43-53 11 karakteres lemeznév
54-61 7 karakteres fájlrendszer azonosító "FAT12  " vagy "FAT16  "
510-511 55h,AAh boot szektor jelzés

Ezeket az újdonságokat is célszerû lesz beépíteni az EP-s formázó programokba, a mai rendszerekkel való jobb kompatibilitás érdekébe. Szerencsénkre ezek mind az EXDOS által kihagyott üres területre esnek, így egyszerûen csak ki kell bõvíteni az eddigi EP-s boot szektort.
Egyedül csak MSX-eseknek kedveskedõ RET utasítás esik áldozatául a bõvítésnek, de az is csak vinyón, 65535 szektornál többet tartalmazó partició esetén, ez talán túlélhetõ probléma  :ds_icon_cheesygrin:
Mint látható pár évvel az EXDOS után a Microsoft is feltalálta a 32 bites lemezazonosítót :-) ezzel annyi a teendõ, hogy az EXDOS által is használt 32 bites azonosítót beírni a PC-s helyére is, valamint 38-as bájtra írt 29h-val jelezni, hogy van ilyen érték. A fájlrendszer azonosító esetünkben "FAT12  ".
A boot szektorba helyezett lemeznév az tulajdonképpen egy okos ötlet lett volna, hogy ne a fõkönyvtárban kelljen keresgélni a lemez nevét. Viszont kipróbáltam MSDOS 6.2 és XP alatt is, hogy ettõl függetlenül a fõkönyvtárban lévõ lemeznevet használja, ha nincs olyan akkor se veszi elõ a boot szektorban lévõt. Így nyugodt szívvel figyelmen kívül hagyhatjuk ezt a mezõt. Majd egyszer bele lehet rakni a VOL parancsba, hogy ide is írja be.
Utolsó teendõ még a boot szektor végére elhelyezni az 55h,AAh bájtokat. Nem létszükséglet, de ki tudja mit ellenõriznek egyes kreténebb PC-s rendszerek (ahogy az már pl az ugró utasításról, vagy a formázó program nevérõl kiderült).

És van még egy dolog, a lemez elején EBh. FEh, 90h az egy önmagága ugró JMP utasítás PC-n, ami azt jelenti, hogy ha egy EP-s lemezt felejtünk a meghajtóban, és arról boot-ol a PC, akkor jól lefagy... végülis kárt nem okoz ez a megoldás, csak bosszantó, hogy resetelni kell.
Egyszerû megoldás, ami nem pazarol sok helyet: az EP-s lemez azonosító után pl a 75-76 címekre CDh,19h bájtokat kell írni, majd az ugró utasítást a lemez elején EBh,49h,90h-ra módosítani. Az új utasítás amire ráugrik, az egy INT 19h, ami újraindítja a boot-olást, azaz így újra meg újra olvassa a floppyt, azonban amikor észrevesszük a bent felejtett lemezt, és kivesszük, megy tovább rendesen, nem kell resetelni.
Ha nem sajnálunk több bájtot elpazarolni az EP-s programunkban, akkor egy hosszabb kóddal az is elérhetõ, hogy ki se kell venni a lemezt, az tölti be a vinyó boot szektorát (szintén 4Bh-re helyezve):

      db 31h,0C0h   ;xor   ax, ax
      db 8Eh,0D8h   ;mov   ds, ax
      db 8Eh,0C0h   ;mov   es, ax
      db 0FCh      ;cld
      db 0B9h      ;mov   cx,
      dw 100h      ;          100h
      db 0BEh      ;mov   si,
      dw  7C00h   ;          7C00h
      db 0BFh      ;mov   di,
      dw  8000h   ;          8000h
      db 0F3h,0A5h   ;rep movsw
      db 0EAh      ;jmp   far ptr 800h:62h
      dw  62h   
      dw 800h
      db 0B8h      ;mov   ax,
      dw 201h      ;          201h
      db 0BBh      ;mov   bx,
      dw  7C00h   ;          7C00h
      db 0BAh      ;mov   dx,
      dw  80h      ;          80h
      db 0B9h      ;mov   cx,
      dw   1      ;          1
      db 0CDh,13h   ;int   13h   ; DISK - READ SECTORS INTO MEMORY
      db  72h,5   ;jb   +5
      db 0EAh      ;jmp   far ptr   0:7C00h
      dw 7C00h
      dw   0
      db 0CDh,19h   ;int   19h   ; DISK BOOT
« Last Edit: 2011.November.18. 21:55:47 by Zozosoft »

Offline Mayer Gábor

  • EP fan
  • *
  • Posts: 215
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 3.6.24 Firefox 3.6.24
    • View Profile
Re: EXDOS
« Reply #129 on: 2011.November.18. 11:55:18 »
Ezek nagyon hasznos infók, miért nem a wikibe töltöd fel?

Offline Povi

  • EP addict
  • *
  • Posts: 2087
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 7.0 Firefox 7.0
    • View Profile
    • http://povi.fw.hu
Re: EXDOS
« Reply #130 on: 2011.November.18. 11:56:23 »
jól látom, hogy az EP-n (EXDOS-on) nem létezik BOOT-ból induló program?

és CP/M-en?

egyébként erről (is) lehetne előadást tartani a specci találkozón... :-)

az MS-DOS formázója is EBH, FEH, 90H-t ír a 00 címre? elég nagy hülyeségnek tűnik nekem, hogy egy önmagára ugró utasítást tenne be oda, akkor már miért nem ott is egy RET van?
*** Speicherplatz zu klein

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #131 on: 2011.November.18. 12:05:43 »
jól látom, hogy az EP-n (EXDOS-on) nem létezik BOOT-ból induló program?
Igen. Ott az automatikus indításra az EXDOS.INI lett kitalálva.

Quote
az MS-DOS formázója is EBH, FEH, 90H-t ír a 00 címre? elég nagy hülyeségnek tûnik nekem, hogy egy önmagára ugró utasítást tenne be oda, akkor már miért nem ott is egy RET van?
Az MS-DOS természetesen értelmes ugrást tesz oda.
RET-et nem tehetünk oda, mert nem CALL-al hívja, hanem JMP-vel ugrik rá, A visszatérésre az említett INT 19h a lehetõség. Ami amúgy beférne ide az ugrás helyére, de az említett kompatibilitási okokból oda mindenképpen ugró utasítás kell.

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Safari Safari
    • View Profile
    • http://lgb.hu/
Re: EXDOS
« Reply #132 on: 2011.November.18. 15:02:54 »
Egy kis boot szektorológia  :)
Na, ez az elemzes siman megerdemelne egy otost :)

Offline Povi

  • EP addict
  • *
  • Posts: 2087
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Safari Safari
    • View Profile
    • http://povi.fw.hu
Re: EXDOS
« Reply #133 on: 2011.November.18. 22:57:10 »
Igen. Ott az automatikus indításra az EXDOS.INI lett kitalálva.

Ez az EXDOS.INI inkább az autoexec.bat-ra hasonlít...

Bár, jobban belegondolva, az, hogy nincs boot-szektorból futtatható kód az EP-n, azzal kizárjuk a boot-vírusok lehetőségét is!  :mrgreen:
*** Speicherplatz zu klein

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13947
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #134 on: 2011.November.18. 23:10:56 »
Ez az EXDOS.INI inkább az autoexec.bat-ra hasonlít...

Bár, jobban belegondolva, az, hogy nincs boot-szektorból futtatható kód az EP-n, azzal kizárjuk a boot-vírusok lehetõségét is!  :mrgreen:
Így van!
Mivel nekünk ROM-ban van az operációs rendszer, így nincs szükség lemezes bootra. (Érdekességként van olyan XT laptopom, ami úgy bootol ROM-ból, hogy egy MS-DOS floppy image van ROM-ba égetve :-) )