* * PROCESSOR TECHNOLOGY 8KRA TEST * * ORG 0C900H XEQ 0C900H * LXI SP,0CBFFH * RTRN EQU 0C004H SOUT EQU 0C019H SINP EQU 0C01FH VDADD EQU 0C11CH PSCAN EQU 0C310H CRLF EQU 0C2F9H * * ANNOUNCE TEST * * LXI H,MSG1 CALL STRNG CALL VDADD XCHG DCX D A1 CALL GET CPI 0DH JZ A2 CALL PUT JMP A1 A2 MVI B,' ' CALL PUT CALL PSCAN CALL CRLF MVI L,0 SHLD BDADR LXI H,MSG2 CALL STRNG XRA A STA CFLAG CALL GET CPI 'C' JNZ INIT PUSH PSW MVI A,0FFH STA CFLAG POP PSW * INIT CALL PUT CALL CRLF LXI H,0 SHLD ROW1 SHLD ROW2 SHLD ROW3 SHLD ROW4 * CONT LHLD COUNT INR H MVI A,39H CMP H JNC C1 INR L MVI H,30H C1 SHLD COUNT LXI H,MSG3 CALL STRNG SUB A STA PAGE STA FILL * MAIN LDA FILL RLC CALL WRITE SUB A STC * LOOP1 PUSH PSW CALL NXTPG MVI E,7 Test next 7 pages * TEST1 CALL TEST DCR E JNZ TEST1 LDA FILL RLC CALL READ POP PSW RAR JNC LOOP1 CMP A MVI A,0FFH * LOOP2 PUSH PSW CALL NXTPG MVI E,7 Test remaining 7 pages * TEST2 CALL TEST DCR E JNZ TEST2 LDA FILL RLC CALL READ POP PSW RAR JC LOOP2 CALL NXTPG LDA PAGE ORA A JNZ MAIN LDA FILL CMA STA FILL ORA A JNZ MAIN * CALL MAP OUTPUT CHIP MAP * LDA CFLAG ORA A JZ RTRN JMP CONT * * SUBROUTINES * MAP CALL CRLF First reorder map to MVI B,8 conform to 8KRA board CALL SORT layout SHLD BORD4 MVI B,4 CALL SORT SHLD BORD3 MVI B,2 CALL SORT SHLD BORD2 MVI B,1 CALL SORT CALL LINE LHLD BORD2 CALL LINE LHLD BORD3 CALL LINE LHLD BORD4 CALL LINE CALL CRLF RET * LINE MVI D,8 8 bit pairs per row * L1 DAD H Carry will indicate error CALL CHIP DAD H CALL CHIP CALL SPAC1 DCR D JNZ L1 CALL CRLF RET * SPAC1 MVI A,' ' JMP MARK1 * CHIP MVI A,'G' JNC MARK1 MVI A,'X' * MARK1 CALL PUT CMP A RET * SORT MVI C,8 8 bit pairs per row LXI H,0 LXI D,PAGE Point to end of error map S1 DCX D Back up pointer LDAX D Get the byte ANA B See if any error recorded CNZ S3 If error record it DAD H Shift left for next bit DCR C JNZ S1 MOV A,B Shift left for next bit in row RLC RLC RLC RLC MOV B,A MVI C,8 JMP S4 S2 DAD H S4 LDAX D ANA B CNZ S3 INX D DCR C JNZ S2 RET * S3 MVI A,1 ORA L MOV L,A RET * STRNG MOV A,M INX H CPI 0 RZ CALL PUT JMP STRNG * PUT PUSH H MOV B,A CALL SOUT POP H RET * GET CALL SINP JZ GET ANI 07FH RET * NXTPG PUSH PSW CALL SINP CPI 1BH JNZ N1 CALL MAP JMP RTRN N1 LDA PAGE ADI 4 Add 1K ANI 1CH Wrap around STA PAGE POP PSW RET * GETPG PUSH PSW LDA PAGE LHLD BDADR ADD H MOV H,A POP PSW RET * TEST CALL WRITE CALL READ CALL NXTPG CALL VDADD Show some activity MOV A,M ADI 80H Blink the cursor MOV M,A RET * WRITE PUSH PSW CALL GETPG MVI D,4 Count 1K WRIT1 PUSH PSW MOV M,A XRA M CNZ BITER POP PSW RAL INR L JNZ WRIT1 INR H DCR D JNZ WRIT1 POP PSW RET * READ PUSH PSW CALL GETPG MVI D,4 Count 1K READ1 PUSH PSW XRA M CNZ BITER POP PSW RAL INR L JNZ READ1 INR H DCR D JNZ READ1 POP PSW RET * BITER PUSH H MOV B,A LDA PAGE RRC RRC LXI H,BITS ADD L MOV L,A MOV A,M ORA B MOV M,A POP H RET * MSG1 DW 0A0BH ASC "PTC 8KRA TEST (C) 1978" DW 0A0DH DW 0A0DH ASC "TYPE FOUR DIGITS OF BOARD HEX" ASC " ADDRESS" DW 0A0DH ASC "(1K BOUNDRYS) " DB 0 MSG2 DW 0A0DH ASC "TYPE 'C' TO RUN CONTINUOUSLY" DW 0A0DH ASC "ANY OTHER KEY TO RUN ONE PASS." DW 0A0DH ASC "HIT ESC TO HALT TEST" DW 0A0DH DB 0 * MSG3 ASC "TEST IN PROGRESS. PASS NO. " COUNT DW 3030H DW 0A0DH DB 00 * CFLAG DS 1 BDADR DS 2 BITS EQU $ ROW1 DS 2 ROW2 DS 2 ROW3 DS 2 ROW4 DS 2 PAGE DS 1 FILL DS 1 BORD2 DS 2 BORD3 DS 2 BORD4 DS 2 *