Browse Source

Added support for 256k in memory test

Per Mårtensson 4 months ago
parent
commit
ee9724fefd

+ 1 - 0
hw/block_monroe_oc8820_r3.00

@@ -9,4 +9,5 @@ READY: start 0x03dd end 0x03fb type bytedata
 ERROR1: start 0x686 end 0x06af type bytedata
 ERROR3: start 0x7a1 end 0x07c9 type bytedata
 DB: start 0x541 end 0x55d  type bytedata
+memtestval: start 0x122 end 0x132   type bytedata
 

+ 1 - 1
monroe-diagnosticrom/inc/memtestmarch.asm

@@ -24,7 +24,7 @@ memtestmarch2:
 		ld a,0f0h		;00b0  ?????
 		out (0c8h),a
 		spt_ld_iya7
-		out (0c5h),a		;00bf Program map B base
+		out (0c5h),a		;This should be start floppy before memory test ends
 		spt_ld_iya6
 		out (0c0h),a		;00bf Program map B base
 

+ 12 - 27
monroe-diagnosticrom/inc/trs80music.asm

@@ -20,29 +20,14 @@ playmusic:	;music routine
 		or	a
 		jr	z,.rest			; zero frequency: rest
 
-
-		ld	a,2
 	.cycle:					; tone cycle.  First low part of square wave
 		ld	b,(hl)
-		out	($FF),a
+		out	(0d4h),a
 	.loophalf:
 		nop12
-		djnz	.loophalf
-		xor	3			; invert the cassette bits
-
-		ld	b,(hl)
-		out	($FF),a
-	.loophalf2:
 		nop12
-		djnz	.loophalf2
-		xor	3			; invert the cassette bits
-
-		ld	b,(hl)
-		out	($FF),a
-	.loophalf3:
 		nop12
-		djnz	.loophalf3
-		xor	3			; invert the cassette bits
+		djnz	.loophalf
 
 		bit	1,a
 		jr	nz,.cycle
@@ -75,22 +60,22 @@ playmusic:	;music routine
 		jr	.getnote
 
 	.end:
-		ld	a,0
-		out	($FF),a
+		ld	a,080h
+		out	(0d4h),a
 		ret
 
 tones_welcome:
 		db	$60,$40
 		db	$00,$00 ;end
 
-tones_vram:	db	$10,$50 ;each note is first byte duration
-		db	$10,$90 ;then next byte frequency -- the higher the second byte, the lower the frequency
-		db	$10,$50
-		db	$10,$90
-		db	$10,$50
-		db	$10,$90 
-		db	$10,$50
-		db	$60,$c0
+tones_vram:	db	$10,$81 ;each note is first byte duration
+		db	$10,$80 ;then next byte frequency -- the higher the second byte, the lower the frequency
+		db	$10,$81
+		db	$10,$80
+		db	$10,$81
+		db	$10,$80 
+		db	$10,$81
+		db	$10,$80
 		; db	$40,$00 ;rest
 		db	$00,$00 ;end
 

+ 59 - 11
monroe-diagnosticrom/monroeoc8800diag.asm

@@ -66,13 +66,11 @@ screen_clear_continue:
 	;select screen memory
 	ld a,004h			;0541 Select display memory
 	out (0c8h),a		;0543 Output to screen Map and system control
-	;
-	;ld a,0a0h
-	;out (0c5h),a		;00b2 Map and system control
+
 test_vram:
 		SPTHREAD_BEGIN				; set up to begin running threaded code
 		SPT_SKIP_NMIVEC
-		;dw spt_playmusic, tones_welcome
+		dw spt_playmusic, tones_welcome
 
 		dw spt_select_test, tp_vram
 		dw memtestmarch				; test the VRAM
@@ -105,13 +103,21 @@ test_vram:
 		;dw spt_playmusic, tones_vramgood	; play the VRAM good tones
 
 	.vram_continue:
-		MAC_SPT_CON_GOTO 3,0
+		MAC_SPT_CON_GOTO 1,0
+		dw spt_check_size
+
+		dw spt_jp_256_fail, .skip256
 
+		dw spt_con_print, msg_256k
+		dw spt_select_test, tp_16k_256			; load the first test
+		dw spt_jp, .start
+	.skip256:
+		dw spt_con_print, msg_128k
 		dw spt_select_test, tp_16k			; load the first test
 		dw spt_jp, .start
 
 
-	.start	dw spt_con_goto
+	.start:	dw spt_con_goto
 				MAC_SPT_CON_OFFSET 3,0
 
 	.loop:	dw spt_announcetest 			; announce what test we are about to run
@@ -141,11 +147,27 @@ spt_prepare_display:
 		dw spt_con_print, msg_banner		; print the banner
 		dw spt_print_charset
 		dw spt_exit
+spt_check_size:
+		; Check if 256k memory or 128k
+		ld hl,0c000h	;
+		ld a,0a0h		; 
+		ld b,00h		;
+		out (0c5h),a	; Select memory bank 9
+		ld (hl),b		;
+		dec b			;
+		inc a			; 
+		out (0c5h),a	; Select memory bank 1
+		ld (hl),b		;
+		dec a			;
+		out (0c5h),a	; Select memory bank 9
+		ld b,(hl)		;
 
+		ret
 spt_check_vram_contents:
 		pop	bc
 		ld	a,b
 		ld	d,c
+
 ; confirm that all of VRAM contains the value in register A
 check_vram_contents:
 		ld	hl,VBASE
@@ -195,10 +217,9 @@ spt_sim_error:
 
 
 ; test if the error is $FF (all bits bad)
-spt_jp_all_bits_bad:
+spt_jp_256_fail:
 		pop	hl				; get the address for jumping if match
-		ld	a,$FF				; check for all bits bad
-		cp	e
+		inc b
 		ret	nz				; return without jump if there is NOT a match
 		ld	sp,hl				; else jump to the requested location
 		ret
@@ -433,10 +454,20 @@ label_dram16k6:	dbz "16K DRAM 5 C000-FFFF "
 label_dram16k7:	dbz "16K DRAM 6 C000-FFFF "
 label_dram16k8:	dbz "16K DRAM 7 C000-FFFF "
 
+label_dram16k9:		dbz "16K DRAM 8 C000-FFFF "
+label_dram16k10:	dbz "16K DRAM 9 C000-FFFF "
+label_dram16k11:	dbz "16K DRAM 10 C000-FFFF "
+label_dram16k12:	dbz "16K DRAM 11 C000-FFFF "
+label_dram16k13:	dbz "16K DRAM 12 C000-FFFF "
+label_dram16k14:	dbz "16K DRAM 13 C000-FFFF "
+label_dram16k15:	dbz "16K DRAM 14 C000-FFFF "
+label_dram16k16:	dbz "16K DRAM 15 C000-FFFF "
 msg_banner:	dbz "Monroe OC8820 TEST ROM -- FRANK IZ8DWF / DAVE KI3V / ADRIAN BLACK"
 msg_charset:	dbz "-CHARACTER SET-"
 ; msg_testing:	db " ", " "+$80, "t"+$80, "e"+$80, "s"+$80, "t"+$80, " "+$80, "  ", 0
 msg_testing:	dbz "..TEST.. "
+msg_128k:	dbz "128K machine"
+msg_256k:	dbz "256K machine"
 msg_testok:	dbz "---OK--- "
 msg_biterrs:	dbz "BIT ERRS "
 msg_ok7bit:	dbz "OK! (7-BIT MODEL 1)"
@@ -483,10 +514,27 @@ tp_16k:		dw	$4000, $C000, label_dram16k1, $a100,$31e0
 			dw	$4000, $C000, label_dram16k4, $0000,$33c0
 			dw	$4000, $C000, label_dram16k5, $2000,$3460
 			dw	$4000, $C000, label_dram16k6, $4020,$3500
-			dw	$4000, $C000, label_dram16k7, $6020,$35a0
-			dw	$4000, $C000, label_dram16k8, $8020,$3640
+			dw	$4000, $C000, label_dram16k7, $6000,$35a0
+			dw	$4000, $C000, label_dram16k8, $8000,$3640
 			dw	$0000, tp_16k
 
+tp_16k_256:	dw	$4000, $C000, label_dram16k1, $a100,$31e0
+			dw	$4000, $C000, label_dram16k2, $c100,$3280
+			dw	$4000, $C000, label_dram16k3, $e100,$3320
+			dw	$4000, $C000, label_dram16k4, $0000,$33c0
+			dw	$4000, $C000, label_dram16k5, $2000,$3460
+			dw	$4000, $C000, label_dram16k6, $4000,$3500
+			dw	$4000, $C000, label_dram16k7, $6000,$35a0
+			dw	$4000, $C000, label_dram16k8, $8000,$3640
+			dw	$4000, $C000, label_dram16k9, $a000,$3230
+			dw	$4000, $C000, label_dram16k10, $c000,$32d0
+			dw	$4000, $C000, label_dram16k11, $e000,$3370
+			dw	$4000, $C000, label_dram16k12, $0100,$3410
+			dw	$4000, $C000, label_dram16k13, $2100,$34b0
+			dw	$4000, $C000, label_dram16k14, $4120,$3550
+			dw	$4000, $C000, label_dram16k15, $6100,$35f0
+			dw	$4000, $C000, label_dram16k16, $8100,$3690
+			dw	$0000, tp_16k
 	
 set_regs_start:
 	defb 0b5h		;005a io port CRT register select

BIN
monroe-diagnosticrom/monroeoc8800diag.bin


+ 121 - 96
monroe-diagnosticrom/monroeoc8800diag.hex

@@ -1,103 +1,128 @@
 :10000000F3ED56AFD3C0D3C4D3C5D3C6D3C7D3D46F
-:10001000D3D8214504C37902C384023E80D3D43EA1
+:10001000D3D821E505C3A502C3B0023E80D3D43EA8
 :1000200005D3A33E68D3A33EF0D3C83E04D3C83162
-:100030003300C98C046800FFFFFFFFFFFFFFFFFFD5
+:100030003300C92C066800FFFFFFFFFFFFFFFFFF33
 :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
 :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
-:10006000FFFFFFFFFFFFED458404E903B104F60045
-:100070008F048000BE0059028C0478008305C903F8
-:10008000BE009F054031960137017C008305DD03EA
-:100090009F05E0318404F1038C049C009F05E0314E
-:1000A0007901A3048F04B2008305BF030E028C0400
-:1000B000B6008305B5035E019C008C04A000D9083E
-:1000C000EB2100003908D931CB00C9AF05830559B0
-:1000D0000330028704C1785121003001FE0F77ED13
-:1000E000A1EADE0021003001FE0F7AEDA12005EA31
-:1000F000EB00B7C937C9D03E40BB280237C9D90881
-:10010000EB2100003908D9310B01C9D5004000931B
-:10011000042B01D500BFFF93042B01D500AAAA939D
-:10012000042B01D500555593042B018704D137C901
-:10013000E13EFFBBC0F9C9E13E40BBC0F9C9E13EA9
-:1001400000BBC0F9C9FD6E04FD6605C9FD6E06FD64
-:100150006607C9FD7E09DD67FD7E08DD6FC9E10127
-:100160000A00FD09FD7E00FD8601C0FD4E02FD4630
-:1001700003FD210000FD09F9C9D908EB2100003970
-:1001800008D9318601C95301450184058305AB03B4
-:10019000CC05EEFF8704D908EB2100003908D931DE
-:1001A000A301C9450184058305AB03CC05EEFF8798
-:1001B00004D908EB2100003908D931BE01C94C012E
-:1001C00007020020C6013EFFBB28212FBB282916AD
-:1001D00008CB0330052143061803213D0631E10118
-:1001E000C907020020E7011520E7181631F001C900
-:1001F00007020080F601180A31FC01C907020080DD
-:100200000202D9F9EBD9C9C10B78B120FBC93E0470
-:10021000D3C83E370608CB033005DD77011804DD6F
-:1002200036012EDD23DD233D10ECAFD3C8C9C1C993
-:10023000DD7C67DD7D6F3E00D908EB2100003908C9
-:10024000D9314502C99F05903983059B039F05005D
-:100250003A2E02000160028704DD21003001FE0F0A
-:100260003E04D3C83E20DD77013CDD23DD23EDA134
-:10027000EA6602AFD3C8C9EDB34E23462378A72060
-:10028000F6C31800AF01B90E217604D3B83CEDA334
-:1002900020F9C31B0020344B205652414D203330EF
-:1002A00030302D33464645200031364B20445241F4
-:1002B0004D203020433030302D4646464620003118
-:1002C000364B204452414D203120433030302D46B2
-:1002D000464646200031364B204452414D203220C4
+:10006000FFFFFFFFFFFFED457007A3072406E50430
+:10007000510624012F068400D80085022C067C003E
+:100080002307C504D8003F074031C2016301800047
+:100090002307D9043F07A030EF005E01AA00230721
+:1000A000A404240641052C06B60023079704240661
+:1000B000ED042C06B6003F07E031A50143062F06EC
+:1000C000CC002307BB043A022C06D0002307B1045E
+:1000D0008A01B6002C06BA00D908EB2100003908C5
+:1000E000D931E500C94F0723073B045C02270621ED
+:1000F00000C03EA00600D3C570053CD3C5703DD3FB
+:10010000C546C9C1785121003001FE0F77EDA1EA43
+:100110000C0121003001FE0F7AEDA12005EA190142
+:10012000B7C937C9D03E40BB280237C9D908EB212F
+:1001300000003908D9313901C9030140003306599B
+:10014000010301BFFF330659010301AAAA3306596F
+:100150000103015555330659012706D137C9E1047A
+:10016000C0F9C9E13E40BBC0F9C9E13E00BBC0F9DE
+:10017000C9FD6E04FD6605C9FD6E06FD6607C9FD75
+:100180007E09DD67FD7E08DD6FC9E1010A00FD091A
+:10019000FD7E00FD8601C0FD4E02FD4603FD2100EF
+:1001A00000FD09F9C9D908EB2100003908D931B29D
+:1001B00001C97F017101240723078D046C07EEFF3D
+:1001C0002706D908EB2100003908D931CF01C971C0
+:1001D00001240723078D046C07EEFF2706D908EBDF
+:1001E0002100003908D931EA01C978013302002021
+:1001F000F2013EFFBB28212FBB28291608CB033074
+:100200000521D107180321CB07310D02C9330200A4
+:100210002013021520E71816311C02C93302008092
+:100220002202180A312802C9330200802E02D9F9AD
+:10023000EBD9C9C10B78B120FBC93E04D3C83E3706
+:100240000608CB033005DD77011804DD36012EDD0D
+:1002500023DD233D10ECAFD3C8C9C1C9DD7C67DD08
+:100260007D6F3E00D908EB2100003908D9317102B9
+:10027000C93F07903923077D043F07003A5A02001F
+:10028000018C022706DD21003001FE0F3E04D3C899
+:100290003E20DD77013CDD23DD23EDA1EA9202AFB4
+:1002A000D3C8C9EDB34E23462378A720F6C3180060
+:1002B000AF01B90E211606D3B83CEDA320F9C31B3C
+:1002C0000020344B205652414D20333030302D33F6
+:1002D000464645200031364B204452414D203020C7
 :1002E000433030302D46464646200031364B2044C0
-:1002F00052414D203320433030302D464646462073
-:100300000031364B204452414D20342043303030B0
+:1002F00052414D203120433030302D464646462075
+:100300000031364B204452414D20322043303030B2
 :100310002D46464646200031364B204452414D2062
-:100320003520433030302D46464646200031364B8E
-:10033000204452414D203620433030302D46464631
-:1003400046200031364B204452414D203720433067
-:1003500030302D4646464620004D6F6E726F652048
-:100360004F4338383230205445535420524F4D209B
-:100370002D2D204652414E4B20495A384457462095
-:100380002F2044415645204B493356202F204144CD
-:100390005249414E20424C41434B002D434841526B
-:1003A0004143544552205345542D002E2E5445535D
-:1003B000542E2E20002D2D2D4F4B2D2D2D20004263
-:1003C0004954204552525320004F4B212028372DAD
-:1003D000424954204D4F44454C203129004F4B2178
-:1003E0002028382D4249542900FE0F00309502196B
-:1003F00006004000C0A90200A1E031004000C0BFDB
-:100400000200C18032004000C0D50200E12033006C
-:100410004000C0EB020000C033004000C0010300F8
-:10042000206034004000C017032040003500400029
-:10043000C02D032060A035004000C0430320804051
-:10044000360000F103B504CFB837EFB40101A106BF
-:100450004848044405EAA30848480444010003C18D
-:10046000A5024848A7024848A8020303A9020303BB
-:10047000AA02574E00006950560B19031818000BBA
-:1004800020000000FDE1C9D9F9EBD9C9E1F9C9E1C2
-:10049000D8F9C9E1D0F9C9E1D908EB210000390840
-:1004A000D9F9C93EF0D3C8FD7E07D3C5FD7E06D37A
-:1004B000C0AF5F57FD6E02FD6603440E012F772F1C
-:1004C00002BE2806FE0028F618041EFF184DFD4E39
-:1004D00000FD4601FD6E02FD660372230B79B0201C
-:1004E000F9FD4E00FD4601FD6E02FD66037EBA2851
-:1004F00004AAB35F7A2F77230B79B020F0FD4E006A
-:10050000FD4601FD6E02FD66037E2FBA2804AAB3E4
-:100510005F7A72230B79B020F01804186118AFFDD0
-:100520004E00FD4601FD6E02FD6603092B7EBA28D2
-:1005300004AAB35F7A2F772B0B79B020F0FD4E0021
-:10054000FD4601FD6E02FD6603092B7E2FBA2804CD
-:10055000AAB35F7A722B0B79B020F0FD4E00FD46F6
-:1005600001FD6E02FD6603092B7EBA2804AAB35F63
-:100570007A2B0B79B020F27AFE001655289F97B39C
-:10058000C837C9E13E04D3C87EB7280ADD7701DD4C
-:1005900023DD232318F2AFD3C8C9DD210030C9DD24
-:1005A000E1C9DD7DE6AFC6A0DD6F3002DD24C921E3
-:1005B000003001FE0F3E04D3C836002336200BED79
-:1005C000A1EAB905AFDD210030D3C8C9C1DD09C931
-:1005D000E14E79B7283A237EB728263E0246D3FF5C
-:1005E000180010FCEE0346D3FF180010FCEE034683
-:1005F000D3FF180010FCEE03CB4F20E10D20DE18D6
-:100600000B06001800180010FA0D20F57E2318C103
-:100610003E00D3FFC96040000010501090105010F1
-:100620009010501090105060C0000003C003B00440
-:10063000A004900480057005604050000040302008
-:1006400000000010C020000000FF30000044C08007
-:03065000000000A7
+:100320003320433030302D46464646200031364B90
+:10033000204452414D203420433030302D46464633
+:1003400046200031364B204452414D203520433069
+:1003500030302D46464646200031364B204452412F
+:100360004D203620433030302D4646464620003161
+:10037000364B204452414D203720433030302D46FB
+:10038000464646200031364B204452414D2038200D
+:10039000433030302D46464646200031364B20440F
+:1003A00052414D203920433030302D4646464620BC
+:1003B0000031364B204452414D2031302043303003
+:1003C000302D46464646200031364B204452414DA2
+:1003D00020313120433030302D4646464620003112
+:1003E000364B204452414D20313220433030302DA5
+:1003F00046464646200031364B204452414D20317E
+:100400003320433030302D46464646200031364BAF
+:10041000204452414D20313420433030302D464667
+:100420004646200031364B204452414D2031352084
+:10043000433030302D4646464620004D6F6E726F79
+:1004400065204F4338383230205445535420524FA2
+:100450004D202D2D204652414E4B20495A384457AD
+:1004600046202F2044415645204B493356202F200B
+:1004700041445249414E20424C41434B002D434898
+:1004800041524143544552205345542D002E2E5481
+:100490004553542E2E20003132384B206D61636855
+:1004A000696E65003235364B206D616368696E6533
+:1004B000002D2D2D4F4B2D2D2D2000424954204530
+:1004C00052525320004F4B212028372D42495420AF
+:1004D0004D4F44454C203129004F4B212028382DC9
+:1004E0004249542900FE0F0030C102A70700400016
+:1004F000C0D50200A1E031004000C0EB0200C18085
+:1005000032004000C0010300E12033004000C0176A
+:10051000030000C033004000C02D03002060340001
+:100520004000C0430320400035004000C059030094
+:1005300060A035004000C06F03008040360000ED31
+:1005400004004000C0D50200A1E031004000C0EB33
+:100550000200C18032004000C0010300E1203300EE
+:100560004000C017030000C033004000C02D03004E
+:10057000206034004000C0430300400035004000CC
+:10058000C059030060A035004000C06F03008040E8
+:1005900036004000C0850300A03032004000C09B00
+:1005A0000300C0D032004000C0B10300E07033004F
+:1005B0004000C0C80300011034004000C0DF030049
+:1005C00021B034004000C0F6032041503500400007
+:1005D000C00D040061F035004000C024040081908B
+:1005E000360000ED04B504CFB837EFB40101A10621
+:1005F0004848044405EAA30848480444010003C1EC
+:10060000A5024848A7024848A8020303A902030319
+:10061000AA02574E00006950560B19031818000B18
+:1006200020000000FDE1C9D9F9EBD9C9E1F9C9E120
+:10063000D8F9C9E1D0F9C9E1D908EB21000039089E
+:10064000D9F9C93EF0D3C8FD7E07D3C5FD7E06D3D8
+:10065000C0AF5F57FD6E02FD6603440E012F772F7A
+:1006600002BE2806FE0028F618041EFF184DFD4E97
+:1006700000FD4601FD6E02FD660372230B79B0207A
+:10068000F9FD4E00FD4601FD6E02FD66037EBA28AF
+:1006900004AAB35F7A2F77230B79B020F0FD4E00C8
+:1006A000FD4601FD6E02FD66037E2FBA2804AAB343
+:1006B0005F7A72230B79B020F01804186118AFFD2F
+:1006C0004E00FD4601FD6E02FD6603092B7EBA2831
+:1006D00004AAB35F7A2F772B0B79B020F0FD4E0080
+:1006E000FD4601FD6E02FD6603092B7E2FBA28042C
+:1006F000AAB35F7A722B0B79B020F0FD4E00FD4655
+:1007000001FD6E02FD6603092B7EBA2804AAB35FC1
+:100710007A2B0B79B020F27AFE001655289F97B3FA
+:10072000C837C9E13E04D3C87EB7280ADD7701DDAA
+:1007300023DD232318F2AFD3C8C9DD210030C9DD82
+:10074000E1C9DD7DE6AFC6A0DD6F3002DD24C92141
+:10075000003001FE0F3E04D3C836002336200BEDD7
+:10076000A1EA5907AFDD210030D3C8C9C1DD09C9ED
+:10077000E14E79B72828237EB7281446D3D4180031
+:100780001800180010F8CB4F20F10D20EE180B06C2
+:10079000001800180010FA0D20F57E2318D33E80B3
+:1007A000D3D4C960400000108110801081108010E7
+:1007B00081108010811080000003C003B004A004E9
+:1007C000900480057005604050000040302000001B
+:1007D0000010C020000000FF30000044C080000076
+:0107E0000018
 :00000001FF