Welcome, Guest. Please login or register.


Author Topic: EXOS (Read 113482 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #135 on: 2016.April.05. 13:53:24 »
Van az hiba kod megmagyarzasa cimu EXOS lehetoseg. Ennek kapcsan jutott eszembe: ezt "cache-eli" barmi? Marmint arra gondolok, hogy ha visszaadok egy cimet, hogy itt a jelentese az adott hibakodnak tessek, akkor meddig lehet szamitani, hogy azt valaki onnan elolvassa? Ez ugye egy ROM eseten hulye kerdes, mert a ROM az ROM :) De ugye a XEP ROM az Xep128-ban pont ugy van hasznalva, hogy kulonbozo optimalizaios, egyszerusitos es helytakarekossagi okokbol az emulator modositja a ROM-ot idonkent, es nem szeretnek fixen ott tarolni egy hibajegyzeket: azaz, ha tudom, hogy az "en hibakodom" akkor az emulator a ROM teruletere injektalja a jelenteset szepen, de legkozelebb egy masik hibakodra mar mas lesz ott esetleg. Okozhat ez problemat? Igazabol, ez felmerulhet mint kerdes normal EP eseten is, ha pl vmi betotlheto rendszerbovitovel van dolga az embernek, mert az nem ROM, tehat elvileg at tudja irni sajat magaban a cucc ...

Ja, az persze vilagos, hogy nem tudhatom, hogy 1 microsec vagy mennyi ideig kell :) Ugy ertettem, ha az utan van vmi hivas ami megint eredmenyezhet hibat, akkor az "elozot" mar remelhetoleg senki nem akarja tudni, hogy mit jelentett ...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #136 on: 2016.April.06. 14:50:04 »
Az EXOS átmásolja a ROM által megadott hibaüzenetet a felhasználói program által megadott pufferbe, utána el van felejtve.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #137 on: 2016.April.10. 16:31:03 »
Koszi! Error code kezelesben tovabbi anomaliat velek felvedezni. Azt irjak, hogy:

http://ep.homeserver.hu/Dokumentacio/Konyvek/EXOS_2.1_technikal_information/exos/kernel/Ch9.html#9.2.5

"To avoid conflict with the built in error codes, and any new ones in future versions or extensions, extension ROMs should only use error codes below 7Fh for errors which they generate themselves."

Ez azonban szerintem hibas megallapitas, mivel ami kettes komplemens alapjan negativ, csak az szamit error code-nak, nem? O meg a 7F alattit ajanlja, ami nem lesz error code, max warning. Es tenyleg, ki is probaltam: ha pl 7E error code-ot adok vissza, akkor vmi ismeretlen EXOS hiba tipus irodik ki, es a ROM-om 5-os funkciohivasaval le sem kerdezodik, hogy mi az error code jelentese az EXOS altal. Ha mondjuk CF-t hasznalok akkor azonnal jo.

Szoval ez egy hiba a leirasban? Mert miert ajnalja, hogy 7F alatti kodot hasznaljanak user ROM-ok, ha az nem is error code, es mint error ugysem fog mukodni?

A masik kerdesem: hogy akkor milyen kodot erdemes hasznalni ami tuti nem utkozik EXOS/EXDOS/stb szokasos hibakodokkal?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #138 on: 2016.April.10. 17:06:13 »
Ez azonban szerintem hibas megallapitas, mivel ami kettes komplemens alapjan negativ, csak az szamit error code-nak, nem??
Ilyen hol van írva? Minden ami NZ az hiba :-)
Egyébként hibás a leírás, mert a 7Fh-t használja az EXOS maga...

Bruce hasonló kérdésére utána néztem:
32-36 EDCW
40-62 HEASS
65-68 HDIGI
96-103 VENUS
100 ZT
107-111 PUPIL
120-127 ENTERCOM
149-191,207 EXDOS
127,208-255 EXOS

Már eleve vannak konfliktusok :oops:
ZT átmegy majd 104-re, hogy ne legyen ütközés a Venus-szal, Entercom-ot pedig 119-126-ra kéne módosítani (elméleti kérdés, modem hw nélkül túl sokan nem fogják használni :-) )
192-206-ot meghagyjuk EXDOS következő verzióinak, Bruce pedig 50h-5fh (80-95), 80h-94h (128-148) használja EPNET-hez.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #139 on: 2016.April.10. 18:02:45 »
Ilyen hol van írva? Minden ami NZ az hiba :-)

Igen, valoban, visszatereskor ha A nem 0 (illetve Z flag beallitva ennek megfeleloen, amirol az EXOS gondkoskodik, hogy nekunk ne kelljen kulon). Amde, mint kiderult, csak az az "igazi" hiba, ahol a 7. bit beallitva az error code-ban (A), a tobbi warning! Szoval hibanak hiba, de pl ha sajat ROM-ban mondjuk hexa 70-et adok vissza, akkor az EXOS *NEM* hivja meg a ROM "explain error" (action code 5)-ot, azt csak hiba eseten teszi! Marmint onnan tudom, hogy kiprobaltam! :) Szoval oke, hogy NZ stb, de van kulonleges jelentese a hibakod 7. (legfelso) bitjenek is, amit ugy hiv a leiras sok helyen, "hogy ha negativ az error kod". Ezt gondolom ugy erti, hogy kettes komplemens szerint negativ, azaz legfelso bit beallitva.

De amugy, hogy hol irja? Konkretan itt:

http://ep.homeserver.hu/Dokumentacio/Konyvek/EXOS_2.1_technikal_information/exos/constants/Ch3.html

Itt: "All EXOS calls return a status code which is zero to indicate success and negative to indicate that an error occured. Positive non­zero codes are warning codes and are not widely used by EXOS, indeed there is only one warning code produced by EXOS and it is included here."

Quote
Egyébként hibás a leírás, mert a 7Fh-t használja az EXOS maga...

igen, ez lehet akkor az az "only one", tehat az egyetlen nem error, hanem warning, amit EXOS hasznal. Ezek szerint ... A fenti emlitett linken is warning code-nak hivjak. Es valoban, ha belegondolsz, ez nem error ... Hiszen _valamit_ sikerult allokalni, csak nem teljes szegemns, hanem csak shared-et :) Tehat klasszikus ertelemben nem sikertelen a muvelet, hogy allokalni akartal egy szegmenst :) Vagy hat, felfogas kerdese.

Igazabol a gondom tenyleg csak az, hogy ugy tunik, az EXOS a "warning" kodokra (tehat ahol a hibakod 0x80 alatt van), nem fogja meghivni a ROM-ok "explain error code" (action code 5) hivasat ... A Xep128-ba bele is irtam, hogy irjon ki minden hivast akciokoddal stb, EXOS meg sem hivja ... Csak ha 0x80 vagy felette van, azaz ha "negativ" az error code.

Magyaran, igazabol az oke, hogy 0 az jo, barmi mas az error (es a Z flag ez alapjan persze). A problema max ott jon elo, hogy EXOS maskepp kezeli a 0x80 alatti es folotti error kodokat, es ez pl konkretan baj, ha sajat hibauzeneteket akarsz visszaadni az explain error code segitsegevel, akkor szamit az is ... Ha ez nem fontos, akkor persze mindegy, akkor zero v nem zero eleg elvi szinten a donteshez!
« Last Edit: 2016.April.10. 18:06:11 by lgb »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #140 on: 2016.April.10. 18:14:51 »
Csak azt nem értem, hogyan hozod elő a problémát, amikor évtizedek óta 127 alatti kódokat használ minden nem IS program, és működik :-)
Egyébként erősen azt gondolom, hogy fejlesztés közben csinálták az EXOS leírást, és idővel nem frissítették a régebbi részeket, lásd pl. hogy az általuk használt 127-es kódot elfelejtettek az ajánlásban.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #141 on: 2016.April.10. 18:57:58 »
Csak azt nem értem, hogyan hozod elő a problémát, amikor évtizedek óta 127 alatti kódokat használ minden nem IS program, és működik :-)

Mit ertesz mukodes alatt? Mint irtam, nekem a gondom az, hogy sajat hibauzentet *szoveget* nem lehet adni. A konkret pelda ugye a FILE: implementaciom Xep128-ban. Akartam sajat hibakodot es ra sajat uzenetet, amit EXOS megjelenit. Ezert nyilvan az EXOS "sima" ROM hivas action code 5-ot lekezelem, es varom a sajat kodomat, hogy "megmagyarazzam" szovegesen. Ezt azonban az EXOS meg sem hivja, ha olyan hibakodot adok vissza ami 0x80 alatt van, csak ha felett. Ettol meg "mukodik", ha azt nezed, hogy EXOS igy is rajon, hogy nem sikerult a muvelet, mert nem zero az error code, csak sajat uzenetemet nem fogja megjeleniteni.

Amennyire tudom, EXOS az osszes lancolt ROM-ot megkerdezi egy hibakod eseten, hogy "ki tud rola". En azt is beleirtam, hogy Xep128 debug uzenetben kiir mindent, hogy milyen kodokkal hivja vki a XEP ROM-omat 5-os akcio koddal. 0x80 alatt nincs is hivas _semmi_, tehat EXOS nem is akarja tudni ... Helyette megjelenik a kovetkezo uzenet EP-n, ha pl a 0x11-es hibakodot hasznalom:

*** EXOS error type 9248.

Ha olyan hibakodot adok vissza, ami 0x80 vagy felette van, akkor nagyon helyesen ez jelenik meg pl (mert ezt az uzentet adom vissza):

*** LGB test error.

Nem hiszem, hogy en rontottam volna el barmit, mert a ket eset kozott *CSAK* az a kulonbseg, hogy a hibakod 0x80 alatt vagy felett van, semmi mas. Fontos, hogy ezt a hibat a FILE: device handler allitja elo, tehat nem sima EXOS parancs valasza ez marmint! Amugy kiprobaltam most EXOS parancs stringre. Nagyon erdekes, ott barmilyen hibakodra jo es van sajat custom hibauzenet :) Viszont egy device handler eseten ugy tunik, csak 0x80 vagy feletti error kod-ok jutnak el addig, hogy az EXOS megkerdezze megis mifele error ez, es azt irja ki pl. Jelenleg, ahogy fentebb is irtam:

Code: [Select]
:LOAD FILE:nincsilyenfile

*** EXOS error type 9248.

Lesz a kepernyon. Ha azonan pl 0xCF hiba kodot adik vissza a FILE: handleremben, akkor nagyon helyesen a hiba helyen mar az all hogy LGB test error, lasd fentebb.

Amugy pontosan ez az EXOS error type 9248 az micsoda? Foleg az a szam :)

Quote
Egyébként erősen azt gondolom, hogy fejlesztés közben csinálták az EXOS leírást, és idővel nem frissítették a régebbi részeket, lásd pl. hogy az általuk használt 127-es kódot elfelejtettek az ajánlásban.

De az erzesem szerint jogosan csak warning ... Mivel sikerutl valamit foglalni, csak nem teljes szegmenst  Irjak is, hogy a 127-es kod az hatareset, marmint a leiras is "csak" warning-nak hivja, es nem error-nak (ami az hogy SEMMIT nem lehetett foglalni). Tudom, ez mar csak filozofiai szintu "kotekedes" de ha a mar a leiras is kulon emliti hogy a warning kategoria, akkor csak van alapja ...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #142 on: 2016.April.10. 19:15:57 »
Mit ertesz mukodes alatt?
Azt, hogy vannak a hibák, szöveggel.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #143 on: 2016.April.10. 19:29:46 »
Azt, hogy vannak a hibák, szöveggel.

Oke, de device-ok eseten? :) Nem EXOS parancsokra ...

Csinaltam tesztet, lasd csatolmanyt. Oke, ronda .. :) Az asm a forras, a ket ROM az az ERROR_CODE 0x90 vagy 0x7E csak az a kulonbseg, azaz az ERROR_CODE-ot atirtam a forrasban es leforditottam (sjasm 0.42c). Aztan ep128emu-ba betettem mint ROM, nehogy a Xep128 tevedjen valahol :)

Aztan IS-BASIC prompt-nal:

LOAD"XXXX:akarmitlehetideirni"

A 4db X a device-unk neve :) Probald ki a ket kulonbozo ROM-mal. Egyiknel kiirja a sajat hibat hogy "*** Kiralysag" a masiknal viszont ez jelenik meg:

*** EXOS error type 9248

Xep128-ban az is latszik, hogy meg sem hivja a ROM-ot az error szoveg lekerdezesere ha az error code 0x80 alatt van az EXOS.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: EXOS
« Reply #144 on: 2016.April.10. 20:14:48 »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #145 on: 2016.April.10. 20:16:20 »
Arról volt szó régebben, a homeserver-es oldalt inkább felejtsük el.
Azóta szereztem hozzá jelszót, ill. az ős 8bit.hu verzióhoz is, mindhármon azonos tartalom van.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #146 on: 2016.April.10. 20:17:40 »
Oke, de device-ok eseten? :)
Izgi...
Itt valamiért ezt az EXOS hibát generálja, amihez nincs szöveg az EXOS ROM-ban:
 err .NOBUF ;0F8h No ALLOCATE BUFFER call made (OPEN/CREATE)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #147 on: 2016.April.10. 20:27:09 »
Izgi...
Itt valamiért ezt az EXOS hibát generálja, amihez nincs szöveg az EXOS ROM-ban:
 err .NOBUF ;0F8h No ALLOCATE BUFFER call made (OPEN/CREATE)

Igen, ezt en is lattam. El is gondolkoztam rajta. Ugye open/create channel-nel a leiras szerint *kell* channel buffer-t allokalnia a hivonak ... En nyilvan nem teszem, abbol a felindulasbol, hogy eleve tudom, hogy ha amugy sem sikerult megnyitni a file-t, akkor minek. Az alapszitu ugye a Xep128 FILE: implementaciojanak, hogy az ED trap-pel az emulator megprobalja megnyitni. Ha a file nincs, akkor eleve visszaadnam a hibat. Azert nem az EXDOS error code-ot hogy file not found, mert ugye exdos nem tuti h van a rendszerben. meg amugy is jo egy sajat uzenet, hogy ne legyen megteveszto hogy epp ki mit keres es hol file-t :) Ha a file-t meg tudom nyitni, es ezert A-t nullara allitom majd stb, akkor tenyleg gond, ha channel buffer RAM nem lett foglalva. Amde ha amugy se lehet megnyitni, akor minek? De az, hogy 0xF8-as kodot keres, ami pont ezt jelenti, az nekem is feltunt mar eddig is ... Ez viszont tovabbra se magyarazza, miert viselkedik maskepp az EXOS *csak* annyi kulonbseg alapjan, hogy az error code 7. bitje 1 vagy 0 :) Azaz hogy "negativ-e" az error code, ahogy a leiras emliti ...  Vegulis nem nagy dolog, hasznalok majd 0x80 feletti error code-ot, amiert felhoztam az az, hogy erdekes kerdesnek tunik ez az egesz, szerintem legalabbis :)

Amit post-oltam ide tesztet az persze egy ertelmetlen dolog, mivel semmire sem jo, csak demonstralni a dolgot :) Xep128-ban amugy igy nez ki kb:

Code: ZiLOG Z80 Assembler
  1. fileio_open_channel:
  2.         TRAP    xepsym_fileio_open_channel
  3.         OR      A
  4.         RET     NZ
  5. allocate_channel_buffer:
  6.         PUSH    DE
  7.         PUSH    IX
  8.         LD      DE, 1   ; really, I have no idea why I need to allocate 1 byte, when I don't need it
  9.         EXOS    27      ; ... but it seems EXOS would expect this call on open/create or strange error occures!
  10.         POP     IX
  11.         POP     DE
  12.         RET             ; A was not saved/restored, however EXOS 27 result code should be zero on OK anyway

A "TRAP" az a megfelelo ED opcode trap lesz, aminek hatsra az emulator megprobalja megnyitni a file-t. Be is allitja A regisztert stb. Ha az nulla, akkor megy tovabb, es foglal egy byte-nyi channel buffer RAM-ot :) az hogy ez miert kell nem pontosan tudom, de anelkul nem mukodik :) A fenti kodreszlet amugy jol megy, szoval Xep128 alol mukodik a FILE: -al a betoltes (most mar nekem a mentes is btw ... de az meg nincs release-ben ...) az is jol kezelodik, hogy nem tudja maga az emu megnyitni a file-t, akarmi, stb. Az egyeduli kerdes "csak" a "szep" sajat hibajelzes kepzese. Mondjuk a fenti kodreszletben egy logikai hiba azert van: nincs kezelve az az eset, hogy az emu maga megnyitotta a file-t (marmint Linux/Windows stb szinten), amde az EXOS 27 valamiert nem sikerul (mondjuk 1 byte eseten erre kicsi a valoszinuseg, dehat ...), akkor host OS szinten nyitva marad a file a hiba ellenere, es a Xep128 altal belsoleg kezelt EXOS channel / host OS file descriptor mapping-et kicsit zavarni fogja :)
« Last Edit: 2016.April.10. 20:45:01 by lgb »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EXOS
« Reply #148 on: 2016.April.10. 20:52:36 »
Btw, erre a 0xF8-ra tovabbra is csak egy magyarazatom van: az EXOS legalabbis device-ok eseten (nem EXOS parancs) a 0x80 alatti nem zero kodokat nem tekinti hibanak, _csak_ warning-nak! Azaz ha azt adom vissza egy device driver-ben adott EXOS keresere (pl open channel), akkor o ugy tekinti hogy _sikerult_ a muvelet csak warning-gal! Ezert reklamal utana arra viszont, hogy 0xF8-as hiba (ezert keresi is az uzenetet!) mert sikeres open channel eseten viszont a leiras szerint is kotelezo lenne channel buffer-t allokalnom. Most hogy igy belegondolok, pont ugyanez a misztikus EXOS error type XXXX jott elo akkor is, amikor ez nem volt benne a kodban (az EXOS 27 marmint). Ergo, akkor megint ott tartunk, hogy a 0x80 alatti error code-ok valojaban nem error-ok csak warning-ok, legalabbis a device driver-eknel!!! EXOS _parancsokra_ teszteltem, ott keresi az explain error a 0x80 alatti kodokat is, a device driver-ektol elteroen, tehat ott ugy tunik nincs megkulonbozteto szerepe annak, hogy a kod 0x80 alatti vagy feletti ("negativ-e"). Hmmm. Jobb magyarazatom nincs, minden jel arra mutat, hogy EXOS valahogy igy gondolkodik legalabbis device driver-ek eseten, nem gyozom hozzatenni :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: EXOS
« Reply #149 on: 2016.April.10. 20:54:10 »
Igen, ezt en is lattam. El is gondolkoztam rajta. Ugye open/create channel-nel a leiras szerint *kell* channel buffer-t allokalnia a hivonak ... En nyilvan nem teszem, abbol a felindulasbol, hogy eleve tudom, hogy ha amugy sem sikerult megnyitni a file-t, akkor minek.
Ha megteszed, akkor már szépen működik a hibakód.

Quote
Vegulis nem nagy dolog, hasznalok majd 0x80 feletti error code-ot
Ami már mind stipi-stopizva van :oops:
Használhatod az EXDOS-os file not found-ot (István féle is ezt teszi), a ROM-odba meg berakni rá ugyanazt a szöveget (Istváné ezt nem teszi :oops: )

Egyébként itt van az eb elhantolva:
Code: ZiLOG Z80 Assembler
  1.                 pop     af                      ;A = function number
  2.                 call    CALL_DEVICE             ;Call the device driver
  3.                 exx                             ;Save returned params.
  4.                 or      a
  5.                 jp      m,pop_exx_ret           ;Error if -ve RC from device
  6. ;
  7.                 ex      af,af'
  8.                 ld      hl,buffer_not_allocated ;Check to see if device got
  9.                 ld      a,.NOBUF##              ;  a channel buffer.  This
  10.                 inc     (hl)                    ;  will still be 0FFh if it
  11.                 jp      z,pop_exx_ret           ;  didn't, zero if it did.
  12.                 dec     (hl)
  13.                 jp      ex_pop_exx_ret          ;Successful return
  14.  
  15.  
  16. pop_exx_ret:    ex      af,af'                  ;Get RC into A'
  17. ex_pop_exx_ret: pop     bc
  18.                 pop     de                      ;Restore alternate registers
  19.                 pop     hl
  20.                 exx
  21.                 ex      af,af'                  ;Get RC back into A
  22.                 ret

Ha jól sejtem az eredeti koncepció volt a 80h alatti warning kódokkal, aztán később felszabadították ezt a tartományt a bővítéseknek. Itt ezen az egy helyen benne maradt a JP M a JP NZ helyett. Meg a leírást se frissítették mindenhol.
Máshol nem találtam ilyet se az EXOS-ban, se a BASIC-ben, se az EXDOS-ban. Ez az egy meg csak egy szabálytalan eszközkezelővel jön elő :oops:
« Last Edit: 2016.April.10. 21:04:37 by Zozosoft »