!!These programs are to be run on one 9010A which is plugged into the !!9010A under test (UUT) via the Z80AA (faster) pod. PROGRAM 1 !Menu for 9010A tests DPY-WHICH TEST DO YOU WISH TO DO? EX 12 0: LABEL 0 DPY-0 PIA, 1 FREE RUNNING PROBE, EX 12 DPY-2 PROBE SYNC, 3 PROBE PULSE, EX 12 DPY-4 SIG REGISTER, 5 EVENT CNTR, EX 12 DPY-6 DISPLAY//KEYBOARD, OR EX 12 DPY-7 RS-232 INTERFACE TEST \1 IF REG1 > 7 GOTO 0 IF REG1 = 0 GOTO 1 IF REG1 = 1 GOTO 2 IF REG1 = 2 GOTO 3 IF REG1 = 3 GOTO 4 IF REG1 = 4 GOTO 5 IF REG1 = 5 GOTO 6 IF REG1 = 6 GOTO 7 IF REG1 = 7 GOTO 8 1: LABEL 1 EX PROGRAM 11 GOTO 0 2: LABEL 2 EX PROGRAM 2 GOTO 0 3: LABEL 3 EX PROGRAM 3 GOTO 0 4: LABEL 4 EX PROGRAM 4 GOTO 0 5: LABEL 5 EX PROGRAM 5 GOTO 0 6: LABEL 6 EX PROGRAM 9 GOTO 0 7: LABEL 7 EX PROGRAM 6 GOTO 0 8: LABEL 8 EX PROGRAM 8 GOTO 0 PROGRAM 2 !Free-Run Probe Check DPY-FREE-RUN PROBE CHECK# SYNC FREE-RUN EXECUTE PROGRAM 12 DPY-JUMP R14//C16 TO TP2 OR TP1 DPY-+2-CONT# STOP 0: LABEL 0 DPY-SET INPUT > .8V AND <2.4V DPY-+ - CONT# STOP REG4 = 1 EXECUTE PROGRAM 14 IF REGE = 20 GOTO 1 DPY-INVALID STATUS GOTO E 1: LABEL 1 DPY-TESTER PROBE TO J2-6 - CONT DPY-+# STOP READ PROBE READ PROBE REG1 = 7000000 REG2 = 2000000 REG3 = 4000000 IF REG0 AND REG1 = REG2 GOTO 2 DPY-J2-6 INVALID GOTO E 2: LABEL 2 DPY-TESTER PROBE TO J2-9 - CONT DPY-+# STOP READ PROBE READ PROBE IF REG0 AND REG1 = REG2 GOTO 3 DPY-J2-9 INVALID GOTO E 3: LABEL 3 DPY-SET INPUT <.8V- CONT# STOP REG4 = 2 EXECUTE PROGRAM 14 IF REGE = 40 GOTO 4 DPY-LOW STATUS GOTO E 4: LABEL 4 DPY-TESTER PROBE TO J2-9 - CONT DPY-+# STOP READ PROBE READ PROBE IF REG0 AND REG1 = REG2 GOTO 5 DPY-J2-9 LOW GOTO E 5: LABEL 5 DPY-TESTER PROBE TO J2-6 - CONT DPY-+# STOP READ PROBE READ PROBE IF REG0 AND REG1 = REG3 GOTO 6 DPY-J2-6 LOW GOTO E 6: LABEL 6 DPY-SET INPUT >2.4V - CONT STOP REG4 = 3 EXECUTE PROGRAM 14 IF REGE = 80 GOTO 7 DPY-HI STATUS GOTO E 7: LABEL 7 DPY-TESTER PROBE TO J2-6 - CONT DPY-+# STOP READ PROBE READ PROBE IF REG0 AND REG1 = REG2 GOTO 8 DPY-J2-6 HI GOTO E 8: LABEL 8 DPY-TESTER PROBE TO J2-9 - CONT DPY-+# STOP READ PROBE READ PROBE IF REG0 AND REG1 = REG3 GOTO F DPY-J2-9 HI GOTO E E: LABEL E DPY-+ FAULT - CONT# STOP IF REG4 = 1 GOTO 0 IF REG4 = 2 GOTO 3 IF REG4 = 3 GOTO 6 GOTO 0 F: LABEL F DPY-FREE-RUN PROBE LOGIC OK DPY-+# STOP PROGRAM 3 !Synchronized Probe Check DPY-SYNC PROBE CHECK# EXECUTE PROGRAM 12 !delay DPY-JUMP R14//C16 TO TP2 OR TP1 !disable watchdog DPY-+2-CONT# STOP SYNC FREE-RUN DPY-TESTER PROBE TO UUT U41-9 !apply tester pulser to sync input of uut DPY-+ - CONT# STOP 0: LABEL 0 DPY-TESTER PULSER OFF - CONT# STOP REG1 = 1 !test 1 pointer EXECUTE PROGRAM 15 !read uut probe level status IF REGE = 0 GOTO 1 !check for no low or high DPY-SYNC GOTO E 1: LABEL 1 DPY-TESTER TO PULSE LOW -CONT# STOP 2: LABEL 2 REG1 = 2 !test 2 pointer DPY-CONNECT INPUT TO LOW DPY-+ - CONT# STOP EXECUTE PROGRAM 15 !read uut probe level status IF REGE = 40 GOTO 3 !check for low DPY-LOW GOTO E 3: LABEL 3 REG 1 = 3 !test 3 pointer DPY-CONNECT INPUT TO HI DPY -+ - CONT# STOP EXECUTE PROGRAM 15 !read uut probe level status IF REGE = 80 GOTO F !check for high DPY-HI GOTO E E: LABEL E DPY-+ FAULT# !append to test message STOP IF REG1 = 1 GOTO 0 IF REG1 = 2 GOTO 2 !return to test 1, 2, or 3 IF REG1 = 3 GOTO 3 GOTO 0 F: LABEL F DPY-SYNC PROBE LOGIC OK# PROGRAM 4 !Probe Pulse Output Check DPY-#PULSE OUTPUT CHECK EXECUTE PROGRAM 12 !delay DPY-JUMP R14//C16 TO TP2 OR TP1 !display watchdog DPY-+2-CONT# STOP 0: LABEL 0 REG1 = 0 WRITE @ 100C3 = 30 !cb2=0 WRITE @ 100C1 = 0 WRITE @ 100C0 = FF !pia port a to out WRITE @ 100C1 = 4 WRITE @ 100C0 = 10 !beep WRITE @ 100C0 = A0 !pulse low/free-run WRITE @ 100C3 = 38 !cb2=1 GOTO 3 1: LABEL 1 WRITE @ 100C3 = 30 WRITE @ 100C1 = 0 WRITE @ 100C0 = FF WRITE @ 100C1 = 4 WRITE @ 100C0 = C0 !afree-run/high pulse WRITE @ 100C3 = 38 GOTO 3 2: LABEL 2 WRITE @ 100C3 = 30 WRITE @ 100C1 = 0 WRITE @ 100C0 = FF WRITE @ 100C1 = 4 WRITE @ 100C0 = E0 !free-run/high & low pulse WRITE @ 100C3 = 38 GOTO 3 3: LABEL 3 WRITE @ 100C1 = 0 WRITE @ 100C0 = 0 !pia port a to input WRITE @ 100C1 = 4 READ @ 100C0 !read port a INC REG1 REGE = REGE AND E0 !mask off all but probe level status IF REGE = 60 GOTO 4 !check for low & invalid IF REGE = A0 GOTO 5 !check for high & invalid IF REGE = E0 GOTO 6 !check for low, invalid, high GOTO 0 4: LABEL 4 DPY-#PULSE LOW EXECUTE PROGRAM 13 IF REG1 = 1 GOTO 1 IF REG1 = 2 GOTO 2 GOTO 0 5: LABEL 5 DPY-PULSE HIGH # EXECUTE PROGRAM 13 IF REG1 = 1 GOTO 1 IF REG1 = 2 GOTO 2 GOTO 0 6: LABEL 6 DPY-#PULSE HIGH AND LOW EXECUTE PROGRAM 13 IF REG1 = 1 GOTO 1 IF REG1 = 2 GOTO 2 GOTO 0 PROGRAM 5 460 BYTES !Signature Register Test DPY-SIGNATURE REGISTER CHECK DPY-+# EXECUTE PROGRAM 12 !delay SYNC DATA DPY-JUMP R14//C16 TO TP2 OR TP1 !disable watchdog DPY-+2-CONT# STOP DPY-TESTER PROBE TO U41-9 DPY-+, CONT# STOP DPY-TESTER PULSE OFF - CONT# !setup info STOP DPY-UUT PROBE TO TP10<+5V> DPY-+, CONT# STOP WRITE @ 100C3 = 30 !cb2=0 WRITE @ 100C1 = 0 WRITE @ 100C0 = FF !port a to output WRITE @ 100C1 = 4 WRITE @ 100C0 = 80 !free-run/pulse off WRITE @ 100C3 = 38 !cb2=1 READ @ 10020 !reset signature/event counter DPY-PRESS PULSE LOW ON TESTER DPY-+, CONT# STOP REG1 = 0 REGF = 10040 !sig. 10 byte address 1: LABEL 1 READ @ REGF INC REG1 !9 clks to sig. register IF REG1 = 9 GOTO 2 GOTO 1 2: LABEL 2 IF REGE = FE GOTO 3 !check lo-byte DPY-SIGNATURE ERROR-LO BYTE STOP GOTO F 3: LABEL 3 REG1 = 0 REGE = 0 REGF = 10060 !sig. high byte address 4: LABEL 4 READ @ REGF INC REG1 !8 clks to sig register IF REG1 = 8 GOTO 5 GOTO 4 5: LABEL 5 IF REGE = FE GOTO F !check high-byte DPY-SIGNATURE ERROR-HI BYTE STOP F: LABEL F DPY-SIGNATURE TEST COMPLETE PROGRAM 6 1392 BYTES !Display/Keyboard Communication Check WRITE @ 10081 = FF !reset display/kybd READ @ 10080 REPT !clear out buffer DPY-DISPLAY/KYBD COMM. CHECK EXECUTE PROGRAM 12 !delay DPY-JUMP R14//C16 TO TP2 OR TP1 !disable watchdog DPY-+2-CONT# STOP 0: LABEL 0 READ @ 10080 !clear buffer DPY-HIT UUT 'WRITE' - CONT# STOP READ @ 10081 !read status IF REGE AND 1 = 1 GOTO 1 !check - buffer full - yes DPY-#BAD STATUS BIT 0 !no - error DPY-+-CONT STOP GOTO 0 !repeat status check 1:LABEL 1 !buffer -full READ @ 10080 !clear buffer DPY-HIT UUT 'RAMP' - CONT# STOP READ @ 10080 !read kybd IF REGE = 21 GOTO 2 !check for 'ramp' key - yes DPY-READ DATA FAILURE - CONT# !not correct data STOP GOTO 1 !repeat test 2: LABEL 2 !read data passes DPY-#HIT UUT 'READ' TWICE, CONT STOP READ @ 10081 !read status IF REGE AND 80 > 0 GOTO 3 !overrun bit set - yes DPY-#BAD STATUS BIT 7, NO OVER !overrun bit not set - fail DPY-+RUN STOP GOTO 2 !repeat test 3: LABEL 3 DPY-TEST STATUS BIT 3=0 # EXECUTE PROGRAM 13 !delay WRITE @ 10081= FF !reset READ @ 10081 !read status IF REGE AND 8 = 0 GOTO D !last command "control"?- fail goto D DPY-#TEST STATUS BIT 3=1 EXECUTE PROGRAM 13 WRITE @ 10080 = AA !write data READ @ 10081 !read status IF REGE AND 8 > 0 GOTO D !last command "data"?- fail goto D WRITE @ 10081 = C0 !clear display DPY-DISPLAY U'S LEFT-TO-RIGHT# REG2 = 0 !digit counter WRITE @ 10081 = 20 !pointer to left most digit 4: LABEL 4 WRITE @ 10080 = 55 !write a "u" and increment (shift right) one !digit INC REG2 !increment digit counter IF 20 > REG2 GOTO 4 !> than decimal 32 goto 4 DPY-#ALL U'S - YES//NO?0 IF REG0 = 0 GOTO E !!user checks for all u's - if no go to e DPY-DISPLAY *. RIGHT-TO-LEFT# REG3 = 20 !digit counter to right most 5: LABEL 5 REG2 = REG3 DEC WRITE @ 10081 = 20 OR REG2 !set digit pointer = let most digit + dec. !value of reg 2 to right WRITE @ 10080 = AA !write a "#." to display; move pointer to right !1 digit DEC REG3 !decrement digit counter IF REG3 > 0 GOTO 5 !!dme - go to 5 DPY-#ALL *.'S - YES//NO?0 IF REG0 = 0 GOTO E !user checks for all "#."'s - if not goto e DPY-#FLASH EACH DIGIT REG2 = 0 !flash pointer 6: LABEL 6 WRITE @ 10081 = 60 OR REG2 !set flash mode - position = leftmost + dec. !value of reg 2 INC REG2 !inc. flash position IF 20 > REG2 GOTO 6 !flashed all characters WRITE @ 10081 = 80 !turn off flash mode DPY-+#-YES//NO?0 IF REG0 = 0 GOTO C !user verifies all char flashed - if no goto c DPY-BLANK DISPLAY TWICE# WRITE @ 10081 = DF !blank display (31 scans) EXECUTE PROGRAM 12 !delay WRITE @ REGF = DF !blank display (31 scans) DPY-+#-YES//NO?0 IF REG0 = 0 GOTO C !user verifies display blanked - if no goto c DPY-#MASTER RESET TEST EXECUTE PROGRAM 13 WRITE @ 10081= FF !master reset DPY-# DPY-DISPLAY BLANK-YES//NO?0 IF REG0 = 0 GOTO C !user verifies display went blank - if no goto c DPY-#LIGHT ALL LED'S WRITE @ 10081 = 5F !light all leds DPY-+#-YES//NO?0 IF REG0 = 0 GOTO C !user verifies display went blank - if no goto c DPY-#SINGLE SEGMENT TEST CMD WRITE @ 10081= 00 !reset test WRITE @ REGF = 1 !start seg. test DPY-+-OK?0 IF REG0 = 0 GOTO C !user verifies test started - if no goto c DPY-#WALKING CHARACTER TEST CMD WRITE @ 10081= 0 !reset test WRITE @ REGF = 2 !start walk. char. test DPY-+-OK?0 IF REG0 = 0 GOTO C !user verifies test started - if no goto c WRITE @ 10081 = 0 !reset test DPY-HIT UUT PULSE LOW AND HIGH­ DPY-+CONT# STOP DPY-#LED TEST COMMAND WRITE @ REGF = 4 !start led test DPY-+#-ALL LEDS ON?0 IF REG0 = 0 GOTO C !user verifies test started - if no goto c DPY-UUT PULSE HIGH AND LOW OFF­ DPY-+CONT# STOP DPY-#KEY TEST CMND WRITE @ 10081= 0 !reset test WRITE @ REGF = 8 !start key test DPY-+#-STARTED?0 IF REG0 = 0 GOTO C !user verifies test started - if no goto c GOTO F C: LABEL C DPY-WRITE CMND FAIL-CONT# STOP GOTO 3 D: LABEL D DPY-#BAD STATUS BIT 3 <$E> !fail messages STOP GOTO 3 E: LABEL E DPY-WRITE DATA FAIL-CONT# STOP GOTO 3 F: LABEL F DPY-DISPLAY/KYBD TEST COMPLETE !test complete WRITE @ 10081 = FF !reset display PROGRAM 7 !sub-routine READ PROBE WRITE @ 100E3 = AA READ @ 100E2 READ @ 100E1 READ PROBE REG1 = REG0 AND 7000000 REG2 = REG0 AND FFFF00 REG3 = REG0 AND 7F IF REG1 = REGA GOTO A IF REG2 = REGA GOTO A IF REG3 = REGA GOTO A REGA = 0 GOTO B A: LABEL A REGA = 1 GOTO B B: LABEL B IF REGB = 1 GOTO C IF REGB = 2 GOTO D IF REGB = 3 GOTO E C: LABEL C DPY-U1-23 GOTO F D: LABEL D DPY-U1-4 GOTO F E: LABEL E DPY-U1-18 F: LABEL F PROGRAM 8 !RS-232 test DPY-RS-232 TEST# EXECUTE PROGRAM 12 DPY-JUMP R14//C16 TO TP2 or TP1 DPY-+2-CONT# STOP DPY-#SET PARITY ON, ODD; CONT STOP DPY-#SET 8 BITS, 1 STOP BIT; DPY-+ CONT STOP DPY-#SET BAUD RATE = 9600, CONT STOP DPY-JUMPER RS232 PIN 2 TO 3#, DPY-+CONT STOP DPY-#MASTER CLEAR TEST EXECUTE PROGRAM 12 REG4 = 7000000 SYNC FREE-RUN DPY-POWER OFF UUT, PROBE U1-21, DPY-+CONT STOP READ PROBE DPY-POWER ON UUT, CONT# STOP READ PROBE IF REG4 > REG0 AND REG4 GOTO D 0: LABEL 0 DPY-XMIT BUFFER STATUS TEST# EXECUTE PROGRAM 13 READ @ 100E2 IF REGE AND 10 = 10 GOTO 1 DPY-XMIT BUFFER FULL GOTO E 1: LABEL 1 DPY-DATA RECV'D STATUS TEST# EXECUTE PROGRAM 13 READ @ 100E1 READ @ 100E2 IF REGE AND 8 = 0 GOTO 2 DPY-DATA RECV'D-NONE SENT- GOTO E 2: LABEL 2 DPY-OVERRUN STATUS TEST# EXECUTE PROGRAM 13 REGB = 10 REG1 = 55 EXECUTE PROGRAM 16 WRITE @ 100E3 = REG1 EXECUTE PROGRAM 16 WRITE @ 100E3 = REG1 EXECUTE PROGRAM 12 READ @ 100E2 IF REGE AND 4 = 4 GOTO 3 DPY-OVERRUN STATUS GOTO E 3: LABEL 3 DPY-DATA XMIT//REC'D TEST# EXECUTE PROGRAM 13 READ @ 100E1 IF REGE = REG1 GOTO 4 GOTO C 4: LABEL 4 REG1 = AA REGB = 10 EXECUTE PROGRAM 16 WRITE @ 100E3 = REG1 EXECUTE PROGRAM 12 READ @ 100E1 IF REGE = REG1 GOTO F GOTO C 5: LABEL 5 SYNC FREE-RUN DPY-PROBE U1-1,34,37-HIGH?0 IF REG0 = 0 GOTO E DPY-PROBE U1-3,16-ALL LOW?0 IF REG0 = 0 GOTO E DPY-#UART CONTROL TEST EXECUTE PROGRAM 12 SYNC ADDRESS REGB = 1 DPY-@PROBE U1-23 - CONT STOP REGA = 300 EXECUTE PROGRAM 7 IF REGA = 0 GOTO E REGB = 2 DPY-#PROBE U1-4 - CONT STOP REGA = 600 EXECUTE PROGRAM 7 IF REGA = 0 GOTO E REGB = 3 DPY-#PROBE U1-18 - CONT STOP REGA = 600 EXECUTE PROGRAM 7 IF REGA = 0 GOTO E DPY-#UART TRANSMIT TEST EXECUTE PROGRAM 12 DPY-PROBE U1-25 - CONT STOP REGA = 4 EXECUTE PROGRAM 7 IF REGA = 0 GOTO 6 GOTO A 6: LABEL 6 DPY-#U1-25 TRANSMIT ERROR - CON DPY-+T STOP GOTO F A: LABEL A SYNC FREE-RUN DPY-#BAD ITEM NOT FOUND EXECUTE PROGRAM 13 DPY-#USE A SCOPE TO CHECK INPUT DPY-+ AND EXECUTE PROGRAM 13 DPY-#OUTPUT OPTO ISOLATORS. EXECUTE PROGRAM 13 DPY-A 55 IS BEING SENT CONTINUO DPY-+SLY# EXECUTE PROGRAM 13 REG0 = 40 DPY-#HIT CLEAR//NO TO END TEST DPY-+%0 B: LABEL B IF REG0 = 1D GOTO F WRITE @ 100E3 = 55 GOTO B C: LABEL C DPY-DATA ERROR-SENT $1-REC'D $E DPY-+-CONT# STOP GOTO 5 E: LABEL E DPY-+ERROR-CONT# STOP GOTO 5 D: LABEL D DPY-#BAD MASTER CLEAR, CONT STOP GOTO F F: LABEL F DPY-#END RS-232-C TEST PROGRAM 9 347 BYTES SYNC DATA DPY-#EVENT COUNTER TEST EXECUTE PROGRAM 12 !delay DPY-JUMP R14//C16 TO TP2 OR TP1 !disable watchdog DPY-+2-CONT# STOP DPY-UUT PROBE TO +5V-CONT DPY-+# STOP DPY-TESTER PROBE TO U59-1-CONT# !setup instructions STOP DPY-TESTER TO PULSE OFF - CONT# STOP READ @ 10020 !reset event counter DPY-TESTER TO PULSE LOW-CONT# STOP REG2 = 0 !initialize count 0: LABEL 0 READ @ 10000 !read event counter REGE = REGE AND 7F !mask off fuse blown bit INC REG2 !increment count DPY-DATA READ = $E IF REG2 = 80 GOTO 1 !count = 80 - done IF REGE = REG2 GOTO 0 !check - is hardware event count (rege)= soft count (reg2) DPY-DATA = $E SHOULD BE = $2 DPY-+ - CONT# STOP DPY-CHECK U59 AND U60 STOP 1: LABEL 1 DPY-END OF EVENT COUNTER CHECK PROGRAM 11 !PIA (U22) Test DPY-PIA TEST # SYNC ADDRESS EXECUTE PROGRAM 12 !delay DPY-JUMP R14//C16 TO TP2 OR TP1 !disable watchdog DPY-+2-CONT# STOP REG1 = 0 !test number clear 1: LABEL 1 INC REG1 !increment test number REG3 = 0 !clear bit number IF REG1 = 6 GOTO F IF REG1 = 5 GOTO 7 !which test is next? IF REG1 = 4 GOTO 4 IF REG1 = 3 GOTO 3 IF REG1 = 2 GOTO 2 DPY-#TEST PORT A OUTPUT EXECUTE PROGRAM 12 !delay DPY-TESTER PULSE HIGH, LOW OUT- DPY-+CONT# STOP WRITE @ 100C1 = 0 WRITE @ REGF DEC = FF !pia port a to output Part of WRITE @ REGF INC = 4 ! Test 1 REG2 = 2 !1st pia pin number REG6 = A00 !expected signature REGF = 100C0 !pia port a address GOTO 5 2: LABEL 2 DPY-#TEST PORT B OUTPUT EXECUTE PROGRAM 12 WRITE @ 100C3 = 0 WRITE @ REGF DEC = FF !pia port b to output Part of WRITE @ REGF INC = 4 ! Test 2 REG2 = 10 !enter 1st pia pin number REG6 = A00 !expected signature REGF = 100C2 !pia port b address GOTO 5 3: LABEL 3 DPY-TEST PORT A INPUT# EXECUTE PROGRAM 12 WRITE @ 100C1 = 0 !PIA port a to input Part of WRITE @ REGF DEC = 0 ! Test 3 WRITE @ REGF INC = 4 DPY-TESTER PULSE HIGH, LOW IN- DPY-+CONT# STOP REG2 = 2 !1st pia pin number REG6 = 1 !expected signature REGF = 100C0 !port a address GOTO 5 4: LABEL 4 DPY-TEST PORT B INPUT# EXECUTE PROGRAM 12 WRITE @ 100C3 = 0 ! Part of WRITE @ REGF DEC = 0 !pia port b to input! Test 4 WRITE @ REGF INC = 4 REG2 = 10 !1st pia pin number REG6 = 1 !expected signature REGF = 100C2 !port b address 5: LABEL 5 DPY-PR0BE U22 PIN $2 !does oper wish to probe current pia pin? DPY-+, YES/NO #?7 IF REG7 = 0 GOTO D !no - increment pin and bit number READ PROBE !yes - read probe IF REG1 = 5 GOTO 8 !if test 4 complete, check cb2 line IF REG1 > 2 GOTO 6 !if test 2 complete, continue with test 3, or 4 WRITE @ REGF = 0 !sets pia port to 0 DTOG @ REGF = FF BIT REG3 !toggle the bit no. inPart of reg. 3 Test 1 and 2 DTOG @ REGF = REGE BIT REGD !repeat toggle using defaul t reg. WRITE @ REGF = 0 !pia to zero READ PROBE !gather signature IF REG0 AND FFFF00 = REG6 GOTO C !mask off all but sig and check against reg. 6 GOTO E 6: LABEL 6 READ @ REGF !read pulse at pia portPart REG8 = REGE !save dataof READ @ REGF !read pulse at pia portTest IF REG8 AND REG6 = REGE AND REG6 GOTO E !if pulse present 3 and 4 at each read, error SHL REG6 !move the test bit to next position for next pia pin check GOTO C 7: LABEL 7 DPY-#CB2 TEST EXECUTE PROGRAM 12 DPY-TESTER PULSE HIGH, LOW OUT­ DPY-+CONT# STOP REG2 = 19 !cb2 pin no. REG3 = 7 !full count in bit counter REG6 = 2 !expected event count GOTO 5 8: LABEL 8 WRITE @ 100C3 = 38 WRITE @ REGF = 30 !stimulate cb2 line WRITE @ REGF = 38 WRITE @ REGF = 30 READ PROBE !gather event count IF REG0 AND 7F = REG6 GOTO C !verity event count - o.k. goto a GOTO E !not correct count - goto e C: LABEL C !sig o.k. DPY-+, GOOD EXECUTE PROGRAM 12 !delay D: LABEL D INC REG2 !increment pin INC REG3 !increment bit IF REG3 = 8 GOTO 1 GOTO 5 E: LABEL E !sig. failure DPY-#U22 PIN $2 BIT $3 FAILURE DPY-+ LOOP#?5 !repeat test IF REG5 = 1 GOTO 5 !yes DPY-TEST FAIL# STOP F: LABEL F DPY-PIA TEST PASSED# PROGRAM 12 !Delay ~ 1 second REG1 = 40 1: LABEL 1 DEC REG1 IF REG1 > 0 GOTO 1 PROGRAM 13 !Delay ~ 3 seconds EXECUTE PROGRAM 12 EXECUTE PROGRAM 12 EXECUTE PROGRAM 12 PROGRAM 14 WRITE @ 100C3 = 30 ! cb2=o WRITE @ 100C1 = 0 WRITE @ 100C0 = FF ! pia port a to out WRITE @ 100C1 = 4 WRITE @ 100C0 = 80 ! free-run - pulse off WRITE @ 100C3 = 38 ! cb2=1 WRITE @ 100C1 = 0 WRITE @ 100C0 = 0 ! PIA port a to input WRITE @ 100C1 = 4 READ @ 100C0 ! read port a REGE = REGE AND E0 ! mask off all except level status PROGRAM 15 WRITE @ 100C3 = 30 !cb2=0 WRITE @ 100C1 = 0 WRITE @ 100C0 = FF !pia port a to out WRITE @ 100C1 = 4 WRITE @ 100C0 = 0 !sync mode/pulse off WRITE @ 100C3 = 38 !cb2=1 WRITE @ 100C1 = 0 WRITE @ 100C0 = 0 !pia port to input WRITE @ 100C1 = 4 READ @ 100C0 !read port a REGE = REGE AND C0 !mask off all except high/low probe status PROGRAM 16 !sub-routine 0: LABEL 0 READ @ 100E2 IF REGE AND REGB = REGB GOTO F GOTO 0 F: LABEL F