b01 TITLE TSR_Dem2.ASM ;===== Programmet visar principen f”r att skriva ett TSR-program ;===== Vi nyttjar MACRO som skriver direkt i bildminnet ;--------------------------------------------------------------------- INCLUDE TSR.MAC INCLUDE SCREEN.MAC ;--------------------------------------------------------------------- CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG ORG 100H Start: jmp Install_TSR ;================================ Org_Rutin DD ? ;================================ ;------------------------------------------------------------------- Start_TSR: ;H„r startar den programkod som ;kommer att bli minnesresident Our_Layer PROC FAR ASSUME CS:CSEG,DS:CSEG ;M†ste deklareras i denna del som ;f”rblir i minnet push ds ;DS-registrets v„rde sparas f”r ;att †terh„mtas vid †terhoppet push cs ;Under arbetet i 'Our_Layer' m†ste pop ds ;DS ha samma v„rde som CS annars ;kommer l„sning/skrivning fr†n/till ;minne att g† till fel datasegment sti ;F”r ordningens skull f”r att ;m”jligg”ra nytt interrupt pushf ;ett INT simuleras call Org_Rutin ;Originalrutinen anropas ;--------------------------------------------------------------------- call My_Rutin ;--------------------------------------------------------------------- pop ds ;Det v„rde DS hade vid inhopp ;†terh„mtas iret ;Kontrollen tillbaka till ;anropande program (DOS) Our_Layer ENDP ;----------------------------------------------------------------------- My_Rutin PROC NEAR ASSUME CS:CSEG,DS:CSEG push dx mov dl,00h ;00 skrives Byte2Scr 78,0,70h ;X=78, Y=0, Inv video pop dx ret My_Rutin ENDP ;----------------------------------------------------------------------- End_TSR: ;Minnesresident del slut ;======================================================================= Install_TSR: TSR_Inst 1ch ;------------------------------------------------------------------------- CSEG ENDS END Start ;-------------------------------------------------------------------------- . 0