Top secrets sources NedoPC ngs

Rev

Rev 163 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


; LAST UPDATE 26.04.2023 savelij

; SD & MP3 ä㭪樨 ¯® ­®¬¥à ¬
 INIT_VAR
 SETVAR Sd_init         ; ¨­¨â SD ª àâë
 SETVAR Sd__off         ; á­ï⨥ ¢ë¡®à 
 SETVAR Rdsingl         ; ç¨â âì 1 ᥪâ®à
 SETVAR Rdmulti         ; ç¨â âì "A" ᥪâ®à
 SETVAR Wrsingl         ; § ¯¨á âì 1 ᥪâ®à - ­¥âã
 SETVAR Wrmulti         ; § ¯¨á âì "A" ᥪâ®à®¢ - ­¥âã
 SETVAR Avtodet         ;  ¢â®¤¥â¥ªâ GS/NeoGS
 SETVAR Freqnc          ; ãáâ ­®¢ª  ç áâ®âë
 SETVAR Hardmp3         ; ¯®«­ë© ¨­¨â MP3 稯 
 SETVAR Ldi_mp3         ; ¯¥à¥¤ ç  ᥪâ®à  á SD -> MP3
 SETVAR Com_mp3         ; RD/WR MP3 稯 
 SETVAR Softmp3         ; soft ¨­¨â MP3 稯 
 SETVAR Dat2mp3         ; ¯¥à¥¤ ç  ᥪ. GSDAT -> MP3
 SETVAR Zer2mp3         ; ¯¥à¥¤ ç  2048 ­ã«¥© -> MP3

; ¤à ©¢¥à SD-CARD ¤«ï NeoGS
; +¤à ©¢¥à ¤«ï MP3-¤¥ª®¤¥à 

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

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

; ®¡é ï â®çª  ¢å®¤  ¤«ï à ¡®âë á SD ª à⮩
                CALL CMP_INT
                DI
                EXX
                PUSH HL                         ; á®åà ­¨«¨ HL'
                PUSH DE                         ; á®åà ­¨«¨ DE'
                LD HL,OK_SD
                PUSH HL                         ; ¢®§¢à â ­  ¢á¥ OK
                LD HL,0
                ADD HL,SP                       ; á®åà ­¨«¨ á⥪
                EX DE,HL
                LD HL,ERR_SD                    ;  ¤à¥á ¯¥à¥å®¤  ¯à¨ ®è¨¡ª¥
                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
                RET

OK_SD           EXX
ERR_SD          EX DE,HL
                LD SP,HL
                POP DE
                POP DE
                POP HL
                EXX
                PUSH AF
                LD A,(INT_MODE)
                AND A
                JR Z,ERR_SD1
                EI
ERR_SD1         POP AF
                RET

TABL_SD         DW SD_INIT              ; 00 ¯ à ¬¥â஢ ­¥ âॡã¥â, ­  ¢ë室¥ A ᬮâਠ¢ëè¥ ¯¥à¢ë¥ 2 §­ ç¥­¨ï
                DW SD__OFF              ; 01 ¯à®áâ® á­ï⨥ ¢ë¡®à  SD ª àâë
                DW RDSINGL              ; 02 ç¨â âì 1 ᥪâ®à
                DW RDMULTI              ; 03 ç¨â âì "A" ᥪâ®à®¢
                DW EMPTY                ; 04 ¯¨á âì 1 ᥪâ®à
                DW EMPTY                ; 05 ¯¨á âì "A" ᥪâ®à®¢
                DW AVTODET              ; 06- ¢â®¤¥â¥ªâ
                DW FREQNC               ; 07-ãáâ ­®¢ª  ç áâ®âë
                DW HARDMP3              ; 08 ¨­¨æ¨ «¨§ æ¨ï MP3-¤¥ª®¤¥à 
                DW LDI_MP3              ; 09 £®­ á SD ­  MP3
                DW COM_MP3              ; 0A RD&WR ¢ MP3-¤¥ª®¤¥à
                DW SOFTMP3              ; 0B SOFT RESET MP3CHIP
                DW DAT2MP3              ; 0C £®­ á GSDAT2MP3
                DW ZER2MP3              ; 0D 2048 ­ã«¥© ­  MP3

ZAW003          CALL SD__OFF
                LD A,1
EMPTY           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
                in (c) ;in f,(c)
                in (c) ;in f,(c)
                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

SD__OFF
CS_HIGH         PUSH AF
                LD A,M_SDNCS+M_SNCLR            ; 0x81
                OUT (SCTRL),A
                POP AF
                RET

CS__LOW         PUSH AF
                LD A,M_SDNCS                    ; 1
                OUT (SCTRL),A
                POP AF
                RET

OUTCOM          CALL CS__LOW
                PUSH BC
                LD BC,0x0600+SD_SEND
                OTIR
                POP BC
                RET

OUT_COM         PUSH BC
                CALL CS__LOW
                LD BC,SD_SEND
                in (c) ;in f,(c)
                in (c) ;in f,(c)
                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
                INC A
                JR NZ,SCM200
                EXX
                LD A,0x80
                JP (HL)

SCM200          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
                in (c) ;in f,(c)
                in (c) ;in f,(c)
                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 DE
                LD DE,0x30FF
IN_WAIT         IN A,(SD_RSTR)
                CP E
                JR NZ,IN_EXIT
                DEC D
                JR NZ,IN_WAIT
IN_EXIT         POP DE
                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

; ç⥭¨¥ ®¤­®£® ᥪâ®à  á ¯®¡ ©â®¢®© ¯¥à¥¤ ç¥© ¢ MP3 稯
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)                        ; á­ï⨥ CRC16
                NOP
                IN A,(C)
                POP DE
                POP BC
                RET

; ¯¥à¥¤ ç  ᥪâ®à  ¢ MP3 稯
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

RDMULTI         EX AF,AF'
                LD A,CMD_18
                CALL SECM200
                EX AF,AF'

RDMULT1         EX AF,AF'
                CALL IN_OOUT
                CP 0xFE
                JR NZ,$-5
                CALL RD_SECT
                EX AF,AF'

                DEC A
                JR NZ,RDMULT1
                LD A,CMD_12
                CALL OUT_COM
                CALL IN_OOUT
                INC A
                JR NZ,$-4
                JP CS_HIGH

; ®¦¨¤ ­¨¥ £®â®¢­®á⨠SPI MP3 稯 
NOPER           REPT 18
                NOP
                ENDM
                RET

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

FREQNC          LD A,E
                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 %11001111
                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
                LD E,0
                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 E,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,COM_MP3                   ; ¤¥ª®¤¥à ᢮¡®¤¥­
                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 ¯®à権
.L1             IN A,(SSTAT)
                RRA
                JR NC,.L1               ; ¤¥ª®¤¥à ᢮¡®¤¥­?
                LD B,0x20               ; ®¤­  ¯®àæ¨ï 32 ¡ ©â 
.L2             IN A,(ZXSTAT)
                RLA
                JR NC,.L2               ; ¤®¦¤ «¨áì ¯®¤ ç¨ ®â ᯥª 
                IN A,(ZXDATRD)          ; § ¡à «¨ ¡ ©â
                OUT (MD_SEND),A         ; ®â¤ «¨ ¤¥ª®¤¥àã
                NOP                     ; ¢ë¤¥à¦ «¨ ¯ ã§ã ¯® ⠪⠬
                DJNZ .L2                ; ¯®àæ¨ï ª®­ç¨« áì
                DEC D
                JR NZ,.L1
                RET                     ; 512 ¡ ©â ¯¥à¥¤ ­®!!!