Browse Source

Merge pull request #153 from wwarthen/dev

Resync
pull/175/head
b1ackmai1er 5 years ago
committed by GitHub
parent
commit
ae9105bd5b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Source/HBIOS/hbios.asm
  2. 64
      Source/HBIOS/sd.asm
  3. 10
      Source/HBIOS/std.asm
  4. 2
      Source/ver.inc
  5. 2
      Source/ver.lib

4
Source/HBIOS/hbios.asm

@ -916,6 +916,10 @@ HB_START:
;#ENDIF
LD A,(RAMSIZE + RAMBIAS - 64) >> 2
OUT0 (Z180_CBR),A ; COMMON BASE = LAST (TOP) BANK
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)
LD A,Z180_CNTR_DEF ; DIV 1280, 14KHZ @ 18MHZ CLK
OUT0 (Z180_CNTR),A
#ENDIF
;
#ENDIF

64
Source/HBIOS/sd.asm

@ -708,10 +708,26 @@ SD_IO:
LD (SD_BLKCNT),A ; ... AND SAVE IT
OR A ; SET FLAGS
RET Z ; ZERO SECTOR I/O, RETURN W/ E=0 & A=0
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
; CONSIDER CAPTURING CURRENT CNTR VALUE HERE AND USE IT
; IN SD_CSIO_DEF
; SET CSIO FOR HIGH SPEED OPERATION
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
XOR A ; ZERO MEANS MAX SPEED
OUT0 (SD_CNTR),A ; NOW SET CSIO PORT
; HOOK RETURN TO RESTORE CSIO TO DEFAULT SPEED
LD HL,SD_CSIO_DEF ; ROUTE RETURN
PUSH HL ; ... THRU CSIO RESTORE
#ENDIF
;
#IF (SDTRACE == 1)
LD HL,SD_PRTERR ; SET UP SD_PRTERR
PUSH HL ; ... TO FILTER ALL EXITS
#ENDIF
;
CALL SD_SELUNIT ; HARDWARE SELECTION OF TARGET UNIT
RET NZ ; ABORT ON ERROR
LD A,(SD_CMDVAL) ; GET COMMAND VALUE
@ -871,6 +887,10 @@ SD_INITCARD:
;
CALL SD_CHKCD ; CHECK CARD DETECT
JP Z,SD_NOMEDIA ; Z=NO MEDIA, HANDLE IF SO
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
CALL SD_CSIO_DEF ; ENSURE CSIO AT DEFAULT SPEED
#ENDIF
;
; WAKE UP THE CARD, KEEP DIN HI (ASSERTED) AND /CS HI (DEASSERTED)
LD B,$10 ; MIN 74 CLOCKS REQUIRED, WE USE 128 ($10 * 8)
@ -916,9 +936,6 @@ SD_INITCARD3:
CALL VDELAY ; CPU SPEED NORMALIZED DELAY
; SEND APP CMD INTRODUCER
CALL SD_EXECACMD ; SEND APP COMMAND INTRODUCER
;#IF (SDMODE == SDMODE_MT)
; CALL NZ,SD_EXECACMD ; retry any fail
;#ENDIF
CP SD_STCMDERR ; COMMAND ERROR?
JR Z,SD_INITCARD3A ; IF SO, TRY MMC CARD INIT
OR A ; SET FLAGS
@ -1039,14 +1056,16 @@ SD_INITCARD5:
CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA
RET NZ ; ABORT ON ERROR
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
; PER SPEC, THE CARD SHOULD NOW BE ABLE TO HANDLE FULL SPEED OPERATION
; SO, FOR CSIO OPERATION, WE SET CSIO TO MAXIMUM SPEED
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
XOR A ; ZERO MEANS MAX SPEED
OUT (Z180_CNTR),A ; NOW SET CSIO PORT
#ENDIF
; HIGH SPEED CSIO OPERATION IS NOW SET AT THE START OF SD_IO
;
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
; ; PER SPEC, THE CARD SHOULD NOW BE ABLE TO HANDLE FULL SPEED OPERATION
; ; SO, FOR CSIO OPERATION, WE SET CSIO TO MAXIMUM SPEED
; CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
; CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
; XOR A ; ZERO MEANS MAX SPEED
; OUT0 (SD_CNTR),A ; NOW SET CSIO PORT
;#ENDIF
;
; ISSUE SEND_CSD (TO DERIVE CARD CAPACITY)
LD A,SD_CMD_SEND_CSD ; SEND_CSD
@ -1808,11 +1827,11 @@ SD_GET:
#ELSE
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
IN0 A,(Z180_CNTR) ; GET CSIO STATUS
IN0 A,(SD_CNTR) ; GET CSIO STATUS
SET 5,A ; START RECEIVER
OUT0 (Z180_CNTR),A
OUT0 (SD_CNTR),A
CALL SD_WAITRX
IN0 A,(Z180_TRDR) ; GET RECEIVED BYTE
IN0 A,(SD_TRDR) ; GET RECEIVED BYTE
CALL MIRROR ; MSB<-->LSB MIRROR BITS
LD A,C ; KEEP RESULT
#ELSE
@ -1849,6 +1868,23 @@ SD_GET1:
#ENDIF
RET
;
; SET CSIO TO DEFAULT SPEED
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
;
SD_CSIO_DEF:
; SET CSIO FOR DEFAULT OPERATION
PUSH AF ; PRESERVE AF
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
LD A,Z180_CNTR_DEF ; DIV 1280, 14KHZ @ 18MHZ CLK
OUT0 (SD_CNTR),A ; DO IT
POP AF ; RESTORE AF
RET
;
#ENDIF
;
;
;=============================================================================
; ERROR HANDLING AND DIAGNOSTICS
;=============================================================================

10
Source/HBIOS/std.asm

@ -543,6 +543,16 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
#DEFINE VEC(INTX) INTX*2
#ENDIF
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)
; DIV 1280, 14KHZ @ 18MHZ CLK
#IF (BIOS == BIOS_WBW)
#IF (CPUFAM == CPU_Z180)
Z180_CNTR_DEF .EQU $06 ; DEFAULT VALUE FOR Z180 CSIO CONFIG
#ENDIF
#ENDIF
;
; HELPER MACROS
;

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.23"
#DEFINE BIOSVER "3.1.1-pre.24"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.23"
db "3.1.1-pre.24"
endm

Loading…
Cancel
Save