BM541 je kopie podobné věcičky od HP s tím rozdílem že BM541 má na víc logickou sondu, tento strojek je určen k hledání vadných IO na DPS, pracuje to na principu porovnání se vzorovým IO, kdy u nesouladu svítí na konkrétním pinu LED.
Ten tester co jsem si stavěl tak jede pomoví tabulek kdy je nejprve příkaz a pak případná data, v rámci tabulek jde provádět skok (GOTO) skok do podprogramu (GOSUB) případně i skok postrojového kódu.
Případné zkraty na vstupech jsem chopen odhalit (při správné volbě dat), protože při čtení se čtou i výstupy. Dále tomu napomůže i měření napětí aneb odhalí i nebořené IO.
Pomocí tabulek se RAM a to i 7489 dost blbě testuje, takže se otestuje jen pár buněk a hlavně vstupy a výstupy, obecně na RAM by to chtělo připojit RAM do paměťového prostru CPU a otestovat ji přímo CPU …
Pár ukázek testovacích tabulek z mého testeru
Kód:
;4x 2vstup. NAND
;7400, 7403, 7424, 7426, 7437, 7438, 74132
I7400T: ; ZYABYABX XNABYABY
DB T_VV2, 00110110B, 00110110B
DB T_NAP, DIL14
DB T_W12, 10111101B, 11011001B
DB T_W12, 11000111B, 11101011B
DB T_W12, 11011001B, 11110101B
DB T_W12, 11101011B, 11001110B
DB T_KONEC
...
;synchr. program. delic C
;7497 E 0541 32MAESC
I7497T: ; ZOYZAAAA NAARSITP
DB T_VV2, 10001111B, 11111111B
DB T_NAP, DIL16
DB T_W12, 11011111B, 11111101B
DB T_W12, 11111111B, 11110101B
DB T_W12, 11101111B, 11110100B
DB T_W12, 11101111B, 11111100B
DB T_W12, 11011111B, 11111110B
DB T_W12, 11011111B, 11111111B
DB T_W12, 11111111B, 11110111B
DB T_W12, 11111111B, 11110110B
DB T_W12, 11111111B, 11100001B
DB T_W12, 11101111B, 11100000B
DB T_W12, 11011111B, 11101001B
DB T_W12, 11101111B, 11101000B
DB T_W12, 11011111B, 11111011B ;RESET
DB T_W12, 11011111B, 11101001B
DB T_PROG
DW P7497A ;64 PULZU
DB T_W12, 10011000B, 10001001B
DB T_PROG
DW P7497B ;1 PULZU
DB T_W12, 10010101B, 10101001B
DB T_PROG
DW P7497C ;38 PULZU
DB T_W12, 10011010B, 11001001B
DB T_PROG
DW P7497D ;25 PULZU
DB T_KONEC
;POKRACUJE TEST PONOCI PROGAMU VE TROJOVEM KODU
;POCET PULZU <B>
;POCET KROKU <C>
;POCITADLO KROKU <D>
;POCITADLO PULZU <E>
P7497A: MVI B,63 ;POCET PULZU
MVI C,63 ;POCET KROKU
JMP P7497E
P7497B: MVI C,64 ;POCET KROKU
MVI B,1 ;POCET PULZU
JMP P7497J
P7497C: MVI B,38 ;POCET PULZU
MVI C,64 ;POCET KROKU
JMP P7497J
P7497D: MVI B,25 ;POCET PULZU
P7497J: MVI C,64 ;POCET KROKU
P7497E: LXI D,0 ;NUNULJ POCITADLA
LXI H,0
P7497I: IN PORT2
DCR A
OUT PORT2 ;CP NA 0
IN PORT1 ;NACTI STAV
ANI 01110000B ;JEN BITI CO POTREBUJEM
CPI 01010000B ;TAST NA STAV BEZ PULZU
JZ P7497F ;NENI-LI PUZ TAK DALE
CPI 00010000B ;TAST NA STAV BEZ PULZU PRI PRVNIM KROKU
JZ P7497G
CPI 01100000B ;TAST NA STAV S PULZU
JNZ P74121C ;JE-LI CHYBA TAK NAVRAT S HLASENIM
INR E ;PRICTI PULZ
JMP P7497F
P7497G: MOV A,D
ANA A
JNZ P74121C ;JE-LI CHYBA TAK NAVRAT S HLASENIM
P7497F: INR D ;PRICTI KROK
IN PORT2
INR A
OUT PORT2 ;CP NA 1
IN PORT1 ;NACTI STAV
ANI 01110000B ;JEN BITY CO POTREBUJEM
CPI 00010000B
JZ P7497H ;POSLEDNI KROK
CPI 01010000B
JZ P7497I ;JESTE NENI KONEC
JMP P74121C ;VSE OSTATNI JE CHYBA
P7497H: MOV A,D
CMP C
JNZ P74121C ;SPADNY POCET KROKU
MVI A,'*'
CALL COA ;"*" ZA SPAVNY POCET TROKU
MOV A,E
CMP B
JNZ P74121C ;SPADNY POCET PULZU
MVI A,'#'
CALL COA ;"#" ZA SPAVNY POCET KROKU
RET ;NAVRAT ZE STROJOVEHO KODU
...
;sync. prog. BCD citac s R
; 1 _ 2_
;74160 C3210CM T0123CP
I74160T: ; ZEDDDDPR NCQQQQEE
DB T_GOSUB
DW S7416X2
G74160T:DB T_GOSUB
DW S7416X3
DB T_W12, 11000011B, 11100111B ;9
DB T_W1, 11000001B
DB T_W12, 11000011B, 10000011B ;0
G7416XT:DB T_W12, 10000011B, 10000011B ;CE1=0
DB T_W1, 10000001B
DB T_W12, 10000011B, 10000011B ;0
DB T_W12, 11000011B, 10000001B ;CE2=0
DB T_W1, 11000001B
DB T_W12, 11000011B, 10000001B ;0
DB T_W12, 10000011B, 10000001B ;CE1=CE2=0
DB T_W1, 10000001B
DB T_W12, 10000011B, 10000001B ;0
DB T_KONEC
;sync. prog. BIN citac s R
; 1 _ 2_
;74161 C3210CM T0123CP
I74161T: ; ZEDDDDPR NCQQQQEE
DB T_GOSUB
DW S7416X2
G74161T:DB T_GOSUB
DW S7416X3
DB T_W12, 11000011B, 10100111B ;9
DB T_W1, 11000001B
DB T_W12, 11000011B, 10010111B ;10
DB T_W1, 11000001B
DB T_W12, 11000011B, 10110111B ;11
DB T_W1, 11000001B
DB T_W12, 11000011B, 10001111B ;12
DB T_W1, 11000001B
DB T_W12, 11000011B, 10101111B ;13
DB T_W1, 11000001B
DB T_W12, 11000011B, 10011111B ;14
DB T_W1, 11000001B
DB T_W12, 11000011B, 11111111B ;15
DB T_W1, 11000001B
DB T_W12, 11000011B, 10000011B ;0
DB T_GOTO
DW G7416XT
;sync. prog. BCD citac se sync. R
; 1 _ 2_
;74162 C3210CM T0123CP
I74162T: ; ZEDDDDPR NCQQQQEE
DB T_GOSUB
DW S7416X1
DB T_GOTO
DW G74160T
;sync. prog. BIN citac se sync. R
; 1 _ 2_
;74163 C3210CM T0123CP
I74163T: ; ZEDDDDPR NCQQQQEE
DB T_GOSUB
DW S7416X1
DB T_GOTO
DW G74161T
;-------------------------------------------
;SPOLECNE BLOKY K 74160 AZ 74163
S7416X1:DB T_VV2, 01111111B, 00000011B
DB T_NAP, DIL16
DB T_W12, 10101011B, 10000010B
DB T_W1, 10101001B
DB T_W12, 10101011B, 10010111B ;NASTAV
DB T_W12, 10101010B, 10010111B ;/MR=0
DB T_W1, 10101000B
DB T_W12, 10101011B, 10000011B ;S-RESET
DB T_W12, 11010111B, 10000010B
DB T_W1, 11010101B
DB T_W12, 11010111B, 10101011B ;NASTAV
DB T_W12, 11010110B, 10101011B ;/MR=0
DB T_W1, 11010100B
DB T_W12, 11010111B, 10000011B ;S-RESET
DB T_RET
S7416X2:DB T_VV2, 01111111B, 00000011B
DB T_NAP, DIL16
DB T_W12, 10101011B, 10000010B
DB T_W1, 10101001B
DB T_W12, 10101011B, 10010111B ;NASTAV
DB T_W12, 10101010B, 10000011B ;A-RESET
DB T_W12, 11010111B, 10000010B
DB T_W1, 11010101B
DB T_W12, 11010111B, 10101011B ;NASTAV
DB T_W12, 11010110B, 10000011B ;A-RESET
DB T_RET
S7416X3:DB T_W1, 11000011B
DB T_W1, 11000001B
DB T_W12, 11000011B, 10100011B ;1
DB T_W1, 11000001B
DB T_W12, 11000011B, 10010011B ;2
DB T_W1, 11000001B
DB T_W12, 11000011B, 10110011B ;3
DB T_W1, 11000001B
DB T_W12, 11000011B, 10001011B ;4
DB T_W1, 11000001B
DB T_W12, 11000011B, 10101011B ;5
DB T_W1, 11000001B
DB T_W12, 11000011B, 10011011B ;6
DB T_W1, 11000001B
DB T_W12, 11000011B, 10111011B ;7
DB T_W1, 11000001B
DB T_W12, 11000011B, 10000111B ;8
DB T_W1, 11000001B
DB T_RET
Vysvětlivky přikazů.
T_VV - nastavení vstupů a výstupů
T_W - zápis s následným čtením
T_I - čtení
T_O - zápis
T_GOTO - skok v tabulkách
T_GOSUB -skok do podprogramu v rámci tabulek
T_RET - návrat z podprogramu v rámci tabulek
T_PROG - skok do podprogramu ve strojovém kódu
T_NAP - volba a zapnutí napájení
T_NZ - nezapojené vývody (pro zobrazování DIL)
T_ZIF14 - pouzdro DIL14 v ZIF16 (pro zobrazování DIL)
T_NIC - nejsou testovací data
T_KONEC - konec testovací tabulky