

























































































































































































































































































setbaud 1,9600,8,n,1
mode_opus300
setc    1,3
call	init_b0
call	init_b1
call	init_b2
call	init_b3

sett    10
wait	tf_sign
movd	"00000000  ",s14,200
movd	"@D/n",s14,250

movd    "10000000100000001000000010000000",0xd000,0
movd    "10000000n",0xcf00,0





movd	" Alcatel 4400 (DHS 3) Notification-Server Interface V2.2/n",s0,100
out	s0,100,c4
movd	" * notif22.dw0 *   BY HOERHAGER JOSEF AOHE       02//2000/n",s0,100
out	s0,100,c4
movd	" Ready for working !/l/n",s0,100
out	s0,100,c4
error_main:
mode_opus300
call	init_ahl
sendsig   ans_sign,c0    
jmp	main


main:

main_loop:

sett	100				
wait	im_sign,tf_sign,rx_sign,ans_sign,cntl_sign

case	tf_sign,test_rx_state






setc    1,3
jmp	main_loop

test_rx_state:
case	rx_sign,test_cntl_state
call	opus_rxstate
jmp	main_loop

test_cntl_state:
case	cntl_sign,test_ans_state
call	opus_cntlstate
jmp	main_loop

test_ans_state:
case	ans_sign,test_im_state
movd    "M0 reading buffer_notify:                            /n",s0,0
readb   s0,25,0  
jz	main_loop		
out     s0,0,c4
writeb  s0,0,3

sendsig ans_sign,c0
compd   "TEST_channel",s0,29
jz	send_observe_answer
compd   "RX330E",s0,25
jz	send_e_mess
compd   "RX220E",s0,25
jz	send_e_mess
compd   "RX220A",s0,25
jz	send_e_mess
compd   "RX110E",s0,25
jz	send_e_mess
compd   "SM220E",s0,25
jz	send_e_mess
compd   "MX??I",s0,25
jz	alarm_on_off
compd   "RX00",s0,25
jz	alarm_ack





out	s0,100,c4
movd    "M0: WRONG Message from buffer *buffer_notify*/n",s0,100
out	s0,100,c4
jmp	main





alarm_ack:
movd    "      Message from Notification Server  ",s0,61
out	s0,61,c4
sendsig   ans_sign,c0 
jmp	main




alarm_on_off:



movs    s0,30,s15,0,9 



jmp     not_f_skip
movd    "003 000 ",s15,100
acall	pfirst_dbs
acall	find_dbs
jz      alarm_found
jmp     not_f_skip

movd    "005 000 ",s15,100
acall	pfirst_dbs
acall	find_dbs
jz      alarm_found

movd    "006 000 ",s15,100
acall	pfirst_dbs
acall	find_dbs
jz      alarm_found

movd    "007 000 ",s15,100
acall	pfirst_dbs
acall	find_dbs
jz      alarm_found

not_f_skip:
movd    "M0: Alarm not found in Data-Base/n",s0,100
out	s0,100,c4
out	s14,250,c4
sendsig ans_sign,c0	



jmp	main

alarm_found:
acall	read_dbs
comps	s15,6,s14,6,2
jz	do_alarm
acall	pnext_dbs
acall	find_dbs
jz	alarm_found
movd    "M0: Alarm found in DBS but not for that state/n",s0,100
out	s0,100,c4
out	s14,250,c4
sendsig ans_sign,c0
jmp	main



do_alarm:
compd	"0",s14,8
jz	alarm_st_0
compd	"1",s14,8
jz	alarm_st_1
compd	"2",s14,8
jz	alarm_st_2



movd	"/n",s14,112
movd	"Error worng alarm_state/n",s0,0
out	s14,0,c4
out	s0,0,c4
sendsig ans_sign,c0	
jmp	main


send_e_mess:
movd    "TX000A                                                                             /n",s5,0
movs    s0,29,s5,4,150   
movs	s14,200,s15,230,8
movs	s15,235,s5,6,3    
acall	inc_erg
movs	s15,230,s14,200,8
call	opus_txstate
out	s14,250,c4
sendsig ans_sign,c0	
jmp	main


alarm_st_0:
alarm_st_1:
alarm_st_2:
compd	"A",s14,19
jnz	extmessage_send
movd    "TX000A                                                                             /n",s5,0
movs	s14,200,s15,230,8
movs	s15,235,s5,6,3    
acall	inc_erg
movs	s15,230,s14,200,8
movs	s14,20,s5,9,94
call	opus_txstate
out	s14,250,c4
sendsig ans_sign,c0	
jmp	main


extmessage_send:
compd	"E",s14,19
jnz	message_send
movd    "TX000E                                                                             /n",s5,0
movs	s14,200,s15,230,8
movs	s15,235,s5,6,3    
acall	inc_erg
movs	s15,230,s14,200,8
movs	s14,20,s5,9,94
call	opus_txstate
out	s14,250,c4
sendsig ans_sign,c0	
jmp	main



message_send:
compd	"C",s14,19
jnz	stop_send
movd    "TX000C                                                                             /n",s5,0
movs	s14,200,s15,230,8
movs	s15,235,s5,6,3    
acall	inc_erg
movs	s15,230,s14,200,8
movs	s14,20,s5,9,94
call	opus_txstate
out	s14,250,c4
sendsig ans_sign,c0	
jmp	main

stop_send:
out	s14,0,c4
jmp	main



send_observe_answer:
movd    "TX00                                       /n",s5,0
movd	"OK_channel/n",s5,4
call	opus_txstate
out	s14,250,c4
sendsig ans_sign,c0	
movd    "0",s14,241

setc    1,10
jmp	main














init_ahl:
setp	0x7f00,0x03
setp	0x7f01,0x00

setp    0x7f03,0x03

mode_opus300

movd    "AHL-RX_TX0          /n",s6,0
movd	" AHL-State IDLE/n",s6,11
out	s6,0,c4
setc	1,30	
ret




mode_opus300			

opus_txstate:







movd	" AHL-State TRANSMIT/n",s6,11
out	s6,0,c4

out	s5,0,c4
setc	12,1

l_data_stx:
clear	cntl_sign		
opuswrs s5,4,150	
jz	wait_ackn_data		



mode_opus300			
movd	" TIMEOUT ERROR ON WRITE TO CHANNEL AHL (xoff)!/n",s6,11
out	s6,00,c4
decc	12
jnz	l_data_stx
opus_err_timeout:
mess_max_retry:
movd	" Max retry reached!/n",s6,11
out	s6,0,c4
movd	" ERR_TO/n",s6,11
out	s6,0,c4
jmp	nz_ret

wait_ackn_data:
sett	10		
wait	cntl_sign,tf_sign,rx_sign
case	rx_sign,do_cntl_stx
call	opus_rxstate
jmp	wait_ackn_data

do_cntl_stx:
case	cntl_sign,to_data_stx
compc	14,6			
jnz	data_nak
movd	"RECEIVED *ACK*/n",s6,11
out	s6,0,c4
jmp	z_ret

data_nak:
compc	14,21			
jnz	data_wrong
movd	" ERROR ON DATA-SEND: RECEIVED *NAK*!/n",s6,11
out	s6,0,c4
decc	12		
jnz	l_data_stx		
jmp	mess_max_retry

data_wrong:
movd	" ERROR ON DATA-SEND: RECEIVED *   *!/n",s6,11
movc	14,s6,42	      
out	s6,0,c4
decc	12		
jnz	l_data_stx
jmp	mess_max_retry

to_data_stx:
movd	" ERROR ON DATA-SEND: WAIT ACKN. TIMEOUT!/n",s6,11
out	s6,0,c4
decc	12		
jnz	l_data_stx
jmp	mess_max_retry





opus_cntlstate:
movd	" ERROR CNTL-SIGN:    RECEIVED *   *!/n",s6,11
movc	14,s6,42	      
out	s6,0,c4
ret




opus_rxstate:
movd    "RX00",s4,0       
movd	" AHL-State RECEIVE/n",s6,11
out	s6,0,c4
opusrds s4,4
jz	nz_ret
compc	15,0			
jnz	error_rxopus



movd	" Sending *ACK*/n",s6,11
out	s4,0,c4
out	s6,0,c4

writeb	s4,0,0
sendsig ans_sign,c0
wrchar	ack
jmp	z_ret

error_rxopus:
movd	" Sending *NAK*/n",s6,11
out	s4,0,c4
out	s6,0,c4

wrchar	nak
jmp	nz_ret





z_ret:
setc	0,255
incc	0
ret

nz_ret:
setc	0,0
incc	0
ret



test_im_state:
case	im_sign,main_loop      


in	s0,0
out     s0,0,c4





compd   "init dbs ??? ",s0,0
jz	go_init_dbs



compd	"disp dbs ???/n",s0,0
jz	go_dbs_display

compd	"set dbs ??? ",s0,0
jz	go_dbs_input

compd   "setr dbs ??? ??? ",s0,0
jz      go_dbsreco_input

compd	";",s0,0
jz	main_message

movd	" command not found/n",s0,100
out     s0,100,c4
movd    "OK#/n",s0,0
anss	s0,100
jmp	main

main_message:
movd    "OK#/n",s0,0
anss	s0,0
jmp	main

main_error:
movd	"Error/n",s0,0
out     s0,0,c4
movd    "OK#/n",s0,0
anss	s0,0
jmp	main

go_init_dbs:



movd    "004 0 280 8 6 2 2 3 3 3 1 92 /n",s15,100
movs    s0,9,s15,100,40
acall	open_dbs



movd	"                                                                                                                /n",s14,0
acall	pfirst_dbs
acall	init_dbs
acall	pfirst_dbs
jmp	main_message

go_dbs_display:
movd	"         /n",s15,100
movs	s0,9,s15,100,3
acall	pfirst_dbs
movd	";  Begin of DBS       /n",s0,0
movs	s15,100,s0,16,3
out	s0,0,c4

movd    "m0setr dbs nnn rrr ttttttt                                                     /n",s0,0
movs    s15,100,s0,11,3
setc    2,0
dbs_dis_loop:
acall	read_dbs
jnz	dbs_aus_dis
compd	"            ",s14,0
jz	dbs_aus_dis
movc    2,s0,15
movd    "/n",s14,112
movs    s14,0,s0,19,60
out     s0,0,c4
incc    2
acall   pnext_dbs
jz	dbs_dis_loop
dbs_aus_dis:
movd	"; End of DBS     /n",s0,0
movs	s15,100,s0,13,3
out	s0,0,c4
jmp	main_message

go_dbs_input:
movd	"004 0      /n",s15,100
movs    s0,8,s15,100,3
acall   pfirst_dbs
movd    "        ",s15,0
acall   find_dbs
jnz     dbs_no_space





movs    s0,12,s14,0,100
acall	write_dbs
jz	main_message
movd	" DBS    Error on write to dbs!/n",s0,0
movs	s15,100,s0,5,3
out	s0,0,c4
jmp	main_error
dbs_no_space:
movd	" DBS     Error DBS is full !!!!/n",s0,0
movs	s15,100,s0,5,3
out	s0,0,c4
jmp	main_error


go_dbsreco_input:
movd	"004 0      /n",s15,100
movs    s0,8,s15,100,8
acall   preco_dbs
jnz     dbs_no_space





movs    s0,17,s14,0,100
acall	write_dbs
jmp      main_message







init_b0:
setp	0XD300,0x50	
setp	0XD301,0x00		

setp	0Xd302,0x20	
setp	0XD303,0x00		

setp	0Xd304,0x20	
setp	0XD305,0x00		

setp	0Xd306,0x50	
setp	0XD307,0x00		

setp	0Xd308,0x20	
setp	0XD309,0x00		

setp	0Xd30A,0x50	
setp	0XD30B,0x00		

setp	0Xd30C,0x20	
setp	0XD30D,0x00		

setp	0XD30E,0x00 	

ret






init_b1:
setp	0Xd310,0x94	
setp	0Xd311,0x00		

setp	0Xd312,0x04	
setp	0Xd313,0x00		

setp	0Xd314,0x04	
setp	0Xd315,0x00		

setp	0Xd316,0x94	
setp	0Xd317,0x00		

setp	0Xd318,0x04	
setp	0Xd319,0x00		

setp	0Xd31A,0x94	
setp	0Xd31B,0x00		

setp	0Xd31C,0x04	
setp	0Xd31D,0x00		

setp	0Xd31E,0x01 	

ret






init_b2:
setp	0Xd320,0x98	
setp	0Xd321,0x00		

setp	0Xd322,0x04	
setp	0Xd323,0x00		

setp	0Xd324,0x04	
setp	0Xd325,0x00		

setp	0Xd326,0x98	
setp	0Xd327,0x00		

setp	0Xd328,0x04	
setp	0Xd329,0x00		

setp	0Xd32A,0x98	
setp	0Xd32B,0x00		

setp	0Xd32C,0x04	
setp	0Xd32D,0x00		

setp	0Xd32E,0x02 	

ret






init_b3:
setp	0Xd330,0x9c	
setp	0Xd331,0x00		

setp	0Xd332,0x04	
setp	0Xd333,0x00		

setp	0Xd334,0x04	
setp	0Xd335,0x00		

setp	0Xd336,0x9c	
setp	0Xd337,0x00		

setp	0Xd338,0x04	
setp	0Xd339,0x00		

setp	0Xd33A,0x9c	
setp	0Xd33B,0x00		

setp	0Xd33C,0x04	
setp	0Xd33D,0x00		

setp	0Xd33E,0x03 	

ret



zzzz:

end


