home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 39 / Flop_Magazin_39_1997_01_Raster_cs_Side_A.atr / taskmng.cap < prev    next >
Text File  |  2023-02-26  |  5KB  |  1 lines

  1. Radek ③t%rba, RASTER¢TaskManager¢V`pis v&ech maker a podprogram+ knihovny TASKMNG.LIB¢¢--------¢TASKMANAGER param1¢Makro, kter[ je nutno um)stit na za'*tek vlastn)ho programu. Zajist) p@)stupnost sady podprogram+ pro @)zen) multitaskingu. Parametr "param1" ud*v* maxim*ln) po'et rutin pro soub%(n[ zpracov*n) ╱rozmez) 1 a( 16$.¢¢--------¢JSR INITTM¢╱Init TaskManager$¢Podprogram, kter` inicializuje evidenci rutin. Nem* (*dn[ parametry. Vlastn) vnit@n) rutina TaskManageru b%() ve VBI ╱VVBLKD - viz. dvojice adres ◆224,◆225 a rutina SETVBV$ a zaji&④uje b%h dal&)ch rutin v tomt[( p@eru&en). Z tohoto d+vodu nen) mo(n[ v dal&)ch '*stech programu pou()vat nastavov*n) VBI p@eru&en) ╱do&lo by k vy@azen) funkc) TaskManageru$. TaskManager nepou()v* (*dn[ buky v nult[ str*nce, tak(e je mo(n[ je libovoln% vyu()vat.¢¢--------¢JSR STOPTM¢╱Stop TaskManager$¢Podprogram, kter` zastav) b%h TaskManageru a t)m i v&ech rutin, kter[ pod n)m byly spu&t%ny.¢¢--------¢JSR RUNTASK¢╱Run Task$¢Spu&t%n) rutiny pro soub%(n[ zpracov*n).¢Parametry:¢A ╱akumul*tor$ ..')slo, pod kter`m m* b`t tato rutina evidov*na. Pokud bude pou(ito v)cekr*t stejn[ ')slo rutiny, b%(et bude v(dy jen posledn) z nich. ╱Lze zad*vat hodnoty z rozmez) 0 a( "')slo dan[ u makra"-1.$¢X ╱x-registr$ ..doln) byte adresy po'*tku rutiny.¢Y ╱y-registr$ ..horn) byte adresy po'*tku rutiny.¢¢--------¢JSR KILLTASK¢╱Kill Task$¢Vypnut) libovoln[ rutiny b%()c) pod TaskManagerem.¢Parametry:¢A ╱akumul*tor$ ..')slo, pod kter`m byla p@)slu&n* rutina spou&t%na pomoc) procedury RUNTASK.¢¢--------¢JSR SLPTASK¢╱Sleep Task$¢Podprogram, kter` MUS     b`t pou(it uvnit@ rutin b%()c)ch pod TaskManagerem. Mezi jednotliv`mi vol*n)mi tohoto podprogramu nesm) b`t 'innost p@esahuj)c) cca 20tis)c strojov`ch cykl+. ╱Tento limit plat) pro sou'et "strojocyklov`ch" n*ro'nost) v&ech rutin sou'asn% b%()c)ch pod TM.$¢Dal&)m omezen)m je nutnost nem)t p@ed odskokem do tohoto podprogramu ulo(ena (*dn* data v syst[mov[m z*sobn)ku ╱stacku$. Proto(e se do tohoto z*sobn)ku ukl*daj) i n*vratov[ adresy p@i pou(it) instrukce JSR, nem+(e b`t vol*n) JSR SLPTASK obsa(eno uvnit@ n%jak[ho podprogramu.¢Parametry:¢A ╱akumul*tor$ ..')slo ud*vaj)c) dobu ╱po'et pades*tin sekundy$, na kterou se rutina "vzd*v*" procesoru ╱a tedy i sv[ho prov*d%n)$.¢Pozn*mka:¢Obsahy registr+ A, X i Y jsou po n*vratu z SLPTASK zachov*ny ve stejn[m stavu jako p@ed vol*n)m.¢¢P@)klady:¢Lze prov[st:¢LOOP¢   JSR podpr1¢   JSR podpr2¢   LDA #1¢   JSR SLPTASK¢   JMP LOOP¢¢Nesm) b`t pou(ito:¢LOOP¢   JSR PP1¢   JMP LOOP¢PP1¢   LDA #1¢   JSR SLPTASK¢   RTS¢¢Ani toto nelze:¢LOOP¢   LDA adr1¢   PHA¢   LDA #1¢   JSR SLPTASK¢   PLA¢   STA adr2¢   JMP LOOP¢¢--------¢JMP ENDTASK¢Rutina ╱pozor, vol* se pomoc) JMP a ne JSR!$, kterou je mo(n[ pou()t uvnit@ rutiny b%()c) pod TM. Provede regulern) ukon'en) dan[ multitaskingov[ rutiny.¢¢--------¢JSR GETTASKID¢Podprogram, kter` lze pou()t uvnit@ rutiny b%()c) pod TM. Po n*vratu se v registru A ╱akumul*toru$ objev) identifika'n) ')slo, pod kter`m je tato rutina evidov*na v TaskManageru ╱pod kter`m byla spu&t%na$.¢¢--------¢N*sleduj)c) p@)klad ukazuje soub%(n[ spou&t%n) 3 rutin. Ka(dou z nich lze samostatn% rozb%hnout kl*vesami 1,2,3 a samostatn% zastavit kl*vesami 4,5,6:¢¢;MULTI2.MAC¢;Vyrobil Radek Sterba¢;RASTER 1996¢    .OPT NO LIST¢    ✓= ◆5000¢;¢    .INCLUDE #D:TASKMNG.LIB¢;¢    TASKMANAGER 4¢;¢START¢    JSR INITTM¢    LDY #0¢    TYA¢NA1 STA ╱88$,Y¢    INY¢    CPY #120¢    BNE NA1¢;¢LOOP¢    LDA #255¢    STA 764¢LO2¢    LDA 764¢    CMP #255¢    BEQ LO2¢    CMP #31   ;KOD PRO KL.1¢    BNE LO3¢    LDA #0¢    LDX #<RUT1¢    LDY #>RUT1¢    JSR RUNTASK¢    JMP LOOP¢LO3¢    CMP #30   ;KOD PRO KL.2¢    BNE LO4¢    LDA #1¢    LDX #<RUT2¢    LDY #>RUT2¢    JSR RUNTASK¢    JMP LOOP¢LO4¢    CMP #26   ;KOD PRO KL.3¢    BNE LO5¢    LDA #2¢    LDX #<RUT3¢    LDY #>RUT3¢    JSR RUNTASK¢    JMP LOOP¢LO5¢    CMP #24   ;KOD PRO KL.4¢    BNE LO6¢    LDA #0¢    JSR KILLTASK¢    JMP LOOP¢LO6¢    CMP #29   ;KOD PRO KL.5¢    BNE LO7¢    LDA #1¢    JSR KILLTASK¢    JMP LOOP¢LO7¢    CMP #27   ;KOD PRO KL.6¢    BNE LO8¢    LDA #2¢    JSR KILLTASK¢    JMP LOOP¢LO8¢    JMP LOOP¢;¢RUT1¢    LDY #0¢R1A LDA TX1,Y¢    STA ╱88$,Y¢    INY¢    CPY #8¢    BNE R1A¢    LDY #10¢    LDX #0¢R1B TXA¢    STA ╱88$,Y¢    LDA #10¢    JSR SLPTASK¢    INX¢    JMP R1B¢TX1 .SBYTE "Rutina 1"¢;¢RUT2¢    LDY #40¢    LDX #0¢R2A LDA TX2,X¢    STA ╱88$,Y¢    INY¢    INX¢    CPX #8¢    BNE R2A¢    LDY #50¢    LDX #0¢R2B TXA¢    STA ╱88$,Y¢    LDA #25¢    JSR SLPTASK¢    INX¢    JMP R2B¢TX2 .SBYTE "Rutina 2"¢;¢RUT3¢    LDY #80¢    LDX #0¢R3A LDA TX3,X¢    STA ╱88$,Y¢    INY¢    INX¢    CPX #8¢    BNE R3A¢    LDY #90¢    LDX #0¢R3B TXA¢    STA ╱88$,Y¢    LDA #2¢    JSR SLPTASK¢    DEX¢    CPX#0¢    BNE R3B¢    JMP ENDTASK¢TX3 .SBYTE "Rutina 3"¢;¢    ✓=◆2E0¢    .WORD START¢¢