Browse Source

Sound devices in Device Summary

pull/134/head
b1ackmai1er 6 years ago
parent
commit
989ab9bf05
  1. 74
      Source/HBIOS/hbios.asm
  2. 6
      Source/HBIOS/hbios.inc
  3. 4
      Source/HBIOS/spk.asm
  4. 8
      Source/HBIOS/util.asm

74
Source/HBIOS/hbios.asm

@ -3541,10 +3541,15 @@ PRTSUM:
LD C,BF_SYSGET_DIOCNT ; DISK DRIVES
LD HL,PS_DISK
CALL PRT_ALLD
;
LD C,BF_SYSGET_VDACNT ; VIDEO DEVICES
LD HL,PS_VIDEO
CALL PRT_ALLD
LD C,BF_SYSGET_SNDCNT ; SOUND DEVICES
LD HL,PS_SOUND
CALL PRT_ALLD
;
RET
;
PRT_ALLD:
@ -3887,6 +3892,56 @@ PS_PRTVC:
CALL PRTDECB
RET
;
; PRINT SOUND CONFIG
;
PS_SOUND:
PUSH BC
; UNIT COLUMN
PRTS("Sound $")
LD A,C ; MOVE UNIT NUM TO A
CALL PRTDECB ; PRINT IT
CP 10 ; CHECK FOR MULTIPLE DIGITS
CALL C,PC_SPACE ; EXTRA SPACE IF NEEDED
PRTS(" $") ; PAD TO NEXT COLUMN
; DEVICE COLUMN
PUSH BC ;
LD E,C
XOR A
LD DE,PS_SDSND ; POINT TO DEVICE TYPE NAME TABLE
CALL PRTIDXDEA ; PRINT DEVICE NMEMONIC PADDED TO FIELD WIDTH
LD A,C ; MOVE UNIT NUM TO A
CALL PRTDECB ; PRINT IT
CALL PC_COLON
CP 10 ; CHECK FOR MULTIPLE DIGITS
CALL C,PC_SPACE ; EXTRA SPACE IF NEEDED
LD A,(PRTIDXCNT)
SUB 9+1
CPL
CALL PS_PAD
POP BC
; DEVICE TYPE
;
LD B,BF_SNDQUERY ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C
LD E,BF_SNDQ_DEV
RST 08
LD A,B
DEC A
LD DE,PS_SDSN76489
CALL PRTIDXDEA
LD A,(PRTIDXCNT)
SUB 18+1
CPL
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
;
CALL NEWLINE
;
POP BC
RET
;
; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE
;
PS_PRTDEV:
@ -3895,6 +3950,7 @@ PS_PRTDEV:
RRCA
RRCA
RRCA
PS_PRTDEV1:
RLCA ; X2 FOR WORD OFFSET IN STRING TABLE
CALL ADDHLA
LD A,(HL)
@ -3916,10 +3972,9 @@ PS_PRTNUL:
LD HL,PS_STRNUL
; FALL THRU TO PS_PRT
;
;
; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C
;
PS_PRT:
; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C
LD C,0 ; INIT CHAR COUNT
PS_PRT1:
LD A,(HL) ; GET CHAR
@ -3930,10 +3985,9 @@ PS_PRT1:
INC C ; BUMP COUNTER
JR PS_PRT1 ; AND LOOP
;
;
; PAD N SPACES SPECIFIED IN A
;
PS_PAD:
; PAD N SPACES SPECIFIED IN A
LD B,A
LD A,' '
PS_PAD1:
@ -4042,6 +4096,16 @@ PS_VDVGA .TEXT "VGA$"
;
PS_VTCRT .TEXT "CRT$"
;
; SOUND DEVICE STRINGS
;
PS_SDSND .TEXT "SND$"
;
; SOUND TYPE STRINGS
;
PS_SDSN76489 .TEXT "SN76489$"
PS_SDAY38910 .TEXT "AY-3-8910$"
PS_SDBITMODE .TEXT "BITMODE$"
;
; 0 1 2 3 4 5 6 7
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789
PS_STRHDR .TEXT "Unit Device Type Capacity/Mode\r\n"

6
Source/HBIOS/hbios.inc

@ -172,6 +172,12 @@ VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563
VDADEV_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445
;
; SOUND DEVICE IDS
;
SNDDEV_SN .EQU $00 ; SN76489
SNDDEV_AY .EQU $10 ; AY-3-8910
SNDDEV_BM .EQU $20 ; BITMODE
;;
;; EMULATION TYPES - moved to std.asm
;;

4
Source/HBIOS/spk.asm

@ -206,7 +206,7 @@ SP_PLAY:
;
SP_BEEPER:
PUSH IX
DI ; Disable the interrupt for the duration of a 'beep'.
HB_DI ; Disable the interrupt for the duration of a 'beep'.
LD A,L ; Save L temporarily.
SRL L ; Each '1' in the L register is to count 4 T states, but take INT (L/4) and count 16 T states instead.
SRL L
@ -259,7 +259,7 @@ BE_AGAIN:
INC C ; Add 16 T states as this path is shorter.
JP (IX) ; Jump back.
BE_END:
EI
HB_EI
POP IX
RET
;

8
Source/HBIOS/util.asm

@ -343,6 +343,8 @@ PRTIDXDEA:
PUSH BC
LD C,A ; INDEX COUNT
OR A
LD A,0
LD (PRTIDXCNT),A ; RESET CHARACTER COUNT
PRTIDXDEA1:
JR Z,PRTIDXDEA3
PRTIDXDEA2:
@ -357,6 +359,9 @@ PRTIDXDEA3:
; CALL WRITESTR ; FALL THROUGH TO WRITESTR
; RET
;
PRTIDXCNT:
.DB 0 ; CHARACTER COUNT
;
; OUTPUT A '$' TERMINATED STRING AT DE
;
WRITESTR:
@ -366,6 +371,9 @@ WRITESTR1:
CP '$' ; TEST FOR STRING TERMINATOR
JP Z,WRITESTR2
CALL COUT
LD A,(PRTIDXCNT)
INC A
LD (PRTIDXCNT),A
INC DE
JP WRITESTR1
WRITESTR2:

Loading…
Cancel
Save