mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
RAMTEST & DSKNGTST
- Integrate RAMTEST app from Andrew into mainline build process. - Enhance DSKNGTST app to test on any arbitrary PPI port. NOTE TO USERS: RAMTEST app is currently only compatible with SBC and MBC hardware.
This commit is contained in:
@@ -34,6 +34,7 @@ setlocal & cd FDU && call Build || exit /b 1 & endlocal
|
||||
setlocal & cd Tune && call Build || exit /b 1 & endlocal
|
||||
setlocal & cd FAT && call Build || exit /b 1 & endlocal
|
||||
setlocal & cd I2C && call Build || exit /b 1 & endlocal
|
||||
setlocal & cd ramtest && call Build || exit /b 1 & endlocal
|
||||
|
||||
copy *.com %APPBIN%\
|
||||
|
||||
|
||||
@@ -12,3 +12,4 @@ setlocal & cd FDU && call Clean || exit /b 1 & endlocal
|
||||
setlocal & cd Tune && call Clean || exit /b 1 & endlocal
|
||||
setlocal & cd FAT && call Clean || exit /b 1 & endlocal
|
||||
setlocal & cd I2C && call Clean || exit /b 1 & endlocal
|
||||
setlocal & cd ramtest && call Clean || exit /b 1 & endlocal
|
||||
|
||||
@@ -2,7 +2,7 @@ OBJECTS = sysgen.com survey.com \
|
||||
syscopy.com assign.com format.com talk.com mode.com rtc.com \
|
||||
timer.com inttest.com rtchb.com ppidetst.com tstdskng.com
|
||||
OTHERS = *.hex *.com
|
||||
SUBDIRS = XM FDU FAT Tune I2C
|
||||
SUBDIRS = XM FDU FAT Tune I2C ramtest
|
||||
DEST = ../../Binary/Apps
|
||||
TOOLS =../../Tools
|
||||
|
||||
|
||||
15
Source/Apps/ramtest/Build.cmd
Normal file
15
Source/Apps/ramtest/Build.cmd
Normal file
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t80 -b -fFF loader.asm loader.bin loader.lst
|
||||
tasm -t80 -b -fFF dbgmon.asm dbgmon.bin dbgmon.lst
|
||||
|
||||
copy /Y /b loader.bin+dbgmon.bin ramtest.com
|
||||
|
||||
if errorlevel 1 goto :eof
|
||||
|
||||
copy /Y ramtest.com ..\..\..\Binary\Apps\
|
||||
6
Source/Apps/ramtest/Clean.cmd
Normal file
6
Source/Apps/ramtest/Clean.cmd
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.bin del *.bin
|
||||
if exist *.lst del *.lst
|
||||
10
Source/Apps/ramtest/Makefile
Normal file
10
Source/Apps/ramtest/Makefile
Normal file
@@ -0,0 +1,10 @@
|
||||
OBJECTS = ramtest.com
|
||||
DEST = ../../../Binary/Apps
|
||||
DOCDEST = ../../../Doc
|
||||
TOOLS = ../../../Tools
|
||||
OTHERS = loader.bin dbgmon.bin
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
ramtest.com: loader.bin dbgmon.bin
|
||||
cat loader.bin dbgmon.bin >ramtest.com
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
tasm -t80 -b loader.asm loader.bin
|
||||
tasm -t80 -b dbgmon.asm dbgmon.bin
|
||||
copy /b loader.bin+dbgmon.bin ramtest.com
|
||||
set TOOLS=../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t80 -b -fFF loader.asm loader.bin loader.lst
|
||||
tasm -t80 -b -fFF dbgmon.asm dbgmon.bin dbgmon.lst
|
||||
|
||||
copy /Y /b loader.bin+dbgmon.bin ramtest.com
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
~/RomWBW/Tools/unix/uz80as/uz80as -t z80 loader.asm loader.bin
|
||||
~/RomWBW/Tools/unix/uz80as/uz80as -t z80 dbgmon.asm dbgmon.bin
|
||||
../../../Tools/unix/uz80as/uz80as -t z80 loader.asm loader.bin
|
||||
../../../Tools/unix/uz80as/uz80as -t z80 dbgmon.asm dbgmon.bin
|
||||
cat loader.bin dbgmon.bin > ramtest.com
|
||||
|
||||
@@ -19,9 +19,10 @@ TRUE: .EQU !FALSE
|
||||
DSKY_OSC: .EQU 3000000 ; OSCILLATOR FREQ IN HZ
|
||||
;
|
||||
BDOS: .EQU TRUE ; BDOS OR DIRECT TO 8250ISH
|
||||
DSKY_PROTO: .EQU FALSE ; SET FOR DSKYNG PROTOTYPE
|
||||
;
|
||||
UART_BASE: .EQU $68 ; UART BASE IO ADDRESS
|
||||
PPI_BASE: .EQU $60 ; PPI BASE IO PORT
|
||||
PPI_BASE_DEF: .EQU $60 ; PPI BASE IO PORT
|
||||
;
|
||||
; LED SEGMENTS (BIT VALUES)
|
||||
;
|
||||
@@ -56,10 +57,10 @@ PPI_BASE: .EQU $60 ; PPI BASE IO PORT
|
||||
; 10 10 10 10 10
|
||||
; 20 20 20 20 20
|
||||
;
|
||||
PPIA: .EQU PPI_BASE + 0 ; PORT A
|
||||
PPIB: .EQU PPI_BASE + 1 ; PORT B
|
||||
PPIC: .EQU PPI_BASE + 2 ; PORT C
|
||||
PPIX: .EQU PPI_BASE + 3 ; PIO CONTROL PORT
|
||||
PPIA: .EQU 0 ; PORT A OFFSET
|
||||
PPIB: .EQU 1 ; PORT B OFFSET
|
||||
PPIC: .EQU 2 ; PORT C OFFSET
|
||||
PPIX: .EQU 3 ; PIO CONTROL PORT OFFSET
|
||||
;
|
||||
DSKY_PPIX_RD: .EQU %10010010 ; PPIX VALUE FOR READS
|
||||
DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES
|
||||
@@ -72,7 +73,15 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES
|
||||
; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279
|
||||
; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE
|
||||
;
|
||||
DSKY_PPI_IDLE: .EQU %00000110
|
||||
DSKY_PPI_IDLE: .EQU %01100000
|
||||
;
|
||||
#IF (DSKY_PROTO)
|
||||
DSKY_RDBIT .EQU 6
|
||||
DSKY_WRBIT .EQU 5
|
||||
#ELSE
|
||||
DSKY_RDBIT .EQU 2
|
||||
DSKY_WRBIT .EQU 1
|
||||
#ENDIF
|
||||
;
|
||||
DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF)
|
||||
DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON)
|
||||
@@ -90,10 +99,22 @@ DSKY_PRESCL: .EQU DSKY_OSC / 100000 ; PRESCALER
|
||||
LD SP,STACK
|
||||
;
|
||||
CALL PRTSTRD
|
||||
.DB "\r\nNextGenDSKY Test Program, v1.3, 2021-07-15$"
|
||||
.DB "\r\nNextGenDSKY$"
|
||||
;
|
||||
#IF (DSKY_PROTO)
|
||||
CALL PRTSTRD
|
||||
.DB "\r\nPPI port 0x$"
|
||||
LD A,PPI_BASE
|
||||
.DB " Prototype$"
|
||||
#ENDIF
|
||||
;
|
||||
CALL PRTSTRD
|
||||
.DB " Test Program, v1.4, 2021-07-18$"
|
||||
;
|
||||
CALL GET_BASE
|
||||
JP NZ,EXIT
|
||||
;
|
||||
CALL PRTSTRD
|
||||
.DB "\r\nDSKYng PPI base port: 0x$"
|
||||
LD A,(PPI_BASE)
|
||||
CALL PRTHEXBYTE
|
||||
CALL NEWLINE
|
||||
;
|
||||
@@ -295,27 +316,30 @@ EXIT:
|
||||
;
|
||||
DSKY_PPIWR:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
;
|
||||
LD A,(PPI_BASE)
|
||||
ADD A,PPIX
|
||||
LD C,A
|
||||
;
|
||||
; CHECK FOR WRITE MODE
|
||||
LD A,(DSKY_PPIX_VAL)
|
||||
LD A,(PPIX_VAL)
|
||||
CP DSKY_PPIX_WR
|
||||
JR Z,DSKY_PPIWR1
|
||||
;
|
||||
; SET PPI TO WRITE MODE
|
||||
LD A,DSKY_PPIX_WR
|
||||
OUT (PPIX),A
|
||||
LD (DSKY_PPIX_VAL),A
|
||||
OUT (C),A
|
||||
LD (PPIX_VAL),A
|
||||
;
|
||||
; RESTORE PORT C (MAY NOT BE NEEDED)
|
||||
LD A,DSKY_PPI_IDLE
|
||||
OUT (PPIC),A
|
||||
;
|
||||
; ; DIAGNOSTIC
|
||||
; LD A,'W'
|
||||
; CALL COUT
|
||||
DEC C
|
||||
OUT (C),A
|
||||
;
|
||||
DSKY_PPIWR1:
|
||||
;
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
@@ -324,22 +348,29 @@ DSKY_PPIWR1:
|
||||
;
|
||||
DSKY_PPIRD:
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
;
|
||||
LD A,(PPI_BASE)
|
||||
ADD A,PPIX
|
||||
LD C,A
|
||||
;
|
||||
; CHECK FOR READ MODE
|
||||
LD A,(DSKY_PPIX_VAL)
|
||||
LD A,(PPIX_VAL)
|
||||
CP DSKY_PPIX_RD
|
||||
JR Z,DSKY_PPIRD1
|
||||
;
|
||||
; SET PPI TO READ MODE
|
||||
LD A,DSKY_PPIX_RD
|
||||
OUT (PPIX),A
|
||||
LD (DSKY_PPIX_VAL),A
|
||||
OUT (C),A
|
||||
LD (PPIX_VAL),A
|
||||
;
|
||||
; ; DIAGNOSTIC
|
||||
; LD A,'R'
|
||||
; CALL COUT
|
||||
; RESTORE PORT C (MAY NOT BE NEEDED)
|
||||
LD A,DSKY_PPI_IDLE
|
||||
DEC C
|
||||
OUT (C),A
|
||||
;
|
||||
DSKY_PPIRD1:
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
@@ -365,18 +396,23 @@ DSKY_INIT:
|
||||
;
|
||||
DSKY_RES:
|
||||
;
|
||||
PUSH BC
|
||||
LD A,(PPI_BASE)
|
||||
ADD A,PPIC
|
||||
LD C,A
|
||||
; SETUP PPI
|
||||
CALL DSKY_PPIRD
|
||||
; INIT 8279 VALUES TO IDLE STATE
|
||||
LD A,DSKY_PPI_IDLE
|
||||
OUT (PPIC),A
|
||||
OUT (C),A
|
||||
; PULSE RESET SIGNAL ON 8279
|
||||
SET 7,A
|
||||
OUT (PPIC),A
|
||||
OUT (C),A
|
||||
RES 7,A
|
||||
OUT (PPIC),A
|
||||
OUT (C),A
|
||||
; DONE
|
||||
CALL DSKY_PPIIDLE
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
; COMMAND IN A
|
||||
@@ -401,7 +437,9 @@ DSKY_DOUT2:
|
||||
CALL DSKY_PPIWR
|
||||
;
|
||||
; SETUP
|
||||
LD C,PPIC
|
||||
LD A,(PPI_BASE)
|
||||
ADD A,PPIC
|
||||
LD C,A
|
||||
;
|
||||
; SET ADDRESS FIRST
|
||||
LD A,DSKY_PPI_IDLE
|
||||
@@ -417,14 +455,18 @@ DSKY_DOUT2:
|
||||
LD B,A
|
||||
;
|
||||
; ASSERT DATA BYTE VALUE
|
||||
DEC C
|
||||
DEC C
|
||||
POP AF
|
||||
OUT (PPIA),A
|
||||
OUT (C),A
|
||||
INC C
|
||||
INC C
|
||||
;
|
||||
; PULSE /WR
|
||||
RES 1,B
|
||||
RES DSKY_WRBIT,B
|
||||
OUT (C),B
|
||||
NOP ; MAY NOT BE NEEDED
|
||||
SET 1,B
|
||||
SET DSKY_WRBIT,B
|
||||
OUT (C),B
|
||||
;
|
||||
; DEASSERT /CS
|
||||
@@ -458,7 +500,9 @@ DSKY_DIN2:
|
||||
CALL DSKY_PPIRD
|
||||
;
|
||||
; SETUP
|
||||
LD C,PPIC
|
||||
LD A,(PPI_BASE)
|
||||
ADD A,PPIC
|
||||
LD C,A
|
||||
;
|
||||
; SET ADDRESS FIRST
|
||||
LD A,DSKY_PPI_IDLE
|
||||
@@ -474,14 +518,18 @@ DSKY_DIN2:
|
||||
LD B,A
|
||||
;
|
||||
; ASSERT /RD
|
||||
RES 2,B
|
||||
RES DSKY_RDBIT,B
|
||||
OUT (C),B
|
||||
;
|
||||
; GET VALUE
|
||||
IN A,(PPIA)
|
||||
DEC C
|
||||
DEC C
|
||||
IN A,(C)
|
||||
INC C
|
||||
INC C
|
||||
;
|
||||
; DEASSERT /RD
|
||||
SET 2,B
|
||||
SET DSKY_RDBIT,B
|
||||
OUT (C),B
|
||||
;
|
||||
; DEASSERT /CS
|
||||
@@ -643,6 +691,27 @@ DSKY_READ1:
|
||||
DJNZ DSKY_READ1
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
GET_BASE:
|
||||
CALL PRTSTRD
|
||||
.DB "\r\nDSKYng PPI base port [0x$"
|
||||
LD A,(PPI_BASE)
|
||||
CALL PRTHEXBYTE
|
||||
CALL PRTSTRD
|
||||
.DB "]: $"
|
||||
LD A,(PPI_BASE)
|
||||
CALL GETHEXBYTE
|
||||
JR C,GET_BASE1
|
||||
LD (PPI_BASE),A
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
GET_BASE1:
|
||||
CALL PRTSTRD
|
||||
.DB "\r\nInvalid DSKYng PPI base port value!$"
|
||||
JR GET_BASE
|
||||
;
|
||||
; OUTPUT CHARACTER FROM A
|
||||
;
|
||||
COUT:
|
||||
@@ -651,7 +720,7 @@ COUT:
|
||||
PUSH DE ;
|
||||
PUSH HL ;
|
||||
|
||||
#IF BDOS
|
||||
#IF (BDOS)
|
||||
LD C,2 ; BDOS FUNC: CONSOLE OUTPUT
|
||||
LD E,A ; CHARACTER TO E
|
||||
CALL $0005 ; CALL BDOS
|
||||
@@ -732,35 +801,6 @@ WAITKEY:
|
||||
JP Z,EXIT
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
|
||||
;
|
||||
HEXASCII:
|
||||
LD D,A
|
||||
CALL HEXCONV
|
||||
LD E,A
|
||||
LD A,D
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
CALL HEXCONV
|
||||
LD D,A
|
||||
RET
|
||||
;
|
||||
; CONVERT LOW NIBBLE OF A TO ASCII HEX
|
||||
;
|
||||
HEXCONV:
|
||||
AND 0FH ;LOW NIBBLE ONLY
|
||||
ADD A,90H
|
||||
DAA
|
||||
ADC A,40H
|
||||
DAA
|
||||
RET
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
;==================================================================================================
|
||||
; UTILITY FUNCTIONS
|
||||
@@ -957,6 +997,119 @@ PRTHEXWORDHL:
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
|
||||
;
|
||||
HEXASCII:
|
||||
LD D,A
|
||||
CALL HEXCONV
|
||||
LD E,A
|
||||
LD A,D
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
CALL HEXCONV
|
||||
LD D,A
|
||||
RET
|
||||
;
|
||||
; CONVERT LOW NIBBLE OF A TO ASCII HEX
|
||||
;
|
||||
HEXCONV:
|
||||
AND 0FH ;LOW NIBBLE ONLY
|
||||
ADD A,90H
|
||||
DAA
|
||||
ADC A,40H
|
||||
DAA
|
||||
RET
|
||||
;
|
||||
;
|
||||
;
|
||||
GETHEXBYTE:
|
||||
PUSH AF ; SAVE INCOMING VALUE
|
||||
LD C,0AH ; BDOS READ CONSOLE BUFFER
|
||||
LD DE,CONBUF
|
||||
CALL 5 ; GET EDITED STRING
|
||||
CALL NEWLINE
|
||||
POP DE ; RESTORE INCOMING TO D
|
||||
|
||||
; OK WE SHOULD NOW HAVE A STRING WITH A HEX NUMBER
|
||||
LD HL,CONBUF
|
||||
INC HL
|
||||
LD A,(HL) ; GET CHARACTER COUNT
|
||||
INC HL
|
||||
CP 3
|
||||
JR C,GHB0 ; OK IF <= 2 CHARS
|
||||
SCF ; SIGNAL ERROR
|
||||
RET ; AND RETURN
|
||||
|
||||
GHB0:
|
||||
OR A ; SET FLAGS
|
||||
JR NZ,GHB1 ; GOT CHARS, GO AHEAD
|
||||
LD A,D ; RESTORE INCOMING VALUE
|
||||
OR A ; SIGNAL SUCCESS
|
||||
RET ; AND DONE
|
||||
|
||||
GHB1:
|
||||
LD B,A ; COUNT TO B
|
||||
LD C,0 ; INITIAL VALUE
|
||||
|
||||
GHB2:
|
||||
LD A,(HL) ; GET NEXT CHAR
|
||||
INC HL
|
||||
CALL ISHEX
|
||||
RET C ; ABORT ON NON-HEX CHAR
|
||||
|
||||
; OK WE ARE HERE WHEN WE HAVE A VALID CHARACTER (0-9,A-F,A-F) NEED TO CONVERT TO BINARY
|
||||
; CHARACTER IS STILL IN A
|
||||
|
||||
CP 3AH ; TEST FOR 0-9
|
||||
JP M,GHB2C
|
||||
CP 47H ; TEST FOR A-F
|
||||
JP M,GHB2B
|
||||
CP 67H ; TEST FOR A-F
|
||||
JP M,GHB2A
|
||||
GHB2A: SUB 20H ; CHARACTER IS A-F
|
||||
GHB2B: SUB 07H ; CHARACTER IS A-F
|
||||
GHB2C: SUB 30H ; CHARACTER IS 0-9
|
||||
|
||||
RLC C ; MULTIPLY CUR VALUE BY 16
|
||||
RLC C
|
||||
RLC C
|
||||
RLC C
|
||||
ADD A,C ; ADD TO ACCUM
|
||||
LD C,A ; PUT BACK IN C
|
||||
|
||||
DJNZ GHB2 ; LOOP THRU ALL CHARS
|
||||
|
||||
LD A,C ; INTO A FOR RETURN
|
||||
OR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
|
||||
ISHEX:
|
||||
CP 30H ; CHECK IF LESS THAN CHARACTER 0
|
||||
JP M,NOTHEX
|
||||
CP 3AH ; CHECK FOR > 9
|
||||
JP M,ISHX1 ; OK, CHARACTER IS 1-9
|
||||
|
||||
CP 41H ; CHECK FOR CHARACTER LESS THAN A
|
||||
JP M,NOTHEX
|
||||
CP 47H ; CHECK FOR CHARACTERS > F
|
||||
JP M,ISHX1
|
||||
|
||||
CP 61H ; CHECK FOR CHARACTERS < A
|
||||
JP M,NOTHEX
|
||||
|
||||
CP 67H ; CHECK FOR CHARACTER > F
|
||||
JP M,ISHX1
|
||||
NOTHEX:
|
||||
SCF ; SET CARRY TO INDICATE FAIL
|
||||
RET
|
||||
|
||||
ISHX1:
|
||||
SCF
|
||||
CCF
|
||||
RET
|
||||
;
|
||||
; SHORT DELAY FUNCTIONS. NO CLOCK SPEED COMPENSATION, SO THEY
|
||||
; WILL RUN LONGER ON SLOWER SYSTEMS. THE NUMBER INDICATES THE
|
||||
; NUMBER OF CALL/RET INVOCATIONS. A SINGLE CALL/RET IS
|
||||
@@ -982,16 +1135,16 @@ ADDHLA:
|
||||
RET NC
|
||||
INC H
|
||||
RET
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
; STORAGE
|
||||
;
|
||||
DSKY_PPIX_VAL: .DB 0
|
||||
PPI_BASE: .DB PPI_BASE_DEF
|
||||
;
|
||||
CONBUF: .DB 8 ; MAXIMUM CHARS
|
||||
.DB 0 ; COUNT
|
||||
.FILL 8 ; SIZE OF BUFFER
|
||||
;
|
||||
PPIX_VAL: .DB 0
|
||||
;
|
||||
DSPBUF: .FILL 16,0
|
||||
;
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.91"
|
||||
#DEFINE BIOSVER "3.1.1-pre.92"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.91"
|
||||
db "3.1.1-pre.92"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user