Личный сайт BitByByte: Статьи.
Логотип.
 Разделы сайта Cтатьи.
Сайт в разработке!

Статистика сайта.

Посещений за день: 38.
Посещений за месяц: 3112.
Посещений за год: 10974.


Баннеры.

DMconnect
Maksy's PWS


Статистика в картинках.

likes counter


  • Главная.
  • Новости.
  • Программы.
  • Файлы.
  • Контакты.
  • Чат "Пиво".
  • Статьи.
  • Ссылки.
  • Гостевая.
  • Тест памяти "Байта".

     Для облегчения процесса контроля работоспособности ОЗУ и ПЗУ в компьютере "Байт" есть встроенный тест памяти. Для его запуска надо нажать одновременно три клавиши - "Ы", "В" и "А" на клавиатуре и после этого, не отпуская клавиш, нажать и отпустить кнопку "СБРОС". После этого клавиши можно отпускать. Внимание - кнопка "Совмест." должна быть отжата!

     Тест начинается сменой цветов бордюра в следующем порядке: чёрный, белый, голубой, жёлтый, зелёный, пурпурный, красный, синий. После изменения цвета бордюра происходит проверка контрольной суммы ПЗУ. Если цвет бордюра оказался синий - то произошла ошибка контрольной суммы ПЗУ DD72; пурпурный - DD73, жёлтый - проверка ПЗУ прошла успешно.

     Далее в тесте происходит в два этапа проверка области ОЗУ:
     1) Проверка области памяти #4000-#5AFF (эта область ОЗУ используется для вывода информации на экран)
     2) Проверка области памяти #5B00-#FFFF.

     Перед проверкой область ОЗУ #4000-#FFFF записывается кодом #17.

     Проверка ОЗУ #4000-#FFFF производится при помощи кодов #17, #0F, #F0, #00. Алгоритм проверки следующий: по адресу #4000 производится проверка за- писанной информации. Если информация совпала, производится запись по данному адресу следующего кода, адрес ОЗУ увеличивается на единицу, и проверка повторяется до достижения области #5AFF. Затем происходит переход к следующему коду.

     К сожалению, при ошибках ОЗУ в области #4000-#5AFF, тест ничего не показывает, а просто виснет после прохождения теста ПЗУ. В этом случае место сбоя и считываемую информацию можно попробовать определить следующим образом: засинхронизироваться от сигнала IORQ процессора. В момент появления сигнала IORQ на шине данных D7-D0 процессором устанавливается сигнал высокого уровня на том бите, на котором произошёл сбой. Для домашего ремонта "Байта" эта рекомендация почти бесполезная.

     Проверка области ОЗУ #5B00-#FFFF осуществляется следующим образом: на экране на синем фоне рисуются 16 голубых квадратов, каждый из которых соответствует определённой микросхеме ОЗУ.

     Если при проверке ОЗУ были ошибки, то меняется цвет квадратов, соответствующих данным микросхемам ОЗУ.

     По разноцветному полю можно оценить правильность работы видеоконтроллера по выводу цветов нормальной яркости, повышенной яркости, о наличии мерцания.

     Дальнейшая программа для выполнения теста находится в ПЗУ DD71. Производится проверка клавиатуры. При нажатии клавиши квадрат, находящийся на пересечении линии адреса и линии данных, соответвтующих данной клавише, имеет чёрный цвет. Пурпурные квадраты соответствуют ненажатым клавишам.

     Если ни одна клавиша не нажата, то звучит мелодия (собачий вальс) по каждому из трёх каналов таймера DD68.

     Уточнение: тест клавиатуры будет работать только в том случае, если до начала мелодии была нажата и удержана хотя бы одна клавиша. Как только не будет нажата ни одна клавиша, тест продолжится проверкой таймера DD68, и к тесту клавиатуры уже нельзя будет вернуться. Поэтому надо нажимать следующую тестируемую клавишу, не отпуская предыдущей.

     При проверке таймера DD68 мелодия звучит три раза, после чего начинается проверка ПЗУ (при отключенном ПЗУ совместимости). На экране появляются 128 квадратов красного цвета на голубом фоне.

     При ошибке ПЗУ соответствующий квадрат будет мерцать. Адрес сбоя рассчитывается по формуле:

     A=#80*N

     Где:
     N - номер квадрата, начиная с нулевого, слева напрао;
     #80 - длина одного замещаемого блока (128 байт).

     Если ошибок не обнаружено, то сразу же после появления красных квадратов тест выйдет в бейсик...

     Дизассемблер теста ПЗУ и ОЗУ:

    						;Базовый тест
    			ORG 0
    
    			DI
    			LD A,#3A
    			LD DE,#FFFF
    			JR ST
    
    			ORG #2B
    	ST		LD BC,#03EE
    			JR ST1
    
    			ORG #5F
    	ST1		OUT (C),A		;блокировка таймера
    			ADD A,#40
    			DEC B
    			JR ST3
    			RETN
    
    	ST3		JR NZ,ST1
    			LD BC,#FDFE
    			IN A,(C)
    			AND #0E		;проверка на нажатие "ЫВА" для запуска теста
    			JP TEST
    
    			ORG #387F
    			IN A,(#1F)		;переключение доп. ПЗУ
    			RET
    
    	TEST		JP NZ,#11CB
    			LD B,8
    	BDR1		OUT (C),B		;переключение бордюра 0,7..1
    	BDR		DEC DE
    			LD A,D
    			OR E
    			JR NZ,BDR
    			DJNZ BDR1
    
    						;Тест ПЗУ
    
    						;После прохода 1-го ПЗУ BORDER=3
    						;После прохода 2-го ПЗУ BORDER=6
    
    			EX DE,HL
    	PZU2		LD DE,#1FFF		;проверяем по каждом м/с в отдельности
    			XOR A
    	PZU1		ADD (HL)		;проверка КС
    			ADC 0
    			INC HL
    			DEC DE
    			BIT 7,D
    			JR Z,PZU1
    			INC B
    			INC B
    			INC B
    			INC A			;проверка, что КС=#FF
    	PZU		JR NZ,PZU		;самозацикливание при ошибке
    			OUT (C),B		;вывод BORDER
    			BIT 6,H			;2-я м/с не проверена?
    			JR Z,PZU2
    			LD A,D
    			OUT (0),A
    			XOR A
    						;Тест экранного ОЗУ
    
    	OZU		LD (HL),#17
    			INC HL
    			CP H
    			JR NZ,OZU		;запись всего ОЗУ
    			LD BC,#170F		;кодами #17
    			LD DE,#F000		;установка кодов тестирования
    			LD A,4
    	OZU4		LD H,#40
    			EXX
    	OZU3		LD A,B
    			XOR (HL)		;проверка правильности кода
    	OZU2		OUT (C),A
    			LD B,(HL)
    			JR NZ,OZU2		;зацикливание при ошибке
    			LD (HL),C
    			INC HL
    			LD A,H
    			CP #5B
    			JR NZ,OZU3
    			EXX
    			LD H,C
    			LD C,D
    			LD D,E			;смена кода тестирования
    			DEC B
    			JR NZ,OZU4
    
    						;запись атрибутов экрана
    
    			LD HL,#5800
    			EXX
    	OZU5		LD (HL),#08
    			INC HL
    			CP H
    			JR NZ,OZU5
    			LD SP,#4020		;установка указателя стека
    
    						;запись области квадратами
    
    			LD HL,#5840
    	ZOB2		LD B,#10
    	ZOB1		LD (HL),#28
    			INC HL
    			LD (HL),#28
    			INC HL
    			INC HL
    			INC HL
    			DJNZ ZOB1
    			BIT 0,H			;не записана вторая область квадратами?
    			LD L,#C0
    			JR Z,ZOB2
    
    						;тест второй части экранного и всей остальной области ОЗУ
    
    			LD B,#5B		;подготовка данных для основного ОЗУ
    			LD DE,#5840
    			LD A,#80
    			OUT (0),A
    	Z22		LD HL,#4101
    			LD (HL),B
    			EX AF,AF'
    			LD BC,#17A5		;подготовка данных тестирования
    			LD DE,#FF00
    			EX AF,AF'
    			LD BC,4		;число данных в тесте
    	Z21		EX AF,AF'
    			LD HL,(#4100)		;начальный адрес тестирования ОЗУ
    	Z2		EXX
    			LD A,B
    			AND (HL)
    			CALL NZ,SOOS		;вывод п/п индикации ошибок ОЗУ
    			LD (HL),C		;запись кода
    			EXX
    			INC DE
    			CP H			;конец проверки
    			JR NZ,Z2
    			LD B,C
    			LD C,D
    			LD D,E			;смещение тест. инф.
    			EX AF,AF'
    			DEC B
    			JR NZ,Z21		;переход к новой проверке
    			OR A
    			LD B,#80		;пересылка кода #80 нач. обл.
    			LD E,#C0
    			LD A,C			;конец области
    			JR NZ,Z21		;если не конец 2-й области
    			LD A,(#4102)
    			OR A			;проверка нормального окончания теста
    
    	Z23		JR NZ,Z22
    
    						;вывод линиий
    
    			LD B,#20
    			LD A,#3C
    			LD HL,#5900
    	CW		LD (HL),A		;вывод цветных квадратов
    			INC HL
    			SUB 8
    			DJNZ CW
    
    						;пересылка ПЗУ
    
    			LD HL,0
    			LD DE,#6000
    			LD BC,#4000
    			LDIR
    
    			LD HL,#3A00
    			PUSH HL
    			JP PRPZU
    
    						;п/п индикации ошибки
    
    	SOOS		EXX
    			LD (#4102),A
    			LD HL,AT-1
    			ADD HL,BC
    			LD L,(HL)
    			ADD HL,DE		;вычисление адреса первого символа
    	SOOS2		SLA A
    			PUSH AF
    			JR NC,SOOS1
    			LD A,(HL)		;установка байта ошибки
    			OR A
    			JR Z,SOOS1
    			SUB 8
    			LD (HL),A
    
    	SOOS1		POP AF
    			INC HL
    			INC HL
    			INC HL
    			INC HL
    			JR NZ,SOOS2
    			EXX
    			RET
    
    						;дальнейшая программа находится в дополнительном ПЗУ
    
    			ORG #3A00
    
    						;проверка клавиатуры на замыкание
    
    	X0		XOR A
    			LD (#4106),A
    			LD BC,#FEFE
    			LD HL,#58F0
    	X3		LD DE,#30
    			ADD HL,DE		;нах. в HL адреса вывода
    			LD D,8
    			IN A,(C)		;приём клав.
    			OR #40
    	X2		INC HL
    			RLCA
    			JR C,X4
    			LD (#4105),HL		;установка признака замыкания
    			LD (HL),0
    			JR X1
    
    	X4		LD (HL),#18
    	X1		INC HL
    			DEC D
    			JR NZ,X2
    			RLC B			;проверка окончания по линиям адреса
    			JR C,X3
    
    			LD A,(#4106)
    			OR A
    			JR NZ,X0		;проверка - продолжать ли опрос клавиатуры?
    
    						;Проверка таймера
    
    			LD A,#37
    			EX AF,AF'
    			LD C,#8E
    	ZWP		LD B,#23
    			LD HL,NTZ-1
    	ZW		INC HL
    			PUSH HL
    			LD H,(HL)
    			LD L,2
    			LD D,#60
    	TW1		DEC DE
    			LD A,D
    			OR E
    			JR NZ,TW1
    			EX AF,AF'
    			OUT (#EE),A
    			EX AF,AF'
    			OUT (C),L
    			OUT (C),H
    			POP HL
    			DEC B
    			JR NZ,ZW
    			EX AF,AF'
    			ADD A,#40
    			EX AF,AF'
    			LD A,#20
    			ADD A,C
    			LD C,A
    			CP #E0
    			JR C,ZWP
    
    						;Проверка ПЗУ после переключения
    
    			XOR A
    			LD (HRAN),A
    			LD HL,#5800
    	PRPZ		LD (HL),#2D
    			INC HL
    			LD A,H
    			CP #5B
    			JR NZ,PRPZ		;Заполняем экран синим
    
    			LD HL,#5800
    			EXX
    			LD DE,0		;Адрес ПЗУ
    			LD HL,#6000
    			EXX
    	PRPZ1		EXX
    			LD B,#80
    	PRPZ3		LD A,(DE)
    			CP (HL)
    			JR NZ,PRPZ2
    			INC HL
    			INC DE
    			DJNZ PRPZ3
    			EXX
    			LD (HL),#12
    	PRPZ4		INC HL
    			INC HL
    			LD A,L
    			AND #1F
    			JR NZ,PRPZ1
    			LD BC,#20
    			ADD HL,BC
    			EXX
    
    			LD A,D
    			EXX
    			CP #40
    			JR NZ,PRPZ1
    			LD A,#12
    			LD (#5A48),A
    			LD (#5A4A),A		;Установка цвета
    			LD A,(HRAN)
    			DEC A
    			DEC A
    	XXX		JR NZ,XXX
    			JP 0
    
    	PRPZ2		INC HL
    			INC DE
    			DJNZ PRPZ2
    			LD A,(HRAN)
    			INC A
    			LD (HRAN),A
    			EXX
    			LD (HL),#85
    			JR PRPZ4
    
    	NTZ		DEFB #69,#77,#B6,#00,#58,#00,#58,#00
    			DEFB #69,#77,#B6,#00,#58,#00,#58,#00
    			DEFB #69,#77,#B6,#00,#58,#00,#D8,#00
    			DEFB #58,#00,#F5,#00,#61,#00,#61,#00,#00,#00,#00
    
    	HRAN		EQU #4101
    
    

    >>

    BitByByte, 2000г. (2025).