Welcome, Guest. Please login or register.


Author Topic: EXDOS (Read 232141 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #90 on: 2009.December.28. 21:58:01 »
Most a további visszafejtéssel sikerült egy új módszert találni, így nem csak hidegindításkor, hanem akármikor tudunk meghajtót beláncolni! Az eddig ismeretlen 24-es FISH hívással.
Itt kimaradt a pontos leírás, tehát
B=szegmensszám, DE=cím mutat a leendõ meghajtó leíróblokk helyére, ahol a következõ adatokat kell elhelyezni:
0: belsõ egység darabszám
1-2: kezelõprogram címe
3: kezelõprogram szegmensszáma
A megadott területnek RAM-ban kell lennie, méret 3 bájt (a következõ leíróblokkra mutató cím számára) + annyiszor 60H bájt ahány belsõ egységet megadtunk.
A leíróblokkban a kezelõprogram RAM területének a híváskor megadott szegmens:cím lesz bejegyezve.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #91 on: 2010.June.19. 21:28:36 »
Mint azt már tudjuk egy ideje, eredetileg Plug and Play rendszert terveztek a bõvítõkártyákhoz, amibõl csak a gyári EXDOS és hozzá adott BRIDGE készült el ilyen módon. (Mivel nem volt errõl szóló dokumentáció, így sajnos a magyar fejlesztések nem követték ezt a rendszert.)
Ime, hogy hogyan számolja ki az EXDOS a WD portcímét:
Code: ZiLOG Z80 Assembler
  1.         LD      C,0B3H
  2.         IN      C,(C)           ;C=ROM szegmensszáma
  3.         SRL     C               ;C=C/2
  4.         BIT     1,C            
  5.         JR      Z,LDCBD
  6.         LD      C,10H
Ebbõl kiderül, hogy a lehetséges ROM címekhez, az IO tartomány fel osztható ki, 80H-tól az alaplap jelenlegi, ill. esetleges késõbbi eszközei helyezkednek el. A BRIDGE-n 3 darab Socket Address címvezeték helyezkedik, el, ez 8 kártyát tesz lehetõvé. A kártyákon az eredeti EXOS ROM tesztet figyelembe véve a következõ aktív ROM szegmensek és IO címek lehetnek:
0: 10H, 00-0FH
1: 20H,30H, 10-1FH
2: 40H,50H, 20-2FH
3: 60H,70H, 30-3FH
4: 80H,90H, 40-4FH
5: A0H,B0H, 50-5FH
6: C0H,D0H, 60-6FH
7: E0H,F0H, 70-7FH

A fenti SRL-es számítási módot tekintve lehetséges az is, hogy 1 kártya két lehetséges ROM-ja, elossza 8-8 arányban a lehetséges 16 portot. Az EXDOS ezt mindenesetre nem teszi, 10-13H a WD, 18H a kártya vezérlõregisztere.

Még egy érdekesség a fenti rutinról: valószínûleg a fejlesztési fázisból benne maradt egy kivételkezelés, ami gyári konfigurációban akkor lép mûködésbe, ha a cartridge-ban van az EXDOS ROM, ekkor kiszámolt bázis port címet a jól ismert 10H-val helyettesíti, ami a gyári BRIDGE-hez kötött EXDOS kártyának felel meg.

Anno a Turbo EXDOS fejlesztésekor tapasztaltam, hogy a ROMLOAD-dal betöltött EXDOS ROM nem mûködött a PNP portcím számítás miatt, hiszen nem a 20H-ra lett töltve. Viszont ennek a kivételkezelésnek az lett a mellékhatása, hogy x4 vagy xC végû szegmensre töltve mûködik a betöltött EXDOS ROM. (Magyarán egy RAMDISK 3 után mehetett a ROMLOAD)

A portcímszámolgatás még egy másik esetben került elõ: egyes magyar gyártású BRIDGE-ekben nem volt megfelelõen bekötve SA0-SA2, így más címre dekódolódott az EXDOS, ezért pár program ami fix WD címeket használt, nem mûködött. (Ezt anno be is küldtem az Enterpressbe.)


Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #92 on: 2010.June.20. 01:40:15 »
Az EXDOS kártya programozásáról nem sok információt találtam, de az emulátorban a "disk change" a 18h port 6. bitje. Amikor lemezcsere történik, akkor ez a bit 0 lesz (egyébként 1), addig, amíg ugyenerre a portra írás történik beállított 6. bittel, ami törli a "disk change" jelet.
Valóban így várja az EXDOS:
Code: ZiLOG Z80 Assembler
  1.         IN      A,(C)           ;EXDOS STATUS olvasása
  2.         AND     40H             ;DISK CHANGE bit marad
  3.         JR      NZ,LDDC8        ;ugrás ha nem volt lemezcsere
  4.         LD      A,E
  5.         OR      40H             ;DISK CHANGE RESET
  6.         OUT     (C),A           ;1-be állítva
  7.         OUT     (C),E           ;0-ba állítva
  8.         IN      A,(C)           ;EXDOS STATUS olvasása
  9.         AND     40H             ;DISK CHANGE bit marad
  10.         JR      NZ,LDDB3        ;ugrás, ha törlödött a csere

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #93 on: 2010.June.24. 22:45:26 »
Az viszont egy apróbb bökkenõ, hogy nem sikerült egyetlen egy olyan meghajtót se találnom, ami ezt a fajta Disk Change jel kezelést tudná. Talán ha valakinek van valami egész õsi SS/SD meghajtója, hátha az tudja még a Shugart szabványt... vagy venni eBay-en eredeti Shugart floppyt 100 dolcsiért  :ds_icon_cheesygrin:

Szóval, ha majd eljutunk az új EXDOS verzió fordításáig, akkor érdemes lesz átírni ezt a rész a PC-s módszerre, bár az egy picit bonyolultabb lesz, mert ott fejléptetéssel megy a törlés.
Az EP-vel egy idõs, fekete elejû (ma ismét divatos színû :-) ) TEAC 5.25" meghajtók is ezt a módszert tudják.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #94 on: 2010.June.26. 23:31:17 »
Laci! A DISKIO leírást lehet kiegészíteni:
A hibabiteknél a fentartottnak írt 5-ös bit jelentése DISK CHANGED, 1-7 parancsoknál.

Az általános tudnivalókhoz: az 1-7 parancsok végrehajtása elõtt megvizsgálja a hw lemezcserejel állapotát, és ha aktív, akkor ennek megfelelõ hibakóddal megszakítja a parancs végrehajtását. A lemezcsere jelzést törli, így az ugyanerre a meghajtóra kiadott következõ parancs már végrehajtódik.

Disk reset-nél: visszatéréskor a C az EXDOS kártya IO port tartományába mutat.

Offline Lacika

  • EP addict
  • *
  • Posts: 3218
  • Country: hu
    • http://www.ep128.hu
Re: EXDOS
« Reply #95 on: 2010.June.27. 09:15:11 »
Kiegészítettem!
Így jó lesz?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #96 on: 2010.June.27. 09:22:33 »
Kiegészítettem!
Így jó lesz?
Jó!

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #97 on: 2010.June.28. 22:31:34 »
Újabb kiegészítés: az eddig ismeretlen 7-es DISKIO funkció: hw lemezcserejel lekérdezése
Csere esetén a megfelelõ hibakód beállítva. Ez a parancs is törli az esetleges jelzést, így ismételt lekérdezés már nem jelez  cserét, csak akkor ha fizikailag tényleg újabb lemezcsere történt.

Offline Lacika

  • EP addict
  • *
  • Posts: 3218
  • Country: hu
    • http://www.ep128.hu
Re: EXDOS
« Reply #98 on: 2010.June.28. 22:57:04 »
Megtörtént.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #99 on: 2010.June.28. 23:03:08 »
Úgy tûnik az EXDOS képes azzal a ténnyel is együtt élni, hogyha a DISK CHANGE RESET jellel nem sikerül törölni a DISK CHANGE jelet. Minden meghajtóhoz külön tárolja az állapotot, és a nem törlõdött jel már nem okoz újabb lemezcsere jelzést. Viszont ha a meghajtó majd egyszer törli a jelzést, majd újra aktívvá válik, akkor az természetesen újabb lemezcsere jelzést vált ki.
Ebben nekünk az a jó, hogy ahhoz, hogy áttérjünk a PC kompatibilis lemezcsere jelzésre (34-es lábon jelez, és akkor törlõdik, ha fejléptetés parancsot kap a meghajtó miközben van benne lemez), csak azt kell módosítani, hogy a 18h port melyik bitjét figyelje. Kb két AND 40h-t kell AND 01h-ra átírni :-)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #100 on: 2010.July.04. 00:19:35 »
Egy rejtélyes kis érdekesség: egy normál FAT típusú lemezen az érdemi logikai adatok 0Bh bájttól vannak tárolva a boot szektorban.
Vajon milyen az a FAT fájlrendszert használó operációs rendszer, ahol ezek az adatok 50h-tól vannak tárolva, és elterjedt volt a 80-as években Angliában?

Csak azért kérdezem, mert az EXDOS képes lenne ilyen lemezt is kezelni! Külön kivétel kezelést raktak bele, hogyha a normál helyen lévõ paraméterek érvénytelenek, akkor nézze meg ezen az eltolt helyen is, és ha így értelmesnek találja a lemezt, akkor a memóriában lévõ boot szektorban átmásolja az adatokat a rendes helyükre, majd megy minden tovább a szokásos módon.

Gondolom valami fontos oka lehetett, hogy ilyen képességet is raktak bele, mert amúgy nem nagyon szokták a bájtokat pazarolni :-)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: EXDOS
« Reply #101 on: 2010.July.04. 00:22:18 »
Nem lehet, hogy valamilyen az ángluisoknál elterjedt, és népszerű gép használhatott ilyet?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #102 on: 2010.July.04. 00:44:37 »
Nem lehet, hogy valamilyen az ángluisoknál elterjedt, és népszerû gép használhatott ilyet?
De lehet :-) már csak azt kéne kitalálni melyik?

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: EXDOS
« Reply #103 on: 2010.July.04. 00:59:49 »
De lehet :-) már csak azt kéne kitalálni melyik?
Tűt a szénakazalban :D

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXDOS
« Reply #104 on: 2010.July.05. 22:55:41 »
Tût a szénakazalban :D
Meg van, Apricot!
Csak a Wikipedia-t kellett kiolvasni :)
Quote
The implementation of FAT used in MS-DOS for the Apricot PC had a different boot sector layout, to accommodate that computer's non-IBM compatible BIOS. The jump instruction and OEM name were omitted, and the MS-DOS file system parameters (offsets 0x0B - 0x17 in the standard sector) were located at offset 0x50.

Szegények itt szenvednek, hogyan lehet a lemezeiket áthozni PC-re, közben meg csak EP-n egy COPY az egész :-)