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

  1. ¢P@ed*v*n) parametr+ strojov`m podprogram+m z BASICu ╱TurboBASICu$¢Radek ③t%rba¢¢¢Pokud jste se rozhodli, (e budete ve sv`ch BASICovsk`ch programech pou()vat strojov[ podprogramy, kter[ si sami nap)&ete, pak jsou n*sleduj)c) @*dky ur'eny pr*v% V*m.¢¢Pro spr*vn[ pochopen) dal&)ch @*dk+ je nutn[ uv%domit si, jak pracuje struktura z*sobn)k ╱stack$:¢Nejjednodu&&) je p@edstavit si ho jako hrom*dku karet. Na tuto hrom*dku m+(eme v(dy nahoru polo(it dal&) kartu nebo ╱op%t pouze horn) kartu$ odebrat. Tato struktura se naz`v* FILO - zkratka First In Last Out - neboli - Prvn) dovnit@ posledn) ven. T)mto je jasn[, (e ')slo, kter[ vlo()me do z*sobn)ku jako prvn) bude postupn% zaskl*d*v*no dal&)mi ')sly. Tato ')sla budeme moci odeb)rat pouze postupn% a v opa'n[m po@ad), ne( jak byla vkl*d*na.¢¢Z*sobn)k, kter` je implementov*n v po')ta')ch Atari XE/XL umo(uje ukl*dat jednobytov* ')sla ╱tedy ')sla rozsahu 0 a( 255$. Celkov` po'et ')sel, kter* m+(eme do z*sobn)ku ulo(it je omezen na 256.¢Pro ulo(en) ')sla do z*sobn)ku je ur'ena instrukce PHA - ulo() se obsah akumul*toru na vrchol z*sobn)ku.¢Pro v`b%r ')sla ze z*sobn)ku pou()v*me instrukci PLA - napln) akumul*tor ')slem z vrcholu z*sobn)ku.¢¢Jako p@)klad s vyu(it)m p@ed*v*n) parametr+ jsem napsal strojov` podprogram, kter` p@evezme dv% ')sla a vr*t) jejich sou'et.¢Okomentovan` v`pis tohoto podprogramu je sou'*st) t[to v`ukov[ lekce.¢¢Zp+sob vol*n):¢SOUCET=USR╱Za'*tekStrPrg,CISLO1,CISLO2$¢¢A( BASIC program dojde do m)sta, kde naraz) na tento @*dek, provede n*sleduj)c):¢¢1.$¢Do z*sobn)ku se ulo() n*vratov* adresa.¢╱Bude vyu(ita pro n*vrat ze strojov[ho podprogramu.$¢╱Tato adresa n*s nemus) v+bec zaj)mat.$¢¢2.$¢Vezme CISLO1 ╱a to bu⇦ konkr[tn) ')slo nebo obsah prom%nn[, kter* zde bude uvedena$ a zaokrouhl) ho na cel* ')sla. Pokud bude z)skan* hodnota mimo povolen` interval ╱0 a( 65535$, dojde k chybov[mu hl*&en).¢¢3.$¢Rozd%l) CISLO1 na horn) a doln) byte.¢HBYTE=INT╱CISLO1/256$¢DBYTE=CISLO1-256✓HBYTE¢¢4.$¢Vlo() DBYTE do z*sobn)ku.¢Vlo() HBYTE do z*sobn)ku.¢¢5.$¢Provede pro CISLO2 stejnou operaci ╱viz. body 2. , 3. a 4.$¢¢6.$¢Do z*sobn)ku se vlo() po'et parametr+ ╱tz. po'et dvojic ╱HBYTE,DBYTE$$.¢╱V na&em p@)pad% by to bylo ')slo 2, nebo④ jsme pou(ili 2 parametry.$¢¢7.$¢Provede se spu&t%n) strojov[ho podprogramu od adresy dan[ hodnotou Za'*tekStrPrg.¢¢D+le(it[ upozorn%n):¢Ve strojov[m podprogramu mus)me bezpodm)ne'n% zajistit vybr*n) hodnot po'tu parametr+ a v&ech dvojic ╱HBYTE,DBYTE$ a( po n*vratovou adresu ╱ale tuto u( tam nech*me$ ze z*sobn)ku.¢Nezapomete na to, (e procesor si do z*sobn)ku ukl*d* i dal&) hodnoty - jako nap@)klad p@i vykon*n) instrukce JSR bude do z*sobn)ku ulo(en doln) a horn) byte n*vratov[ adresy, nebo p@i vykon*n) RTS se 2 byte odeberou a pou(ij) jako n*vratov* adresa. Vybr*n) parametr+ by proto m%lo b`t hned na za'*tku podprogramu, aby se p@ede&lo zbyte'n`m probl[m+m.¢¢Pokud tedy pou(ijete ve sv[m strojov[m podprogramu instrukce PLA pro p@evzet) parametr+ z BASICu ╱nebo TurboBASICu$, budete dost*vat tyto hodnoty:¢¢PLA - Poprv[¢  .. akumul*tor bude napln%n po'tem parametr+, kter[ byly pou(ity p@i vol*n) z BASICu ╱jedn* se o po'et dvojic HBYTE,DBYTE !!!$. Kontrolou t[to hodnoty m+(eme ov%@it, zda bylo u(ito spr*vn[ho po'tu parametr+ a vyhnout se zhroucen) syst[mu.¢PLA - Podruh[¢  .. akumul*tor bude obsahovat HORN     byte prvn)ho parametru.¢PLA - Pot@et)¢  .. akumul*tor bude obsahovat DOLN     byte prvn)ho parametru.¢PLA - Po'tvrt[¢  .. HORN     byte druh[ho parametru.¢PLA - Pop*t[¢  .. DOLN     byte druh[ho parametru.¢atd. atd. atd.¢¢Obecn%:¢¢Vol*n):¢A=USR╱RunAdr,PAR1,PAR2,..,PARn$¢¢Stav z*sobn)ku p@i zavol*n) str.podpr.:¢¢Naho@e  Po'etParametr+ ╱=n$¢        Horn)BytePAR1 -PAR1¢        Doln)BytePAR1 /¢        Horn)BytePAR2 -PAR2¢        Doln)BytePAR2 /¢        ...¢        ...¢        Horn)BytePARn -PARn¢        Doln)BytePARn /¢        Horn)ByteN*vratov[Adresy¢Dole    Doln)ByteN*vratov[Adresy¢Dno ---------------------------------¢