исправлено несколько багов с некорректной работой плейлиста.

исправлен баг с шумом при переключении треков плейлиста.
This commit is contained in:
Tolik 2025-06-27 23:16:27 +10:00
parent 02c469a77c
commit 0c69e84a29
3 changed files with 229 additions and 146 deletions

@ -1 +1 @@
Subproject commit 2b1e30c6108f0a5c271f84558e1e5f804a6d623a
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1

View File

@ -2,38 +2,36 @@
DEFINE WAVPLunknown 1
DEFINE SoundBugFix 1
DEFINE FULL_VERSION "2.01"
DEFINE FULL_VERSION "2.02"
SH_HDD_X EQU 223 ; ¯®«®¦¥­¨¥ ¨­¤¨ª â®à  HDD £®à.
SH_HDD_Y EQU 90 ; ¯®«®¦¥­¨¥ ¨­¤¨ª â®à  HDD ¢¥àâ.
MACRO NEXT_SEC
LD BC,P_S_NUM-256
LD BC,IDE.Read.Sector
IN A,(C)
INC A
; LD BC,P_S_NUM
INC B
OUT (C),A
JR NZ,.NO_NEXT
LD BC,P_C_LOW-256
IN E,(C)
LD BC,P_C_HIG-256
IN D,(C)
;
DEC B
INC C
IN E,(C) ;IDE.Read.CylinderLow
INC C
IN D,(C) ;IDE.Read.CylinderHigh
;
INC DE
LD BC,P_C_LOW
OUT (C),E
LD BC,P_C_HIG
OUT (C),D
INC B
OUT (C),D ;IDE.Write.CylinderHigh
DEC C
OUT (C),E ;IDE.Write.CylinderLow
.NO_NEXT:
ENDM
MACRO WAIT_HDD
.LOCS1:
; LD BC,P_HDST
IN E,(C)
BIT 7,E
JR NZ,.LOCS1
@ -49,14 +47,13 @@ SH_HDD_Y EQU 90 ;
;************************************
EXE_HEADER:
BYTE 'EXE'
BYTE 0 ; MY VERSION
BYTE 1 ; MY VERSION
DWORD EXE_HEADER.Size ; START CODE IN FILE
WORD Loader_length ; LEN START LOAD DATA
WORD 0,0,0 ; RESERV
WORD START ; ADRESS IN MEM
WORD START ; START ADRESS
WORD #BFFE ; STACK ADRESS
;DS 490
WORD #C000 ; STACK ADRESS
.Size EQU $-EXE_HEADER
START: PUSH IX
@ -280,12 +277,13 @@ NO_FACE:
EI
FACE_OK:
POP HL ; ¢á¯®¬­¨âì ª®¬ ­¤­ãî áâபã
LD HL,EXIT_ALL.norm_exit
EX (SP),HL ; ¢á¯®¬­¨âì ª®¬ ­¤­ãî áâபã
;POP HL ; ¢á¯®¬­¨âì ª®¬ ­¤­ãî áâபã
INC HL
INC HL
LD (SAV_SP),SP
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
IF SoundBugFix
@ -296,7 +294,7 @@ PLAY_ALL:
CALL TEST_SWITCH
IF SoundBugFix
LD A,CBL.BUFFER_PAGE
LD A,SP_SND.CBL.BUFFER_PAGE
OUT (SLOT3),A
ENDIF
@ -495,7 +493,7 @@ NEXT_2:
LD DE,9000
CALL Test_DIAP
LD A,8 ; 8khz
JR Z,NEXT_3\
JR Z,NEXT_3
LD HL,10000
LD DE,12000
@ -569,7 +567,7 @@ DATA_1:
LDIR ; COPY LEN of DATA
IF SoundBugFix
XOR A
LD A,(D_FILL)
LD B,L
.loop: DEC HL
LD (HL),A
@ -579,26 +577,25 @@ DATA_1:
LD (SAV_PAGE3),A
ENDIF
;LD A,CBL.BUFFER_PAGE ; ᯥæ-áâà ­¨æ !
;LD A,SP_SND.CBL.BUFFER_PAGE ; ᯥæ-áâà ­¨æ !
;LD (PLAY_PAGE),A
;*********************************************
LD A,CBL.BUFFER_PAGE
LD A,SP_SND.CBL.BUFFER_PAGE
OUT (SLOT3),A
LD A,16 ; ç¨á«® ᥪâ®à®¢ - ¯à¨§­ ª ª®­æ  ¤ ­­ëå
LD (NUM_SEC+1),A
LD HL,#C000
;
CALL READ_FILE_X1
LD HL,#C100
CALL READ_FILE_X1 ;!FIXIT
LD A,0
LD BC,CBL.SYS_PORT
LD BC,SP_SND.CBL.SYS_PORT
OUT (C),A
LD BC,CBL.OUT
LD BC,SP_SND.CBL.OUT
LD A,#80
FILL_L0:
OUT (C),A ; § ¡¨âì ¢® ¢á¥ 80h
@ -607,31 +604,31 @@ FILL_L0:
LD HL,0A000h ; CLEAR PAGE_IM2
LD DE,0A001h
LD BC,100h
LD HL,#A000 ; CLEAR PAGE_IM2
LD DE,#A001
LD BC,#100
LD (HL),0
LDIR
DI
LD DE,PLAY
LD (0A0FFh),DE ; IM2_ADRESS
LD (#A0FF),DE ; IM2_ADRESS
LD A,0A0h
LD A,#A0
LD I,A
IM 2
LD A,(CBL_MODE)
LD BC,CBL.SYS_PORT
LD BC,SP_SND.CBL.SYS_PORT
OUT (C),A
EI
LD A,(MAX_)
ADD A,60h
ADD A,#60
RRCA
AND 7Fh
AND #7F
LD (MAX_),A
;***************************************
@ -895,17 +892,17 @@ HDD_CNT: db 0
PAUSE_KEY:
DI
LD BC,CBL.SYS_PORT
XOR A ; CBL.Covox
LD BC,SP_SND.CBL.SYS_PORT
XOR A ; SP_SND.CBL.Covox
OUT (C),A ; stop Audio
LD A,#80
LD C,CBL.OUT
LD C,SP_SND.CBL.OUT
OUT (C),A ; COVOX=80h
CALL PAUSE_KEY1
LD A,(CBL_MODE) ; PLAY MORE
LD BC,CBL.SYS_PORT
LD BC,SP_SND.CBL.SYS_PORT
OUT (C),A
EI
XOR A
@ -952,38 +949,36 @@ NO_KEY: db #FF
; RET
EXIT_ALL:
IM 1
LD A,0
LD BC,CBL.SYS_PORT
EXIT_ALL: IM 1
XOR A
LD BC,SP_SND.CBL.SYS_PORT
OUT (C),A
LD BC,CBL.OUT
;
LD (HDD_CNT),A
LD (HDD_S),A
;
LD BC,SP_SND.CBL.OUT
LD A,#80
.loop: OUT (C),A ; § ¡¨âì ¢® ¢á¥ 80h
DJNZ .loop
;
LD HL,#C000
LD (SND_A),HL
;
LD A,(SAV_PAGE3)
OUT (SLOT3),A
CALL CLOSE_FILE
; LD C,50h ; OPEN_TEXT_SCR
; LD B,1
; LD A,3h
; RST 10h
LD B,0
JP CLOSE_FILE
;
.norm_exit: LD B,0
.exit: LD C,Dss.Exit
RST ToDSS
JR .exit
SAV_PAGE3: db 0
SAV_PAGE3: DB 0
;*************************************
PLAY: DI
PUSH AF
IN A,(CBL.INT_PORT)
IN A,(SP_SND.CBL.INT_PORT)
RLCA
JP NC,NO_SND
@ -1005,7 +1000,7 @@ PLAY: DI
PUSH DE
LD A,CBL.BUFFER_PAGE
LD A,SP_SND.CBL.BUFFER_PAGE
OUT (SLOT3),A
OUT (SLOT0),A
@ -1293,19 +1288,19 @@ no_diap:
RET
;********************************************
EXTR_LINE: ; ¢ë¤¥«¥­¨¥ áâப¨ ¨§ HL ¨ á®åà ­¥­¨¥ ¥¥ ¢ DE
LD B,0
EXTR_LOOP:
LD A,(HL)
; ¢ë¤¥«¥­¨¥ áâப¨ ¨§ HL ¨ á®åà ­¥­¨¥ ¥¥ ¢ DE
EXTR_LINE: LD B,0
.LOOP: LD A,(HL)
AND A
RET Z
CP 13
RET Z
LD (DE),A
INC HL
INC DE
INC B
JR NZ,EXTR_LOOP
SCF
JR NZ,.LOOP
;SCF
RET
;********************************************
@ -1333,21 +1328,26 @@ READ_FILE: ; HL - name,
LD HL,#C000
LD DE,#100 ; ç¨â âì § £®«®¢®ª
; LD DE,200h ; ç¨â âì § £®«®¢®ª
LD C,#13
RST ToDSS
;RET C ; ®è¨¡ª  ¯à¨ ç⥭¨¨
; ¤«¨­  áç¨â ­­ëå ¤ ­­ëå ¢ DE
PUSH AF
LD HL,#C000
ADD HL,DE
LD (HL),0
POP AF
RET ; ®è¨¡ª  ¯à¨ § ªàë⨨ ¨«¨ Ok
READ_MORE: ; ç¨â âì ¤ «ìè¥ ¤«ï playlist 4kb
PUSH HL
LD DE,#1000 ;
LD C,#13
LD A,(FILE_HANDLE)
RST ToDSS
; JR CLOSE_FILE
;
JP C,ERROR
POP HL
ADD HL,DE
LD (HL),0
CLOSE_FILE:
LD A,(FILE_HANDLE)
LD C,#12
@ -1357,7 +1357,7 @@ CLOSE_FILE:
;*******************************************
READ_FILE_XD1:
LD HL,#C100
;LD HL,#C100
LD DE,#1F00 ; ç¨â âì ¤ «ìè¥
LD C,#13
LD A,(FILE_HANDLE)
@ -1380,8 +1380,8 @@ READ_FILE_XD:
LD A,E
OR D
JR NZ,SET_Z_FLAG
LD A,1
AND A
XOR A
INC A
RET
SET_Z_FLAG: ; § ¡¨âì ®áâ «ì­ë¥ ¡ ©âë ¢ 80h
@ -1433,7 +1433,7 @@ READ_FILE_X1: ; HL -
LD A,(LENGTH_DATA)
ADD A,32
RRA
AND 1Fh ; number of sectors
AND #1F ; number of sectors
LD (NUM_SEC+1),A
@ -1448,18 +1448,18 @@ CONT_1:
NUM_SEC:
LD A,16 ; áç¨â âì 16 ᥪâ®à®¢
LD BC,P_S_CNT
LD BC,IDE.Write.Counter
OUT (C),A
LD BC,P_CMD
LD BC,IDE.Write.Command
LD A,#20
OUT (C),A ; ç¨â âì!
LOOP_HDDR1:
LD BC,P_HDST
LD BC,IDE.Read.Status
WAIT_HDD
LD BC,P_DATS ; READ/WRITE INIR/OTIR
LD BC,IDE.Read.Data ; READ/WRITE INIR/OTIR
LD D,16
LOOP_HDDR:
@ -1478,7 +1478,7 @@ READ_END:
ELSE
CONT_1:
LD A,CBL.BUFFER_PAGE
LD A,SP_SND.CBL.BUFFER_PAGE
NUM_SEC:
LD B,16 ; áç¨â âì 16 ᥪâ®à®¢
@ -1496,8 +1496,8 @@ READ_END1:
PUSH HL
POP DE
INC DE
LD C,80h
D_FILL EQU $-1
D_FILL+1:
LD C,#80
LD (HL),C
LD BC,1FFh
LDIR
@ -1609,7 +1609,7 @@ ERROR_MSG3:
START_MSG:
db 13,10,"COVOX-Blaster WAV-Player v",FULL_VERSION," by Ivan Mak"
db 13,10,"(c) Sprinter Team. 2024.",13,10,0
db 13,10,"(c) Sprinter Team. 2025.",13,10,0
PLAY_LIST_ID: db "PLAYLIST"

View File

@ -1,5 +1,5 @@
;***********************************
/* ; NEW
VISIO: IN A,(PORT_Y)
PUSH AF
;
@ -128,3 +128,86 @@ VISIO: IN A,(PORT_Y)
RET
;
.lines: DB 1 ; 1 = 1, 2 = 2
*/
VISIO: IN A,(PORT_Y)
PUSH AF
LD A,(SND_A+1)
ADD A,A
; ADD A,A
AND #7F
LD L,A
LD H,#B0
LD BC,7
ADD HL,BC
LD BC,(SND_A)
LD A,(BC)
RRA
CPL
AND #7F
ADD A,#40
LD (.COLOR_),A
INC BC
LD A,(BC) ; new
.ADD_PAR+1: ADD A,0 ; parameter for 8/16 bit
RRA
RRA
AND #3F
ADD A,#40 ; Vertical Shift
LD (.NEW_),A
LD B,A
LD A,(MAX_)
CP B
JR NC,.NO_MAX
LD A,B
LD (MAX_),A
.NO_MAX: LD A,#50
OUT (SLOT3),A
LD A,(HL) ; old
LD (.OLD_),A
LD A,(.NEW_)
LD (HL),A
.OLD_+1: LD A,0
OUT (PORT_Y),A ; old
LD A,H
ADD A,#10
LD H,A
LD A,0 ; clear
LD (HL),A
INC L
LD (HL),A
;INC L
;LD (HL),A
;INC L
;LD (HL),A ; áâ¥à¥âì
.NEW_+1: LD A,0
OUT (PORT_Y),A ; new
.COLOR_+1: LD A,#FF
LD (HL),A
DEC L
LD (HL),A
;DEC L
;LD (HL),A
;DEC L
;LD (HL),A ; ­ à¨á®¢ âì ­®¢®¥
LD A,SP_SND.CBL.BUFFER_PAGE
OUT (SLOT3),A
POP AF
OUT (PORT_Y),A
RET