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 C,BF_SYSGET_DIOCNT ; DISK DRIVES
LD HL,PS_DISK LD HL,PS_DISK
CALL PRT_ALLD CALL PRT_ALLD
;
LD C,BF_SYSGET_VDACNT ; VIDEO DEVICES LD C,BF_SYSGET_VDACNT ; VIDEO DEVICES
LD HL,PS_VIDEO LD HL,PS_VIDEO
CALL PRT_ALLD CALL PRT_ALLD
LD C,BF_SYSGET_SNDCNT ; SOUND DEVICES
LD HL,PS_SOUND
CALL PRT_ALLD
;
RET RET
; ;
PRT_ALLD: PRT_ALLD:
@ -3887,6 +3892,56 @@ PS_PRTVC:
CALL PRTDECB CALL PRTDECB
RET 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 ; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE
; ;
PS_PRTDEV: PS_PRTDEV:
@ -3895,6 +3950,7 @@ PS_PRTDEV:
RRCA RRCA
RRCA RRCA
RRCA RRCA
PS_PRTDEV1:
RLCA ; X2 FOR WORD OFFSET IN STRING TABLE RLCA ; X2 FOR WORD OFFSET IN STRING TABLE
CALL ADDHLA CALL ADDHLA
LD A,(HL) LD A,(HL)
@ -3916,10 +3972,9 @@ PS_PRTNUL:
LD HL,PS_STRNUL LD HL,PS_STRNUL
; FALL THRU TO PS_PRT ; FALL THRU TO PS_PRT
; ;
;
; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C
; ;
PS_PRT: PS_PRT:
; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C
LD C,0 ; INIT CHAR COUNT LD C,0 ; INIT CHAR COUNT
PS_PRT1: PS_PRT1:
LD A,(HL) ; GET CHAR LD A,(HL) ; GET CHAR
@ -3930,10 +3985,9 @@ PS_PRT1:
INC C ; BUMP COUNTER INC C ; BUMP COUNTER
JR PS_PRT1 ; AND LOOP JR PS_PRT1 ; AND LOOP
; ;
;
; PAD N SPACES SPECIFIED IN A
; ;
PS_PAD: PS_PAD:
; PAD N SPACES SPECIFIED IN A
LD B,A LD B,A
LD A,' ' LD A,' '
PS_PAD1: PS_PAD1:
@ -4042,6 +4096,16 @@ PS_VDVGA .TEXT "VGA$"
; ;
PS_VTCRT .TEXT "CRT$" 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 ; 0 1 2 3 4 5 6 7
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789 ; 01234567890123456789012345678901234567890123456789012345678901234567890123456789
PS_STRHDR .TEXT "Unit Device Type Capacity/Mode\r\n" 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_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918 VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445 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 ;; EMULATION TYPES - moved to std.asm
;; ;;

4
Source/HBIOS/spk.asm

@ -206,7 +206,7 @@ SP_PLAY:
; ;
SP_BEEPER: SP_BEEPER:
PUSH IX 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. 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 ; 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 SRL L
@ -259,7 +259,7 @@ BE_AGAIN:
INC C ; Add 16 T states as this path is shorter. INC C ; Add 16 T states as this path is shorter.
JP (IX) ; Jump back. JP (IX) ; Jump back.
BE_END: BE_END:
EI
HB_EI
POP IX POP IX
RET RET
; ;

8
Source/HBIOS/util.asm

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

Loading…
Cancel
Save