Главная.
Новости.
Программы.
Файлы.
Контакты.
Чат "Пиво".
Статьи.
Ссылки.
Гостевая.
|
Тест памяти "Байта".
Для облегчения процесса контроля работоспособности ОЗУ и ПЗУ в компьютере "Байт" есть встроенный тест памяти. Для его запуска надо нажать одновременно три клавиши - "Ы", "В" и "А" на клавиатуре и после этого, не отпуская клавиш, нажать и отпустить кнопку "СБРОС". После этого клавиши можно отпускать. Внимание - кнопка "Совмест." должна быть отжата!
Тест начинается сменой цветов бордюра в следующем порядке: чёрный, белый, голубой, жёлтый, зелёный, пурпурный, красный, синий. После изменения цвета бордюра происходит проверка контрольной суммы ПЗУ. Если цвет бордюра оказался синий - то произошла ошибка контрольной суммы ПЗУ 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
>>
|