**************************************************************************** * Programme : KillRLE.asm * * Usage : KillRLE * * Version : V1.00 * * Date : 07.02.1990 * * Author : Jörg Sixt * * Purpose : Checks and kills "Revenge of the Lamer Exterminator" * * Language : A68K-Assembler,Blink from Fish 110 * * Bugs : accept no arguments * **************************************************************************** SECTION BEGIN,CODE EXECBASE: EQU $4 OPENLIBRARY: EQU -$228 CLOSELIBRARY: EQU -$19E OUTPUT: EQU -$3C OPEN: EQU -$1E CLOSE: EQU -$24 READ: EQU -$2A WRITE: EQU -$30 SEEK: EQU -$42 DELETEFILE: EQU -$48 MODE_READWRITE: EQU 1004 OFFSET_BEGINNING: EQU -$1 OPENLIB: MACRO lea \1,a1 moveq #0,d0 jsr OPENLIBRARY(a6) move.l d0,\2 beq \3 ENDM CLOSELIB: MACRO lea \1,a1 jsr CLOSELIBRARY(a6) ENDM PRINT: MACRO move.l Outhandle,d1 move.l \1,d2 move.l \2,d3 jsr WRITE(a5) ENDM Begin: move.l EXECBASE,a6 OPENLIB Dosname,a5,#End jsr OUTPUT(a5) move.l d0,Outhandle beq End move.l #sssName,d1 move.l #MODE_READWRITE,d2 jsr OPEN(a5) move.l d0,d1 beq openError move.l d0,handle move.l #Buffer,d2 move.l #5,d3 jsr READ(a5) lea RLE,a0 lea Buffer,a1 move.l #4,d0 CompareLoop: cmpm.b (a0)+,(a1)+ bne sssClose dbf.s d0,CompareLoop PRINT #RLEMess,#101 move.l handle,d1 move.l #0,d2 move.l #OFFSET_BEGINNING,d3 jsr SEEK(a5) move.l handle,d1 move.l #KillBuf,d2 move.l #5,d3 jsr WRITE(a5) cmp.l #5,d0 bne killError move.l #VirName,d1 jsr DELETEFILE(a5) tst.l d0 beq killError sssClose: move.l handle,d1 jsr CLOSE(a5) End: move.l #0,d0 rts openError: PRINT #openErrMess,#29 bra End killError: PRINT #killErrMess,#18 bra sssClose SECTION VARS,BSS even Outhandle: ds.l 1 handle: ds.l 1 Buffer: ds.b 5 SECTION CONST,DATA even Dosname: dc.b 'dos.library',0 sssName: dc.b ':s/startup-sequence',0 VirName: dc.b ':' RLE: dc.b $A0,$A0,$A0,$A0,$A0,0 RLEMess: dc.b 'The disk is infected with the "Revenge of the',10 dc.b 'Lamer Exterminator". I kill him now. Make a reset then',10 KillBuf: dc.b $20,$20,$20,$20,$20 openErrMess: dc.b 'Can`t open startup-sequence!',10 killErrMess: dc.b 'Can`t kill virus!',10 END