0L0XTXT ( z 00 00-0`/}0|0 x0   Y  Ӣ8`ll1R@.n00)0.0-0 *I0  C0 10 u0 100 0q0 080H 0(0DhC 000CDDCL0CD-003.-0`00 G00m000m00C80CD0D.0̀0(0 )0  C0/(0/)0/ / Ȍ.0DЛ0C0. E0L1MAIN  (#CMC5 TXT ` 3i|KOALA4 TXT ` *W1SPARTA6 TXT ` "HZVUK15 TXT ` (vPICVIEW BAS a$ZVUK PIC `%WREZIDENTTXTa+6RREZVYPISTXTa $_!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ZAJ MAVOSTI O CMC----------------- Zkratka "CMC" v titulu tohoto lnku znamen "Chaos MusicComposer", co je pkn hudebn editor od Janusze Pelce zpolska, vydan firmou L.K.Avalon. Tento editor doshl pomrnznanho roz en , ped nkolika lety v nm vznikaly tmvechny hudebn skladby v polskch programech. Dnes je sicevytlaovn ze scny programem Music ProTracker, kter m o ncovt monosti, v jednoduchosti ovldn je vak CMC praktickyneporaziteln. To ho spolu se stle nadprmrnmi zvukovmimonostmi do budoucna peduruje pedev m pro "mnprofesionln " uivatele, kte ho asi sotva nkdy zcela opust . CMC m bohuel i nevhody. Nvod dodvan s programem obsahujevechny nezbytn informace, v nronj ch p padech zaleovn hudby do vlastn ch program se vak me ukzat pece jen p listrun. Krom toho obsahuje pehrvac rutina generovan CMCnkter chyby - mohou m t za nsledek nep jemn "vkiky" vpauzch pvodn skladby, jejich vskyt zdnliv postrdlogick vztah k emukoliv. Tento lnek si klade za c l podat alespo nkolik mlouitench informac o CMC. FORMT SOUBOR V nkterch situac ch je uiten znt formt soubor, dokterch CMC ukld hudebn skladby. Tyto soubory slou souasnjako vstupn data pro pehrvac rutinu pi zaleovn hudby dovlastn ch program. Jedn se o bn binrn segmentovan soubory, kterpochopiteln za naj standardn hlavikou. Pesun hudby najinou adresu vak nelze realizovat pouhou zmnou hlaviky -soubor obsahuje i dal absolutn adresy, kter um sprvnupravit pouze CMC. Obsah souboru je nsleduj c (pozice jsou v datovm bloku -nap. v pamti - pozice v souboru z skme piten m esti): 0: Identifikace souboru (19 byt). Jedn se o inverzn text" cmc data file " doplnn jet o nkolik grafickch znak. $13: Tempo. $14: Adresy definic "pattern" - ni byty. $54: Adresy definic "pattern" - vy byty. Me jich bta 64, tato tabulka obsahuje absolutn adresy, na kterchp slun definice za naj . (To je tak dvodem, pro mus btsoubor pi pesunu na jinou adresu upraven CMC.) Przdn"patterny" nemaj definice, v tom p pad obsahuje vy byte vtto tabulce hodnotu $FF. $94: Definice nstroj - prvn tabulka. $130: Definice nstroj - druh tabulka. Nstroj je celkem26, kadmu z nich pat 6 byt v prvn tabulce a 8 byt vdruh. Prvn 4 byte z prvn tabulky odpov daj  dic m kdm,kter v CMC vid me na prav stran oknka "instr". Bity D2 a D3v prvn m bytu (kter nejsou v CMC bn p stupn) jsou vyuitypro jaksi intern ely, bity D3 a D4 ve druhm bytu (rovn vCMC nedostupn) pak definuj klouzav zvuky nahoru resp. dol,kter v CMC oznauje mal ipka. Zbvaj c 2 byty z prvn tabulky obsahuj tzv. akcenty - zobrazovan v CMC pod definic hlasitosti. Kad pozici p slu jeden bit, prvn je nejvy .Vech osm byt z druh tabulky pak obsahuje definici prbhuhlasitosti - dv pozice v jednom bytu, prvn je spodn polovina. $200: Prvn stopa "songu". $255: Druh stopa "songu". $2AA: Tet stopa "songu". Tyto stopy odpov daj temsloupcm v okn "song" v CMC, kad m 85 byt. Obsahuj  sla"pattern", nebo hodnotu $FF pro przdn pozice. Prvn stopame nav c obsahovat nsleduj c zvltn kdy: $8F: Stop (SHIFT S) $9F: Jump (SHIFT J) $AF: Relativn skok nahoru (SHIFT+U) $BF: Relativn skok dol (SHIFT+D) $CF: Nov tempo (SHIFT+T) $DF: Opakovn (SHIFT+R) $EF: Break (SHIFT+B) $FE: Przdn dek - bude peskoen Parametry jsou uloeny v dal ch stopch, stejn jako v okn"song" v CMC. $300: Zatek definic "pattern", dlka zvis na jejichpotu a obsahu. Pouit kdy jsou nsleduj c : $00-$19: Nastaven  sla nstroje pro dal tny $40-$7E: Tny ($40 je C-1, $41 je C#1 atd.) $80-$BD: Poet przdnch dk zvten o $7F $FF: Konec. P EHRVAC RUTINA Jak v me z nvodu, pehrvac rutina m na svm potku tiinstrukce JMP a ti promnn uren ke spoluprci s nad zenmprogramem (pozice jsou od potku pehrvac rutiny): 0: JMP rutina pro BASIC 3: JMP komunikan rutina 6: JMP pehrvac rutina 9: Hlasitost (3 byte pro 3 hlasy) Prvn rutina se vol z BASICu pro zahjen hudby p kazem USR(adresa pehrvac rutiny,  slo skladby, adresa hudebn hosouboru v pamti), pro ukonen pak USR (adresa pehrvac rutiny). Pokud je v souboru v ce skladeb, mus bt v okn "song"oddleny povelem SHIFT+S nebo SHIFT+B; v BASICu se  sluj odjedn. Druh a tet rutina slou pro prci v assembleru. Druhourutinu pou vme k ovldn pehrvae, tet mus me zaadit doobsluhy VBI, nebo ji jinm zpsobem pravideln vyvolvat.Nastaven registr pro druhou rutinu je nsleduj c : A=0, X= slo skladby (zde od 0) - Zahjit pehrvn  A=$10, X=pozice - Zahjit pehrvn  A=$20+ slo kanlu, X= slo tnu (zde od 0), Y= slonstroje - Vnucen ciz ho tnu do skladby (zvukov efekt) A=$30, X=tempo - Zmna rychlosti A=$40 - Konec pehrvn (ticho) A=$50 - Peruen pehrvn (nstroje dozn ) A=$60 - Pokraovn po peruen  A=$70, Y/X=horn /doln byte adresy hudebn ho souboru -Inicializace, MUS bt prvn operac ! To je ve, co se v nvodu doteme. Obvykle to sta , pokudvak chceme zvukov efekty synchronizovat s rytmem hudby, nebodokonce podle poteby pep nat rzn sti melodie, mus mekomunikan rutinu vyvolat "v prav as". Ten rozpoznme ten mnsleduj c ch vnitn ch pomnnch pehrvae: $0C: P t pozice v "patternu". Nula zde znamen, e jeteba pe st dal dek ze "songu" (to bv ten zm nn "pravas", je vak teba vz t v vahu tak  ta pro tempo). $0D: P t pozice v "songu" $3E:  sla "pattern" pro vechny ti kanly $55:  ta pro tempo. Po t pi kadm vyvoln pehrvac rutiny, od hodnoty "tempo" k nule. Ve uveden adresy se tkaj pehrvae, kter generuje CMCverze 2.0. Nev m, zda existuj jet jin verze, proto si radjiped pouit m uvedench informac  slo verze zkontrolujte! Zaj mavm p kladem pouit ve uvedench adres je hudba zehry HELIX, kter je zkomponovna ve 3/4 taktu. Jednoduch rutinaobsluhy VBI v tto he pinut pehrvac rutinu k peskakovn posledn tvrtiny kadho "patternu": VBI JSR REPLAY+6 LDA REPLAY+$0C EOR #$30 BNE VBIEXIT STA REPLAY+$0C VBIEXIT JMP $E462 Na zvr jet jedna rada: Pokud nepou vme BASIC, meme sklidnm svdom m pemazat st pehrvac rutiny (z CMC verze2.0) od pozice REPLAY+$75A do konce. Tato st obsahuje pouzepodprogram pro voln z BASICu. CHYBY P EHRVAE Pehrvac rutina z CMC bohuel obsahuje dv chyby, ktermohou zpsobit neoekvan reakce hudby na zmny v jinaknesouvisej c ch oblastech pamti. Nejastji se jedn opekvapiv "vkiky" v pauzch, kter se objev zpravidla poodklopen OS-ROM. Prvn chyba: Pehrva sprvn nerozpoznv przdn pozice v"songu", kter pak interpretuje jako podivn "pattern" z tmlibovoln adresy v pamti. Nprava: Instrukci CMP #$40 na pozici REPLAY+$409 zmnit naCPY #$40. (Autor se zjevn dopustil peklepu.) Druh chyba: Pokud je v "songu" specifikovn "pattern", kterje przdn, me bt pehrna nahodil sekvence z njak adresy$FFxx. Pehrva toti vbec nepo t s przdnmi "patterny",jejich oznaen hodnotou $FF m sto horn ho bytu adresyinterpretuje jako adresu $FFxx. Nprava: Ped sputn m hudby provst pravu hudebn ho souborupomoc nsleduj c rutiny. T m budou vechny przdn "patterny"nahrazeny spolenou definic , kter se skld pouze zezakonovac znaky. LDX #$3F LABEL1 LDY MUSIC+$54,X INY `abcdefgh BNE LABEL2 LDA #ADRFF:L STA MUSIC+$14,X LDA #ADRFF:H STA MUSIC+$54,X LABEL2 DEX BPL LABEL1 "MUSIC" je adresa hudebn ho souboru v pamti, "ADRFF" jeadresa jednoho bytu s hodnotou $FF - takov lze bu nalzt p mov souboru (vdy tam je, obvykle vyhovuje posledn byte), nebodefinovat v programu. Upraven soubor slou pouze k pehrvn ,jeho zptn zaveden do CMC je nep pustn! ZVREM Doufm, e informace uveden v tomto lnku tenm FLOPualespo trochu pomohou pi prci s CMC. V kadm p paddoporuuji pou vat ve vech programech popsan npravy chybpehrvae, protoe bez toho me hudba nevhodn reagovat natko definovateln skutenosti, jako je nap klad verze OS-ROMapod. Ji Bernek (BEWESOFT) POUIT LITERATURA[1] asopis TAJEMNICE ATARI 3/93 (Polsko), str. 4, DariuszZolna: Dokumentacja do CMC[2] nvod k CMC "PODRECZNIK UZYTKOWNIKA PAKIETU CHAOS MUSICCOMPOSER" (L.K.Avalon, 1992)jklmnopqrstuvwxyz{|}~FORMT SOUBOR KOALA-------------------- Na Atari XL/XE existuje pro ukldn obrzk cel ada rznchformt soubor. Mnoh z nich jsou velice jednoduch, mezinejpou vanj vak pat tak pomrn pokroil formt"Koala". Tento formt pochz z kreslic ho programu KOALAMICROILLUSTRATOR a postupn se roz il natolik, e dnes nechyb v nab dce naprost vtiny graficky zamench program.Populrn je tak d ky tomu, e ukld obrzky komprimovan aet tak dost podstatn m sto na disku. Ve se zd bt v podku, soubory jsou hladce penositelnvemi smry, ovem jen do chv le, kdy nkdo pouije tak pvodn KOALA MICROILLUSTRATOR. Tento program obas "vyplivne" soubor,kter jin software nedoke sprvn zpracovat. Pro? Je tojednodue t m, e pouze KOALA MICROILLUSTRATOR opravdu vyu vmonosti formtu Koala - ostatn programy mnoho vc prostpedpokldaj , a proto nkter mn obvykl varianty nedok zpracovat. Abychom mohli v budoucnu vytvet programy, kter podporuj "opravdov" formt Koala, pin tento lnek popis zm nnhoformtu. Kad soubor ve formtu Koala za n hlavikou, kter obsahujensleduj c daje:Pozice (hex) Funkce--------------------------------------- 0 - 3: Identifikace souboru Koala - vdy FF 80 C9 C7. 4, 5: Dlka hlaviky zmenen o 1 6: Verze formtu souboru - obvykle 1 7: Metoda komprese dat: 0, 1, nebo 2 8: Grafick reim pro ANTIC - obvykle 0E 9 - C: Poloha a velikost obrzku - obvykle 00 28 00 C0D - 11: Barvy (kopie systmovch promnnch $2C4-$2C8)12, 13: Dlka celho souboru zmenen o 114, 15: Vyhrazeno pro budouc vyuit - obvykle 00 00 16: Nzev obrzku - max. 14 znak, zakoneno $9B (EOL) ??: Jmno autora - opt 14 znak zakonench EOL ??: Dal dva dky dopluj c ho textu (kad max. 14 znaka EOL) ??: Konec hlaviky - vdy $A2 Dlka hlaviky zvis na textovch polokch na jej m konci,protoe vak (alespo pokud v m) dosud dn program tytopoloky nepou v, bv dlka obvykle $1B (texty jsou zastoupenypouze znakem EOL). Poloha a velikost obrzku jsou ureny tymi parametry vpoad X-zatek, X-konec, Y-zatek, Y-konec. Souadnice X jezde udvna v bytech, to znamen ve tveic ch pixel; koncovsouadnice jsou o 1 vt , ne posledn pozice obsazenobrzkem. Je mono definovat prakticky libovolnou obdln kovoust obrazovky, pi zavdn takovho souboru pak obrzekpep e jen st pvodn ho obsahu obrazovky. Metody komprese dat jsou nsleduj c : 0 - dn komprese, datase ukldaj normln zleva doprava a shora dol. 1 -komprimovan data, ukldaj se zpsobem typickm pro formtKoala (po jednobytovch sloupc ch zleva doprava, v kadmsloupci shora dol nejprve sud a potom lich dky), a konen2 - komprimovan data, ukldaj se normln zleva doprava ashora dol. Komprimovan data obsahuj dva druhy poloek:--- Nepakovan data - nejvy bit prvn ho bytu poloky jenastaven, zbytek tohoto bytu obsahuje dlku bloku. Data uvedendlky nsleduj za t mto bytem. Pokud je dlka definovan vprvn m bytu nulov, jsou mezi zm nn prvn byte a data vsunutyjet dal dva byty, kter pedstavuj skutenou dlku -tentokrt estnctibitovou, prvn je vy byte (!).--- Pakovan data - struktura je prakticky stejn jako u datnepakovanch. Nejvy bit prvn ho bytu je vak nulov a datovbyte je vdy jen jeden - zapln cel blok. Vechny n e uveden p klady znamenaj dva byty s hodnotouFF:82 FF FF (Nepakovan blok)80 00 02 FF FF (Dlouh nepakovan blok)02 FF (Pakovan blok)00 00 02 FF (Dlouh pakovan blok) Prv popsan formt Koala je schopen vyjdit praktickyjakoukoliv obdln kovou st obrazovky v jakmkoliv grafickmreimu, i s pipojenm nzvem a dal mi daji o pvodu obrzku.V praxi bohuel zat m neexistuje program, kter by souasnobslouil vechny dostupn monosti. Relativn nejlpe je na tomzm nn pvodn KOALA MICROILLUSTRATOR, kter pi ten ignorujepouze  slo grafickho reimu a textov dky, pi zpisu dvvdy celou obrazovku v reimu $0E (odpov d GRAPHICS 15+16) beztextov informace. Ostatn dostupn programy bohuel v naprostvtin p pad ignoruj ve mimo barev a vlastn ch dat -nerozpoznvaj dlku hlaviky ani metodu komprese dat, ografickm reimu a velikosti obrzku ani nemluv. Pozorn ten si jist viml, e popsan pvodn formt Koalaneumouje pouit zvltn ch grafickch reim obvodu GTIA(t.j. GRAPHICS 9 a 11). Proto Tomasz Tatar z Polska navrhl a vesvm programu SHOW 2.0 hend tak obslouil formt "Koala verze2". V tomto formtu je  slo verze (pozice 6) rovno dvma, aprvn z rezervovanch byt (pozice $14) obsahuje ve spodn chdvou bitech identifikaci GTIA reim - t.j. obsah horn ch dvoubit registru PRIOR ($D01B, st n. $26F). Tato verze sice nebyla uvedena pvodn mi autory formtu Koala(kdo v , kde firma Island Graphics skonila...), pesto vak lzevele doporuit jej pou vn . Pro sluitelnost mezi rznmiprogramy je takov definice rozhodn lep ne nic. Na zvr se jet zm n m o chybch, kter obsahuje programKOALA MICROILLUSTRATOR, a hlavn o zpsobu jejich npravy. Chybve zm nnm programu nen zrovna mlo; ukldn obrzk na diskse tkaj ti z nich.--- Nesprvn obslouen dlka hlaviky znemouje ten soubors textovmi informacemi. Nprava: Kd od adresy $4AA0 zmnit z20 F8 48 A5 8C D0 04 C6 8D 30 05 C6 8C na A5 8C D0 04 C6 8D 3008 C6 8C 20 F8 48.--- Pi pouit metody komprese dat 0 (bez komprese) nen obslouena velikost a poloha obrzku - te se vdy celobrazovka. Na to nen dn jednoduch oprava, v praxi to vakp li nevad .--- Pi ukldn obrzku, pro kter je vhodn metoda komprese 0,pid program v dsledku chyby mezi hlaviku a data spoustunesmyslnch byt. Zptn naten takovho (nav c velice dlouhho- asi 30kB) souboru je nemon. Nprava: Byte na adrese $4981zmnit z $C9 na $C0. Pokud si chcete vyzkouet, kter zavade formtu Koala zanco stoj , a kter jsou k niemu, ulote si z KOALAMICROILLUSTRATORu ti soubory: Normln obrzek (pouije metodukomprese 1), irok vodorovn pruhy (pouije metodu 2) a nhodnobsah obrazov pamti (pouije metodu 0 - pro rychl z skn nhodnho obrzku zkop rujte 7680 nhodnch  sel do souboruD1:PICTURE a v KOALA MICROILLUSTRATORu stisknte pi zobrazen editan plochy klvesu "<"). Pokud jste pouili programopraven podle pedchoz ho odstavce, z skte ti zkuebn soubory, kter mete na zkouku "pedhodit" nejrznj mzavadm formtu Koala. Mly by se sprvn zobrazit vechny, vpraxi vak naprost vtina program zobraz pouze prvn znich... Ji Bernek (BEWESOFT)DROBNOSTI O SPARTADOSu---------------------- Jak mon v te, vytvoil jsem ped asem nov DOS proosmibitov Atari - BW-DOS. Tento systm se sna o maximln kompatibilitu se SpartaDOSem pi minimln dlce programu. Aprv kvli zm nn kompatibilit jsem bhem programovn provdl rozshl srovnvac testy se SpartaDOSem, pi kterchvylo najevo mnoho zaj mavho tak o nm. Tyto informace se vakdo nvodu k BW-DOSu tmaticky nehod , take jsem dlouho nevdl,co s nimi, a nechal je povalovat na "hald" odloench pap r.Nakonec jsem usoudil, e by bylo koda je navdy utopit vezm nn "hald", a zaal jsem tedy pst tento lnek. SpartaDOS je jedn m z nejlep ch DOS pro Atari XL/XE,prakticky jedin opravdu "dospl" systm na tomto po tai.Proto si ho obl bilo mnoho uivatel, zvl ti pokroilej aprogramtoi. Nejvt roz en doshl na americkm kontinentu. SpartaDOS bohuel obsahuje tak rzn chyby a nedostatky,kter dok prci s n m as od asu podn znep jemnit.Nejlep m een m tchto situac je prevence. Pokud o chybchv me, meme pedchzet vzniku rizikovch situac , a nsledkychyb t m eliminovat. Prv proto nyn uvedu seznam chyb a nedostatk SpartaDOSu.Vztahuje se k verz m SpartaDOSu 3.2d, 3.2e, 3.2f a z vt stii 3.2g. SpartaDOS uvedench verz obsahuje nsleduj c - v ce imn zvan - chyby:--- Chyba ve vnitn struktue SpartaDOSu zpsobuje v uritsituaci znehodnocen adres a t m neitelnost diskety. Kdonev , a si pod SpartaDOSem nkter z ve uvedench verz zkus nsleduj c : Zformtujeme dv diskety, na kadou z nichulo me na zkouku nkolik soubor. Na disketu .2 um st menjakou men utilitu, kter je uloena jako jeden dlouhsegment s vektorem RUN, a umouje ukldn dat na disk(nap klad polsk ED.COM od Janusze B. Winiewskho). Nyn vyp eme adres diekty .1, vlo me disketu .2 a okamitspust me (zadn m nzvu) nai utilitu. Vrt me do disketovjednotky disketu .1 a ulo me na ni njak data. Vysko me doDOSu a prohldneme si znien adres... Jedn se o zvanou chybu ve vnitn stavb SpartaDOSu. Rutinapro zavdn programovch soubor je jednou z intern ch rutinsystmu FMS (diskovho handleru), co je chyba - tato rutinatoti p mo spout zavdn programy pes vektory RUN a INIT(jsou-li definovny), co vede k "ilegln mu" oputn systmuFMS bez korektn ho zakonen operace LOAD. V dsledku tohonejsou do p slunch promnnch zaneseny p padn zmny, kterv prbhu operace LOAD nastaly, zejmna p padn vmna disketyproveden bezprostedn ped LOADem (identifikace nov diskety).Pokud pak do disketov jednotky vrt me pvodn disketu, jej identifikace zstala v promnnch, je obsah sektorovch bufferpovaovn za platn (dn vmna diskety), a pi zpisunjakho souboru je po prav "vrcen" na disketu - veskutenosti ovem na jinou!!! Tento podivn "sektorov kop rk"obvykle postihuje hlavn adres, kter zstv v bufferechnejastji a na rznch disketch vtinou souhlas i jehoum stn . Prevence je pomrn jednoduch. Nezbytnou podm nkou pro vznikpopsan situace je proveden operace LOAD ihned po vmndiskety - tomu je teba zabrnit. Sta po vmn disketynap klad nahldnout do adrese.--- Intern povel BASIC ve SpartaDOSu netestuje skutenouvelikost dostupn pamti RAM - pro um stn obrazovky pou vkonstanty $A000 pro "BASIC ON" a $C000 pro "BASIC OFF". Je-lipipojena njak cartridge, dojde po "BASIC OFF" ke koliziobrazov pamti s ROM cartridge, t m ke zhroucen funkceza zen "E:" a neovladatelnosti systmu. Tato situace hroz zejmna pi kombinaci cartridge a BOOTu z diskety, jej  souborSTARTUP.BAT obsahuje "BASIC OFF". Prevence: Pi pouit cartridge se pesvdit, e dn zpouitch dvkovch soubor (zejmna STARTUP.BAT) neobsahujepovel "BASIC".--- Program CLEANUP.COM vytv po zpisu oprav na diskpedpoklady pro zablokovn po tae - pokud je instalovnjakkoliv rezident. Jedn se o hrubou nedbalost autora tohotoprogramu. Protoe CLEANUP zapisuje zmny p mo pes SIO,potebuje njak zabrnit DOSu v pouit starch sektor, kterjet me m t v bufferech. Sprvn by to ml udlat zmnousekvenn ho  sla diskety (DOS by pak identifikoval vmnudiskety), CLEANUP toho vak dosahuje vyvoln m proceduryDOS-INIT. Jedn se o dosti svrzn een (jako vedlej inekzastav dvkov soubor, vyist buffer klvesnice atd. atd.),jeho pouit je vak mon. "Kmen razu" je ovem ve zpsobu,jakm CLEANUP tento podprogram vol: M sto sprvnho skoku naadresu uloenou v promnn DOSINI ($0C), pou v CLEANUPilegln "tvrd" skok na adresu $7E0! Tato adresa je sice vnaprost vtin DOS zatkem zm nn inicializan rutiny,nezahrnuje vak p padn instalovan rezidenty. A to je prvono: CLEANUP inicializuje pouze samotn DOS - bez rezident -co vede k nesprvnmu nastaven promnn MEMLO, kter paknechrn rezidenty ped pepsn m (nap. pi kop rovn ). Prevence: Ihned po pouit programu CLEANUP stisknout klvesu. (T m probhne sprvn inicializace systmu, kterrizikov stav odstran .)--- Rutina ZDIVIO, kter je urena ke spoutn dvkovchsoubor a funkce HardCopy, a je uivatelskm programm p stupnpes stejnojmenn vektor v tabulce COMTAB, ve SpartaDOSunesprvn obsluhuje chybov stavy. Pokud dojde pi otv rn souboru k chyb (sta peklep v nzvu dvkovho souboru),SpartaDOS m sto pedn chybovho kdu volaj c mu programuvyp e na obrazovku chybov hlen a "spadne" do CP. Pokud pedt m uivatelsk program otevel njak soubory, nem u anci jelegln uzav t - pokud byly oteveny v IOCB .3 a vy m,neuzave je ani CP... Prevence: Pi psan program pou vaj c ch ZDIVIO je vhodnnenechvat pes voln zm nnho vektoru dn soubory oteven.--- Intern buffer, ve kterm funkce ten formtovanhoadrese sestavuje jednotliv dky vpisu, koliduje veSpartaDOSu s koncem bufferu LBUF (buffer zadanho p kazu v CP).Je-li zadan dek dlouh, dojde pi proveden operace OPEN saux1=6 k pepsn jeho konce, a t m p padn i k chybninterpretaci zadanch parametr. Prevence: Pi psan extern ch povel nejprve pevz t vechnyparametry, teprve potom otev rat sobory.--- Obslun program ramdisku RD.COM zaloen ramdisk nesprvnformtuje. Bitov mapa je generovna o jeden bit krat , co vnkterch p padech (ramdisk 256kB) vede k rozd lu jednohosektoru na dlce bitov mapy a t m k formln kolizi bitov mapys hlavn m adresem. V praxi se tento problm obvykle nijakneprojevuje, formln nedostatky v bitov map vak trvaj amohou se stt p inou chybn funkce nkterch utilit. Nav c jepi formtovn chybn nastavena dlka hlavn ho adrese - to sevak oprav samo zpisem libovolnho souboru nebo podadrese. Prevence: Nepou vat v ramdisku sektorov orientovan utility,nebo nepou vat RD.COM. T m kon prvn st tohoto lnku - seznam chyb SpartaDOSu.Na adu te pichz pehled dal ch nedostatk tohoto DOSu,kter sice nejsou p mo chybami v programu, mohou vakprogramtora nemile pekvapit. Jedn se vtinou o rzn drobnopomenut autor SpartaDOSu, kte nkter funkce nedothlizcela do konce.--- Ve formtovanch vpisech adrese jsou nkter  slanevhodn zkrcena. Dlka soubor v "dlouhm" vpisu je o znutana 6  slic, co dv nesprvn daj pro vechny soubory od1000000 byt ve. "Krtk" vpis podobnm zpsobem zkracujepoty sektor (u soubor, i voln sektory) na 3  slice - 1000volnch sektor se tedy zobraz jako 000, co me nkterprogramy pivst k domnce, e disketa je pln.--- P kaz TYPE je ve SpartaDOSu omezen na soubory, kterneobsahuj dky del ne 64 znak (jinak hls chybu 137).--- P kaz COPY nikdy nehls chybu 170 (soubor nenalezen) amn obsah pt strnky pamti (sestavuje zde nzvy soubor).--- Program CLEANUP hls v ramdisku neexistuj c chyby.Ramdisky nepotebuj BOOTov zavac, a proto m vaj bitovoumapu obvykle um stnu ji v sektoru .2 - to CLEANUP odm tpochopit. Pi vpotu volnch sektor ode t sektory 2 a 3 vdyjako BOOTov, v ramdisku pak jet znovu jako bitov mapy -dsledkem je odlin poet volnch sektor. Dle CLEANUP nerozpoznv nkter chyby - nekontroluje totihlaviky podadres (unikne mu chybn odkaz na nad zenadres nebo chybn nzev adrese).--- P kaz XINIT nedoke na vtin konfigurovatelnchdisketovch jednotek (vetn XF-551) formtovat roz enouhustotu. Pokou se to toti provst pomoc povel 'O' a '!',co na vtin jednotek nejde (sprvn povel je '"'). Dle XINITpi kop rovn nezachovv datum a as DOSovho souboru.--- BOOTov rutina, kterou vechny verze SpartaDOSu (vetncartridge SpartaDOS X) ukldaj na formtovan diskety, nen pln sluiteln s disketovou jednotkou XF-551. Pokud pou vmetuto jednotku, poda se prvn BOOT z dvojit hustoty anapodruh, a DOSov soubor nesm leet na druh stran diskety.--- Rezidentn povely dodvan se SpartaDOSem (nejen) se nebrn v censobn instalaci (mnohdy pak jednotliv kopie thorezidentu navzjem koliduj ), a nelze je odstraovat z pamti.--- Pi zavdn strojovho programu - a hlavn pi provdn jeho INIT rutin - m bt IOCB .1 oteven pro ten zprogramovho souboru. (Toho vyu v nap. Turbo Basic, ktersvoji druhou st zavd sm - p mo pod OS-ROM.) PodSpartaDOSem tento IOCB oteven nen .--- SpartaDOS se nebrn oteven v ce formtovanch vpisadrese souasn, co vak nedoke sprvn obslouit. Protoeje k dispozici jen jeden dkov buffer, "prosakuj " sti obouvpis do sebe.--- Vtina DOS vrac po peten posledn ho byte v souborustatus 3. SpartaDOS nikoliv.--- P m p stup k adresm m pod SpartaDOSem nkternep jemn omezen . Reim aux1=8+16 (pepsat adres) se podSpartaDOSem chov stejn jako 12+16 (aktualizace adrese) -nedochz ke zruen starch dat, kter mohou pi zpisukrat ho adrese pes del sten zstat na jeho konci.Reim 12+32 (aktualizace podadrese) je v podstat nefunkn -pokud toti podadres ji existuje (pro bychom ho jinakaktualizovali?!?), skon operace s chybou 151 (nelze pepsat). Vechny reimy aux1+16 pracuj s adresem urenm jen cestou,nzev souboru ignoruj . Pod SpartaDOSem vak mus bt i pestop tomen syntakticky sprvn nzev - proto je vhodn za cestuvdy pidvat alespo "*.*". Pouijeme-li reimy aux1+32 kzaloen novho podadrese, neprovede SpartaDOS tuto operacikompletn - zalo jen adresov soubor, ani by do nj vloilsprvnou hlaviku podadrese.--- Obsluha alokan ch ukazatel - pozice 18 a 20 v sektoru 1 -je ve vech dosud znmch verz ch SpartaDOSu (vetn SpartaDOSuX) znan nedotaen. Tyto ukazatele oznauj m sto na disket,od kterho se za n hledat voln sektor pi roziovn souboruresp. podadrese. Pi zpisu novch soubor a podadres se spostupnm obsazovn m diskety zvyuj , pi mazn je teba tytoukazatele naopak sniovat. SpartaDOS je pi uvolovn kadhosektoru vrac na  slo tohoto sektoru, piem rozlien mezioblast adres a dat se provd porovnn m s ukazatelem propidlovn adres. Protoe se ale obvykle sektory uvoluj vevzestupn  slovanch skupinch (soubory a adrese), pi mazn adres podle tto metody bude ji druh sektor nad (novou)hodnotou "adresovho" ukazatele - posunut bude tentokrtukazatel "datov". T m se oba ukazatele dostvaj na tmstejnou hodnotu, a pestvaj oddlovat adrese a data dorznch oblast na disket. Nov sektory adres i soubor sezanou pidlovat prom chan, co po ase vede k "rozhzen "adres po cel disket a pomalmu p stupu k nim.--- Obsluha za zen "E:" pi prci dvkovch soubor je veSpartaDOSu vyeena zpsobem, kter nepipout korektn instalaci novch driver "E:". (Rzn urychloae vstupu naobrazovku, kter se SpartaDOSem funguj , jsou obvykle eenymetodou ilegln ch zsah p mo do programu SpartaDOSu - fuj...) Informace uveden v tomto lnku si v dnm p pad nekladouza c l SpartaDOS njak "oernit". Jejich elem je upozornituivatele na rizikov situace, kterm je lep se vyhnout, azvit tak bezpenost a efektivitu jejich prce se SpartaDOSem.Jinou monost je pechod na BW-DOS, kter je se SpartaDOSem doznan m ry sluiteln a uveden chyby a nedostatky samozejmnem, v tom p pad se vak mus uivatel sm it s ponkudmen m okruhem dostupnch funkc . Ji Bernek (BEWESOFT)C      !"#$%&'()*+,-./0123456789:;<=>?@ABZVUK NA ATARI XL/XE------------------- VOD Snad kad, kdo p e programy alespo o trochu zbavnj neje teba etnictv , se u setkal s problematikou programovn zvuku. Nkdy je een jednoduch, jindy nen . Starosti spehrvn m doprovodn hudby ochotn pevezme nkter z mnohahudebn ch editor, rzn cinknut a vbuchy snadno stref me iodhadem. Tady problmy nebvaj . Hor to bv s rznmi melodickmi sekvencemi, kter maj reagovat teba na situaci ve he, a nedaj se proto pedemnadefinovat v hudebn m editoru. Tady nm nezbv nic jinho, nedo programu vloit tabulku kmitot hudebn ch tn a pracovatp mo se zvukovmi registry obvodu POKEY. Tabulku pro ist tnynajdeme v kad p ruce (pozor, bv urena pro po taeamerick verze NTSC - u ns je posunut asi o 16 cent dol),jakmile se ale rozhodneme pou t i jin zabarven zvuku,naraz me na nco jako informan embargo. Dosud jsem nevidl ani jeden dvryhodn a hlavn kompletn popis zvukovho vstupu po ta Atari. V literatue se obvyklesetkvme jen s mlhavmi zm nkami o polynomickch  ta ch,filtrech apod., zvislost vslednho zvuku na nastaven registrje pak popsna formulacemi typu "zvuk podobn vkonovmutransformtoru", nebo teba "vodopd". To je pro exaktn vpoetkmitotu (potebn k sestaven tabulky hudebn ch tn) alostnmlo. Mnohdy dostupn texty bud dojem, e autor erpal znjakho opravdu solidn ho cizojazynho materilu, kter ovemnepochopil pln a nav c i zkrtil, take z pvodn informacemnoho nezbylo. Neuten stav dostupn literatury snad nejlpedokumentuje p klad: Z rznch pramen lze posb rat nejmn ptrznch hodnot zkladn ho hodinovho kmitotu. Babo ra... Dal m problmem mohou bt hudebn ky pou van jednotky jakonap. pltn i cent, jejich pevod na technick veliiny(kmitoet) bv pro nezasvcen mnohdy neeitelnm rbusem. Ped asem jsem se rozhodl, e si ve ve uveden problematiceudlm jednou provdy jasno. Posb ral jsem maximum informac zdostupn literatury, na nkolik dn se pohrouil do experimentpod ATMASem - a vsledek se dostavil: U mm jasno! Rd bych se nyn o vsledky svho bdn podlil i se teniFLOPu. Soud podle hudebn ch skladeb v dostupnho softwaru,mnoz u asi tuto problematiku zvldli. Neuten stavliteratury vak napov d, e vtina Atarist dosud tpe. Prvpro n je uren nsleduj c pokud mono podrobn popis. "HUDEBN " JEDNOTKY Jak znmo, hudebn ci rozdluj slyiteln rozsah kmitot naoktvy (subkontra, kontra, velk, mal a jedno- atyrkovan), z nich kad se skld z 12 pltnpojmenovanch C(=H#), C#=Db, D, D#=Eb, E(=Fb), F(=E#), F#=Gb, G,G#=Ab, A, A#=Hb, H(=Cb). Pi ladn hudebn ch nstroj, kdy potebuj pojmenovat dalekomen rozd ly kmitot ne je pltn, pou vaj hudebn cijednotku nazvanou cent. Jeden cent je definovn jako jednasetina pltnu; odtud snadno odvod me e pltn = 100 cent aoktva = 1200 cent. Zkladem ladn je jednorkovan A (tzv. komorn A), kter mkmitoet 440Hz. Oktva, pltn a cent jsou jednotkylogaritmick, co znamen e je nepi tme a neode tme, nbrjimi nsob me a dl me. Rozd l jedn oktvy znamen dvojnsobnkmitoet. Z toho u snadno odvod me: 1 oktva = *2 1 pltn = *2^(1/12) 1 cent = *2^(1/1200) Podle ve uvedench vztah lze snadno vypo tat konkrtn kmitoty vech tn, tuto prci vak penechme radji po tai(bude to rychlej ). ZVUKOV VSTUP ATARI XL/XE Kdy znme kmitoty, kter od po tae poadujeme, zbvstanovit odpov daj c nastaven zvukovch registr. K tomupotebujeme znt zvislost vstupn ho signlu na nastaven registr, nebo jet lpe p mo strukturu zvukovch genertor. Blokov schma, kter popisuje zvukov genertory (a jejichvazby na systm sriovho penosu, peruen IRQ aj.), je naobrzku - viz. soubor ZVUK.PIC (DESIGN MASTER). Tady by vlastnmohl lnek konit - ze zm nnho obrzku lze odvodit ve dal :-) ASOV ZKLADNA A  TAE Obvod POKEY je taktovn stejnm hodinovm kmitotem, jakomikroprocesor. V systmu PAL se jedn o kmitoet 1773447 Hz, proamerickou verzi NTSC je to 1789772.5 Hz. Vechny zvukov kanly je mono taktovat kmitotem cca. 64kHz(hodinov kmitoet dlen 28), cca. 15kHz (hodinov kmitoetdlen 114), kanly 0 a 2 pak tak p mo zkladn m hodinovmkmitotem. Kad ze ty zvukovch genertor obsahuje osmibitov  ta,kter po nastaven na hodnotu uloenou v registru AUDFn po tdol a po peteen (pechodu z 0 na 255) generuje na vstupuimpuls. Tento impuls je dle zpodn o 3 hodinov cykly. Vzkladn m reimu (osmibitov  tae) zpsob tento impulsoptovn nastaven  tae na hodnotu AUDFn. Pi taktovn kmitotem 64kHz nebo 15kHz tedy  ta dl vstupn kmitoet vpomru AUDFn+1 ( ta po t "vetn nuly", zpodn o 3 cyklyje zde nepodstatn), pi taktovn 1.79MHz pak v pomru AUDFn+4. Dvojice kanl 0+1 nebo 2+3 lze propojit na jedenestnctibitov  ta. Druh z obou kanl je pak taktovnvstupem prvn ho; vstup druhho slou jako vstup celho tae a nastavuje oba kanly na vchoz hodnotu. (Impulsy navstupu prvn ho kanlu jsou nepravideln, prvn z nich pichz po dob uren jeho registrem AUDFn, dal pak vdy po 256cyklech a do dobhnut cel periody.) Ni polovinuestnctibitovho dlic ho pomru zapisujeme do registru AUDFnprvn ho  tae, vy polovinu pak do druhho. Pi taktovn kmitotem 1.79MHz se projev t cyklov zpodn vstupu obou ta, take dlic pomr bude AUDFn+7. Vechny  tae lze kdykoliv inicializovat na vchoz hodnotuzpisem libovoln hodnoty do registru STIMER. PRAVA SIGNLU PRO ZVUK Pro vytven zkreslench (umovch) signl jsou k dispoziciti polynomick  tae - 4-bitov, 5-bitov a 17-bitov, z nichposledn jmenovan lze pepnout na 9-bitov. Tyto  tae seskldaj z posuvnho registru p slun dlky - taktovanhozkladn m hodinovm kmitotem - a hradla EX-OR, kter dodv navstup posuvnho registru kombinaci dvou jeho stup. Tyto  taedvaj nepravideln signl, jeho opakovac perioda je (2^n)-1cykl, kde "n" je poet bit poly- tae. (Nap klad 4-bitovpoly- ta generuje opakuj c se sekvenci 100010011010111;pesnou funkci vech poly- ta lze odvodit z obrzku.) Kad zvukov kanl obsahuje svj obvod zkreslen , kterrznmi zpsoby (v zvislosti na horn ch tech bitech registruAUDCn) vzorkuje vstupy poly- ta v rytmu danm p slunm taem; pro ist tny tento obvod funguje jen jako dlikadvma. Kanly 0 a 1 maj dle zaazeny filtry taktovan kanly 2resp. 3. Pesnou funkci tchto obvod nejlpe vysvtl schma(viz. obrzek), slovn popis by byl asi nepehledn. Vstup z ve popsanch obvod v kadm kanlu sp n 4-bitovD/A pevodn k, co umouje ovldn hlasitosti v 16 stupn ch.Mon je i trval sepnut , nezbytn pro vyuit pevodn ku kpehrvn sampl. DAL FUNKCE A VZTAHY Obvody zvukovho vstupu jsou na nkolika m stech provzny sdal mi funkn mi celky obvodu POKEY - Sriov penos, peruen IRQ, a A/D pevodn ky pro potenciometry (PADDLE). To je dobrznt, nebo z toho pramen dal monosti, ale i nkteromezen . Vstupy  ta 0, 1, nebo 3 mohou bt zdrojem peruen IRQ(pokud je povoleno). V tomto reimu slou  tae jako asovae,co ovem nijak neomezuje jejich zvukov monosti. K pesnmustartu  ta se pou v registr STIMER. Obvody sriovho penosu dat mohou bt taktovny vstupem tae 1 nebo 3. Pokud je nastaven reim asynchronn ho p jmu(kter lze taktovat pouze  taem 3), budou  tae 2 a 3blokovny na sv vchoz hodnot a do p chodu START-bitu. T mse provd synchronizace tec ch obvod s pichzej c m signlem- impulsy se na vstupu  tae 3 objevuj pouze v okamikusn mn daDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~tovch bit ze sriov linky. Z toho pramen omezen pro vytven zvuku: Pokud je registremSKCTL nastaven reim asynchronn ho sriovho p jmu, zvukovkanly 2 a 3 bu nefunguj (klid na vstupn datov lince), nebodvaj nepravideln impulsy synchronizovan s pichzej c msriovm signlem. Kanl 2 je bohuel blokovn i pi taktovn sriov komunikace pouze osmibitovm dliem 3 - zde se zjevnpo talo pouze s pouit m pesnj ho estnctibitovho  tae. Pi pouit dvojtnovho reimu vys ln se na sriovmvstupu objevuj kmitoty zvukovch kanl 0 a 1. Na tentovstup nemaj registry AUDCn dn vliv, jedn se vdy o isttn (vstup  tae dlen dvma).  tae A/D pevodn k pro potenciometry (PADDLE) mohou bttaktovny bu kmitotem 15kHz, nebo 1.79MHz. Tyto kmitotypochzej z tho zdroje, jako taktovn zvukovch  ta, ajsou s nimi tedy synchronn . Registr RANDOM, uren k z skvn nhodnch  sel, sn mprvn ch osm bit 17-bitovho (resp. 9-bitovho) poly- tae.Hodnota zde roluje v rytmu hodinovch cykl od vy ch bit kni m. Perioda opakovn je ovlivnna pep nn m mezi17-bitovm a 9-bitovm poly- taem. Obvod POKEY nem hardwarovou inicializaci (RESET), vchoz nastaven se provd zpisem nul do spodn ch dvou bit registruSKCTL. Tento stav nijak nemn nastaven zvukovch registr,blokuje vak p sun hodinovch impuls pro zvukov  tae (a t mi pro  tae PADDLE), take se vstupy  ta zpouj . To vakneplat pro p m taktovn kmitotem 1.79MHz - v tomto p pad tae blokovny nejsou. Dal funkc inicializan ho stavu je nastaven poten hoobsahu poly- ta. Inicializan stav vnut na vstupy jejichposuvnch registr jedniky, kter pak v rytmu hodinovch cyklpostupn zapln vechny jejich bity. T m je v inicializan mstavu paralyzovna i funkce registru RANDOM, kter se po zruen inicializace rozbhne vdy od stejnho m sta svho funkn hocyklu. VOD K VPOTM Pro hudebn vyuit pichzej mimo istch tn v vahureimy (AUDCn) $Cx (4-bitov poly- ta), $6x nebo $2x (5-bitovpoly- ta) a $8x (po pepnut 9-bitov poly- ta). 4-bitov a9-bitov poly- ta poskytuj "prom chan" ti rzn barvyzvuku, 5-bitov jen jednu. Dal monosti nab z pouit filtr. Obvykle pou vme isttny, piem zapisujeme do "taktovac ho" kanlu hodnotu"zkladn ho" kanlu zvenou o 1. Dv rzn barvy zvuku z skmeaktivac pouze filtrovanho kanlu (druh m nulovou hlasitost),nebo obou. Jinou monost je filtr vbec nepou t, a zaj mavzabarven zvuku z skat prostm souzvukem obou bl zkch kmitot.Vechny ti monosti jsou vzhledem ke vznikaj c interferencipouiteln pouze pro nejni tny (mal rozd l sousedn chkmitot). T m nejsou zvukov monosti ani zdaleka vyerpny, pouit dal ch reim (ostatn kombinace poly- ta, jejich kombinaces filtry) vak dv natolik nepravideln zvuky, e o hudebn mvyuit neme bt vbec e. V dal m textu se budeme zabvat vpotem vslednho kmitotuz hodnoty registru AUDFn v rznch reimech. V p pad pouit poly- ta je prakticky jedinou monost , jak z skat optimln hodnotu, postupn pibliovn - o klasickm zaokrouhlovn neme bt ani e, protoe prbh kmitotu v zvislosti nahodnot AUDFn nen spojit. Pi pouit poly- ta mus me sledovat vzjemn vztah periodyzvukovho  tae, kterm vzorkujeme, a opakovac periodypoly- tae. Od periody zvukovho  tae nejprve odeteme celnsobky periody poly- tae, zbytek pak s touto periodouporovnme. Nejsou-li tato  sla soudln, z skme na vstupu kmitoetvydlen dlkou periody poly- tae. (Vstupn signl obsahuje vkad period pln poet vzork z poly- tae.) Jsou-li ob  sla soudln, z skme kmitoet dlen pomrem:perioda poly- tae / zbytek periody zvukovho  tae. To jetak poet vybranch vzork ze signlu poly- tae, kter tvo periodu vstupn ho signlu (nkter fze poly- tae se pivzorkovn pravideln peskakuj ). Vsledn zvuk je mnzkreslen, jaksi "mkk". Posledn monost nastane, je-li perioda zvukovho  taensobkem opakovac periody poly- tae. V tom p pad se navstupu neobjev dn signl (vzorkujeme stle stejn bodperiodickho vstupn ho signlu poly- tae). VPOTY Abychom snadno postihli vechna pouiteln zabarven zvuku,rozdl me si vpoet kmitotu na dv sti. Nejprve ur meperiodu na vstupu zvukovho  tae, pak vstupn kmitoet prokonkrtn zabarven . Perioda zvukovho  tae je pro 8- a 16-bitov  taetaktovan rznmi kmitoty nsleduj c : 8-/16-bit.  ta, 64kHz: T=(N+1)*28 8-/16-bit.  ta, 15kHz: T=(N+1)*114 8-bit.  ta, 1.79MHz: T=N+4 16-bit.  ta, 1.79MHz: T=N+7 "T" je vsledn perioda (v hodinovch cyklech), "N" je hodnotauloen do registru AUDFn (p padn jejich dvojice - pro16-bitov  ta). Pou vme-li zvukov  tae jako asovae,bude doba mezi dvma peruen mi IRQ rovna prv tto period. Bude-li "F" hodinov kmitoet, pro ist tny (reimy $Ax nebo$Ex) vyjde vstupn kmitoet nsleduj c : X=F/(T*2) 4-bitov poly- ta (reim $Cx) m opakovac periodu 15 cykla poskytuje celkem ti rzn zabarven zvuku. Pro periodu, kterje nsobkem pti, vychz vsledn kmitoet: X=F/(T*3) Pro periodu, kter je nsobkem t to bude: X=F/(T*5) A konen pro periodu, kter nen nsobkem t ani pti: X=F/(T*15) Perioda nesm bt nsobkem patncti. Kad ze t uvedenchmonost dv jinou barvu zvuku - "nejtvrd " je posledn znich. Prvn z uvedench monost je ponkud problematick. Poetvzork odeb ranch z poly- tae v kad period je tak mal(ti) e pi uritm fzovm posunu mezi obma  tai (zvukovma poly-) me bt vstup nulov (ti odeb ran vzorky jsoushodn). Pravdpodobnost tohoto stavu bohuel nen zrovnazanedbateln (sp  naopak), co pouit tto varianty praktickyvyluuje. Nav c pi taktovn zvukovho  tae kmitotem 15kHztato varianta nefunguje vbec, nebo pedazen dlic pomr 114je nsobkem t a nepipout tedy periody, kter by bylynsobky pti a souasn nebyly nsobky patncti. 5-bitov poly- ta (reim $6x nebo $2x) m periodu 31 cykl.Protoe se jedn o prvo slo, dv 5-bitov poly- ta pouzejedno zabarven , prbh kmitotu v zvislosti na AUDFn je tmspojit. Signl z tohoto poly- tae prochz nav c vevzorkovac m obvodu dlikou dvma, take konen kmitoet je: X=F/(T*31*2) Perioda samozejm nesm bt nsobkem 31. 9-bitov poly- ta (reim $8x pi nastaven bitu 7 v AUDCTL)m periodu 511 cykl - z toho vychz opt ti monosti. Properiodu, kter je nsobkem 73 je kmitoet: X=F/(T*7) Pro nsobek sedmi je to: X=F/(T*73) A konen pro periodu, kter nen nsobkem dnho z uvedench sel: X=F/(T*511) Perioda nesm bt nsobkem 511. Prvn z ve uvedenchmonost s sebou pin podobn skal jako prvn varianta u4-bitovho poly- tae: V zvislosti na fzovm posuvu mezizvukovm a poly- taem me bt nkdy vstup nulov. Zm nnprvn monost nav c nefunguje pi taktovn zvukovho kanlu ze64kHz - pedazen dlic pomr 28 je nsobkem sedmi, proto jsouvechny dostupn nsobky 73 souasn i nsobky 511. Pouit 9-bitovho poly- tae nelze obvykle v hudbkombinovat s "bubnovn m" (mimo samplovanho), nebo dn reimmimo 17-bitovho poly- tae (nyn zmnnho na 9-bitov) nedvdostaten nhodn signl - bic bez nj rzn "sk pou" nebo"hu ". Zbv jet 17-bitov poly- ta, jeho vstup vak nen prohudbu vhodn kvli velice dlouh period. Ta in 131071 cykl(prvo slo), take nejvy dosaiteln opakovac kmitoet navstupu je asi 3Hz... PROGRAM V BASICU P lohou tohoto lnku je krom ji d ve zmiovanho obrzkutak program v ATARI BASICu nazvan FREQ.BAS, kter vCytv tabulky hudebn ch kmitot podle d ve popsanch zkonitost . Posputn tento program nejprve provede vpoty vech tn provechna hudebn pouiteln zabarven zvuku (to chv li trv).Pot si meme z menu zvolit poslechovou zkouku, vtisk tabulkykmitot nebo odchylek na tiskrnu, uloen tabulek na disketu,nebo ukonen programu. Pi poslechov zkouce se pomoc ipek (bez CONTROL)pohybujeme po tabulce (nahoru/dol mn me vku tnu,vlevo/vpravo pak zabarven zvuku), pouit m ipek nahoru/dol sCONTROLem se posuneme o celou oktvu. Pi tom se prv zvolentn ozv z reproduktoru. Mezern kem ho doasn uml me (ach tynervy!), pomoc ESC se vrac me do menu. Dal dv monosti v menu vyaduj , aby byla pipojenatiskrna se  kou strnky nejmn 80 znak. Vytiskne sekompletn tabulka, kde sloupce odpov daj zabarven zvuku, dkyjednotlivm tnm, a uveden  sla jsou hodnoty uren proregistry AUDFn. Tabulka odchylek je velice podobn, jen uveden sla jsou zde jin - jedn se o odchylky skutench kmitot odoptimln ch (v centech, zaokrouhlen nahoru). Podle toho lze prokonkrtn el posoudit pouitelnost jednotlivch zabarven . Uloen tabulek na disk vytvo 11 krtkch soubor, kterobsahuj v textov podob  sla z p slunch sloupc tabulky(oddlen jen rkami - vhodn pro dal pravu a pot zalenn do zdrojovch text). Zkladem ladn je v tomto programu konstanta Z0 definovan nazatku - jedn se polovinu periody tnu C Subkontra vhodinovch cyklech (hodnota o 7 vy , ne odpov daj c nastaven AUDFn pro 16-bitovou dliku z 1.79MHz a ist tn). ZVREM Protoe nechci dle zvyovat chaos v na literatue, zm n mse alespo v krtkosti o spolehlivosti informac uvedench vtomto lnku. Obsah kapitoly "HUDEBN JEDNOTKY" je v podstat pevzat ze[4], zkladn hodinov kmitoet jsem se slunou pesnost pemil - samozejm pouze pro verzi PAL. Tyto daje povaujiza spolehliv. Zbytek lnku je mozaikou poskldanou z nejrznj ch zm nek anznak v literatue, a dle z mch vlastn ch zkuenost ,experiment a vah. Nemus se do detailu shodovat se skutenouvnitn strukturou obvodu POKEY, jeho funkci vak popisujeuspokojiv. Zkouel jsem prakticky vechno, co bez osciloskopuvyzkouet lze, a nenael jsem dn odchylky od sv teorie. Ji Bernek (BEWESOFT) POUIT LITERATURA[1] MEGA MAGAZINE #5 (disk, A.N.G. Software, Holandsko) - lnek"PAL and NTSC"[2] V.Tava, M.Kork: Atari - Popis technickho vybavenia (Klubelektroniky Tlmae, 1988)[3] Doekal: ABC o po ta ch Atari (Tuto p ruku mi bohuelped dopsn m lnku kdosi odcizil, take nemohu uvst pesnj daje.)[4] Roenka Sdlovac techniky 1985 - Hudebn akustika (str. 259a 265)tuRhNNNNNNNN1N1N1N3N6N12N10N13N19N25N76ZLZSNLNSVPALLLMIOCIOCOIOBIOBCCLZLL  !"#$%&'()*+,-.* S."D:HARDCOPY.BAS"w6-6-@#6-%+6-%36-%;6-%C6-%K6-%W6-@_6-%g6-%o6-$w6-$1 6-%%6-%6-%%'6-$16-$&2*;,;,;,;,;,;,;$,26.*A6-F:&,%F:&,$%96-F:$%$,%F:$%$%,$&A6-& ''---S.UINSTR-(5PAR!)--------------uu6-C:hhhhhhhhhhhh8˰eօإeׅ٩ԅՠ%̱ͅ%ː`ץ֥װԩԅ`,%%---IO.OBJ----------------------(6,6-C:hhhhhBhEhDhIhH V`,6 A2%%---IO.COMAND-------------------<6-?:<$<<<,F*'6-F:A@%$,%F:AA%$,$*$P$$---IO.NAME-LOAD---------------ZS (ĠDEVICE>D'6( FILENAME>C7<,0TS( *.PICd 6.n A 6-A:,$x8( CHANNEL MODE>B:,*7<,4C8(=:, B:,"6.=:,$@:, $)@:,!$%%$6.=:, A$%%---IO.NAME-SAVE----------------J (ŠDEVICE>D'7( FILENAME>C(J# A 6-A:, A0#$%%---$-LOAD----------------------* B:,B:, *7<,0T*67,.=:,* 6.67B:,%,.:'67B:,%,.*$%%---$-SAVE----------------------#B:, *7<,0T#67,.=:,* 6.67B:,%,.:'67B:,%,.*$%%---IO.OPEN-#-1-----------------:A A$,%7:$%%---IO.OPEN-#-2-----------------:A%", A7:$"%%---BGET------------------------,* 6-6-%6-6-' @`*$6%%---BPUT------------------------@F 6-6-%6-6-' @`- 9+,%%<'F A@J$T( CHYBA SAVE&^%%---SLOUPEC---------------------hP 6. $$$6. ( $$867B:,%,. @ $P67B:,%,. r  67B:,%,. |67B:,%,.=:,$$$---LOAD-MEMORY----------------R A @! A`+ A5 A:@6-H&R A&$$---SAVE-MEMORY---------------- () $= Ap A! A+ A 0:2=$$$---DIR------------------------j/(&ҠDEVICE:NAME >D1:*.*6HAR AW_%jD A!-@@(,(0 : AD Ap A$3 &)(PRESS ANY KEY TO CONTINUE0)3$$$---MENU-----------------------/ AK%(}/ A0z( 1 = DIR5(2 = LOAD I = INVERZE ORAZUC( 3 = SAVEZ(4 = VIEW CONTINUEz( ERR = F:A,& ) %%)!%%& Ap5 (}5&@HA`AA0AP& A0$$---INVERZE--------------------: ADg )4"@s)"A)"A)"A3]6-?:C:hXԥYՠI`,,g AN$X##---GRAFIKA-------------------b 6-F:,&@2$+@V*<A@NA@`A |6-F:@,%F:@,$6-Av$l##---NAPIS-HARDCOPY------------v''(     (((       ))(!       ))(!       (((       ''(       ())(!     ))(!        (((      ''(     ''(      ''(    $""---------------------------- $$- PRO HANDLER "T:" GR.0 -> GR8: (} @ A`"0T:: A 5-A 5* (N16-N1)*N64* )*4 >< A<* CLOSE #N2:GOTO 510H""---LOAD NAME----------------R`(}DEVICE: >D1:!7(NAME >*.PIC>D6.R67B:,%,.U(`\n A-&&6. /67,.867,.C6.7<,T67$<$,..f67,.7%<%,n-f1  B:,7<,4 '67,.7%,1 App 67$%<$%,. z6-$---CONT LOAD------------'6.7$%<$%,6-%$"'$? 6.67B:,%,.! A 0+ A`5 A? A1'F:A,A6*F:A,!&1 A$AdAU$ A A !!---------------------------D:HARDCOPY.BAS˻up؈d ə*$p D_>!b?P @0p? @0*&  @0 @|*  @@0 @8"  @@0 "Ɍ`* ? 0#鋠&  @0 "Ɉ!  @0 " D3 a8 G2     DA2 !@8     |A2 @     DA2 !@ #G2@ ( @Ax@2A!@ ( @AO2A@ (@A@2A;p@A@2A@ h@@A@?2A!Q |Ġ@ZA@2QABӈ̠?@FA@2ApB_x̠ xCڀA2QAPBS̠-@BBA2QABp̠@B@A!2AN̠-@B@?2@Kp̿!@B2H̀ 2@H%̀|?2[H m̀WNV2 [@H%P̀V12H %̀@W}2 H $Pq?H_:HHPH@H O @@ @|@?@88  "" !  *6  w`? `? `d? wfuL1 J ZUUW1 J#Z@wUW1L%W~O?eUUL@0 Js&BO?UVudUX0 j %WJLc00`7@)Z[?c00`#;Z@> c00`(#+K#,=c00ugt`(' 8 RBL *%t\c00UT$@(.)+BL;%c00uT$()R~L.*)t\c00UT$XE,5&C?0Wg'@(.X5!P &;0`('[4E.&.C%0`(#Z딨+o:D (&c0-0`(3Z+8?& c0%0w`(Z?( :DH &c0%0E@)Z7틪L&i c0!0gڨ0L_&c10F@)?-L(&/ c1?|0u`(H?L#&c180gL&ʢT g1?0oL P&΢\h 0l(HE&¢ N 0L(_PX#x@x0Vw|(EPK"BH# UEx(@L Ph"DHUe@(? L‰Pg1"Hx#$UEg? L|Ήc1#H@4vGo DʉW1 4l( TQQTV"#1 4l(? WUwj1?4l(0 D|11b14l(0 LS}f14Vwl(0 OUbj#14UEL O14UE}ɀ@14UEyI3}4vwAI@$a?IjaoHnpTaB8H@}+cTaHO0*TVrajHO?UFAB0Hc?UbB ?-HcUB(?H@c?vB@(B Dc?`(k@C0`(넗D0`(@ DC0`(OĿg00Vr`(Dm0UF@(8 dDI0UB? d]0UB? dDM0vr@( tD~0`/ V#0 ` ? Wwufk 0<` 0 dD5vc0$Vw` 0 dLu7uvg04UA` 0 dOQvk04Ug@  dO04UD d@04vG d0?@ d@'`!I+4`!I?+cVw` ?0I@*UA@'0IO?UG$%0oIO?UD-8IvwAIa틊Ia?0ID a??-Vwa?DUAADUbyHI UA}D vGM D mH  mD~ lD Vwn$@Wwuz UAg$?5b UBC?Du7un UAyOQb vw}O M?@Am0Am0Am0 @섀m OA*m OlDl$I|$I$I ɀ .?0I /0oI .%8I"~ $-I ɀ+ $%I *J $%0"[ t?- J??~vН 6K qITDQ &B !WwuzgU] |7²! 5vT)Q 86~L! u7uzw OQb G ! @P@TTDQUi@!UUi@:LUQi*\[?]@+*EQ  wwP*-]UEUQP(T$ݺ*,SaPwgUрP@D"&#aFDUQP@Y-a0EtU]û QU@"j->C:0  3D*#?C3\P`3 h]wt >BC ^`3[]wut]PvP@`3ۭ;]ݬ;}PQ"UP@Ȁ3[]߻>~tYUp_3}mkk߻ڷ}_eQHU @@Ȁ3hw; CUPu `3=      !"#$%&'()*+,-./0123456789:;<JAK SE DlL REZIDENT Jak ji napov d nzev tohoto lnku, e bude o tvorbrezidentn ch program, samozejm pro Atari XL/XE. Co to vlastnrezidentn program je? Je to takov program, kter se po svmsputn usad v pamti po tae jako soust DOSu, a roziujetak jeho funkce. Tyto programy znme pedev m z po ta, ktermaj "pod kapotou" v ce ne 8 bit, pod modern mi DOSy se alestejnm zpsobem pracuje i na naem "chytrm trpasl kovi". Jedn se o ideln een pro obslun programy rznchdoplk a vylepen . U ns zaveden metoda "pilepovn " driverp mo do jednotlivch program, nebo do samotnho DOSu, vdyomezuje pouit takto upravenho softwaru pouze pro jednukonkrtn konfiguraci po tae. V dsledku toho pak vznik odkadho programu mnoho - v ce i mn zdailch - modifikac ,kter zamstnvaj programtory, matou uivatele, a stejnnepokrvaj vechny mon konfigurace, o problmech s autorskmiprvy ani nemluv. Tudy cesta nevede. Naproti tomu rezidentn obslun program sta napsat jednou provdy, stejn pro nkolikDOS a prakticky vechny uivatelsk programy. To u stoj zatrochu nmahy. Nen to ovem zase tak snadn, nebo operan systm AtariXL/XE tmto programm neposkytuje prakticky dnou podporu,nepo tm-li fakt, e jejich pouit p mo nevyluuje. (Mm-libt pln pesn - urit podpora zde je, z nkolika dvod jeale prakticky nepouiteln. Autoi operan ho systmu mlizkrtka v roce 1983 trochu jin pedstavy, ne jak se pozdji zmnoha dobrch dvod vily - zejmna pod vlivem SpartaDOSu. Otom v ce na konci tohoto lnku.) Zsada, e by ml bt kad program spolehliv, sluiteln aco nejkrat , plat u rezident dvojnsob. Je teba si uvdomit,e vlastn zasahujeme do samotnho operan ho systmu -jakkoliv poloviat een je v tomto p pad velmi nebezpen.Poadavek na co nejmen dlku je pak kl ovou otzkousluitelnosti s rznmi programy, nebo volnho prostoru je vpamti opravdu velmi mlo. Dleit je dodren uritch zvyklost , kter zaruuj bezkolizn spoluprci rezidentu s operan m systmem. Program byse zkrtka neml v systmu chovat - jak se  k - jako slon vporcelnu. Ml by pracovat vhradn v pamov oblasti, kterousi vyhradil pi instalaci, a kterou si tak pomoc MEMLO azapojen do resetov sekvence chrn ped pemazn m. Zsahy douivatelsk pamti jsou nep pustn, stejn jako "tvrd" skokydo rutin DOSu i ROM operan ho systmu. Kad rezident by ml obsahovat i monost odinstalovn ,neboli odstrann z pamti. Bez tto monosti nm pi zmnkonfigurace nezbv nic jinho, ne cel DOS zavst znovu odsamho zatku, co je nepohodln a asov nron. Nemlo bytak bt mon v censobn nainstalovn tho programu. Vtinaexistuj c ch rezident bohuel nkterou z tchto zsadnedodruje, dokonce i programy dodvan se SpartaDOSem, kter jepikou mezi DOSy pro Atari XL/XE. (Piznvm, e jsem kdysi smvypustil nkolik takovch kvr.) Pod vejme se nyn na funkci sprvnho rezidentu "zevnit". Kvkladu nejlpe poslou p klady; pipravil jsem pro tento elti jednoduch programy, jejich zdrojov texty jsou uvedeny vevpisech. Protoe je urit kostra tchto program univerzln ,nejsou ji (pro sporu m sta) shodn sti programu ve druhchdvou p kladech opakovny. Aby nedochzelo k omylm, oznailjsem hranice tchto st shodn ve vech p kladech adamihvzdiek - kompletn program vznikne prostm dosazen mvynechanch st z prvn ho vpisu. (Krom toho je pochopitelnteba do zobrazovanch text doplnit sprvn nzev p slunhoprogramu.) P klady jsou ureny pro BW-DOS nebo SpartaDOS. Pod jinmiDOSy sice vtina zde uvedench zsad plat tak, existuj vakrzn nep jemn omezen , vtinou plynouc z mechanismuzavdn programu DUP.SYS. Vpis je uren pro makroassemblerATMAS II. Pod vejme se tedy na vpis .1. Je to jednoduch rezident,jeho jedinou funkc je to, e po stisku klvesy zmn barvu podkladu a textu na obrazovce na hodnoty uveden piinstalaci. Syntaxe je jednoduch: "COLOR xxx" instalujerezident, nebo mn nastaven barev, piem "xxx" jehexadecimln vyjden barevn kd v poad barva, jaspodkladu, jas textu; "COLOR OFF" pak rezident odstrauje zpamti. Tento a extrmn jednoduch program jsem zvolilzmrn, abych zbyten neruil vklad instalan ch procedur, okter zde pedev m jde. Hotov program z skme nsleduj c m postupem: Zdrojov textpelo me, piem si z konce seznamu nvt op eme ti adresypotebn pro uloen programu na disk. Pejdeme do monitoru azde provedeme skok na adresu $A800 - t m vlastn programzakdujeme. Teprve potom vsledn kd ulo me na disk funkc SAVE s adresami opsanmi pi pekladu. Zdrojov text za n ponkud neobvykle. Po definici logick afyzick adresy pekladu nsleduje instrukce JMP, kter slou pro zakdovn programu ped uloen m na disk; vlastn programtedy vlastn za n a od druhho odstavce. Nvt "O" slou kvyrovnn rozd lu mezi logickou a fyzickou adresou pekladu,nebo zakdovn probhne na fyzick adrese, zat mco samotnprogram pak pob na adrese logick. Po definici nkolika promnnch a jed makroinstrukce najdemezatek programu. Je to rutina uren pro zptn rozkdovn programu po zaveden z diskety. Tato rutina pochopitelnvyluuje opakovan sputn celho programu bez novho zaveden z disku, na to je pamatovno na samm zatku. (Prvn instrukceLDA $E474 se zmn na JMP $E474, opakovan sputn programu mtedy stejnou funkci, jako klvesa .) Zakdovan uloen programu by se mohlo jevit jako opaten proti rznmnenechavcm, kte se bav pepisovn m text v programechpomoc textovho editoru, skuten p ina je ale jin. Kvlizamezen v censobn instalace, odinstalovn , zmnm parametratd. je teba v pamti pod MEMLO vyhledat p padn jiinstalovan rezidentn kd. V tto oblasti se ale nachzej takdiskov buffery, kter mohou jet obsahovat zbytky prvzavedenho programovho souboru. Kdyby tento soubor obsahovalvzor rezidentn ho kdu v nezakdovan podob, mohlo by toinstalan proceduru zmst. Dal st zdrojovho textu obsahuje univerzln podprogrampro vpis na obrazovku. Tento podprogram pedpokld uloen vypisovanho textu p mo za instrukc JSR, zakonen se provd jedn m nulovm bytem. Nvt START je pak konen zatkem samotnho programu.Prvn akc je zjitn , pod jakm DOSem program parcuje. Pokudby se nejednalo o systm sluiteln se SpartaDOSem, nebylo bymon pevz t parametr z p kazov dky, a tak samotninstalace rezidentu by byla nejist. V zjmu spolehlivosti protov takovm p pad program odm tne pracovat. Po pevzet parametru, a vtven programu v p pad poadavkuna odinstalovn rezidentu, pichz na adu zpracovn zadanchparametr. V tomto p pad se jedn o rozlien hexadecimlnzadanho barvovho kdu, tato st programu vak pochopitelnzvis na konkrtn aplikaci. Syntaxe prochz p snou kontroloua v p pad chyby se zobraz npovda. (To by, mysl m, nemlochybt v dnm programu.) Druh vtven zvis na tom, zda je ji rezident p tomen vpamti. To zjiuje podprogram SRCHRUT, kter provd hledn rezidentu pod MEMLO; v p pad spchu vrac jeho adresu vpromnn SRCHADR a nastavuje p znak C. Je-li rezident jip tomen, vlo se do nj jen nov parametry. (K prom tnut zmnna obrazovku je zde pouita inicializan procedura samotnhorezidentu.) Stejn jako ve vech ostatn ch p padech, i zdeprogram nakonec vyp e zprvu o proveden funkci. Nvt m INSTAL za n vlastn instalace rezidentu (na adresudanou stvaj c hodnotou MEMLO). Nejd ve se vypo t novadresa MEMLO (pozor, tato verze programu pedpokld, e jerezidentn st programu krat ne 256 byt), a vlastn rezident se relo|>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{kuje. V tomto konkrtn m p pad vlatn nen dn relokace potebn, to je ovem zcela vyj men jev. Dal st programu provd pravy rezidentu ped jehoinstalac - podle konkrtn aplikace. (V tomto p pad jde odosazen kd poadovanch barev.) Nsleduje zkop rovn taktopipravenho rezidentu na m sto uren a jeho pipojen dosekvence provdn po resetu. Na zvr bude takto instalovanrezident pipojen k operan mu systmu (v tomto konkrtn mp pad nen nic takovho teba, najdeme zde jen symbolickvyvoln inicializan procedury rezidentu), a po vypsn krtkzprvy program kon . Poad uvedench krok je velice dleit.Pro p pad, e by nkdo bhem instalace stiskl , bychomse toti mli pokud mono vyvarovat hazardn ch stav. Um st meproto ji hotov rezident na m sto uren , zapojen m do resetovsekvence ho zajist me ped pokozen m, a teprve potom pipoj mevlastn vkonn rutiny k operan mu systmu. Nsleduje program pro odinstalovn rezidentu. Nejprve jesamozejm teba zjsitit, zda je rezident v pamti skutenp tomen, a nav c je velice dleit, aby nebyl "zazdn" podnjakm dal m (pozdji instalovanm) programem. V takovmp pad by nebylo mon odinstalovn provst, nebo jakkolivzsahy do jinch rezident p sluej pouze jejich vlastn minstalan m procedurm, a vytvoen "d ry" v obsazen pamtinen mon. Dal postup je pak opakem instalace. Nejprve je teba vkonnrutiny odpojit od operan ho systmu (uveden p klad dnvkonn rutiny nem, proto zde najdeme jen nastaven standardn ch barev obrazovky); potom u nic nebrn odpojen rezidentu z resetov sekvence, a po vrcen pvodn hodnotyMEMLO je odinstalovn hotovo. Podprogram SRCHRUT slou k vyhledn rezidentu v oblasti podMEMLO, a poskytuje tak potebnou informaci o p tomnostirezidentu v pamti a o jeho um stn . Vyhledvn sice nen ideln metodou, dn jednotn systm pro oznaovn v pamtiinstalovanch rezident vak neexistuje, take nm nic jinhonezbv. Vyhledvn za n tsn pod MEMLO a kon na adrese$1100, kter ji zaruen spad do DOSu. Pro porovnvn jeteba zvolit takov sti programu, kter jsou zcela nemnn,t.j. neobsahuj dn promnn parametry, ani relokovanabsolutn adresy. Kvli spolehlivosti bychom mli zvolit v cefragment, pokud mono specifickch pro konkrtn program,nap klad prce s porty apod. Instalan st celho programu uzav raj nkter podprogramy,kter se vztahuj k jeho specifickm stem. V tomto p pad sejedn o pevzet jedn hexadecimln  slice a o vyvoln inicializan procedury rezidentu. Konen! Zde, tm na konci celho programu, se dostvme ksamotnmu rezidentu. Jeho prvn st tvo inicilaizan procedura, kter je doslova ivotn dleit. Tato procedura sestv soust inicializace DOSu, a provd se tedy vdy poresetu. Skld se z vyvoln star inicializan procedury(d ve instalovanch rezident a samotnho DOSu), nastaven novhodnoty MEMLO, a p padn dal ch funkc dle poteby - v tomtop pad zmna barev. Poad uvedench krok je i zde velmidleit - m to celou adu dvod, pedev m vak uchovn nejnovj hodnoty MEMLO (co chrn instalovan rezidenty pedpemazn m). Zbytek rezidentu pak obsahuje vlastn vkonn rutiny (v tomtop pad dn nejsou). Nsleduje tabulka potebn pro relokaci,kter obsahuje adresy vech instrukc v rezidentn stiprogramu, jejich operandy (absolutn adresy) je tebapizpsobit. Uveden p klad nhodou dn takov instrukceneobsahuje, proto se tato tabulka skld jen ze zakonovac znaky v podob nulov adresy. T m vlastn program kon , nsleduje u jen rutina prozakdovn celho programu ped uloen m na disk, a opakovn nkterch informativn ch hodnot (aby pi pekladu zstaly nakonci vpisu). Druh p klad (nazvan "SHOWSIO") ilustruje zpsob pipojen rezidentn ho driveru na rovni SIO, tedy na rovni ten /zpisudiskovch sektor. T mto zpsobem jsou realizovny vekerramdisky, na kter pak DOS nahl  jako na skuten diskety,take nejsou pro organizaci obsahu takovho ramdisku teba dnzvltn rutiny. Instalace se provd zmnou vektoru LSIO v tabulce COMTAB,kter uruje adresu, kde DOS i nkter dal programy volaj SIO. Nelze ovem zachytit operace provdn p mo pes rutinuSIO v ROM - to je hlavn dvod, pro by mly vechny programypou vat vektor LSIO (samozejm pouze pod systmy sluitelnmise SpartaDOSem, nebo jin DOSy tento vektor nemaj ). Takto instalovan podprogram se mus chovat stejn, jakostandardn rutina SIO v ROM, to znamen e vstupn parametry tez promnnch od adresy $300 (kter samozejm nemn ), statusoperace pak vrac v registru Y, p znaku N a na adrese $303.Pokud je poadovna operace na jin disketov jednotce, nebodokonce na jinm za zen , je samozejm teba bez okolkvyvolat pvodn rutinu. Rd bych upozornil na to, e SpartaDOSm v sv diskov buffery obvykle pod ROM operan ho systmu,take je pod t mto DOSem nutn na dobu penosu dat ROM-OSodpojit. Pi tom je vak teba znan opatrnosti, nebo podjinmi DOSy zase pro zmnu jakkoliv peruen pi vypnut ROMceobvykle kon havri . Program "SHOWSIO" na vpisu .2 ovem dn nov za zen neinstaluje. Jeho funkce spo v v tom, e hl d prob haj c vstupn/vstupn operace, a informaci o nich zobrazuje naobrazovce. Syntaxe je jet jednodu , ne u prvn ho p kladu:Vyvoln bez parametru provd instalaci rezidentu, s parametrem"OFF" pak odinstalovn . Samotn vpis ukazuje pouze sti programu odlin od prvn hop kladu. Rutina za naj c od nvt INSTAL2 zjiujestvaj c adresu uloenou ve vektoru LSIO, a ukld ji nap slun m sto do rezidentn sti programu. ely to m dva:Jednak tato adresa v p pad poteby slou k vyvoln pvodn rutiny (v tomto p pad dokonce vdy), a jednak je potebn provrcen systmu do pvodn ho stavu pi odinstalovn . (Je tebaopravdu dsledn dbt na to, abychom pi odinstalovn vdyuvedli systm do takovho stavu, jako kdyby rezident nebyl nikdynainstalovn. Jinak hroz problmy.) st programu pipojuj c rezident k operan mu systmu jednodue dosazuje do vektoru LSIOadresu nov rutiny, zat mco program pro odpojen od operan hosystmu pi odinstalovn vrac tomuto vektoru pvodn hodnotu. Vlastn rezident (od nvt SIO) se tak stv soust rutinSIO pou vanch DOSem. Je to celkem jednoduch program, kterzobrazuje do pravho horn ho rohu obrazovky informaci ve tvaru"Dn:cxxxx", kde "n" je  slo disketov jednotky, "c" je kdpovelu a "xxxx" pedstavuje  slo sektoru. Vlastn vpis naobrazovku provdj rutiny SIOHEX a SIOPUT, z nich prvn zajiuje pevod  sla do hexadecimln ho tvaru, zat mco druh zobou rutin pevd jednotliv znaky do obrazovkovho kdovn aukld je p mo do obrazov pamti. Vpis s pouit m slueboperan ho systmu by v tomto p pad rozhodn nebyl na m st -nae rutina se toti sama stv soust tohoto systmu, takeby zde hrozilo rekurzivn voln nkterch podprogram, ktersamozejm nen p pustn. Nav c uivatelsk programy nejsoupipraveny na "samovoln" zmny na obrazovce i v systmovchpromnnch pi voln podprogram s obrazovkou nesouvisej c ch -to je ostatn tak dvod, pro popisovan program po ukonen operace vrac obrazovku do pvodn ho stavu. Vpis je optzakonen tabulkou pro relokaci. Do tetice veho dobrho... (I zlho - ale to se zde p linehod .) Posledn p klad se tk instalovn novch za zen pod CIO. Jedn se o za zen "N:", kter pi zpisu mn barvuokraje obrazovky, pi ten pak vrac hodnoty z genertorunhodnch  sel. (Syntaxe i vtina programu odpov dpedchoz mu p kladu.) Instalovn podobnho za zen nen tak jednoduch, jak by semohlo zdt. V p pravn fzi (nvt INSTAL2) program nejprv=}~evol dleitou rutinu CLOSDEV, jej  vznam pro spolehlivostinstalace nen ani zdaleka zanedbateln. Je toti teba zaruit,aby pi vmn obslunch program nkterho za zen nebyl prototo za zen prv oteven dn vstupn/vstupn kanl (IOCB).Pokud by tomu tak bylo (nejastji to hroz pi instalovn novobsluhy tiskrny pi zapnut funkci HardCopy), dochzelo by kvoln nkterch st novho driveru bez jeho pedchoz inicializace povelem OPEN, co je pochopiteln chyba. Funkcepodprogramu CLOSDEV spo v v uzaven vech IOCB (vetndvkovch soubor a funkce HardCopy) otevench pro za zen ,kter se chystme mnit. Nsleduje uloen adresy pvodn ho driveru pro potebyodinstalovn ; pokud driver stejnho jmna dosud neexistoval,zstane na p slunm m st rezidentu nula. st programu odnvt INSTAL2B pouze dokonuje relokaci - hlavn relokan rutina toti neum zpracovat instrukce typu "LDA #ADRESA:H"(kter nebvaj p li frekventovan). Pipojen rezidentu k operan mu systmu se provd jednoduezavoln m jeho inicializan procedury. Ped odpojen m (piodinstalovn ) je teba opt - pomoc rutiny CLOSDEV - zajistituzaven vech kanl otevench pro dotyn za zen . V tomtop pad je to jet mnohem dleitj ne pi instalaci. Pokudbychom toti odinstalovali rezident bez uzaven p slunchIOCB, mohlo by se stt, e by operan systm i nadle volalnae rutiny - pesto, e ji nejsou chrnny proti pemazn jinmi programy. Vlastn odpojen je pak realizovno vrcen mpvodn adresy do tabulky HATABS, nebo vymazn m p slunpoloky z tto tabulky (pokud d ve za zen stejnho nzvuneexistovalo). T m je zajitn nvrat systmu do pvodn ho stavui v p pad, e rezident nahrazoval nkter ji existuj c za zen , nap klad tiskrnu. Nyn pichz "na petes" funkce ji d ve zm nnhopodprogramu CLOSDEV. Za prv je teba vyhledat nzev za zen vtabulce HATABS, protoe veker promnn, na kter se buderutina dle odkazovat, specifikuj za zen podle jeho polohy vtto tabulce. Potom rutina prohldne vech osm IOCB, a pro ty,kter jsou oteveny pro p slun za zen , vyvol funkci CLOSE.T mto zpsobem ovem nelze ukonit pesmrovn vstupu/vstupuprovdn DOSem (dvkov soubory a HardCopy) - k tomu slou zvr cel rutiny. Funguje podobn, na aktivitu pesmrovn seovem informuje v tabulce COMTAB (promnn ECHOFLG a BATFLG), apro ukonen pesmrovn pou v rutinu XDIVIO. (To lzesamozejm pou t pouze pod systmy sluitelnmi seSpartaDOSem.) Podprogram SRCHHATB slou k vyhledn p slun poloky vtabulce HATABS, rutina INIT pak zajiuje skok na inicializan proceduru rezidentu. Inicializan procedura vlastn ho rezidentu zapisuje novza zen do tabulky HATABS. Je dleit, aby se v p pad, eji za zen shodnho nzvu existuje, pouze zmnila jeho adresa.M to dva dvody: Jednak to umon nahradit njak jiexistuj c za zen (nap klad tiskrnu) novm, a jednak tozabrn peplnn tabulky HATABS pi opakovanm voln inicializan sekvence - nkter programy to dlaj kvlivymazn diskovch buffer DOSu. Pouit p slun rutinyoperan ho systmu (adresa $E486), kter se p mo nab z , by vtomto p pad nebylo sprvn, nebo tato rutina v p pad, eji p slun za zen existuje, neprovede vbec nic. Na tomto m st bych rd pipomnl nep li znm fakt, etabulka HATABS nemus bt vdy zaplnna pouze od zatku.Odstrann m nkterho za zen (nap klad odinstalovn mrezidentu) zde me vzniknout "d ra" v podob przdn poloky,kter operan mu systmu nijak nevad . Na to je teba pamatovat,a neukonovat tedy vyhledvn v HATABS po nalezen prvn przdn poloky (jak to bohuel dlaj nkter zjednoduenprogramy). "Setesen " tabulky HATABS je samozejm nep pustn,protoe poloha jednotlivch driver v tto tabulce je prooperan systm kl ovou informac pro rozlien jednotlivchza zen . Na samotnm driveru za zen "N:" ji nen nic moc zaj mavho.Najdeme zde obvyklou tabulku vstupn ch bod nsledovanouinicializan rutinou, za n pak vlastn program. Vpis uzav rrelokan tabulka. Programy uveden v tomto lnku jsou myleny pouze jakop klad. Jsou sice funkn , k dokonalosti ale maj jet daleko.Tak nap klad zde uveden program COLOR mn barvy pouze poresetu, nezachyt u zmny grafickho reimu obrazovky; programSHOWSIO zase pedpokld standardn textovou obrazovku, po zmngrafickho reimu je jeho informace neiteln. U tet hoprogramu "NDEVICE" mne sice momentln dn vady nenapadaj ,ale uznejte sami: K emu je takov vstupn/vstupn za zen dobr? Tolik tedy pro ty, kte se chystaj vznst oprvnnpipom nky k pouitelnosti zde uvedench program. Na zvr se jet pod vejme, jak se s problmem rezidentvypodal operan systm uloen v ROM. Ano, ROM skutenobsahuje vlastn (odlin) systm pro instalovn rezident.Podprogramy na adresch $E48C (LINK) a $E489 (UNLINK) slou kinstalovn a odinstalovn rezident, ROM dokonce um jedentakov program zavst ze sriov pipojenho za zen (pokudv m, ml by to bt interface RS-232) a dokonce i relokovat.Jaksi hlaviky jednotlivch rezident v pamti jsou tvoenystandardn mi tabulkami vstupn ch bod pro CIO, roz enmi onkolik dal ch adres (do kterch ROM dosad kontroln souet,odkaz na dal rezident apod.). Adresa prvn ho taktoinstalovanho programu je uloena na adrese $3FB, ostatn pakvdy v hlavice toho pedchoz ho. ROM automaticky zajiujeinicializaci tchto program po resetu i jejich zanesen doHATABS. Nezn to patn, tento systm se ale jaksi neujal. M totijednu vadu: Inicializace takto pipojench rezident prob h apo inicializaci DOSu, tsn ped skokem do cartridge ipovelovho procesoru DOSu. Programy, kter se chrn pedklvesou - a nen jich mlo - se ale obvykle pipojuj kinicializaci DOSu,  m spolu se spoutn m cartridge a CPvyluuj tak inicializaci rezident instalovanch pes OS-ROM.Problmy tohoto druhu vytv dokonce i vtina DOS, nap kladSpartaDOS, BW-DOS, DOS 2.5 atd. Podtreno, seteno: Pipojovn rezident pomoc slueb OS-ROMnen se souasnm softwarem bezpen, a proto se radjipidr me osvden metody popsan v tomto lnku. Ji Bernek  Vpis .1 =========************************************** " COLOR " (UKZKA REZIDENTU) ** Autor: Ji Bernek - BEWESOFT *************************************** Po pekladu spustit od $A800, a* potom uloit (adresy viz. konec) OUT NTARGET EQU $6000 ORG TARGET-3,$A800O EQU $A800-TARGET+3 JMP UTAJ+O* Promnn - univerzln stSRCHADR EPZ 128RELZP EPZ 130************* Promnn - specifick stCOL1 EPZ 132COL2 EPZ 133************* Makroinstrukce pro znak EOLEOL MACRO DFB $9B MEND* Vstupn dekdovac rutinaODT0 LDA $E474 ;Zmn se LDA #$4C ;na JMP STA ODT0 LDX #0 LDY #$10 ;DlkaODTAJ LDA PRINT,X EOR #$55 ;RozkdujODT2 STA PRINT,X INX ;Dal  BNE ODTAJ INC ODTAJ+2 INC ODT2+2 DEY ;Konec? BNE ODTAJ JMP START* Podprogram pro vstup na obrazovkuPRINT PLA ;Nvratov STA PR4+1 ;adresa PLA ;=odkud STA PR4+2PR2 INC PR4+1 ;Dal  BNE PR3 ;znak INC PR4+2PR3 LDA #0 TAX ;IOCB 0 STA $348,X ;Dlka=0 STA $349,X LDA #11 ;Povel=PUT STA $342,XPR4 LDA $FFFF ;Vezmi znak BEQ PR5 JSR $E456 ;CIO JMP PR2PR5 LDA PR4+2 ;Konec: PHA ;Nvratov LDA PR4+1 ;adresa PHA ;zpt RTS* Pomocn skok (pevzet param. z CP)GETNAME JMP $E474* Zatek programu - test DOSuSTART LDA $700 CMP # S  BEQ START2 JSR PRINT EOL ASC "Bad DOS version !" EOL DFB 0 JMP (10)* Pevzet parametruSTART2 LDA 10 ;P prava CLC ;adresy ADC #3 ;CRNAME STA GETNAME+1 LDA 11 ADC #0 STA GETNAME+2 JSR GETNAME ;Pevz t* Je parametr OFF ? LDY #36 ;Offset na LDA (10),Y ;COMFNAM CMP # O  BNE START3 INY ;Asi OFF... LDA (10),Y CMP # F  BNE SYNTAX INY CMP (10),Y BNE SYNTAX INY LDA (10),Y CMP #$9B BNE SYNTAX JMP DISABLE ;Odinstal.************* Specifick st: Zpracovn parametruSTART3 JSR TOHEX ;Barva BCS SYNTAX ASL ASL ASL ASL STA COL2 JSR TOHEX ;Podklad BCS SYNTAX ORA COL2 STA COL2 JSR TOHEX ;P smo BCS SYNTAX STA COL1 LDA (10),Y ;Syntax OK? CMP #$9B BEQ START4************* Chyba syntaxe -> npovdaSYNTAX JSR PRINT EOL ASC "Syntax: COLOR xxx" EOL ASC " COLOR OFF" EOL DFB 0 JMP (10)* Je ji rezident instalovn?START4 JSR SRCHRUT ;Hledn  BCC INSTAL************* Specifick st: Zmna konfigurace LDY #XCOL1+1-RESID LDA COL1 STA (SRCHADR),Y LDY #XCOL2+1-RESID LDA COL2 STA (SRCHADR),Y JSR INIT ;Nov barvy* Zakonen  JSR PRINT EOL ASC "COLOR: Configuration " ASC "changed." EOL DFB 0 JMP (10)************* Instalace rezidentu:* Vpoet nov adresy MEMLOINSTAL LDA 743 ;MEMLO STA SRCHADR CLC ;+dlka ADC #RESLEN ;rezidentu STA 743 STA LMEM+1 LDA 744 STA SRCHADR+1 ADC #0 STA 744 STA HMEM+1* Relokovn rezidentuRLK0 LDX #0RLK1 LDA RELOKT,X ;Adresa STA RELZP ;instrukce LDA RELOKT+1,X STA RELZP+1 ORA RELZP ;0->konec BEQ INSTAL2 LDY #1 ;Operand LDA (RELZP),Y SEC ;-star adr. SBC #RESID:L PHP CLC ;+nov adr. ADC SRCHADR STA (RELZP),Y INY ;hi-byte LDA (RELZP),Y ADC SRCHADR+1 PLP SBC #RESID:H STA (RELZP),Y INX ;Dal  INX BNE RLK1 ;Vdy************* Specifick st:* P prava rezidentu ped instalac INSTAL2 LDA COL1 ;Dosazen  STA XCOL1+1 ;barev LDA COL2 STA XCOL2+1************* Kop rovn rezidentu na m sto uren  LDY #RESLEN ;DlkaCOP1 DEY LDA RESID,Y STA (SRCHADR),Y TYA BNE COP1* Pipojen do sekvence  LDY #2INSTAL3 LDA 11,Y ;Star adr. STA (SRCHADR),Y LDA SRCHADR-1,Y STA 11,Y ;Nov adr. DEY BNE INSTAL3************* Specifick st: Pipojen * instalovanho rezidentu k OS JSR INIT************* Zakonen  JSR PRINT EOL ASC "COLOR installed." EOL DFB 0 JMP (10)* Odstrann rezidentu:* Je rezident p tomen a je posledn ?DISABLE JSR SRCHRUT ;Hledn  BCS DISABLE2 JSR PRINT EOL ASC "COLOR not Installed !" EOL DFB 0 JMP DISERR2DISCANT JSR PRINT EOL ASC "COLOR is not the last" EOL ASC "installed handler!" EOL DFB 0DISERR2 JSR PRINT ASC "Can t remove." EOL DFB 0 JMP (10)DISABLE2 LDA 743 ;MEMLO SEC SBC SRCHADR ;-adresa TAY LDA 744 SBC SRCHADR+1 BNE DISCANT ;=dlka CPY #RESLEN ;rezidentu? BNE DISCANT************* Specifick st:* Odpojen rezidentu od OS LDA #$CA ;Vrcen  STA 709 ;barev LDA #$94 STA 710************* Odpojen od a vrcen * pvodn hodnoty MEMLODISBL1 LDY #2DISBL2 LDA (SRCHADR),Y STA 11,Y ;Reset LDA SRCHADR-1,Y STA 743-1,Y ;MEMLO DEY BNE DISBL2* Zakonen  JSR PRINT EOL ASC "COLOR removed." EOL DFB 0 JMP (10)* Podprogram - vyhledn rezidentn ho* kdu v pamti pod MEMLO:* Makroinstrukce pro jeden krok* vyhledvn SRCHIT MACRO ODKUD,KAM LDY #ODKUD-RESIDSRIT LDA (SRCHADR),Y CMP RESID,Y BNE SRCHNXT INY CPY #KAM-RESID BNE SRIT  MEND* P prava poten adresySRCHRUT LDA 743 ;MEMLO SEC SBC #RESLEN ;-dlka STA SRCHADR ;rezidentu LDA 744 SBC #0 STA SRCHADR+1************* Specifick st:* Porovnn se vzorem rezidentuSRCHR1 SRCHIT T1,XCOL1 SRCHIT T2,XCOL2 SRCHIT T3,T4************ .      !"#$%&'()*+,- SEC ;Nael RTS* Nesouhlas -> dal adresaSRCHNXT LDA SRCHADR ;Adresa-1 BNE SNXT2 DEC SRCHADR+1SNXT2 DEC SRCHADR LDA SRCHADR+1 CMP #$10 ;Adr.<$1100 BCS SRCHR1 ;->nenael RTS************* Specifick st:* Podprogramy instalan procedury* Pevzet jednoho hexadec. znakuTOHEX LDA (10),Y ;COMFNAM INY CMP #$47 ;Konverze: BCS TOHEXERR ;>"F"? SBC #$30-1 BCC TOHEXERR ;<"0"? CMP #$0A BCC TOHEXOK ;<="9"? SBC #7 CMP #$0A BCS TOHEXOK ;>="A"TOHEXERR SEC ;Chyba RTSTOHEXOK CLC ;OK RTS* Inicializace rezidentuINIT LDA SRCHADR ;Adresa CLC ;rezidentu ADC #3 ;+3 (A za STA INIT2+1 ;prvn JSR) LDA SRCHADR+1 ADC #0 STA INIT2+2INIT2 JMP $E474 ;Sko tam!************* Vlastn rezident:* Inicializan sekvenceRESID JSR $FFFF ;Init. DOSLMEM LDA #$22 ;Nov hodn. STA 743 ;MEMLOHMEM LDA #$22T1 STA 744************* Spec. st: Inicializace rezidentuXCOL1 LDA #$FF ;NovT2 STA 709 ;barvyXCOL2 LDA #$FFT3 STA 710T4 RTS* Hlavn program rezidentu* (V tomto p pad nen )************* Konec rezidentu* Pomocn hodnota - dlka rezidentuRESLEN EPZ *-RESID************* Specifick st:* Tabulka absolutn ch adres v rezidentu* pro relokaci (V tomto p pad przdn* - obsahuje pouze zakonovac znaku)RELOKT DFW 0************* Konec vlastn ho programu* Nsleduje rutina pro zakdovn * programu po pekladuUTZP EPZ $20 ;PromnnUTAJ LDA #PRINT+O:L STA UTZP LDA #PRINT+O:H STA UTZP+1 ;Start adr.UTAJ2 LDY #0 LDA (UTZP),Y EOR #$55 ;Zakduj STA (UTZP),Y INC UTZP ;Dal adr. BNE UTAJ3 INC UTZP+1UTAJ3 LDA UTZP ;Konec? CMP #UTAJ+O:L BNE UTAJ2 LDA UTZP+1 CMP #UTAJ+O:H BNE UTAJ2 RTS* Opakovn dleitch hodnot - kvli* snadnmu peten bhem pekladu:* Dlka rezidentn ho kduDELKARES EQU RESLEN* Upozornn na startovac adresu* pro zakdovn po pekladuSPUSTOD EQU $A800* Adresy pro uloen vslednho prog.SAVEFROM EQU ODT0+OSAVETO EQU UTAJ+OSAVEINTO EQU TARGET* Konec Vpis .2 =========************************************** " SHOWSIO " (UKZKA REZIDENTU) ** Autor: Ji Bernek - BEWESOFT **************************************ST SHODN S VPISEM .1************* Promnn - specifick stSIOADR EPZ 132************ST SHODN S VPISEM .1************* Specifick st: Zpracovn parametruSTART3 CMP #$9B ;Syntax OK? BNE SYNTAX LDA 10 ;P prava SEC ;adresy SBC #10 ;vektoru STA SIOADR ;LSIO LDA 11 SBC #0 STA SIOADR+1 JMP START4************ST SHODN S VPISEM .1************* Specifick st: Zmna konfigurace* (V tomto p pad nepichz zmna* v vahu, proto chybov hlen ) JSR PRINT EOL ASC "SHOWSIO already " ASC "installed !" EOL DFB 0 JMP (10)************ST SHODN S VPISEM .1************* Specifick st: P prava rezidentu* ped instalac (Uschovn pvodn * adresy SIO)INSTAL2 LDY #0 LDA (SIOADR),Y STA OLDSIO+1 INY LDA (SIOADR),Y STA OLDSIO+2************ST SHODN S VPISEM .1************* Specifick st: Pipojen * instalovanho rezidentu k OS LDY #0 ;Nov adresa LDA NEWSIO ;SIO do LSIO STA (SIOADR),Y INY LDA NEWSIO+1 STA (SIOADR),Y************ST SHODN S VPISEM .1************* Specifick st: Odpojen rezidentu* od OS (Vrcen pvodn adresy SIO) LDY #OLDSIO-RESID+1 LDA (SRCHADR),Y PHA INY LDA (SRCHADR),Y LDY #1 STA (SIOADR),Y DEY PLA STA (SIOADR),Y************ST SHODN S VPISEM .1************* Specifick st:* Porovnn se vzorem rezidentuSRCHR1 SRCHIT T1,R1 SRCHIT T2,SIO3 SRCHIT T3,R8 SRCHIT T4,T5************ST SHODN S VPISEM .1************* Spec. st: Podprogramy instalan * procedury (V tomto p pad dn)************ST SHODN S VPISEM .1************* Specifick st: Inicializace* rezidentu (V tomto p pad nen ) RTS* Hlavn program rezidentuSIO LDY #40 ;schovaSIO2 DEY ;8 znak z LDA (88),Y ;obrazovkyR1 STA BUFFER-32,YT2 CPY #32 BNE SIO2 LDA # D  LDX $300 ;Za zen  CPX #$31 BEQ SIO3 LDA # ? ;Nen D:SIO3 JSR SIOPUT ;Zobrazit LDA $301 ;.jednotky ORA #$30R2 JSR SIOPUT ;Zobrazit LDA # : ;OddlovaR3 JSR SIOPUT LDA $302 ;PovelR4 JSR SIOPUT LDA $30B ;.sektoruR5 JSR SIOHEX ;(hex. slo) LDA $30A ;lo-byteR6 JSR SIOHEXOLDSIO JSR $E474 ;Pvodn SIO STY $303 ;Status LDY #40 ;ObnovaSIO4 DEY ;obrazovkyR7 LDA BUFFER-32,YT3 STA (88),Y CPY #32 BNE SIO4 LDY $303 ;Status->Y RTS ;+p znak N* Zobrazen hex.  slaSIOHEX PHA ;Horn plka LSR LSR LSR LSRR8 JSR SIOHEX1 ;ZobrazitT4 PLA ;Doln plka* Zobrazen jedn hex.  sliceSIOHEX1 AND #$0F ORA #$30 ;Pevod do CMP #$3A ;ATASCII BCC SIOPUT ADC #7-1 ;pro A...F* Zobrazen jednoho znakuSIOPUT EOR #$80 ;Do inverze ASL ;Pevod do PHP ;obrazovko- CMP #$C0 ;vho kdu BCS SIOP2 SBC #63 BCS SIOP2 ADC #$C0SIOP2 PLP ROR STA (88),Y ;->obrazovka INYT5 RTS* M sto pro uloen pv. stavuBUFFER ASC "12345678"************ST SHODN S VPISEM .1************* Specifick st: Adresy pro relokaciNEWSIO DFW SIORELOKT DFW R1,SIO3,R2,R3 DFW R4,R5,R6,R7 DFW R8,NEWSIO-1,0************ZBYTEK SHODN S VPISEM .1 Vpis .3 =========************************************** " NDEVICE " (UKZKA REZIDENTU) ** Autor: Ji Bernek - BEWESOFT **************************************ST SHODN S VPISEM .1************* Promnn - specifick stCLOSIX EPZ 132CLOSTMP EPZ 133CLOSAD EPZ 134************ST SHODN S VPISEM .1************* Specifick st: Zpracovn parametruSTART3 CMP #$9B ;Syntax OK? BEQ START4************ST SHODN S VPISEM .1************* Specifick st: Zmna konfigurace.* V tomto p pad nepichz zmna* v vahu, proto chybov hlen  JSR PRINT EO/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXL ASC "NDEVICE already " ASC "installed !" EOL DFB 0 JMP (10)************ST SHODN S VPISEM .1************* Specifick st:* P prava rezidentu ped instalac INSTAL2 JSR CLOSDEV ;Uzaven N: JSR SRCHHATB ;Vyhledn  BCC INSTAL2B ;v HATABS LDA $31B,X STA OLDADR ;Uschovn  LDA $31C,X ;pvodn  STA OLDADR+1 ;adresyINSTAL2B LDA TABADR ;Dokonen  STA TA1+1 ;relokace LDA TABADR+1 STA TA2+1************ST SHODN S VPISEM .1************* Specifick st: Pipojen * instalovanho rezidentu k OS JSR INIT************ST SHODN S VPISEM .1************* Spec. st: Odpojen rezidentu od OS JSR CLOSDEV ;Uzaven N: JSR SRCHHATB ;Vyhledn  BCC DISBL1 ;v HATABS LDY #OLDADR-RESID LDA (SRCHADR),Y STA CLOSAD ;pv. adresa INY LDA (SRCHADR),Y STA CLOSAD+1 ORA CLOSAD ;adresa=0 BNE DIS2A ;->neex. STA $31A,X ;Vyma N:DIS2A LDA CLOSAD ;Vra STA $31B,X ;pvodn  LDA CLOSAD+1 ;adresu STA $31C,X************ST SHODN S VPISEM .1************* Specifick st:* Porovnn se vzorem rezidentuSRCHR1 SRCHIT T1,TA1 SRCHIT OK,R6 SRCHIT T2,T3************ST SHODN S VPISEM .1************* Specifick st:* Podprogramy instalan procedury:* Uzaven vech IOCB otevench na N:,* vetn dvkovho souboru a HardCopy.CLOSDEV JSR SRCHHATB ;Vyhledn  BCC CLO7 ;v HATABS STX CLOSIX LDA #$70CLO4 STA CLOSTMP TAX ;Za zen  LDA $340,X ;z IOCB CMP CLOSIX ;Je to N:? BNE CLO5 LDA #12 ;Uzav t! STA $342,X ;Povel=CLOSE JSR $E456 ;CIOCLO5 LDA CLOSTMP ;Dal IOCB SEC SBC #$10 BCS CLO4 LDA 10 ;P prava SEC ;adresy SBC #8 ;ECHOFLG STA CLOSAD LDA 11 SBC #0 STA CLOSAD+1 LDA 10 ;P prava CLC ;adresy ADC #8 ;XDIVIO STA XDIVJ+1 LDA 11 ADC #0 STA XDIVJ+2 LDY #0 ;HardCopy JSR CLO6 LDY #1 ;Batch fileCLO6 LDA (CLOSAD),Y CMP CLOSIX ;Je to N:? BNE CLO7XDIVJ JMP ($FFFF) ;Uzav tCLO7 RTS* Vyhledn N: v HATABS (nen -li - C=0)SRCHHATB LDX #0SRCHH2 LDA $31A,X ;HATABS CMP # N  BEQ SRCHH3 INX ;Dal  INX ;poloka INX CPX #33 BCC SRCHH2 CLC ;NenaelSRCHH3 RTS* Inicializace rezidentuINIT LDA SRCHADR ;Adresa CLC ;rezidentu ADC #3 ;+3 (a za STA INIT2+1 ;prvn JSR) LDA SRCHADR+1 ADC #0 STA INIT2+2INIT2 JMP $E474 ;Sko tam!************ST SHODN S VPISEM .1************* Spec. st: Inicializace rezidentu LDY #30 ;Zanesen  LDX #$FF ;do HATABS:RESINI1 LDA $31A,Y ;Przdn BNE RESINI2 ;poloka? TYA ;Ano - TAX ; - uschovejRESINI2 CMP # N ;Nen u tam BEQ RESINI4 ;nhodou N:? DEY ;Dal  DEY DEY BPL RESINI1 TXA ;N: dosud TAY ;nen  BMI HNDINI ;HATABS pln?RESINI4 LDA # N ;Zapsat N: STA $31A,YTA1 LDA #TABLE:L STA $31B,YTA2 LDA #TABLE:H STA $31C,Y BNE HNDINI* M sto pro uschovn pvodn adresyOLDADR DFW 0* Hlavn program rezidentuTABLE DFW OPEN-1 ;Tabulka proR1 DFW OK-1 ;CIOR2 DFW GET-1R3 DFW PUT-1R4 DFW OK-1R5 DFW SPEC-1* Inicializace driveru:HNDINI RTS* Oteven IOCB:OPEN LSR EOFFLG+1 ;EOF nebyl* Uzaven IOCB, status, pokra. OPEN:OK LDY #1 ;O.K. RTS* Speciln funkce:SPEC LDY #146 ;Nen  RTS ;podporovno* ten :GET LDA $D20A ;Nhodn . BNE EOFFLG SEC ;Nula -> EOFR6 ROR EOFFLG+1EOFFLG LDY #0 ;Nebyl jiT2 BPL OK ;nhodou EOF? LDY #136 ;EOF! RTS* Zpis:PUT STA $D01A ;Barva LDY #1 ;O.K.!T3 RTS************ST SHODN S VPISEM .1************* Specifick st: Adresy pro relokaciTABADR DFW TABLERELOKT DFW TABLE-1,R1-1,R2-1 DFW R3-1,R4-1,R5-1,OPEN DFW R6,TABADR-1,0************ZBYTEK SHODN S VPISEM .1