home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 31 / Flop_Magazin_31_1994_05_Raster_cs_Side_A.atr / basmach.cap < prev    next >
Text File  |  2023-02-26  |  4KB  |  1 lines

  1. BASIC a strojov[ podprogramy  Radek ③t%rba, RASTER¢¢    V tomto 'l*nku bych cht%l osv%tlit, jak pou()vat strojov[ podprogramy s vol*n)m z BASICu.¢    Zp+sob vol*n):  A=USR╱Adresa,Parametr_1,...,Parametr_n$¢    ADRESA:  Tato hodnota specifikuje m)sto v pam%ti, na kter[m za')n* volan` strojov` podprogram. Tato adresa m+(e b`t zad*na bu⇦to formou konkr[tn)ho ')sla ╱resp. prom%nn[, kter* toto ')slo obsahuje$, ale 'asto se m+(ete setkat s vol*n)m p@es adresu @et%zce.¢    Co znamen* ADR╱A◆$: Zde je nutno u()t podrobn%j&)ho vysv%tlen).  Strojov` podprogram je vlastn% posloupnost ')sel, kter* ur'uj), co m* procesor d%lat. Tato ')sla mohou b`t um)st%na p@)mo v pam%ti, ale potom mus)me zajistit, aby tam p@ed prvn)m vol*n)m opravdu byla. P@i vol*n) z BASICu se nab)z) mo(nost tuto posloupnost ')sel um)stit do textov[ho @et%zce v podob% posloupnosti znak+ ╱ASCI hodnoty jednotliv`ch znak+ tvo@) onu posloupnost ')sel$. Um)st%n) @et%zc+ v pam%ti v&ak nen) pevn% d*no, a proto takov`to stroj. podprogram vol*me p@es funkci ADR╱..◆$ , kter* vrac), kde v pam%ti dan` @et%zec za')n*.¢    S t)mto @e&en)m jsou v&ak spojeny n%kter[ probl[my:¢  1. Pro nastaven) @et%zce na programov[m @*dku nen) mo(n[ pou()vat v&echny znaky ╱nap@. uvnit@ @et%zce nem+(e b`t znak " nebo znak pro p@echod na nov` @*dek$. Existuje sice @e&en) - takov` znak jednodu&e vynechat ╱nahradit mezerou!$ a pak ho tam dodat pomoc) funkce ..◆╱pozice,pozice$=CHR◆╱')slo$, ale to u( nen) tak elegantn).¢  2. N%kter[ str. pprg. jsou naps*ny tak, (e si vynucuj) um)st%n) v pam%ti na n%jak[ adrese. U string+ toto nem+(eme zajistit. Jedinou mo(nost) je p@en[st ASCI hodnoty znak+ v @et%zci p@)mo do pam%ti na po(adovanou adresu. Bez instrukce MOVE pro p@esun ╱je pouze v TBASICu$ je v&ak toto zdlouhav[ a neefektivn).¢  V TBASICu je mo(no pou()t:¢  MOVE ADR╱..◆$,adresa,LEN╱..◆$¢  Potom ji( m+(eme volat pprg. na t[to konkr[tn) adrese.¢    Z t%chto d+vodu vypl`v*, (e existuj) strojov[ pprg., kter[ touto formou nelze bez probl[m+ pou()vat.¢    Strojov` pprg. na konkr[tn) adrese:  V tomto p@)pad% se nej'ast%ji pou()v* zp+sob, kdy je str. pprg. um)st%n v souboru a "nalouduje" se p@es funkce pro 'ten) souboru p@)mo do pam%ti.¢    V TBASICu lze pou()t funkci BLOAD"za@)zen):jm[nosouboru", kter* v&e pot@ebn[ zajist) sama ╱str.pprg. v&ak musel b`t ulo(en ve form*tu BSAVE, ve kter[m je d*na adresa pro jeho um)st%n)$.  Dal&) mo(nost) je pou()t funkce OPEN.., BGET.., CLOSE, kter`mi dostaneme soubor do pam%ti na n*mi zadan[ m)sto.¢    V "'ist[m" BASICu je probl[m v tom, (e funkce BLOAD ani BGET zde v+bec nejsou. Lze tedy pou()t kra④ou'k` str.pprg. ╱zadefinovan` pomoc) stringu$, kter` prov*d) obdobnou funkci jako TBasicovsk[ BGET. Toto @e&en) vypad* sice pon%kud slo(it%, ale v%@te, (e je nejelegantn%j&).¢    PARAMETRY:  P@i vol*n) str. pprg. se za adresou zad*vaj) parametry, kter[ mu chceme p@edat. Je ov&em nutn[ v%d%t, jak[ parametry ten 'i onen pprg. pou()v*. Tyto informace by m%ly b`t ke ka(d[mu str. pprg. dod*ny, nebo④ nedodr(en) po'tu nebo po@ad) parametr+ m+(e m)t ╱narozd)l od BASICovsk`ch funkc)$ za n*sledek  zhroucen) syst[mu ╱samoz@ejm% pouze softwarov[ '*sti :-$ $. N%kter[ lep&) pprg. maj) nepovinn[ po'ty parametr+ ╱pprg. s*m rozpozn*, kolik jich bylo pou(ito a podle toho se chov*$.    Jako parametry pro str.pprg. m+(eme pou()t pouze cel* nez*porn* ')sla ╱resp. prom%nn[ - obsahuj)c) takto specifikovan* ')sla$ v rozsahu 0 a( 65535 ╱tedy vnit@n% reprezentovan[ pomoc) dvou byt+$. Pokud je t@eba p@edat do pprg. n%jak` text, p@ed*v* se p@es ADR╱..◆$ nebo p@)mo ADR╱"text"$. Je t@eba si v&ak uv%domit, (e ve skute'nosti nep@ed*v*me tento text, ale pouze hodnotu, kter* ur'uje adresu pam%ti, kde se tento text nach*z). Str. pprg. m+(e ╱krom% jin[ pr*ce$ i vracet hodnotu v prom%nn[, se kterou je vol*n ╱A=USR╱..$$. Tato hodnota m+(e ud*vat nap@. v`sledek n%jak[ po'etn) operace, nebo ozna'ovat, zda po(adovan* akce byla ]sp%&n* ╱vr*cen)m ')sla chyby$ apod.¢