mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Miscellaneous
- Improve handling of RTC latch shadow - Hardware auto-detect on DSKY and DSKYNG - Regen documentation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user