Welcome, Guest. Please login or register.


Author Topic: EP128emu (Read 400463 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #285 on: 2013.April.27. 14:51:11 »
Elvileg itt lenne CRC hiba jelzés:
Code: [Select]
     // reading sector
      if (currentTrack != bufferedTrack || currentSide != bufferedSide)
        (void) updateBufferedTrack();   // FIXME: errors are ignored here
      if (!flagsBuffer[bufPos >> 9]) {
        if (!readTrack()) {
          setError(0x08);               // CRC error
          dataRegister = 0x00;
          return 0x00;
        }
      }

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #286 on: 2013.April.27. 14:55:59 »
Quote from: Zozosoft
Több helyen van ez a wd177x.cpp-ben: // FIXME: errors are ignored here
Ezek nem olvasásnál, hanem írásnál fordulnak elő, többnyire olyan helyeken, ahol a pufferelt sáv írásánál (flushTrack()) történő hibát az emulált WD nem tudja egyszerűen jelezni. Az olvasási hibáknak elvileg nem kellene elveszni, de a kezelésükön javítani lehetne, és valószínűleg valahol hibás a kód. A legtöbb probléma a sáv puffereléssel kapcsolatos, ami azért került az emulációba, hogy ne legyen nagyon lassú valódi lemezekkel Windowson.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #287 on: 2013.April.27. 14:57:35 »
Hát ebből 2 dolog következhet:

Úgy van ahogy gondolom, és ilyen fizikai lemez file- nál a
errorFlag = (bytesRead != nBytes);
sor sosem állítja be errorFlag -et,
mert mindíg "sikerül" a beolvasás, rossz szektor esetén is,

vagy pedig nem ezt a track -es beolvasó kódot hívja az EXOS, hanem egy szektoros verziót, ahogy korábban mondtam, szal ha ez lenne hivva, akkor lenne hiba, de mivel nem ezt hívja, ezért valszeg a szektorosnál meg nem jó a hiba jelzés.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #288 on: 2013.April.27. 15:00:09 »
Nincs a WD- nek szektoros interfésze ?

Ha van (tutkó kell legyen), akkor sztm az EXOS azzal kommunikál, és akkor tudod te azt, hogy az hol van a WD kezelő kódban ?
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #289 on: 2013.April.27. 15:01:30 »
Quote from: Zozosoft
Elvileg itt lenne CRC hiba jelzés:
Ez nem ideális megoldás, mert bármelyik szektor hibája esetén az egész sávot hibásnak jelzi. :oops: De valamiért a hiba elveszik.
Talán a legjobb lenne, ha megoldható lenne, hogy Windowson is gyors legyen a floppy kezelés sáv pufferelés nélkül, és akkor a pufferelést törölni lehetne.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #290 on: 2013.April.27. 15:06:33 »
Nincs ezzel a puffereléssel szerintem semmi baj, csak szektoronként kell beolvasni a sávot, es szektoronként kell a hibát is (valahonnan szedni, mert a mostani valszeg nem működik) letárolni, és kész, nem ?

Vagy pont az a gáz, hogy ha a track sector -ait szektoronként olvasnám be, akkor az marha lassú lenne ?

( Mellesleg ha így lenne, a bad sector info -t lehet elő lehet kaparni más API -val, és akár az egész lemezt is be lehet cache -elni, nem csak egy track -et. )
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #291 on: 2013.April.27. 15:13:56 »
Quote from: Z80System
Vagy pont az a gáz, hogy ha a track sector -ait szektoronként olvasnám be, akkor az marha lassú lenne ?
Lehet, hogyha maga az emulátor programkód olvasná be így egyből az nem lenne lassú.
Az eredeti nem puffereltben gondolom az volt a baj, hogy az emu beolvasta a a szektort, majd utána WD-ként átadta az EP-nek, majd utána ha az EP feldolgozta, kérte a következő szektort. Eközben a lemez továbbfordult, meg kellett várni egy fordulatot a következő szektorhoz.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #292 on: 2013.April.27. 15:15:18 »
Quote from: IstvanV
Ez nem ideális megoldás, mert bármelyik szektor hibája esetén az egész sávot hibásnak jelzi. :oops: De valamiért a hiba elveszik.
Na ez már egy nyom, hogy elvileg így kéne működni, már csak azt kéne kitalálni, hol veszik el!

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #293 on: 2013.April.27. 15:20:21 »
Quote
Lehet, hogyha maga az emulátor programkód olvasná be így egyből az nem lenne lassú.
Az eredeti nem puffereltben gondolom az volt a baj, hogy az emu beolvasta a a szektort, majd utána WD-ként átadta az EP-nek, majd utána ha az EP feldolgozta, kérte a következő szektort. Eközben a lemez továbbfordult, meg kellett várni egy fordulatot a következő szektorhoz.
Na de akkor ez eredeti EP -n is ilyen lassú ? Vagy emu -n gyorsabbat akartunk mint eredeti EP -n ?
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #294 on: 2013.April.27. 15:31:45 »
Quote from: Z80System
Na de akkor ez eredeti EP -n is ilyen lassú ?
Nem, de ott az átvitel pontosan annyi ideig tart amíg a szektor elhalad a fej alatt.
Míg az emulátorban az után kezdődik az EP-s átvitel*, miután már elhaladt a szektor. És előtte még ott vannak az operációs rendszer rétegei is, azok is okoznak némi késleltetést, amíg a valódi beolvasásából az emu megkapja az adatot. Lehet, hogy ebben van nagy különbség a Linux meg a Win között, mert ha jól értem amit István mond, csak Windowson volt lassú a puffer nélküli mód.

*az emulátoron gyorsabb az átvitel, mivel a WD időzítések nincsenek emulálva.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #295 on: 2013.April.27. 15:40:35 »
Quote from: IstvanV
Ez nem ideális megoldás, mert bármelyik szektor hibája esetén az egész sávot hibásnak jelzi. :oops: De valamiért a hiba elveszik.
István! Ha a kérdéses helyen a (bytesRead != nBytes) kifejezés helyett fixen True lesz az errorFlag értéke, akkor az egész lemeznek hibásnak kéne látszódnia?
Így akkor hibás lemez, floppy meghajtó, stb nélkül is lehetne keresni, hol veszik el a hibajelzés.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #296 on: 2013.April.27. 15:42:40 »
Na jo, tehát köv opciók vannak:

Kell egy vas floppy+bad sector környezet, és meg kell nézni, hogy most akkor milyen formában jelez vissza a jelenleg windows -on futó ReadFile a bad sectorra. Az is lehet, ha igy több sectort olvasva nem jelez vissza a bad sector- ról, ha csak 1 sector- t olvasok, akkor majd visszajelez.

Ha semmiképp nem jelez vissza, akkor keresni kell masik API -t amivel a bad sector info kinyerhető egy lemezről. Egyenlőre ilyet nem találtam.

Ha nem találunk, akkor reménykedjünk benne, hogy a FAT táblában a bad sector info frissítve van az olvasások (és ráadásul ennel a speciális drive -ot jelképező file olvasásánál is) közben, és mikor beolvastuk a szektorokat, akkor a FAT táblában lehet ellenőrizni, hogy van -e rossz az imént beolvasott szektorok között.

Talán a harmadik módszer azért is lenne mindjárt a legjobb, mert az minden platformon egyből működne, az előző megoldások nyilván csak winen működnének.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: EP128emu
« Reply #297 on: 2013.April.27. 15:43:58 »
Quote
István! Ha a kérdéses helyen a (bytesRead != nBytes) kifejezés helyett fixen True lesz az errorFlag értéke, akkor az egész lemeznek hibásnak kéne látszódnia?
Így akkor hibás lemez, floppy meghajtó, stb nélkül is lehetne keresni, hol veszik el a hibajelzés.
Hát ha elveszik ... próbáltad már beállítani ? Simán lehet hogy nem elveszik, hanem meg sem jelenik ...
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #298 on: 2013.April.27. 15:47:37 »
Quote from: Zozosoft
Ha a kérdéses helyen a (bytesRead != nBytes) kifejezés helyett fixen True lesz az errorFlag értéke, akkor az egész lemeznek hibásnak kéne látszódnia?
Igen.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14735
  • Country: hu
    • http://enterprise.iko.hu/
Re: EP128emu
« Reply #299 on: 2013.April.27. 15:47:55 »
Quote from: Z80System
Hát ha elveszik ... próbáltad már beállítani ? Simán lehet hogy nem elveszik, hanem meg sem jelenik ...
Most fordítottam egy ilyet, de működésben nem látok változást. Ami alapján nekem nagyon gyanús, hogy ez az errorflag nincs feldolgozva :oops: