Rev 163 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
; LAST UPDATE 24.04.2023 savelij
; ª®¤ ¤«ï £á
include macros.a80
include ports_ngs.a80
include sdcomand.a80
include bootsecfat.a80
include fat_dir.a80
; ¯ âç ¯à®è¨¢ª¨ ¤«ï ¯«¥¥à¥¨ï MOD
; ¯«¥¥à¥¨¥, ¯à®¢¥àª ¨ ¯à®ç¥¥
COMINT EQU 0x026B
COMINT_ EQU 0x026E
COMINT0 EQU 0x0273
COMINT1 EQU 0x0295
WTDTL EQU 0x02BC
EMPTY1 EQU 0x0942
ADDA80 EQU 0x0EF8
;IP_MOD EQU 0x11E4
EMPTY2 EQU 0x3D5F
NUMPG EQU 0x4080 ;
CPAGE EQU 0x4081 ;PROCESS EQU 0x4084
CNTMOD EQU 0x4090
CURMOD EQU 0x4096
CONVERT EQU 0x40B7
MTSTAT EQU 0x4151
MTSNGPS EQU 0x415B
MTSNGSZ EQU 0x415C
PlMode EQU 0x41A0
MODLLEN EQU 0x41A1
ISTACK EQU 0x4400
LDMOD EQU 0xC3F8
PLAYMOD EQU 0xC426
FXB01 EQU 0xD2B2
INIT_VAR 0x4168
SETVAR FLAGS, BYTE
; ä« £¨ ã¯à ¢«¥¨ï
; 7-
; 6-
; 5-
; 4-
; 3-
; 2-1-ä ©« § £à㦥, 0-¥â
; 1-
; 0-1-à §à¥è¥¨¥ PLAY,0-á⮯/¯ ã§
SETVAR REJIMGS, BYTE ; 1 ª®¤ ®â¢¥â
SETVAR GETVTSL, BYTE ; 1 £à®¬ª®áâì MP3 稯
SETVAR GETVTSH, BYTE ; 1 ¡¨âë ०¨¬®¢
SETVAR VSTBL, WORD ; 2 ⥪ã騥 áâனª¨ ⥬¡à®¢
SETVAR KOLWMP3, WORD ; 2 ª®«¨ç¥á⢮ MP3
SETVAR NUMFILE, WORD ; 2 ®¬¥à ⥪ã饣® ä ©«
SETVAR TYPRES, BYTE ; 1 ⨯ á¡à®á
SETVAR CALBFAT, BYTE ; 1 ª «¨¡à FAT
SETVAR BUFTIME, 8 ; 8 ¡ãä¥à ¤«ï ⥪áâ
SETVAR SIZ_PAT, BYTE ; 1 ª®«-¢® ¯ â¥à®¢ ¢ § £à㦥®¬ MOD
SETVAR SIZ_MOD, BYTE ; 1 ª®«-¢® áâà ¨æ MOD
SETVAR TIMEOUT, WORD ; 2 TIMEOUT à ¡®âã á ®¢ë¬ ä ©«®¬
SETVAR KUDAXOR, WORD ; 2 ¤à¥á ¯¥à¥å®¤ XOR BIT 7
SETVAR PG_PLAYER, BYTE ; 1 ®¬¥à áâà ¨æë à ᯮ«®¦¥¨ï ¯«¥¥à
SETVAR INT_MODE, BYTE ; 1 ä« £ à §à¥è¥®á⨠¯à¥àë¢ ¨©
SIZEVAR EQU SIZ_PAT + 1 - FLAGS
FREQ10 EQU 0
FREQ12 EQU 1
FREQ20 EQU 2
FREQ24 EQU 3
ORG 0x8000
START DI
LD SP,ISTACK
CALL ALLRES ;
OUT (ZXDATWR),A
OUT (CLRCBIT),A ;
LD A,1
LD (PlMode),A
LD HL,0x0200
LD (MODLLEN),HL
JP CON_MOD
ALLRES CALL PATCH ;
LD HL,FLAGS
LD D,H
LD E,L
LD BC,SIZEVAR
INC DE
LD (HL),0
LDIR ;
LD A,Softmp3
LD (TYPRES),A ; MP3
LD A,Avtodet
CALL COM__SD
AND A ;
GS/NeoGS
JR Z,INI_MP3
LD A,0xCC
JR START4 ; =GS
INI_MP3 LD A,Hardmp3
CALL COM__SD ; MP3
;----FUNC00----
INI__SD LD HL,0
LD (NUMFILE),HL
LD A,Sd_init
CALL COM__SD
AND A ; SD
JR Z,START1
LD A,0xEE
LD (CALBFAT),A
JR START4 ; =SD
START1 LD HL,FLAGS
RES 7,(HL)
LD A,Init_Fatvars
CALL COM_FAT ; FAT
CP 0x80
JR Z,START11
LD (CALBFAT),A
INC A
JR NZ,START3
START11 LD A,0xDD
JR START4 ; =FAT
START3 CALL CP_XB
CALL RTYPEVS
LD A,Finddir
CALL COM_FAT ;
CP 0x80
JR Z,START11
LD A,Findfil
CALL COM_FAT ;
CP 0x80
JR Z,START11
LD (KOLWMP3),HL
IN A,(CLRCBIT)
CALL PAUSEPL ;
LD A,H
OR L
LD A,0xBB
JR Z,START4 ; =
LD BC,0
CALL INIPLAY
LD A,0x77 ; =
START4 LD (REJIMGS),A
RET
TABFUNC DW INI__SD ;00
SD
DW PREVPL ;01
DW PLAY ;02
DW PAUSEPL ;03
DW STOP_PL ;04
DW NEXTPL ;05
DW XORBASS ;06 XOR TREBLE/BASS
DW XORSURR ;07 XOR SURROUND
DW VOL_UP ;08 +
DW VOL_DN ;09 -
DW MUTE ;0A /
DW GETTIME ;0B
DW GET_VTS ;0C 6-10
DW GET_TEK ;0D
DW SET_NUM ;0E
DW SRESMP3 ;0F MP3
DW FATTYPE ;10 FAT
DW GET_LNG ;11
DW GETOPIS ;12
DW GETKMP3 ;13 *.EXT
DW GON2MP3 ;14 MP3
DW GETDMP3 ;15 DEC
DW GETDTEK ;16 DEC
+1
DW SFT_HRD ;17
DW PREVDIR ;18
DIR
DW NEXTDIR ;19
DIR
DW SETTMBR ;1A .
DW RUSTTBL ;1B
DW BITRATE ;1C RD
DW TESTREJ ;1D
END_TAB
;----FUNC1C----
;
HDAT1,HDAT0
;
BC=HDAT1, DE=HDAT0
BITRATE LD HL,0x0309
LD A,Com_mp3
CALL COM__SD
PUSH DE
LD HL,0x0308
LD A,Com_mp3
CALL COM__SD
POP BC
LD A,C
AND A
LD HL,0xA000
JP Z,GET_RZN ;
AND %00011000
RRCA
RRCA
RRCA ; ID
LD L,A
LD A,D
AND %00001100 ; SAMPLE RATE
OR L
LD L,A
LD A,C
AND %00000110 ; LAYER
RLCA
RLCA
RLCA
OR L
LD L,A
LD A,E
AND %11000000 ; MODE
OR L
LD L,A
LD A,D
AND %11110000 ; BITRATE
RRCA
RRCA
RRCA
RRCA
LD H,A
JP GET_RZN ;
HL
;----FUNC1A----
;
SETTMBR OUT (CLRCBIT),A
CALL WDY
IN A,(ZXDATRD) ;
LD B,A ;
LD A,(GETVTSH)
BIT 3,A ;
RET Z ; VS1001
; VS1011
BIT 7,A ;
RET Z ;
PUSH BC ;
"B"
LD HL,0x0302
LD A,Com_mp3 ;
CALL COM__SD ;
POP BC ;
"B"
LD C,0x10 ;
BIT 6,B ; UBASS?
JR Z,STTMBR1
;
BASS, 7-4
LD A,E
AND 0x0F
LD L,A ;
3-0
LD A,E
AND 0xF0
BIT 7,B ; ?
JR Z,STMB01 ;
ADD A,C ;
1
JR C,STTMBR1 ;!
JR STMB02
;
STMB01 SUB C ;
1
JR C,STTMBR1 ;!
STMB02 ADD A,L
LD E,A ;
3-0
STTMBR1 BIT 2,B ; UTREBLE?
JR Z,STTMBR2
;
TREBLE, 7-4
LD A,D
AND 0x0F
LD L,A ;
3-0
LD A,D
AND 0xF0
BIT 3,B ; ?
JR Z,STMB03
;
ADD A,C
JR C,STTMBR2 ;!
JR STMB04
;
STMB03 SUB C
JR C,STTMBR3 ;!
STMB04 ADD A,L
LD D,A ;
3-0
STTMBR2 BIT 4,B ; FBASS?
JR Z,STTMBR3
;
BASS, 3-0
LD A,E
AND 0xF0
LD L,A ;
7-4
LD A,E
AND 0x0F
BIT 5,B ; ?
JR Z,STMB05
;
INC A
CP 0x10
JR NC,STTMBR3 ;!
JR STMB06
STMB05 AND A
JR Z,STTMBR3 ;!
DEC A
STMB06 ADD A,L
LD E,A ;
7-4
STTMBR3 BIT 0,B ; FTREBLE?
JR Z,WRTMBR
;
TREBLE, 3-0
LD A,D
AND 0xF0
LD L,A ;
7-4
LD A,D
AND 0x0F
BIT 1,B ; ?
JR Z,STBM07
;
INC A
CP 0x10
JR NC,WRTMBR ;!
JR STBM08
;
STBM07 AND A
JR Z,$+3 ;!
DEC A
STBM08 ADD A,L
LD D,A ;
7-4
WRTMBR LD HL,0x0202
LD A,Com_mp3
JP COM__SD ;
;----FUNC10----
; FAT
FATTYPE LD A,(CALBFAT)
JP GET_BYT
;
RTYPEVS LD HL,0x0301
LD A,Com_mp3
CALL COM__SD
LD A,E
RRCA
RRCA
AND 0x0C ;
3-2
LD E,A ;
MP3
LD A,(GETVTSH)
AND 0xF3
OR E
LD (GETVTSH),A
RET
;----FUNC1D----
;
TESTREJ IN A,(CLRCBIT)
IN A,(ZXDATRD)
LD A,(REJIMGS)
OUT (ZXDATWR),A
RET
;----FUNC17----
;
SFT_HRD LD HL,GETVTSH
LD A,0x10
XOR (HL)
LD (HL),A
LD A,Hardmp3
BIT 4,(HL)
JR NZ,$+4
LD A,Softmp3
LD (TYPRES),A
RET
;----FUNC0F----
; MP3
SRESMP3 LD A,(TYPRES)
JP COM__SD
;----FUNC04----
;
STOP_PL CALL PAUSEPL
LD BC,(NUMFILE)
JP INIPLAY
;----FUNC03----
;
PAUSEPL LD HL,MTSTAT
SET 7,(HL)
LD HL,FLAGS
RES 0,(HL)
RET
;----FUNC02----
;
PLAY LD HL,(KOLWMP3)
LD A,H
OR L
RET Z
LD HL,FLAGS
SET 0,(HL)
LD HL,MTSTAT
RES 7,(HL)
RET
;----FUNC05----
;
NEXTPL LD BC,(NUMFILE)
INC BC
LD HL,(KOLWMP3)
LD A,H
OR L
RET Z
AND A
SBC HL,BC
JR NZ,NEXTPL1
LD BC,0
;
NEXTPL1 LD (NUMFILE),BC
JP INIPLAY
;----FUNC01----
;
PREVPL LD BC,(NUMFILE)
LD A,B
OR C
JR NZ,PREVPL1
LD BC,(KOLWMP3)
LD A,B
OR C
RET Z
PREVPL1 DEC BC
JR NEXTPL1
;----FUNC19----
;
DIR
NEXTDIR LD A,Nxtdir
JR P_DIR
;----FUNC18----
;
DIR
PREVDIR LD A,Prvdir
P_DIR LD BC,(NUMFILE)
PUSH BC
CALL COM_FAT
POP HL
CP 0x80
JP Z,SD_LOST
AND A
SBC HL,BC
JR NZ,NEXTPL1
RET
;----FUNC15----
;
512 MP3
GON2MP3 LD A,Dat2mp3
JP COM__SD
;----FUNC11----
;
GET_LNG CALL RDINBC
BIT 7,B
JR Z,$+6
LD BC,(NUMFILE)
LD HL,GETVTSH
RES 5,(HL)
LD HL,BUF_LNG
; LD A,Getlong
; CALL COM_FAT
; CP 0x80
; JP Z,SD_LOST
LD E,0
JP OUTDATA
;----FUNC0A----
;/
MUTE LD HL,0x030B
LD A,Com_mp3
CALL COM__SD
LD A,E
CP 0xFE
JR NC,MUTEOFF
LD (MUTEOFF+1),A
LD HL,GETVTSH
SET 6,(HL)
LD E,0xFE
JR VOL_ALL
MUTEOFF LD E,0
LD HL,GETVTSH
RES 6,(HL)
JR VOL_ALL
;----FUNC08----
;
VOL_UP LD HL,0x030B
LD A,Com_mp3
CALL COM__SD
LD A,E
AND A
RET Z
CP 0x80
RET NC
DEC E
JR VOL_ALL
;----FUNC09----
;
VOL_DN LD HL,0x030B
LD A,Com_mp3
CALL COM__SD
LD A,E
CP 0x7F
RET NC
INC E
VOL_ALL LD D,E
LD HL,0x020B
LD A,E
LD (GETVTSL),A
JR XB3
;----FUNC07----
;
VIRTUAL SURROUND
XORSURR LD B,1
XOR_ALL PUSH BC
LD HL,0x0300
LD A,Com_mp3
CALL COM__SD
POP BC
LD A,E
XOR B
LD E,A
LD A,(GETVTSH)
XOR B
LD (GETVTSH),A
BIT 3,A
JR Z,$+4
RES 7,E
LD HL,0x0200
XB3 LD A,Com_mp3
JP COM__SD
;----FUNC06----
;
XORBASS LD A,(GETVTSH)
BIT 3,A
JR NZ,XB
LD B,0x80
JR XOR_ALL
XB LD A,(GETVTSH)
XOR 0x80
LD (GETVTSH),A
CP_XB LD A,(GETVTSH)
BIT 7,A
JR Z,XB1
LD DE,(VSTBL)
XB2 LD HL,0x0202
JR XB3
XB1 LD HL,0x0302
LD A,Com_mp3
CALL COM__SD
LD (VSTBL),DE
LD DE,0
JR XB2
;----FUNC0B----
;
GETTIME LD HL,0x0304
LD A,Com_mp3
CALL COM__SD
EX DE,HL
LD DE,BUFTIME
PUSH DE
LD BC,36000
CALL SUB_BC
LD BC,3600
CALL SUB_BC
LD BC,600
CALL SUB_BC
LD BC,60
CALL SUB_BC
LD BC,10
CALL SUB_BC
LD A,0x30
ADD A,L
LD (DE),A
LD E,6
POP HL
JP OUTDATA
;----FUNC1B----
;
RUSTTBL LD A,(GETVTSH)
BIT 3,A
RET Z
LD HL,0x0302
LD A,Com_mp3
CALL COM__SD
LD A,D
EXX
LD DE,BUFTIME
AND 0x0F
LD L,A
LD H,0
LD BC,10
CALL SUB_BC
LD A,0x30
ADD A,L
LD (DE),A ; TREBLE
INC DE
EXX
LD A,D
EXX
AND 0xF0
RRCA
RRCA
RRCA
RRCA
LD L,A
BIT 3,A
LD A,0x2B
JR Z,$+4
LD A,0x2D
LD (DE),A
INC DE
LD A,L
AND 7
ADD A,0x30
LD (DE),A ;
TREBLE
INC DE
EXX
LD A,E
EXX
AND 0x0F
LD L,A
LD BC,10
CALL SUB_BC
LD A,0x30
ADD A,L
LD (DE),A ; BASS
INC DE
EXX
LD A,E
EXX
AND 0xF0
RRCA
RRCA
RRCA
RRCA
LD L,A
LD BC,10
CALL SUB_BC
LD A,0x30
ADD A,L
LD (DE),A ;
BASS
EXX
LD E,8
LD HL,BUFTIME
LD A,0x30
CP (HL)
JR NZ,$+4
LD (HL),0x20
JP OUTDATA
SUB_BC LD A,0xFF
AND A
INC A
SBC HL,BC
JR NC,$-3
ADD HL,BC
ADD A,0x30
LD (DE),A
INC DE
RET
;----FUNC15----
;
-
GETDMP3 LD HL,(KOLWMP3)
;
HL TXT
GETDCHR LD DE,BUFTIME
PUSH DE
LD BC,10000
CALL SUB_BC
LD BC,1000
CALL SUB_BC
LD BC,100
CALL SUB_BC
LD BC,10
CALL SUB_BC
LD A,0x30
ADD A,L
LD (DE),A
POP HL
PUSH HL
LD BC,0x0420
LD A,(HL)
CP 0x30
JR NZ,GO_OUTD
LD (HL),C
INC HL
DJNZ $-7
GO_OUTD POP HL
LD E,5
JR OUTDATA
;----FUNC16----
;
+1
;
GETDTEK LD HL,(NUMFILE)
INC HL
JR GETDCHR
;----FUNC12----
;
33
GETOPIS CALL RDINBC
BIT 7,B
JR Z,$+6
LD BC,(NUMFILE)
LD A,Getfzap
CALL COM_FAT
CP 0x80
JP Z,SD_LOST
LD BC,0x20
ADD HL,BC
LD (HL),E
SBC HL,BC
LD E,0x21
;
,
E
OUTDATA LD A,(HL)
INC HL
OUT (ZXDATWR),A
CALL WDN
DEC E
JR NZ,OUTDATA
RET
;----FUNC0E----
;
;
-
-1
SET_NUM CALL RDINBC
LD HL,(KOLWMP3)
AND A
SBC HL,BC
RET C
LD (NUMFILE),BC
RET
;
BC
RDINBC CALL WDY
IN A,(ZXDATRD)
LD B,A
CALL WDY
IN A,(ZXDATRD)
LD C,A
RET
;----FUNC13----
;
-
GETKMP3 LD HL,(KOLWMP3)
JR GET_RZN
;----FUNC0D----
;
GET_TEK LD HL,(NUMFILE)
JR GET_RZN
;----FUNC0C----
; HL
GET_VTS LD HL,(GETVTSL)
;
HL
GET_RZN LD A,H
OUT (ZXDATWR),A
CALL WDN
LD A,L
;
A
GET_BYT OUT (ZXDATWR),A
;
WDN LD B,0
WDN1 DEC B
RET Z
IN A,(ZXSTAT)
RLA
JR C,WDN1
RET
;
WDY IN A,(ZXSTAT)
RLA
JR NC,WDY
RET
; MP3-
1
PLAYMP3 LD A,(FLAGS)
BIT 0,A
RET Z
LD A,(GETVTSH)
BIT 1,A
RET NZ
LD A,Nextsec
CALL COM_FAT
LD H,A
EX AF,AF'
LD A,H
CP 0x80
JP Z,SD_LOST
EX AF,AF'
RET NZ ;
,
LD A,Zer2mp3
CALL COM__SD
JP NEXTPL ; ,
;
;
INIPLAY PUSH BC
CALL MOD_OFF
CALL SRESMP3 ;
LD HL,(GETVTSL)
BIT 4,H ;
=HARD,
;
MP3
;
JR Z,INIPLA1
LD L,0
LD A,H
AND %00011000
LD H,A
INIPLA1 SET 5,H ;
5,
POP BC
PUSH BC
PUSH HL
LD A,Openfil
CALL COM_FAT ;
CP 0x80
JP Z,SD_LOST
AND 2
LD E,A
POP HL
LD A,H
AND %11111101
OR E
LD H,A ; 1=1-MOD, =0-MP3
LD (GETVTSL),HL
BIT 1,H
LD E,FREQ20 ;20 MOD
JR NZ,INIPLA2
LD E,FREQ12 ;12 MP3
INIPLA2 LD A,Freqnc
CALL COM__SD
LD HL,FLAGS
RES 2,(HL)
SET 1,(HL)
LD HL,0x0400
LD (TIMEOUT),HL
POP BC
LD HL,BUF_LNG
LD A,Getlong
CALL COM_FAT ;
MOD_OFF XOR A
OUT (VOL1),A
OUT (VOL2),A
OUT (VOL3),A
OUT (VOL4),A
OUT (VOL5),A
OUT (VOL6),A
OUT (VOL7),A
OUT (VOL8),A
OUT (VOL8),A
RET
SD_LOST LD SP,ISTACK
LD HL,FLAGS
SET 7,(HL)
CALL PAUSEPL
JP CON_MOD
CMP_INT PUSH AF
LD A,R
JP PE,CMP_INT1
LD A,R
CMP_INT1 LD A,0
JP PO,CMP_INT2
LD A,1
CMP_INT2 LD (INT_MODE),A
POP AF
RET
COM__SD include "sd4ngs.a80" ;
SD
COM_FAT include "fat4ngs.a80" ;
FAT
SET7XOR PUSH HL
LD HL,0
ADD HL,SP
EXX
LD A,0x10
LD SP,0x7F00
LD BC,0xA97E
LD DE,0x2C77
SPEDI1 REPT 16
PUSH DE
PUSH BC
ENDM
DEC A
JP NZ,SPEDI1
LD HL,SPEDI2
LD DE,0x7F00
LD BC,ESPEDI2-SPEDI2
LDIR
EXX
LD SP,HL
POP HL
LD A,L
EXX
LD L,A
LD H,0
LD BC,0x7B00
ADD HL,HL
ADD HL,HL
ADD HL,BC
LD (KUDAXOR),HL
EXX
LD A,(SIZ_MOD)
LD B,A
LD C,0x80
RET
SPEDI2 INC H
JP NZ,0x7B00
INC E
LD A,(DE)
LD H,0x80
OUT (MPAG),A
DEC B
JP NZ,0x7B00
LD A,(PG_PLAYER)
OUT (MPAG),A
JP END7XOR
ESPEDI2
SPEDI3 LD A,(PG_PLAYER)
OUT (MPAG),A
CALL SET7XOR
LD A,(DE)
PUSH HL
OUT (MPAG),A
LD HL,(KUDAXOR)
EX (SP),HL
RET
END7XOR EXX
LD HL,0
ADD HL,SP
LD SP,0x8000
LD DE,0x8080
LD B,0x40
E7X1 REPT 64
PUSH DE
ENDM
DJNZ E7X1
LD SP,HL
EXX
JP ESPEED
PATCH LD A,(NUMPG)
OR 0x3F
LD (PG_PLAYER),A ;
IN A,(GSCFG0)
RES B_RAMRO,A
SET B_EXPAG,A
OUT (GSCFG0),A
LD A,0x80
OUT (MPAGEX),A
LD HL,SPEDI3
LD DE,ADDA80
LD BC,END7XOR-SPEDI3
LDIR
LD HL,FXB01
LD (HL),0xCD
INC HL
LD (HL),LOW (NXTMOD)
INC HL
LD (HL),HIGH (NXTMOD)
LD HL,0x11D6
LD (HL),0xCD
INC HL
LD (HL),LOW (NXTMODR)
INC HL
LD (HL),HIGH (NXTMODR)
INC HL
EX DE,HL
LD HL,0x11E3
AND A
SBC HL,DE
LD B,H
LD C,L
LD H,D
LD L,E
LD (HL),B
INC DE
LDIR ;
LD HL,TEKADR1
LD DE,EMPTY2
LD BC,P_END-LD_MOD
LDIR ;
;
LD HL,P_START
LD DE,EMPTY1
LD BC,P__END-P_00
LDIR ;
MP3
LD HL,(NUMPG)
LD H,0x40
DEC L
LD (HL),1
INC L
LD (HL),0 ;
;
LD HL,NUMPG
DEC (HL)
LD HL,P_00
LD (0x0300+(0x1F*2)),HL ; 1F
LD HL,COMMFF
LD (0x0300+(0x2F*2)),HL ; FF
IN A,(GSCFG0)
SET B_RAMRO,A
RES B_EXPAG,A
OUT (GSCFG0),A
LD A,(PG_PLAYER)
OUT (MPAG),A
;
LISTPAG LD HL,0x4000
LD DE,BUF_PAG
LSTPAG1 LD A,(HL)
ADD A,A
RRCA
LD (DE),A
RLCA
INC DE
INC A
RRCA
LD (DE),A
INC DE
INC HL
LD A,(HL)
DEC A
JR NZ,LSTPAG1
RET
TEKADR1
PHASE EMPTY2
; NEOGS
LD_MOD IN A,(GSCFG0)
AND 0xCF
OUT (GSCFG0),A
LD HL,FLAGS
SET 2,(HL)
CALL MOD_OFF
LD A,Loadfil
CALL COM_FAT
CP 0x80
JP Z,SD_LOST
LD (SIZ_MOD),A
LD A,(CPAGE)
OUT (MPAG),A
LD A,1
LD (CNTMOD),A
LD (CURMOD),A
CALL LDMOD
LD A,(MTSNGSZ)
LD (SIZ_PAT),A
LD BC,0x0100
CALL PLAYMOD
IN A,(GSCFG0)
OR 0x10
OUT (GSCFG0),A
RET
ESPEED XOR A
LD (CPAGE),A
OUT (MPAG),A
RET
NXTMOD LD HL,MTSNGPS
INC (HL)
CP (HL)
JP C,NXTMOD1
LD (MTSNGPS),A
RET
NXTMODR LD A,(PG_PLAYER)
OUT (MPAG),A
CALL NEXTPL
LD A,(GETVTSH)
BIT 1,A
JP NZ,LD_MOD
POP HL
JP OPROS
COMMFF IN A,(ZXDATRD)
ADD A,LOW (FLAGS)
LD IYL,A
LD A,HIGH (FLAGS)
ADC A,0
LD IYH,A
LD A,(IY+0)
OUT (ZXDATWR),A
OUT (CLRCBIT),A
JP COMINT_
P_END
DEPHASE
P_START
PHASE EMPTY1
;
P_00 JP OPROS3
NXTMOD1 LD A,(PG_PLAYER)
OUT (MPAG),A
CALL NEXTPL
; MOD
CON_MOD LD A,(GETVTSH)
BIT 1,A
JR Z,OPROS
LD A,(FLAGS)
BIT 0,A
JR Z,CONROM
BIT 2,A
CALL Z,LD_MOD
CONROM LD A,(CPAGE)
OUT (MPAG),A
JP COMINT
OPROS IN A,(ZXSTAT)
RRA
JR C,OPROS1
CALL PLAYMP3
JR OPROS
OPROS1 IN A,(ZXCMD)
CP 0x1F
JR NZ,CONROM
OPROS3 IN A,(ZXDATRD)
OUT (CLRCBIT),A
AND A
JR Z,OPROS2
LD H,A
LD A,(REJIMGS)
CP 0x78
JR NC,OPROS
LD A,H
OPROS2 CP LOW (END_TAB-TABFUNC)/2+1
JR NC,OPROS
LD HL,CON_MOD
PUSH HL
ADD A,A
ADD A,LOW (TABFUNC)
LD L,A
LD A,HIGH (TABFUNC)
ADC A,0
LD H,A
LD A,(PG_PLAYER)
OUT (MPAG),A
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
JP (HL)
P__END
DEPHASE
DUPL 0x100-LOW ($),0
BUF_LNG EQU $ ;0x100
.
BUFTDIR EQU BUF_LNG+0x100 ;0x100
DIR
BUF_PAG EQU BUFTDIR+0x100 ;0x80
B512BAS EQU BUF_PAG+0x100