Amugy itt a viszonylag friss sdext.c verzio a Xep128-bol ez github-on sincs meg kint. Egyreszt ez tud irni is, masreszt van benne VHD detect (en amugy nem is tudtam, hogy ilyen formatum kulon van a vegen azzal az info blokkal, csak akkor derult ki, amikor Zozo tesztelte, es sehogy nem jott ki a meret ...), illetve SD kartya "meretezes" ervenyes meretre (ha MS VHD forumatum, akkor ezzel viszont elrontja ...), meg pl ures image letrehozas is, egy RLE tomoritett "beepitett" image-rol (ez mondjuk nincs benne, include-olja), no meg flash-eles support. Ami van (es volt az elozoben is) fopen/fileno kerveredes az azert van, mert az Xemu specifikus open_emu_file() van hasznalva az image megnyitasara (ez megnezi pl az exe-vel kozos konyvtarban, aztan az SDL altal visszaadott "preferences directory"-ban, stb, legtobb dolog Xep128-ban ezen 'at" van megnyitva, am ez FILE *-t ad vissza file handler-nek (tehat fopen-t hasznal). Mivel ezek a pufferelt I/O miegymas funkciok tapasztalataim szerint nem tul elonyesek aztan image-nek (magyaran lassu), ezert aztan a fileno()-val lekerem a normalis UNIX file descriptorat a megnyitott file-nak, es utana mar azt kezelem read()/write()/lseek()-el. Az nagyon valoszinu, hogy ep128emu-ban messze nem ez lenne az idealis eljaras, lehet xep128-ban sem
Ami - tobbek kozott - igen ronda ebben az az, hogy ugye adott SD parancsra a file muvelet "azonnal kesz", kb nulla (emulalt) Z80 orajelciklus. Szoval, ha van egy EP-s program ami SD kartyat olvas intenziven, akkor remekul elrontja az idozitest, hiszen itt azert libc, majd kernel funkciot kell hivni a file olvasashoz, ugyanakkor az emulator szempontjabol nem telt el ido
Foleg, ha egymas utan olvas szektorokat szegeny EP-s program, akkor erdekes lesz ... A normalis megoldas az lenne, hogy adott ideig busy statuszt visszzadni, igy "belassitani" kicsit a dolgot, hogy valosagosabb legyen. Ehhez viszont normalisabban kene megirni
Igy mos az a nagyon ronda trukk van benne, hogy:
z80ex_w_states(40);
Ezzel a CPU emulatorral elhitetem, hogy X orajelciklusikg tartott, igy "belassitom" normalis(-abb) szinte igy. Persze ez total hulye megoldas (mivel a valosagban persze nem a Z80 "all" ilyenkor amikor az SD dolgozna ...), a normalis a fenti lenne: beolvasni, de nem visszaadni az eredmeny, hanem egy ideig busy-t "szimulalni", aztan csak utana "kiszolgalni". Stb.
Ezeken, es azon kivul, hogy amugy is randa, meg az a baj a megoldassal, hogy esetleges hiba eseten (I/O error emulator szinten, seek-eles az image mereten kivul, esetleg read-only modban nyitott image-re iras) en az SD kartya parancsra adok vissza hibat. Na ezt lathatoan EXDOS/DISKIO/akarmi nagyon rosszul viseli, es onnantol _semmit_ nem hajlando csinalni, mindenre error-t ad, ez mondjuk nem tudom miert van. Gondolom a problema az, hogy amugy nem a parancsot kene "vissza-error-zni" ilyen esetben, mert van SD-nel (bocsanat, fejbol mar nem remlik pontosan) as mas jellegu hiba is, amikor a parancsot elfogadod, csak annak eredmenye az error. Azt viszont nehezebb a jelenlegi kisse szedett-vetett megoldassal megcsinalni, azt azert nem tettem eddig
Mindig csak a lustasag, ehmm