From 07c1eb119c85cb02573b3322f940606f51e8d744 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 12 Aug 2023 23:32:14 +1000 Subject: [PATCH 1/8] ... --- Shared_Includes | 2 +- WAVPLAY.ASM | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 6e27011..cc0bf0d 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa +Subproject commit cc0bf0dfac766dd97e7a5441b523034921cf3830 diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index 3bae8d2..49b20df 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -1293,7 +1293,6 @@ LINE_COMP: READ_FILE: ; HL - name, читать в адрес #C000 - LD A,1 LD C,#11 RST #10 From f9101ef152955c6e9301fa0c7ab474176d9fd605 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 13 Aug 2023 02:42:04 +1000 Subject: [PATCH 2/8] ... --- WAV_PL.BMP => BIN/WAV_PL.BMP | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename WAV_PL.BMP => BIN/WAV_PL.BMP (100%) diff --git a/WAV_PL.BMP b/BIN/WAV_PL.BMP similarity index 100% rename from WAV_PL.BMP rename to BIN/WAV_PL.BMP From 222e08ed57608fb34406533239313eb2804573e4 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 13 Aug 2023 02:42:06 +1000 Subject: [PATCH 3/8] ... --- BIN/WAV_HELP.PAK | Bin 0 -> 1280 bytes WAVPLAY.ASM | 119 +++++++++++++++++++++-------------------------- 2 files changed, 53 insertions(+), 66 deletions(-) create mode 100644 BIN/WAV_HELP.PAK diff --git a/BIN/WAV_HELP.PAK b/BIN/WAV_HELP.PAK new file mode 100644 index 0000000000000000000000000000000000000000..b91e3931e314648828506af910c06872e88334cd GIT binary patch literal 1280 zcmb`G&ubGw6vtn7$LuV`&CW_=3Tt-KOx24JC`eS$sYDDxq!j;vC#5)`oSjLssRtG89Nv4M`M&+}X1@!tdwEY? z@Ls$dZQ{i#z?bePT%5Hq?u^(>aWKa?o92+67}N7YKmKymkBhT_!A^Li1lUj5TR#Mz z?~nAoF1+?<{o6eUEVm&ag6Genh&X_7N3mV~6p>>F!gqN5Y+R`75t$bH7sXB$y^5G` zJY1$y&-~OUE?)1U`qidnsKyBpmr2ZeK^8-Hp&~i!EB)_rdv{9;|B>C>J2%yU#kGd$ z#Gy8=2ArzT#TFW}aI|YtP$rWOC)BG1H9w2|NWrst{U^k;JUMPDn;xDBP-zQ`I?AR_Ta7-K7DqbI`ut$_=`b-_Bd zW865|Q}@Fd5MeFWr9*ZRDYlq1U^CVaYe&@ICHyFOa$$)*7}Im5)~3@NUJu9y4Ti^v WSAac(G?bMLUI1r0G|>m!qx1_)xq)Z^ literal 0 HcmV?d00001 diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index 49b20df..5ae5827 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -3,6 +3,9 @@ DEFINE SND_Abug 0 DEFINE OutOfPageBugFix 0 +SH_HDD_X EQU 223 ; положение индикатора HDD гор. +SH_HDD_Y EQU 90 ; положение индикатора HDD верт. + MACRO NEXT_SEC LD BC,P_S_NUM-256 @@ -337,7 +340,6 @@ END_WPL: LD HL,#9000 LOOP_WPL_ALL: - LD A,(NUM_FILES) AND A JR Z,STOP_ALL @@ -434,32 +436,29 @@ PLAY_WAVE: LD A,#80 LD (ADD_PAR),A JR Z,NEXT_1 - JR ERROR2 ; format error - -ERROR: - CALL RESTORE_SCR - LD HL,ERROR_MSG - LD C,5Ch - RST 10h - LD B,DSS_Error.sys.FILE_NOT_FOUND - RET - -ERROR2: - CALL RESTORE_SCR + ;JR ERROR2 ; format error +ERROR2: CALL RESTORE_SCR LD HL,ERROR_MSG2 LD C,#5C RST #10 CALL CLOSE_FILE - LD B,DSS_Error.sys.UNKNOWN_FORMAT - RET -ERROR3: - CALL RESTORE_SCR + LD B,DSS_Error.sys.UNKNOWN_FORMAT + JP EXIT_ALL.exit + +ERROR: CALL RESTORE_SCR + LD HL,ERROR_MSG + LD C,#5C + RST #10 + LD B,DSS_Error.sys.FILE_NOT_FOUND + JP EXIT_ALL.exit + +ERROR3: CALL RESTORE_SCR LD HL,ERROR_MSG3 LD C,#5C RST #10 CALL CLOSE_FILE - LD B,DSS_Error.sys.GENERAL_FAILURE - RET + LD B,DSS_Error.sys.UNKNOWN_FORMAT + JP EXIT_ALL.exit RESTORE_SCR: LD C,#50 @@ -468,7 +467,6 @@ RESTORE_SCR: JP #10 ; OPEN_TXT_SCR NEXT_1: - LD A,(#C016) CP 1 JR Z,NEXT_2 @@ -480,7 +478,7 @@ NEXT_2: LD A,B LD (CBL_MODE),A - LD BC,(0C018h) ; частота + LD BC,(#C018) ; частота LD HL,7000 LD DE,9000 CALL Test_DIAP @@ -525,7 +523,6 @@ NEXT_2: ; LD A,14 ; 54khz ; EX AF,AF' ; JR Z,NEXT_3 - JP ERROR3 NEXT_3: @@ -534,13 +531,9 @@ NEXT_3: LD A,(CBL_MODE) ADD A,C LD (CBL_MODE),A - PLAY_FILE: - CALL FRQ_ON - LD HL,#C024 - FIND_DATA: PUSH HL LD DE,LINES_DATA @@ -552,7 +545,6 @@ FIND_DATA: INC L JR NZ,FIND_DATA JP ERROR2 - DATA_1: INC HL INC HL @@ -571,12 +563,12 @@ DATA_1: IN A,(SLOT3) LD (SAV_PAGE3),A - LD A,#FD ; спец-страница! - LD (PLAY_PAGE),A + ;LD A,CBL.BUFFER_PAGE ; спец-страница! + ;LD (PLAY_PAGE),A ;********************************************* - LD A,(PLAY_PAGE) + LD A,CBL.BUFFER_PAGE OUT (SLOT3),A LD A,16 ; число секторов - признак конца данных @@ -738,11 +730,9 @@ HDD_IND: LD A,#20 ; забить весь индикатор ACC_Off -SH_HDD EQU 5Ah ; положение индикатора HDD верт. + LD HL,#C000 + SH_HDD_X ; положение индикатора HDD гор. - LD HL,#C0DF ; положение индикатора HDD гор. - - LD A,SH_HDD + LD A,SH_HDD_Y OUT (PORT_Y),A ; LD A,0Eh ; цвет панели (синий) @@ -755,7 +745,7 @@ SH_HDD EQU 5Ah ; LD (HL),A ACC_Off - LD A,SH_HDD + LD A,SH_HDD_Y OUT (PORT_Y),A INC HL @@ -772,8 +762,8 @@ SH_HDD EQU 5Ah ; CP #3E LD B,#1D JR C,NO_ - LD B,#1D -COLOR_B EQU $-1 +COLOR_B+1: LD B,#1D + LD A,(COLOR_B) XOR #1E LD (COLOR_B),A @@ -785,7 +775,7 @@ NO_: ACC_Off NEG - ADD A,SH_HDD+#40 + ADD A,SH_HDD_Y+#40 LD C,A OUT (PORT_Y),A @@ -806,7 +796,7 @@ NO_: LD HL,#C0E7 - LD A,SH_HDD + LD A,SH_HDD_Y OUT (PORT_Y),A ACC_SetBlockSize @@ -818,7 +808,8 @@ NO_: ACC_FillScreenOneByte LD (HL),A ACC_Off - LD A,1 ; зеленый + + LD A,1 ; зеленый ACC_FillScreenOneByte LD (HL),A ACC_Off @@ -831,7 +822,7 @@ NO_: LD (HL),A ACC_Off - LD A,SH_HDD + LD A,SH_HDD_Y OUT (PORT_Y),A INC HL @@ -845,6 +836,7 @@ NO_: ACC_FillScreenOneByte LD (HL),A ACC_Off + LD A,1 ; зеленый ACC_FillScreenOneByte LD (HL),A @@ -871,7 +863,7 @@ NO_: ACC_Off NEG - ADD A,SH_HDD+#40 + ADD A,SH_HDD_Y+#40 LD C,A OUT (PORT_Y),A @@ -930,8 +922,7 @@ PAUSE_KEY1: RET Z JR PAUSE_KEY1 -INKEY: - IN A,(Z84.SIO.Ch_A.Ctrl) +INKEY: IN A,(Z84.SIO.Ch_A.Ctrl) BIT 0,A RET Z IN A,(Z84.SIO.Ch_A.Data) @@ -962,7 +953,6 @@ NO_KEY: db #FF EXIT_ALL: - IM 1 LD A,0 @@ -971,9 +961,9 @@ EXIT_ALL: LD BC,#4F LD A,#80 -FILL_L1: - OUT (C),A ; забить во все 80h - DJNZ FILL_L1 + +.loop: OUT (C),A ; забить во все 80h + DJNZ .loop LD A,(SAV_PAGE3) OUT (SLOT3),A @@ -984,16 +974,16 @@ FILL_L1: ; LD B,1 ; LD A,3h ; RST 10h - - RET + LD B,0 +.exit: LD C,Dss.Exit + RST ToDSS + JR .exit SAV_PAGE3: db 0 - ;************************************* -PLAY: - DI +PLAY: DI PUSH AF - IN A,(0FEh) + IN A,(CBL.INT_PORT) RLCA JP NC,NO_SND @@ -1015,8 +1005,8 @@ PLAY: PUSH DE - LD A,#FD -PLAY_PAGE EQU $-1 ; !FIXIT зачем, если можно напрямую было прописать? + LD A,CBL.BUFFER_PAGE +;PLAY_PAGE EQU $-1 ; !FIXIT зачем, если можно напрямую было прописать? OUT (SLOT3),A OUT (SLOT0),A @@ -1053,11 +1043,11 @@ L_DDX: adc hl,de ex de,hl jr nc,1F - ld hl,#C02C +1: ENDIF ;===========================================================; -1: LD (SND_A),HL + LD (SND_A),HL ;**************** @@ -1153,7 +1143,7 @@ COLOR_+1: LD A,#FF ; DEC L ; LD (HL),A ; нарисовать новое - LD A,(PLAY_PAGE) + LD A,CBL.BUFFER_PAGE OUT (SLOT3),A POP AF @@ -1449,7 +1439,7 @@ READ_END: ELSE CONT_1: - LD A,(PLAY_PAGE) + LD A,CBL.BUFFER_PAGE NUM_SEC: LD B,16 ; считать 16 секторов @@ -1588,20 +1578,17 @@ PLAY_LIST_ID: db "PLAYLIST" NUM_FILES: db 1 NUM_MAX: db 2 -PLAY_LIST: - - - ds 8A00h-$ +PLAY_LIST: BLOCK #8A00-$,0 PIC_HELP: - incbin 'ORIGINAL/WAV_HELP.PAK' + incbin 'BIN/WAV_HELP.PAK' Loader_length EQU $ - START ; ; DISP 0 PIC_MAIN: - incbin './WAV_PL.BMP' + incbin './BIN/WAV_PL.BMP' .Size EQU $-PIC_MAIN ENT ; From 2a4f1e55e29b15b53cc011cbc0aa89750ef45b12 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Fri, 8 Sep 2023 00:05:39 +1000 Subject: [PATCH 4/8] ... --- Shared_Includes | 2 +- WAVPLAY.ASM | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index cc0bf0d..7f4046e 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit cc0bf0dfac766dd97e7a5441b523034921cf3830 +Subproject commit 7f4046e7fabff85738efcf2a7aa1dbbeca7af906 diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index 5ae5827..80260f0 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -1569,9 +1569,8 @@ ERROR_MSG3: db 13,10,"Not standart data rate",13,10,0 START_MSG: - db 13,10,"COVOX-Blaster VAW-Player for Sprinter." - db 13,10,"(c) Peters Plus Ltd." - db 13,10,"Writed by Ivan Mak.",13,10,0 + db 13,10,"COVOX-Blaster WAV-Player by Ivan Mak" + db 13,10,"(c) Sprinter Team. 2023.",13,10,0 PLAY_LIST_ID: db "PLAYLIST" From ed4bd75653f3daf8e34e7684e2901930396209ce Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Tue, 11 Jun 2024 02:56:16 +1000 Subject: [PATCH 5/8] correct sound bug fix --- Shared_Includes | 2 +- WAVPLAY.ASM | 97 ++++++++++++++++++++----------------------------- 2 files changed, 40 insertions(+), 59 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 7f4046e..378f3fd 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 7f4046e7fabff85738efcf2a7aa1dbbeca7af906 +Subproject commit 378f3fdd49601390b3aacfe51e45c6fceba25022 diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index 80260f0..f41172d 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -1,7 +1,6 @@ - DEFINE WAVPLunknown 1 - DEFINE SND_Abug 0 - DEFINE OutOfPageBugFix 0 + DEFINE WAVPLunknown 1 + DEFINE SoundBugFix 1 SH_HDD_X EQU 223 ; положение индикатора HDD гор. SH_HDD_Y EQU 90 ; положение индикатора HDD верт. @@ -41,6 +40,7 @@ SH_HDD_Y EQU 90 ; ENDM INCLUDE 'shared_includes/constants/sp2000.inc' INCLUDE 'Shared_Includes/constants/dss_equ.inc' + INCLUDE 'Shared_Includes/constants/bios_equ.inc' INCLUDE 'shared_includes/macroses/accelerator.z80' ORG #8100-EXE_HEADER.Size @@ -62,19 +62,19 @@ START: PUSH IX LD (FILE_HANDLE),A LD HL,START_MSG LD C,#5C - RST #10 ; Start Message + RST ToDSS ; Start Message LD C,#50 LD B,0 LD A,#81 - RST #10 ; OPEN_GRAF_SCR + RST ToDSS ; OPEN_GRAF_SCR DI LD C,#A6 ; set GRAF_PAL LD B,1 LD A,0 ;GRAPHIC_SCREEN - RST 8 + RST ToBIOS EI IN A,(SLOT3) @@ -119,15 +119,14 @@ START: PUSH IX LD A,(FILE_HANDLE) LD HL,0 LD IX,PIC_MAIN.Size - LD BC,Dss.Move_FP.FrEnd * 256 + Dss.Move_FP - + LD BC,Dss.Move_FP.FrEnd ;!TEST LD HL,#B400 LD DE,#36 LD C,#13 LD A,(FILE_HANDLE) - RST #10 ; READ Head + RST ToDSS ; READ Head ; LD HL,0B436h ; Set All PAL=0 ; LD DE,0B437h @@ -146,7 +145,7 @@ START: PUSH IX LD HL,#B436 LD C,#13 LD A,(FILE_HANDLE) - RST #10 ; READ PAL + RST ToDSS ; READ PAL ; LD HL,0B832h ; цвет FF - белый ; LD (HL),0FFh @@ -172,7 +171,7 @@ LOOP_FACE: LD DE,#1400 ; по 5k LD C,#13 LD A,(FILE_HANDLE) - RST #10 ; READ File + RST ToDSS ; READ File POP BC PUSH BC ; вспомнить C - Line @@ -275,7 +274,7 @@ NO_FACE: LD C,#A6 ; set GRAF_PAL LD B,1 LD A,0 - RST 8 + RST ToBIOS EI FACE_OK: @@ -288,6 +287,12 @@ FACE_OK: PLAY_ALL: CALL TEST_SWITCH + + IF SoundBugFix + LD A,CBL.BUFFER_PAGE + OUT (SLOT3),A + ENDIF + ; HL - name CALL READ_FILE ; чтение файла (сначала!) JP C,ERROR @@ -440,7 +445,7 @@ PLAY_WAVE: ERROR2: CALL RESTORE_SCR LD HL,ERROR_MSG2 LD C,#5C - RST #10 + RST ToDSS CALL CLOSE_FILE LD B,DSS_Error.sys.UNKNOWN_FORMAT JP EXIT_ALL.exit @@ -448,14 +453,14 @@ ERROR2: CALL RESTORE_SCR ERROR: CALL RESTORE_SCR LD HL,ERROR_MSG LD C,#5C - RST #10 + RST ToDSS LD B,DSS_Error.sys.FILE_NOT_FOUND JP EXIT_ALL.exit ERROR3: CALL RESTORE_SCR LD HL,ERROR_MSG3 LD C,#5C - RST #10 + RST ToDSS CALL CLOSE_FILE LD B,DSS_Error.sys.UNKNOWN_FORMAT JP EXIT_ALL.exit @@ -464,7 +469,7 @@ RESTORE_SCR: LD C,#50 LD B,0 LD A,#03 - JP #10 ; OPEN_TXT_SCR + JP ToDSS ; OPEN_TXT_SCR NEXT_1: LD A,(#C016) @@ -556,8 +561,12 @@ DATA_1: LD BC,3 LDIR ; COPY LEN of DATA - IF SND_Abug - LD (SND_A),HL ; Adress of data + IF SoundBugFix + XOR A + LD B,L +.loop: DEC HL + LD (HL),A + DJNZ .loop ENDIF IN A,(SLOT3) @@ -575,12 +584,6 @@ DATA_1: LD (NUM_SEC+1),A LD HL,#C000 -; -; ================[ ПОДГОНКА ]================; !TODO - IF WAVPLunknown - LD DE,0 - ENDIF -;================[----------]================; ; CALL READ_FILE_X1 @@ -650,12 +653,6 @@ NO_KEY1: LD (HDD_CNT),A LD HL,0E000h -; -; ================[ ПОДГОНКА ]================; !TODO - IF WAVPLunknown - LD DE,1 - ENDIF -;================[----------]================; ; CALL READ_FILE_X JP NZ,EXIT_ALL @@ -692,12 +689,6 @@ NO_KEY2: LD (HDD_CNT),A LD HL,#C000 -; -; ================[ ПОДГОНКА ]================; !TODO - IF WAVPLunknown - LD DE,1 - ENDIF -;================[----------]================; ; CALL READ_FILE_X JP NZ,EXIT_ALL @@ -895,17 +886,17 @@ HDD_CNT: db 0 PAUSE_KEY: DI - LD BC,#4E - LD A,0 + LD BC,CBL.SYS_PORT + XOR A ; CBL.Covox OUT (C),A ; stop Audio LD A,#80 - LD C,#4F + LD C,CBL.OUT OUT (C),A ; COVOX=80h CALL PAUSE_KEY1 LD A,(CBL_MODE) ; PLAY MORE - LD BC,#4E + LD BC,CBL.SYS_PORT OUT (C),A EI XOR A @@ -1036,16 +1027,6 @@ L_DDX: LD A,H OR #C0 LD H,A -;========================[ BUG FIX ]========================; - IF OutOfPageBugFix - ex de,hl - ld hl,#100 - adc hl,de - ex de,hl - jr nc,1F - ld hl,#C02C -1: - ENDIF ;===========================================================; LD (SND_A),HL @@ -1231,7 +1212,7 @@ SET_PAL_1: PALS_N+2: LD DE,0 LD C,#A4 LD A,0 - RST 8h ; set Pal + RST ToBIOS ; set Pal EI RET @@ -1285,7 +1266,7 @@ LINE_COMP: READ_FILE: ; HL - name, читать в адрес #C000 LD A,1 LD C,#11 - RST #10 + RST ToDSS RET C ; ошибка, если нет файла LD (FILE_HANDLE),A @@ -1295,7 +1276,7 @@ READ_FILE: ; HL - name, LD DE,#100 ; читать заголовок ; LD DE,200h ; читать заголовок LD C,#13 - RST #10 + RST ToDSS RET C ; ошибка при чтении ; длина считанных данных в DE RET ; ошибка при закрытии или Ok @@ -1305,13 +1286,13 @@ READ_MORE: ; LD DE,#1000 ; LD C,#13 LD A,(FILE_HANDLE) - RST #10 + RST ToDSS ; JR CLOSE_FILE CLOSE_FILE: LD A,(FILE_HANDLE) LD C,#12 - RST #10 + RST ToDSS RET ;******************************************* @@ -1321,7 +1302,7 @@ READ_FILE_XD1: LD DE,#1F00 ; читать дальше LD C,#13 LD A,(FILE_HANDLE) - RST #10 + RST ToDSS RET READ_FILE_XD: @@ -1330,7 +1311,7 @@ READ_FILE_XD: LD DE,#2000 ; читать дальше LD C,#13 LD A,(FILE_HANDLE) - RST #10 + RST ToDSS POP HL ADD HL,DE @@ -1444,7 +1425,7 @@ CONT_1: NUM_SEC: LD B,16 ; считать 16 секторов LD C,#48 - RST #8 ; CALL BIOS !!! READ_NEXT + RST ToBIOS ; CALL BIOS !!! READ_NEXT ENDIF ;================[----------]================; ; From 02db2c9d500251aab5b7c06b71518e93cb874544 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Wed, 12 Jun 2024 01:39:20 +1000 Subject: [PATCH 6/8] ... --- WAVPLAY.ASM | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index f41172d..bda6da3 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -285,6 +285,11 @@ FACE_OK: LD (SAV_SP),SP + + IF SoundBugFix + IN A,(SLOT3) + LD (SAV_PAGE3),A + ENDIF PLAY_ALL: CALL TEST_SWITCH @@ -561,16 +566,16 @@ DATA_1: LD BC,3 LDIR ; COPY LEN of DATA - IF SoundBugFix - XOR A - LD B,L -.loop: DEC HL - LD (HL),A - DJNZ .loop - ENDIF - - IN A,(SLOT3) - LD (SAV_PAGE3),A + IF SoundBugFix + XOR A + LD B,L +.loop: DEC HL + LD (HL),A + DJNZ .loop + ELSE + IN A,(SLOT3) + LD (SAV_PAGE3),A + ENDIF ;LD A,CBL.BUFFER_PAGE ; спец-страница! ;LD (PLAY_PAGE),A @@ -588,15 +593,18 @@ DATA_1: CALL READ_FILE_X1 LD A,0 - LD BC,#4E + LD BC,CBL.SYS_PORT OUT (C),A - LD BC,#4F + LD BC,CBL.OUT LD A,#80 FILL_L0: OUT (C),A ; забить во все 80h DJNZ FILL_L0 + + + LD HL,0A000h ; CLEAR PAGE_IM2 LD DE,0A001h LD BC,100h @@ -613,7 +621,7 @@ FILL_L0: IM 2 LD A,(CBL_MODE) - LD BC,#4E + LD BC,CBL.SYS_PORT OUT (C),A EI @@ -947,10 +955,10 @@ EXIT_ALL: IM 1 LD A,0 - LD BC,#4E + LD BC,CBL.SYS_PORT OUT (C),A - LD BC,#4F + LD BC,CBL.OUT LD A,#80 .loop: OUT (C),A ; забить во все 80h @@ -1133,7 +1141,6 @@ COLOR_+1: LD A,#FF ;************************************* - FRQ_ON: CALL OFF_IND LD A,(FRQ_) @@ -1277,7 +1284,7 @@ READ_FILE: ; HL - name, ; LD DE,200h ; читать заголовок LD C,#13 RST ToDSS - RET C ; ошибка при чтении + ;RET C ; ошибка при чтении ; длина считанных данных в DE RET ; ошибка при закрытии или Ok From 02c469a77ce722df924e821f0b13b164986874bb Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 28 Feb 2025 02:28:01 +1000 Subject: [PATCH 7/8] =?UTF-8?q?=D0=BD=D0=B5=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- WAVPLAY.ASM | 227 +++++++++++++++++++++++++++++------------------- visio2.asm | 130 +++++++++++++++++++++++++++ 3 files changed, 270 insertions(+), 89 deletions(-) create mode 100644 visio2.asm diff --git a/Shared_Includes b/Shared_Includes index 378f3fd..2b1e30c 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 378f3fdd49601390b3aacfe51e45c6fceba25022 +Subproject commit 2b1e30c6108f0a5c271f84558e1e5f804a6d623a diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index bda6da3..25ad3ae 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -2,6 +2,8 @@ DEFINE WAVPLunknown 1 DEFINE SoundBugFix 1 + DEFINE FULL_VERSION "2.01" + SH_HDD_X EQU 223 ; положение индикатора HDD гор. SH_HDD_Y EQU 90 ; положение индикатора HDD верт. @@ -432,7 +434,7 @@ PLAY_WAVE: LD A,#80 LD (D_FILL),A ; FILL by 80h LD A,0 - LD (ADD_PAR),A + LD (VISIO.ADD_PAR),A LD A,(#C022) LD (FLAG16),A @@ -444,7 +446,7 @@ PLAY_WAVE: LD A,0 LD (D_FILL),A ; FILL by 0 LD A,#80 - LD (ADD_PAR),A + LD (VISIO.ADD_PAR),A JR Z,NEXT_1 ;JR ERROR2 ; format error ERROR2: CALL RESTORE_SCR @@ -493,7 +495,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 @@ -652,15 +654,14 @@ LOOP: CALL Z,HELP_OUT NO_KEY1: - LD A,(SND_A+1) - CP 0DFh + CP #DF JR NC,LOOP LD A,1 LD (HDD_CNT),A - LD HL,0E000h + LD HL,#E000 ; CALL READ_FILE_X JP NZ,EXIT_ALL @@ -690,7 +691,7 @@ LOOP2: NO_KEY2: LD A,(SND_A+1) - CP 0DFh + CP #DF JR C,LOOP2 LD A,1 @@ -1005,7 +1006,6 @@ PLAY: DI PUSH DE LD A,CBL.BUFFER_PAGE -;PLAY_PAGE EQU $-1 ; !FIXIT зачем, если можно напрямую было прописать? OUT (SLOT3),A OUT (SLOT0),A @@ -1059,85 +1059,137 @@ NO_SND: RETI ;*********************************** +/* +VISIO: IN A,(PORT_Y) + PUSH AF + ; + ; LD A,(.ADD_PAR) + ; OR A + ; LD A,1 ; x2 pixels + ; JR NZ,.set_pix + ; LD A,2 ; x2 pixels +.set_pix: ; LD (.pixels),A + ; LD B,A + ; + LD HL,(SND_A) + LD (.ADDRESS),HL + ; OR A + ; JR Z,.no_add -VISIO: IN A,(PORT_Y) - PUSH AF +.no_add: LD A,H + CALL .PUT_DOT + ; выход +.exit: POP AF + OUT (PORT_Y),A + RET - 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) +; ВХОД: A - старший байт адреса SND_A +; B = (количество пикселов)/2 +.PUT_DOT: ADD A,A + ;DJNZ .PUT_DOT + AND #7F ; !HARDCODE длина окна - 128 байтов + LD L,A + LD H,#B0 ; !HARDCODE буффер + LD BC,7 ; !HARDCODE смещение от начала рамки + ADD HL,BC + ; + LD A,(SND_A) + RLCA + LD C,A + ADD HL,BC + ; + CALL .SET_Y_COLOR + ; + LD A,#50 + OUT (SLOT3),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 A,(HL) ; old + LD (.OLD_),A + LD A,(.NEW_) + LD (HL),A + ; переключаем в HL адрес с буфера на экран + LD A,H + ADD A,#10 + LD H,A + ; + LD A,(SND_A) + RLCA + JR NC,.no_dec_hl + INC HL +.no_dec_hl: ; + ; стереть по старой координате + ; LD A,(.pixels) + ; LD B,A + ; LD C,A + ; +.OLD_+1: LD A,0 + OUT (PORT_Y),A ; old + ; стереть +.clear+1: LD A,0 ; clear +.loop_clear: LD (HL),A + INC L + LD (HL),A ; стереть + ; INC L + ; DJNZ .loop_clear + ; DEC L + ; нарисовать по новой координате + ; LD B,C + ; DEC L + ; DEC L + ; DEC L +.loop_draw: ; +.NEW_+1: LD A,0 + OUT (PORT_Y),A ; new +.COLOR_+1: LD A,#FF + ; нарисовать + LD (HL),A + DEC L + LD (HL),A + ; INC L + ; + ; LD A,(.ADDRESS) + ; ADD A,8 + ; LD (.ADDRESS),A + ; LD D,B + ; CALL .SET_Y_COLOR + ; ; + ; LD B,D + ; DJNZ .loop_draw + ; +.no_draw: LD A,CBL.BUFFER_PAGE + OUT (SLOT3),A + RET + ; +.SET_Y_COLOR: ; +.ADDRESS+1: LD BC,0 + 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 ; !HARDCODE Vertical Shift + LD (.NEW_),A + ; + LD B,A + LD A,(MAX_) + CP B + RET NC + LD A,B + LD (MAX_),A + RET + ; +; .pixels: DB 1 ; 1 = 2, 2 = 4, 3 = 6 +*/ - 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,CBL.BUFFER_PAGE - OUT (SLOT3),A - - POP AF - OUT (PORT_Y),A - RET + include 'visio2.asm' ;************************************* @@ -1359,7 +1411,6 @@ READ_FILE_X: ; HL - ; READ_FILE_X1: ; HL - куда читать - LD A,(DOS_FLAG1) AND A JP NZ,READ_FILE_XD1 @@ -1543,7 +1594,7 @@ FILE_HANDLE: db 0 CBL_MODE: db 0 -FACE_FILE: db "WAV_PL.BMP",0 +;FACE_FILE: db "WAV_PL.BMP",0 LINES: db "RIFF","WAVEfmt " LINES_DATA: db "data" @@ -1552,13 +1603,13 @@ ERROR_MSG: db 13,10,"File not found." db 13,10,"USE: wavplay.exe filename.ext",13,10,0 ERROR_MSG2: - db 13,10,"File format not recognized.",13,10,0 + db 13,10,"The file format is not recognized.",13,10,0 ERROR_MSG3: - db 13,10,"Not standart data rate",13,10,0 + db 13,10,"Non-standart data rate.",13,10,0 START_MSG: - db 13,10,"COVOX-Blaster WAV-Player by Ivan Mak" - db 13,10,"(c) Sprinter Team. 2023.",13,10,0 + db 13,10,"COVOX-Blaster WAV-Player v",FULL_VERSION," by Ivan Mak" + db 13,10,"(c) Sprinter Team. 2024.",13,10,0 PLAY_LIST_ID: db "PLAYLIST" diff --git a/visio2.asm b/visio2.asm new file mode 100644 index 0000000..fd32b2b --- /dev/null +++ b/visio2.asm @@ -0,0 +1,130 @@ +;*********************************** + +VISIO: IN A,(PORT_Y) + PUSH AF + ; + LD A,(.ADD_PAR) + OR A + LD A,1 ; lines + JR NZ,.set_lines + INC A ; lines +.set_lines: LD (.lines),A + LD B,A + + LD HL,(SND_A) + LD (.ADDRESS),HL + ; OR A + ; JR Z,.no_add + +.no_add: LD A,H + CALL .PUT_DOT + ; выход +.exit: POP AF + OUT (PORT_Y),A + RET + + +; ВХОД: A - старший байт адреса SND_A +; B = (количество полосок)/2 +.PUT_DOT: ADD A,A + ; + AND #7F ; !HARDCODE длина окна - 128 байтов + LD L,A + LD H,#B0 ; !HARDCODE буффер + LD BC,7 ; !HARDCODE смещение от начала рамки + ADD HL,BC + ; + LD A,(SND_A) + RLCA + LD C,A + ADD HL,BC + ; + CALL .SET_Y_COLOR + ; + LD A,#50 + OUT (SLOT3),A + + LD A,(HL) ; old + LD (.OLD_),A + LD A,(.NEW_) + LD (HL),A + ; переключаем в HL адрес с буфера на экран + LD A,H + ADD A,#10 + LD H,A + ; + LD A,(SND_A) + RLCA + JR NC,.no_dec_hl + INC HL +.no_dec_hl: ; + ; стереть по старой координате + ; LD A,(.lines) + ; LD B,A + ; LD C,A + ; +.OLD_+1: LD A,0 + OUT (PORT_Y),A ; old + ; стереть +.clear+1: LD A,0 ; clear +.loop_clear: LD (HL),A + INC L + LD (HL),A ; стереть + ; INC L + ; DJNZ .loop_clear + ; DEC L + ; нарисовать по новой координате + ; LD B,C + ; DEC L + ; DEC L + ; DEC L +.loop_draw: ; +.NEW_+1: LD A,0 + OUT (PORT_Y),A ; new +.COLOR_+1: LD A,#FF + ; нарисовать + LD (HL),A + DEC L + LD (HL),A + ; INC L + ; + ; LD A,(.ADDRESS) + ; ADD A,8 + ; LD (.ADDRESS),A + ; LD D,B + ; CALL .SET_Y_COLOR + ; ; + ; LD B,D + ; DJNZ .loop_draw + ; +.no_draw: LD A,CBL.BUFFER_PAGE + OUT (SLOT3),A + RET + ; + ; +.SET_Y_COLOR: ; +.ADDRESS+1: LD BC,0 + 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 ; !HARDCODE Vertical Shift + LD (.NEW_),A + ; + LD B,A + LD A,(MAX_) + CP B + RET NC + LD A,B + LD (MAX_),A + RET + ; +.lines: DB 1 ; 1 = 1, 2 = 2 \ No newline at end of file From 0c69e84a29b467b524d59d9b764c6c6f245350ad Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 27 Jun 2025 23:16:27 +1000 Subject: [PATCH 8/8] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2=20=D1=81=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BE=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D0=B0.=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=20=D1=81=20=D1=88=D1=83=D0=BC=D0=BE=D0=BC=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D1=82=D1=80=D0=B5=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- WAVPLAY.ASM | 262 ++++++++++++++++++++++++------------------------ visio2.asm | 111 +++++++++++++++++--- 3 files changed, 229 insertions(+), 146 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 2b1e30c..a0e68ce 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 2b1e30c6108f0a5c271f84558e1e5f804a6d623a +Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1 diff --git a/WAVPLAY.ASM b/WAVPLAY.ASM index 25ad3ae..6715aab 100644 --- a/WAVPLAY.ASM +++ b/WAVPLAY.ASM @@ -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 - 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) - - INC DE - LD BC,P_C_LOW - OUT (C),E - LD BC,P_C_HIG - OUT (C),D - + LD BC,IDE.Read.Sector + IN A,(C) + INC A + INC B + OUT (C),A + JR NZ,.NO_NEXT + ; + DEC B + INC C + IN E,(C) ;IDE.Read.CylinderLow + INC C + IN D,(C) ;IDE.Read.CylinderHigh + ; + INC DE + 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 - OUT (C),A ; stop Audio - LD A,#80 - LD C,CBL.OUT - OUT (C),A ; COVOX=80h + LD BC,SP_SND.CBL.SYS_PORT + XOR A ; SP_SND.CBL.Covox + OUT (C),A ; stop Audio + LD A,#80 + 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 +EXIT_ALL: IM 1 + XOR A + LD BC,SP_SND.CBL.SYS_PORT + OUT (C),A + ; + 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 + JP CLOSE_FILE + ; +.norm_exit: LD B,0 +.exit: LD C,Dss.Exit + RST ToDSS + JR .exit - LD A,0 - LD BC,CBL.SYS_PORT - OUT (C),A - - LD BC,CBL.OUT - LD A,#80 - -.loop: OUT (C),A ; забить во все 80h - DJNZ .loop - - 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 -.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,11 +1000,11 @@ PLAY: DI PUSH DE - LD A,CBL.BUFFER_PAGE + LD A,SP_SND.CBL.BUFFER_PAGE OUT (SLOT3),A OUT (SLOT0),A - CALL VISIO + CALL VISIO ;**************** @@ -1293,20 +1288,20 @@ no_diap: RET ;******************************************** - -EXTR_LINE: ; выделение строки из HL и сохранение ее в DE - LD B,0 -EXTR_LOOP: - LD A,(HL) - CP 13 - RET Z - LD (DE),A - INC HL - INC DE - INC B - JR NZ,EXTR_LOOP - SCF - RET +; выделение строки из 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,.LOOP + ;SCF + RET ;******************************************** @@ -1322,32 +1317,37 @@ LINE_COMP: ;******************************************** -READ_FILE: ; HL - name, читать в адрес #C000 - LD A,1 - LD C,#11 - RST ToDSS - RET C ; ошибка, если нет файла +READ_FILE: ; HL - name, читать в адрес #C000 + LD A,1 + LD C,#11 + RST ToDSS + RET C ; ошибка, если нет файла - LD (FILE_HANDLE),A - LD A,(FILE_HANDLE) + LD (FILE_HANDLE),A + LD A,(FILE_HANDLE) - LD HL,#C000 - LD DE,#100 ; читать заголовок -; LD DE,200h ; читать заголовок - LD C,#13 - RST ToDSS - ;RET C ; ошибка при чтении - ; длина считанных данных в DE - RET ; ошибка при закрытии или Ok + LD HL,#C000 + LD DE,#100 ; читать заголовок + LD C,#13 + RST ToDSS + PUSH AF + LD HL,#C000 + ADD HL,DE + LD (HL),0 + POP AF + RET ; ошибка при закрытии или Ok READ_MORE: ; читать дальше для playlist 4kb - - LD DE,#1000 ; - LD C,#13 - LD A,(FILE_HANDLE) - RST ToDSS -; JR CLOSE_FILE - + PUSH HL + LD DE,#1000 ; + LD C,#13 + LD A,(FILE_HANDLE) + RST ToDSS + ; + 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 @@ -1446,20 +1446,20 @@ READ_FILE_X1: ; HL - CONT_1: NUM_SEC: - LD A,16 ; считать 16 секторов + 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" diff --git a/visio2.asm b/visio2.asm index fd32b2b..86cb991 100644 --- a/visio2.asm +++ b/visio2.asm @@ -1,5 +1,5 @@ ;*********************************** - + /* ; NEW VISIO: IN A,(PORT_Y) PUSH AF ; @@ -10,7 +10,7 @@ VISIO: IN A,(PORT_Y) INC A ; lines .set_lines: LD (.lines),A LD B,A - + LD HL,(SND_A) LD (.ADDRESS),HL ; OR A @@ -19,8 +19,8 @@ VISIO: IN A,(PORT_Y) .no_add: LD A,H CALL .PUT_DOT ; выход -.exit: POP AF - OUT (PORT_Y),A +.exit: POP AF + OUT (PORT_Y),A RET @@ -63,10 +63,10 @@ VISIO: IN A,(PORT_Y) ; LD B,A ; LD C,A ; -.OLD_+1: LD A,0 + .OLD_+1 : LD A,0 OUT (PORT_Y),A ; old ; стереть -.clear+1: LD A,0 ; clear + .clear+1 : LD A,0 ; clear .loop_clear: LD (HL),A INC L LD (HL),A ; стереть @@ -79,9 +79,9 @@ VISIO: IN A,(PORT_Y) ; DEC L ; DEC L .loop_draw: ; -.NEW_+1: LD A,0 + .NEW_+1 : LD A,0 OUT (PORT_Y),A ; new -.COLOR_+1: LD A,#FF + .COLOR_+1 : LD A,#FF ; нарисовать LD (HL),A DEC L @@ -97,13 +97,13 @@ VISIO: IN A,(PORT_Y) ; LD B,D ; DJNZ .loop_draw ; -.no_draw: LD A,CBL.BUFFER_PAGE - OUT (SLOT3),A +.no_draw: LD A,CBL.BUFFER_PAGE + OUT (SLOT3),A RET ; ; .SET_Y_COLOR: ; -.ADDRESS+1: LD BC,0 + .ADDRESS+1 : LD BC,0 LD A,(BC) RRA CPL @@ -112,8 +112,8 @@ VISIO: IN A,(PORT_Y) LD (.COLOR_),A INC BC LD A,(BC) ; new -.ADD_PAR+1: ADD A,0 ; parameter for 8/16 bit - RRA + .ADD_PAR+1 : ADD A,0 ; parameter for 8/16 bit + RRA RRA AND #3F ADD A,#40 ; !HARDCODE Vertical Shift @@ -127,4 +127,87 @@ VISIO: IN A,(PORT_Y) LD (MAX_),A RET ; -.lines: DB 1 ; 1 = 1, 2 = 2 \ No newline at end of file +.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