Subversion Repositories freemyipod

Rev

Rev 378 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 378 Rev 419
Line 444... Line 444...
444
	.hword 0x4013
444
	.hword 0x4013
445
	.hword 0x4029
445
	.hword 0x4029
446
	.hword 0xc000
446
	.hword 0xc000
447
lcddata_2:
447
lcddata_2:
448
lcddata_3:
448
lcddata_3:
-
 
449
	.hword 0xc010
449
	.hword 0x4008
450
	.hword 0x4008
450
	.hword 0x0808
451
	.hword 0x0808
451
	.hword 0x8110
452
	.hword 0x8110
452
	.byte 0x13
453
	.byte 0x13
453
	.hword 0x4011
454
	.hword 0x4011
Line 597... Line 598...
597
	.hword 0xe454
598
	.hword 0xe454
598
	.hword 0x4007
599
	.hword 0x4007
599
	.hword 0x0173
600
	.hword 0x0173
600
	.hword 0xc000
601
	.hword 0xc000
601
 
602
 
-
 
603
	.code 16
-
 
604
 
-
 
605
thumb_nrv2e_d8:
-
 
606
	mov r7,r2
-
 
607
        mov r4,#1; neg r5,r4 @ r5= -1 initial condition
-
 
608
        lsl r4,#31 @ 1<<31: refill next time
-
 
609
        mov r6,#5
-
 
610
        lsl r6,#8 @ 0x500 @ nrv2e M2_MAX_OFFSET
-
 
611
        b top_n2e
-
 
612
 
-
 
613
nrv2e_done:
-
 
614
	blx flushcache
-
 
615
	bx r7
-
 
616
 
-
 
617
get1_n2e: @ In: Carry set [from adding 0x80000000 (1<<31) to itself]
-
 
618
        ldrb r4,[r0] @ zero-extend next byte
-
 
619
        adc r4,r4 @ double and insert CarryIn as low bit
-
 
620
        add r0,#1
-
 
621
        lsl r4,#24 @ move to top byte, and set CarryOut from old bit 8
-
 
622
        mov pc,lr @ return, stay in current (THUMB) mode
-
 
623
 
-
 
624
lit_n2e:
-
 
625
        ldrb r3,[r0]; add r0,#1
-
 
626
        strb r3,[r2]; add r2,#1
-
 
627
top_n2e:
-
 
628
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lit_n2e
-
 
629
        mov r1,#1; b getoff_n2e
-
 
630
 
-
 
631
off_n2e:
-
 
632
        sub r1,#1
-
 
633
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
634
getoff_n2e:
-
 
635
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
636
        add r4,r4; mov lr,pc; beq get1_n2e; bcc off_n2e
-
 
637
 
-
 
638
        sub r3,r1,#3 @ set Carry
-
 
639
        mov r1,#0 @ Carry unaffected
-
 
640
        blo offprev_n2e @ r1 was 2; tests Carry only
-
 
641
        lsl r3,#8
-
 
642
        ldrb r5,[r0]; add r0,#1 @ low 7+1 r4
-
 
643
        orr r5,r3
-
 
644
        mvn r5,r5; beq nrv2e_done @ r5= ~r5
-
 
645
        asr r5,#1; bcs lenlast_n2e
-
 
646
        b lenmore_n2e
-
 
647
 
-
 
648
offprev_n2e:
-
 
649
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lenlast_n2e
-
 
650
lenmore_n2e:
-
 
651
        mov r1,#1
-
 
652
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lenlast_n2e
-
 
653
len_n2e:
-
 
654
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
655
        add r4,r4; mov lr,pc; beq get1_n2e; bcc len_n2e
-
 
656
        add r1,#6-2
-
 
657
        b gotlen_n2e
-
 
658
 
-
 
659
lenlast_n2e:
-
 
660
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1 @ 0,1,2,3
-
 
661
        add r1,#2
-
 
662
gotlen_n2e: @ 'cmn': add the inputs, set condition codes, discard the sum
-
 
663
        cmn r6,r5; bcs near_n2e @ within M2_MAX_OFFSET
-
 
664
        add r1,#1 @ too far away, so minimum match length is 3
-
 
665
near_n2e:
-
 
666
        ldrb r3,[r2] @ force cacheline allocate
-
 
667
copy_n2e:
-
 
668
        ldrb r3,[r2,r5]
-
 
669
        strb r3,[r2]; add r2,#1
-
 
670
        sub r1,#1; bne copy_n2e
-
 
671
        b top_n2e
-
 
672
 
-
 
673
	.code 32
-
 
674
 
602
font:
675
font:
603
	.byte 0, 0, 0, 0, 0
676
	.byte 0, 0, 0, 0, 0
604
	.byte 0, 0, 95, 0, 0
677
	.byte 0, 0, 95, 0, 0
605
	.byte 0, 7, 0, 7, 0
678
	.byte 0, 7, 0, 7, 0
606
	.byte 20, 127, 20, 127, 20
679
	.byte 20, 127, 20, 127, 20
Line 694... Line 767...
694
	.byte 0, 8, 54, 65, 0
767
	.byte 0, 8, 54, 65, 0
695
	.byte 0, 0, 119, 0, 0
768
	.byte 0, 0, 119, 0, 0
696
	.byte 0, 65, 54, 8, 0
769
	.byte 0, 65, 54, 8, 0
697
	.byte 2, 1, 2, 4, 2
770
	.byte 2, 1, 2, 4, 2
698
 
771
 
699
	.code 16
-
 
700
	.align 1
-
 
701
 
-
 
702
thumb_nrv2e_d8:
-
 
703
	mov r7,r2
-
 
704
        mov r4,#1; neg r5,r4 @ r5= -1 initial condition
-
 
705
        lsl r4,#31 @ 1<<31: refill next time
-
 
706
        mov r6,#5
-
 
707
        lsl r6,#8 @ 0x500 @ nrv2e M2_MAX_OFFSET
-
 
708
        b top_n2e
-
 
709
 
-
 
710
nrv2e_done:
-
 
711
	blx flushcache
-
 
712
	bx r7
-
 
713
 
-
 
714
get1_n2e: @ In: Carry set [from adding 0x80000000 (1<<31) to itself]
-
 
715
        ldrb r4,[r0] @ zero-extend next byte
-
 
716
        adc r4,r4 @ double and insert CarryIn as low bit
-
 
717
        add r0,#1
-
 
718
        lsl r4,#24 @ move to top byte, and set CarryOut from old bit 8
-
 
719
        mov pc,lr @ return, stay in current (THUMB) mode
-
 
720
 
-
 
721
lit_n2e:
-
 
722
        ldrb r3,[r0]; add r0,#1
-
 
723
        strb r3,[r2]; add r2,#1
-
 
724
top_n2e:
-
 
725
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lit_n2e
-
 
726
        mov r1,#1; b getoff_n2e
-
 
727
 
-
 
728
off_n2e:
-
 
729
        sub r1,#1
-
 
730
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
731
getoff_n2e:
-
 
732
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
733
        add r4,r4; mov lr,pc; beq get1_n2e; bcc off_n2e
-
 
734
 
-
 
735
        sub r3,r1,#3 @ set Carry
-
 
736
        mov r1,#0 @ Carry unaffected
-
 
737
        blo offprev_n2e @ r1 was 2; tests Carry only
-
 
738
        lsl r3,#8
-
 
739
        ldrb r5,[r0]; add r0,#1 @ low 7+1 r4
-
 
740
        orr r5,r3
-
 
741
        mvn r5,r5; beq nrv2e_done @ r5= ~r5
-
 
742
        asr r5,#1; bcs lenlast_n2e
-
 
743
        b lenmore_n2e
-
 
744
 
-
 
745
offprev_n2e:
-
 
746
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lenlast_n2e
-
 
747
lenmore_n2e:
-
 
748
        mov r1,#1
-
 
749
        add r4,r4; mov lr,pc; beq get1_n2e; bcs lenlast_n2e
-
 
750
len_n2e:
-
 
751
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1
-
 
752
        add r4,r4; mov lr,pc; beq get1_n2e; bcc len_n2e
-
 
753
        add r1,#6-2
-
 
754
        b gotlen_n2e
-
 
755
 
-
 
756
lenlast_n2e:
-
 
757
        add r4,r4; mov lr,pc; beq get1_n2e; adc r1,r1 @ 0,1,2,3
-
 
758
        add r1,#2
-
 
759
gotlen_n2e: @ 'cmn': add the inputs, set condition codes, discard the sum
-
 
760
        cmn r6,r5; bcs near_n2e @ within M2_MAX_OFFSET
-
 
761
        add r1,#1 @ too far away, so minimum match length is 3
-
 
762
near_n2e:
-
 
763
        ldrb r3,[r2] @ force cacheline allocate
-
 
764
copy_n2e:
-
 
765
        ldrb r3,[r2,r5]
-
 
766
        strb r3,[r2]; add r2,#1
-
 
767
        sub r1,#1; bne copy_n2e
-
 
768
        b top_n2e
-
 
769
 
-
 
770
	.code 32
-
 
771
	.align 2
772
	.align 2
772
 
773
 
773
foundfile:
774
foundfile:
774
	ldr	r12, [r11,#0xc]
775
	ldr	r12, [r11,#0xc]
775
	ldr	r11, [r11,#0x8]
776
	ldr	r11, [r11,#0x8]
Line 1072... Line 1073...
1072
	b	sendlcdd
1073
	b	sendlcdd
1073
	b	sendlcdc
1074
	b	sendlcdc
1074
	bne	lcdbyteseq
1075
	bne	lcdbyteseq
1075
	movne	r0, r0,lsl#4
1076
	movne	r0, r0,lsl#4
1076
	bne	udelay
1077
	bne	udelay
1077
	tst	r8, #0x20
-
 
1078
	mov	r10, #0x22000000
1078
	mov	r10, #0x22000000
1079
	ldreq	r6, val_80100db0
1079
	ldr	r6, val_80100db0
1080
	orr	r10, r10, #0x10000
1080
	orr	r10, r10, #0x10000
1081
	streq	r6, [r4]
1081
	str	r6, [r4]
1082
	add	r11, r10, #0x25800
1082
	add	r11, r10, #0x25800
1083
	mov	r0, #-1
1083
	mov	r0, #-1
1084
fillbuff:
1084
fillbuff:
1085
	str	r0, [r11,#-4]!
1085
	str	r0, [r11,#-4]!
1086
	cmp	r10, r11
1086
	cmp	r10, r11
Line 1099... Line 1099...
1099
	bl	sendlcdc
1099
	bl	sendlcdc
1100
	mov	r0, #0
1100
	mov	r0, #0
1101
	bl	sendlcdd
1101
	bl	sendlcdd
1102
	add	r0, r9, #0x11
1102
	add	r0, r9, #0x11
1103
	bl	sendlcdc
1103
	bl	sendlcdc
1104
	sub	r0, r9, #0xc1
1104
	add	r0, r9, #0x3f
1105
	bl	sendlcdd
1105
	bl	sendlcdd
1106
	add	r0, r9, #0x12
1106
	add	r0, r9, #0x12
1107
	bl	sendlcdc
1107
	bl	sendlcdc
1108
	mov	r0, #0
1108
	mov	r0, #0
1109
	bl	sendlcdd
1109
	bl	sendlcdd