DROBNOSTI O SPARTADOSu.----------------------.. Jak mo.n. v.te, vytvo.il jsem p.ed .asem nov. DOS pro osmibitov. Atari - BW-DOS. Tento syst.m se sna.. o maxim.ln. kompatibilitu se SpartaDOSem p.i minim.ln. d.lce programu. A pr.v. kv.li zm.n.n. kompatibilit. jsem b.hem programov.n. prov.d.l rozs.hl. srovn.vac. testy se SpartaDOSem, p.i kter.ch vy.lo najevo mnoho zaj.mav.ho tak. o n.m. Tyto informace se v.ak do n.vodu k BW-DOSu t.maticky nehod., tak.e jsem dlouho nev.d.l, co s nimi, a nechal je povalovat na "hald." odlo.en.ch pap.r.. Nakonec jsem usoudil, .e by bylo .koda je nav.dy utopit ve zm.n.n. "hald.", a za.al jsem tedy ps.t tento .l.nek... SpartaDOS je jedn.m z nejlep..ch DOS. pro Atari XL/XE, prakticky jedin. opravdu "dosp.l." syst.m na tomto po..ta.i. Proto si ho obl.bilo mnoho u.ivatel., zvl... ti pokro.ilej.. a program.to.i. Nejv.t.. roz...en. dos.hl na americk.m kontinentu.. SpartaDOS bohu.el obsahuje tak. r.zn. chyby a nedostatky, kter. dok... pr.ci s n.m .as od .asu po..dn. znep..jemnit. Nejlep..m .e.en.m t.chto situac. je prevence. Pokud o chyb.ch v.me, m..eme p.edch.zet vzniku rizikov.ch situac., a n.sledky chyb t.m eliminovat.. Pr.v. proto nyn. uvedu seznam chyb a nedostatk. SpartaDOSu. Vztahuje se k verz.m SpartaDOSu 3.2d, 3.2e, 3.2f a z v.t.. ..sti i 3.2g. SpartaDOS uveden.ch verz. obsahuje n.sleduj.c. - v.ce .i m.n. z.va.n. - chyby:...--- Chyba ve vnit.n. struktu.e SpartaDOSu zp.sobuje v ur.it. situaci znehodnocen. adres... a t.m ne.itelnost diskety. Kdo nev..., a. si pod SpartaDOSem n.kter. z v..e uveden.ch verz. zkus. n.sleduj.c.: Zform.tujeme dv. diskety, na ka.dou z nich ulo..me na zkou.ku n.kolik soubor.. Na disketu ..2 um.st.me n.jakou men.. utilitu, kter. je ulo.ena jako jeden dlouh. segment s vektorem RUN, a umo..uje ukl.d.n. dat na disk (nap..klad polsk. ED.COM od Janusze B. Wi.niewsk.ho). Nyn. vyp..eme adres.. diekty ..1, vlo..me disketu ..2 a okam.it. spust.me (zad.n.m n.zvu) na.i utilitu. Vr.t.me do disketov. jednotky disketu ..1 a ulo..me na ni n.jak. data. Vysko..me do DOSu a prohl.dneme si zni.en. adres...... Jedn. se o z.va.nou chybu ve vnit.n. stavb. SpartaDOSu. Rutina pro zav.d.n. programov.ch soubor. je jednou z intern.ch rutin syst.mu FMS (diskov.ho handleru), co. je chyba - tato rutina toti. p..mo spou.t. zav.d.n. programy p.es vektory RUN a INIT (jsou-li definov.ny), co. vede k "ileg.ln.mu" opu.t.n. syst.mu FMS bez korektn.ho zakon.en. operace LOAD. V d.sledku toho nejsou do p..slu.n.ch prom.nn.ch zaneseny p..padn. zm.ny, kter. v pr.b.hu operace LOAD nastaly, zejm.na p..padn. v.m.na diskety proveden. bezprost.edn. p.ed LOADem (identifikace nov. diskety). Pokud pak do disketov. jednotky vr.t.me p.vodn. disketu, jej.. identifikace z.stala v prom.nn.ch, je obsah sektorov.ch buffer. pova.ov.n za platn. (..dn. v.m.na diskety), a p.i z.pisu n.jak.ho souboru je po .prav. "vr.cen" na disketu - ve skute.nosti ov.em na jinou!!! Tento podivn. "sektorov. kop.r.k" obvykle postihuje hlavn. adres.., kter. z.st.v. v bufferech nej.ast.ji a na r.zn.ch disket.ch v.t.inou souhlas. i jeho um.st.n... Prevence je pom.rn. jednoduch.. Nezbytnou podm.nkou pro vznik popsan. situace je proveden. operace LOAD ihned po v.m.n. diskety - tomu je t.eba zabr.nit. Sta.. po v.m.n. diskety nap..klad nahl.dnout do adres..e...--- Intern. povel BASIC ve SpartaDOSu netestuje skute.nou velikost dostupn. pam.ti RAM - pro um.st.n. obrazovky pou..v. konstanty $A000 pro "BASIC ON" a $C000 pro "BASIC OFF". Je-li p.ipojena n.jak. cartridge, dojde po "BASIC OFF" ke kolizi obrazov. pam.ti s ROM cartridge, t.m ke zhroucen. funkce za..zen. "E:" a neovladatelnosti syst.mu. Tato situace hroz. zejm.na p.i kombinaci cartridge a BOOTu z diskety, jej.. soubor STARTUP.BAT obsahuje "BASIC OFF".. Prevence: P.i pou.it. cartridge se p.esv.d.it, .e ..dn. z pou.it.ch d.vkov.ch soubor. (zejm.na STARTUP.BAT) neobsahuje povel "BASIC"...--- Program CLEANUP.COM vytv... po z.pisu oprav na disk p.edpoklady pro zablokov.n. po..ta.e - pokud je instalov.n jak.koliv rezident. Jedn. se o hrubou nedbalost autora tohoto programu. Proto.e CLEANUP zapisuje zm.ny p..mo p.es SIO, pot.ebuje n.jak zabr.nit DOSu v pou.it. star.ch sektor., kter. je.t. m..e m.t v bufferech. Spr.vn. by to m.l ud.lat zm.nou sekven.n.ho ..sla diskety (DOS by pak identifikoval v.m.nu diskety), CLEANUP toho v.ak dosahuje vyvol.n.m procedury DOS-INIT. Jedn. se o dosti sv.r.zn. .e.en. (jako vedlej.. ..inek zastav. d.vkov. soubor, vy.ist. buffer kl.vesnice atd. atd.), jeho pou.it. je v.ak mo.n.. "K.men .razu" je ov.em ve zp.sobu, jak.m CLEANUP tento podprogram vol.: M.sto spr.vn.ho skoku na adresu ulo.enou v prom.nn. DOSINI ($0C), pou..v. CLEANUP ileg.ln. "tvrd." skok na adresu $7E0! Tato adresa je sice v naprost. v.t.in. DOS. za..tkem zm.n.n. inicializa.n. rutiny, nezahrnuje v.ak p..padn. instalovan. rezidenty. A to je pr.v. ono: CLEANUP inicializuje pouze samotn. DOS - bez rezident. - co. vede k nespr.vn.mu nastaven. prom.nn. MEMLO, kter. pak nechr.n. rezidenty p.ed p.eps.n.m (nap.. p.i kop.rov.n.).. Prevence: Ihned po pou.it. programu CLEANUP stisknout kl.vesu . (T.m prob.hne spr.vn. inicializace syst.mu, kter. rizikov. stav odstran..)..--- Rutina ZDIVIO, kter. je ur.ena ke spou.t.n. d.vkov.ch soubor. a funkce HardCopy, a je u.ivatelsk.m program.m p..stupn. p.es stejnojmenn. vektor v tabulce COMTAB, ve SpartaDOSu nespr.vn. obsluhuje chybov. stavy. Pokud dojde p.i otv.r.n. souboru k chyb. (sta.. p.eklep v n.zvu d.vkov.ho souboru), SpartaDOS m.sto p.ed.n. chybov.ho k.du volaj.c.mu programu vyp..e na obrazovku chybov. hl..en. a "spadne" do CP. Pokud p.ed t.m u.ivatelsk. program otev.el n.jak. soubory, nem. u. .anci je leg.ln. uzav..t - pokud byly otev.eny v IOCB ..3 a vy...m, neuzav.e je ani CP.... Prevence: P.i psan. program. pou..vaj.c.ch ZDIVIO je vhodn. nenech.vat p.es vol.n. zm.n.n.ho vektoru ..dn. soubory otev.en....--- Intern. buffer, ve kter.m funkce .ten. form.tovan.ho adres..e sestavuje jednotliv. ..dky v.pisu, koliduje ve SpartaDOSu s koncem bufferu LBUF (buffer zadan.ho p..kazu v CP). Je-li zadan. ..dek dlouh., dojde p.i proveden. operace OPEN s aux1=6 k p.eps.n. jeho konce, a t.m p..padn. i k chybn. interpretaci zadan.ch parametr... Prevence: P.i psan. extern.ch povel. nejprve p.evz.t v.echny parametry, teprve potom otev.rat sobory...--- Obslu.n. program ramdisku RD.COM zalo.en. ramdisk nespr.vn. form.tuje. Bitov. mapa je generov.na o jeden bit krat.., co. v n.kter.ch p..padech (ramdisk 256kB) vede k rozd.lu jednoho sektoru na d.lce bitov. mapy a t.m k form.ln. kolizi bitov. mapy s hlavn.m adres..em. V praxi se tento probl.m obvykle nijak neprojevuje, form.ln. nedostatky v bitov. map. v.ak trvaj. a mohou se st.t p...inou chybn. funkce n.kter.ch utilit. Nav.c je p.i form.tov.n. chybn. nastavena d.lka hlavn.ho adres..e - to se v.ak oprav. samo z.pisem libovoln.ho souboru nebo podadres..e.. Prevence: Nepou..vat v ramdisku sektorov. orientovan. utility, nebo nepou..vat RD.COM.... T.m kon.. prvn. ..st tohoto .l.nku - seznam chyb SpartaDOSu. Na .adu te. p.ich.z. p.ehled dal..ch nedostatk. tohoto DOSu, kter. sice nejsou p..mo chybami v programu, mohou v.ak program.tora nemile p.ekvapit. Jedn. se v.t.inou o r.zn. drobn. opomenut. autor. SpartaDOSu, kte.. n.kter. funkce nedot.hli zcela do konce....--- Ve form.tovan.ch v.pisech adres..e jsou n.kter. ..sla nevhodn. zkr.cena. D.lka soubor. v "dlouh.m" v.pisu je o..znuta na 6 ..slic, co. d.v. nespr.vn. .daj pro v.echny soubory od 1000000 byt. v..e. "Kr.tk." v.pis podobn.m zp.sobem zkracuje po.ty sektor. (u soubor., i voln. sektory) na 3 ..slice - 1000 voln.ch sektor. se tedy zobraz. jako 000, co. m..e n.kter. programy p.iv.st k dom.nce, .e disketa je pln....--- P..kaz TYPE je ve SpartaDOSu omezen na soubory, kter. neobsahuj. ..dky del.. ne. 64 znak. (jinak hl.s. chybu 137)...--- P..kaz COPY nikdy nehl.s. chybu 170 (soubor nenalezen) a m.n. obsah p.t. str.nky pam.ti (sestavuje zde n.zvy soubor.)...--- Program CLEANUP hl.s. v ramdisku neexistuj.c. chyby. Ramdisky nepot.ebuj. BOOTov. zavac.., a proto m.vaj. bitovou mapu obvykle um.st.nu ji. v sektoru ..2 - to CLEANUP odm.t. pochopit. P.i v.po.tu voln.ch sektor. ode..t. sektory 2 a 3 v.dy jako BOOTov., v ramdisku pak je.t. znovu jako bitov. mapy - d.sledkem je odli.n. po.et voln.ch sektor... D.le CLEANUP nerozpozn.v. n.kter. chyby - nekontroluje toti. hlavi.ky podadres... (unikne mu chybn. odkaz na nad..zen. adres.. nebo chybn. n.zev adres..e)...--- P..kaz XINIT nedok..e na v.t.in. konfigurovateln.ch disketov.ch jednotek (v.etn. XF-551) form.tovat roz...enou hustotu. Pokou.. se to toti. prov.st pomoc. povel. 'O' a '!', co. na v.t.in. jednotek nejde (spr.vn. povel je '"'). D.le XINIT p.i kop.rov.n. nezachov.v. datum a .as DOSov.ho souboru...--- BOOTov. rutina, kterou v.echny verze SpartaDOSu (v.etn. cartridge SpartaDOS X) ukl.daj. na form.tovan. diskety, nen. pln. slu.iteln. s disketovou jednotkou XF-551. Pokud pou..v.me tuto jednotku, poda.. se prvn. BOOT z dvojit. hustoty a. napodruh., a DOSov. soubor nesm. le.et na druh. stran. diskety...--- Rezidentn. povely dod.van. se SpartaDOSem (nejen) se nebr.n. v.cen.sobn. instalaci (mnohdy pak jednotliv. kopie t.ho. rezidentu navz.jem koliduj.), a nelze je odstra.ovat z pam.ti...--- P.i zav.d.n. strojov.ho programu - a hlavn. p.i prov.d.n. jeho INIT rutin - m. b.t IOCB ..1 otev.en pro .ten. z programov.ho souboru. (Toho vyu..v. nap.. Turbo Basic, kter. svoji druhou ..st zav.d. s.m - p..mo pod OS-ROM.) Pod SpartaDOSem tento IOCB otev.en nen....--- SpartaDOS se nebr.n. otev.en. v.ce form.tovan.ch v.pis. adres..e sou.asn., co. v.ak nedok..e spr.vn. obslou.it. Proto.e je k dispozici jen jeden ..dkov. buffer, "prosakuj." ..sti obou v.pis. do sebe...--- V.t.ina DOS. vrac. po p.e.ten. posledn.ho byte v souboru status 3. SpartaDOS nikoliv...--- P..m. p..stup k adres...m m. pod SpartaDOSem n.kter. nep..jemn. omezen.. Re.im aux1=8+16 (p.epsat adres..) se pod SpartaDOSem chov. stejn. jako 12+16 (aktualizace adres..e) - nedoch.z. ke zru.en. star.ch dat, kter. mohou p.i z.pisu krat..ho adres..e p.es del.. ..ste.n. z.stat na jeho konci. Re.im 12+32 (aktualizace podadres..e) je v podstat. nefunk.n. - pokud toti. podadres.. ji. existuje (pro. bychom ho jinak aktualizovali?!?), skon.. operace s chybou 151 (nelze p.epsat).. V.echny re.imy aux1+16 pracuj. s adres..em ur.en.m jen cestou, n.zev souboru ignoruj.. Pod SpartaDOSem v.ak mus. b.t i p.esto p..tomen syntakticky spr.vn. n.zev - proto je vhodn. za cestu v.dy p.id.vat alespo. "*.*". Pou.ijeme-li re.imy aux1+32 k zalo.en. nov.ho podadres..e, neprovede SpartaDOS tuto operaci kompletn. - zalo.. jen adres..ov. soubor, ani. by do n.j vlo.il spr.vnou hlavi.ku podadres..e...--- Obsluha aloka.n.ch ukazatel. - pozice 18 a 20 v sektoru 1 - je ve v.ech dosud zn.m.ch verz.ch SpartaDOSu (v.etn. SpartaDOSu X) zna.n. nedota.en.. Tyto ukazatele ozna.uj. m.sto na disket., od kter.ho se za..n. hledat voln. sektor p.i roz.i.ov.n. souboru resp. podadres..e. P.i z.pisu nov.ch soubor. a podadres... se s postupn.m obsazov.n.m diskety zvy.uj., p.i maz.n. je t.eba tyto ukazatele naopak sni.ovat. SpartaDOS je p.i uvol.ov.n. ka.d.ho sektoru vrac. na ..slo tohoto sektoru, p.i.em. rozli.en. mezi oblast. adres... a dat se prov.d. porovn.n.m s ukazatelem pro p.id.lov.n. adres.... Proto.e se ale obvykle sektory uvol.uj. ve vzestupn. ..slovan.ch skupin.ch (soubory a adres..e), p.i maz.n. adres... podle t.to metody bude ji. druh. sektor nad (novou) hodnotou "adres..ov.ho" ukazatele - posunut bude tentokr.t ukazatel "datov.". T.m se oba ukazatele dost.vaj. na t.m.. stejnou hodnotu, a p.est.vaj. odd.lovat adres..e a data do r.zn.ch oblast. na disket.. Nov. sektory adres... i soubor. se za.nou p.id.lovat prom.chan., co. po .ase vede k "rozh.zen." adres... po cel. disket. a pomal.mu p..stupu k nim...--- Obsluha za..zen. "E:" p.i pr.ci d.vkov.ch soubor. je ve SpartaDOSu vy.e.ena zp.sobem, kter. nep.ipou.t. korektn. instalaci nov.ch driver. "E:". (R.zn. urychloa.e v.stupu na obrazovku, kter. se SpartaDOSem funguj., jsou obvykle .e.eny metodou ileg.ln.ch z.sah. p..mo do programu SpartaDOSu - fuj...)... Informace uveden. v tomto .l.nku si v ..dn.m p..pad. nekladou za c.l SpartaDOS n.jak "o.ernit". Jejich ..elem je upozornit u.ivatele na rizikov. situace, kter.m je lep.. se vyhnout, a zv..it tak bezpe.nost a efektivitu jejich pr.ce se SpartaDOSem. Jinou mo.nost. je p.echod na BW-DOS, kter. je se SpartaDOSem do zna.n. m.ry slu.iteln. a uveden. chyby a nedostatky samoz.ejm. nem., v tom p..pad. se v.ak mus. u.ivatel sm..it s pon.kud men..m okruhem dostupn.ch funkc.... Ji.. Bern..ek (BEWESOFT)..