## page no 374
## example no 12.1
## ENABLE INTERRUPTS
import math
def hex2dec(s):
return int(s, 16)
def dec2bin(n):
return ''.join(str(1 & int(n) >> i) for i in range(8)[::-1])
print ('EI \n \n')# ## enable interrupts
print ('MVI A,08H \n')#
a=hex2dec('8')#
b=dec2bin(a)#
print ('A--> ')
print (b)#
print('\n')
print ('SIM \n \n')# ## enable RST 7.5,6.5, and 5.5
print ('D3=1 SIM functional \n')#
print ('D2=0 Enable RST 7.5 \n')#
print ('D1=0 Enable RST 6.5 \n')#
print ('D0=0 Enable RST 5.5 \n')#
## page no 374
## example no 12.2
## RESET 7.5 INTERRUPT
import math
def hex2dec(s):
return int(s, 16)
def dec2bin(n):
return ''.join(str(1 & int(n) >> i) for i in range(8)[::-1])
print ('MVI A,18H \n')# ## set D4=1
a=hex2dec('18')#
b=dec2bin(a)#
print ('A--> ')
print (b)#
print('\n')
print ('SIM Reset 7.5 interrupt flip-flop \n') ## Reset 7.5 interrupt flip flop
## page no 375
## example no 12.3
## CHECK PENDING INTERRUPT
print ('RIM instruction interpretation \n \n');
print ('D7=SID Serial input data if any \n');
print ('D6,D5,D4= I7.5,I6.5,I5.5 Pending interrupts: 1= pending \n');
print ('D3=IE Interrupt enable flag: 1= enabled \n');
print ('D2,D1,D0= M7.5,M6.5,M5.5 Interrupt masks: 1= masked \n \n \n');
print ('Instructions \n \n');
print (' RIM \n'); ## Read interrupt mask
print (' MOV B,A \n'); ## save mask information
print (' ANI 20H \n'); ## check whether RST 6.5 is pending
print (' JNZ NEXT \n');
print (' EI \n');
print (' RET \n'); ## RST 6.5 is not pending, return to main program
print ('NEXT: MOV A,B \n'); ## get bit pattern; RST 6.5 is pending
print (' ANI 0DH \n'); ## enables RST 6.5 by setting D1=0
print (' ORI 08H\n'); ## enable SIM by setting D3=1
print (' SIM \n');
print (' JMP SERV \n'); ## jump to service routine for RST 6.5