












































































































































































































































































































































































































































setbaud 1,9600,8,n,1
mode_reco
setrts	off

call	init_b0



movd	" Alcatel 4400 (DHS 3) to 5200 BCN - BCS SMDR-Koverter V6.4/n",s7,100
out	s7,100,c4
movd	" for DHS3-BCN                      BY HOERHAGER JOSEF AOHE/n",s7,100
out	s7,100,c4
movd	" Ready for working !/l/n",s7,100
out	s7,100,c4
error_main:
mode_reco
jmp	main




main:
movd	"                                                                                    ",s9,0
movd    "C                                                  /n",s6,0
main1:
sett	200
setl	9,1	
setrts	on	
wait	rx_sign,im_sign,cntl_sign
setl	9,2
case	cntl_sign,test_rx_sign
compc	14,255
jz	overrun
jmp	main1
overrun:
movd	"ERROR Buffer overrun on input CHANNEL 1/n",s7,100
writeb	s7,100,0
jmp	error_main
test_rx_sign:
case	rx_sign,test_im_sign



setrts	off

rds	s9,0      
jz	main1
compc	15,0
jz	read_okay
movd	"ERROR          on input CHANNEL 1/n",s7,100
movc	15,s7,106
writeb	s7,100,0
compc	15,128		
jz	read_okay
jmp	error_main
read_okay:
compd	"/n",s9,80  
jz	read1_okay
movd	"reco_end is not okay on channel 1/n",s7,100
writeb	s7,100,0
writeb	s9,0,0
compd	"??//??//",s9,0               

jnz	main

movs	s9,0,s7,200,10		

jmp	main

read1_okay:

writeb	s9,0,0	















compd	"----------",s9,0           
jz	main
compd	"|User    | Username",s9,0  
jz	main
compd	"|  Trsf. |Tr.|N.|",s9,0    
jz	main
compd	"|Teiln.  | Name ",s9,0     
jz	main
compd	"|Umgelegt|Ltg|Kn|",s9,0    
jz	main
compd	"|VerbNr  |Amt|Kn|",s9,0    
jz   main



compd   "|Subscr. |Name",s9,0       
jz      main
compd   "|Trf. Sub|Trk   |",s9,0    
jz      main



compd   "|Trf. Sub|Trunk |",s9,0    
jz      main
compd   "|Trf.Tln |Amt   |",s9,0
jz      main


compd   "Date",s7,40           
jz      main
compd   "Hour",s8,38           
jz      main






compd	"??//??//",s9,0               

jnz	dhs3_no_date_line
movs	s9,0,s7,200,10		
jmp	main

dhs3_no_date_line:
compd   "????//??//?? ",s9,0
jz      main






compd	"|????????|???|??|",s9,0
jz	dhs3_second_line







compd   "|????????|???   |",s9,0
jz      dhs3_r153second_line







compd   "|????????|??????|",s9,0
jnz      save_first_line
compd   "|??//??//??|",s7,39
jmp     dhs3_r2p7second_line





save_first_line:
movs    s9,0,s7,0,85
jmp	main




dhs3_second_line:
movs	s9,0,s8,0,85 	











movd	"C                                                  /n",s6,0	   




movd	"              ",s14,100
movs    s7,1,s14,100,8
setc	10,100
setc    11,8
find_non_space:
compd	" ",s14,c10
jnz	no_space
incc	10
decc	11
jnz	find_non_space
no_space:
movs	s14,c10,s6,1,4




movs	s8,38,s6,26,2
movs	s8,41,s6,28,2




movs	s7,200,s6,30,2
movs	s7,203,s6,32,2




movs	s8,10,s6,43,3




compd	"    ",s8,1
jz	no_transfered_call

movs	s8,1,s6,47,4
movd	"F",s6,46

no_transfered_call:




compd	"   ",s8,74
jz	non_isdn_call
movd    "C",s6,0

non_isdn_call:




movs    s7,41,s6,34,4
compd   "B",s8,67
jnz     no_business_call
no_business_call:




compd	"P",s8,67
jnz	no_privat_call
movd	"P",s6,34

no_privat_call:










compd   "E",s8,78
jz	incoming_call
compd   "F",s8,78
jz	incoming_call
compd   "J",s8,78
jz	incoming_call
compd   "K",s8,78
jz	incoming_call
compd   "M",s8,78
jz	incoming_call
compd   "N",s8,78
jz	incoming_call







movs	s8,17,s6,5,16





compd	".",s8,59
jnz     cost_3digit

movd	"        ",s15,210      
movd	"        ",s15,220      
movd	"106 ",s15,220
movs	s8,54,s15,210,5
movs	s8,60,s15,215,2
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp	cost_end

cost_3digit:
compd   ".",s8,58
jnz     impulse_cost

movd	"        ",s15,210      
movd	"        ",s15,220      
movd    "0936 ",s15,220
movs    s8,54,s15,210,4   
movs    s8,59,s15,214,3     
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp	cost_end

impulse_cost:
movs	s8,57,s6,21,5
cost_end:





movs    s8,48,s6,39,2
movs	s8,51,s6,41,2
movd    "00000000",s15,230

   







movs    s8,46,s6,38,1

movs    s6,38,s15,233,5
replace " 0",s15,232,2
acall   cut_lz
movs    s15,233,s6,38,5

















save_call:
movd    "/n",s6,51

compd   "FS00",s6,1
jnz     not_replace
movs    s6,1,s14,100,4
movs    s6,47,s6,1,4
movs    s14,100,s6,47,4

not_replace:
buffwr s6,0
loop_buffer_test:
buffst			


jnz	main		





movd	"ERROR SMDR-Buffer is full !!!!!!!!!/n",s7,100
writeb	s7,100,0
setl	14,2
setl	15,2
sett	20
wait	tf_sign
jmp	loop_buffer_test




incoming_call:




movd	"INCOMING",s6,5












movd	"    0",s6,21




movd	"      ",s15,210

movs	s8,44,s15,210,3
movd	"3600  ",s15,220
acall	mull
movs    s15,230,s15,140,8

movd	"      ",s15,210
movs    s8,48,s15,210,2
movd	"60  ",s15,220
acall	mull

movd	"      ",s15,210
movs	s15,230,s15,220,8
movs    s8,51,s15,210,2
acall	add

movs	s15,230,s15,220,8
movs	s15,140,s15,210,8
acall	add
movs	s15,233,s6,38,5

jmp	save_call














dhs3_r153second_line:
movs	s9,0,s8,0,85 	











movd	"C                                                  /n",s6,0	   





movs    s7,1,s6,1,4




movs    s8,38,s6,26,2
movs    s8,41,s6,28,2




movs    s7,40,s6,30,2
movs    s7,43,s6,32,2




movd    "        ",s15,210
movd    "0       ",s15,220
movs    s8,10,s15,210,6
acall   add
acall   cut_lz
compd	"   ",s15,235
jnz	skip1_r153
movd	"  0",s15,235
skip1_r153:
movs	s15,235,s6,43,3




compd   "    ",s8,1
jz      no_r153_tr_call

movs    s8,1,s6,47,4
movd	"F",s6,46

no_r153_tr_call:













movs    s7,27,s6,34,4
compd   "B",s8,67
jnz     no_r153business_call
no_r153business_call:




compd   "P",s8,67
jnz     no_r153_privat_call
movd	"P",s6,34

no_r153_privat_call:










compd   "E",s8,78
jz      incoming_r153_call
compd   "F",s8,78
jz      incoming_r153_call
compd   "J",s8,78
jz      incoming_r153_call
compd   "K",s8,78
jz      incoming_r153_call
compd   "M",s8,78
jz      incoming_r153_call
compd   "N",s8,78
jz      incoming_r153_call







movs    s8,17,s6,5,16





compd   ".",s8,59
jnz     cost_r153_3digit

movd	"        ",s15,210      
movd	"        ",s15,220      
movd	"106 ",s15,220
movs    s8,54,s15,210,5
movs    s8,60,s15,215,2
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp     cost_r153_end

cost_r153_3digit:
compd   ".",s8,58
jnz     impulse_r153_cost

movd	"        ",s15,210      
movd	"        ",s15,220      
movd    "0936 ",s15,220
movs    s8,54,s15,210,4   
movs    s8,59,s15,214,3     
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp     cost_r153_end

impulse_r153_cost:
movs    s8,57,s6,21,5
cost_r153_end:




movs    s8,48,s6,39,2
movs    s8,51,s6,41,2
movd    "00000000",s15,230

   






movs    s8,46,s6,38,1
movs    s6,38,s15,233,5
replace " 0",s15,232,2
acall   cut_lz
movs    s15,233,s6,38,5













jmp     save_call




incoming_r153_call:




movd	"INCOMING",s6,5












movd	"    0",s6,21




movd	"      ",s15,210

movs    s8,44,s15,210,3
movd	"3600  ",s15,220
acall	mull
movs    s15,230,s15,140,8

movd	"      ",s15,210
movs    s8,48,s15,210,2
movd	"60  ",s15,220
acall	mull

movd	"      ",s15,210
movs	s15,230,s15,220,8
movs    s8,51,s15,210,2
acall	add

movs	s15,230,s15,220,8
movs	s15,140,s15,210,8
acall	add
movs	s15,233,s6,38,5

jmp	save_call















dhs3_r2p7second_line:
movs	s9,0,s8,0,85 	











movd	"C                                                  /n",s6,0	   





movs    s7,1,s6,1,4




movs    s8,38,s6,26,2
movs    s8,41,s6,28,2




movs    s7,40,s6,30,2
movs    s7,43,s6,32,2




movd    "        ",s15,210
movd    "0       ",s15,220
movs    s8,10,s15,210,6
acall   add
acall	cut_lz
compd	"   ",s15,235
jnz     skip1_r2p7
movd	"  0",s15,235
skip1_r2p7:
movs	s15,235,s6,43,3




compd   "    ",s8,1
jz      no_r2p7_tr_call

movs    s8,1,s6,47,4
movd    "F",s6,46

no_r2p7_tr_call:













movs    s7,27,s6,34,4
compd   "B",s8,67
jnz     no_r2p7business_call
no_r2p7business_call:




compd   "P",s8,67
jnz     no_r2p7_privat_call
movd	"P",s6,34

no_r2p7_privat_call:










compd   "E",s8,78
jz      incoming_r2p7_call
compd   "F",s8,78
jz      incoming_r2p7_call
compd   "J",s8,78
jz      incoming_r2p7_call
compd   "K",s8,78
jz      incoming_r2p7_call
compd   "M",s8,78
jz      incoming_r2p7_call
compd   "N",s8,78
jz      incoming_r2p7_call







movs    s8,17,s6,5,16





compd   ".",s8,59
jnz     cost_r2p7_3digit

movd	"        ",s15,210      
movd	"        ",s15,220      
movd	"106 ",s15,220
movs    s8,54,s15,210,5
movs    s8,60,s15,215,2
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp     cost_r2p7_end

cost_r2p7_3digit:
compd   ".",s8,58
jnz     impulse_r2p7_cost

movd	"        ",s15,210      
movd	"        ",s15,220      
movd    "0936 ",s15,220
movs    s8,54,s15,210,4   
movs    s8,59,s15,214,3     
acall	div
acall	cut_lz
movs    s15,233,s6,21,5
jmp     cost_r2p7_end

impulse_r2p7_cost:
movs    s8,57,s6,21,5
cost_r2p7_end:




movs    s8,48,s6,39,2
movs    s8,51,s6,41,2
movd    "00000000",s15,230

   






movs    s8,46,s6,38,1
movs    s6,38,s15,233,5
replace " 0",s15,232,2
acall   cut_lz
movs    s15,233,s6,38,5













jmp     save_call




incoming_r2p7_call:




movd	"INCOMING",s6,5












movd	"    0",s6,21




movd	"      ",s15,210

movs    s8,44,s15,210,3
movd	"3600  ",s15,220
acall	mull
movs    s15,230,s15,140,8

movd	"      ",s15,210
movs    s8,48,s15,210,2
movd	"60  ",s15,220
acall	mull

movd	"      ",s15,210
movs	s15,230,s15,220,8
movs    s8,51,s15,210,2
acall	add

movs	s15,230,s15,220,8
movs	s15,140,s15,210,8
acall	add
movs	s15,233,s6,38,5

jmp	save_call





test_im_sign:
case	im_sign,default_test
in	s6,100
out	s6,100,c4
movd	"1ERR_CMD/n",s6,100
out	s6,100,c4
anss	s6,100
jmp	main



default_test:
jmp	main






init_b0:
setp	0XD300,0x20	
setp	0XD301,0x00		

setp	0Xd302,0x40	
setp	0XD303,0x00		

setp	0Xd304,0x40	
setp	0XD305,0x00		

setp	0Xd306,0x20	
setp	0XD307,0x00		

setp	0Xd308,0x40	
setp	0XD309,0x00		

setp	0Xd30A,0x20	
setp	0XD30B,0x00		

setp	0Xd30C,0x40	
setp	0XD30D,0x00		

setp	0XD30E,0x00 	

ret

zzz:
end

