From 9cc52e30d65d84e006ccfc0496e1dae7b76d93a9 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 20 Aug 2023 18:16:19 +0800 Subject: [PATCH 1/2] Update dmamon.asm --- Source/Apps/Test/DMAmon/dmamon.asm | 93 +++++++++++++++++++----------- 1 file changed, 60 insertions(+), 33 deletions(-) diff --git a/Source/Apps/Test/DMAmon/dmamon.asm b/Source/Apps/Test/DMAmon/dmamon.asm index c602d526..d13830c8 100644 --- a/Source/Apps/Test/DMAmon/dmamon.asm +++ b/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_RC .EQU 4 ; RCBUS Z80 DMA 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 -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 ; +#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 ;================================================================================================== @@ -156,17 +170,17 @@ MENULP1: CP 'N' JP Z,DMATST_N ; MEMORY COPY ITER CP '0' - JP Z,DMATST_01 + JP Z,DMATST_0 ; PULSE DMA PORT + CP '1' + JP Z,DMATST_1 ; PULSE LATCH PORT CP 'O' JP Z,DMATST_O -#IF !(DMAMODE==DMAMODE_VDG) - CP '1' - JP Z,DMATST_01 CP 'R' JP Z,DMATST_R ; TOGGLE RESET CP 'Y' - JP Z,DMATST_Y ; TOGGLE READY -#ENDIF + JP Z,DMATST_Y + cp 'L' + jp z,DMACFG_L ; SET LATCH PORT cp 'S' jp z,DMACFG_S ; SET PORT cp 'V' @@ -197,12 +211,17 @@ DMABYE: ; DMACFG_S: call PRTSTRD - .db "\n\rSet port address\n\rPort:$" + .db "\n\rSet DMA port address\n\rPort:$" call HEXIN ld hl,dmaport 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 jp MENULP ; @@ -234,11 +253,17 @@ DMATST_N: CALL DMAMemTestIter JP MENULP ; -DMATST_01: +DMATST_0: 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: call PRTSTRD @@ -255,7 +280,7 @@ DMATST_D: DMATST_Y: call PRTSTRD .db "\n\rPerforming Ready Bit Test\n\r$" - CALL DMA_ReadyT + CALL DMA_ReadyY JP MENULP ; DMATST_R: @@ -289,6 +314,10 @@ DISPM: call PRTSTRD .db ", Port=0x$" LD A,(dmaport) ; DISPLAY CALL PRTHEXBYTE ; DMA PORT + call PRTSTRD + .db ", Latch Port=0x$" + ld A,(dmalach) + CALL PRTHEXBYTE ; DMA PORT ; #IF (INTENABLE) ; @@ -351,7 +380,7 @@ DMA_INIT: CALL PRTHEXBYTE ; #IF !(DMAMODE==DMAMODE_VDG) - ld a,(dmautil) + ld a,(dmalach) ld c,a LD A,DMA_FORCE out (c),a ; force ready off @@ -417,6 +446,7 @@ DMA_DEV_STR: .TEXT "Z280$" .TEXT "RCBUS$" .TEXT "MBC$" + .TEXT "DUODYNE$" .TEXT "DATAGEAR$" ; DMA_SPD_STR: @@ -483,7 +513,7 @@ DMABUF .TEXT "0123456789abcdef" DMA_ReadyO: call PRTSTRD .db "\r\nOutputing string to port 0x$" - ld a,DMAIOTST + ld a,(tstport) call PRTHEXBYTE call NEWLINE ; @@ -491,7 +521,7 @@ DMA_ReadyO: IOLoop: push bc call NEWLINE ld hl,DMABUF - ld a,DMAIOTST + ld a,(tstport) ld bc,16 ; call DMAOTIR @@ -502,16 +532,17 @@ IOLoop: push bc 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 .db "\r\nPulsing port 0x$" - sub '0' ; Calculate - ld c,a - ld a,(dmaport) ; Port to - add a,c call PRTHEXBYTE call NEWLINE ld c,a ; toggle @@ -543,12 +574,9 @@ dlylp: dec bc ; TOGGLE READY BIT ;================================================================================================== ; -DMA_ReadyT: +DMA_ReadyY: call NEWLINE -#IF !(DMAMODE==DMAMODE_VDG) - -#ENDIF - ld a,(dmautil) + ld a,(dmalach) ld c,a ; toggle ld b,$20 ; loop counter portlp2:push bc @@ -558,14 +586,12 @@ portlp2:push bc .db ": ON$" call delay ld a,$FF -; ld c,DMABASE+1 out (c),a call PRTSTRD .db " -> OFF$" call delay call PRTSTRD .db "\r \r$" -; ld c,DMABASE+1 ld a,0 out (c),a pop bc @@ -1169,8 +1195,9 @@ CST: USEINT .DB FALSE ; USE INTERRUPTS FLAG counter .dw 0 dmaport .db DMABASE -dmautil .db DMABASE+1 +dmalach .db DMALATCH dmaxfer .db DMA_XMODE +tstport .db DMAIOTST dmavbs .db 0 SAVSTK: .DW 2 .FILL 64 From 59d04f24463b375f2d7f37010cd61688aced932d Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 20 Aug 2023 18:18:55 +0800 Subject: [PATCH 2/2] Update std.asm --- Source/HBIOS/std.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 28a2d905..4de1147b 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -283,6 +283,7 @@ DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA DMAMODE_MBC .EQU 5 ; MBC DMAMODE_DUO .EQU 6 ; DUO +DMAMODE_VDG .EQU 7 ; VELESOFT DATAGEAR ; ; KEYBOARD MODE SELECTIONS ;