Browse Source

Update dmamon.asm

pull/355/head
b1ackmai1er 2 years ago
parent
commit
9cc52e30d6
  1. 93
      Source/Apps/Test/DMAmon/dmamon.asm

93
Source/Apps/Test/DMAmon/dmamon.asm

@ -12,12 +12,26 @@ DMAMODE_Z180 .EQU 2 ; Z180 INTEGRATED DMA
DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA
DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA
DMAMODE_MBC .EQU 5 ; MBC DMAMODE_MBC .EQU 5 ; MBC
DMAMODE_VDG .EQU 6 ; VELESOFT DATAGEAR
DMAMODE_DUO .EQU 6 ; DUO
DMAMODE_VDG .EQU 7 ; VELESOFT DATAGEAR
;
DMAMODE .EQU DMAMODE_DUO ; SELECT DMA DEVICE FOR TESTING
;
;==================================================================================================
; SOME DEFAULT PLATFORM CONFIGURATIONS
;==================================================================================================
; ;
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
DMAMODE .EQU DMAMODE_MBC ; SELECT DMA DEVICE FOR TESTING
DMALATCH .EQU DMABASE+1 ; DMA: DMA LATCH ADDRESS
DMAIOTST .EQU $68 ; AN OUTPUT PORT FOR TESTING - 16C450 SERIAL OUT DMAIOTST .EQU $68 ; AN OUTPUT PORT FOR TESTING - 16C450 SERIAL OUT
; ;
#IF (DMAMODE==DMAMODE_DUO)
DMABASE .SET $40 ; DMA: DMA0 BASE ADDRESS
;DMABASE .SET $41 ; DMA: DMA1 BASE ADDRESS
DMALATCH .SET $43 ; DMA: DMA LATCH ADDRESS
DMAIOTST .SET $58 ; AN OUTPUT PORT FOR TESTING - 16C450 SERIAL OUT
#ENDIF
;
;================================================================================================== ;==================================================================================================
; HELPER MACROS AND EQUATES ; HELPER MACROS AND EQUATES
;================================================================================================== ;==================================================================================================
@ -156,17 +170,17 @@ MENULP1:
CP 'N' CP 'N'
JP Z,DMATST_N ; MEMORY COPY ITER JP Z,DMATST_N ; MEMORY COPY ITER
CP '0' CP '0'
JP Z,DMATST_01
JP Z,DMATST_0 ; PULSE DMA PORT
CP '1'
JP Z,DMATST_1 ; PULSE LATCH PORT
CP 'O' CP 'O'
JP Z,DMATST_O JP Z,DMATST_O
#IF !(DMAMODE==DMAMODE_VDG)
CP '1'
JP Z,DMATST_01
CP 'R' CP 'R'
JP Z,DMATST_R ; TOGGLE RESET JP Z,DMATST_R ; TOGGLE RESET
CP 'Y' CP 'Y'
JP Z,DMATST_Y ; TOGGLE READY
#ENDIF
JP Z,DMATST_Y
cp 'L'
jp z,DMACFG_L ; SET LATCH PORT
cp 'S' cp 'S'
jp z,DMACFG_S ; SET PORT jp z,DMACFG_S ; SET PORT
cp 'V' cp 'V'
@ -197,12 +211,17 @@ DMABYE:
; ;
DMACFG_S: DMACFG_S:
call PRTSTRD call PRTSTRD
.db "\n\rSet port address\n\rPort:$"
.db "\n\rSet DMA port address\n\rPort:$"
call HEXIN call HEXIN
ld hl,dmaport ld hl,dmaport
ld (hl),a ld (hl),a
inc hl
inc a
jp MENULP
;
DMACFG_L:
call PRTSTRD
.db "\n\rSet Latch port address\n\rPort:$"
call HEXIN
ld hl,dmalach
ld (hl),a ld (hl),a
jp MENULP jp MENULP
; ;
@ -234,11 +253,17 @@ DMATST_N:
CALL DMAMemTestIter CALL DMAMemTestIter
JP MENULP JP MENULP
; ;
DMATST_01:
DMATST_0:
call PRTSTRD call PRTSTRD
.db "\n\rPerforming Port Selection Test\n\r$"
CALL DMA_Port01
JP MENULP
.db "\n\rPerforming DMA Port Selection Test\n\r$"
CALL DMA_Port0
ret
DMATST_1:
call PRTSTRD
.db "\n\rPerforming Latch Port Selection Test\n\r$"
CALL DMA_Port1
ret
; ;
DMATST_O: DMATST_O:
call PRTSTRD call PRTSTRD
@ -255,7 +280,7 @@ DMATST_D:
DMATST_Y: DMATST_Y:
call PRTSTRD call PRTSTRD
.db "\n\rPerforming Ready Bit Test\n\r$" .db "\n\rPerforming Ready Bit Test\n\r$"
CALL DMA_ReadyT
CALL DMA_ReadyY
JP MENULP JP MENULP
; ;
DMATST_R: DMATST_R:
@ -289,6 +314,10 @@ DISPM: call PRTSTRD
.db ", Port=0x$" .db ", Port=0x$"
LD A,(dmaport) ; DISPLAY LD A,(dmaport) ; DISPLAY
CALL PRTHEXBYTE ; DMA PORT CALL PRTHEXBYTE ; DMA PORT
call PRTSTRD
.db ", Latch Port=0x$"
ld A,(dmalach)
CALL PRTHEXBYTE ; DMA PORT
; ;
#IF (INTENABLE) #IF (INTENABLE)
; ;
@ -351,7 +380,7 @@ DMA_INIT:
CALL PRTHEXBYTE CALL PRTHEXBYTE
; ;
#IF !(DMAMODE==DMAMODE_VDG) #IF !(DMAMODE==DMAMODE_VDG)
ld a,(dmautil)
ld a,(dmalach)
ld c,a ld c,a
LD A,DMA_FORCE LD A,DMA_FORCE
out (c),a ; force ready off out (c),a ; force ready off
@ -417,6 +446,7 @@ DMA_DEV_STR:
.TEXT "Z280$" .TEXT "Z280$"
.TEXT "RCBUS$" .TEXT "RCBUS$"
.TEXT "MBC$" .TEXT "MBC$"
.TEXT "DUODYNE$"
.TEXT "DATAGEAR$" .TEXT "DATAGEAR$"
; ;
DMA_SPD_STR: DMA_SPD_STR:
@ -483,7 +513,7 @@ DMABUF .TEXT "0123456789abcdef"
DMA_ReadyO: DMA_ReadyO:
call PRTSTRD call PRTSTRD
.db "\r\nOutputing string to port 0x$" .db "\r\nOutputing string to port 0x$"
ld a,DMAIOTST
ld a,(tstport)
call PRTHEXBYTE call PRTHEXBYTE
call NEWLINE call NEWLINE
; ;
@ -491,7 +521,7 @@ DMA_ReadyO:
IOLoop: push bc IOLoop: push bc
call NEWLINE call NEWLINE
ld hl,DMABUF ld hl,DMABUF
ld a,DMAIOTST
ld a,(tstport)
ld bc,16 ld bc,16
; ;
call DMAOTIR call DMAOTIR
@ -502,16 +532,17 @@ IOLoop: push bc
ret ret
; ;
;================================================================================================== ;==================================================================================================
; PULSE PORT (COMMON ROUTINE WHERE A CONTAINS THE ASCII PORT OFFSET)
; PULSE PORT
;================================================================================================== ;==================================================================================================
; ;
DMA_Port01:
DMA_Port0:
ld a,(dmaport)
jr DMA_Port
DMA_Port1:
ld a,(dmalach)
DMA_Port:
call PRTSTRD call PRTSTRD
.db "\r\nPulsing port 0x$" .db "\r\nPulsing port 0x$"
sub '0' ; Calculate
ld c,a
ld a,(dmaport) ; Port to
add a,c
call PRTHEXBYTE call PRTHEXBYTE
call NEWLINE call NEWLINE
ld c,a ; toggle ld c,a ; toggle
@ -543,12 +574,9 @@ dlylp: dec bc
; TOGGLE READY BIT ; TOGGLE READY BIT
;================================================================================================== ;==================================================================================================
; ;
DMA_ReadyT:
DMA_ReadyY:
call NEWLINE call NEWLINE
#IF !(DMAMODE==DMAMODE_VDG)
#ENDIF
ld a,(dmautil)
ld a,(dmalach)
ld c,a ; toggle ld c,a ; toggle
ld b,$20 ; loop counter ld b,$20 ; loop counter
portlp2:push bc portlp2:push bc
@ -558,14 +586,12 @@ portlp2:push bc
.db ": ON$" .db ": ON$"
call delay call delay
ld a,$FF ld a,$FF
; ld c,DMABASE+1
out (c),a out (c),a
call PRTSTRD call PRTSTRD
.db " -> OFF$" .db " -> OFF$"
call delay call delay
call PRTSTRD call PRTSTRD
.db "\r \r$" .db "\r \r$"
; ld c,DMABASE+1
ld a,0 ld a,0
out (c),a out (c),a
pop bc pop bc
@ -1169,8 +1195,9 @@ CST:
USEINT .DB FALSE ; USE INTERRUPTS FLAG USEINT .DB FALSE ; USE INTERRUPTS FLAG
counter .dw 0 counter .dw 0
dmaport .db DMABASE dmaport .db DMABASE
dmautil .db DMABASE+1
dmalach .db DMALATCH
dmaxfer .db DMA_XMODE dmaxfer .db DMA_XMODE
tstport .db DMAIOTST
dmavbs .db 0 dmavbs .db 0
SAVSTK: .DW 2 SAVSTK: .DW 2
.FILL 64 .FILL 64

Loading…
Cancel
Save