Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- hirom ; (should be s-dd1)
- !transfer_buff = $f4
- org $c02874
- l_c02874:
- phb
- pei ($16)
- sep #$20
- rep #$10
- lda $16
- pha : plb
- sta $01 : sta $1e
- lda #$54 : sta $00
- lda $12 : sta $02
- lda #$6b : sta $03
- lda #$ff : sta $1d
- ldy $10
- rep #$21
- stz $10
- lda [$10],y : iny : iny
- adc $14
- tyx
- ldy $14
- sta $14
- lda #$00ff
- jsl $800000
- sep #$20
- stz $01 : lda $16 : inc : sta $03
- phx
- tyx
- ply
- sep #$21
- .flag
- lda [$10],y : iny
- rol
- sta $02
- bcs .lz
- .uncomp
- lda [$10],y : iny
- sta $0000,x : inx
- .next
- cpx $14
- bcs .end
- - asl $02
- bcc .uncomp
- beq .flag
- .lz
- lda [$10],y : iny : sta $1c
- lda [$10],y : iny : dec : sta $00
- sty $16
- txy
- rep #$21
- txa
- adc $1c
- tax
- lda $00
- sep #$20
- bit $03
- bmi +
- mvn $7e7e
- tyx
- ldy $16
- cpx $14
- bcc -
- bra .end
- + mvn $7f7f
- tyx
- ldy $16
- cpx $14
- bcc -
- .end
- plx : stx $16
- plb
- tdc
- sep #$30
- rtl
- ; (other codes)
- l_c0b60b_clear_center:
- lda #$0080
- ldx #$7e
- - sta $c440,x
- dex #2
- bpl -
- rts
- l_c0b60b_update:
- clc : lda $10 : adc #$8c10 : sta $10
- tdc : adc $12 : sta $12 : tay
- lda $14 : adc #$02eb : sta $14
- bcc +
- inc $16
- + asl #6
- clc
- adc $10
- sta $18
- rts
- l_c0b60b_post:
- ldx #$7e : phx : plb
- rep #$31
- ldx #$c4c0
- ldy #$c3c0
- -- txa
- adc #$0010
- sta $18
- - lda $0000,x : eor #$00ff : sta $0000,y
- lda $0010,x : eor #$00ff : sta $0010,y
- lda $0020,x : eor #$00ff : sta $0020,y
- lda $0030,x : eor #$00ff : sta $0030,y
- lda $0040,x : eor #$00ff : sta $0040,y
- lda $0050,x : eor #$00ff : sta $0050,y
- lda $0060,x : eor #$00ff : sta $0060,y
- lda $0070,x : eor #$00ff : sta $0070,y
- inx #2 : iny #2
- cpx $18
- bcc -
- tya : sbc #$0090 : tay
- txa : adc #$006f : tax
- cpx #$f4c0
- bcc --
- rts
- warnpc $c02a0c
- padbyte $00 : pad $c02a0c
- org $c0b60b
- l_c0b60b:
- php
- phb
- phd
- sep #$10
- rep #$20
- pea $807e
- plb
- jsr l_c0b60b_clear_center
- plb
- stz $10 : sta $12
- stz $14 : stz $16
- lda #$c4c0 : sta $2181
- ldx #$00 : stx $2183
- ldx #$60
- .loop
- phx
- jsr l_c0b60b_update
- lda $10
- ldx #$00
- cpx $16
- bne .one
- bra +
- - iny
- cmp $18
- beq .next
- +
- -- sty $2180 : stx $2180
- clc
- adc $14
- bcs -
- cmp $18
- bne --
- bra .next
- - iny
- cmp $18
- beq .next
- .one
- -- sty $2180 : stx $2180
- iny
- clc
- adc $14
- bcs -
- cmp $18
- bne --
- .next
- plx
- dex
- bne .loop
- .end
- jsr l_c0b60b_post
- pld
- plb
- plp
- rtl
- warnpc $c0b674
- padbyte $00 : pad $c0b674
- ; ------------------------
- org $c70000
- l_c70000:
- jmp l_c70006
- l_c70003:
- jmp l_c7005b
- l_c70006:
- php
- rep #$30
- phx
- phy
- phb
- pea $8787 : plb : plb
- phd
- lda #$0000 : tcd : tay
- sep #$20
- jsr l_c701a5
- ldy #$204a
- lda #$c7
- jsr l_c701f9
- jsr l_c701dd ; set jump
- jsr .sub
- jsr .sub
- jsr .sub
- stz $80
- stz $81
- stz $82
- pld
- plb
- ply
- plx
- plp
- rtl
- .sub
- lda $2143
- - cmp $2143
- beq -
- rts
- l_c701a5:
- php
- phx
- sep #$20
- lda #$ff : sta $2140
- ldx #$bbaa
- - cpx $2140
- bne -
- lda #$cc : sta $8c
- plx
- plp
- rts
- l_c701c1:
- phx
- sep #$20
- lda #$fc : sta $2140
- ldx #$bbaa
- - cpx $2140
- bne -
- plx
- rts
- l_c701dd:
- phx
- ldx #$0400 : stx $2142
- stz $2141
- lda $8c : sta $2140
- plx
- rts
- l_c701f9:
- php
- phb
- phx
- pha
- plb
- lda $8c
- phd
- pea $2100
- pld
- .begin
- ldx $0000,y
- beq .end
- jsr transfer_ipl
- bra .begin
- .end
- pld
- sta $8c
- plx
- plb
- plp
- rts
- transfer_ipl:
- xba
- lda $0002,y : sta $42
- lda $0003,y : sta $43
- iny #4
- xba
- .begin
- sta $41
- sta $40
- - cmp $40
- bne -
- tdc : xba
- lda $0000,y : iny
- xba
- bra .loop
- - xba
- lda $0000,y : iny
- xba
- -- cmp $40
- bne --
- inc
- .loop
- rep #$20
- sta $40
- sep #$20
- dex
- bne -
- - cmp $40
- bne -
- inc : inc
- bne +
- inc
- + rts
- l_c7005b:
- php
- rep #$30
- phx
- phy
- tsx
- txy
- ldx #$1f9f ; (avoid stack overflow)
- txs
- phy
- phb
- pea $8787 : plb : plb
- phd
- pea $0000 : pld
- pei (!transfer_buff)
- pei (!transfer_buff+2)
- pei (!transfer_buff+4)
- pei (!transfer_buff+6)
- pei (!transfer_buff+8)
- pei (!transfer_buff+10)
- pha
- tdc : tay
- lda #$1500 : sta $8a
- stz $8e
- pla
- and #$00ff
- beq ++
- asl
- tax
- lda $c71000,x
- tax
- jsr .sync
- jsr transfer_1_begin
- jsr transfer_2_begin
- rep #$20 : lda $8a : sta $7e2000
- sep #$20 : lda $8e : sta $7e2002
- bra +
- ++ jsr l_c701c1
- rep #$20 : lda $7e2000 : sta $8a
- sep #$20 : lda $7e2002 : sta $8e
- + stz $8f
- - tdc
- lda $8f
- cmp #$03
- beq .end
- rep #$20
- tax
- sep #$20
- lda $80,x
- beq .end
- rep #$20
- asl
- tax
- lda $c71078,x
- tax
- jsr transfer_3_begin
- tdc : lda $8f
- tay
- clc
- lda $c70000,x : inx
- phx
- tyx
- adc $c704dd,x
- plx
- sta $8d
- jsr transfer_2_begin
- inc $8f
- bra -
- .end
- jsr .finalize
- plx : stx.b !transfer_buff+10
- plx : stx.b !transfer_buff+8
- plx : stx.b !transfer_buff+6
- plx : stx.b !transfer_buff+4
- plx : stx.b !transfer_buff+2
- plx : stx.b !transfer_buff+0
- pld
- plb
- plx
- txs
- ply
- plx
- plp
- rtl
- .finalize
- stz $2141 : lda #$ff : sta $2140
- - lda $2140
- bne -
- stz $2140
- rts
- .sync
- php
- phx
- sep #$20
- lda #$ff : sta $2140
- ldx #$bbaa
- - cpx $2140
- bne -
- plx
- plp
- rts
- transfer_1:
- - inx
- jsr transfer_1_1
- .begin
- rep #$20
- lda $c70000,x : inx : inx
- tay
- sep #$20
- lda $c70000,x
- bne -
- inx
- lda $c70000,x : inx
- sta $8d
- rts
- transfer_1_1:
- php
- phb
- pha : plb
- phx
- sta.b !transfer_buff+2
- .begin
- ldx $0000,y
- beq .end
- phx
- rep #$21
- tya
- adc #$0004 : sta.b !transfer_buff
- adc $01,s
- tax
- lda $0002,y
- tay
- txa
- plx
- pha
- sep #$20
- jsr fast_transfer
- ply
- bra .begin
- .end
- plx
- plb
- plp
- rts
- transfer_3:
- - inx
- jsr transfer_3_1
- .begin
- rep #$20
- lda $c70000,x : inx : inx
- tay
- sep #$20
- lda $c70000,x
- bne -
- inx
- rts
- transfer_3_1:
- phb
- phx
- pha : plb : sta.b !transfer_buff+2
- tdc
- lda $8f
- rep #$20
- asl
- tax
- lda $c704cd,x
- tax
- .begin
- rep #$21
- lda $0000,y
- beq .end
- iny #4 : sty.b !transfer_buff
- txy
- tax
- adc.b !transfer_buff
- pha
- sep #$20
- jsr fast_transfer
- ply
- bra .begin
- .end
- sep #$20
- plx
- plb
- rts
- transfer_2:
- - sta $86
- asl
- adc $86
- phx
- tax
- lda $c71c75,x
- tay
- sep #$20
- lda $c71c77,x
- phb
- pha : plb
- jsr .sub1
- jsr .sub2
- jsr .sub3
- inc $8d
- inc $8e
- plb
- plx
- inx #2
- .begin
- rep #$20
- lda $c70000,x
- bne -
- sep #$20
- rts
- .sub1
- pei ($88)
- tdc : lda $8d
- rep #$20
- sta $86
- asl
- adc $86
- asl
- adc #$1208
- tax
- lda $0000,y : sta $84
- lda $0002,y : sta $86
- lda $0004,y : sta $88
- tya
- adc #$0006
- pha
- sep #$20
- lda $8e : sta $84
- ldy #$0084 : sty.b !transfer_buff
- lda #$87 : sta.b !transfer_buff+2
- txy
- ldx #$0006
- jsr fast_transfer
- ply
- plx : stx $88
- rts
- .sub2
- rep #$30
- sec : lda $0002,y : sbc $0000,y
- clc : adc $8a
- sta $86
- lda $8a : sta $84
- iny #4
- phy
- lda $8e
- and #$00ff
- asl #2
- adc #$1400
- tay
- sep #$20
- ldx #$0084 : stx.b !transfer_buff
- lda #$87 : sta.b !transfer_buff+2
- ldx #$0004
- jsr fast_transfer
- ply
- rts
- .sub3
- rep #$31
- lda $0000,y : iny #4 : sty.b !transfer_buff
- sta $86 : pha
- adc $8a
- ldy $8a
- sta $8a
- sep #$20
- phb : pla : sta.b !transfer_buff+2
- plx
- jsr fast_transfer
- rts
- fast_transfer:
- php
- phb
- sep #$20
- lda #$87 : pha : plb
- jsr send_size_and_dest
- sep #$10
- stz.b !transfer_buff+11
- ldy.b !transfer_buff+10
- bra +
- .begin
- jsr confirm
- + jsr read_bytes
- bra ++
- .loop
- jsr read_bytes
- dey #2
- - cpy $2140
- bne -
- ++ stx $2141 : sta $2142 : xba : sta $2143
- + ldy.b !transfer_buff+10 : sty $2140
- bne .loop
- rep #$20
- inc.b !transfer_buff+1 : inc.b !transfer_buff+4 : inc.b !transfer_buff+7
- sep #$20
- dec.b !transfer_buff+9
- bne .begin
- jsr confirm
- plb
- plp
- rts
- send_size_and_dest:
- stx $4204
- lda #$03 : sta $4206
- xba : xba : nop : nop
- rep #$20
- lda $4216
- lsr
- adc $4214
- tax
- sep #$20
- sta $2142 : eor #$ff : inc : sta.b !transfer_buff+10
- xba
- sta $2143 : sta.b !transfer_buff+9
- lda #$ff : sta $2141
- dec : sta $2140
- inc
- - cmp $2141
- bne -
- rep #$20
- txa
- dec
- ora #$ff00
- pha
- tya
- adc $01,s
- sep #$20
- sta $2142 : xba : sta $2143
- lda.b !transfer_buff+10 : sta $2140
- stz $2141
- - lda $2141
- bne -
- txa
- beq +
- inc.b !transfer_buff+9
- + rep #$20
- ldy.b !transfer_buff+2
- lda.b !transfer_buff
- sec
- adc $01,s
- sta.b !transfer_buff
- bcs +
- dey
- + sep #$20
- tya
- sta.b !transfer_buff+2
- rep #$21
- pla
- txa : adc.b !transfer_buff : sta.b !transfer_buff+3
- sep #$20
- tdc : adc.b !transfer_buff+2 : sta.b !transfer_buff+5
- rep #$21
- txa : adc.b !transfer_buff+3 : sta.b !transfer_buff+6
- sep #$20
- tdc : adc.b !transfer_buff+5 : sta.b !transfer_buff+8
- rts
- confirm:
- inc.b !transfer_buff+11
- lda.b !transfer_buff+11
- - cmp $2141
- bne -
- rts
- read_bytes:
- lda [!transfer_buff+0],y : tax
- lda [!transfer_buff+6],y : xba
- lda [!transfer_buff+3],y
- iny : sty.b !transfer_buff+10
- rts
- warnpc $c704cd
- padbyte $00 : pad $c704cd
- org $c72afb
- arch spc700
- base $0ea5
- mov y, #$bb
- mov a, #$aa
- movw $f4, ya
- mov a, #$fe
- - cmp a, $f4
- bne -
- .begin
- movw ya, $f6
- mov $f5, #$ff
- movw $14, ya ; size
- eor a, #$ff : inc a : inc a
- mov x, a
- - mov a, $f5
- bne -
- movw ya, $f6
- mov $f4, x
- mov $f5, #$00
- mov .st1+1, a
- mov .st1+2, y
- addw ya, $14
- mov .st2+1, a
- mov .st2+2, y
- addw ya, $14
- mov .st3+1, a
- mov .st3+2, y
- mov y, #$00
- - cmp x, $f4
- bne -
- dec x
- -- mov a, $f5 ; 3 bytes / 40 cycles
- .st1
- mov $0000+X, a
- mov a, $f6
- .st2
- mov $0000+X, a
- mov a, $f7
- mov $f4, x
- .st3
- mov $0000+X, a
- inc x
- - cmp x, $f4
- bne --
- cmp x, #$00
- bne -
- inc y : mov $f5, y
- inc .st1+2
- inc .st2+2
- inc .st3+2
- mov a, $f4
- - dec a
- beq --
- + mov a, $f4
- bpl -
- + inc a
- bne .begin
- mov $f4, #$00
- - mov a, $f4
- bmi -
- mov $f1, #$31
- ret
- warnpc $c72b84
- padbyte $00 : pad $c72b84
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement