

















































































setbaud 1,1200,8,n,1  



setp	0x7f00,0x03
setp	0x7f01,0x00



mode_reco

setc    0,1          
movd    "4713          ",s0,0
movd    "0<0",s0,8
movd    " 4713 Interface for DIRECTCONNECTION V1.0/n",s0,11
out     s0,0,c4         
movd    " by HOERHAGER VTE READY !/l/n",s0,11
out     s0,0,c4         
reset_0:
mode_reco
setc    1,3
jmp     wait_cmd_1

wait_cmd_1:

wait_cmd:
clear   cntl_sign
setl    8,1
sett    250
wait    rx_sign,tf_sign,cntl_sign 



setl    8,2
case    rx_sign,test_cntl_sign
rds     s0,11           
jz      wait_cmd        



test_end:
compd   "E/n",s0,11
jnz     test_rq
movd    " END-CMD ON                       !/n",s0,11
acall   fread_dt
movs    s15,150,s0,24,21
out     s0,0,c4
call    modem_hangup
jmp     reset_0

test_rq:
compd   "R/n",s0,11
jnz     test_old
compc   13,0            
jz      do_r_cmd        
out     s0,80,c5        

do_r_cmd:
buffrd  s1,0
buffst                   
incc    11
call    data_send
jmp     wait_cmd

test_old:
compd   "O/n",s0,11
jnz     test_for_bdi
buffold s1,0
call    data_send
jmp     wait_cmd

test_for_bdi:
movd    "0ERR_CMD/n",s0,10
send_mess:
call    mess_send           
jmp     wait_cmd




test_cntl_sign:
case    cntl_sign,timeout_cmd
compc   14,0x11
jnz     wait_cmd

decc    1
jnz     wait_cmd

test_send:
setc    1,3
buffrd  s1,0
buffst                   
clear   cntl_sign

compd   "E/n",s1,0
jz      wait_cmd

incc    11
call    data_send
jmp     wait_cmd









timeout_cmd:
decc    1
jnz     wait_cmd
movd    " CHANNEL_TIMEOUT on WAITING XON from 4713!/n",s0,11
out     s0,0,c4
movd    " ON                       !/n",s0,11
acall   fread_dt
movs    s15,150,s0,16,21
out     s0,0,c4
jmp     reset_0














data_send:

movd "        ",s15,220
movs	s1,38,s15,220,1
movd	"3600 ",s15,210
acall	mul
movd "        ",s15,220
movs	s15,230,s15,210,8
movs	s1,41,s15,220,2
acall	add
movd	"60 ",s15,210
movd "        ",s15,220
movs	s1,39,s15,220,2
movs    s15,233,s1,38,5
acall	mul
movs	s15,230,s15,210,8
movd "        ",s15,220
movs	s1,38,s15,220,5
acall	add
movs    s15,233,s1,38,5

wrs     s1,0,150
wrchar  ^J
out     s1,0,c4
ret

mess_send:
out     s0,10,c4
ret





write_error:
movd    " TIMEOUT ERROR ON WRITE TO CHANNEL_0 (xoff) --> HANGUP!/n",s0,11
out     s0,0,c4
movd    " ON                       !/n",s0,11
acall   fread_dt
movs    s15,150,s0,16,21
out     s0,0,c4
jmp     reset_0









modem_hangup:
mode_reco
sett    30
wait    tf_sign
wrd     "+++"
sett    30
wait    tf_sign
wrd     "ATH/n"
hangup_wait:
sett    20
wait    tf_sign,rx_sign
case    rx_sign,hangup_to
rds     s0,11
jz      hangup_wait
out     s0,0,c4
jmp     hangup_wait

hangup_to:
ret







modem_init:
wrd     "AT/n"
l_m_init:
sett    100
wait    rx_sign,tf_sign
case    rx_sign,mi_timeout
rds     s0,11
jz      l_m_init

out     s0,0,c4
compd   "OK/n",s0,11
jnz     l_m_init
ret

mi_timeout:
decc    12
jnz     modem_init
movd    " MODEM-INIT ERROR --->/n",s0,11
out     s0,0,c4
movd    " ON                       !/n",s0,11
acall   fread_dt
movs    s15,150,s0,16,21
out     s0,0,c4
incc    12
ret





wait_ring:
sett    100     
wait    rx_sign,tf_sign
case    rx_sign,wr_timeout
rds     s0,11
jz      wait_ring
out     s0,0,c4         
compd   "CONNECT",s0,11
jz      wait_ring_end
compd   "RING",s0,11
jnz     wait_ring
wait_ring_end:
ret

wr_timeout:
decc    12
jnz     wait_ring
incc    12
ret






modem_offh:
compd   "CONNECT",s0,11
jz      modem_connected
setc    12,30   
modem1_offh:
sett    10
wait    tf_sign
wrd     "ATA/n"

m_wait_connect:
m_offh_l:
sett    10
wait    rx_sign,tf_sign
case    rx_sign,moffh_timeout
rds     s0,11
jz      m_offh_l
out     s0,0,c4

modem_connected:
setc    12,1
decc    12
ret

test_ring:
compd   "RING",s0,11
jnz      m_offh_l
jmp     modem1_offh

moffh_timeout:
decc    12
jnz     m_offh_l
movd    " TIMEOUT WAIT-CONNECT                       !/n",s0,11
acall   fread_dt               
movs    s15,150,s0,34,21
out     s0,0,c4                
incc    12
ret














data_stx:
movc    11,s1,10       
setc    12,1            
l_data_stx:
clear   cntl_sign       
stxwrs  s1,10,140       
jz      wait_ackn_data  

call    write_error     
mode_reco               
movd    "CHANNEL TIMEOUT     ",s0,80
setc    13,1            
ret

wait_ackn_data:
sett    30              
wait    cntl_sign,tf_sign
case    cntl_sign,to_data_stx
compc   14,6            
jnz     data_nak
setc    13,0            
ret

data_nak:
compc   14,21           
jnz     data_wrong
decc    12              
jnz     l_data_stx      
movd    " ERROR ON DATA-SEND: RECEIVED *NAK*!/n",s0,11
out     s0,11,c4
movd    "RECEIVED *NAK*      ",s0,80
setc    13,1            
ret

data_wrong:
movd    " ERROR ON DATA-SEND: RECEIVED *   *!     /n",s0,11
movc    14,s0,42        
out     s0,0,c4
decc    12
jnz     l_data_stx
movs    s0,32,s0,80,20
setc    13,1            
ret

to_data_stx:
movd    " ERROR ON DATA-SEND: WAIT ACKN. TIMEOUT!/n",s0,11
out     s0,0,c4
decc    12
jnz     l_data_stx
movd    "WAIT ACKN. TIMEOUT  ",s0,80
setc    13,1
ret












mess_stx:
setc    12,1            
movs    s0,11,s0,150,80
l_mess_stx:
clear   cntl_sign       
stxwrs  s0,150,80         
jz      wait_ackn_mess  

call    write_error     
mode_reco               
ret

wait_ackn_mess:
sett    30              
wait    cntl_sign,tf_sign
case    cntl_sign,to_mess_stx
compc   14,6            
jnz     mess_nak
ret

mess_nak:
compc   14,21           
jnz     mess_wrong
decc    12              
jnz     l_mess_stx      
movd    " ERROR ON MESSAGE-SEND: RECEIVED *NAK*!/n",s0,11
out     s0,11,c4
ret

mess_wrong:
movd    " ERROR ON MESSAGE-SEND: RECEIVED *   *!/n",s0,11
movc    14,s0,45        
out     s0,0,c4
decc    12
jnz     l_mess_stx
ret

to_mess_stx:
movd    " ERROR ON MESSAGE-SEND: WAIT ACKN. TIMEOUT!/n",s0,11
out     s0,0,c4
decc    12
jnz     l_mess_stx
ret

zzz_end:

end

