home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 13 / Flop_Magazin_13_1991_United_Electronic_Crazies_cs_Side_A_a.atr / tiptrik.cap < prev    next >
Text File  |  2023-02-26  |  16KB  |  3 lines

  1. PROHAZOV⇧N     KL⇧VES NA PO⇨    TA⇨I ATARI 800 XL-XE a 130 XE¢-------------------------------------------------------¢¢¢     K prohazov*n) funkc) kl*ves je d+le(it[ zn*t dv% v%ci: Kl*vesnicov` kd kl*vesy, kterou chceme m%nit a ATASCII kd znaku, kter` m* tato kl*vesa tisknot. Rozebereme si tuto problimatiku podrobn%: K zji&t%n) kdu kl*vesy n*m m+(e poslou(it registr "CH" , co( je adresa 764 decim*ln%. K elegantn%j&)mu prov%@ov*n) kd+ kl*ves n*m m+(e poslou(it tento kr*tk` progr*mek ╱je pro @*dku 0, tedy skoro ur'it% nap@ema(e V*& program$:¢¢0 PRINT PEEK ╱764$ :RUN¢¢¢     Po spu&t%n) tohoto progr*mku se za'ne na obrazovce vypisovat sloupec ')sel "255". Po stla'en) n%jak[ kl*vesy se ')slo zm%n). Ano jsou to kdy kl*vesy, kterou jsme stla'ili naposledy.¢POZOR ! -Kdy 192-255 nepracuj) !!!¢Jednin* kombinace, kterou takto zjistit nelze je kombinace CONTROL 1. Kd t[to kombinace je 159 ╱Neov%@eno$. Kompletn) tabulku lze nal[st v manu*lu k TURBO BASICu - Praha. Je zde ale jeden h*'ek. Kl*vesnice je p@i vypisov*n) kd+ kl*ves propnut* na mal* p)smena. Jak tedy zjist)m kd velk[ho p)smena? Na n%kter`ch po')ta')ch z)sk*me velk* p)smena po stla'en) SHIFT ╱PP 06$. U zji&tov*n) kdu kl*vesy s velk`m p)smenem mus)me SHIFT tak[ pou()t. Lze toho tak[ dos*hnout t)m, (e k kdu mal[ho p)smena p@ipo'teme 64.¢Teno podprogram vyma(ete naps*n)m "0" a stla'en)m kl*vesy "RETURN". K prohazov*n) kl*ves je je&t% nutn[ m)t po ruce tabulku ATASCII kd+. Najdete ji v manu*lu k po')ta'i ATARI ╱'esk[m i n%meck[m$, v man*lu k TURBO BASICu, 3/89-str.8,....., pop@. si napi&te progr*mek:¢¢0 OPEN #1,4,0,"K:" :GET #1,A :PRINT A :CLOSE #1 :RUN¢¢¢     Nyn) se po stla'en) kter[koliv kl*vesy s p)smenem, s ')slem, nebo znakem objev) ATASCII kd kl*vesy. ②*dku vyma(eme obdobn`m postupem.¢¢¢      Samotn[ kouzlo prohazov*n) kl*ves spo')v* v tom, (e kl*vesnici zad*me, (e kl*vesa, kter* m* jist[ ')slo, bude od t[to chv)le tisknout znak s zadan`m ATACII kdem. Probl[m je ale v tom, (e standartn) uspo@*d*n) kl*vesnice le() v oblasti ROM ╱Read Only Memory$, tedy oblasti, do kter[ nem+(eme zasahovat. Proto si uspo@*d*n) kl*vesnice byte po byte p@ekop)rujeme do n*mi zvolen[ oblasti, kter* ji( bude le(et v oblasti, do kter[ m+(eme dle libosti zasahovat. Nejvhodn%j&) je k tomuto ]'elu 6.str*nka, kter* za')n* na adrese 1536. POZOR na programy, kter[ maj) sv* data ulo(en* tak[ v 6.str*nce ╱a ④ech je v%t&ina$! Druh* mo(nost je v 7.str*nce ╱od adresy 1792$, ale je nepou(iteln* pro majitele disketov`ch jednotek, proto(e je to oblast, kam ukl*d* sv* data DOS 2.5. T@et) "pojistn*" mo(nost je od adresy 10000. Tuto oblast jsem podrobn% neskoumal, proto ji nedoporu'uji pou()vat. Je zde ale je&t% jeden probl[m. Spo'iv* v tom, jak m* po')ta' zjistit, kde je ulo(en[ nov[ uspo@*d*n) kl*vesnice. K tomuto ]'elu jsou z@)zena na po')taci ATARI tzv. ukazov*tka, ve ker`ch je "zakdov*no", od jak[ adresy n%jak* v%c za')n*. Jsou dv% mo(nosti, jak je zakdovan* adresa n%jakho za'*tku. M+(e to b`t "dv%st% pades*ti &estina" adresy tedy: POKE XXXX,adresa/256, nebo druh* mo(nost, kter[ se zde pou()v*, (e se adresa rozlo() na dv% ')sla ╱a,b$ tak, aby platilo (e : adresa=a ⇩ ╱b✓256$. ⇨)sla a,b se ulo() do dvou adres ╱ukazov*tka$ a to v tomto p@)pad% 121 a 122.¢¢¢¢¢POPIS JEDNOTLIV⑨CH ②⇧DK PROGRAMU:       ¢¢1-5------------------------------------¢   Vyti&t%n) na obrazovku kr*ti'k[ho n*vodu, jak s programem zach*zet.¢10 ------------------------------------¢   Do prom%nn[ "AD" se ulo() adresa za'*tku !NOV❎! tabulky kd+.¢   Nejvhodn%j&) je 1536 ╱pokud nen) v pam%ti zvla&tn) DOS res. TOS$.¢20 ------------------------------------¢   P@ekop)rov*n) jednotliv`ch kd+ kl*ves z ROM do RAM.¢30 ------------------------------------¢   Rozlo(en) prom%nn[ na "LOA" a "HIA" a zaps*n) do spr*vn`ch adres.¢40 ------------------------------------¢   atd. jsou @*dky sestaven[ podle vzorce:¢¢   XXX POKE AD⇩kd,ATASCII kd¢¢   kde XXX je ')slo @*dku.¢¢   Chci-li tedy m)sto mezern)ku tisknout "A", nap)&eme:¢   XXX POKE AD⇩32,65¢viz. program¢¢¢P.S.:40.@*dka zp+sob),(e CONTROL ⇩ Clear sk*'e do leveho horn)ho rohu¢     41.@*dka obstar*v*, (e CONTROR ⇩ 4 zapne nebo vypne p)p*n)                kl*vesnice¢     42.@*dka 'in) skok do leva p@i stla'en) Shitf ⇩ Return¢     43.@*dka kon* stejnou funkci, jako CONTROL ⇩ ✓¢¢¢R A D A :¢¢     Nen) pravidla bez vyj)mky. ⇨)sla ATASCII znak+ 128-145 maj) zaj)mav[ funkce:¢¢128-voln[, jenom "p)pne"¢129-funkce kl*vesy "INVERSE VIDEO"¢130-funkce kl*vesy "Caps"¢131-"Control" znaky zm%n) na norm*ln) znaky ╱jako "Shift" ⇩ "Caps"$¢132-norm*ln) znaky zm%n) na "Control" znaky ╱jako "Control" ⇩ "Caps"$¢133-jako "Control" ⇩ "3"¢134-voln[¢135-voln[¢136-voln[¢137-zap)n* a vyp)n* "p)p*n)" kl*ves¢138-pohyb nahoru¢139-pohyb dolu¢140-pohyb doleva¢141-pohyb doprava¢142-skok do lev[ho horn)ho rohu¢143-skok do lev[ho doln)ho rohu¢144-skok na lev` okraj @*dku¢145-skok na prav` okraj @*dku¢¢¢Literatura:¢╱1$ Zpravodaj atari klubu Praha 1/88-str.34¢╱2$ Zpravodaj atari klubu Praha 1/89-str.22¢╱3$ Zpravodaj atari klubu Praha 4/89-str.19¢╱4$ Manu*l k TURBO BASICu. P@)loha AK Praha '. 13¢¢¢v`pis programu KLAVESY.BAS :¢¢¢¢1 GRAPHICS 0¢2 PRINT :PRINT :PRINT "Control ⇩ <    =>SKOK DO L. HOR. ROHU"¢3 PRINT "Control ⇩ 4    =>ZAP-VYP PIPANI"¢4 PRINT "Shift   ⇩ RET  =>SKOK DO LEVA"¢5 PRINT "Shift   ⇩ SP   =>JAKO Control ⇩ ✓"¢10 AD=1536¢20 II=PEEK╱121$⇩PEEK╱122$✓256:FOR I=0 TO 191:POKE I⇩AD,PEEK╱II$:II=II⇩1:NEXT I¢30 POKE 122,INT╱AD/256$:POKE 121,AD-╱INT╱AD/256$$✓256¢40 POKE AD⇩152,137¢41 POKE AD⇩182,142¢42 POKE AD⇩97,31¢43 POKE AD⇩76,144¢¢¢ NOV⇧ ZNAKOV⇧ SADA V TURBO BASICu¢¢-----------------------------------------------------------------------¢¢     TURBO BASIC XL 1.5 m* nadefinovan[ t@i znakov[ sady. Dv% n*m zn*m[ z ATARI BASICu ╱grafick[ znaky a mezin*rodn) znaky$, jedna ]pln% nov*. Tuto mo(nost mohou ╱bohu(el$ vyu()t pouze majitel[ disketov[ jednotky! Tato znakov* sada um) ps*t velk* a mal* p)smena, ')slice,  znaky SHIFT, <> a inverzn) znaky. Nav)c umo(uje psan) ozdobn[ hv%zdi'ky,  "pan*'ka" a dal&)ch ozdobn`ch p)smen. Jsou to znaky, kter`mi je naps*n n*pis "HAPPY COMPUTER" p@i nahr*v*n) TURBO BASICu z disketov[ jednotky ╱⇩ dal&) zaj)mav[ znaky$. Tyto znaky m+(eme vypsat i inverzn% po stla'en) kl*vesy "INVERSE VIDEO". M+(ete t%chto znak+ pou()t i k vylep&en) Va&eho programu, ale mus)te d*t pozor, aby jste "nep@epokeovali" oblast mezi adresami 23552-24576. Mohlo by doj)t k zhroucen) t[to znakov[ sady.¢     JAK ZAPNOUT ZNAKOVOU SADU ?:¢Na adresu 756 ╱co( je ukazov*tko pr*v% pou()van[ znakov[ sady$ ulo()me dv%st% pades*t &estinu za'*tku znakov[ sady. Tedy:POKE 756,23552/256 co( m+(eme napsat zkr*cen%:¢POKE 756,92        ╱a stla'it RETURN$¢Nov% nadefinovan[ znaky se zobraz) po stla'en) CONTROL-kl*vesa s p)smenem.¢POZOR-ne ve v&ech p@)padech se po stla'en) CONTROL⇩n%co objev) znak! Znak+ je pouze n%kolik! Nov* znakov* sada se d* vypnout pouze:¢1$ stla'en)m RESET¢2$ napsat: a$ GRAPHICS 0¢           b$ POKE 756,224¢     Pokud se sna()me zapnout novou znakovou sadu v kazetov[m TURBO BASICu najdeme zde "jakousi" znakovou sadu, ale nem* v`&e popsan[ parametry ╱m* pouze p)smena$.¢¢         DEFINOV⇧N     ZNAK¢         ----------------¢¢¢     Definov*n) znak+ znamen* zm%nu b)l)ch a 'ern`ch bod+. Tuto techniku pou()v* nap@. textov` editor ⇨apek. Cel* v%c pracuje na tomto principu:¢¢      Samotn[ kouzlo definov*n) znak+ spo')v* v tom, (e po')ta'i zad*me, (e znak, kter` m* jist` vnit@n) kd, bude od t[to chv)le tisknout znak se zadan`m tvarem. Op%t je nutn[ p@ekop)rovat tabulku znak+ z ROM do RAM. Vyu(ijeme k tomuto +'elu adresu 106 ╱RAMTOP$, kter` ukazuje za'*tek voln[ pam%ti. Jedinou nev`hodou je, (e se mus) p@ed spu&t%n)m programu stla'it /RESET/ ╱sta') jednou$, jinak by poka(d[ ubyl 1Kb voln[ pam%ti. Standartn) tabulka znak+ le() od adresy 57344 ╱224✓256$. Je t@eba tak[ dodat vzorec, podle kter[ho se spo')t* adresa znaku v pam%ti:¢¢A = 256✓PEEK╱106$ ⇩ vnit@n) kd ✓ 8¢¢Na adrese 106 je ulo(en za'*tek pam%ti, do kter[ jsme uko(ili znakovou sadu vyd%len` 256. Znaky jsou v pam%ti se@azeny v(dy stejn% a ka(d` znak je definov*n osmi ')sli.¢     Ale jak vytvo@it kdy jednotliv`ch @*dk+ znaku ? Je t@eba nakreslit si rast@)k 8X8 'tvere'k+. Nad rast@)k do jednotliv`ch sloupc+ nap)&eme ')sla 128 , 64 , 32 , 16 , 8 , 4 , 2 a 1 ╱z leva do prava$. Nyn) si vybarv)me 'tvere'ky, kter[ chceme m)t vypln%n[ na obrazovce. A( bude znak hotov, za'neme ps*t vpravo od rast@)ku sou'ty ')sel nad vypln%n`mi 'tvere'ky pro ka(dou @*dku zvl*&④ ╱i nuly$. Z)skan`ch osm hodnot sta') napsat do DATA@*dk+, ale p@ed nimi mus) b`t je&t% vnit@n) kd p)smene, kter[ se m* takto p@edefinovat. ②*dka tedy bude vypadat takto:¢¢XXX DATA vnit@n) kd ,A,B,C,D,E,F,G,H¢kde XXX je ')slo @*dku a p)smena A-H znamenaj) on%ch osm ')sel¢¢P.S. ⇨)sla ve sloupc)ch berme jako celek ╱128 , 64 , ...$¢¢¢ 1                  ¢ 2 6 3 1            ¢ 8 4 2 6 8 4 2 1    ¢-----------------   ¢| | | | |X| | | |  8¢-----------------   ¢| |X| |X|X|X| |X| 93¢-----------------   ¢| |X|X|X|X|X|X|X|127¢-----------------   ¢| |X|X|X|X|X|X|X|127¢-----------------   ¢| | | | |X| | | |  8¢-----------------   ¢| | | | |X| | | |  8¢-----------------   ¢| | | |X|X|X| | | 28¢-----------------   ¢| | |X|X| |X|X| | 54¢-----------------   ¢¢TABULKA VNIT②N    CH K♪D KL⇧VES¢¢¢¢¢¢----------------------------------------------------------------¢| 0  | space   || 32 | zavin*'  || 64 | CT - ,  ||  96 | CT - .  |¢| 1  | !       || 33 | A        || 65 | CT - A  ||  97 | a       |¢| 2  | "       || 34 | B        || 66 | CT - B  ||  98 | b       |¢| 3  | #       || 35 | C        || 67 | CT - C  ||  99 | c       |¢| 4  | ◆       || 36 | D        || 68 | CT - D  || 100 | d       |¢| 5  | procento|| 37 | E        || 69 | CT - E  || 101 | e       |¢| 6  | "and"   || 38 | F        || 70 | CT - F  || 102 | f       |¢| 7  | apostrof|| 39 | G        || 71 | CT - G  || 103 | g       |¢| 8  | ╱       || 40 | H        || 72 | CT - H  || 104 | h       |¢| 9  | $       || 41 | I        || 73 | CT - I  || 105 = i       |¢| 10 | ✓       || 42 | J        || 74 | CT - J  || 106 | j       |¢| 11 | ⇩       || 43 | K        || 75 | CT - K  || 107 | k       |¢| 12 | ,       || 44 | L        || 76 | CT - L  || 108 | l       |¢| 13 | -       || 45 | M        || 77 | CT - M  || 109 | m       |¢| 14 | .       || 46 | N        || 78 | CT - N  || 110 | n       |¢| 15 | /       || 47 | O        || 79 | CT - O  || 111 | o       |¢| 16 | 0       || 48 | P        || 80 | CT - P  || 112 | p       |¢| 17 | 1       || 49 | Q        || 81 | CT - Q  || 113 | q       |¢| 18 | 2       || 50 | R        || 82 | CT - R  || 114 | r       |¢| 19 | 3       || 51 | S        || 83 | CT - S  || 115 | s       |¢| 20 | 4       || 52 | T        || 84 | CT - T  || 116 | t       |¢| 21 | 5       || 53 | U        || 85 | CT - U  || 117 | u       |¢| 22 | 6       || 54 | V        || 86 | CT - V  || 118 | v       |¢| 23 | 7       || 55 | W        || 87 | CT - W  || 119 | w       |¢| 24 | 8       || 56 | X        || 88 | CT - X  || 120 | x       |¢| 25 | 9       || 57 | Y        || 89 | CT - Y  || 121 | y       |¢| 26 | :       || 58 | Z        || 90 | CT - Z  || 122 | z       |¢| 27 | ;       || 59 | HRZ-L    || 91 | escape  || 123 | CT - :  |¢| 28 | <       || 60 | SH - ⇩   || 92 | Esc CT--|| 124 | SH - =  |¢| 29 | =       || 61 | HRZ-P    || 93 | Esc CT-=|| 125 | Esc SH-<|¢| 30 | >       || 62 | SH - ✓   || 94 | Esc CT-⇩|| 126 | Es DBS  |¢| 31 | ?       || 63 | SH - -   || 95 | Esc CT-✓|| 127 | Es TAB  |¢----------------------------------------------------------------¢¢VYSV
  2. TLIVKY K TABULCE VNIT②N    CH K♪D¢¢¢CT - Control                         SH - Shift¢HRZ-P - hranat* z*vorka prav*        HRN-L - hravat* z*vorka lev*¢-  ╱mezi zna'kami$ - sou'asn[ stla'en)¢DBS - Deleta Bk Sp                   TAB - tabel*tor¢¢POPIS ②⇧DK PROGRAMU¢¢10--------------------------------------------------------------------¢Sn)(en) voln[ pam%ti o 1Kb a smaz*n) obrazovky¢20--------------------------------------------------------------------¢P@ekop)rov*n) znakov[ sady z ROM do RAM. Tento proces trv* asi 20 sec.¢30--------------------------------------------------------------------¢Do prom%n[ "PZ" se ulo() po'et definovan`ch znak+.¢40--------------------------------------------------------------------¢Na'ten) vnit@n)ho kdu znaku.¢50--------------------------------------------------------------------¢Vypo')t*n) adresy za'*tku znaku.¢60--------------------------------------------------------------------¢Zm%n%n) tvaru znaku.¢70--------------------------------------------------------------------¢Zapnut) znakov[ sady.¢od 100---------------------------------------------------------------¢Jednotliv[ tvary znak+ podle v)&e uveden[ rovnice.¢-----------------------------------------------------------------------¢¢¢¢v`pis programu ZNAKY.BAS¢¢¢10 POKE 106,PEEK╱106$-4:GRAPHICS 0:RESTORE 100¢20 FOR I=0 TO 1023:POKE 256✓PEEK╱106$⇩I,PEEK╱57344⇩I$:NEXT I¢30 PZ=2:FOR Q=1 TO PZ¢40 READ B¢50 A=256✓PEEK╱106$⇩B✓8¢60 FOR I=A TO A⇩7:READ C:POKE I,C:NEXT I:NEXT Q¢70 POKE 756,PEEK╱106$¢100 DATA 33,8,93,127,127,8,8,28,54¢110 DATA 34,48,24,12,24,48,24,12,24¢¢¢¢¢Program druh`: pokud se V*m taky st*v*, (e chcete n%kdy spo')tat mezery v n%jak[m programu, a ono to nejde, p@edkl*d*m ]pravu v`&e uveden[ho programu. Po jeho spu&t%n) se mezera bude tisknout jako te'ka ╱zn*m* z ⇨apka$ :¢¢30 PZ=1: FOR Q=1 TO PZ¢100 DATA 0,0,0,0,24,24,0,0,0¢110 zcela vypustit¢¢¢¢POZN⇧MKY¢¢Pokud u( nechceme pou()vat nov% nadefinovan[ znaky, zad*me p@)kaz :¢POKE 756,224¢a zp%t k nov% nadefinovan`m:¢POKE 756,PEEK╱106$¢Spole'n% se znakem se definuje i inverzn) znak. Tento znak je p@)stopn` po stla'en) kl*vesy INVERSE VIDEO.¢¢         N
  3. CO O CHYB⇧CH¢         --------------¢¢¢Na po')ta'i ATARI 800/130 XL/XE je ve&ker` syst[m chybov`ch hl*&en) zalo(en na n%kolika registrech:¢¢¢PRINT PEEK ╱195$   - ⇨)slo chyby ╱prvn) parametr v hl*&en) ERROR$. V TURBO BASICu povel "ERR".¢¢PRINT PEEK ╱183$ ⇩ PEEK ╱184$ ✓ 256   - ⇨)slo @*dky, ze kter[ byly naposledy 'teny data. Pom*h* v instalov*n) strojov`ch rutin, ve kter`ch jsou DATA-@*dky zakon'eny kontroln)m sou'tem. ╱V chybov[m hl*&en) nen) !!!$¢¢PRINT PEEK ╱186$ ⇩ PEEK ╱187$ ✓ 256   - ⇨)slo @*dky, na kter[ do&lo k chyb% ╱v chybov[m hl*&en) druh` parametr$. V TURBO BASICu p@)kaz ERL.¢¢¢Pokud tedy chceme ve sv[m programu simulovat chybov[ hl*&en), sta') doplnit V*& program o n*sleduj)c) @*dky:¢¢¢0 TRAP 32767¢32767 ?"CHYBA ";PEEK╱195$;" NA RADCE ";PEEK╱186$⇩PEEK╱187$✓256: END¢¢Eventueln% v TURBO BASICu:¢¢0 TRAP 32767¢32767 ?"CHYBA ";ERR;" NA RADKU ";ERL¢¢      ZAP    N⇧N    /VYP    N⇧N     BASICU¢      ------------------------¢¢¢     P@edkl*d*m program, kter` uv)taj) ti, kte@) pot@ebuj) 'asto zap)nat/vyp)nat intern) BASIC. Je to "p@etvo@enina" programu "SWITCH.OBJ", kter` se &)@) v pra(sk[m ATARI-KLUBU. Program pracuje n*sledovn%: Nahrajte si z disku nebo z p*sku program SWITCH.BAS a napi&te RUN. Po spu&t%n) se vypne intern) BASIC a ob%v) se DOS-TOS menu. Pokud ale bychom cht%li prov[st op%t zm%nu stavu ╱vypnuto => zapnuto nebo obr*cen%$ nen) t@eba znova nahr*vat tento program, sta') jen zadat skok na adr. 1536 ╱◆0600$ ╱v DOS 2.5 menu volba M a zadat "0600" v BASICu ? USR ╱1536$, ...$ pokud se ale program nep@emazal. Jedin* nev`hoda tohoto programu je, (e na za'*tku pr*ce !mus)! b`t zapnut` BASIC. Pokud bychom cht%li pouze jednou vypnout BASIC, sta') zadat p@)kaz POKE 1016,1 a stla'it /RESET/, nebo p@)kaz ? USR ╱48384$ co( je skok na RESET-vektor. ¢¢¢V`pis programu SWITCH.BAS¢¢¢¢1 FOR ADDR=1536 TO 1553:READ CIS:POKE ADDR,CIS:NEXT ADDR¢2 DATA 162,0,142,14,212,120,169,1,77,248,3,141,248,3,76,116,228,203¢3 PRINT USR╱1536$¢¢¢                                             MARTIN BERAN,Praha¢¢