home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 40 / Flop_Magazin_40_1997_02_Raster_cs_Side_A.atr / sparta.tch < prev    next >
Text File  |  2023-02-26  |  13KB  |  67 lines

  1. 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
  2. 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
  3. . 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
  4.  pro Atari XL/XE, prakticky jedin⑨ opravdu "dosp❎l⑨" syst⑦m na tomto po⇨    ta⇨i. Proto si ho obl    bilo mnoho uəivatel
  5. , zvl⇧③④ ti pokro⇨ilej③     a program⇧to②i. Nejv❎t③     roz③    ②en     dos⇧hl na americk⑦m kontinentu.¢  SpartaDOS bohuəel obsahuje tak⑦ r
  6. 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
  7. əeme p②edch⇧zet vzniku rizikov⑨ch situac    , a n⇧sledky chyb t    m eliminovat.¢  Pr⇧v❎ proto nyn     uvedu seznam chyb a nedostatk
  8.  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
  9. sobuje v ur⇨it⑦ situaci znehodnocen     adres⇧②
  10.  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
  11. . 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
  12.  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
  13. sledku toho nejsou do p②    slu③n⑨ch prom❎nn⑨ch zaneseny p②    padn⑦ zm❎ny, kter⑦ v pr
  14. 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
  15. vodn     disketu, jej    ə identifikace z
  16. stala v prom❎nn⑨ch, je obsah sektorov⑨ch buffer
  17.  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
  18. st⇧v⇧ v bufferech nej⇨ast❎ji a na r
  19. 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
  20.  (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
  21. , kter⑦ je③t❎ m
  22. ə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
  23. 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
  24.  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
  25.  - 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 <RESET>. (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
  26.  a funkce HardCopy, a je uəivatelsk⑨m program
  27. 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
  28.  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
  29. .¢  Prevence: P②i psan     extern    ch povel
  30.  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
  31.  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
  32. zn⇧ drobn⇧ opomenut     autor
  33.  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
  34.  v "dlouh⑦m" v⑨pisu je o②    znuta na 6 ⇨    slic, coə d⇧v⇧ nespr⇧vn⑨ ⑤daj pro v③echny soubory od 1000000 byt
  35.  v⑨③e. "Kr⇧tk⑨" v⑨pis podobn⑨m zp
  36. sobem zkracuje po⇨ty sektor
  37.  (u soubor
  38. , i voln⑦ sektory) na 3 ⇨    slice - 1000 voln⑨ch sektor
  39.  se tedy zobraz     jako 000, coə m
  40. ə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
  41.  (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
  42. ).¢¢--- 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
  43.  ode⇨    t⇧ sektory 2 a 3 vədy jako BOOTov⑦, v ramdisku pak je③t❎ znovu jako bitov⑦ mapy - d
  44. sledkem je odli③n⑨ po⇨et voln⑨ch sektor
  45. .¢  D⇧le CLEANUP nerozpozn⇧v⇧ n❎kter⑦ chyby - nekontroluje totiə hlavi⇨ky podadres⇧②
  46.  (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
  47.  '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
  48.  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
  49.  do sebe.¢¢--- V❎t③ina DOS
  50.  vrac     po p②e⇨ten     posledn    ho byte v souboru status 3. SpartaDOS nikoliv.¢¢--- P②    m⑨ p②    stup k adres⇧②
  51. 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
  52. 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
  53.  - 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
  54.  a podadres⇧②
  55.  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⇧②
  56.  a dat se prov⇧d     porovn⇧n    m s ukazatelem pro p②id❎lov⇧n     adres⇧②
  57. . Protoəe se ale obvykle sektory uvoluj     ve vzestupn❎ ⇨    slovan⑨ch skupin⇧ch (soubory a adres⇧②e), p②i maz⇧n     adres⇧②
  58.  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
  59. zn⑨ch oblast     na disket❎. Nov⑦ sektory adres⇧②
  60.  i soubor
  61.  se za⇨nou p②id❎lovat prom    chan❎, coə po ⇨ase vede k "rozh⇧zen    " adres⇧②
  62.  po cel⑦ disket❎ a pomal⑦mu p②    stupu k nim.¢¢--- Obsluha za②    zen     "E:" p②i pr⇧ci d⇧vkov⑨ch soubor
  63.  je ve SpartaDOSu vy②e③ena zp
  64. sobem, kter⑨ nep②ipou③t     korektn     instalaci nov⑨ch driver
  65.  "E:". (R
  66. zn⑦ urychloa⇨e v⑨stupu na obrazovku, kter⑦ se SpartaDOSem funguj    , jsou obvykle ②e③eny metodou ileg⇧ln    ch z⇧sah
  67.  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)¢¢