8(CA@AUTOEXECTOEXEC-------  c}E q0 \C)CC8`DCeECiD` RP h1$E ȍ @y b Y)hܭ]L]` q  DMD   u j)`0  ,p0i2 &28jJ1f02 9 g iJf0i1)xԍӭ232002XԦ`  *'  } *(L `(  L l pL[,L] C i0 } p  gފދLh ( LD 0  C  C  \i +$+0'}; $(%)  b L[C `D P^߰")(݃   $DD}G@НL]S")M T H0 G$Ș݃ b 8$}$%8(() T `$E0(0)8`$GE` P} Li 8GD }L[ PH >iJ ;  yyB } ' |L[ "E( % H$ H#`L]B  0 G LO<  ( d lH۪!A3 A }jA !B EIC Y$E0 F  < 7 JN8Ndâ!,P h0ʠJd,6 } ' r/ $ ɛ ` '  L[  l }-     }    L[L  }  '  L[   p  ` g  l }) g ' }L[) ̠,L]T-0 |LM N݃:ː6UV LM N L(TU N,)M}LL[IL3GDIɛ ɜ DI  , JȊGм  G I) GȦ=}*GG ȄI1200820I H1E 1h0hIGI2ȢI`FE 0ɛ rɛ$ l '}蚦TTUVD`M L$:;Pyȱ$` r  iȱ$/:ȱ$VWyA**⩀ / }`$***? mL]-+ȱ$ɛ m* ? g. $0f.?'@BrAsTt[ }0: gL  `$0`j`& CpCi s L0JCܢj? I#}𴽎F ގМގ& & 0 C4 08L`0   | 레L] EGȽGȽ}G | E` 8,  }EG)݀G)ȱGȱG`"!L] l!i}栠$8  (IƭIp  h,g+j? 8 ii(Lq)! }S S0$}) E9`H)N,L]8GH Lq`gNgfj****8jHi h` } 2J  &e2i`"%?&;^$IM ! ! <u hh`$}Ev옝^! 1EHFHjm GHm H`u$Ev`L=? +`!,pFE ȄD8 }q D&E`I0` i`+DOS SYSMOC.I  J ٍ = ) F)}8`Ll T!U<; Ln <JM -18    HH =}D 1 :  /1[F:M #.! 0`>C #   #`>   e}L'>/b;\I\o@ @LK~ L  % /e  L ; H}H0S0N:;=91D,1ɛK$ɛ`:;ʾ  ,ɛ}`XYȄ #`DTDRLUFFFCICLRSJ==CIYEEONSMDLNOOUAOOOARPLNCL#####PANVBNFR*),-PQORa/%<}) j ө  RES L%-, # 3 0 %   4(H 4(` }( 3  #  ZOiۨ L4RE 3 =F S Z +8!} 0+  FF % 4 4& 4(X)Y    # 4 ʤ Ȅ L"}F F LH hL4`*J 0 B B 0a   8#}    Lkl  );<  : ` 0 } T T 7̀΀$}LIl <;`<L 3   #/ ! R( 7 7   7 89i L7 ,(&  %} L480  ` Ln    `   HJJJJ h) ii0HI B V`0  ,BLV&}[J  B Vso Fhh` GH ,H hɐɀɡ)HDCȱCɛeCD먥D h'}N MSп` ED` OIH`hhXhh  nL Free FilesBreakI/O-Error 140Disk f(}qllWrite protectedFile MismatchBad Filename}Disketovy magazin FLOP 35, 3/95 --------------------------------File lock)}edDevice doneDirectory fullFile not foundBad Load FileNot DOS II+Bad HexAbort-> Source-> DestinationD1:+DOS SY}'FLOP 35''TITLE35FLOP35d)l od &ina i v&ech lid), kter`m jsem tohle v&e vypr*v%l, v%d%l. Je to Vrchlab) ;-$.vn) sXMn?8p?,}xx??|pp~~|}<~?-}~ ?x>?.}???|x?>?>~/}?x?~>>??>~ 0}? ??>??>>>?~?>?1}?>?>x>>???>>??<?>>02}?>???>|???>?<??~3}????|??????>?p4}??`????5}?@08?<?6}>>?~?7}8}%PUfUX9}UYZVZjfjYi:}VVfY`ZUfZf YZ%;}ZiZZeeYfeeVii ZiYijjff<}j UUZ@YYZVZ`Zjj)UZj@٦ZUZ=}?eVjjejZjjYUeUUeijejUjYfe>}YZeYZ efiUeYUjZZZjfZ _UUYe fiZ?}WUeifjgEUUee(uW}YAUjUi_efjjѕVjif@}dw}eVZyYYeU@uYUeiijUZPHZjiZ)/ZA}@fVUiZjiiUeZeZ`w@ViYIYeZieiUUeUU B}YYUZXYYZ VUVZiYZVUejUVUUUVVUKC}VUiUUUVfj٪YiUZY/f}UUf?jiD}WWUiIYViUedPeUjeVUU$Yi _[uUVZVUUh}E}UUfjuUfuvefY֥OUUVeVVuwW֘uUF}X UUUd_YUVVfZeUUUWQ_UVi_UUUU_eUeEUUeUVG}TwUUUUU_uUxYUT }UUUUU_]_UUVYeUUWUUUWwUiYUZ*UUPH}UUUUU_oU5gUVUUUUUUUWvUUUUU%gUUUUUU}YUVf"iUUUVI}UuWUUUWYiUV`)UUWZ}UUUUUEiUZZYUUU_UVWUUUu_9WUUWUiW_UUJ}UUU_ՄfUUUUUo_UUUUUW|UUUUUWUUU_WUUUU__ VZ UUUUUUUiWWUUUUUWK}}uHUUUuUuVf_UUUUUUUV Հ*UU]]uVU_UUUUUUUQ 'UU]uwVV_UUUUUUUezVL}j eUU__U}uUUUUUUif_UU~uuuwTfUeUUUUUW}e^UUUWTUjUUUWWUUU}iwvM}UUW_uWUT UfUUUWUUUU@UUWU]UT VUUWwWUUUu_YUUwwuWuTfeVUWUUU]UUU]N}UUUTYY_UUwUWWQu_UUUw_WuwXVeVUUW]]_[]vAUU]_U]YU_UWU[U_Gz?W`%WWwWO}PfjU_UUUUUU_WVUUU]}]Y_UUuUUUkUUu_uWU`UeWUU}UUW} &UW_@P}iUWUUUWU_xUUwWwwW@=eUUWUU_UUU}eU@5YWUW_UW_]UWW_@UjUUYUQ}U_UU_]UUYWUG_ %UW}w=UYUUUWUUxVUUU=UUUUUUR}U}@ UWwWw`VUVeU_]UU}|UUW]wߪw@vUV_UUuUUieUuwww~w?@UiUVUUWUU}]YUS}?UU]_?@eYUWuW}wUXpUU_}UjW?@VUUWU_WTW@ UU?UUUeYWU__UuU]UUT}WWwiP`?@UUUUUUWU__UUUXUUU?@UiUUWUU}uUPUUWD?@UYVUUUWU}UUUXUU]wU}vϠD?@UUYU[UWqUUuwwv97@UfUUUUUY]_UU~ 9?@UYUUUWWUW_YUuwwꪪ^V}@2UZYUUUUeUUe]]OUZUVYZ_eWu~Uj__5UUVUeUUY_UU]ꞥW}UUiUYUY_UuWWwwZ?UUiVUUUVefeXU]?UYUUUUUZUW@ Wuwwz==TUUX}YUUUejVYU_W~4UUUUUVYUYV _]~~BXUUfeViVbUU_]_}ޥ_@=PUiUUY}YY WwwwwwjUhUeZeUZV*ZUiU]^uЀ}YeYUUUiUUWz_i}_UeUiVVUUUPZ}U]שUUUVYUUUWwzwU_xUUUUUUiUUUY]UڟUUVUUUVUW[}zzW_ UUUU%UW_zߪjUYUUUUiPWw}z_`UUjeYUUUUUW\}jUUUUZUUZUUUW_ڪ_RUUUjUUUTU}_]ڟfUPuUUUUYZeQWw]}WZUUVVUUUeAUU`%UUueeU&WUWU_wzWWeUUeVUUUUU_]_j^}UUWYYYUUUUU_uWv UU_iUUUUUUUWڥWjUWUUUUwUWuU_}UU]UUUUWUU]XU[UWUUWuUuU]U_UUUUUUX`}UX?ՙUUWUwUUWUUUUUWڟUUUUUUVUUWWwwuUWgUUUa}UUU_UU@%UUZUUUWUWPUUbUUUUU@UՀUvUUwb}uwUWZUVUUUU:?U_@YUU]W2?UUt(UVUUW@?_c}}U_HUUUWwW4?_uU@UUUU_UUUXGUW]woUUd}XUUW OUUY9wUwwWOUu}@U?UU}@^Ue}_uuW|WV]]%,?_]`_uuuW?Zf}]?H_WW ?U-_]?fg}w0?']_fUDth}wÀXu}wA}UTUwwi}w?@u`u@F'UWuU v'W]Uj}?'UUUW@@UU]U]uuwUUPxk}_UUUwUwuWP}@l}UuWW_/m}WuXEWUU`n}Z*_`*uo}}Հ%vXp}<@<<lllllll0|||fl0fF8l8pv000p88pl88l~0~q} 0`||0p00||||``<`| >||||~|0 0 ~~`0 0r}`8ll||||<< xs}|||v|p|00000|f<ll|x00 8``0 xxt}8l|xl<| x |~l8l8|~v~~l8||l8  | 8<8l8v8l| <>>C}VM4.0<<< BY RADEK STERBA, RASTER 19958 j jFAn0}R"zU4w`N8'xpjd^WR P(y}yy yyyy yyyy8yyyyPy1xzyy yzyy y zyyhyzyy y,zyyhy>zyyy x@zDz   }                 z  } jz``yllzyyll `yl`[QQyyl`[QHQ[[`lllyyyDHHQQ[[`Qy}yl`[QHDHHQQ[[QQ$".x.x@ƀȀƀŀĀ$  @@@@@@@@ !/@@@}@@@ %/@@@@@/ԩL:BB;BF0A1<@ 4A"/} 4A p 4A 4A/0A1?Bԩ"/ 4AxtpA@A}:B ;BE x:BB;B:B;B@эԭA)A8B 4A@@AL@ 0@P`p`P@0 /ԩ@Ԡ 4A p}`EAEA`ppppppppppppOXMOPAFApppNS}N`AB}RLBAAHЩh@Vau6ItAm6AsumagazInu&,/0par}donpopletlamEtahudbasamozRejmEu&,/0u$neSnICIslojejakoobvykBCleplnWzajImavYchClAnkJ novinekadalS}IchvEcI kterYmi6Aschcemezaujmout3nadse6AmlIbIitohleUvodnIdemICko kterWpro6AsudElal2adek]tErbatuhudbut}aky $oufAm ZejsteseoprAzdninAchmElifajn-yjsmejetrAvilimimojinWipracCDovnE vYroboutohoto&,/0u}.otakjo uZnebuduzdrZovatplanYmiReCmiobrAzekjstesiuZasitakyprohlWdlihezkej Zejo takZepokuduZ6As}tadynedrZIanitapEknAmelodie odklepnEteto aTpopojedem!teDznovupD=EropomalWCtenARe}Vau6ItAm6AsumagazInu&,/0pardon@em!teDznovupD=EropomalWCtenARe; #<<lllllllp88pl8||l8|||l8|~l8 8` 8< x |~8l8v00 }0 0`||8x~||||``<`| >||||~|0 0 ||`0 } 0`} t)m zaj)mav%j&), (e hudbou by m%l jestli v&echno vyjde$ p@isp%t tak[ T.Liebich a F.Brooker ur'it% si pamatujete na HMC$. GA?}rafiku by m%la m)t na starost taky spousta lid). Hlavn)m koordin*torem a autorem projektu je A.G.C.I kdy( se mi cel` tenhle A@}pl*n zd* b`t snad a( p@)li& velk`m soustem, chci v%@it, (e se v&e autorovi poda@). Rozsah hry t[( potvrzuje pl*novan* doba doAA}kon'en) - koncem roku 1996. Nezb`v* mi tedy nic jin[ho, ne( pop@*t autorovi hodn% zdaru a V*m trp%livost... AB} -R-Pro ty "nadan%j&)" z V*s je zde nab)dka:Firma A.G.C sh*n) grafika. Podm)nkou je zasl*n) uk*zek sv`ch AC}prac) obr*zky, dema atd.$, solidnost a spolehlivost.Adresa: A.G.C., Arno&t Mat%jka, Kytlice 164, okr.D%')n, 407 45ek sv`ch @tPC Xformer 3.2, emul*tor Atari 130XENen) to dlouho, co jsme se zmiovali o emul*toru Atari 800XE/XL pro po')ta'e PC PC XfEE}ormer2.5$. A u( je tady jeho dal&) verze, roz&)@en* a vylep&en*. N*sleduj)c) informace o n%m jsou z diskusn) skupiny "comp.syEF}s.atari.8bit", kter* existuje na Internetu. daje a v&echna sd%len) byla ponech*na v p+vodn)m stavu, pouze voln% p@elo(ena z EG}angli'tiny. Pozn: i v&echny ostatn) 'l*nky a dotazy v t[to z*jmov[ skupin% byly v angli'tin%.$I kdy( asi m*lo z V*s "skaln)EH}ch" atarist+ m* doma krom% Atari i PC a k tomu je&t% nejm[n% 486$, mysl)m si, (e tyto informace jsou dost zaj)mav[. M+(ete mEI})t tak[ radost z faktu, (e i n%kte@) majitel[ vysoce v`kon`ch PC spou&t) na sv`ch nov`ch Penti)ch emul*tor po')ta'e, kter` V*EJ}m le() na stole u( spoustu let. -R-v`b%r a voln` p@eklad z angli'tiny$Darek Mihocka, EK}Branch Always SoftwarePC Xformer 3.2- Je zp%tn% kompatibiln) s d@)v%j&)mi verzemi PC Xformeru a ST Xformeru a s virtu*ln)miEL} disky vyroben`mi pomoc) SIO2PC propojen), ST Xformeru a PC Xformeru.- T@emi nejv%t&)mi vylep&en)mi ve verzi 3.2 jsou: RYCHLEM}OST, RYCHLOST a RYCHLOST! Program je speci*ln% optimalizov*n pro po')ta'e s procesorem 486 a Pentium. D)ky tomu je o 40 a( 70EN} procent rychlej&) ne( d@)v%j&) verze. Nelze jej ji( ale provozovat na 286 a 386-k*ch.- Budete-li provozovat PC Xformer 3.2 EO}na 90MHz Pentiu, pob%() emulace asi 9-kr*t rychleji ne( 130XE. Bude to tedy, jako byste pracovali na Atari s 16MHz procesoremEP} 6502$. Na 486/66 pob%() emul*tor asi 5 kr*t rychleji ne( skute'n[ Atari. I na nejpomalej&) 486SX pob%() emul*tor rychleji neEQ}( skute'n[ Atari, a to bez nutnosti HW roz&)@en) va&eho PC.- Pro zaji&t%n) spr*vn[ho b%hu v&ech program+ jsou vestav%ny dva ER}rychlostn) mdy: NORMAL 1.8MHz$ a TURBO podle v`konu PC$.- PC Xformer m* vestav%n` 6502 debugger, kter` umo(uje sledovat ES}a m%nit obsah pam%ti, disassemblerovat 6502 kd apod. - Emul*tor m* pln% funk'n) PMGrafiku s detekcemi koliz), grafick[ mdyET} GTIA, ANTIC display list, p@eru&en) DLI, 256barev, emulaci joysticku na kurzorov`ch kl*ves*ch$, zvuk, p@ipojen) tisk*rny a EU}modemu atd.B%hem srpna je PC Xformer 3.2 prod*v*n za zav*d%c) cenu pouh`ch 29.95, pozd%ji bude jeho prodejn) cena 34.95.EV}Registrovan) z*kazn)ci PC Xformeru mohou "upgradovat" za pouh`ch 15.PC Xformer 3.2 bude od 1.z*@) k dost*n) u hlavn)ch AtEW}ari dealer+ v'etn% American Technavisions, B C Computervisions, a Toad Computers. Zavolejte va&emu region*ln)mu Atari dealeEX}rovi pro jeho objedn*n).Jak je skute'n% rychl` PC Xformer? P@edkl*d*me n%kolik test+ s porovn*n)m rychlosti p@i provozu na EY}130XE, PC486/66MHz a 90MHz Pentiu:Benchmark #1 jednoduch` FOR NEXT cyklus$:10 FOR X = 1 TO 10000:NEXT XAtari 130XE: 22EZ}.5 sec66 Mhz 486: 4.6 sec 5-kr*t rychleji$Pentium/90: 2.4 sec 9-kr*t rychleji$Benchmark #2 test rolov*n) obrazovky$:E[}10 FOR X = 1 TO 1000020 ?X;30 NEXT XAtari 130XE: 109 sec66 Mhz 486: 29 sec 4-kr*t rychleji$Pentium/90: 14 sec 8-kE\}r*t rychleji$Benchmark #3 rychlost kreslen) 'ar v grafice$:10 GRAPHICS 820 COLOR 130 FOR X = 0 TO 31940 PLOT X,050 DE]}RAWTO 159,15960 NEXT XAtari 130XE: 32 sec66 Mhz 486: 8 sec 4-kr*t rychleji$Pentium/90: 4 sec 8-kr*t rychleji$Nyn) E^}douf*m ch*pete, pro' je pro hry nutn[ m)t mo(nost b%hu emul*toru v norm*ln) standardn)$ rychlosti!Copyright c$ 1995 BrancE_}h Always SoftwareDarek Mihocka, the author of the PC Xformer can be contacted at:e-mail to: BraSoftaol.comor on the "comp.E`}sys.atari.8bit" and "comp.emulators.misc" and other newsgroups, or Branch Always Software, 14150 N.E. 20th Street, Ste 302, BEa}elleuve, WA 98007 USA.omp.emulators.misc" and other newsgroups, or Branch Always Software, 14150 N.E. 20th Street, Ste 302, BDJe libo PD nebo SHAREWARE?Ur'it% jste se ji( setkali u spousty program+ s v`stra(n`m n*pisem "All rights reserved", obvykleIc} je&t% doprov*zen[ho n%kolika vyk@i'n)ky. Autor pop@)pad% distributorsk* firma$ t)m d*v* najevo, (e si nep@eje, aby se tentoId} program roz&i@oval jinak, ne( leg*ln)m zakoupen)m. Existuj) v&ak i programy, ve kter`ch je ps*n prav` opak.PD tj. Public Ie}Domain$, FREEWARE"K voln[mu pou(it)", "Voln` program" - tak by se daly stru'n% charakterizovat tyto n*pisy, um)st%n[ v hlaviIf}'k*ch program+. Znamenaj), (e autor povoluje nebo si dokonce p@eje$ roz&i@ov*n) tohoto programu od u(ivatele k u(ivateli. D+Iq})*6Ca6]px ;{B&BРBBBB-----------B*AUTOEXECBATBo+TITLE35 COMB FLOP35 COMB3SYSTEM HYPB-----------BOBSAH35ACAPB OBSAH35BCAPB UVOD35 CAPB%OHLASY35CAPB-----------B 7HTSOTS CAPBDPCXF32 CAPBbSHARE CAPBOUR5NEW CAPBNARSIL CAPBMODPLAY CAPB-----------B UROKY CAPBFU BASB-----------BAHCCZB1 CAPB'7SP180IV CAPB-----------B^HLAV34 CAPBqHLAV34 LT ByCTENRES CAPBPC6 COMBFAK COMB<FAK LM B-----------B)RADYBAS2CAPBTEST1A BASBTEST1B BASBTEST2A BASB TEST2B BASB-----------B*ASMCMP CAPB-----------B@<KURSC7 CAPB|HCCZB1 C B#HCC8ZB1 C BEHCCZB1 COMB-----------vod pro takov[to ozna'en) programu m+(e b`t r+zn`: Autor vyrobil tento program pro reklamn) ]'ely nebo ho pova(uje za natolikIr} mal` rozsahem 'i v`znamem$, (e nep@edpokl*d* z*jem z @ad u(ivatel+ o jeho zakoupen). Takov` program m+(ete bez obav a 'ern[Is}ho sv%dom) pou()vat a kop)rovat dal&)m. SHAREWARETady je situace pon%kud jin*. V%t&inou se jedn* o to, (e autor nen) schopIt}en s*m zajistit distribuci programu. Proto d* program "do ob%hu" s ozna'en)m SHAREWARE a s ud*n)m sharewarov[ho poplatku n%kIu}dy i rozmez) - m+(ete si vybrat dle vlastn)ho uv*(en)$. Pokud se takov` program dostane a( k v*m, m*te mo(nost zdarma programIv} vyzkou&et a pak se rozhodnout: a$ Program budete pro vlastn) ]'ely pou()vat. V tomto p@)pad% byste m%li zjistit v`&i sharewIw}arov[ho poplatku a tento zaslat se svou adresou a ud*n)m, o jak` program se jedn*$ na adresu uvedenou v programu nebo v dokIx}umentaci$.b$ Program nepot@ebujete a nebudete ho pou()vat. Nic neplat)te, ale program nebudete pou()vat.V obou p@)padech mIy}+(ete zdarma!$ poskytnou tento program dal&)m z*jemc+m.Je jen na v*s, pro kterou z mo(nost) se rozhodnete. Sharewarov[ poplIz}atky b`vaj) v%t&inou n)zk[ a jejich uhrazen)m:1.$ honorujete autora za pou()v*n) jeho programu.2.$ zajist)te si zaregistrovI{}*n) u autora. V p@)pad%, (e tento autor vyrob) dal&) programy t@eba i AllRigRes$, m+(e nab)dnout registrovan`m u(ivatel+m n%I|}jak[ v`hody slevy apod.$3.$ podpo@)te autora ve vytv*@en) dal&)ch produkt+. Autor bude motivov*n pro vytv*@en) dal&)ch t@eI}}ba op%t SHAREWARE$ program+, kter[ se v*m mohou tak[ hodit a od jejich( v`roby by mohl z d+vodu neocen%n) vynalo(en[ho ]sil) I~}upustit. A pozor, po')ta'ov* platforma, pro kterou neexistuj) program*to@i, je mrtv*..Ch*pejte pros)m tento 'l*nek jako osvI}%tlen) pojm+ ozna'uj)c)ch druhy program+ z hlediska jejich roz&i@ov*n). Nechci nikomu "sahat do sv%dom)" - ka(d` a se s*m roI}zhodne, kter[ programy bude pou()vat a zda se mu uhrazen) poplatk+ do budoucna vyplat).ahat do sv%dom)" - ka(d` a se s*m roHXP*r slov k OUR5OFT demuRadek t%rba, RASTERV minul[m ')sle jsme uvedli OUR5OFT demo. A( dodate'n% jsme zjistili drobn` prM}obl[m.Na n%kter`ch po')ta')ch neb%() toto demo ]pln% bezchybn% - p@esn%ji - st@edn) '*st obrazu v grafice 9 je zobrazena jakM}oby inverzn%. Kdy( jsme tento fakt objevili, byli jsme dost p@ekvapeni, nebo jsme se s n%')m takov`m je&t% nesetkali. Na n%kM}ter`ch po')ta')ch b%() v&e spr*vn% nap@. na Zdekov% 800XL nebo na Honzov% 800XE$, ale na m[m 800XE a na jednom 130XE kter[M} m%l Zden%k zap+j'eno$ se objevoval v`&e popsan` "efekt".Jedin[ zd+vodn%n), kter[ m% napad*, je n%jak` rozd)l v hardware t%cM}hto po')ta'+. e je ale tento rozd)l i u dvou typ+ 800XE, m% p@ekvapuje. Jedn* se specieln% o rozd)ln[ zobrazov*n) p@i pou(itM}) tak "drastick[" metody, jako je t@eba v OUR5OFT demu u( jsem ji vid%l i v jin`ch dem*ch se stejn`mi probl[my p@i spou&t%n)M} na r+zn`ch po')ta')ch$.Tato metoda umo(uje zobrazovat v)ce grafick`ch md+ na jednom @*dku. U( tato v%ta zn) dost nesmyslnM}%, proto(e ka(d` atarista v), (e n%co takov[ho p@ece nejde. V(dy rozlo(en) grafick`ch md+ na obrazovce zaji&uje DisplayLisM}t a v tom je pro ka(d` @*dek pouze jedno ')slo - a tedy jeden grafick` md... Ale existuje jedna mo(nost:Ka(d` jist% zn* aM}dresu 623 - tato umo(uje m.j. i aktivovat n%kter` z GTIA md+ gr.9, 10 a 11$. Pokud v DLI zm%n)me obsah jej) sleduj)c) adreM}sy t.j. PRIOR: 53275$, m+(eme rozhodnout, zda na jednotliv`ch '*stech obrazovky bude n%kter` z GTIA md+ nebo zda tam bude "M}norm*ln)" md 0 a( 8, 12 a( 15$.N%koho ale napadlo zkusit zm%nit obsah t[to adresy uprost@ed jednoho @*dku. Vyrobil DLI s rM}utinou na'asovanou tak, aby ke zm%n% obsahu PRIOR do&lo a( p@i vykreslov*n) @*dku a ne ji( p@i n*vratu paprsku zprava dolevaM}, kdy nic nevykresluje$. Takto na'asovat zm%nu adresy je obt)(n[, v%t&inou se p@ed instrukci STA 53275 p@id*vaj) instrukce NOM}P tak dlouho, a( je zlom grafiky zhruba na tom m)st%, kde chceme. Nelze to ovlivnit ]pln% p@esn%, proto(e p@id*n)m jednoho NOM}Pu se m+(e grafick` "p@ed%l" posunout t@eba i o 1/5 &)@ky @*dku, ale funguje to. T)mto zp+sobem m+(eme m)t v lev[ '*sti t@ebaM} gr.8 a vpravo 9. A co ta gr.15 ]pln% vpravo v OUR5OFT demu??? Tomu @)k*m tajemstv) HW...Pokusni'il jsem s nastavov*n)m aM} vyp)n*n)m GTIA mdu na jednom @*dku ... a na co jsem nep@i&el:M%jme t@eba takov` docela norm*ln) @*dek s grafikou 8. ZhrubaM} ve t@etin% zleva doprava$ zm%me obsah 53275 na hodnotu 64. T)m p*dem bude od tohoto m)sta v tomto @*dku pokra'ovat gr.9. AM} te zkusme zhruba$ ve druh[ t@etin% nastavit 53275 zp%t na 0. Bude tam zase gr.8?? NE! Bude tam gr.15!!! Pro'?? Na to M}se d* odpov%d%t snad jen: PROTO!! *dn[ jin[ logick[ vysv%tlen) nezn*m. Prost% nastaven)m adresy PRIOR v jednom @*dku na GTIAM} md a n*sledn`m vr*cen)m nuly v t[m(e @*dku$ dostaneme gr.15. Nev)m pro' to tak je, ale je to tak! :-$Tv+rc+m demonstra'nM})ch program+ to umo(uje p@edv*d%t p@)mo "nadp@irozen[" v%ci, proto(e n%co takov[ho vlastn% opravdu teoreticky nelze ud%lat. M}Mysl)m si, (e na takovou v%c se d* p@ij)t jenom n*hodou.Dnes u( v)m, (e tento efekt nebude zcela dob@e fungovat na v&ech po'M})ta')ch. Kv+li tomu bych ho asi snad rad%ji ani nepou()val. I kdy( je to &koda, nemysl)te?!zcela dob@e fungovat na v&ech po'L\ Disketov` magaz)n NARSIL ------------------------ Magaz)n NARSIL pro ATARI ST se objevil v dob% p@ed z*nikeQ}m CRACKu a p@ed zalo(en)m dal&)ho ALBIONu. Distribuci zaji&uje p@)mo &[fredaktor se s)dlem v Brn%. Vyd*v* se na 3.5" diskeQ}t% DD jako dvoum%s)'n)k. V z*@) 1995 vy&lo dvan*ct[ ')slo. Jedno ')slo bez diskety a po&tovn[ho stoj) p@ibli(n% 28 korun - p@Q}esn* cena kol)s* podle po'tu p@edplacen`ch ')sel. Jednotliv[ diskety jsou p@ipravov*ny individu*ln% - ka(d* m* sv+j vlastn) vQ}stupn) kd, bez n%ho( se nespust) prohl)(e' text+. Textov* '*st je nosnou n*pln) magaz)nu. To je p@irozen[, proto(e kde by Q}tak[ redakce brala nov[ a dobr[ PD programy. U &estn*ctibit+ je na rozd)l od osmibit+ mnohem v)ce u(ivatel+ ne( aktivn)ch proQ}gram*tor+. V n*plni jsou recenze, manu*ly a r+zn[ redak'n) rubriky. Na posledn) jmenovan[ se asi 'ten*@i moc ne(enou, ale pQ}@ece jsou d+le(it[, tak jako i u na&eho FLOPu. Po rozpadu klub+ a p@ed zalo(en)m ti&t%n[ho Alertu byly disketov[ magaz)ny jedQ}inou p@)stupnou formou k &)@en) aktu*ln)ch informac) a v+bec k propagaci d%n). Ka(d` nem* mo(nost zapojit se do konferenc) naQ} INTERNETu nebo BBS. Samoz@ejm% n%jak[ PD programy jsou do magaz)nu p@id*v*ny, v%t&inou v zapakovan[m stavu, co( je b%(n` zQ}p+sob. Magaz)n je barevn` a je zam%@en v%t&inou na hry. P@esto se ale redakci da@) uv*d%t i manu*ly na u(ivatelsk[ programyQ} a tak[ 'l*nky o programov*n). Monochromatick[ rozli&en) a programy na n%j d%lan[ t[m%@ chyb). Opov)d* to p@ev*(n[mu zam%@eQ}n) atarist+ i program*tor+. V%t&ina u(ivatel+ monochromu m+(e sv[ stroje p@ipojit k televizoru, asi od p*t[ho ')sla je do narQ}silu zapracov*v*n tak[ emul*tor barevn[ho rozli&en). Z d+vodu ]spory m)sta na disku a patrn% tak[ z d+vodu ochrany proti snQ}adn[mu kop)rov*n) a vyu()v*n) jsou texty zapakovan[ ve zvl*&tn)m form*tu, tak(e s nimi nen) mo(n[ p@)mo pracovat. Prohl)(e' nQ}en) hypertextov`, zvl*&tn) form*t ale umo(uje zobrazov*n) text+ s vkl*dan`mi obr*zky, pou(it) r+zn`ch font+ a p@)padn% i aniQ}mac). Je ale pamatov*no i na mo(nost nouzov[ho vyti&t%n) jednotliv`ch text+ na tisk*rn%. Celkov` dojem z n%j je velmi p@)znQ}iv`, mysl)m si, (e je obohacen)m sv%ta ATARI u n*s.Vydavatel: Karel Rous ml., Fi&ova 22, Brno, 602 00 Q} -ZB-sl)m si, (e je obohacen)m sv%ta ATARI u n*s.Vydavatel: Karel Rous ml., Fi&ova 22, Brno, 602 00 PModPlayer P@ehr*va' standardn)ch hudebn)ch modul+$Je a( zar*(ej)c), co u( v&echno m* mal[ Atari spole'n[ s 16bitov`mi po'U})ta'i. Nyn) tedy um) i p@ehr*vat standardn) hudebn) moduly soubory .MOD$ a to bez jak`chkoliv hardwarov`ch ]prav 'i p@)davk+U}.Co je to vlastn% modul .MOD?Na Atari jsme zvykl), (e hudba je hr*na pomoc) 'ty@ zvukov`ch gener*tor+. Nastavit se d* frekU}vence, zkreslen) a hlasitost tnu. R+zn`m modulov*n)m frekvence a hlasitosti lze dos*hnou odli&n% zn%j)c)ch zvuk+. D* se p@iU} tro&e fantazie$ hovo@it o napodoben) hudebn)ch n*stroj+.N%kter[ nov%j&) skladby pou()vaj) kombinaci klasick`ch FM frekvencU}) modulovan`ch$ zvuk+ a sampl+. Sampl ve smyslu zvukov[ho vzorku$ je posloupnost ]rovn) na v`stupu, jej)ch( postupn`m nastavU}en)m dojde k reprodukci p+vodn)ho zvuku. Zjednodu&en% @e'eno: Postupn% se poloha membr*ny reproduktoru nastavuje do r+zn`ch ]U}rovn) tak, jak tomu bylo p@i skute'n[m p@ehr*v*n) n%jak[ho zvuku tedy kdy( k tomuto reproduktoru byl p@ipojen nap@. mikrofonU} $. T)m p*dem m+(eme dos*hnout opravdu realisticky zn%j)c)ch n*stroj+. Na Atari se pou()vaj) zejm[na samply bubn+, kter[ zlepU}&) celkov` "v`raz" hudby zb`vaj)c) zvuky jsou FM$.Modul MOD pou()v* pouze samply. Obsahuje patterny, tj. bloky obsahuj)c) nU}otov` z*pis jednotliv`ch '*st) skladby a dal&) ]daje, aby se v%d%lo, kter* nota se m* hr*t kter`m samplem zvukem$. P@itom jsU}ou v ka(d[m okam(iku hr*ny maxim*ln% 'ty@i samply ale uv%domte si, (e jeden ze sampl+ m+(e b`t nejen klav)r ale t@eba i hra U}cel[ kapely s n%kolika hudebn)mi n*stroji$. Tyto moduly jsou b%(n% pou()v*ny a jejich kvalita b`v* r+zn*. Existuj) moduly dloU}uh[ p*r KB ale i n%kolik 100-vek. Ty krat&) nemus) b`t automaticky hor&) - z*le() na autorovi a jeho schopnostech. Nejv%t&) vU}`hodou MODul+ je, (e jsou p@esn% definov*ny, tak(e je lze komponovat a pak p@ehr*vat na rozd)ln`ch typech po')ta'+. Hudebn) mU}odul, kter` byl vyroben na Amize, si tedy m+(e zkop)rovat a pustit doma i majitel ST nebo PC. Nyn) u( i majitel XE/XL!SamozU}@ejm%, nic nen) zadarmo. Mus)te se sm)@it s t)m, (e na Atari p+jdou p@ehr*vat pouze krat&) moduly. Rovn%( kvalita v`stupu nebU}ude v (*dn[m p@)pad% srovnateln* s 16-ti bity. Ale to nevad), i tak je to skv%l[, obzvl*&t% kdy( si uv%dom)te v`konnostn) rozU}d)l mezi Atari a t%mi ostatn)mi "obry". P@eji p@)jemn` poslech...Tento program se n*m poda@ilo z)skat prost@ednictv)m po')tU}a'ov[ s)t% Internet. -R-slech...Tento program se n*m poda@ilo z)skat prost@ednictv)m po')tT9 V*(en) 'ten*@i, je tomu ji( t[m%@ rok, kdy jsem publikoval ve Flopu sv+j finan'n% zam%@en` 'l*nek, kde jsem mimo jin[]} sl)bil i jednoduch[ progr*mky, kter[ by m%ly pomoci p@i orientaci b%(n`ch ob'an+ disponuj)c)ch osmibitovou v`po'etn) technik]}ou zna'ky Atari na finan'n)ch trz)ch v esk[ republice. Po pom%rn% n*ro'n[m 'tvrt[m ro'n)ku studia na obchodn) akademii p@i]}&ly m[ posledn) st@edo&kolsk[ pr*zdniny, ve kter`ch mi, mimo p@)pravu k maturit%, zbylo i trochu 'asu na sl)ben` p@)sp%vek. D]}*v*m proto nyn) k dispozici &irok[ ve@ejnosti jednoduch` progr*mek, psan` v Atari Basicu, kter` um) po')tat ]roky z pen%(n) ']}*stky ulo(en[ v bance nebo jin[m subjektu pen%(n)ho, respektive kapit*lov[ho, trhu. Na za'*tek pova(uji za vhodn[ vysv%tlen]}) n%kter`ch finan'n)ch pojm+, kter[ nemusej) b`t laikovi zn*m[ nebo ]pln% jasn[. Ji( v tomto textu jsem narazil na jednoduc]}h[ d%len) finan'n)ch trh+. Finan'n) trhy obecn% jsou definov*ny jako instituce, kter[ zprost@edkov*vaj) p@esun finan'n)ch pro]}st@edk+ mezi osobami, kter[ jich maj) v dan[m 'ase nadbytek, a osobami, kter[ v t[m(e 'ase trp) jejich nedostatkem. Tyto trhy]} se d*le d%l) dle obchodovan`ch prost@edk+ na pen%(n), kapit*lov[, devizov[ a komoditn). Pro na&e pot@eby posta') ji( v`&e zm]})n%n[ pen%(n) a kapit*lov[ trhy. Ty se li&) pouze d[lkou obdob). Tedy pen%(n)mi trhy se rozum) instituce zabezpe'uj)c) p@esun]} finan'n)ch prost@edk+ v%t&inou pen%z$ od osob s jejich nadbytkem k osob*m s nedostatkem a to po dobu krat&) ne( jeden rok.]} Kapit*lov`mi trhy se pak rozumn%j) instituce se stejn`m ]kolem, kter` se v&ak t`k* transakc) s dobou del&) ne( jeden rok. P]}rogram, kter` najdete v tomto Flou, umo(uje v`po'ty pro term)novan[ vklady, prol)naj)c) se ob%ma finan'n)mi trhy. Nyn) v&a]}k k pojm+m pou(it`m v programu: Jistina - ob%m prost@edk+, vlo(en`ch na transakce v r*mci finan'n)ho trhu. Pen)ze ulo(en[ na]} term)novan[m vkladu nebo vkladn) kn)(ce.$ rokov* sazba - po'et procent, kter[ po vyn*soben) jistinou stanovuj) ]rok. p. a]}. - zkratka latinsk[ho "per annum", co( po p@elo(en) do 'e&tiny znamen* "za rok". N*sleduje-li za ]rokovou sazbou, zna'), (e]} tato sazba vyjad@uje z]ro'en) vkladu, kdyby byl ulo(en pr*v% po dobu jednoho roku. Pro krat&) vklady je nutno sazbu p@im%@en]}% d%lit, pro del&) naopak n*sobit.$ rokov[ obdob) - doba, za kterou se p@ipisuj) k jistin% ]roky. Zn*my jsou vklady na 1,2 ]}i v)ce let nebo vklady m%s)'n) a v posledn) dob% se za')naj) rozm*hat i term)novan[ vklady na dobu 1, 2 nebo 3 t`dny.$ T)m js]}em vpodstat% vysv%tlil obsah prvn) obrazovky, kterou v*s po')ta' obda@) po opu&t%n) obrazovky tituln) kl*vesa START$. K zad*]}v*n) hodot je snad nutn[ poznamenat, (e ]rokovou sazbu je nutno zad*vat pouze ')sled a d[lku obdob) o'ek*v* po')ta' ve form*t]}u: ')slo, mezera a p)smeno D den, dny, dn+$ nebo M m%s)c, m%s)ce, m%s)c+$ nebo R rok, roky, let$. Pro neznal[ z*kona o dan]}i z p@)jm+, zvl*&t% pak '*sti o sr*(kov[ dani, nutno je&t% @)ci, (e term)novan[ vklady a vkladn) kn)(ky nepodnikaj)c)ch fyzic]}k`ch osob jsou dan%ny sazbou 15 procent 'asem se m+(e zm%nit!$ a vklady prost@ednictv)m cenn`ch pap)r+ depozitn) certifik*t]}y, vkladn) listy, ...$ stejn% jako vklady podnikatel+ a pr*vnick`ch osob jsou dan%ny sazbou 25 procent tak[ se m+(e zm%nit!$]}. Po ]sp%&n[m zad*n) vstupn)ch ]daj+ Po')ta' vyp)&e na obrazovku v`sledky proveden`ch v`po't+. Nyn) m*te mo(nost upravit vs]}tupn) hodnoty pro dal&) ]rokov[ obdob), a to tak, (e po')ta'i zad*te, jakou '*stku hodl*te v tomto obdob) z vkladu v'etn% ]r]}ok+$ od'erpat v pr+m%ru na jeden m%s)c. S takto upraven`mi vstupy provede po')ta' v`po'ty pro dal&) obdob). Program je tedy]} zvl*&t% vhodn` pro ty z v*s, kte@) maj) z*jem ulo(it si nemalou '*stku na del&) dobu, a po t[ z n) od'erp*vat ]roky, zv`&uj)]}ce tak sv+j osobn) nebo rodinn` m%s)'n) p@)jem. S jak`mikoliv dotazy 'i p@)pom)nkami, ale i n*m%ty, se m+(ete obracet p@)mo]} na autora: Bohdan Milar Ji(n) 17783 01 Olomouc Tel.: 068/414 638 i n*m%ty, se m+(ete obracet p@)mo\[12t OBDPJISADADEOBDAURNJUDUMVVa} a}qq******************************* * DATUM VYROBY :--.--.---- * *******************************qq* NAZEV Fa}IRMY :A.S.MORAVIA * ******************************* * JMENO PROGRAMU :-------- *qq*********************a}********** * PROGRAMATOR : * * JMENO :BOHDAN MILAR *qq* ADRESA :JIZNI 17,OLOMOUC * a} * PSC :78301 TELEFON :414638 * ******************************* +@AR@1AfAXKa}0@]-@~(@ -------- *** LOCA ***76-P:H:,$@,76-Pa}:H:,$@,76-P:H:,$@,76-P:H:,$@,00@0@a}0@ F:B2y,@@2';@,;@,'6-@dA +'0@A0a}@@$( ɺ 1!($(1$(POCATECNI JISTINA : 1@4('(UROKOVa}E OBDOBI (x D/M/R) : 4@4('(UROKOVA SAZBA (% p. a.) : 4@4('(SAZBA DANE (15 %/25 %) : a}4@ 6-B:,6-@b 7&@<&@,0 @(CHYBNE ZADANA DELKA OBDOBIT-AX a}b A17<,4D)7<,4d'6-Ae1 A17<,4M)7<,4m'6-@1 A67<,.Ra}"E#6-+A:7@<&@,,',16-'A?6-'AE6-,.( ( (6-$$.(Urok za obdobi : 6# 6-$a}#(Dan z uroku : @# 6-&#(Urok bez dane : JEEMV=(UD/OBD)/DEL*(1+(353/12)*(DEL=365)):? "Mesicni vynos : a}";MVK'6-+',''(Mesicni vynos : T*((MESICNI VYBER : *@^996-%&$'+'@%+AS'@a},$+"Ae,,hA6-+&,'$A(A(Zuroceni puvodniho vkladu:  %r,(((Pokracovat v programu (/) ,a}| 4N+q6-%@+50@O0@@k( a}ɺ n(q(%%(POCATECNI JISTINA OBDOBI : ((((UROKOVE OBDOBI (x D/M/R) : ((((UROKOVA SAZBA (% p. a.) a} : ((((SAZBA DANE (15 %/25 %) :  AD:FU.BAS (x D/M/R) : ((((UROKOVA SAZBA (% p. a.) `K innost hardkop)rky ----------------------- Pro za'*tek se budu zab`vat tiskem monochromatick`ch obr*zk+, i}kter[ jsou schopny v`stupu na pap)r bez ]prav. Jako kreslic) za@)zen) uva(uji jehli'kov[ tisk*rny umo(uj)c) osmibodovou grafi}iku. Jsou to samoz@ejm% dev)tijehli'kov[, ale ov%@oval jsem i 64 tryskovou bublinku a podle p@)ru'ek jsou 24 jehli'kov[ tak[ i}vhodn[. Tiskov* hlava je vybavena svisle um)st%nou @adou jehli'ek. Uva(ujeme-li jich osm, pak na tisk jednoho sloupe'ku je i}pot@ebn` pr*v% jeden bajt. Norm*ln) obrazov* data ZX je vyj)mka$ popisuj) horizont*ln) @*dky. V principu je tedy nutn[ nejeni} p@eskl*dat datov[ bajty, ale i jednotliv[ bity. Uveden` p@)klad je zam%@en` na form*t obr*zku 320  192, co( je n*& monochi}romatick` form*t. Situaci zjednodu&uje d%litelnost po'tu @*dek osmi, tak(e nen) t@eba o&et@ovat n%jak[ zbytky. T)m se ov&em ai}lgoritmus st*v* nepou(iteln`m pro tisk*rny se sedmi bodov`m tiskem a form*ty obr*zk+ s ned%liteln`m po'tem @*dk+. Uva(oval ji}sem nap@)klad i o mo(nosti tisku velk`ch obr*zk+ kreslen`ch na ST, ale zde jsem narazil na jejich velikost 32000 bajt+. Neb`ti} toho, uveden` program by je po p@eps*n) p*r konstant tisknul tak[. V principu se mus) na p@evod br*t osmice bajt+, popisujj})c) body obr*zku le()c) nad sebou, tedy vlastn% 'tverec 88 a v nich p@eh*zet jednotliv[ bity. Uveden` p@)klad v C programu vj}yu()v* mo(nosti p@)m[ rotace bit+. Cel` 'vere'ek p@ev*d)m najednou v jednom nejvnit@n%j&)m$ cyklu. Doch*z) zde proto k dvoj)j} rotaci. V prvn)m kroku je t@eba vz)t nejv`znam%j&) bity, co( se provede logick`m sou'inem s hodnotou 128. T)m jsou v&echnyj} ostatn) bity vynulovan[, nejv`znam%j&) z+stal v p+vodn)m stavu. T%chto osm bit+ je t@eba poskl*dat do v`sledn[ho bajtu do @aj}dy za sebou a k tomu je pou(ita rotace doprava, postupn% o 1 a( 7 bit+. Bity skl*d*m tak, (e nejv`znam%j&) bit popisuje nejhoj}rn%j&) bod v uva(ovan[ svisl[ lince. P@edpokl*d*m, (e se j)m standartn% ovl*d* nejho@ej&) jehli'ka. Existuj) podle p@)ru'ekj} snad tisk*rny, kter[ maj) ovl*d*n) jehli'ek obr*cen[, ale nikdy jsem takovou nevid%l, ani o (*dn[m konkr[tn)m typu ne'etl. j} V druh[m kroku jsou na @ad% bity za n%jv`znam%j&)mi, tedy vlastn% s ')slem 6 p@i jejich popisov*n) od 0 do 7. Proto je pot@ej}ba prov[st rotaci doleva o jedno m)sto. P@ed t)m je ale vymaskov*n &est` bit logick`m sou'inem s hodnotu 64. A tak to jde d*lj } a( k nejm[n% v`znamn[mu bitu. V cel[m p@evodn)m algoritmu je @ada rezerv pro jeho zlep&en), k 'emu( vyb)z) jeho pomalost. j }Nap@)klad zaraz) na prvn) pohled dvoj), zd*nliv% nesmysln* rotace. Bylo by mo(n[ ode')st hodnoty pro posuv a prov*d%t pak jedj }in`. Jen(e posuvy jsou pravd%podobn% z hlediska procesoru mnohem rychlej&) ne( matematick[ operace, proto jsem je nechal rad%j }ji dvoj). U(ite'n%j&) by z@ejm% bylo vypustit vnit@n) cyklus ]pln% a rozepsat pr*c) s kazd`m bitem zvl*&. Prost% obsah cykj }lu rozepsat osmkr*t s dosazen)m konkr[tn)ch hodnot pro ka(d` bit. P@i jin[m uspo@*d*n) sledu operac) nebude nutn[ maskovat j}ka(d` bit jinou hodnotou, kter* se zbyte'n% po')t* v cyklu d%len)m 128/2, ale pou()vat pouze 128. Posledn) bit je z@ejm% maskj}ovan` zbyte'n%, proto(e jeho rotac) o sedm m)st doleva se v&echny p@edchoz) asi vynuluj) sami od sebe. Tuto ]vahu by ale byloj} nutn[ nejd@)v% ov%@it, proto(e chov*n) t[to operace m+(e b`t z*visl[ na druhu programovac)ho jazyka. Skl*d*n) v`sledn[ho bj}ajtu by asi bylo chyt@ej&) d%lat logick`m sou'tem, proto(e bude rychlej&) ne( aritmetick[ s')t*n). V&echny tyto ]pravy m% nj}apadly n%kolik hodin p@ed dokon'en)m magaz)nu, tak(e jsem je s*m ji( nezkou&el. Jsem v+bec r*d, (e se m% program po dopln%n) j}dal&)ch funkc) v+bec poda@ilo znovu zprovoznit. Nakonec kurs C['ka je psan` pro program*tory, tak se sna(te. V`sledkem p@evj}odu jsou nachystan* grafick* data pro tisk*rnu, kter* jsou na rozd)l od jin`ch hardkop)rek trvale nachyst*na v pam%ti pro opaj}kovan` tisk. Ona taky jejich p@)prava je o dost pomalej&) ne( u jin`ch program+.$ K proveden) vlastn)ho tisku je t@eba posj})lat na tisk*rnu @adu povel+. pln% na za'*tku se mus) nastavit od@*dkov*n) takov[ velikosti, aby mezi grafick`mi @*dky nevznj}ikaly mezery. Ze svisl[ vzd*lenosti jehli'ek 3/216 vych*z) velikost posuvu na 24/216. Proto p@ed tiskem pos)l*m povel ESC 3 j}24$. Z*vorkami zde nazna'uji skute'nou hodnotu, na rozd)l od p@edchoz)ch znak+. ada hardkop)rek pou()v* nastaven) povelem ESj}C A n/72 s parametrem 8. Pak nefunguj) nap@)klad na D100M, proto(e jej nezn*. Slu&n* hardkop)rka pro tisku nastav) od@*dkovj}*n) vhodn[ pro tisk textu, nejl[pe na standartn) hodnotu 1/6". J* na to ]pln% zapom%l. Pokud bude n%kdo cht)t zkusit pou()t pj}rodukovan[ obr*zky do apka, opravte si to ve zdrojov[m v`pisu, nebo dopi&te ru'n% kd do textu v apkovi. Tedy hned za povelj} k nata(en) obr*zku takto: 3. Zde znak  p@edstavuje hodnotu 36. ada hardkop)rek pou()v* povel pro nastaven) jednosm%rn[j}ho tisku, proto(e p@i obousm%rn[m doch*z) k rozh*zen) svisl`ch 'ar. Zde je vynech*n z*m%rn% ze dvou d+vod+. P@edev&)m v%t&inaj} tisk*ren po grafick[m povelu sama p@epne na jednosm%rn` tisk. V)m jen o D100M, kter* to ned%lala. To m+(e b`t v)tan[ p@i dvoj}jpr+chodov[m tisku. Ka(d` tiskov` @*dek grafiky se skl*d* z grafick[ho povelu a jeho dat. Pou(il jsem univerz*ln) kd ESC j } m, n1, n2 jeho( parametrem m se nastavuj) r+zn[ druhy grafik. Je ale t@eba v%d%t, jak[ dan* tisk*rna umo(uje. Parametry nj!}1 a n2 ur'uj) po'et sloupc+ na tisk, v na&em p@)pad% jde o 320. Za ka(d`m @*dkem se pos)l* povel pro n*vrat tiskov[ hlavy, j"}pop@)pad% pro od@*dkov*n). Ten nen) pou(it`, proto(e u tisk*rny p@ipojen[ k mal[mu ATARI p@edokl*d*m trval[ nastaven) na autoj#}matick[ od@*dkov*n). Pozice obr*zku se ur'uje nastaven)m lev[ho okraje nebo pos)l*n)m mezer p@ed grafick`m p@)kazem. Tuto mj$}o(nost jsem ponechal, proto(e nev)m, kolik tisk*ren akceptuje povel nastaven) lev[ho okraje ESC l n. Jako hlavn) rys prograj%}mu jsem od za'*tku p@edpokl*dal mo(nost kvalitn%j&)ho tisku pomoc) dvoj)ho pr+chodu @*dk+. Hrozn% mi toti( vad), tisknu-li tej&}xty v re(imu NLQ a te do toho p@ijde vybledl` obr*zek. A to pros)m i v tex*ku na ST! Situaci u na&eho syst[mu komplikuje j'}automatick` LF, tak(e jsem byl nucen prov*d%t inverzn) posun pomoc) ESC j n. *dn* jin* mo(nost k n*vratu hlavy na za'*tek @*j(}dku m% nenapadla. Nev)m ale, nakolik je povel u tisk*ren roz&)@en`. Samoz@ejm%, (e ve FLOPu popisovan* SP-180 jej m*. P@ed j)}op%tovn`m tiskem @*dku prov*d)m posun o 1/216, ')m( by se m%l doc)lit efekt zv`razn%n[ho tisku. Tot[( by mohl prov*d%t ji( zmj*}iovan` obousm%rn` tisk na D100M automaticky, co( bych cht%l vid%t. Ovl*d*n) hardkop)rky je velmi primitivn), proto(e se skj+}l*d* z @ady dotaz+. Zad*n) hodnot se potvrzuje stiskem RETURN. Na'ten) obr*zku by m%lo b`t pro ka(d[ho bez probl[m+, jen sej,} pak mus) 'ekat na p@epo'et. Potom je mo(n[ volit opakovan% tisk. Nejd@)ve se vol) v`stupn) za@)zen), kde je mo(n[ zadat tij-}sk do souboru. Pozor, tisk na obrazovku je tak[ mo(n`, ale poni') na'ten` obr*zek. Druh` dotaz je na patrametr grafiky, mysj.}l) se t)m pro povel ESC . Dal&) je kvalita, 0 a 1 ur'uje oby'ejn` nebo dvojpr+chodov` tisk. Lev` okraj je jasn`, jeho hodnotj/}a je omezena na 150. N%kte@) toti( mohou m)t i tisk*rny na form*t A2. Ov&em pro A4 je vhodn`m maximem 40. Posledn) dotaz jej0} na pou(it) p@)m[ho povelu nastaven) lev[ho okraje. Jinak se pou(ij) mezery. Mo(nost v`stupu do souboru umo(uje za'lenit oj1}br*zky do tisku pomoc) apka. Je tu ale dal&) probl[mek, nejen zapomenut` kd pro zp%tn[ nastaven) od@*dkov*n). N%kter[ tisk*j2}rny toti( rozum) b%(n`m grafick`m povel+m jen v mdu Standart, kde(to 'e&tinu Kamenick`ch tiskneme v mdu IBM. Ke sv[ vlastn)j3} tisk*rn% nem*m p@)ru'ku, (e by v n) t@eba byl alternativn) povel pro tento md. Podle p@)ru'ky pojede SP-180, SEP-510, je j4}ov%@en* i STAR LC-20, dokonce i CANON BJ-230 a pokud si pamatuji na D100M, tak fungovat bude tak[. Ve v`voji harkop)rek byj5}ch cht%l, bude-li 'as pokra'ovat. V pl*nu m*m ji( dlouho$ p@ipravit program vhodn` k tisku orienta'n)ch p@ehled+ archivovan`j6}ch obr*zk+. -ZB-m*m ji( dlouho$ p@ipravit program vhodn` k tisku orienta'n)ch p@ehled+ archivovan`h*=92 definice znaku obr*cen[ho lom)tka Tisk*rna SP-180 a podobn[ 3.'*st -------------------------------- Textn8} nen) prakticky ov%@ovan`.ESC R 27,82 1B,52 Pouze md IBM, ru&) vertik*ln) i horizont*ln) tabul*tory a nn9}astav) standartn) hodnoty.DEL 127 nebo 255 7F nebo FF Pouze md Standart. Ma(e jeden p@edchoz) znak, ale v prn:}oporcion*ln)m mdu je ignorov*n. Vertik*ln) tabul*toryESC B n1 n2...nk NUL 27,66,n1,n2..nk,0 1B,42,n1,n2...nk,n;}00 Nastav) vertik*ln) tabul*tory v tabulce '.0. Hodnoty n ud*vaj) ')sla @*dk+ a mohou b`t v rozsahu od jedn[ do 255. Tabul*n<}tor+ je mo(n[ ve standartn)m mdu nastavit 16, v mdu IBM 64. Cel* sekvence kon') nulov`m bajtem. K nastaven) tiskov[ pozicen=} na n*sleduj)c) tabul*tor se pou(ije p@)kaz VT. V`maz tabulky se provede vynech*n)m hodnot n, 'ili vlastn% p@)kazem ESC B 0$n>}. Potom je VT tot[( jako CR. Hodnoty n mus) b`t se@azeny ve vzestupn[ @ad%.ESC b m n1..nk NUL 27,98,m,n1,n2..nk,0 1B,62n?},m,n1,n2...nk,00 Pouze md Standart. Nastav) vertik*ln) tabul*tory v osmi mo(n`ch tabulk*ch '.0 a( 7. V`b%r tabulky @)d) pan@}rametr m. )slo nula je shodn[ s povelem ESC B. Hodnoty n ud*vaj) ')sla @*dk+ a mohou b`t v rozsahu od jedn[ do 255. I ostatnA}n) je shodn[ s p@edchoz)m povelem.ESC / m 27,47,m 1B,2F,m Pouze md Standart. Nastav) aktu*ln) tabulku vertnB}ik*ln)ch tabul*tor+ z osmi mo(n`ch. Parametr m je v rozsahu 0 a( 7. )slo nula je standartn% nastaveno po zapnut) tisk*rny. nC}Vlastn) pohyb se prov*d) povelem VT. V`b%r tisk*rnyDC3 19 13 Nastav) tisk*rnu do neaktivnD}n)ho stavu. Reaguje nyn) jen na povel DC1.DC1 17 11 Vr*t) tisk*rnu do aktivn)ho stavu. nE} Download Pro svoji obs*hlej&) problematiku je zat)m popis vynech*n. )zen) vstupn)ch dat - pouze StandartESC = nF} 27,61 1B,3D Nastav) nejvy&&) bit na nulu. Od v&ech vstupn)ch dat vy&&)ch ne( 127 je ode'tena hodnota 128.ESnG}C> 27,62 1B,3E Nastav) nejvy&&) bit na jedna. Ke v&em vstupn)m dat+m ni(&)ch ne( 128 je p@i'tena hodnotnH}a 128. Tisk se tak prov*d) pouze stylem Italic.ESC # 27,35 1B,23 Likviduje oba p@edchoz) povely. nI} )zen) tabulek znak+ESC 6 27,54 1B,36 Standart md: Povol) na pozic)ch 128 a( 159 a tak[ 255 n%kolinJ}k tisknuteln`ch znak+. Tisknuty jsou v kurz)v%. Jinak se zde zrcadl) @)d)c) povely z hodnot o 128 ni(&)ch. Tabulka uveden* v nK}origin*ln) p@)ru'ce asi nebude pasovat, proto(e m*me v&ichni ?$ v tisk*rn*ch zabudovanou znakovou sadu Kamenick`ch. IBM mdnL}: nastav) znakovou sadu '.2, kter* obsahuje @)d)c) povely jen do hodnoty 31. Povoluje tak[ n%kolik tisknuteln`ch znak+ na poznM}ic)ch 3 a( 6 a 21. Je to p@esn% to nastaven), kter[ pot@ebujeme na Kamen)ky. Pozn*mka: @ada p@)ru'ek pova(uje za @)d)c) povenN}l i kd mezery 32. Zrcadl) se tak, jako ostatn), ale navenek se chov* jako norm*ln), le' netisknut` znak.ESC 7 2nO}7,55 1B,37 Standart md: nuluje p@edchoz) povel. Na pozic)ch 128 a( 159 a tak[ 255 se zrcadl) @)d)c) povely z hodnnP}ot o 128 ni(&)ch. IBM md: nastav) znakovou sadu '.1, u n)( se zrcadl) @)d)c) povely na pozice 128 a( 159.ESC I 11$ 2nQ}7,73,491$ 1B,49,311$ Pouze Standart md. Povol) n%kolik tisknuteln`ch znak+ na pozic)ch 0 a( 6, 16,17, 21 a( 23, 25,26,nR} 28 a( 31, a zrcadlov`ch.ESC I 00$ 27,73,480$ 1B,49,300$ Pouze Standart md. Zaraz) p@edchoz) povel, co( je stavnS} inicializovan` po zapnut) tisk*rny. Ostatn) tiskov[ povelyESC i 11$ 27,105,491$ 1B,69,311$ Nastav) bezprosnT}t@edn) md tisku. Znaky jsou okam(it% ti&t%ny pokud je mezi nimi prodleva del&) ne( 0.2 sekundy.ESC i 00$ 27,105,480$nU} 1B,69,300$ Ru&) p@edchoz) povel.ESC 5 11$ 27,53,491$ 1B,35,311$ Pouze md IBM. Nastav) automatick[ od@*dkovnV}*n). Tisk*rna po p@)chodu povelu CR provede i LF.ESC 5 00$ 27,53,480$ 1B,35,300$ Pouze md IBM. Zak*(e automaticnW}k[ od@*dkov*n).ESC SP n 27,32,n 1B,20,n Nastavuje mezeru mezi znaky na po'et tiskov`ch bod+ v rozsahu od 0 donX} 127. )@ka tiskov[ho bodu je br*na podle aktu*ln% nastaven[ho re(imu tisku: Draft Pica 1/120" NLQ Pica 1/240" nY} Elite 1/144" Elite 1/288" Condensed 1/240"ESC  n1 n2 27,36,n1,n2 1B,24,n1,n2 Nastavuje tiskovou hlavu nanZ} pozici podle vzorce: 256  n2  n1$  1/60" Povel je ignorov*n pokud vypo'ten* pozice p@es*hne prav` okraj.ESC n1 n2 n[} 27,92,n1,n2 1B,5C,n1,n2 Nastavuje tiskovou hlavu na relativn) pozici od p@edchoz) podle vzorce: 256  n2  n1$, &)@ka n\}tiskov[ho bodu je stejn* jako u povelu ESC SP. Povel je ignorov*n pokud vypo'ten* pozice p@es*hne lev` nebo prav` okraj.inn]}verzn) lom)tko zde nahrazuje origin*ln) obr*cen[ lom)tko$gnorov*n pokud vypo'ten* pozice p@es*hne lev` nebo prav` okraj.inl: e&en) hlavolamu z FLOPu 34 Tentokr*t bylo ]kolem nal[zt prvn)ch sto prvo')sel. Op%t lze vymyslet n%kolik r+zn`ch v_}algoritm+ a j* bych V*m tu cht%l p@edv[st podle m[ho n*zoru nejrychlej&). Ka(d[ ')slo lze p@ev[st na sou'in d*le ned%litv`}eln`ch ')sel - prvo')sel. P@i zkoum*n), zda je ')slo prvo')slem a je tud)( d%liteln[ jen jedni'kou a sebou sam`m$ posta') vyva}zkou&et ji( d@)ve nalezen* prvo')sla pro' zkou&et d%litelnost dev)ti, ka(d[ ')slo d%liteln[ dev)ti je sou'asn% d%liteln[ t@evb}mi. D*le nen) nutn[ zkou&et prvo')sla v%t&) ne( odmocnina ze zkouman[ho ')sla, proto(e v`sledek d%len) by byl men&) ne( vc}zkoumaj)c) ')slo a pokud by byl celo')seln` tedy jednalo by se o prvo')slo$, muselo by se to zjistit ji( d@)ve. Nap@. ')slo vd}33 odmocnina = 5.7446$ je sice d%liteln[ 11, ale 33:11=3 a je tud)( vyhozeno jako neprvo')slo u( p@i trojce. Nakonec neve}n) samoz@ejm% nutn[ zkoumat sud* ')sla, kter* jsou v(dy d%liteln* dv%ma co( je jedin[ sud[ prvo')slo$. Jasn%j&) to budevf} mo(n* p@i pohledu na vlastn) program:@*dky:10 - 80 V`pis hlavi'ky90 Vynulov*n) po')tadla 'asu100 - 110 Dimenzavg}ce pole o 100 prvc)ch, kam se budou ukl*dat v`sledky a nastaven) prvn)ch t@) prvo')sel, kter[ nelze pou(it`m algorimem zjistivh}t plus jejich v`pis na obrazovku120 Nastaven) prom%nn[ CISLO na hodnotu 3, tedy t@et) a zat)m posledn) prvo')slo130 vi} Cyklus odpo')t*vaj)c) c prom%nn[ POCET zb`vaj)c)ch 97 po')tan*ch prvo')sel140 P@i'ten) dvojky k posledn)mu prvo')vj}slu aby bylo op%t lich[ a zji&t%n) jeho odmocniny.150 Cyklus odpo')t*vaj)c) ji( zn*m* prvo')sla po')naje t@et)m jednvk}i'ku a dvojku vzhledem k podm)nk*m nem* cenu zkou&et$160 Pokud je Q-t[ prvo')slo ji( v%t&) ne( odmocnina ze zkouman[hovl} ')sla, jedn* se rovn%( o prvo')slo170 Pokud ale je v`sledek d%len) CISLO/AQ$ celo')seln[, o prvo')slo se ur'it% nejevm}dn* a d*le se ')slo nezkoum*180 Konec zkoumac)ho cyklu190 )slo bylo shled*no prvo')slem, vyp)&e se a za'ne se vn}vyhled*vat dal&)200 )slo nen) prvo')slem a POCET je nutn[ sn)(it o jednotku, nebo se na dal&)m @*dku inkrementuje21vo}0 Konec hlavn)ho cyklu220 - 270 Bylo nalezeno 100 prvo')sel a vyp)&e se doba v`po'tu -Jvp}W- Konec hlavn)ho cyklu220 - 270 Bylo nalezeno 100 prvo')sel a vyp)&e se doba v`po'tu -Jt10 ? "}************************************"20 ? "* _ _ , *"30 ? "* Reseni hlavolamu z FLOPu zr}34 *"40 ? "* *"50 ? "* (c)1995.8 Jan Walla *"60 ? "* zs} *"70 ? "************************************"80 ? 90 TIME$= "000000"100 DIM A(100):A(1)=1:A(2)=2:A(3)=3110 zt}? "1 - 1":? "2 - 2":? "3 - 3"120 CISLO=3130 FOR POCET=4 TO 100140 CISLO=CISLO+2:POM=SQR(CISLO)150 FOR Q=3 TO POCET16zu}0 IF A(Q)>POM THEN POP :GOTO 190170 IF CISLO/A(Q)=INT(CISLO/A(Q)) THEN POP :GOTO 200180 NEXT Q190 A(POCET)=CISzv}LO:? POCET;" - ";CISLO:GOTO 210200 POCET=POCET-1210 NEXT POCET220 ? 230 ? "************************************"240 ? zw}"* _ , _ *"250 ? "* Potrebny cas: ";TIME$;" *"260 ? "* zx} *"270 ? "************************************"trebny cas: ";TIME$;" *"260 ? "* x4 ten*@sk* @e&en) Od pana Vladim)ra Li&ky z Pardubic mi p@i&la velice zaj)mav% zpracovan* @e&en) hlavolam+ z ')sel ~z}34 a 32 - jedn* se o @e&en) psan* v MAC65! Pan Li&ka p)&e:....................................... V*(en` pane,~{} pos)l*m V*m sv+j ohlas na "H*danku" z magaz)nu FLOP '. 34 Prvo')sla$. Soubor PC6.COM , v d[lce 5-ti sektor+ je p@ilo~|}(en na disket%.Stovku prvo')sel od 2,3,5,...do 523,541 vypo'te a vyp)&e na obrazovku za 6 s. Jen na okraj ke genezi tohoto "f~}}ajlu": Sestaven` strojov` program prvn) verse dal v`sledek za 10 s, druh* verse - s trochou triku - byla o 3 sekundy krat&). ~~}. Pak jsem vyrobil dopln%nou versi, dovoluj)c) vypsat voliteln% bu prvn) nebo druhou stovku prvo')sel: 2..542 za 7s,, 547..1~}223 za 10s. P@ilo(en* verse, PC6.COM, by mohla byt ')slov*na jako V.3. Jen stru'n% k postupu: Prvn) 4 prvo')sla 2,3,5,~}7$ jsou dosazeny do tiskov[ho bafru  6000 a( 618F, 400 byte$. Na pozici 6191 je 00 jako delimitor, kter` zabr*n) v`po'tu~} 101. prvo')sla. Testovan* ')sla lich*$ stoupaj) od 9, a nejprve se testuj) na d%litelnost p%ti, pak t@emi. Kdy( nejsou takt~}o d%liteln*. prov*d) se vlastn) d%len) FDIV DB28 rutina$ ni(&)mi prvo')sly. )sla od 31 do 541 jsou testov*na d%len)m prvo~}')sly 7,11,13,17,19,23a 29 a pokud po d%len) z+st*v* zbytek, jsou zapisov*na do bafru jako prvo')sla. Kdy( u( V*m, pane ~}Walla, pos)l*m tuto disketu , nalo()m na ni - ex post - i @e&en) faktori*l+ H*danka z ')sla 32$. Je to op%t stroj*kov` soubo~}r FAK.COM 7 sektor+$, a proto(e je v ML, je krat&) a asi 4kr*t rychlej&), ne( soubor v TurboBasicu. Dovoluje vypo')tat p@esn~}` faktori*l libovoln[ho ')sla do 255, a to s ur'en)m po'tu platn`ch cifer. Pro srovn*n) TB/ML$: 99! - 24/6 s ~} 50! - 6/1 s Faktori*l 255! se rovn* 0,33508.10 na 505, co( ov&em trv* ji( 56 sekund. P@ipojuji t[~}( zdrojov` program FAK.LM a to jen pro p@)pad, (e by se dal uve@ejnit jako p@)klad pro pou()v*n) aritmetiky BCD v kursu progr~}amov*n) v assembleru. ...$ Vladim)r Li&ka....................................... Ob% @e~}&en) pova(uji za velmi dobr*. Mysl)m si tak[, (e uveden) listingu "FAK.LM" m+(e b`t p@)nosn[ pro program*tory. Upozornil bych~} pouze na to, (e pro ')sla v%t&) jak 146 nejsou v(dy v&echny ')slice korektn), co( z@ejm% souvis) s velikost) dekadick[ho @*d~}u, kter` p@ekra'uje 256. P@esto p@ed jeho @e&en)m smek*m. -JW-is) s velikost) dekadick[ho @*d|^UUPVR W BƩ ϠaР@Wψaa aa``2`Ȍ`Ȍ `7`a͠`΢}a̢ˢ F˦ˆԤ̄ ٥))ҵJJJJe҅ )e҅Ҥҹa ݠѤѱ0@ (ۥ))}ϭa)QVFWa Va Wa Wa Vȭa We͐ͅΠLU BD`EHI V䩛 Ԣ ݦԢ} ٠AV fڢ@P (ۥ) 0=W0W B`JJJJ 0`) 0`}VYPOCET PRVNICH 100 PRVOCISEL:Time (s) = 0 }UUV fڢ@P (ۥ) 0=W0W B`JJJJ 0`) 0`}VYPOCET PRVNICH 100 PRVOCISEL:Time (s) = 0 UUPV Rˠ`̠.ȩˢԠW BƢц 0ɛ: )i JffѢʆ DЦLV ٢φ}Ά͠ ݢ Fڢ@Ϥϱ.LrV ȱ˅ȱ˅ ڢ Fڢ@ ͅ fڥ@A"B) W WLU }WϩQVLWՑLU W WLU W W WLU ȥ͑LUȊLUˠb̩ W`. JJJJ 0Ϲ`) 0} Wρ WLV W0ˤ BƤ̈́ Dک8˅ԩb8̅ ٢@ ) 0*XJJJJ 0*X) 0+X ,X DڦΆ ٢ Dڢ} Fڦ͆ ٢AMW?XV ڢ fڢ@P (ۥ@0TEXT0215 } JSR $C642 ; Vypsan TEXT0220 ;0225 LDX #00230 STX N0235 STX N+10240 CTU JSR $F2F8 ;vstup cifer z K024}5 CMP #'00250 BCC CTU0255 CMP #$9B0260 BEQ *+290265 CMP #'9+10270 BCS CTU0275 JSR $F2B0028}0 AND #$0F0285 LDX #$110290 BNE *+70295 BCC *+40300 ADC #90305 LSR A0310 ROR N+10315 R}OR N0320 DEX 0325 BNE *-100330 BEQ CTU0335 ;0340 INC N ;(D1)=N+10345 LDX #10350 STX KRAT} ;(D0)=Nasobitel0355 DEX 0360 STX $130365 STX $14 ;nula do Timeru0370 ;0375 NASOB JSR ZFR0 ;nuluj FR}00380 INC KRAT0385 LDX KRAT0390 CPX N ;(N+1)-KRAT0395 BNE *+50400 JMP TISK0405 STX $D4 } ;FR00410 JSR IFP ;FR0=nasobitel0415 LDX #00420 STX PTR ;Pointer = 00425 STX PRH0430 STX PR}L ;Prenos = 00000435 LDY #10440 JSR FST0R ;ulozen $100.50445 ;0450 LOOP LDX #$E0 ;nulovat FR10455 JS}R ZF10460 LDX #$400465 STX $E00470 DEC PTR0475 DEC PTR0480 LDY PTR ;PTR=Y=$FE0485 LDA (BUF)},Y0490 CMP #$2E ;jsme na zac.retezce?0495 BNE *+50500 JMP POSLAD ;jdi na posled.a.0505 CMP #00510 } BEQ *+130515 STA $E1 ;41 XX XX0520 INY 0525 LDA (BUF),Y0530 STA $E20535 INC $E00540 BPL *}+70545 INY ;40 XX0550 LDA (BUF),Y0555 STA $E1 ;FR1 naplnen s C0560 LDX #00565 LDY #1057}0 JSR FLD0R ;LOAD FR0 nasobitelem0575 ;0580 JSR FMUL ; soucin v FR00585 ;0590 LDX #$E0 ;nuluj FR1,05}95 JSR ZF1 ;pro prenos0600 LDX #$400605 STX $E0 ;zustane? 40 ?0610 LDA PRH0615 BEQ *+120620 } STA $E10625 LDA PRL0630 STA $E20635 INC $E0 ;zmenit na $410640 BPL *+100645 LDA PRL0650 } CMP #00655 BEQ *+70660 STA $E10665 JSR FADD ;adice S+Prenos0670 ;0675 LDA $D4 ;rozdel na Prenos }a nove 4 cifry do retezce0680 CMP #$400685 BEQ ?40 ;-->40 XX0690 CMP #$410695 BEQ ?41 ;-->41 XX X}X0700 CMP #$420705 BEQ ?42 ;-->42 xx xx xx0710 LDX #0 ; 43 xx xx xx xx0715 JSR TRANSF0720 L}DX #20725 JSR NOVE2B0730 JMP LOOP0735 ;0740 ?40 JSR NULPR0745 LDY PTR0750 LDA #00755 STA (BUF),Y0}760 INY 0765 LDA $D50770 STA (BUF),Y0775 JMP LOOP0780 ;0785 ?41 JSR NULPR0790 LDX #00795 JSR N}OVE2B0800 JMP LOOP0805 ;0810 ?42 JSR NULPR+40815 LDX #00820 JSR TRANSF+50825 INX 0830 JSR NOVE2B0}835 JMP LOOP0840 ;0845 POSLAD LDA PRH0850 BEQ *+120855 STA (BUF),Y0860 INY 0865 LDA PRL0870 ST}A (BUF),Y0875 JMP NASOB0880 LDA PRL0885 BNE *+40890 BEQ *-70895 TAX 0900 LDA #00905 STA (B}UF),Y0910 INY 0915 TXA 0920 STA (BUF),Y0925 JMP NASOB0926 ;0927 TISK LDX #00928 LDY #$FF0929 }STY $CB0930 LDY #$620931 STY $CC ;(CB.C)=$62FF, tisk.bafr0934 LDA #$9B0935 STA ($CB,X) ;na konec tisk}.b.0936 JSR $F2B0 ;Odradkovat!0937 JSR DECBC ;POINTER na 62FE0938 ;0939 LDY #00940 ?LV DEY 0941 } LDA $6000,Y0942 CMP #$2E ;tecka?0943 BEQ *+34 ;Ano,konec nacitani0944 LSR A0945 LSR A0946 LS}R A0947 LSR A0948 ORA #$300949 STA $CF ;CF=POM0950 LDA $6000,Y ;opet stejny bajt0951 AND #$0F09}52 ORA #$30 ;LSB0953 LDX #00954 STA ($CB,X) ; " ulozen0955 JSR DECBC0956 LDA $CF ;MSB0957 } STA ($CB,X) ; " ulozen0958 JSR DECBC0959 JMP ?LV0960 ;0961 LDX #00962 JSR INCBC0963 LDA ($CB,X)09}65 CMP #$30 ;je to nula?0970 BEQ *-70985 ;1095 LDX $CB1100 LDY $CC1105 JSR $C642 ;FAK vypsan11}10 ; Vypocet dekadickeho radu1115 LDY $141120 LDX $131125 STX $CD1130 STY $CE ;ulozeni casu1131 ;11}35 JSR ZFR01140 LDA #$FF1141 SEC 1142 SBC $CB1145 STA $D41150 LDA #$621155 SEC 1160 SB}C $CC1165 STA $D51170 JSR IFP ; IFP1175 LDX #01180 LDA $D41185 CMP #$401190 BEQ *+131195 } LDA $D5 ;41 0X XX1200 AND #$0F1205 ORA #$301210 STA T1+161215 LDX #11220 LDA $D5,X ;DVA ZNA}KY1225 LSR A1230 LSR A1235 LSR A1240 LSR A1245 ORA #$301250 STA T1+16,X1255 LDA $D5,X1260} AND #$0F1265 ORA #$301270 STA T1+17,X1275 LDA #$201280 STA T1+18,X ;charakteristika1285 ;1290 }JSR ZFR01295 LDX $CE ;timereg.$141300 STX $D41305 JSR IFP1310 LDX #01315 LDY #11320 JSR FST}0R1325 JSR ZFR01330 LDX #$E01335 JSR ZF11340 LDX $CD ;timereg.$131345 STX $D41350 JSR IFP1}355 LDX #$411360 LDY #21365 LDA #$561370 STX $E01375 STY $E11380 STA $E2 ;FR1 naplnen 25613}85 JSR FMUL1390 LDX #01395 LDY #11400 JSR FLD1R1405 JSR FADD1410 LDX #$401415 LDY #$50 ;}delitel=501420 LDA #01425 STX $E01430 STY $E11435 STA $E21440 JSR FDIV1445 ;1450 LDA $D41455 } CMP #$40 ;zlomek sekundy?1460 BCS *+101465 LDA #$30 ;NULA1470 STA T1+341475 STA T1+351480 }BNE *+221485 LDA $D51490 LSR A1495 LSR A1500 LSR A1505 LSR A1510 ORA #$301515 STA T1+3415}20 LDA $D51525 AND #$0F1530 ORA #$301535 STA T1+351540 ;1545 LDX # T11555 J}SR $C642 ;SCROUT TEXT 11560 RTS 1565 ; A K O N E C !1570 ; Podprogramy 1575 DECBC DEC $CB1580 LDA} #$FF1585 CMP $CB1590 BNE *+41595 DEC $CC1600 RTS 1605 ;1610 INCBC INC $CB1615 LDA #01620 CMP} $CB1625 BNE *+41630 INC $CC1635 RTS 1640 ;1670 NULPR LDX #01675 STX PRL1680 LDX #01685 STX P}RH1690 RTS 1695 ;1700 TRANSF LDA $D5,X1705 STA PRH1710 INX 1715 LDA $D5,X1720 STA PRL1725 RTS} 1730 ;1735 NOVE2B LDY PTR1740 LDA $D5,X1745 STA (BUF),Y1750 INY 1755 INX 1760 LDA $D5,X1765 }STA (BUF),Y1770 RTS 1775 ;1780 ; 1785 TEXT .BYTE $7D," Vlozte cislo [2..255] pro vypo}cet "1790 .BYTE " F A K T O R I A L U :",$9B1795 ;1800 T1 .BYTE "Dekadicky rad = .. , Time (s) = .. ",$9B1805} .OPT NO LIST.BYTE " F A K T O R I A L U :",$9B1795 ;1800 T1 .BYTE "Dekadicky rad = .. , Time (s) = .. ",$9B1805Urychlovac) ]pravy BASICov`ch program+Radek t%rba, RASTERV dne&n) '*sti bych se r*d v%noval drobn[ skute'nosti, kter* m+}(e velice ovlivnit rychlost va&eho BASIC programu. Mo(n* jste si u( n%kdy v&imli, (e ')m je BASICov` program del&), t)m poma}leji b%(). Rychlost ale nez*vis) p@)mo na d[lce programu, ale na tom, jak daleko od za'*tku je m)sto, kter[ pr*v% pou()v*me. }P@esn%j&) vysv%tlen) uk*(u na p@)kladu:100 PRINT "AHOJ"110 GOTO 100Tento progr*mek pob%() celkem rychle...Zkuste ho ale} takto zmodifikovat:1 REM2 REM3 REM4 REM5 REM...99 REM100 PRINT "AHOJ"110 GOTO 100Zd*nliv% ]pln% stejn` program, al}e v druh[m p@)pad% pob%() pomaleji. Pro'?Programovac) jazyk BASIC je interpret - ale to jste ji( jist% mnohokr*t sly&eli. Pr}oto vlastn) program nen) p@)mo ve strojov`ch instrukc)ch, ale skl*d* se z ')sel, kter* ur'uj) funkce kter[ maj) b`t prov*d%ny}. Sou'*st) BASICu je i to, (e p@ed ka(d`m p@)kazem nebo skupinou p@)kaz+$ je ')slo @*dku, abychom mohli stanovit po@ad), v j}ak[m budou prov*d%ny. A te tedy zp%t k probl[mu s rychlost) a jej) z*vislosti...V prvn)m p@)pad% je nalezen jako prvn) @*d}ek ')slo 100, je "p@elo(en" a proveden. Pak jde program na dal&) @*dek. Ten "p@elo()" a provede... a pr*v% te jsme u j*dra v}%ci, p@esn%ji @e'eno u p@)kazu GOTO 100. V tomto okam(iku BASIC hled* od za'*tku BASICov[ho programu @*dek s ')slem 100. Prot}o(e je to hned prvn) @*dek v programu, nalezne ho celkem rychle.V druh[m p@)pad% je situace obdobn*. Nejprve jsou postupn% n}alezeny @*dky 1 a( 99, ka(d` z nich je v(dy "p@elo(en" a proveden p@)kaz REM ozna'uje pozn*mku, tak(e navenek se nic ned%je$}. Vznikne t)m sice jist[ zdr(en), ale tyto @*dky jsou mimo n*& nekone'n` cyklus. P@esto se v&ak jejich existence na rychlosti} projev). *dek 100 je p@elo(en a proveden tak[ stejn% jako v prvn)m p@)pad%. Na @*dku 110 je GOTO 100. Nyn) BASIC za'ne od z}a'*tku prohled*vat program dokud nenalezne @*dek s ')slem 100. Najde @*dek 1 a to nen) 100$, pak najde @*dek 2 to taky nen)} 100$, 3, 4, .. , 99 taky ne$ a a( nyn) na&el @*dek 100. I kdy( jednotliv[ @*dky nebudou v+bec p@ekl*d*ny, na rychlosti se t}o projev)...Obdobn[ je chov*n) u p@)kaz+ FOR .. NEXT, RESTORE .. READ, GOSUB .. RETURN, .. prost% v(dycky, kdy( se pracuje }s ')slem n%jak[ho @*dku. Up@esn%n): Mo(n* V*s p@ekvapilo, (e mezi t%mito p@)kazy je i FOR .. NEXT a RETURN, ale uv%domte si}, (e naraz)-li program na NEXT, vrac) se na FOR podle zapamatovan[ho ')sla @*dku, na kter[m p@)slu&ej)c) FOR byl. Tak(e i FOR} a NEXT nep@)mo pracuje s ')sly @*dk+. Obdobn[ je to i u p@)kazu RETURN a u dal&)ch.$A co s t)m?...Asi v*s moc nepot%&)m.}.. *dn* snadn* pomoc neexistuje.Jedin`m, ')m m+(ete aspo trochu zrychlit sv+j program je umisov*n)m n*ro'n`ch '*st) co ne}jbl)(e k za'*tku programu. Nemysl)m t)m pou()t co nejni(&) ')sla @*dk+ - s t)m to v+bec nesouvis)!! Bl)zkost) zde mysl)m to, }aby p@ed touto '*st) bylo co nejm[n% @*dk+ bez ohledu na jejich ')sla$.P@.M*te program, kter` m* 500 @*dk+ ')sla 10 a( 5}000 s krokem 10$.10 ...20 ......Od @*dku 5010 je 'asto pou()van* rutina kterou vol*te z n%kolika m)st povelem GOSUB 5010}$, kter* nap@)klad s')t* ')sla v n%jak[m poli:5010 SOUCET=05020 FOR X=1 TO 205030 SOUCET=SOUCETPOLEX$5040 NEXT X5050 R}ETURNPak n*sleduj)c) zm%nou b%h t[to rutiny a t)m i cel[ho programu$ podstatn% urychl)te:1 GOTO 105 SOUCET=0:FOR X=1 TO }20: SOUCET=SOUCETPOLEX$:NEXT X:RETURN10 ... 20 ......Nezapomete, (e nyn) je je&t% t@eba zm%nit v&echna vol*n) GOSUB 50}10 na GOSUB 5.Shrnut):)m m[n% @*dk+ v*& BASICov` program m*, t)m rychleji jsou prov*d%ny p@)kazy pracuj)c) s ')sly @*dk+ }GOTO, GOSUB, FOR .. NEXT, ...$, proto(e ka(d` programov` @*dek je hled*n od za'*tku cel[ho BASIC programu. Pokud v*m tedy jd}e o rychlost v)c ne( o p@ehlednost, umisujte na ka(d` @*dek co nejv)ce p@)kaz+. T)m sn)()te celkov` po'et @*dk+ a urychl)te }pr*ci BASICu p@i hled*n) @*dku s dan`m ')slem. asto pou()van[ '*sti programu umisujte co nejbl)(e k "za'*tku" programu a m*}lo pou()van[ '*sti nebo ty, ve kter`ch V*m nejde o rychlost$ a( za n%. Nejlep&) je tyto "tot*ln%" znep@ehleduj)c) ]pravy pr}ov*d%t a( v hotov[m programu a nechat si schovanou i p+vodn) verzi.Abyste si mohli ud%lat p@edstavu, o jak`ch 'asov`ch ]spo}r*ch zde hovo@)m, zkuste si spustit pod 'ist`m BASICem!!! - viz. d*le$ p@ilo(en[ testovac) progr*mky:TEST1A.BAS ..ukazuje d}obu b%hu '*sti programu pracuj)c)ho "na konci LISTingu".TEST1B.BAS ..ukazuje stejnou '*st um)st%nou hned "na za'*tku".TEST2}A.BAS ..ukazuje 'as nutn` pro proveden) programu, kter` mnohokr*t vol* podprogram um)st%n` "na koci LISTingu".TEST2B.BAS ..u}kazuje 'as stejn[ho programu, kdy( je podprogram p@em)st%n na jeden @*dek a co nejv)ce "na za'*tek".D+le(it* pozn*mka na z*}v%r:Douf*m, (e jste si v&imli, (e se cel` 'l*nek v%nuje "'ist[mu" BASICu. Co se t`'e TURBOBASICu, tam je situace trochu jin*}, proto(e TBASIC m* n%kter[ vnit@n) rutiny oproti BASICu vylep&eny. Rutina pro hled*n) @*dku s dan`m ')slem je mnohem rychlej}&), tak(e skute'nosti, o kter`ch se v tomto 'l*nku zmiuji, se v TBASICu t[m%@ neprojev).ku s dan`m ')slem je mnohem rychlejZ      } !"#$%&}'()*+,-./0123456789:;}<=>?@ABCDEFGHIJKLMNOP}QRSTUVWXYZ[\]^_`abcd +}@ n-@APx(AHOJ  0(0( Doba behu F:@ ,'@P sec. D:}TEST1A.BASn-@APx(AHOJ  0(0( Doba behu F:@ ,'@P sec. D:  d +@ n-@APx(AHOJ  0(0( Doba behu F:@ },'@P sec. D:TEST1B.BASn-@APx(AHOJ  0(0( Doba behu F:@ *  +@ -@@ A( 24(4(Program }trval F:@ ,'@P sec.7<VAS DALSI PROGRAM= ...>?@ABCDEF }GHIJKLMNOPQRSTUVWXYZ[ }\]^_`abcNASLEDUJE PODPROGRAM(-@@( $ } D:TEST2A.BAS_`abcNASLEDUJE PODPROGRAM(-@@( $ @&(-@@(# &$  +@ -@}@ @( 24(4(Program trval F:@ ,'@P sec.7<VAS DALSI PROGRAM= ...>}?@ABCDEFGHIJKLMNOPQRS}TUVWXYZ[\]^_`abcKONEC VASEHO PROGRAMU} D:TEST2B.BASVWXYZ[\]^_`abcKONEC VASEHO PROGRAMUPosloupnosti podm)nekRadek t%rba, RASTERSpousta podm)nek za sebou se ve strojov[m kdu objevuje dost 'asto, zvl*&t% v t%}ch '*stech, kde nap@. reagujeme na stisk n%jak[ kl*vesy nebo podle jin[ho parametru rozhodujeme o proveden) ur'it[ akce.Nej}'ast%j&) formou je postupn[ kladen) podm)nek: LDA PARAM ;tj.n%jak` parametr, kter` porovn*v*me CMP #0 BNE NA1 } ;pro PARAM=0 ...NA1 CMP #1 BNE NA3 ;pro PARAM=1 ...NA2 CMP #2 BNE NA3 ;pro PARAM=2 ... .}..Tento zp+sob je p@ehledn` a vzhledem k rychlosti prov*d%n) strojov[ho kdu i hojn% pou()van`. Pokud bude podm)nek hodn% }t@eba i n%kolik des)tek$, je mo(n[ pou()t metodu s rozeskakovac) tabulkou.Tento p@)klad provede skok na dan[ n*v%&t) podle h}odnoty nalezen[ na adrese PARAM. Je to vlastn% obdoba BASICovsk[ho p@)kazu ON GOTO.$ Hodnot% 0 odpov)d* skok na NA0, 1 skok }na NA1, 2 skok na NA2, atd... Pozn.: N*zvy n*v%&t) mohou b`t libovoln[, pouze je nutn[ bezpodm)ne'n% dodr(et jejich po@ad) n}a @*dku s definic) VECTAB.$ LDA PARAM ASL A TAX LDA VECTAB,X STA ADR LDA VECTAB1,X STA ADR1 } JMP ADR$ADR .WORD 0000 VECTAB .WORD NA0,NA1,NA2,...NA0 ...NA1 ...NA2 ...Vysv%tlivky:ASL A ..n*sob}en) dv%ma, proto(e adresa se skl*d* ze dvou byt+TAX ..p@esun do XLDA VECTAB,X ..z)sk*n) ni(&)ho bytu c)lov[ adresySTA A}DR ..ulo(en) ni(&)ho bytu na adresu ADRLDA VECTAB1,X..vy&&) byte c)lov[ adresySTA ADR1..ulo(en) vy&&)ho bytu na ADR1}JMP ADR$ ..nep@)m` skok. Program sko') na adresu, jej)( hodnotu najde na adrese uveden[ v z*vork*ch ADR$. P@esn%ji @e'eno:} skute'nou adresu pro skok dostaneme tak, (e vezmeme obsah adresy ADR a p@i'teme 256-ti n*sobek obsahu adresy ADR1.ADR .WOR }D 0000 ..vyhrazen) m)sta pro ulo(en) doln)ho a horn)ho bytu skute'n[ c)lov[ adresy, na kterou m* b`t proveden skok.VECTAB !}.WORD NA0,NA1,NA2,.....tabulka n*v%&t) pro skoky od adresy VECTAB budou v pam%ti za sebou dvojice hodnot - v(dy doln) a hor"}n) byte hodnoty dan[ho n*v%&t)$.Dal&) '*st tohoto textu bude ur'ena sp)&e pokro'il`m a t%m, kter`m jde ve sv`ch strojov`ch#} programech o u&et@en) ka(d[ho taktu procesoru tj. cca 1/1720000sec.$. Zab`vat se takov`mi ]sporami m* v`znam pouze u rutin,$} kter[ jsou vol*ny mnohokr*t za vte@inu @*dov% v 10000-c)ch$. Teprve pak m* vynalo(en[ ]sil) pat@i'n` efekt..Pokud hodnota%} parametru nen) 0,1,2,3,.. ale je to n%jak[ ')slo nap@. kd stisknut[ kl*vesy$, @e&) se to v%t&inou posloupnost) podm)nek, n&}ebo rozeskakovac) tabulku nelze pou()t pokud nechceme ob%tovat 256byt+ pam%ti a tak vlastn% ud%lat tabulku pro parametr od '}0 a( do 127$.I tady v&ak lze ud%lat jist[ vylep&en):P@. Podle hodnot PARAM = 63,21,18,58,42,56,61,57 tj. Kdy kl*ves A,B,(}C,..,H$ chceme prov*d%t r+zn[ 'innosti.Kdy( tento probl[m budeme @e&it posloupnost) 8-mi podm)nek, bude to jist% fungovat, a)}le nap@. pro p)smeno H bude nejprve porovn*v*no v&ech 7 p@edchoz)ch ')sel. Existuje v&ak i efektivn%j&) zp+sob:1.$ se@ad)me*} si hodnoty podle velikosti:18,21,42,56,57,58,61,632.$ vybereme prost@edn) hodnotutj. 563.$ rozd%l)me posloupnost na 2 '*+}sti d%l)c)m prvkem je '.56$4.$ v ka(d[ '*sti vybereme prost@edn) hodnotu a posloupnosti zase rozd%l)me na dv% '*sti atd.$,} 18$ 21 42$ $ 56  57 $ 58  61  63$ $ $Program pak bude vypadat takto: LDA PARAM CMP #56 BEQ J56 ;=56 -} BCS N56 ;>=56 CMP #21 BEQ J21 ;=21 BCS N21 ;>=21 CMP #18 BEQ J18 ;=18 JMP NICN21 CMP#42 BEQ J4.}2 ;=42 JMP NICN56 CMP#58 BEQ J58 ;=58 BCS N58 ;>=58 CMP #57 BEQ J57 ;=57 JMP NICN58 CMP #61 BEQ/} J61 ;=61 CMP #63 BEQ J63 ;=63 JMP NICNIC ;nebyl to (*dn`;N*v%&t) pro jednotliv[ hodnoty:J18 ;pro PARAM=18J210} ;=21J42 ;=42J56 ;=56J57 ;=57J58 ;=58J61 ;=61J63 ;=63e je to &)len% slo(it[ a nech*pete to? Vysv%tl)m...Pokud poro1}vn*me parametr v(dy s prost@edn) hodnotou, zjist)me, (ea$ je roven t[to hodnot%, tak(e sko')me na n*v%&t) pro proveden) oper2}ac) p@)slu&ej)c)ch k t[to hodnot% tj. n*v%&t) Jxx$.b$ je v%t&) instrukce BCS provede skok$. Te u( budeme uva(ovat pouze p3}ravou polovinu posloupnosti lev* '*st n*s tedy ji( v+bec nezaj)m*$. Pokra'ujeme porovn*n)m s prost@edn) hodnotou v prav[ '*s4}ti atd...c$ je men&) BCS nesko')$. Te n*s bude zaj)mat u( jen lev* '*st posloupnosti pravou si odmysl)me$. Pokra'ujeme po5}rovn*n)m s prost@edn) hodnotou v lev[ '*sti atd...Zd* se v*m to st*le slo(it[? Douf*m alespo, (e princip je jasn`?!A jak`6} je efekt toho cel[ho?Klasick`m zp+sobem se prov*d) v nejhor&)m p@)pad% 8-kr*t instrukce CMP a 8-kr*t BNE, tedy celkem 16 in7}strukc).Po "inovaci" pr+zkumem zjist)me, (e v nejhor&)m p@)pad% pokud PARAM=63$ program projde p@es 4 instrukce CMP, 4 inst8}rukce BEQ a 2 BCS - to je dohromady 10 instrukc).Jestli se v*m zd*, (e je to zbyte'n[ usil) kv+li 6 instrukc)m, m*te pravdu.9} Tento p@)klad je p@ece pouze demonstra'n). V%zte v&ak, (e s rostouc)m po'tem mo(n`ch hodnot je tato metoda mnohem efektivn%j:}&). To ale ocen)te a( p@i programov*n) superrychl`ch rutin.Tento princip m+(ete s v`hodou vyu()t i u program+ v jin`ch progr;}amovac)ch jazyc)ch, nebo jeho s)la je ve sn)(en) celkov[ho po'tu proveden`ch operac) porovn*n). i u program+ v jin`ch progra Kurs programov*n) "C" '*st 6. ------------------------------------ =37,=92,=123,=91,=93,=39,=38 definice =}znaku procenta, obr*cen[ho lom)tka, lev[ slo(en[ z*vorky, lev[ a prav[ lomen[ z*vorky, apostrofu. a nov% znaku and Hod>}noty a druhy prom%nn`ch I Sna(il jsem se z)skat trochu p@ehled o pou()van`ch prom%nn`ch na&)m C['kem, ale to se mi nepoda@?}ilo. Prohl[dnut)m origin*ln)ho popisu v angli'tin% jsem se p@esv%d'il, (e v p@ekladu nic d+le(it[ho nechyb), i kdy( jsou v n%@}m stra&n[ v%ci vinou doslovn`ch p@eklad+. Norm*ln) C['ka pou()vaj) n%kolik druh+ prom%nn`ch. Typ char je v(dy jednobajtov`.A} )seln[ typy jsou minim*ln% dvoubajtov[, a to jako cel* ')sla nebo s desetinnou te'kou r+zn`ch d[lek. Char a celo')seln[, 'iB}li int mohou b`t bez znam[nka, nebo znam[nkov[, tedy jejich hodnoty mohou b`t i z*porn[. Jejich rozli&en) se prov*d) modifik*C}tory signed a unsigned. Na&e C['ko nem* p@esn% popsan[ druhy prom%nn`ch, pokud se k origin*ln)m verz)m nedod*val manu*l ti&D}t%n`. Podle zku&enost) lze usoudit, (e znam[nkov[ modifik*tory odm)t*. Typ char je bran` jako neznam[nkov` v hodnot*ch 0 - 25E}5. Typ int je dvoubajtov` a tiskne se jako znam[nkov`. Tedy v hodnot*ch -32768 a( 32767. P@esto se n%kdy chov* jako neznam[nF}kov`, 'ili s hodnotami 0 a( 65535. Konkr[tn% v uveden[m programu se pou()v* na "poukov*n)" pam%ti v oblasti jej) horn) poloviG}ny. Tuto anom*lii zat)m vysv%tlit nem+(u. Z hlediska um)st%n) v pam%ti jsou prom%nn[ lok*ln) a glob*ln). Maj) n%kolik varH}iac), kter[ zat)m nejsou d+le(it[. Lok*ln) jsou viditeln[ jen ve funkci, v n)( byly deklarovan[. Jejich adresa se m+(e p@edI}*vat funkc)m volan`m. Po opu&t%n) b%hu funkce se likviduj), proto(e jsou um)st%ny v pam%ti typu z*sobn)k, kter* se p@i n*vratJ}u uvoln). Tento syst[m pr*ce p@irozen% omezuje jejich maxim*ln) velikost. V na&ich odkladech ]daj o horn) hranici chyb), neboK} jsem ho p@ehl[dl. Je jisto, (e prom%nn* pro ulo(en) obr*zku n%kolikan*sobn% p@ekro'ila hranici pro C['ko na ST, i kdy( to poL}dle p@)ru'ky m%lo j)t. Na mal[m ATARI jsem ji ani jako lok*ln) deklarovat nezkou&el. Glob*ln) prom%nn[ jsou deklarov*ny vn%M} funkc), tak(e je mohou v&echny pou()vat, nebo p@esn%ji ty od m)sta deklarace prom%nn[. Jejich maxim*n) d[lka nebude m)t takoN}v[ probl[my jako lok*ln), ale p@esn` ]daj mi op%t chyb). Pointery a adresov[ oper*tory II Minule jsem se zmioval oO} vlastnosti jm[na @et%zcov[ prom%nn[. Toti( (e samo je ukazatelem na @et%zec, proto se u n%j nepou()v* adresov` oper*tor. To P}m+(ete n*zorn% vid%t na funkc)ch gets$ nebo strcpy$, jim( se p@ed* pouze samotn` n*zev. Neplat) to ale u standartn) funkce Q}scanf$, u n)( je oper*tor t@eba. Vysv%tlit se to asi ned*, prost% to tak je. Je&t% mus)m poznamenat, (e pojem @et%zec jeR} nevhodn% zvolen`. Spr*vn% jsem m%l ps*t pole, proto(e @et%zec je sice pole, ale ne ka(d[ pole je @et%zec. U(it) pointeru jS}ako n*hradu p@)kaz+ PEEK a POKE je velmi snadn[. Pointery se prost% deklaruj) jako typ char. To znamen*, (e budou ukazovat naT} prom%nn[ velikosti jednoho bajtu, co( je p@esn% jedno pam%tov[ m)sto. Samotn` pointer m* hodnotu v%t&), proto(e mus) adresovU}% obs*hnout celou pam%. Z@ejm% je typu int, proto(e takov` jsem bez probl[m+ pou(il p@i p@ed*v*n) pointeru volan[ funkci v V}jednom rozpracovan[m programu.$. Po deklaraci sta') pointeru p@i@adit (*danou fyzickou adresu a ji( se m+(e ')st, nebo zapiW}sovat. Vypad* to tak: char p_adr; p_adr = 708; p_adr = 4;nebo m)sto posledn)ho @*dku: p_adr708 = 4; X} Zde by do&lo k nastaven) jednoho z barvov`ch registr+. Bitov[ operace I Jazyk C umo(uje p@)m[ bitov[ operacY}e s hodnotami prom%nn`ch. N%kter[ verze jen s neznam[nkovan`mi, jin[ i se znam[nkov`mi ')sly. Nejp@ehledn%j&) je samoz@ejm% tZ}oto d%lat s jednobajtov`mi hodnotami. Seznam oper*tor+: znak and$ bitov` sou'in AND | bitov` sou'et [} OR st@)&ka exklus)vn) sou'et XOR << posun doleva >> posun doprava vlnovka jedni'k\}ov` dopln%k V p@ilo(en[m programu jsou pou(ity bitov` sou'in pro vymaskov*n) pot@ebn[ho bitu z cel[ho bajtu. D*le bitov[ p]}osuny, jinak tak[ rotace. Po'et posun+ ur'uje parametr uveden` za oper*torem. V`raz x<<4 d* hodnotu, v n)( je p+vodn) obs^}ah prom%nn[ x posunut o 'ty@i bity doleva. X z+stane zde beze zm%ny. Tak je to vyu(ito v hardkop)rce. Pokud by se m%l obsah x_} zm%nit, musel by se z v`razu st*t tento p@)kaz: x=x<<4; nebo tak[ x<<=4;. Popis programu Harkop)rka. Ke kursu j`}e p@ilo(en dvoj) v`pis programu v proveden) pro mal[ ATARI a pro 16 bitov[ po')ta'e. e&)m t)m '*ste'n% dotaz z minule na tisa}k obr*zk+ na PC. P@i jeho p@)padn[m p@enosu nezapom%te zvolit konverzi Returnu na standartn) konec odstavce CR a LF. Nejd@b})ve tedy jak je to s p@enositelnost) program+ mezi po')ta'i. Bez probl[m+ jsou z*kladn) v%ci nepou()v*j)c) speciality jednotlc}iv`ch typ+ po')ta'+. Tedy standartn) vstupy a v`stupy z kl*vesnice a na obrazovku. Uv*d%n` program byl v z*kladn)m stavu odd}lad%n na ATARI ST, dopracov*n) dal&)ch funkc) ji( prob)halo zvl*&. Prvn)m rozd)lem je pou(it) povel+ include<> a deklarac) fe}unkc) definovan`ch p@)mo v programu. P@)kaz preprocesoru include<> ukazuje na soubory s deklaracemi knihovnick`ch funkc). Onof} by to za&e &lo bez toho, ale s nejist`m v`sledkem. Tyto z*le(itosti se p@i p@enosu na mal[ ATARI uma(ou. V definic)ch funkg}c) jsou uv*d%ny typy parametr+ funkci p@ed*van`ch a n*vratov[ hodnoty. Sta') op%t zru&it. Ukazov*tko na otev)ran` soubor jh}e typu pointer z nejasn`ch d+vod+$. U n*s se pou(ije oby'ejn` typ int, proto(e nepoda@en` pokus o otev@en) zav@en)$ souborui} vrac) z*pornou hodnotu. N%kter[ stejn[ p@)kazy se jmenuj) trochu jinak, jako cputc, copen. Funkce scanf$, pou(it* pro zadj}*n) ')seln`ch hodnot, n*m chyb). Proto je nahrazena 'ten)m @et%zce s n*sledn`m p@evodem na ')slo. Po t%chto, zjevn% minim*lk}n)ch ]prav*ch, se mi program rozeb%hnul i na mal[m ATARI. Oproti verzi "16-cti bitov[" je v n%m dodate'n% dod%l*no n%kolik spl}ecialit. P@edev&)m je nastaven grafick` monochromatick` md a obr*zek je p@)mo ulo(en do videoram. Ti&t%n* data se m+(ou posm})lat i do souboru. To je vlastn% d*no jednotn`m zp+sobem otev)r*n) r+zn`ch za@)zen), na tom nebylo t@eba nic slo(it% vym`&letn}. P@id*na byla funkce v`pisu obsahu disku. Tak jak je, m+(e b`t pou(ita i u jin`ch program+, pokud nebude vadit, (e si natvo}rdo otev)r* kan*l '.5. Norm*ln) funkce copen$ si sama najde voln` kan*l, ale tu nen) mo(n[ pou()t pro adres*@. Proto je vyu(p}ita funkce open$. Pozm%n%n* je logika od@*dkov*n) pro dvojpr+chodov` tisk, proto(e se p@edpokl*d* na tisk*rn% nastaven[ auq}tomatick[ od@*dkov*n). Proto je vys)l*n povel inverzn)ho posunu v*lce. Na "velk[" verzi je dod%l*no jen p@)m[ na'ten) cel[hr}o obr*zku nar*z. P@)&t% to ud%l*m i na mal[m ATARI.$ Zato nem* v`pis adres*@e a na')st obr*zky m+(e jen z adres*@e, z n%ho( s}je spou&t%na. V%t&ina nov`ch jev+ vyskytuj)c)ch se v programu je vysv%tlena v textu kursu. Mimo to obsahuje v`pis je&t% deft}inici @et%zcov`ch konstant v ]vodu programu a vol*n) funkce pro nastaven) grafick[ho mdu. Ta vrac) hl*&en) o prob%hl[ operacu}i, kter[ sice ukl*d*m do prom%nn[ ale bez dal&)ho vyu(it). Volby menu se prov*d) zad*v*n)m p)smenem, kter[ m+(e b`t velk[ iv} mal[, pouze n*vrat mus) b`t potvrzen jenom velk`m znakem. P@i psan) programu jsem ud%lal spoustu chyb, z nich( z*kladn) byw}ly nadeklarov*n) prom%nn`ch o jedno m)sto krat&) a naps*n) v`razu x/2 m)sto x/=2, tak(e sice doch*zelo k v`po'tu, ale v`sledex}k se neukl*dal zp%t do prom%nn[. Z doby odladov*n) programu z+stala kontrola po'tu zpracovan`ch dat ve funkci hardcopy$, ky}onkr[tn% @*dek IFe>7680$. Te u( je zbyte'n`, proto(e kdyby skute'n% do&lo k p@ete'en) prom%nn[, tak p@)kaz return; ukon') 'z}innost funkce. To se ned%je, ale stejn% likvidace podm)nky zp+sob) vytuhnut) p@i chodu a j* nev)m pro'. Je to p@)pad programu{} (ij)c)ho si svou vlastn) inteligenc) nez*visle na sv[m tv+rci. -ZB- nev)m pro'. Je to p@)pad programu[#define HEADER "\n'\tHardcopy obrazku (320*192)\n\n"#define OPENERR "Nejde '%s'!\n\n"#define TRANS1 "Prevod dat ...\n"#}}define TRANS2 "Prevedeno.\n\n"char *inbuf,outbuf[7680];main(){char v[80]; printf(HEADER); do { printf("\n\n\tP - p~}okracovani"); printf("\n\tA - obsah disku"); printf("\n\tQ - konec\n"); gets(v); if (v[0]=='p' || v[0]=='P') hard}copy(); if (v[0]=='a' || v[0]=='A') cdir(); printf("navrat\n"); } while(v[0] != 'Q'); return;} hardcopy(){int} in;char v[80],bajt[8],name[32];int x,i,y,z,e;e=0;i=graphics(8);inbuf=peek(88)+(peek(89)*256);for(in=0;!in;){ printf}("\n\tZadej obrazek:\n"); gets(name); normalize(name,"*"); if((in=copen(name,'r'))<0) { printf("I/O error %3d on} %s\n",-i,name); in=0; return; }} for (i=0;i<7680;i++) inbuf[i]=cgetc(in); close(in); printf(TRANS}1); for(z=0;z<7680;z+=320) for(y=0;y<40;y++) { bajt[0] = inbuf[z+y]; bajt[1] = inbuf[z+y+40];} bajt[2] = inbuf[z+y+80]; bajt[3] = inbuf[z+y+120]; bajt[4] = inbuf[z+y+160]; bajt[5] = inbuf}[z+y+200]; bajt[6] = inbuf[z+y+240]; bajt[7] = inbuf[z+y+280]; for(i=0,x=128;i<8;i++,x/=2) {} if(e>7680) return; elseoutbuf[e] = ((bajt[0]&x)<>1)+(((bajt[2]&x)<}>2)+(((bajt[3]&x)<>3)+(((bajt[4]&x)<>4)+(((bajt[5]&x)<>5)+(((bajt[6]&x)<>6)+(((bajt[7]&x)<>7); }e++; } }printf(TRANS2); do { printf("\n\n\tH - TISK"); printf("\n\tN - navrat do hlavniho menu"); prin}tf("\n\tA - obsah disku\n"); gets(v); if (v[0]=='h' || v[0]=='H') tisk(); if (v[0]=='a' || v[0]=='A') cdir(); }} while(v[0] != 'N');return;} tisk(){ char v[40],f; int out,a,z,y,b,c,d,e,g; a=0;for(out=0;!out;){ printf("\}n\tTisk na:\n"); gets(v); normalize(v,"*"); if((out=copen(v,'w'))<0) { printf("I/O error %3d on %s\n",-out,v); } out=0; return; }}printf("\n\tZadej parametr grafiky: "); gets(v); b=val(v); do { printf("\n\tZadej kvali}tu: 0/1 "); gets(v); c=val(v); }while(c>1); cputc(27,out); cputc(51,out); cputc(24-c,out); do { printf("\n}\tZadej levy okraj:"); gets(v); d=val(v); }while(d>150); printf("\n\tPouzit ESC l ? A/N:"); gets(v); f=v[0]; i}f(f=='a') f='A'; if(f=='A') {cputc(27,out); cputc('l',out); cputc(d,out); } for(z=0;z<24;z++) {for(g=0;g<=}c;g++) {if(f!='A') for(e=0;e=0;) { if(a=='\n') { if(b==1) { b=-1; a=32; } putchar(a); } else b=1; } putchar(a); }close(5);gets(name);return;} a=32; p/*hardcopy obrzk z ATARI XL/XE - Zdenk Burian tato verze ji funguje, dal rozen: dvojit tisk, lev okraj rych}l buffer v tomto stavu ureno ke zverejnn ve FLOPu zlob ale zejm buffer klvesnice Nzev tiskovho zazen: A}TARI ST - PRN: AMIGA - PAR: (pozor na Kamenky !) IBM/PC - LPT1 nebo jin*/#include #defi}ne HEADER "\n\n\tHardcopy obrzk z 8-bitovho ATARI. (320*192)\n\n"#define OPENERR "Nejde otevt '%s'!\n\n"#define TRANS}1 "Pevod dat ...\n"#define TRANS2 "Data pro tiskrnu pipravena.\n\n"void hardcopy(void);void tisk(void);unsigned ch}ar inbuf[7680], outbuf[7680];void tisk(void){ FILE *outfile; unsigned int a,z,y,b,c,d,e,f,g; a}=0; if ((outfile= fopen("PRN:","wb"))==0) { printf(OPENERR,"PRN:"); retu}rn; } printf("\n\tZadej parametr 'n' grafiky 'ESC * n m1 m2' : "); scanf("%u",&b); do { printf("}\n\tZadej kvalitu tisku (0 - 1) : "); scanf("%u",&c); } while(c>1); putc(27,outfile); /* rdkovn 24/216" nebo }22/216 */ putc('3',outfile); putc(24-c,outfile); do { printf("\n\tZadej poet mezer z lev strany: "); sca}nf("%u",&d); if(d>40) printf("\n\tPOZOR ! pekroena ka A4 !\n\n"); } while(d>150); printf("\}n\tPout nastaven levho okraje ESC l n ? (A/N) : "); scanf("%u",&f); if(f=='a') f='A'; if(f=='A') { } putc(27,outfile); /* lev okraj ESC l n */ putc('l',outfile); putc(d,outfile); } for(z=0;z<24;z++}) { /* jeden rdek */ for(g=0;g<=c;g++) { if(f!='A') /* lev okraj skldan z mezer*/ for(}e=0;e7680) {print}f("preteen"); return; } else outbuf[e] = ((bajt[0]&x)<>1)+(((}bajt[2]&x)<>2)+ (((bajt[3]&x)<>3)+(((bajt[4]&x)<>4)+(((bajt[5]&x)<>5)+ (((bajt[6]&x)<>6})+(((bajt[7]&x)<>7); e++; } } printf(TRANS2); do { printf("\n\n\tH - TISK"); printf("\n\}tN - nvrat do hlavnho menu\n"); gets(v); if (v[0]=='h' || v[0]=='H') tisk(); } while(v[0] != 'N');return;}}void main(void){char v[80];do { printf(HEADER); printf("\n\n\tP - pokraovn"); printf("\n\n\tQ - konec program}u\n"); gets(v); if (v[0]=='p' || v[0]=='P') hardcopy(); } while(v[0] != 'Q'); printf("\KONEC --------------}--\n");return;}; if (v[0]=='p' || v[0]=='P') hardcopy(); } while(v[0] != 'Q'); printf("\KONEC --------------@@dbc ^v ^ _P f en f en g en g en k p$ N^ P$Q^ X^^ a$ p^ A$s^ z}^e )g en Q%^^   8t X Vn Y Vn  @~ ~ $7_^^ 1g en k} Cg l~  r > _ `j &4_ Eg   en~ |^  &u_^_ "?_ @   |} kN_~ k Zg en  &b_ @_  (&a_ "_  @   }   @    ( ` a  @    P   @    x   @    }   @       @       @       &a}` " ` ( a| a ba @                   }                                }       "`__ jg en b cwg en g en g en k h$ Bb H$Eb Lbb} a$ db A$gb nbe N%}b b|;   $bbb g en k g l  } w >j &b g   en b g en k c d  eh g en k  eh (Ec}c   k 3  k     k h en k  eh (crc h en k  a$}c A A$c   k l  k  k  d e &e&d "d   '}eNd ".d A%d   &dd "bd  krd   k *  k  }k @  k   k  @&ee " "d @ e f    kd $fe  } k J  k   k   @ $e  k   k j  k   k>d }  kd k^ 3h en k Ih n    $Wf f f ge    ^k } &Tf Ph   en   k f   k )fzf_f $f $f  } kf  kwf  k k'Hardcopy obrazku (320*192)P - pokracovani g hA - obsah disku}Q - konecnavratZadej obrazek:*I/O error %3d on %sPrevod dat ...Prevedeno.H - TISKN - navrat do hlavn}iho menuA - obsah diskuTisk na:*I/O error %3d on %sZadej parametr grafiky: Zadej kvalitu: 0/1  hdhZadej }levy okraj:Pouzit ESC l ? A/N:Zadej c. jednotky: D1:*.*I/O error %3d on %sehdi  h $  } $  $h "hhnh  +$  -$h -$h    "  0)  9}'6i    0  "h     i eidj$  $  $}i "iiRi 6j 0)  9'i  0j a)  f'i  Wj A)  F'}j  7j6j     "i   &j @ ejdk  Vn $}|jj "Rj $j     Dn  r$j k w$j k a$j }k        l    &Vk k   ekdl  } Dn   l k     l 00 k k   x }  l &l   H \n    8l  Dntl    e}ldm l{l 0    l  "#  ml # &l  }$  $   :%   :%   :%[m bn n   n  n  }  emdn  . An &m   .     n a& % m z( %mm}  A& % m Z( %nn  00      n00 0u }An000!0D:endo \n     \n Vn n \n    }  \n Vn   \n n   \n Dn q   % An &}]o  8l eodp(o     l         )p} " #   -$o  &p 0)  9'#p    0&p)po    }   \n d$rp  epdq   qp s$p   sp c$p   dsp} x$p   7rp  k   " #%o   ' }&Uq  "# -   q  eqdr   (q  "#  0     } Uq $q  "# 0    (r    t  8l &3r  }  t    )erdsr      (r 'r  "# } 0r  "#  a    [r $s  "# 0    (2s}    t  8l &`s    tes7t (s   t  k }&s   t  Dn (s    t  8l &t    t} #" (6t  kt 8t7u  k    0   v ^k v  v Yn U  _n T}  Yn       l  t  k T  Yn U  _nv  k U  _n T } Yn        Yn 8u7v v Yn   Yn U  _n T  Yn       } l p   Vn |   Vn x   Vn    Vn u .uu v.vv }  vv Pv v u .,v3v ;v.;v8vvCv  FvMv mvFv$0 &mv  # }@)v  v   )v  v #  Vn Vn   &vv S:00}L2Li0L0L0L0L1LP1L^1L1L1L1L1L1 3تʎL08L0إ M0ԆLk4L0 HȱHL0JH J3lhhh hhBhh}DEhhHIhhJhhK VIi``hhh) BHI V0`L0hhhhh) BHIL0hh}01hhh L 1`hhhhhhhL41`hhhHlhhhhhhh} ``Ls1hhh`hhhhh`hhh𪈱`hhhȱhh`ҩ}hhh) 12hhhh) hh)`dbc@2L+2CL 3@Щ2ѭ@ҭ@LP2@ J2M2l  t2عu2l}`'0;3a3r3333333334474O4k444445 5 535Z5j555555$646C6L6h6{6666666664dbc 1 run-time-erro}r ""Type a 23key to return to DOS.2 BҝD2E8HI Vl J3؅ԘLP2ЅȱЅ٥iА}` J3؅ȱ؅LP2 J3e؅ԥeمLP2 J3ԑLP2 J3ԑȥՑLP2 3ԑإ8ҥLP2҅ȱ҅` 3ԑȥՑL3Կ}ԄLP2ԪȱԅՆL34P2BL 3 J3؅ԥمLP2 4ԑȥՑLP2iҥi `AL 3Ա҅ԊȦձ҅ՊLP2 4 J3}Рȥёҥ؅ХمLP2҅ȱ҅ i2إ8؅ҥLP2б҅ЊȦѱ҅ъLP2 J3؅ХمLP2L4eЅАLP2 J3}L4 J3e؅ҥ45eمAL 3LP2&LP2eԅȱeՅL38ԅȱՅL3ԍՍҍȱҍ }7ԭL3 z5ԭL3 z5ԭL3ҍȱҍDL 3դLB7ԅȱՅL3EԅȱEՅL3%ԅȱҿ}%ՅL3҅ȱ҅Ff56L3ȱ҅L3҅ȱ҅&L3Ա҅L38ԅԩՅLP2EԅԩEՅL}P2LP2LP28ԅȱՅ` W6ʆL3 W6ԅL3 W60 W60 W60åп W60}ՐнԐՐЪԐ67Ր ԐLq6Ր԰L6&&& L<7 ᥿}`ɀE ɀf8ਊ 7$ 8$P 8`E0 IIL7ƿ}8L7Ff e78eFfff$ 8`2`E0 IIL7Ƽ\