diff --git a/Source/Apps/ramtest/dbgmon.asm b/Source/Apps/ramtest/dbgmon.asm index 393fafd5..bcf8b323 100644 --- a/Source/Apps/ramtest/dbgmon.asm +++ b/Source/Apps/ramtest/dbgmon.asm @@ -908,6 +908,31 @@ FILL_MEM: DORAMTEST: +; VERIFY DATA BUS FUNCTIONALITY BEFORE STARTING MEMORY TEST + LD A,$80 ; FIRST 32KB PAGE ONLY + LD (PAGE_NUM),A ; STORE WORKING PAGE NUMBER + OUT (MPCL_ROM),A ; SWITCH OUT LOWER 32KB ROM PAGE + OUT (MPCL_RAM),A ; SWITCH IN LOWER 32KB RAM PAGE + LD A,$00 ; INITIALIZE A TO 0 + +DATABUSCHECK: + LD ($0000),A ; WRITE TO LOWEST RAM ADDRESS + LD C,($0000) ; READ VALUE FROM LOWEST RAM ADDRESS + CP C ; IS IT SAME AS WRITTEN? + JP NZ,DATABUSFAIL ; DATA BUS FAIL HANDLER ROUTINE + INC A ; GET NEXT VALUE + JP NZ,DATABUSCHECK ; REPEAT FOR ALL 256 VALUES + +DATABUSFAIL: + PUSH A ; STORE FAILED VALUE + LD HL,TXT_DATA_BUS_FAIL ; POINT AT DATA BUS FAIL TEXT + CALL MSG ; PRINT DATA BUS FAIL LABEL + POP A ; RETRIEVE FAILED VALUE + CALL HXOUT ; SHOW VALUE THAT FAILED + LD HL,TCRLF ; CR & LF + CALL MSG ; DISPLAY IT + JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP + MEMSIZELOOP: LD HL,TXT_RAM_TEST_MAIN ; POINT AT RAM TEST MAIN MENU TEXT CALL MSG ; PRINT MENU TEXT LABEL @@ -1139,6 +1164,11 @@ TXT_RAM_FAIL: .DB "RAM FAIL, 32KB PAGE NUMBER: " .DB CR,LF,ENDT +TXT_DATA_BUS_FAIL: + .DB CR,LF + .DB "DATA BUS FAIL, VALUE =" + .DB ENDT + TXT_SKIP_16: .DB CR,LF .DB "SKIPPING PAGE 0F "