;ROUTINE TO TEST INTERRUPT CIRCUITRY OF Z-80 BOARD ;8 ROUTINES FROM 0 THROUGH 8 AND UP TO 38H WILL BE INITIALIZED ;GENERATING AN INTERRUPT BY HAND SHOULD CAUSE THE Z-80 TO EXECUTE THE ;THE APPROPRIATE ROUTINE. REQUIRES GODBOUT OPERATING SYSTEM,WITH ;INTERFACER ADDRESSED AT 0. STATUS EQU 1 ;INTERFACER STATUS PORT DATA EQU 0 ;INTERFACER DATA PORT TBE EQU 1 ;INTERFACER TRANSMITTER BUFFER EMPTY BIT CR EQU 0AH ;CARRIAGE RETURN LF EQU 0DH ;LINE FEED PRINT EQU 9H ;PRINT STRING IN DE REGISTER BDOS EQU 5 ORG 100H LXI SP,80H ; LXI D,CPYMSG ;COPYRIGHT MESSAGE MVI C,PRINT CALL BDOS ; ;MOVE CODE FROM VECT0 TO VECT7 + 8 INTO RAM BEGINNING AT 0 LXI H,VECT0 ;HL POINTS TO SOURCE ADDRESS LXI D,0 ;DESTINATION ADDRESS MVI C,40H ;LENGTH OF ROUTINES MOVEIT: MOV A,M ;BYTE TO MOVE INTO REG A XCHG ;HL HAS DESTINATION ADDRESS MOV M,A ;CODE INTO LOWER MEMORY XCHG ;SWAP BACK INX H ;NEXT SOURCE ADDRESS INX D ;NEXT DESTINATION ADDRESS DCR C ;DECREMENT COUNTER JNZ MOVEIT ;KEEP GOING WATE: DI ;ENABLE INTERRUPTS MVI B,21H ;EXCLAMATION MARK INTO B CALL HAND ;CALL HANDSHAKE ROUTINE EI JMP WATE ;WAIT FOR INTERRUPT HAND: DI IN STATUS ;PUT STATUS INTO REG A ANI TBE ;SEE IF IT'S READY JZ HAND ;IF NOT READY START OVER MOV A,B ;CHARACTER TO PRINT INO A OUT DATA ;OUTPUT REG A TO TERMINAL RET ; VECT0: MVI B,'0' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT1: MVI B,'1' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT2: MVI B,'2' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT3: MVI B,'3' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT4: MVI B,'4' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT5: MVI B,'5' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT6: MVI B,'6' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT7: MVI B,'7' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP CPYMSG: DB CR,LF,'COPYRIGHT COMPUPRO 1983' DB CR,LF,CR,LF,'$'