.model small .code org 100h chktsr: jmp main init dw 0 qty dw 0 umb dw 0 errormsg db "Copyright (C) 1997 by Peter2000, Nexus910 & Itto",0dh,0ah db "Specificare il nome di un TSR sulla riga di comando.",0dh,0ah,24h main proc near cld call command mov ax,5802h int 21h xor ah,ah mov umb,ax mov ax,5803h mov bx,1 int 21h mov ah,52h int 21h call mcbchain call restore mov ax,4c01h int 21h main endp command proc near xor bh,bh mov bl,byte ptr cs:[80h] cmp bl,0 je error add bx,81h mov al,20h mov cx,7eh mov di,82h rep scasb dec di cmp di,bx je error mov init,di mov cx,bx sub cx,di mov al,20h repne scasb dec di cmp byte ptr cs:[di],20h je keep inc di keep: sub di,init mov qty,di mov cx,di mov si,init call ucase retn error: mov ah,9 lea dx,errormsg int 21h mov ax,4cffh int 21h command endp mcbchain proc near mov ds,word ptr es:[bx-2] counter: mov dx,word ptr ds:[1] cmp byte ptr ds:[0],4dh je jump1 cmp byte ptr ds:[0],5ah jne jump2 jump1: cmp dx,0 je jump2 cmp dx,8 je jump2 dec dx push ds pop bx cmp dx,bx je first inc dx jump2: cmp byte ptr ds:[0],44h jne second first: inc dx push cs pop es mov si,9 mov cx,8 loadtsr: lodsb cmp al,0 je cfr cmp al,20h loopne loadtsr cfr: mov cx,si sub cx,9 cmp cx,cs:qty jne second mov si,8 lea di,endcode rep movsb push ds push cs pop ds mov cx,qty lea si,endcode call ucase mov cx,qty mov si,init lea di,endcode rep cmpsb pop ds jne second jmp ok skip: jmp counter second: cmp byte ptr ds:[0],4dh je jump3 cmp byte ptr ds:[0],5ah jne incr jump3: cmp dx,8 jne incr cmp word ptr ds:[8],4453h je exit incr: mov ax,ds add ax,word ptr ds:[3] mov ds,ax exit: mov bx,ds inc bx mov ds,bx cmp byte ptr ds:[0],5ah jne skip retn ok: call restore int 20h mcbchain endp ucase proc near xor ah,ah mov di,si convert: lodsb push ax mov ax,1213h int 2fh stosb pop ax loop convert retn ucase endp restore proc near mov ax,5803h mov bx,umb int 21h retn restore endp endcode: end chktsr