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