b91 TITLE My_Int61.ASM ;===== Rutinen f”r 'CR_LF' placeras som en minnesresident rutin ;===== som kan anropas fr†n godtyckligt program med INT 60h ;--------------------------------------------------------------------- INCLUDE TSR.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 ;CR_LF ASSUME CS:CSEG,DS:CSEG push ax push dx mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h pop dx pop ax ret My_Rutin ENDP ;----------------------------------------------------------------------- End_TSR: ;Minnesresident del slut ;----------------------------------------------------------------------- ;======================================================================== Install_TSR: Load_Vec 184h,3f1h TSR_Inst 61h ;------------------------------------------------------------------------- CSEG ENDS END Start ;-------------------------------------------------------------------------- . 0