Top secrets sources NedoPC ngs

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 24.05.2013 savelij
;version 08.02.2009

;„€‰‚… SD-CARD „‹Ÿ NGS
;+„€‰‚… „‹Ÿ MP3-„…ŠŽ„…€

;‚室­ë¥ ¯ à ¬¥âàë ®¡é¨¥:
;HL- ¤à¥á § £à㧪¨ ¢ ¯ ¬ïâì
;BCDE-32-å ¡¨â­ë© ­®¬¥à ᥪâ®à 
;A-ª®«¨ç¥á⢮ ¡«®ª®¢ (¡«®ª=512 ¡ ©â)
;⮫쪮 ¤«ï ¬­®£®¡«®ç­®© § ¯¨á¨/ç⥭¨¨

;Žè¨¡ª¨ ¢ë¤ ¢ ¥¬ë¥ ­  ¢ë室¥:
;A=0-¨­¨æ¨ «¨§ æ¨ï ¯à®è«  ãᯥ譮
;A=1-ª àâ  ­¥ ­ ©¤¥­  ¨«¨ ­¥ ®â¢¥â¨« 
;A=2-ª àâ  § é¨é¥­  ®â § ¯¨á¨
;A=3-¯®¯ë⪠ § ¯¨á¨ ¢ ᥪâ®à 0 ª àâë

;INCL "PORTSNGS"

CMD_12          EQU 0X4C        ;STOP_TRANSMISSION
CMD_17          EQU 0X51        ;READ_SINGLE_BLOCK
CMD_18          EQU 0X52        ;READ_MULTIPLE_BLOCK
CMD_24          EQU 0X58        ;WRITE_BLOCK
CMD_25          EQU 0X59        ;WRITE_MULTIPLE_BLOCK
CMD_55          EQU 0X77        ;APP_CMD
CMD_58          EQU 0X7A        ;READ_OCR
CMD_59          EQU 0X7B        ;CRC_ON_OFF
ACMD_41         EQU 0X69        ;SD_SEND_OP_COND

;Ž™€Ÿ ’Ž—Š€ ‚•Ž„€ „‹Ÿ €Ž’› ‘
                EXX
                PUSH HL
                PUSH DE
                ADD A,A
                LD L,A
                LD H,0
                LD DE,TABL_SD
                ADD HL,DE
                EX AF,AF'
                LD E,(HL)
                INC HL
                LD D,(HL)
                EX DE,HL
                POP DE
                EX (SP),HL
                EXX
                RET

TABL_SD         DW SD_INIT      ;0
;¯ à ¬¥â஢ ­¥ âॡã¥â, ­  ¢ë室¥ A
;ᬮâਠ¢ëè¥ ¯¥à¢ë¥ 2 §­ ç¥­¨ï
                DW SD__OFF      ;1
;¯à®áâ® á­ï⨥ ¢ë¡®à  SD ª àâë
                DW RDSINGL      ;2 —ˆ’€’œ 1 ‘…Š’Ž
                DW EMPTY        ;3 —ˆ’€’œ "A" ‘…Š’ŽŽ‚
                DW EMPTY        ;4 ˆ‘€’œ 1 ‘…Š’Ž
                DW EMPTY        ;5 ˆ‘€’œ "A" ‘…Š’ŽŽ‚
                DW AVTODET      ;6-€‚’Ž„…’…Š’
                DW FREQNC       ;7-‡€„€—€ —€‘’Ž’›
                DW HARDMP3      ;8 INIT MP3-„…ŠŽ„…€
                DW LDI_MP3      ;9 ƒŽ ‘ SD € MP3
                DW COM_MP3      ;0XA RD&WR ‚ MP3-„…ŠŽ„
                DW SOFTMP3      ;0XB SOFT RESET MP3CHIP
                DW DAT2MP3      ;0XC ƒŽ ‘ GSDAT2MP3
                DW ZER2MP3      ;0XD 2048 “‹…‰ € MP3

EMPTY           RET

ZAW003          CALL SD__OFF
                LD A,1
                RET

SD_INIT         CALL CS_HIGH
                LD BC,SD_SEND
                LD DE,0X20FF
                OUT (C),E
                DEC D
                JR NZ,$-3
                LD BC,SD_RSTR
                XOR A
                EX AF,AF'

ZAW001          LD HL,CMD00
                CALL OUTCOM
                CALL IN_OOUT
                EX AF,AF'
                DEC A
                JR Z,ZAW003
                EX AF,AF'

                DEC A
                JR NZ,ZAW001
                LD HL,CMD08
                CALL OUTCOM
                CALL IN_OOUT
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                LD HL,0
                BIT 2,A
                JR NZ,ZAW006
                LD H,0X40
ZAW006          LD A,CMD_55
                CALL OUT_COM
                CALL IN_OOUT
                LD BC,SD_SEND
                LD A,ACMD_41
                OUT (C),A
                NOP
                OUT (C),H
                NOP
                OUT (C),L
                NOP
                OUT (C),L
                NOP
                OUT (C),L
                LD A,0XFF
                OUT (C),A
                CALL IN_OOUT
                AND A
                JR NZ,ZAW006
ZAW004          LD A,CMD_59
                CALL OUT_COM
                CALL IN_OOUT
                AND A
                JR NZ,ZAW004
ZAW005          LD HL,CMD16
                CALL OUTCOM
                CALL IN_OOUT
                AND A
                JR NZ,ZAW005

CS_HIGH         PUSH DE
                PUSH BC
                LD E,M_SDNCS+M_SNCLR;0X81
                LD BC,SCTRL
                OUT (C),E
                POP BC
                POP DE
                RET

SD__OFF         LD A,M_SDNCS+M_SNCLR;0X81
                OUT (SCTRL),A
                RET

CS__LOW         PUSH DE
                PUSH BC
                LD E,M_SDNCS;1
                LD BC,SCTRL
                OUT (C),E
                POP BC
                POP DE
                RET

OUTCOM          CALL CS__LOW
                PUSH BC
                LD BC,SD_SEND
                OUTI
                NOP
                OUTI
                NOP
                OUTI
                NOP
                OUTI
                NOP
                OUTI
                NOP
                OUTI
                POP BC
                RET

OUT_COM         PUSH BC
                CALL CS__LOW
                LD BC,SD_SEND
                OUT (C),A
                XOR A
                OUT (C),A
                NOP
                OUT (C),A
                NOP
                OUT (C),A
                NOP
                OUT (C),A
                DEC A
                OUT (C),A
                POP BC
                RET

SECM200         PUSH HL
                PUSH DE
                PUSH BC
                PUSH AF
                PUSH BC
                LD A,CMD_58
                LD BC,SD_RSTR
                CALL OUT_COM
                CALL IN_OOUT
                IN A,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                NOP
                IN H,(C)
                BIT 6,A
                POP HL
                JR NZ,SECN200
                EX DE,HL
                ADD HL,HL
                EX DE,HL
                ADC HL,HL
                LD H,L
                LD L,D
                LD D,E
                LD E,0
SECN200         POP AF
                LD BC,SD_SEND
                OUT (C),A
                NOP
                OUT (C),H
                NOP
                OUT (C),L
                NOP
                OUT (C),D
                NOP
                OUT (C),E
                LD A,0XFF
                OUT (C),A
                POP BC
                POP DE
                POP HL
                RET

IN_OOUT         PUSH BC
                PUSH DE
                LD DE,0X20FF
                LD BC,SD_RSTR
IN_WAIT         IN A,(C)
                CP E
                JR NZ,IN_EXIT
                DEC D
                JR NZ,IN_WAIT
IN_EXIT         POP DE
                POP BC
                RET

CMD00           DB 0X40,0X00,0X00,0X00,0X00,0X95
;GO_IDLE_STATE
CMD08           DB 0X48,0X00,0X00,0X01,0XAA,0X87
;SEND_IF_COND
CMD16           DB 0X50,0X00,0X00,0X02,0X00,0XFF
;SET_BLOCKEN

RD_SECT         PUSH BC
                PUSH DE
                LD BC,SD_RSTR
                INIR
                INIR
                JR RDSECT3

RON_MP3         PUSH BC
                PUSH DE
                LD BC,SD_RSTR
                LD D,0X10
RDSECT2         IN A,(SSTAT)
                RRA
                JR NC,$-3
                LD E,0X20
RDSECT1         IN A,(C)
                NOP
                OUT (MD_SEND),A
                DEC E
                JR NZ,RDSECT1
                DEC D
                JR NZ,RDSECT2
RDSECT3         IN A,(C)
                NOP
                IN A,(C)
                POP DE
                POP BC
                RET

LDI_MP3         LD A,CMD_17
                CALL SECM200
                CALL IN_OOUT
                CP 0XFE
                JR NZ,$-5
                CALL RON_MP3
                CALL IN_OOUT
                INC A
                JR NZ,$-4
                JP CS_HIGH

RDSINGL         LD A,CMD_17
                CALL SECM200
                CALL IN_OOUT
                CP 0XFE
                JR NZ,$-5
                CALL RD_SECT
                CALL IN_OOUT
                INC A
                JR NZ,$-4
                JP CS_HIGH

;Ž†ˆ„€ˆ… ƒŽ’Ž‚Ž‘’ˆ SPI MP3 —ˆ€
NOPER           DUPL 18,0
                RET

                IN A,(SSTAT)
                AND M_MCRDY
                JR Z,NOPER
                RET

AVTODET         IN A,(GSCFG0)
                AND 0XCF
                OUT (GSCFG0),A
                CALL NOPER
                LD D,A
                IN A,(GSCFG0)
                CP D
                LD A,0
                RET Z
NO_MP3          LD A,0XFF
                RET

FREQNC          LD D,C_10MHZ;0X30
                AND 3
                JR Z,FREQNCS
                LD D,C_12MHZ;0X10
                DEC A
                JR Z,FREQNCS
                LD D,C_20MHZ;0X20
                DEC A
                JR Z,FREQNCS
                LD D,C_24MHZ;0
FREQNCS         IN A,(GSCFG0)
                AND 0XCF
                OR D
                OUT (GSCFG0),A
                RET

;‡€ˆ‘›‚€…Œ 2048 “‹…‰ Š€Š ‡€‚…˜…ˆ…
;…‘…Šˆ
ZER2MP3         LD D,0X40
ZR2MP31         IN A,(SSTAT)
                RRA
                JR NC,$-3
                LD E,0X20
                XOR A
                OUT (MD_SEND),A
                DEC E
                JR NZ,$-4
                DEC D
                JR NZ,ZR2MP31
                RET

;Ž‹›‰ ‘Ž‘
HARDMP3         XOR A
                CALL VOL_MOD
;‡€ƒ‹“˜ˆ‹ˆ ƒŽŒŠŽ‘’œ Ž’Ž‚ GS
                LD BC,MC_SEND
                LD A,%10011100;0X9C
                OUT (SCTRL),A
                XOR A
                CALL FREQNC
;‚›‘’€‚ˆ‹ˆ —€‘’Ž’“ € NGS 10 Œƒæ
                LD HL,0X0301
                CALL COM_MP3
                LD A,E
                AND %01110000
                PUSH AF
                LD A,M_MPXRS
                OUT (SCTRL),A
                CALL NOPER
                LD A,M_MPXRS+M_SNCLR;0X84
                OUT (SCTRL),A
;‚›„€‹ˆ ‘Ž‘ € „…ŠŽ„…
                IN A,(SSTAT)
                RRA
                JR NC,$-3
;„Ž†„€‹ˆ‘œ ƒŽ’Ž‚Ž‘’ˆ „…ŠŽ„…€
                LD HL,0X0203
                LD DE,0X9B58
                CALL COM_MP3
;‚›‘’€‚ˆ‹ˆ € „…ŠŽ„…… —€‘’Ž’“ 14 Œƒæ
                POP AF
;‡„…‘œ Ž˜‹€ ˆˆ–ˆ€‹ˆ‡€–ˆŸ „‹Ÿ VS1001
                LD HL,0X0202
                LD DE,0X8008
                CALL Z,COM_MP3
;‡€ˆ‘œ …„ŽŠ“Œ…’ˆŽ‚€ŽƒŽ ˆŠ€ ‚
;…„ŽŠ“Œ…’ˆŽ‚€›‰ …ƒˆ‘’, …‘‹ˆ
;ˆ’› 6-4 …ƒˆ‘’€ ‘’€’“‘€ ‚ “‹…
                LD A,1
                JP FREQNC
;‚›‘’€‚ˆ‹ˆ —€‘’Ž’“ € NGS 12 Œƒæ

;Žƒ€ŒŒ›‰ ‘Ž‘ MP3 „…ŠŽ„…€
;…ŠŽŒ…„“…’‘Ÿ ‚›‡›‚€’œ ……„ Š€†„›Œ
;Ž‚›Œ ”€‰‹ŽŒ, ‘€‘›‚€…’ ‘—…’—ˆŠ ‘…Š“„
;Ž‘‹… Žƒ€ŒŒŽƒŽ ‘Ž‘€ ‚‘…
;“‘’€Ž‚‹…›… …†ˆŒ› „…ŠŽ„…€
;… ˆ‡Œ…Ÿž’‘Ÿ
SOFTMP3         LD BC,MC_SEND
                LD HL,0X030B
                CALL COM_MP3
;‘ˆŒ€…Œ ’…Š“™…… ‡€—…ˆ… ƒŽŒŠŽ‘’ˆ
                PUSH DE
                LD DE,0XFEFE
;ˆ ‘Ž•€Ÿ…Œ …ƒŽ „Ž ‹“—˜ˆ• ‚…Œ…
                LD HL,0X020B
                CALL COM_MP3
;“Œ…œ˜€…Œ ƒŽŒŠŽ‘’œ „Ž ŒˆˆŒ“Œ€
                LD HL,0X0301
                CALL COM_MP3
                LD A,E
                AND %01110000
                PUSH AF
                LD HL,0X0300
                CALL COM_MP3
;—ˆ’€…Œ ‘Ž‘’ŽŸˆ… MODE
                LD A,4
                XOR E
                LD E,A
                LD HL,0X0200
                CALL COM_MP3
                LD A,4
                XOR E
                LD E,A
                LD HL,0X0200
                CALL COM_MP3
;„€…Œ ŠŽŒ€„“ ‘Ž”’-‘Ž‘€
                IN A,(SSTAT)
                RRA
                JR NC,$-3
;†„…Œ Ž‘‚ŽŽ†„…ˆŸ „…ŠŽ„…€
                LD HL,0X0203
                LD DE,0X9B58
                CALL COM_MP3
;‚›‘’€‚‹Ÿ…Œ —€‘’Ž’“ Ž‘‹… ˆˆ–ˆ€‹ˆ‡€–ˆˆ
;MP3 „…ŠŽ„…€
                POP AF
                LD HL,0X0202
                LD DE,0X8008
                CALL Z,COM_MP3
;…„ŽŠ“Œ…’ˆŽ‚€›‰ ˆŽŠ MP3 „…ŠŽ„…€
                POP DE
                LD HL,0X020B
                JR COM_MP3
;‚Ž‘‘’€€‚‹ˆ‚€…Œ ƒŽŒŠŽ‘’œ „Ž ‘Ž‘€

;ƒ‹“˜ˆŒ ƒŽŒŠŽ‘’œ MOD Ž’Ž‚
VOL_MOD         OUT (VOL1),A
                OUT (VOL2),A
                OUT (VOL3),A
                OUT (VOL4),A
                OUT (VOL5),A
                OUT (VOL6),A
                OUT (VOL7),A
                OUT (VOL8),A
                RET

; Ž–…„“€ —’…ˆŸ/‡€ˆ‘ˆ €„…‘Ž‚
; MP3 „…ŠŽ„…€
; H-ŠŽŒ€„€ „…ŠŽ„…“ 3-READ ˆ‹ˆ 2-WRITE
; L-€„…‘ ‚ „…ŠŽ„……
; D-‘’€˜ˆ‰ €‰’
; E-Œ‹€„˜ˆ‰ €‰’
; DE Ž ‡€ˆ‘ˆ Ž„€’œ € ‚•Ž„
;    Ž —’…ˆž Ž‹“—ˆ’œ € ‚›•Ž„…
COM_MP3         IN A,(SSTAT)
                RRA
                JR NC,$-3
; „…ŠŽ„… ‘‚ŽŽ„…
                LD A,M_MCNCS
                OUT (SCTRL),A
; ‚›ˆ€…Œ „…ŠŽ„… ˆ ŽšŸ‘Ÿ…Œ …Œ“
; —’Ž Ž’ …ƒŽ ’…“…’‘Ÿ
                CALL NOPER
                LD BC,MC_SEND
                LD A,H
                OUT (C),H
                CALL NOPER
                OUT (C),L
                CALL NOPER
                CP 3
                JR Z,MP3READ
; ……•Ž„ˆŒ € —’…ˆ… (‘ŒŽ’ˆ ‚›˜…)
                OUT (C),D
                CALL NOPER
                OUT (C),E
; ‡€ˆ‘€‹ˆ ‚ €„…‘ „…ŠŽ„…€
MP3_END         CALL NOPER
                LD A,M_MCNCS+M_SNCLR;0X82
; ‘ˆŒ€…Œ ‚›Ž „…ŠŽ„…€
                OUT (SCTRL),A
                RET

MP3READ ;—ˆ’€…Œ —’Ž ‡€’…Ž‚€‹ˆ
                LD BC,MC_READ
                LD A,0XFF
                OUT (MC_SEND),A
                CALL NOPER
                IN D,(C)
                CALL NOPER
                OUT (MC_SEND),A
                CALL NOPER
                IN E,(C)
                JR MP3_END

; Ž–…„“€ ……‘›‹Šˆ €‰’Ž‚ ‘Ž ‘…Š€
; —……‡ Ž’› ƒ‘ € MP3 „…ŠŽ„…
; ……‘›‹€…’‘Ÿ 512 €‰’
DAT2MP3         LD D,0X10
; ……ƒ€’œ € „…ŠŽ„… 16 Ž–ˆ‰
DAT2M03         IN A,(SSTAT)
                RRA
                JR NC,$-3
; „…ŠŽ„… ‘‚ŽŽ„…
                LD B,0X20
; Ž„€ Ž–ˆŸ 32 €‰’€
DAT2M13         IN A,(ZXSTAT)
                RLA
                JR NC,$-3
; „Ž†„€‹ˆ‘œ Ž„€—ˆ Ž’ ‘…Š€
                IN A,(ZXDATRD); ‡€€‹ˆ €‰’
                OUT (MD_SEND),A; Ž’„€‹ˆ „…ŠŽ„…“
                NOP;‚›„…†€‹ˆ €“‡“ Ž ’€Š’€Œ
                DJNZ DAT2M13; Ž–ˆŸ ŠŽ—ˆ‹€‘œ
                DEC D
                JR NZ,DAT2M03
                RET;512 €‰’ ……„€Ž!!!