DVP5960/37 - MP3_TagDisplayEsta rotina é a mesma para o DVP5965/55 e DVP5965/93. Mudam apenas endereços XRAM e de subrotinas, mas o resto é idêntico.
Para localizar no seu firmware, procure por "EF F0 7F 4B". Só ocorre no topo de MP3_TagDisplay e todo o firmware onde eu não achei isso não tinha mesmo suporte a tags.
Esta rotina está em um post separado porque estoura o limite de 20000 caracteres por post.
[size=08pt]
B1:565C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:565C
B1:565C
B1:565C MP3_TagDisplay: ; CODE XREF: B1_6AC0:B1_6BF4j
B1:565C ; B1_AB8D+B1p
B1:565C ; DATA XREF: ...
B1:565C E4 clr A
B1:565D 90 FB B3 mov DPTR, #XRAM_FBB3
B1:5660 F0 movx @DPTR, A
B1:5661 90 FB AC mov DPTR, #XRAM_FBAC
B1:5664 74 06 mov A, #6 ; Mudei para 0x5 mas nada pareceu mudar
B1:5666 F0 movx @DPTR, A
B1:5667 7D 02 mov R5, #2
B1:5669 7C 00 mov R4, #0
B1:566B 7F 01 mov R7, #1
B1:566D 12 1D 04 lcall B1_BS_162_B3_BE2E
B1:5670 7F 4A mov R7, #0x4A ; 'J' ; As quatro chamadas a ARM_Getchar seguintes obtem o endereço
B1:5670 ; inicial do bloco de tags (4 bytes) na shared memory
B1:5672 7E 02 mov R6, #2
B1:5674 12 1B 96 lcall ARM_GetChar_B1_BS
B1:5677 90 FB A3 mov DPTR, #XRAM_FBA3
B1:567A EF mov A, R7
B1:567B F0 movx @DPTR, A
B1:567C 7F 4B mov R7, #0x4B ; 'K'
B1:567E 7E 02 mov R6, #2
B1:5680 12 1B 96 lcall ARM_GetChar_B1_BS
B1:5683 90 FB A2 mov DPTR, #XRAM_FBA2
B1:5686 EF mov A, R7
B1:5687 F0 movx @DPTR, A
B1:5688 7F 4C mov R7, #0x4C ; 'L'
B1:568A 7E 02 mov R6, #2
B1:568C 12 1B 96 lcall ARM_GetChar_B1_BS
B1:568F 90 FB A1 mov DPTR, #XRAM_FBA1
B1:5692 EF mov A, R7
B1:5693 F0 movx @DPTR, A
B1:5694 7F 4D mov R7, #0x4D ; 'M'
B1:5696 7E 02 mov R6, #2
B1:5698 12 1B 96 lcall ARM_GetChar_B1_BS
B1:569B 90 FB A0 mov DPTR, #XRAM_FBA0
B1:569E EF mov A, R7
B1:569F F0 movx @DPTR, A
B1:56A0 90 FC 76 mov DPTR, #XRAM_FC76 ; Coordenada horizontal (HI)
B1:56A3 74 01 mov A, #1
B1:56A5 F0 movx @DPTR, A
B1:56A6 A3 inc DPTR
B1:56A7 74 79 mov A, #0x79 ; 'y' ; Coordenada Horizontal: 0x179
B1:56A9 F0 movx @DPTR, A
B1:56AA 90 FC 79 mov DPTR, #XRAM_FC79 ; Coordenada vertical (HI)
B1:56AD E4 clr A
B1:56AE F0 movx @DPTR, A
B1:56AF A3 inc DPTR
B1:56B0 74 37 mov A, #0x37 ; '7' ; Coordenada Vertical: 0x37
B1:56B2 F0 movx @DPTR, A
B1:56B3 7B DC mov R3, #0xDC ; '_' ; R2R3 = altura
B1:56B5 7A 00 mov R2, #0
B1:56B7 7D DC mov R5, #0xDC ; '_' ; R4R5 = Largura
B1:56B9 7C 00 mov R4, #0
B1:56BB 7F 0F mov R7, #0xF
B1:56BD 12 1E 54 lcall ClearRect ; Limpa o retângulo
B1:56C0 E4 clr A ; Cor de Outine (0x0)
B1:56C1 90 FC 1E mov DPTR, #XRAM_FC1E ; OSD_colors
B1:56C4 F0 movx @DPTR, A
B1:56C5 A3 inc DPTR
B1:56C6 74 0E mov A, #0xE ; Cor de Preenchimento
B1:56C8 F0 movx @DPTR, A
B1:56C9 E4 clr A
B1:56CA FB mov R3, A
B1:56CB FD mov R5, A
B1:56CC 7F 0F mov R7, #0xF
B1:56CE 12 1D 76 lcall OSD_TextColor_B1_BS
B1:56D1 74 FF mov A, #0xFF
B1:56D3 FF mov R7, A
B1:56D4 FE mov R6, A
B1:56D5 FD mov R5, A
B1:56D6 FC mov R4, A
B1:56D7 90 FB A0 mov DPTR, #XRAM_FBA0
B1:56DA E0 movx A, @DPTR
B1:56DB F8 mov R0, A
B1:56DC A3 inc DPTR
B1:56DD E0 movx A, @DPTR
B1:56DE F9 mov R1, A
B1:56DF A3 inc DPTR
B1:56E0 E0 movx A, @DPTR
B1:56E1 FA mov R2, A
B1:56E2 A3 inc DPTR
B1:56E3 E0 movx A, @DPTR
B1:56E4 FB mov R3, A
B1:56E5 C3 clr C
B1:56E6 12 08 59 lcall B1_?C?ULCMP
B1:56E9 70 03 jnz B1_56EE
B1:56EB 02 58 AA ljmp B1_58AA
B1:56EE ; ---------------------------------------------------------------------------
B1:56EE
B1:56EE B1_56EE: ; CODE XREF: MP3_TagDisplay+8Dj
B1:56EE E4 clr A
B1:56EF 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:56F2 F0 movx @DPTR, A
B1:56F3
B1:56F3 B1_56F3: ; CODE XREF: MP3_TagDisplay+24Bj
B1:56F3 90 FB A0 mov DPTR, #XRAM_FBA0
B1:56F6 E0 movx A, @DPTR
B1:56F7 FC mov R4, A
B1:56F8 A3 inc DPTR
B1:56F9 E0 movx A, @DPTR
B1:56FA FD mov R5, A
B1:56FB A3 inc DPTR
B1:56FC E0 movx A, @DPTR
B1:56FD FE mov R6, A
B1:56FE A3 inc DPTR
B1:56FF E0 movx A, @DPTR
B1:5700 FF mov R7, A
B1:5701 A3 inc DPTR
B1:5702 12 08 F5 lcall B1_?C?LSTXDATA
B1:5705 E4 clr A
B1:5706 90 FB A9 mov DPTR, #XRAM_FBA9
B1:5709 F0 movx @DPTR, A
B1:570A
B1:570A B1_570A: ; CODE XREF: MP3_TagDisplay+122j
B1:570A 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:570D E0 movx A, @DPTR
B1:570E 90 2F DB mov DPTR, #B1_2FDB
B1:5711 93 movc A, @A+DPTR
B1:5712 FF mov R7, A
B1:5713 90 FB A9 mov DPTR, #XRAM_FBA9
B1:5716 E0 movx A, @DPTR
B1:5717 C3 clr C
B1:5718 9F subb A, R7
B1:5719 50 65 jnc B1_5780
B1:571B 90 FB A5 mov DPTR, #XRAM_FBA5
B1:571E E0 movx A, @DPTR
B1:571F FF mov R7, A
B1:5720 A3 inc DPTR
B1:5721 E0 movx A, @DPTR
B1:5722 FC mov R4, A
B1:5723 A3 inc DPTR
B1:5724 E0 movx A, @DPTR
B1:5725 FD mov R5, A
B1:5726 12 1E A8 lcall B1_BS_232_B0_E599
B1:5729 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:572C E0 movx A, @DPTR
B1:572D FE mov R6, A
B1:572E 70 0C jnz B1_573C
B1:5730 A3 inc DPTR
B1:5731 E0 movx A, @DPTR
B1:5732 90 2F D8 mov DPTR, #B1_2FD8
B1:5735 93 movc A, @A+DPTR
B1:5736 6F xrl A, R7
B1:5737 60 03 jz B1_573C
B1:5739 02 58 AA ljmp B1_58AA
B1:573C ; ---------------------------------------------------------------------------
B1:573C
B1:573C B1_573C: ; CODE XREF: MP3_TagDisplay+D2j
B1:573C ; MP3_TagDisplay+DBj
B1:573C EF mov A, R7
B1:573D 70 08 jnz B1_5747
B1:573F 90 FB A9 mov DPTR, #XRAM_FBA9
B1:5742 E0 movx A, @DPTR
B1:5743 A3 inc DPTR
B1:5744 F0 movx @DPTR, A
B1:5745 80 39 sjmp B1_5780
B1:5747 ; ---------------------------------------------------------------------------
B1:5747
B1:5747 B1_5747: ; CODE XREF: MP3_TagDisplay+E1j
B1:5747 EE mov A, R6
B1:5748 90 2F DB mov DPTR, #B1_2FDB
B1:574B 93 movc A, @A+DPTR
B1:574C FF mov R7, A
B1:574D 14 dec A
B1:574E FE mov R6, A
B1:574F 90 FB A9 mov DPTR, #XRAM_FBA9
B1:5752 E0 movx A, @DPTR
B1:5753 6E xrl A, R6
B1:5754 70 03 jnz B1_5759
B1:5756 A3 inc DPTR
B1:5757 EF mov A, R7
B1:5758 F0 movx @DPTR, A
B1:5759
B1:5759 B1_5759: ; CODE XREF: MP3_TagDisplay+F8j
B1:5759 90 FB A4 mov DPTR, #XRAM_FBA4
B1:575C E0 movx A, @DPTR
B1:575D FC mov R4, A
B1:575E A3 inc DPTR
B1:575F E0 movx A, @DPTR
B1:5760 FD mov R5, A
B1:5761 A3 inc DPTR
B1:5762 E0 movx A, @DPTR
B1:5763 FE mov R6, A
B1:5764 A3 inc DPTR
B1:5765 E0 movx A, @DPTR
B1:5766 24 01 add A, #1
B1:5768 FF mov R7, A
B1:5769 E4 clr A
B1:576A 3E addc A, R6
B1:576B FE mov R6, A
B1:576C E4 clr A
B1:576D 3D addc A, R5
B1:576E FD mov R5, A
B1:576F E4 clr A
B1:5770 3C addc A, R4
B1:5771 FC mov R4, A
B1:5772 90 FB A4 mov DPTR, #XRAM_FBA4
B1:5775 12 08 F5 lcall B1_?C?LSTXDATA
B1:5778 90 FB A9 mov DPTR, #XRAM_FBA9
B1:577B E0 movx A, @DPTR
B1:577C 04 inc A
B1:577D F0 movx @DPTR, A
B1:577E 80 8A sjmp B1_570A
B1:5780 ; ---------------------------------------------------------------------------
B1:5780
B1:5780 B1_5780: ; CODE XREF: MP3_TagDisplay+BDj
B1:5780 ; MP3_TagDisplay+E9j
B1:5780 90 FB AA mov DPTR, #XRAM_FBAA ; Número de caracteres na TAG ID3?
B1:5783 E0 movx A, @DPTR
B1:5784 C3 clr C
B1:5785 94 0E subb A, #0xE ; Se o número de caracteres for 14 ou menos, continua
B1:5787 40 03 jc B1_578C
B1:5789 74 0E mov A, #0xE ; Se for maior que 14, limitar a 14
B1:578B F0 movx @DPTR, A
B1:578C
B1:578C B1_578C: ; CODE XREF: MP3_TagDisplay+12Bj
B1:578C 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:578F E0 movx A, @DPTR
B1:5790 FF mov R7, A
B1:5791 70 03 jnz B1_5796
B1:5793 02 58 6E ljmp B1_586E
B1:5796 ; ---------------------------------------------------------------------------
B1:5796
B1:5796 B1_5796: ; CODE XREF: MP3_TagDisplay+135j
B1:5796 90 FC 76 mov DPTR, #XRAM_FC76 ; Coordenada horizontal (HI)
B1:5799 74 01 mov A, #1
B1:579B F0 movx @DPTR, A
B1:579C A3 inc DPTR
B1:579D 74 79 mov A, #0x79 ; 'y'
B1:579F F0 movx @DPTR, A ; FC76 e FC77 = 0x179
B1:579F ; offset horizontal. Quanto menor, mais à esquerda a linha começa.
B1:57A0 EF mov A, R7 ; R7 contém o número da TAG (linha) sendo exibida?
B1:57A1 75 F0 1E mov B, #0x1E ; Altura presumida de cada linha
B1:57A1 ; 0x10 fará com que cada linha cubra a metade da anterior
B1:57A1 ; 0x16 funciona OK com a fonte original
B1:57A4 A4 mul AB
B1:57A5 AE F0 mov R6, B ; R6 contém agora a coordenada vertical de impressão da linha?
B1:57A7 24 37 add A, #0x37 ; '7' ; Offset vertical. Quanto menor, mais próxima do topo da janela
B1:57A7 ; a primeira linha das TAGs vai ser impressa.
B1:57A9 90 FC 7A mov DPTR, #XRAM_FC7A ; Coordenada vertical (LO)
B1:57AC F0 movx @DPTR, A
B1:57AD E4 clr A
B1:57AE 3E addc A, R6
B1:57AF 90 FC 79 mov DPTR, #XRAM_FC79 ; Coordenada vertical (HI)
B1:57B2 F0 movx @DPTR, A
B1:57B3 90 FB A0 mov DPTR, #XRAM_FBA0
B1:57B6 E0 movx A, @DPTR
B1:57B7 FC mov R4, A
B1:57B8 A3 inc DPTR
B1:57B9 E0 movx A, @DPTR
B1:57BA FD mov R5, A
B1:57BB A3 inc DPTR
B1:57BC E0 movx A, @DPTR
B1:57BD FE mov R6, A
B1:57BE A3 inc DPTR
B1:57BF E0 movx A, @DPTR
B1:57C0 FF mov R7, A
B1:57C1 A3 inc DPTR
B1:57C2 12 08 F5 lcall B1_?C?LSTXDATA
B1:57C5 90 FB AA mov DPTR, #XRAM_FBAA ; Número de caracteres na TAG ID3?
B1:57C8 E0 movx A, @DPTR
B1:57C9 D3 setb C
B1:57CA 94 10 subb A, #0x10 ; Número máximo de caracteres a exibir por TAG
B1:57CC 40 6B jc B1_5839
B1:57CE 90 FB B3 mov DPTR, #XRAM_FBB3
B1:57D1 E0 movx A, @DPTR
B1:57D2 94 07 subb A, #7
B1:57D4 50 1B jnc B1_57F1
B1:57D6 90 FB A4 mov DPTR, #XRAM_FBA4
B1:57D9 E0 movx A, @DPTR
B1:57DA FC mov R4, A
B1:57DB A3 inc DPTR
B1:57DC E0 movx A, @DPTR
B1:57DD FD mov R5, A
B1:57DE A3 inc DPTR
B1:57DF E0 movx A, @DPTR
B1:57E0 FE mov R6, A
B1:57E1 A3 inc DPTR
B1:57E2 E0 movx A, @DPTR
B1:57E3 FF mov R7, A
B1:57E4 90 FB B6 mov DPTR, #XRAM_FBB6
B1:57E7 12 08 F5 lcall B1_?C?LSTXDATA
B1:57EA 7D 10 mov R5, #0x10
B1:57EC 7F 0F mov R7, #0xF
B1:57EE 12 1E AE lcall B1_BS_233_B3_A227
B1:57F1
B1:57F1 B1_57F1: ; CODE XREF: MP3_TagDisplay+178j
B1:57F1 90 FB B3 mov DPTR, #XRAM_FBB3
B1:57F4 E0 movx A, @DPTR
B1:57F5 04 inc A
B1:57F6 F0 movx @DPTR, A
B1:57F7 90 FB A4 mov DPTR, #XRAM_FBA4
B1:57FA E0 movx A, @DPTR
B1:57FB FC mov R4, A
B1:57FC A3 inc DPTR
B1:57FD E0 movx A, @DPTR
B1:57FE FD mov R5, A
B1:57FF A3 inc DPTR
B1:5800 E0 movx A, @DPTR
B1:5801 FE mov R6, A
B1:5802 A3 inc DPTR
B1:5803 E0 movx A, @DPTR
B1:5804 24 10 add A, #0x10
B1:5806 FF mov R7, A
B1:5807 E4 clr A
B1:5808 3E addc A, R6
B1:5809 FE mov R6, A
B1:580A E4 clr A
B1:580B 3D addc A, R5
B1:580C FD mov R5, A
B1:580D E4 clr A
B1:580E 3C addc A, R4
B1:580F FC mov R4, A
B1:5810 90 FB A4 mov DPTR, #XRAM_FBA4
B1:5813 12 08 F5 lcall B1_?C?LSTXDATA
B1:5816 90 FB AA mov DPTR, #XRAM_FBAA ; Número de caracteres na TAG ID3?
B1:5819 E0 movx A, @DPTR
B1:581A 24 F0 add A, #0xF0 ; ''
B1:581C F0 movx @DPTR, A
B1:581D 90 FC 7A mov DPTR, #XRAM_FC7A ; Coordenada vertical (LO)
B1:5820 E0 movx A, @DPTR
B1:5821 24 1A add A, #0x1A
B1:5823 F0 movx @DPTR, A
B1:5824 90 FC 79 mov DPTR, #XRAM_FC79 ; Coordenada vertical (HI)
B1:5827 E0 movx A, @DPTR
B1:5828 34 00 addc A, #0
B1:582A F0 movx @DPTR, A
B1:582B 90 FC 77 mov DPTR, #XRAM_FC77 ; Coordenada horizontal (LO)
B1:582E E0 movx A, @DPTR
B1:582F 24 0A add A, #0xA
B1:5831 F0 movx @DPTR, A
B1:5832 90 FC 76 mov DPTR, #XRAM_FC76 ; Coordenada horizontal (HI)
B1:5835 E0 movx A, @DPTR
B1:5836 34 00 addc A, #0
B1:5838 F0 movx @DPTR, A
B1:5839
B1:5839 B1_5839: ; CODE XREF: MP3_TagDisplay+170j
B1:5839 90 FB AA mov DPTR, #XRAM_FBAA ; Número de caracteres na TAG ID3?
B1:583C E0 movx A, @DPTR
B1:583D FD mov R5, A
B1:583E 60 2E jz B1_586E
B1:5840 90 FB B3 mov DPTR, #XRAM_FBB3
B1:5843 E0 movx A, @DPTR
B1:5844 C3 clr C
B1:5845 94 07 subb A, #7
B1:5847 50 1F jnc B1_5868
B1:5849 ED mov A, R5
B1:584A C0 E0 push ACC ; Accumulator
B1:584C 90 FB A4 mov DPTR, #XRAM_FBA4
B1:584F E0 movx A, @DPTR
B1:5850 FC mov R4, A
B1:5851 A3 inc DPTR
B1:5852 E0 movx A, @DPTR
B1:5853 FD mov R5, A
B1:5854 A3 inc DPTR
B1:5855 E0 movx A, @DPTR
B1:5856 FE mov R6, A
B1:5857 A3 inc DPTR
B1:5858 E0 movx A, @DPTR
B1:5859 FF mov R7, A
B1:585A 90 FB B6 mov DPTR, #XRAM_FBB6
B1:585D 12 08 F5 lcall B1_?C?LSTXDATA
B1:5860 D0 E0 pop ACC ; Accumulator
B1:5862 FD mov R5, A
B1:5863 7F 0F mov R7, #0xF
B1:5865 12 1E AE lcall B1_BS_233_B3_A227
B1:5868
B1:5868 B1_5868: ; CODE XREF: MP3_TagDisplay+1EBj
B1:5868 90 FB B3 mov DPTR, #XRAM_FBB3
B1:586B E0 movx A, @DPTR
B1:586C 04 inc A
B1:586D F0 movx @DPTR, A
B1:586E
B1:586E B1_586E: ; CODE XREF: MP3_TagDisplay+137j
B1:586E ; MP3_TagDisplay+1E2j
B1:586E 90 FB A0 mov DPTR, #XRAM_FBA0
B1:5871 E0 movx A, @DPTR
B1:5872 F8 mov R0, A
B1:5873 A3 inc DPTR
B1:5874 E0 movx A, @DPTR
B1:5875 F9 mov R1, A
B1:5876 A3 inc DPTR
B1:5877 E0 movx A, @DPTR
B1:5878 FA mov R2, A
B1:5879 A3 inc DPTR
B1:587A E0 movx A, @DPTR
B1:587B FB mov R3, A
B1:587C 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:587F E0 movx A, @DPTR
B1:5880 90 2F DB mov DPTR, #B1_2FDB
B1:5883 93 movc A, @A+DPTR
B1:5884 FF mov R7, A
B1:5885 E4 clr A
B1:5886 FC mov R4, A
B1:5887 FD mov R5, A
B1:5888 FE mov R6, A
B1:5889 EB mov A, R3
B1:588A 2F add A, R7
B1:588B FF mov R7, A
B1:588C EE mov A, R6
B1:588D 3A addc A, R2
B1:588E FE mov R6, A
B1:588F ED mov A, R5
B1:5890 39 addc A, R1
B1:5891 FD mov R5, A
B1:5892 EC mov A, R4
B1:5893 38 addc A, R0
B1:5894 FC mov R4, A
B1:5895 90 FB A0 mov DPTR, #XRAM_FBA0
B1:5898 12 08 F5 lcall B1_?C?LSTXDATA
B1:589B 90 FB A8 mov DPTR, #XRAM_FBA8 ; Número sequencial da TAG?
B1:589E E0 movx A, @DPTR
B1:589F 04 inc A
B1:58A0 F0 movx @DPTR, A
B1:58A1 E0 movx A, @DPTR
B1:58A2 C3 clr C
B1:58A3 94 06 subb A, #6
B1:58A5 50 03 jnc B1_58AA
B1:58A7 02 56 F3 ljmp B1_56F3
B1:58AA ; ---------------------------------------------------------------------------
B1:58AA
B1:58AA B1_58AA: ; CODE XREF: MP3_TagDisplay+8Fj
B1:58AA ; MP3_TagDisplay+DDj ...
B1:58AA 22 ret
B1:58AA ; End of function MP3_TagDisplay
[/size]