Browse Source

Merge pull request #290 from b1ackmai1er/dev

Build fixup (rtcdefval), recovery mode message, fixup for 3 sound devices
pull/331/head
Wayne Warthen 4 years ago
committed by GitHub
parent
commit
94cf9a209e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Source/Apps/assign.asm
  2. 8
      Source/HBIOS/ay38910.asm
  3. 62
      Source/HBIOS/dbgmon.asm
  4. 16
      Source/HBIOS/hbios.asm
  5. 9
      Source/HBIOS/sn76489.asm

2
Source/Apps/assign.asm

@ -244,7 +244,7 @@ initcpm3:
; The CP/M 3 drvtbl is in common memory, but the XDPHs are not. ; The CP/M 3 drvtbl is in common memory, but the XDPHs are not.
; So, here we temporarily swap the bank to the CP/M 3 system ; So, here we temporarily swap the bank to the CP/M 3 system
; bank. We cannot use the CP/M Direct BIOS call because it ; bank. We cannot use the CP/M Direct BIOS call because it
; explicitly blocks use of SELMEM, so we are foreced to use
; explicitly blocks use of SELMEM, so we are forced to use
; HBIOS call. The CP/M 3 system bank is always the HBIOS ; HBIOS call. The CP/M 3 system bank is always the HBIOS
; user bank. ; user bank.
; ;

8
Source/HBIOS/ay38910.asm

@ -534,7 +534,7 @@ AY_EI:
AY_WRTPSG: AY_WRTPSG:
CALL AY_DI CALL AY_DI
#IFDEF SBCV2004 #IFDEF SBCV2004
LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE
LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE
OR %00001000 ; SBC-V2-004 CHANGE OR %00001000 ; SBC-V2-004 CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED OUT (RTCIO),A ; TO HALF CLOCK SPEED
#ENDIF #ENDIF
@ -553,7 +553,7 @@ AY_WRTPSG:
OUT0 (Z180_DCNTL),A ; AND RESTORE IT OUT0 (Z180_DCNTL),A ; AND RESTORE IT
#ENDIF #ENDIF
#IFDEF SBCV2004 #IFDEF SBCV2004
LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO
LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF #ENDIF
JP AY_EI JP AY_EI
@ -565,7 +565,7 @@ AY_WRTPSG:
AY_RDPSG: AY_RDPSG:
CALL AY_DI CALL AY_DI
#IFDEF SBCV2004 #IFDEF SBCV2004
LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE
LD A,(HB_RTCVAL) ; GET CURRENT RTC LATCH VALUE
OR %00001000 ; SBC-V2-004 CHANGE OR %00001000 ; SBC-V2-004 CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED OUT (RTCIO),A ; TO HALF CLOCK SPEED
#ENDIF #ENDIF
@ -584,7 +584,7 @@ AY_RDPSG:
OUT0 (Z180_DCNTL),A ; AND RESTORE IT OUT0 (Z180_DCNTL),A ; AND RESTORE IT
#ENDIF #ENDIF
#IFDEF SBCV2004 #IFDEF SBCV2004
LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO
LD A,(HB_RTCVAL) ; SBC-V2-004 CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF #ENDIF
JP AY_EI JP AY_EI

62
Source/HBIOS/dbgmon.asm

@ -38,6 +38,8 @@ ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM
ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE
#ENDIF #ENDIF
; ;
ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION
;
#INCLUDE "util.asm" #INCLUDE "util.asm"
; ;
;__UART_ENTRY_________________________________________________________________ ;__UART_ENTRY_________________________________________________________________
@ -69,6 +71,8 @@ UART_ENTRY:
; R XXXX - RUN A PROGRAM AT ADDRESS XXXX ; R XXXX - RUN A PROGRAM AT ADDRESS XXXX
; S XX - SET ACTIVE BANK TO XX ; S XX - SET ACTIVE BANK TO XX
; T XXXX - X-MODEM TRANSFER TO MEMORY LOCATION XXXX ; T XXXX - X-MODEM TRANSFER TO MEMORY LOCATION XXXX
; U - SET BANK TO PREVIOUS BANK
; 6 XX - TRANSFER CONTROL TO MBC6502 UNIT XX
; X - EXIT MONITOR ; X - EXIT MONITOR
; ;
;__COMMAND_PARSE______________________________________________________________ ;__COMMAND_PARSE______________________________________________________________
@ -126,6 +130,12 @@ SERIALCMDLOOP:
#IF (BIOS == BIOS_WBW) #IF (BIOS == BIOS_WBW)
CP 'S' ; IS IT A "S" (Y/N) CP 'S' ; IS IT A "S" (Y/N)
JP Z,SETBNK ; SET BANK COMMAND JP Z,SETBNK ; SET BANK COMMAND
CP 'U' ; IS IT A "U" (Y/N)
JP Z,UNSETBNK ; UNSET (REVERT) BANK COMMAND
#ENDIF
#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502)
CP '6' ; IS IT A "6" (Y/N)
JP Z,MBC6502 ; TRANSFER TO MBC6502 COMMAND
#ENDIF #ENDIF
CP 'X' ; IS IT A "X" (Y/N) CP 'X' ; IS IT A "X" (Y/N)
JP Z,EXIT ; EXIT COMMAND JP Z,EXIT ; EXIT COMMAND
@ -218,6 +228,8 @@ SETBNK:
LD HL,TXT_IMERR LD HL,TXT_IMERR
CALL PRTSTR CALL PRTSTR
#ELSE #ELSE
LD A,($FFE0) ; GET AND SAVE
LD (BNKSAV),A ; CURRENT BANK
CALL BYTEPARM ; GET BANK NUMBER CALL BYTEPARM ; GET BANK NUMBER
JP C,ERR ; HANDLE DATA ENTRY ERROR JP C,ERR ; HANDLE DATA ENTRY ERROR
LD C,A ; PUT IN C FOR FOR FUNC CALL LD C,A ; PUT IN C FOR FOR FUNC CALL
@ -226,6 +238,25 @@ SETBNK:
#ENDIF #ENDIF
JP SERIALCMDLOOP ; NEXT COMMAND JP SERIALCMDLOOP ; NEXT COMMAND
; ;
;__UNSETBNK___________________________________________________________________
;
; PERFORM UNSET BANK ACTION - REVERT TO BANK BEFORE PREVIOUS SET
;_____________________________________________________________________________
;
UNSETBNK:
#IF (INTMODE == 1)
LD HL,TXT_IMERR
CALL PRTSTR
#ELSE
LD A,(BNKSAV)
LD C,A ; PUT IN C FOR FOR FUNC CALL
LD B,BF_SYSSETBNK ; SET BANK FUNCTION
CALL $FFF0 ; C HAS BANK, DO IT
#ENDIF
JP SERIALCMDLOOP ; NEXT COMMAND
;
BNKSAV .DB 00H ; OLD BANK FROM BEFORE SET
;
#ENDIF #ENDIF
; ;
;__RUN________________________________________________________________________ ;__RUN________________________________________________________________________
@ -358,7 +389,8 @@ XMLOAD: CALL WORDPARM ; GET STARTING LOCATION
CALL NEWLINE CALL NEWLINE
; ;
LD BC,$F8F0 ; GET CPU SPEED LD BC,$F8F0 ; GET CPU SPEED
RST 08 ; AND MULTIPLY
CALL $FFF0 ; CALL HBIOS
; RST 08 ; AND MULTIPLY
LD A,L ; BY 4 LD A,L ; BY 4
PUSH AF PUSH AF
ADD A,A ; TO CREATE ADD A,A ; TO CREATE
@ -769,6 +801,28 @@ HELP:
CALL PRTSTR ; DISPLAY IT CALL PRTSTR ; DISPLAY IT
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
; ;
;__MBC6502____________________________________________________________________
;
; TRANSFER CONTROL TO MBC6502
;_____________________________________________________________________________
;
;
#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502)
MBC6502:
CALL BYTEPARM ; GET BYTE VALUE (FILL VALUE) INTO A
CPL ; UNIT 0 = FFH, 1 = FEH ETC
LD C,A
;
IN A,(C) ; EXECUTE
NOP ; TRANSFER
;
LD A,($FFE0) ; GET PREVIOUS BANK
OUT (MPCL_RAM),A ; SET RAM PAGE SELECTOR
OUT (MPCL_ROM),A ; SET ROM PAGE SELECTOR
;
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
#ENDIF
;
;__ERR________________________________________________________________________ ;__ERR________________________________________________________________________
; ;
; SYNTAX ERROR ; SYNTAX ERROR
@ -1205,9 +1259,15 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
.TEXT "\r\nP xxxx - Program RAM at address xxxx" .TEXT "\r\nP xxxx - Program RAM at address xxxx"
.TEXT "\r\nR xxxx [[yy] [zzzz]] - Run code at address xxxx" .TEXT "\r\nR xxxx [[yy] [zzzz]] - Run code at address xxxx"
.TEXT "\r\n Pass yy and zzzz to register A and BC" .TEXT "\r\n Pass yy and zzzz to register A and BC"
#IF (BIOS == BIOS_WBW)
.TEXT "\r\nS xx - Set bank to xx" .TEXT "\r\nS xx - Set bank to xx"
.TEXT "\r\nU - Set bank to previous bank"
#ENDIF
#IF (ENA_XM) #IF (ENA_XM)
.TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx" .TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx"
#ENDIF
#IF ((PLATFORM == PLT_MBC) & ENA_MBC6502)
.TEXT "\r\n6 xx - Transfer control to MBC6502 unit xx"
#ENDIF #ENDIF
.TEXT "\r\nX - Exit monitor" .TEXT "\r\nX - Exit monitor"
.TEXT "$" .TEXT "$"

16
Source/HBIOS/hbios.asm

@ -2299,6 +2299,18 @@ NXTMIO: LD A,(HL)
CALL PRTSTRD CALL PRTSTRD
.TEXT "HBIOS MUTEX ENABLED$" .TEXT "HBIOS MUTEX ENABLED$"
#ENDIF #ENDIF
;
; DISPLAY RECOVERY MODE MESSAGE
;
#IF (BT_REC_TYPE != BT_REC_NONE)
LD A,(HB_BOOT_REC) ; IF WE ARE IN RECOVERY MODE
OR A ; DISPLAY RECOVERY MODE MESSAGE
JR Z,NOT_REC_M2
CALL NEWLINE
CALL PRTSTRD
.TEXT "RECOVERY MODE$"
#ENDIF
NOT_REC_M2:
; ;
DIAG(%11111111) DIAG(%11111111)
; ;
@ -3698,7 +3710,7 @@ SND_ADDENT:
; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS)
; ;
SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK)
SND_MAX .EQU 3 ; UP TO 2 UNITS
SND_MAX .EQU 4 ; UP TO 3 UNITS
SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES
; ;
.DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK) .DB SND_FNCNT ; SND FUNCTION COUNT (FOR RANGE CHECK)
@ -5233,7 +5245,7 @@ HB_ADDENT:
; ALL OTHER REGISTERS PRESERVED ; ALL OTHER REGISTERS PRESERVED
; ;
; A 4 BYTE HEADER IS PLACED IN FRONT OF THE ALLOCATED MEMORY ; A 4 BYTE HEADER IS PLACED IN FRONT OF THE ALLOCATED MEMORY
; - DWORD: SIZE OF MEMROY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER)
; - DWORD: SIZE OF MEMORY ALLOCATED (DOES NOT INCLUDE 4 BYTE HEADER)
; - DWORD: ADDRESS WHERE ALLOC WAS CALLED (VALUE ON TOP OF STACK AT CALL) ; - DWORD: ADDRESS WHERE ALLOC WAS CALLED (VALUE ON TOP OF STACK AT CALL)
; ;
HB_ALLOC: HB_ALLOC:

9
Source/HBIOS/sn76489.asm

@ -43,6 +43,9 @@ SN7RATIO .EQU SN7CLK * 100 / 32
SN76489_INIT: SN76489_INIT:
LD IY, SN7_IDAT ; POINTER TO INSTANCE DATA LD IY, SN7_IDAT ; POINTER TO INSTANCE DATA
LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS
LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR
CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD DE,STR_MESSAGELT LD DE,STR_MESSAGELT
CALL WRITESTR CALL WRITESTR
@ -53,11 +56,6 @@ SN76489_INIT:
CALL WRITESTR CALL WRITESTR
LD A, SN76489_PORT_RIGHT LD A, SN76489_PORT_RIGHT
CALL PRTHEXBYTE CALL PRTHEXBYTE
;
SN7_INIT1:
LD BC, SN7_FNTBL ; BC := FUNCTION TABLE ADDRESS
LD DE, SN7_IDAT ; DE := SN7 INSTANCE DATA PTR
CALL SND_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
CALL SN7_VOLUME_OFF CALL SN7_VOLUME_OFF
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
@ -67,7 +65,6 @@ SN7_INIT1:
; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS ; SN76489 DRIVER - SOUND ADAPTER (SND) FUNCTIONS
;====================================================================== ;======================================================================
; ;
SN7_RESET: SN7_RESET:
AUDTRACE(SNT_INIT) AUDTRACE(SNT_INIT)
CALL SN7_VOLUME_OFF CALL SN7_VOLUME_OFF

Loading…
Cancel
Save