Browse Source

dma updates

pull/255/head
b1ackmai1er 4 years ago
parent
commit
be1fb0836f
  1. 0
      Doc/Contrib/PPI_Bus.txt
  2. 56
      Source/Apps/Test/DMAmon/std.asm
  3. 4
      Source/Apps/Test/DMAmon/ver.inc
  4. 3
      Source/HBIOS/dma.asm
  5. 4
      Source/HBIOS/md.asm
  6. 4
      Source/HBIOS/rf.asm

0
Source/HBIOS/PPI_Bus.txt → Doc/Contrib/PPI_Bus.txt

56
Source/Apps/Test/DMAmon/std.asm

@ -384,6 +384,17 @@ WDOG_NONE .EQU 0 ; NONE
WDOG_EZZ80 .EQU 1 ; EASY Z80 WATCHDOG WDOG_EZZ80 .EQU 1 ; EASY Z80 WATCHDOG
WDOG_SKZ .EQU 2 ; SK Z80 CPU W/ 512K WDOG_SKZ .EQU 2 ; SK Z80 CPU W/ 512K
; ;
; SYSTEM SPEED CAPABILITIES
;
SPD_FIXED .EQU 0 ; PLATFORM SPEED FIXED AND CANNOT CHANGE SPEEDS
SPD_HILO .EQU 1 ; PLATFORM CAN CHANGE BETWEEN TWO SPEEDS
;
; SYSTEM SPEED CHARACTERISTICS
;
SPD_UNSUP .EQU 0 ; PLATFORM CAN CHANGE SPEEDS BUT IS UNSUPPORTED
SPD_HIGH .EQU 1 ; PLATFORM CAN CHANGE SPEED, STARTS HIGH
SPD_LOW .EQU 2 ; PLATFORM CAN CHANGE SPEED, STARTS LOW
;
#INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE #INCLUDE "build.inc" ; INCLUDE USER CONFIG, ADD VARIANT, TIMESTAMP, & ROMSIZE
; ;
#IF (BIOS == BIOS_WBW) #IF (BIOS == BIOS_WBW)
@ -488,33 +499,40 @@ SYSTIM .SET TM_Z280
; ;
; MEMORY BANK CONFIGURATION ; MEMORY BANK CONFIGURATION
; ;
WBW_ROM_R .EQU 128 ; 128K ; RESERVED ROM REQUIRED FOR ROMWBW
WBW_RAM_R .EQU 256 ; 256K ; RESERVED RAM REQUIRED FOR ROMWBW
TOT_ROM_RB .EQU (PLT_ROM_R + WBW_ROM_R)/32 ; TOTAL ROM BANKS RESERVED
TOT_RAM_RB .EQU (PLT_RAM_R + WBW_RAM_R)/32 ; TOTAL RAM BANKS RESERVED
;
#IF (BIOS == BIOS_UNA) #IF (BIOS == BIOS_UNA)
BID_ROM0 .EQU $0000 + (ROM_RESERVE / 32)
BID_RAM0 .EQU $8000 + (RAM_RESERVE / 32)
BID_ROM0 .EQU $0000 + (PLT_ROM_R / 32)
BID_RAM0 .EQU $8000 + (PLT_RAM_R / 32)
#ENDIF #ENDIF
; ;
#IF (BIOS == BIOS_WBW) #IF (BIOS == BIOS_WBW)
BID_ROM0 .EQU $00 + (ROM_RESERVE / 32)
BID_RAM0 .EQU $80 + (RAM_RESERVE / 32)
BID_ROM0 .EQU $00 + (PLT_ROM_R / 32)
BID_RAM0 .EQU $80 + (PLT_RAM_R / 32)
#ENDIF #ENDIF
BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1)) BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1))
BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1)) BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1))
BID_BOOT .EQU BID_ROM0 ; BOOT BANK
BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK
BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK
;BID_FSFAT .EQU BID_ROM0 + 3 ; FAT FILESYSTEM DRIVER BANK
BID_IMG2 .EQU BID_ROM0 + 3 ; NETWORK BOOT
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK
BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK
BID_RAMD0 .EQU BID_RAM0 ; FIRST RAM DRIVE BANK
BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK
BID_AUX .EQU BID_RAMN - 3 ; AUX BANK (BPBIOS, ETC.)
BID_BIOS .EQU BID_RAMN - 2 ; BIOS BANK
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.)
BID_COM .EQU BID_RAMN ; COMMON BANK, UPPER 32K
;
BID_RAMD0 .EQU BID_RAM0 ; FIRST RAM DRIVE BANK ^ RAM
BID_RAMDN .EQU BID_RAMN - TOT_RAM_RB ; LAST RAM DRIVE BANK | DRIVE
; ; OS BUFFERS CP/M3? -+ THESE
; ; OS BUFFERS CP/M3? | MAKE
; ; OS BUFFERS CP/M3? | UP
; ; OS BUFFERS CP/M3? | THE
BID_AUX .EQU BID_RAMN - 3 ; AUX BANK (BPBIOS, ETC.) | 256KB
BID_BIOS .EQU BID_RAMN - 2 ; BIOS BANK | RESERVED
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) | RAM
BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K -+ BANKS
BID_BOOT .EQU BID_ROM0 + 0 ; BOOT BANK -+ THESE MAKE
BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK | UP THE 128KB
BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK | RESERVED
BID_IMG2 .EQU BID_ROM0 + 3 ; NETWORK BOOT -+ ROM BANKS
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK | ROM
BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK V DRIVE
; ;
; MEMORY LAYOUT ; MEMORY LAYOUT
; ;

4
Source/Apps/Test/DMAmon/ver.inc

@ -1,5 +1,5 @@
#DEFINE RMJ 3 #DEFINE RMJ 3
#DEFINE RMN 1 #DEFINE RMN 1
#DEFINE RUP 1 #DEFINE RUP 1
#DEFINE RTP 03
#DEFINE BIOSVER "3.1.1-pre.111"
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.128"

3
Source/HBIOS/dma.asm

@ -165,6 +165,7 @@ DMACode_Len .equ $-DMACode
DMALDIR: DMALDIR:
ld (DMASource),hl ; populate the dma ld (DMASource),hl ; populate the dma
ld (DMADest),de ; register template ld (DMADest),de ; register template
dec bc
ld (DMALength),bc ld (DMALength),bc
; ;
ld hl,DMACopy ; program the ld hl,DMACopy ; program the
@ -211,6 +212,7 @@ DMACopy_Len .equ $-DMACopy
DMAOTIR: DMAOTIR:
ld (DMAOutSource),hl ; populate the dma ld (DMAOutSource),hl ; populate the dma
ld (DMAOutDest),a ; register template ld (DMAOutDest),a ; register template
dec bc
ld (DMAOutLength),bc ld (DMAOutLength),bc
; ;
ld hl,DMAOutCode ; program the ld hl,DMAOutCode ; program the
@ -262,6 +264,7 @@ DMAOut_Len .equ $-DMAOutCode
DMAINIR: DMAINIR:
ld (DMAInDest),hl ; populate the dma ld (DMAInDest),hl ; populate the dma
ld (DMAInSource),a ; register template ld (DMAInSource),a ; register template
dec bc
ld (DMAInLength),bc ld (DMAInLength),bc
; ;
ld hl,DMAInCode ; program the ld hl,DMAInCode ; program the

4
Source/HBIOS/md.asm

@ -382,7 +382,7 @@ MD_SECM:
OR A OR A
JR NZ,MD_NODMA JR NZ,MD_NODMA
#ENDIF #ENDIF
LD BC,512-1 ; COPY ONE 512B SECTOR FROM THE
LD BC,512 ; COPY ONE 512B SECTOR FROM THE
JP DMALDIR ; 4K SECTOR TO THE DISK BUFFER JP DMALDIR ; 4K SECTOR TO THE DISK BUFFER
#ENDIF #ENDIF
MD_NODMA: MD_NODMA:
@ -516,7 +516,7 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
OR A OR A
JR NZ,MD_NODMA1 JR NZ,MD_NODMA1
#ENDIF #ENDIF
LD BC,512-1 ; COPY ONE 512B SECTOR FROM THE
LD BC,512 ; COPY ONE 512B SECTOR FROM THE
CALL DMALDIR ; THE DISK BUFFER TO 4K SECTOR CALL DMALDIR ; THE DISK BUFFER TO 4K SECTOR
RET NZ ; EXIT IF DMA COPY ERROR RET NZ ; EXIT IF DMA COPY ERROR
JR MD_NODMAERR JR MD_NODMAERR

4
Source/HBIOS/rf.asm

@ -273,7 +273,7 @@ RF_RDSEC:
LD HL,(RF_DSKBUF) ; HL := DISK BUFFER ADDRESS LD HL,(RF_DSKBUF) ; HL := DISK BUFFER ADDRESS
LD A,(RF_IO) ; GET IO PORT BASE LD A,(RF_IO) ; GET IO PORT BASE
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB)) #IF (DMAENABLE & (DMAMODE=DMAMODE_ECB))
LD BC,512-1 ; READ 512 BYTES
LD BC,512 ; READ 512 BYTES
CALL DMAINIR ; USING DMA CALL DMAINIR ; USING DMA
#ELSE #ELSE
OR RF_DAT ; OFFSET TO DAT PORT OR RF_DAT ; OFFSET TO DAT PORT
@ -293,7 +293,7 @@ RF_WRSEC:
LD A,(RF_IO) ; GET IO PORT BASE LD A,(RF_IO) ; GET IO PORT BASE
OR RF_DAT ; OFFSET TO DAT PORT OR RF_DAT ; OFFSET TO DAT PORT
#IF (DMAENABLE & (DMAMODE=DMAMODE_ECB)) #IF (DMAENABLE & (DMAMODE=DMAMODE_ECB))
LD BC,512-1 ; WRITE 512 BYTES
LD BC,512 ; WRITE 512 BYTES
CALL DMAOTIR ; USING DMA CALL DMAOTIR ; USING DMA
#ELSE #ELSE
LD C,A ; PUT IN C FOR PORT IO LD C,A ; PUT IN C FOR PORT IO

Loading…
Cancel
Save