mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
@@ -26,6 +26,7 @@
|
||||
; 2020-04-29 [WBW] Updated for larger DPH (16 -> 20 bytes)
|
||||
; 2020-05-06 [WBW] Add patch level to version compare
|
||||
; 2020-05-10 [WBW] Set media change flag in XDPH for CP/M 3
|
||||
; 2020-05-12 [WBW] Back out media change flag
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -778,10 +779,10 @@ instc2:
|
||||
inc hl ; bump to slice field of DPH field
|
||||
ld a,(de) ; get slice from mapwrk
|
||||
ld (hl),a ; put slice into DPH field
|
||||
ld a,11 ; media byte is 11 bytes ahead
|
||||
call addhl ; bump HL to media byte adr
|
||||
or $FF ; use $FF to signify media change
|
||||
ld (hl),a ; set media flag byte
|
||||
; ld a,11 ; media byte is 11 bytes ahead
|
||||
; call addhl ; bump HL to media byte adr
|
||||
; or $FF ; use $FF to signify media change
|
||||
; ld (hl),a ; set media flag byte
|
||||
inc de ; bump to next mapwrk entry
|
||||
inc de ; ...
|
||||
inc de ; ...
|
||||
@@ -1892,7 +1893,7 @@ stack .equ $ ; stack top
|
||||
; Messages
|
||||
;
|
||||
indent .db " ",0
|
||||
msgban1 .db "ASSIGN v1.3 for RomWBW CP/M, 10-May-2020",0
|
||||
msgban1 .db "ASSIGN v1.4 for RomWBW CP/M, 12-May-2020",0
|
||||
msghb .db " (HBIOS Mode)",0
|
||||
msgub .db " (UBIOS Mode)",0
|
||||
msgban2 .db "Copyright 2020, Wayne Warthen, GNU GPL v3",0
|
||||
|
||||
@@ -95,6 +95,7 @@ Id .EQU 1 ; 5) Insert official identificator
|
||||
|
||||
CALL CLI_ABRT_IF_OPT_FIRST
|
||||
CALL CLI_HAVE_HBIOS_SWITCH
|
||||
CALL CLI_OCTAVE_ADJST
|
||||
JP CONTINUE
|
||||
|
||||
CONTINUE:
|
||||
@@ -581,14 +582,14 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM)
|
||||
;
|
||||
TMP .DB 0 ; work around use of undocumented Z80
|
||||
|
||||
HBIOSOPT: .DB "--HBIOS", 0
|
||||
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
|
||||
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
|
||||
|
||||
MSGBAN .DB "Tune Player for RomWBW v3.1, 25-Apr-2020",0
|
||||
MSGUSE .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3",13,10
|
||||
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
|
||||
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
|
||||
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios]",0
|
||||
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios] [+tn|-tn]",0
|
||||
MSGBIO .DB "Incompatible BIOS or version, "
|
||||
.DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0
|
||||
MSGPLT .DB "Hardware error, system not supported!",0
|
||||
@@ -2003,74 +2004,74 @@ LOUT2 CALL NORMIO
|
||||
RET ; AND DONE
|
||||
|
||||
PLAYVIAHBIOS:
|
||||
; CHANNEL 0
|
||||
LD HL, AYREGS + AmplA
|
||||
LD DE, AYREGS + TonA
|
||||
LD B, 0
|
||||
CALL PLAYNOTE
|
||||
;
|
||||
; CHANNEL 0 (LEFT)
|
||||
;
|
||||
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
|
||||
LD A, (AYREGS + AmplA) ; DEVICE 0
|
||||
ADD A,A ; GET 4-BIT
|
||||
; CHANNEL 1
|
||||
LD HL, AYREGS + AmplB
|
||||
LD DE, AYREGS + TonB
|
||||
LD B, 1
|
||||
CALL PLAYNOTE
|
||||
|
||||
; CHANNEL 2
|
||||
LD HL, AYREGS + AmplC
|
||||
LD DE, AYREGS + TonC
|
||||
LD B, 2
|
||||
JP PLAYNOTE
|
||||
|
||||
PLAYNOTE:
|
||||
PUSH BC ; CHANNEL IN B
|
||||
PUSH DE ; PERIOD ADDR IN DE
|
||||
|
||||
LD A, (HL)
|
||||
ADD A,A ; GET 4-BIT
|
||||
ADD A,A ; VOLUME 0-15
|
||||
ADD A,A ; AND CONVERT
|
||||
ADD A,A ; TO HBIOS
|
||||
ADD A,A ; TO HBIOS
|
||||
LD L, A ; RANGE 0-255
|
||||
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
|
||||
RST 08
|
||||
;
|
||||
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
|
||||
LD HL, (AYREGS+TonA) ; DEVICE 0
|
||||
POP HL ; RESTORE PERIOD ADDR
|
||||
LD A, (HL) ; DEVICE 0
|
||||
INC HL
|
||||
LD H, (HL)
|
||||
LD L, A
|
||||
LD A, H ; GET 12-BIT ONE PERIOD
|
||||
AND $0F ; MASK OFF HIGH
|
||||
LD H, A ; NIBBLE
|
||||
RST 08
|
||||
;
|
||||
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
|
||||
LD D, 0 ; DEVICE 0
|
||||
RST 08 ; CHANNEL 0
|
||||
;
|
||||
; CHANNEL 1 (MIDDLE)
|
||||
;
|
||||
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
|
||||
LD A, (AYREGS + AmplB) ; DEVICE 0
|
||||
ADD A,A ; GET 4-BIT
|
||||
ADD A,A ; VOLUME 0-15
|
||||
ADD A,A ; AND CONVERT
|
||||
ADD A,A ; TO HBIOS
|
||||
LD L, A ; RANGE 0-255
|
||||
RST 08
|
||||
;
|
||||
LD H, A ; NIBBLE
|
||||
|
||||
LD A, (OCTAVEADJ)
|
||||
OR A
|
||||
JR Z, PLAYNOTE3 ; NO OCTAVE ADJUSTMENT
|
||||
BIT 7, A
|
||||
JR Z, PLAYNOTE2 ; OCTAVE DOWN ADJUSTMENT
|
||||
|
||||
PLAYNOTE1:
|
||||
ADD HL, HL ; MULTIPLE BY 2 FOR EACH OCTAVE
|
||||
INC A
|
||||
JR NZ, PLAYNOTE1
|
||||
JR PLAYNOTE3
|
||||
|
||||
PLAYNOTE2:
|
||||
SRL H ; DIVIDE BY 2 FOR EACH OCTAVE
|
||||
RR L
|
||||
DEC A
|
||||
JR NZ, PLAYNOTE2
|
||||
|
||||
PLAYNOTE3
|
||||
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
|
||||
LD HL, (AYREGS+TonB) ; DEVICE 0
|
||||
ld A, H ; GET 12-BIT ONE PERIOD
|
||||
AND $0F ; MASK OFF HIGH
|
||||
LD H, A ; NIBBLE
|
||||
RST 08
|
||||
;
|
||||
POP DE ; RESTORE CHANNEL IN D (FROM B)
|
||||
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
|
||||
LD D, 1 ; DEVICE 0
|
||||
RST 08 ; CHANNEL 0
|
||||
;
|
||||
; CHANNEL 2 (RIGHT)
|
||||
;
|
||||
LD BC, (BF_SNDVOL*256)+0 ; SET VOLUME
|
||||
LD A, (AYREGS + AmplC) ; DEVICE 0
|
||||
ADD A,A ; GET 4-BIT
|
||||
ADD A,A ; VOLUME 0-15
|
||||
ADD A,A ; AND CONVERT
|
||||
ADD A,A ; TO HBIOS
|
||||
LD L, A ; RANGE 0-255
|
||||
RST 08
|
||||
;
|
||||
LD BC, (BF_SNDPRD*256)+0 ; SET PERIOD
|
||||
LD HL, (AYREGS+TonC) ; DEVICE 0
|
||||
LD A, H ; GET 12-BIT ONE PERIOD
|
||||
AND $0F ; MASK OFF HIGH
|
||||
LD H, A ; NIBBLE
|
||||
RST 08
|
||||
;
|
||||
LD BC, (BF_SNDPLAY*256)+0 ; PLAY
|
||||
LD D, 2 ; DEVICE 0
|
||||
RST 08 ; CHANNEL 0
|
||||
|
||||
|
||||
RET
|
||||
|
||||
#ENDIF
|
||||
|
||||
#IF ACBBAC
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
|
||||
|
||||
CLI_ABRT_IF_OPT_FIRST:
|
||||
LD A, (FCB+1)
|
||||
CP '-' ; OPTION FIRST OR - MISSING FILENAME?
|
||||
@@ -11,7 +10,7 @@ CLI_HAVE_HBIOS_SWITCH:
|
||||
LD DE, HBIOSOPT
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_HAVE_HBIOS_SWITCH1
|
||||
OR $FF ; MATCHED --HBIOS
|
||||
OR $FF ; MATCHED --HBIOS
|
||||
LD (HBIOSMD), A
|
||||
LD BC,(BF_SYSGET*256)+BF_SND
|
||||
RST 08 ; CHECK WE HAVE
|
||||
@@ -35,4 +34,53 @@ CLI_ABRT_UNSUPPFILTYP:
|
||||
|
||||
CLI_ABRT_UNSUPPFILTYP1:
|
||||
POP AF
|
||||
RET
|
||||
RET
|
||||
|
||||
CLI_OCTAVE_ADJST: ; SEARCH FOR OCTAVE ADJUSTMENT SWITCH (-n or +n)
|
||||
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
|
||||
LD DE, DOWN1
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_OCTAVE_ADJST1
|
||||
|
||||
LD A, -1
|
||||
JR CLI_OCTAVE_ADJST5
|
||||
|
||||
CLI_OCTAVE_ADJST1:
|
||||
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
|
||||
LD DE, DOWN2
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_OCTAVE_ADJST2
|
||||
|
||||
LD A, -2
|
||||
JR CLI_OCTAVE_ADJST5
|
||||
|
||||
CLI_OCTAVE_ADJST2:
|
||||
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
|
||||
LD DE, UP1
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_OCTAVE_ADJST3
|
||||
|
||||
LD A, 1
|
||||
JR CLI_OCTAVE_ADJST5
|
||||
|
||||
CLI_OCTAVE_ADJST3:
|
||||
LD HL, CLIARGS ; TEST FOR --HBIOS ON COMMAND LINE
|
||||
LD DE, UP2
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_OCTAVE_ADJST4
|
||||
|
||||
LD A, 2
|
||||
JR CLI_OCTAVE_ADJST5
|
||||
|
||||
CLI_OCTAVE_ADJST4:
|
||||
LD A, 0
|
||||
|
||||
CLI_OCTAVE_ADJST5:
|
||||
LD (OCTAVEADJ), A
|
||||
RET
|
||||
|
||||
HBIOSOPT: .DB "--HBIOS", 0
|
||||
DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE
|
||||
DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE
|
||||
UP1 .DB "+t1", 0 ; UP AN OCTAVE
|
||||
UP2 .DB "+t2", 0 ; UP TWO OCTAVE
|
||||
|
||||
@@ -1358,6 +1358,8 @@ DSK_MBR0:
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
; SWITCH TO BIOS BANK TO ACCESS DISK BUFFER
|
||||
LD (STKSAV),SP ; SAVE CUR STACK
|
||||
LD SP,XSTACK ; NEW STACK IN HI MEM
|
||||
LD A,(HB_CURBNK) ; GET CUR BANK
|
||||
PUSH AF ; SAVE CUR BANK
|
||||
LD A,(BNKBIOS) ; BIOS BANK
|
||||
@@ -1370,7 +1372,12 @@ DSK_MBR0:
|
||||
LD A,H ; PREV BANK TO A
|
||||
CALL HB_BNKSEL ; SELECT IT
|
||||
POP AF ; ORIGINAL RESULT BACK
|
||||
LD SP,(STKSAV) ; RESTORE ORIGINAL STACK
|
||||
RET
|
||||
|
||||
.FILL 32,0
|
||||
XSTACK .EQU $
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
DSK_MBR1:
|
||||
@@ -1700,6 +1707,7 @@ CCPBUF .DW 0 ; ADDRESS OF CCP BUF IN BIOS BANK
|
||||
MEDID .DB 0 ; TEMP STORAGE FOR MEDIA ID
|
||||
SLICE .DB 0 ; CURRENT SLICE
|
||||
SPS .DW 0 ; SECTORS PER SLICE
|
||||
STKSAV .DW 0 ; TEMP SAVED STACK POINTER
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
BNKBIOS .DB 0 ; BIOS BANK ID
|
||||
|
||||
@@ -191,7 +191,7 @@ dpb$max:
|
||||
db 5 ; bsh: block shift factor
|
||||
db 31 ; blm: block mask
|
||||
db 1 ; exm: extent mask
|
||||
dw 2047 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
|
||||
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
|
||||
dw 1024 - 1 ; drm: dir entries - 1
|
||||
db 11111111b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
@@ -211,7 +211,7 @@ dpb$rom: ; 384K ROM Drive
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 0 ; off: reserved tracks = 16 trks * (16 trks * 16 heads * 16 secs * 512 bytes) = 128k
|
||||
db 2 ; psh: 2 for 512 byte sectors
|
||||
db 3 ; phm: (512 / 128) - 1
|
||||
@@ -226,7 +226,7 @@ dpb$ram: ; 256K RAM Drive
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 0 ; off: reserved tracks = 16 trks * (16 trks * 16 heads * 16 secs * 512 bytes) = 128k
|
||||
db 2 ; psh: 2 for 512 byte sectors
|
||||
db 3 ; phm: (512 / 128) - 1
|
||||
@@ -236,11 +236,11 @@ dpb$rf: ; 4MB RAM Floppy Drive
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 0 ; exm: extent mask
|
||||
dw 2047 ; dsm: total storage in blocks - 1 = (4mb / 2k bls) - 1 = 2047
|
||||
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (4mb / 2k bls) - 1 = 2047
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 8000h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 8040h ; cks: directory check vector size - permanent storage = 8000H
|
||||
dw 0 ; off: reserved tracks = 0 trks
|
||||
db 2 ; psh: 2 for 512 byte sectors
|
||||
db 3 ; phm: (512 / 128) - 1
|
||||
@@ -250,7 +250,7 @@ dpb$hd: ; 8MB Hard Disk Drive w/ 512 dir entries
|
||||
db 5 ; bsh: block shift factor
|
||||
db 31 ; blm: block mask
|
||||
db 1 ; exm: extent mask
|
||||
dw 2047 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
|
||||
dw 2048 - 1 ; dsm: total storage in blocks - 1 = (8mb / 4k bls) - 1 = 2047
|
||||
dw 512 - 1 ; drm: dir entries - 1 = 512 - 1 = 511
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
@@ -264,8 +264,8 @@ dpb$fd720: ; 3.5" DS/DD Floppy Drive (720K)
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 0 ; exm: extent mask
|
||||
dw 350 ; dsm: total storage in blocks - 1 blk = ((720k - 18k off) / 2k bls) - 1 = 350
|
||||
dw 127 ; drm: dir entries - 1 = 128 - 1 = 127
|
||||
dw 351 - 1 ; dsm: total storage in blocks - 1 blk = ((720k - 18k off) / 2k bls) - 1 = 350
|
||||
dw 128 - 1 ; drm: dir entries - 1 = 128 - 1 = 127
|
||||
db 11000000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 32 ; cks: directory check vector size = 128 / 4
|
||||
@@ -278,8 +278,8 @@ dpb_fd144: ; 3.5" DS/HD Floppy Drive (1.44M)
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 0 ; exm: extent mask
|
||||
dw 710 ; dsm: total storage in blocks - 1 blk = ((1,440k - 18k off) / 2k bls) - 1 = 710
|
||||
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
dw 711 - 1 ; dsm: total storage in blocks - 1 blk = ((1,440k - 18k off) / 2k bls) - 1 = 710
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 64 ; cks: directory check vector size = 256 / 4
|
||||
@@ -292,8 +292,8 @@ dpb_fd360: ; 5.25" DS/DD Floppy Drive (360K)
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 1 ; exm: extent mask
|
||||
dw 170 ; dsm: total storage in blocks - 1 blk = ((360k - 18k off) / 2k bls) - 1 = 170
|
||||
dw 127 ; drm: dir entries - 1 = 128 - 1 = 127
|
||||
dw 171 - 1 ; dsm: total storage in blocks - 1 blk = ((360k - 18k off) / 2k bls) - 1 = 170
|
||||
dw 128 - 1 ; drm: dir entries - 1 = 128 - 1 = 127
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 32 ; cks: directory check vector size = 128 / 4
|
||||
@@ -306,8 +306,8 @@ dpb_fd120: ; 5.25" DS/HD Floppy Drive (1.2M)
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 0 ; exm: extent mask
|
||||
dw 591 ; dsm: total storage in blocks - 1 blk = ((1,200k - 15k off) / 2k bls) - 1 = 591
|
||||
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
dw 592 - 1 ; dsm: total storage in blocks - 1 blk = ((1,200k - 15k off) / 2k bls) - 1 = 591
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 64 ; cks: directory check vector size = 256 / 4
|
||||
@@ -320,8 +320,8 @@ dpb_fd111: ; 8" DS/DD Floppy Drive (1.11M)
|
||||
db 4 ; bsh: block shift factor
|
||||
db 15 ; blm: block mask
|
||||
db 0 ; exm: extent mask
|
||||
dw 569 ; dsm: total storage in blocks - 1 blk = ((1,155k - 15k off) / 2k bls) - 1 = 569
|
||||
dw 255 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
dw 570 - 1 ; dsm: total storage in blocks - 1 blk = ((1,155k - 15k off) / 2k bls) - 1 = 569
|
||||
dw 256 - 1 ; drm: dir entries - 1 = 256 - 1 = 255
|
||||
db 11110000b ; al0: dir blk bit map, first byte
|
||||
db 00000000b ; al1: dir blk bit map, second byte
|
||||
dw 64 ; cks: directory check vector size = 256 / 4
|
||||
@@ -650,6 +650,7 @@ dsk$rw$retry:
|
||||
jr dsk$rw9 ; do the disk I/O
|
||||
|
||||
dsk$rw2:
|
||||
; LBA I/O
|
||||
push de ; save hiword of LBA
|
||||
push hl ; save loword of LBA
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ ALTBNKSM = Y
|
||||
ALTBNKSN = Y
|
||||
ALTBNKSO = Y
|
||||
ALTBNKSP = Y
|
||||
NDIRRECA = 02
|
||||
NDIRRECA = 08
|
||||
NDIRRECB = 00
|
||||
NDIRRECC = 00
|
||||
NDIRRECD = 00
|
||||
@@ -73,7 +73,7 @@ NDIRRECM = 00
|
||||
NDIRRECN = 00
|
||||
NDIRRECO = 00
|
||||
NDIRRECP = 00
|
||||
NDTARECA = 02
|
||||
NDTARECA = 10
|
||||
NDTARECB = 00
|
||||
NDTARECC = 00
|
||||
NDTARECD = 00
|
||||
|
||||
@@ -27,9 +27,12 @@
|
||||
;
|
||||
#INCLUDE "../ver.inc"
|
||||
;
|
||||
; BELOW, SYS_END MUST BE SET TO THE SIZE OF CPMLDR.BIN + SYS_LOC. IF
|
||||
; THE SIZE OF CPMLDR.BIN CHANGES, SYS_END MUST BE UPDATED!!!
|
||||
;
|
||||
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
|
||||
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
|
||||
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
|
||||
SYS_END .EQU $1580 + SYS_LOC ; ENDING ADDRESS OF SYSTEM IMAGE
|
||||
;
|
||||
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
|
||||
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
|
||||
|
||||
@@ -949,6 +949,24 @@ accurately pace the sound file output. If no system timer is
|
||||
available, a delay loop is calculated instead. The delay loop will not
|
||||
be as accurate as the system timer.
|
||||
|
||||
There are two modes of operations. A direct hardware interface for the
|
||||
AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting
|
||||
the SN76489 chip.
|
||||
|
||||
By default the application will attempt to interface directly to the sound
|
||||
chip. The optional argument `--hbios` supplied after the filename, will
|
||||
enable the application to use the HBIOS sound driver.
|
||||
|
||||
The HBIOS mode also support other switch as desribed below.
|
||||
|
||||
| Switch | Description |
|
||||
| ----------- | ------------------------------------------------------ |
|
||||
| `--hbios` | Utilise HBIOS' sound driver |
|
||||
| `+t1` | Play tune an octave higher |
|
||||
| `+t2` | Play tune two octaves higher |
|
||||
| `-t1` | Play tune an octave lower |
|
||||
| `-t2` | Play tune two octaves lower |
|
||||
|
||||
All RomWBW operating system boot disks include a selection of sound
|
||||
files in user area 3.
|
||||
|
||||
@@ -960,4 +978,4 @@ software was adapted and embedded from pre-existing sources. The YM
|
||||
player code is from MYMPLAY 0.4 by Lieves!Tuore and the PT player code
|
||||
is (c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>.
|
||||
|
||||
The source code is provided in the RomWBW distribution.
|
||||
The source code is provided in the RomWBW distribution.
|
||||
|
||||
@@ -1392,20 +1392,38 @@ supplied is beyond driver capabilities, register A will be set to $FF.
|
||||
| _Entry Parameters_
|
||||
| B: 0x53
|
||||
| C: Audio Device Unit ID
|
||||
| L: Note (0 to 255 quarter notes)
|
||||
| HL: Value of note to play
|
||||
|
||||
| _Returned Values_
|
||||
| A: Status (0=OK, else error)
|
||||
|
||||
This function sets the sound chip period parameter according to
|
||||
standardized notes.
|
||||
This function sets the sound chip period parameter with steps of quarter
|
||||
of a semitone. The value of 0 (lowest) corresponds to Bb/A# in octave 0.
|
||||
|
||||
The value corresponds to standard musical notes. The value allows
|
||||
for selection of a quarter of a semitone by giving a value between 0
|
||||
and up to the drivers maximum supported value. The lowest note is (0).
|
||||
Increase by steps of 4 to select the next corresponding note.
|
||||
|
||||
For the SN76489 chip, 0 corresponds to note A1# and the value 249 is
|
||||
the maximum supported value, and it corresponds to note C7.
|
||||
Increase by steps of 48 to select the same note in next octave.
|
||||
|
||||
If the driver is able to generate the requested note, a success (0) is
|
||||
returned, otherwise a non-zero error state will be returned.
|
||||
|
||||
The following table shows the mapping of the input value in HL
|
||||
to the corresponding octave and note.
|
||||
|
||||
| Note | Octave 0 | Octave 1 | Octave 2 | Octave 3 | Octave 4 | Octave 5 | Octave 6 |
|
||||
|-------|----------|----------|----------|----------|----------|----------|----------|
|
||||
| Bb/A# | 0 | 48 | 96 | 144 | 192 | 240 | 288 |
|
||||
| B | 4 | 52 | 100 | 148 | 196 | 244 | 292 |
|
||||
| C | 8 | 56 | 104 | 152 | 200 | 248 | 296 |
|
||||
| C#/Db | 12 | 60 | 108 | 156 | 204 | 252 | 300 |
|
||||
| D | 16 | 64 | 112 | 160 | 208 | 256 | 304 |
|
||||
| Eb/D# | 20 | 68 | 116 | 164 | 212 | 260 | 308 |
|
||||
| E | 24 | 72 | 120 | 168 | 216 | 264 | 312 |
|
||||
| F | 28 | 76 | 124 | 172 | 220 | 268 | 316 |
|
||||
| F#/Gb | 32 | 80 | 128 | 176 | 224 | 272 | 320 |
|
||||
| G | 36 | 84 | 132 | 180 | 228 | 276 | 324 |
|
||||
| Ab/G# | 40 | 88 | 136 | 184 | 232 | 280 | 328 |
|
||||
| A | 44 | 92 | 140 | 188 | 236 | 284 | 332 |
|
||||
|
||||
### Function 0x54 -- Sound Play (SNDPLAY)
|
||||
|
||||
|
||||
@@ -72,4 +72,4 @@ AUD_NOTE2:
|
||||
LD H, $FF ; OTHERWISE RETURN -1 PERIOD (ERROR)
|
||||
LD L, $FF
|
||||
RET
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
;
|
||||
;======================================================================
|
||||
;
|
||||
|
||||
#include "cfg_state.inc"
|
||||
|
||||
|
||||
AY_RCSND .EQU 0 ; 0 = EB MODULE, 1=MF MODULE
|
||||
;
|
||||
#IF (AYMODE == AYMODE_SCG)
|
||||
@@ -123,13 +127,46 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE
|
||||
LD DE,(AY_R3CHBP*256)+$00
|
||||
CALL AY_WRTPSG ; R03 = $00 = XXXX0000
|
||||
;
|
||||
CALL LDELAY ; HALF SECOND DELAY
|
||||
;
|
||||
LD E,$00 ; SET VOLUME OFF
|
||||
CALL AY_SETV ; ON ALL CHANNELS
|
||||
|
||||
#IF SYSTIMEN
|
||||
LD A, TICKFREQ / 3 ; SCHEDULE IN 1/3 SECOND TO TURN OFF SOUND
|
||||
LD (AY_TIMTIK), A
|
||||
|
||||
LD HL, (VEC_TICK + 1) ; GET CUR SECONDS VECTOR
|
||||
LD (AY_TIMHOOK), HL ; SAVE IT INTERNALLY
|
||||
LD HL, AY_TIMER ; INSTALL TIMER HOOK HANDLER
|
||||
LD (VEC_TICK + 1), HL
|
||||
|
||||
#ELSE
|
||||
CALL LDELAY ; HALF SECOND DELAY
|
||||
LD E,$00 ; SET VOLUME OFF
|
||||
CALL AY_SETV ; ON ALL CHANNELS
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
XOR A ; SUCCESSFULL INIT
|
||||
RET
|
||||
|
||||
#IF SYSTIMEN
|
||||
AY_TIMER:
|
||||
LD A, (AY_TIMTIK)
|
||||
DEC A
|
||||
LD (AY_TIMTIK), A
|
||||
JR NZ, AY_TIMER1
|
||||
|
||||
LD HL, (AY_TIMHOOK) ; REMOVE US FROM THE TIMER HOOKS LIST
|
||||
LD (VEC_TICK + 1), HL
|
||||
|
||||
LD E,$00 ; SET VOLUME OFF
|
||||
CALL AY_SETV ; ON ALL CHANNELS
|
||||
|
||||
AY_TIMER1:
|
||||
JP 0 ; OVERWRITTEN WITH NEXT HANDLER
|
||||
AY_TIMHOOK: .EQU $ - 2
|
||||
|
||||
AY_TIMTIK .DB 0 ; COUNT DOWN TO FINISH BOOT BEEP
|
||||
|
||||
#ENDIF
|
||||
;
|
||||
;======================================================================
|
||||
; INITIALIZE DEVICE
|
||||
|
||||
30
Source/HBIOS/cfg_state.inc
Normal file
30
Source/HBIOS/cfg_state.inc
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
#IFNDEF CFG_STATE
|
||||
#DEFINE CFG_STATE
|
||||
|
||||
SYSTIMEN .EQU FALSE
|
||||
|
||||
#IF (CTCENABLE & INTMODE == 2 & CTCTIMER)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF (TMSENABLE & INTMODE == 1 & TMSTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF (INTMODE == 1 & PLATFORM == PLT_SBC & HTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF (INTMODE == 2 & CPUFAM == CPU_Z180)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
.ECHO "TIMER INTERRUPT "
|
||||
#IF SYSTIMEN
|
||||
.ECHO "ACTIVE\n"
|
||||
#ELSE
|
||||
.ECHO "NOT ACTIVE\n"
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
@@ -27,9 +27,12 @@
|
||||
;
|
||||
#INCLUDE "../ver.inc"
|
||||
;
|
||||
; BELOW, SYS_END MUST BE SET TO THE SIZE OF CPMLDR.BIN + SYS_LOC. IF
|
||||
; THE SIZE OF CPMLDR.BIN CHANGES, SYS_END MUST BE UPDATED!!!
|
||||
;
|
||||
SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
|
||||
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
|
||||
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
|
||||
SYS_END .EQU $1580 + SYS_LOC ; ENDING ADDRESS OF SYSTEM IMAGE
|
||||
;
|
||||
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
|
||||
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.7"
|
||||
#DEFINE BIOSVER "3.1.1-pre.8"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.7"
|
||||
db "3.1.1-pre.8"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user