Miscellaneous

- Improve handling of RTC latch shadow
- Hardware auto-detect on DSKY and DSKYNG
- Regen documentation
This commit is contained in:
Wayne Warthen
2021-08-26 15:24:59 -07:00
parent 7e9010ed04
commit 4f941de39c
20 changed files with 265 additions and 100 deletions

View File

@@ -41,7 +41,7 @@ DMA_INIT:
xor a
out (DMABASE+1),a ; force ready off
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
;
@@ -59,7 +59,7 @@ DMA_INIT:
;
DMA_EXIT:
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@@ -151,7 +151,7 @@ DMALDIR:
ld b,DMACopy_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@@ -165,7 +165,7 @@ DMALDIR:
sub %00011011
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@@ -201,7 +201,7 @@ DMAOTIR:
ld b,DMAOut_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@@ -215,7 +215,7 @@ DMAOTIR:
sub %00011011
;
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@@ -256,7 +256,7 @@ DMAINIR:
ld b,DMAIn_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@@ -270,7 +270,7 @@ DMAINIR:
sub %00011011
;
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af

View File

@@ -37,11 +37,11 @@ PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT
; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER
;____________________________________________________________________________________________________
;
DSKY_INIT:
DSKY_PREINIT:
OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE
LD (DSKY_KEYBUF),A ; SET IT
; PPI PORT B IS NORMALLY SET TO INPUT, BUT DURING HERE WE
;
; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE
; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE
; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI
; CHIP BUS HOLD CIRCUIT IF THERE IS NO DSKY PRESENT. SO,
@@ -53,22 +53,47 @@ DSKY_INIT:
OUT (PPIX),A
LD A,$FF ; SET PPIB=$FF, BUS HOLD
OUT (PPIB),A
;
LD A,$82 ; PA OUT, PB IN, PC OUT
OUT (PPIX),A
;
;IN A,(PPIB) ; *DEBUG*
;CALL PRTHEXBYTE ; *DEBUG*
;
IN A,(PPIB) ; READ PPIB
XOR $FF ; INVERT RESULT
LD (DSKY_PRESENT),A ; SAVE AS PRESENT FLAG
;
DSKY_RESET:
PUSH AF
;
LD A,$70 ; PPISD AND 7218 INACTIVE
OUT (PPIC),A
;
POP AF
RET
;
#IFNDEF ROMLDR
;
DSKY_INIT:
CALL NEWLINE ; FORMATTING
PRTS("DSKY:$") ; FORMATTING
;
PRTS(" IO=0x$") ; FORMATTING
LD A,DSKYPPIBASE ; GET BASE PORT
CALL PRTHEXBYTE ; PRINT BASE PORT
PRTS(" MODE=$") ; FORMATTING
PRTS("V1$") ; PRINT DSKY TYPE
;
LD A,(DSKY_PRESENT) ; PRESENT?
OR A ; SET FLAGS
RET NZ ; YES, ALL DONE
PRTS(" NOT PRESENT$") ; NOT PRESENT
;
RET
;
#ENDIF
;
#IFDEF DSKY_KBD
;
KY_0 .EQU $00
@@ -102,6 +127,10 @@ KY_BO .EQU $17 ; BOOT
;____________________________________________________________________________________________________
;
DSKY_GETKEY:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT
;
CALL DSKY_STAT ; CHECK STATUS
JR Z,DSKY_GETKEY ; LOOP IF NOTHING READY
LD A,(DSKY_KEYBUF)
@@ -114,6 +143,7 @@ DSKY_GETKEY1:
INC HL
INC C ; BUMP INDEX
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
DSKY_GETKEY1A:
LD A,$FF ; NOT FOUND ERR, RETURN $FF
RET
DSKY_GETKEY2:
@@ -129,6 +159,10 @@ DSKY_GETKEY2:
;____________________________________________________________________________________________________
;
DSKY_STAT:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
RET Z ; ABORT WITH A=0 IF NOT THERE
;
LD A,(DSKY_KEYBUF) ; GET CURRENT BUF VAL
CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED
JR Z,DSKY_STAT1 ; CHECK FOR PREV KEY RELEASE
@@ -197,7 +231,7 @@ DSKY_SCAN1:
INC E ; BUMP COL ID
DJNZ DSKY_SCAN1 ; LOOP THROUGH ALL COLS
XOR A ; NOTHING FOUND, RETURN ZERO
JR DSKY_RESET ; RETURN VIA RESET
JP DSKY_RESET ; RETURN VIA RESET
DSKY_SCAN2:
RRC E ; MOVE COL ID
RRC E ; ... TO HIGH BITS 6 & 7
@@ -344,6 +378,8 @@ DSKY_HEXMAP:
;
; SEG DISPLAY WORKING STORAGE
;
DSKY_PRESENT .DB 0
;
DSKY_BUF .FILL 8,0
DSKY_BUFLEN .EQU $ - DSKY_BUF
DSKY_HEXBUF .FILL 4,0

View File

@@ -66,7 +66,7 @@ DSKY_CMD_FIFO: .EQU %01000000 ; READ FIFO
;
DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER
;
;__DSKY_INIT_________________________________________________________________________________________
;__DSKY_PREINIT______________________________________________________________________________________
;
; CONFIGURE PARALLEL PORT AND INITIALIZE 8279
;____________________________________________________________________________________________________
@@ -74,9 +74,11 @@ DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER
;
; HARDWARE RESET 8279 BY PULSING RESET LINE
;
DSKY_INIT:
;
; SETUP PPI
DSKY_PREINIT:
; CHECK FOR PPI
CALL DSKY_PPIDETECT ; TEST FOR PPI HARDWARE
RET NZ ; BAIL OUT IF NOT THERE
; SETUP PPI TO DEFAULT MODE
CALL DSKY_PPIRD
; INIT 8279 VALUES TO IDLE STATE
LD A,DSKY_PPI_IDLE
@@ -86,7 +88,25 @@ DSKY_INIT:
OUT (PPIC),A
RES 7,A
OUT (PPIC),A
; DONE
; INITIALIZE 8279
CALL DSKY_REINIT
; NOW SEE IF A DSKYNG IS REALLY THERE...
LD A,$A5
LD (DSKY_BUF),A
LD HL,DSKY_BUF
LD C,0
LD B,1
CALL DSKY_PUTSTR
LD HL,DSKY_BUF
LD C,0
LD B,1
CALL DSKY_GETSTR
LD A,(DSKY_BUF)
CP $A5
RET NZ ; BAIL OUT IF MISCOMPARE
LD A,$FF
LD (DSKY_PRESENT),A
RET
;
DSKY_REINIT:
CALL DSKY_PPIIDLE
@@ -116,6 +136,53 @@ DSKY_RESET1:
DSKY_RESET2:
RET
;
;__DSKY_INIT_________________________________________________________________________________________
;
; DISPLAY DSKY INFO
;____________________________________________________________________________________________________
;
#IFNDEF ROMLDR
;
DSKY_INIT:
CALL NEWLINE ; FORMATTING
PRTS("DSKY:$") ; FORMATTING
;
PRTS(" IO=0x$") ; FORMATTING
LD A,DSKYPPIBASE ; GET BASE PORT
CALL PRTHEXBYTE ; PRINT BASE PORT
PRTS(" MODE=$") ; FORMATTING
PRTS("NG$") ; PRINT DSKY TYPE
;
LD A,(DSKY_PRESENT) ; PRESENT?
OR A ; SET FLAGS
RET NZ ; YES, ALL DONE
PRTS(" NOT PRESENT$") ; NOT PRESENT
RET ; DONE
;
#ENDIF
;
;__DSKY_PPIDETECT____________________________________________________________________________________
;
; PROBE FOR PPI HARDWARE
;____________________________________________________________________________________________________
;
DSKY_PPIDETECT:
;
; TEST FOR PPI EXISTENCE
; WE SETUP THE PPI TO WRITE, THEN WRITE A VALUE OF ZERO
; TO PORT A (DATALO), THEN READ IT BACK. IF THE PPI IS THERE
; THEN THE BUS HOLD CIRCUITRY WILL READ BACK THE ZERO. SINCE
; WE ARE IN WRITE MODE, AN IDE CONTROLLER WILL NOT BE ABLE TO
; INTERFERE WITH THE VALUE BEING READ.
CALL DSKY_PPIWR
;
LD C,PPIA ; PPI PORT A
XOR A ; VALUE ZERO
OUT (C),A ; PUSH VALUE TO PORT
IN A,(C) ; GET PORT VALUE
OR A ; SET FLAGS
RET ; AND RETURN
;
#IFDEF DSKY_KBD
;
KY_0 .EQU $00
@@ -153,6 +220,9 @@ KY_F1 .EQU $21 ; F1
;____________________________________________________________________________________________________
;
DSKY_STAT:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
RET Z ; ABORT WITH A=0 IF NOT THERE
CALL DSKY_ST
AND $0F ; ISOLATE THE CUR FIFO LEN
RET
@@ -163,6 +233,9 @@ DSKY_STAT:
;____________________________________________________________________________________________________
;
DSKY_GETKEY:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT
CALL DSKY_STAT
JR Z,DSKY_GETKEY ; LOOP IF NOTHING THERE
LD A,DSKY_CMD_FIFO
@@ -181,6 +254,7 @@ DSKY_GETKEY1:
INC C ; BUMP INDEX
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
POP AF ; FIX STACK
DSKY_GETKEY1A:
LD A,$FF ; NOT FOUND ERR, RETURN $FF
RET
DSKY_GETKEY2:
@@ -483,7 +557,7 @@ DSKY_GETSTR1:
; .DB $00,$00,$00,$00,$00,$00,$00,$00
;
DSKY_PUTLED:
EX (SP),HL
EX (SP),HL
PUSH AF
PUSH BC
LD C,8
@@ -690,6 +764,7 @@ DSKY_HEXMAP:
.DB $71 ; F
;
DSKY_PPIX_VAL: .DB 0
DSKY_PRESENT: .DB 0
;
; SEG DISPLAY WORKING STORAGE
;

View File

@@ -97,7 +97,7 @@ DSRTC_IDLE .EQU %00100000 ; QUIESCENT STATE
;
RTCDEF .SET RTCDEF | DSRTC_IDLE ; FOR HBIOS MAINLINE
;
#DEFINE DSRTC_OPRVAL RTCVAL
#DEFINE DSRTC_OPRVAL HB_RTCVAL
;
; VALUES FOR DIFFERENT BATTERY OR SUPERCAPACITOR CHARGE RATES
;

View File

@@ -105,10 +105,10 @@ MODCNT .SET MODCNT + 1
#ENDIF
#IF (LEDMODE == LEDMODE_RTC)
#DEFINE LED(N) PUSH AF
#DEFCONT \ LD A,(RTCVAL)
#DEFCONT \ LD A,(HB_RTCVAL)
#DEFCONT \ AND %11111100
#DEFCONT \ OR (N & %00000011)
#DEFCONT \ LD (RTCVAL),A
#DEFCONT \ LD (HB_RTCVAL),A
#DEFCONT \ OUT (LEDPORT),A
#DEFCONT \ POP AF
#ENDIF
@@ -948,7 +948,8 @@ HBX_BUF_END .EQU $
.DW 0 ; HB_DSTADR: BNKCPY DESTINATION ADDRESS
.DB BID_USR ; HB_DSTBNK: BNKCPY DESTINATION BANK ID
.DW 0 ; HB_CPYLEN: BNKCPY LENGTH
.FILL 5,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE
.FILL 4,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE
.DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
.DB $FE ; HB_LOCK: HBIOS MUTEX LOCK
JP HBX_INVOKE ; HB_INVOKE: FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08)
JP HBX_BNKSEL ; HB_BNKSEL: FIXED ADR ENTRY FOR HBX_BNKSEL
@@ -1080,7 +1081,7 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
#ENDIF
#IF (LEDMODE == LEDMODE_RTC)
LD A,%00000001 ; LED 0
LD (RTCVAL),A ; SAVE TO SHADOW REGISTER
LD (HB_RTCVAL),A ; SAVE TO SHADOW REGISTER
#ENDIF
OUT (LEDPORT),A
#ENDIF
@@ -1440,24 +1441,6 @@ SAVE_REC_M:
;
DIAG(%00001111)
;
#IF (DSKYENABLE)
CALL DSKY_INIT
LD HL,MSG_HBVER + 5
LD A,(DSKY_HEXMAP + RMJ)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RMN)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RUP)
LD (HL),A
LD HL,MSG_HBVER
CALL DSKY_SHOW
#ENDIF
;
#IF (WBWDEBUG == USEMIO) ; BUFFER OUTPUT UNTIL
CALL MIO_INIT ; WE GET TO BOOT MESSAGE
#ENDIF
@@ -1793,6 +1776,24 @@ NOT_REC_M0:
#ENDIF
CALL CALLLIST ; PROCESS THE PRE-INIT CALL TABLE
;
#IF (DSKYENABLE)
;CALL DSKY_PREINIT
LD HL,MSG_HBVER + 5
LD A,(DSKY_HEXMAP + RMJ)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RMN)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RUP)
LD (HL),A
LD HL,MSG_HBVER
CALL DSKY_SHOW
#ENDIF
;
#IF FALSE
;
; TEST DEBUG ***************************************************************************************
@@ -2242,6 +2243,14 @@ HB_WDZ:
PRTX(STR_BANNER)
#ENDIF
;
; EXPERIMENTAL!!!
; ENGAGE TURBO...
;
; LD A,(HB_RTCVAL)
; SET 3,A
; OUT (RTCIO),A
; LD (HB_RTCVAL),A
;
INITSYS3:
CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE
;
@@ -2350,6 +2359,9 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2)
;==================================================================================================
;
HB_PCINITTBL:
#IF (DSKYENABLE)
.DW DSKY_PREINIT
#ENDIF
#IF (ASCIENABLE)
.DW ASCI_PREINIT
#ENDIF
@@ -2390,6 +2402,9 @@ HB_INITTBL:
#IF (CTCENABLE)
.DW CTC_INIT
#ENDIF
#IF (DSKYENABLE)
.DW DSKY_INIT
#ENDIF
#IF (AY38910ENABLE)
.DW AY38910_INIT ; AUDIBLE INDICATOR OF BOOT START
#ENDIF
@@ -6116,7 +6131,7 @@ HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
;
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG
;
RTCVAL .DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
;RTCVAL .DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
IOPRVAL .DW 0 ; TEMP STORAGE FOR IOPR
;
HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK)

View File

@@ -255,6 +255,7 @@ HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID
HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS
HB_DSTBNK .EQU HBX_XFCDAT + 7 ; BNKCPY: SOURCE ADDRESS
HB_CPYLEN .EQU HBX_XFCDAT + 8 ; BNKCPY: COPY LENGTH
HB_RTCVAL .EQU HBX_XFCDAT + 14 ; RTC LATCH SHADOW VALUE
HB_LOCK .EQU HBX_XFCDAT + 15 ; INVOKE: HBIOS MUTEX LOCK
;
HBX_XFCFNS .EQU HBX_XFC + $10 ; JUMP TABLE PORTION OF HBIOS PROXY INTERFACE AREA

View File

@@ -4855,7 +4855,7 @@ MULDLP: DJNZ MULSKP ; DIVIDE BY 8
LD B,$00
LD IX,SPK_DLYADJ ; The base address of the timing loop.
ADD IX,BC ; Alter the length of the timing loop. Use an earlier starting point for each '1' lost by taking INT (L/4).
LD A,(RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
LD A,(HB_RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
;
; The HL register holds the 'length of the timing loop' with 16 T states being used for each '1' in the L register and 1024 T states for each '1' in the H register.
;
@@ -4897,8 +4897,8 @@ BE_END: EI
POP BC ; RECALL SYNTAX POINTER
POP HL
RET
;
RTCVAL .DB 0
;;
;RTCVAL .DB 0
;
; SETUP THE ONE SECOND TONE DURATION TABLE BASED ON PROCESSOR SPEED AND TONE FREQUENCY
;

View File

@@ -32,6 +32,8 @@
; the desired executable image.
;
#INCLUDE "std.asm" ; standard RomWBW constants
#define ROMLDR
;
#ifndef BOOT_DEFAULT
#define BOOT_DEFAULT "H"
@@ -206,6 +208,7 @@ prompt:
call clrbuf ; zero fill the cmd buffer
;
#if (DSKYENABLE)
call DSKY_PREINIT ; *** TEMPORARY ***
call DSKY_RESET ; clear DSKY
ld hl,msg_sel ; boot select msg
call DSKY_SHOW ; show on DSKY
@@ -1105,10 +1108,11 @@ clrled:
out (LEDPORT),a ; clear led
#endif
#if (LEDMODE == LEDMODE_RTC)
; Only bits 0 and 1 of the RTC latch are for the LEDs. Here,
; we assume that it is OK to zero all bits of the RTC latch.
xor a ; turn off
out (LEDPORT),a ; clear led
; Bits 0 and 1 of the RTC latch are for the LEDs.
ld a,(HB_RTCVAL)
and ~%00000011
out (RTCIO),a ; clear led
ld (HB_RTCVAL),a
#endif
#endif
#endif
@@ -1928,9 +1932,6 @@ str_err_api .db "Unexpected hardware BIOS API failure",0
; Includes
;=======================================================================
;
#define USEDELAY
; #include "util.asm"
;
#if (DSKYENABLE)
#define DSKY_KBD
#if (DSKYMODE == DSKYMODE_V1)

View File

@@ -368,10 +368,10 @@ SD_INIT:
LD A,SD_OPRREG
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_N8)
@@ -380,10 +380,10 @@ SD_INIT:
LD A,SD_OPRREG
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_CSIO)
@@ -401,10 +401,10 @@ SD_INIT:
LD A,SD_TRDR
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_PPI)
@@ -465,10 +465,10 @@ SD_INIT:
LD A,SD_TRDR
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_MT)
@@ -1677,7 +1677,7 @@ SD_SETUP:
#ENDIF
;
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_N8) | (SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_SC))
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
LD (SD_OPRVAL),A
OUT (SD_OPRREG),A
#ENDIF

View File

@@ -15,10 +15,6 @@
SN76489_PORT_LEFT .EQU $FF ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
SN76489_PORT_RIGHT .EQU $FB ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
;SN76489_PORT_LEFT .EQU $FC ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
;SN76489_PORT_RIGHT .EQU $F8 ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
;;SN76489_PORT_LEFT .EQU $C7 ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
;;SN76489_PORT_RIGHT .EQU $C8 ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
SN7_IDAT .EQU 0
SN7_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
SN7_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
@@ -74,7 +70,7 @@ SN7_VOLUME_OFF:
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
#ENDIF
@@ -96,7 +92,7 @@ SN7_VOLUME_OFF:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@@ -256,7 +252,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@@ -266,7 +262,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@@ -301,7 +297,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@@ -311,7 +307,7 @@ SN7_APPLY_PRD:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@@ -338,7 +334,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@@ -348,7 +344,7 @@ SN7_APPLY_PRD:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF

View File

@@ -265,7 +265,7 @@ SP_BEEPER:
LD B,$00
LD IX,SPK_DLYADJ ; The base address of the timing loop.
ADD IX,BC ; Alter the length of the timing loop. Use an earlier starting point for each '1' lost by taking INT (L/4).
LD A,(RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
LD A,(HB_RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
;
; The HL register holds the 'length of the timing loop' with 16 T states being used for each '1' in the L register and 1024 T states for each '1' in the H register.
;