TOS 4.1 BL⇩¢Ji@) Svoboda¢¢ P%kn`ch p*r let pot[, co jsem doplnil TOS 4.1 o funkci "binary load" ╱odtud TOS 4.1 BL$, jsem byl po(*d*n, abych k tomu n%co napsal. Pokus)m se tedy shrnout, co si je&t% pamatuji.¢ Programy se na Atari od po'*tku vyskytovaly ve dvou form*tech. Jednak jako bootovateln[, jednak jako tzv. bin*rn) soubory.¢ Bootovateln` program mus) b`t v jednom bloku omezen[ d[lky ╱tu&)m 255 blok+$ zav*d%n` na jedno konkr[tn) m)sto v pam%ti a s jednou startovac) adresou. Toto je jedin` form*t kter` um) Atari OS spou&t%t ╱bootovat$ a to z diskety nebo kazety ╱pouze klasika!$.¢ Bin*rn) soubory maj) mo(nost) daleko v)ce. Jednak se jedn* o soubory v prav[m slova smyslu, d*le se mohou skl*dat z n%kolika '*st), ka(d* se m+(e nahr*vat na jin[ m)sto v pam%ti a m+(e m)t svou vlastn) inicializa'n) a spou&t%c) adresu ╱nutno podotknout, ze spou&t%c) adresa se obecn% pou()v* a( u posledn) '*sti$. Atari OS tento form*t neum) nahr*t a spustit a proto se mus) pou()vat n%jak` "bin*rn) loader". To plat) jak pro disketu tak i pro kazetu ╱st*le mluv)me o klasice!$. Tento "bin*rn) loader" se nap@ed mus) do po')ta'e n%jak dostat a teprve on s*m na')t* p@)slu&n` soubor v bin*rn)m form*tu.¢ U disket je typick`m p@)kladem "bin*rn)ho loaderu" n%jak` DOS ╱a to v'etn% MiniDOSu a MikroDOSu$, u kazety nap@)klad tzv. "vyk@i'n)kov` zavad%'" ╱jsou je&t% krom% m% n%jac) pam%tn)ci? Ano, ten vyk@i'n)k a "houknut)" b%hem nahr*v*n) klasiky - tak se projevoval tento bin*rn) loader$.¢ OS Q-MEG ji( umo(uje bin*rn) soubory spou&t%t p@)mo.¢ Pro dopln%n), zn*m`m probl[mem ka(d[ho "bin*rn)ho loaderu" je jeho um)st%n) v pam%ti, proto(e se nesm) vyskytovat v m)stech, kam se program nahr*v*. To je tak[ d+vod, pro' spoustu program+ nelze spustit z DOSu.¢ Klasick[ kazetov[ Turbo ╱hlavi'ka ⇩ jeden dlouh` blok$ je vlastn% obdobou bootovateln[ho form*tu a neumo(uje jednoduch`m zp+sobem zav*d%t bin*rn) form*t ╱resp. m+(e b`t zna'n` probl[m n%kter[ p+vodn% bin*rn) soubory do n%j p@ev[st$. Pokud jste tedy pot@ebovali na kazet% pou()vat bin*rn) form*t, nezb`valo, ne( pou()t klasiku...¢¢ A pak jsem p@i&el j* se svou ]pravou TOSu 4.1...¢¢ No, existovala sice je&t% mo(nost pou()t n%kter` jin` Turbo opera'n) syst[m, ale ty nebyly na rozd)l od TOSu 4.1 p@)li& v oblib% ╱pravd%podobn% p@edev&)m proto, (e to byly vesm%s p%kn) bumbrl)'ci podporuj)c) i pr*ci s disketou$ a tak[ si ji( dnes nejsem p@)li& jist`, zda nem%ly n%jakou vlastn) implementaci tohoto form*tu - ha, (e by se i tehdy vyskytovalo to, co je dnes b%(n[... :-╱ $.¢ Jako ide*ln) form*t pro bin*rn) soubory v Turbu se toti( jevily ╱a dodnes jev)$ tzv. "kilov[ bloky". Libovoln` bin*rn) soubor dostanete z diskety do kilov`ch blok+ nap@)klad pomoc) mal[ jednoduch[ kop)rky TCOPY. Rovn%(, nap@. pokud v MAC/65, spu&t%n[m pod TOSem, zad*te kompilaci do souboru ╱ASM ,,#D:SPUST_ME.COM$, v`stupem budou zase kilov[ bloky ╱a p@edev&)m bin*rn) form*t$.¢¢ Ale ')m je nahr*t? TOS 4.1 BL!¢¢ TOS 4.1 je skv%l` Turbo Operating System od brn%nsk[ho autora Milana ②)hy. Byl to jeden z m`ch nejobl)ben%j&)ch program+ a jeho autorovi pat@) m+j velk` d)k.¢ M* l*ska k tomuto kousku software do&la tak daleko, (e jsem si ho cel` disassembloval, za'al ho proch*zet a na pro m% zaj)mav`ch '*stech prov*d%t "reverse engineering". Na&t%st) jsem relativn% brzy z)skal origin*ln) zdroj*ky tohoto programu ╱nav&t)vil jsem tehdy osobn% Milana ②)hu, abych je vyzvedl pro Zdeka Buriana, kter` m% k n%mu vyslal$.¢ Z origin*ln)ch zdroj*k+ jsem mj. zjistil, (e autor programu po')tal s mo(nost) budouc)ho ro&)@en) a implementoval jednoduch` zp+sob, jak doplnit funkci pod p)smeno E ╱jist%, &lo by to zm%nit, ale pro' to tak nenechat$. O to bylo jednodu&&) implementovat funkci "Binary load", kdy( jsem se k tomu rozhodl.¢¢ "Binary load" roz&)@en) jsem napsal v assembleru v MAC/65. Pokud si dob@e vzpom)n*m, na&el jsem v n%m o p*r dn+ pozd%ji je&t% drobnou chybku a po oprav% do&lo k p@ejmenov*n) na TOS 4.1 BL⇩. J* s*m jsem ho vyu()val p@edev&)m na p@ev*d%n) fin*ln)ch verz) program+, kter[ jsem vyv)jel, z bin*rn)ho form*tu do 'ist[ho Turba. Proto(e jsem ji( v t[ dob% m%l Q-MEG, jako b%(n` bin*rn) loader jsem ho p@)li& nevyu()val.¢