


















































































































setup_0:
setbaud 1,9600,8,n,1
mode_reco
movd    "        /n",s15,210
movs    s15,210,s15,220,10
movs    s15,210,s15,230,10
movs    s15,210,s15,240,10
setl    11,2            
setl    12,2
setl    13,2
setl    14,2
;        setl    15,2
call    init_notruf
compd   "CONFIG",s8,200        
jz      setup_1



call    dbs_3_init
call    dbs_0_init
movd    "return from <dbs_3_init> und <dbs_0_init> okay!/n",s12,100
out     s12,100,c4



movd    "CONFIG   ",s8,200    
movd    "789      ",s8,210    
movd    "13       ",s8,220    
movd    "5        ",s8,230    

movd    "1234     ",s8,240    




movd    "         ",s8,150     
movd    "         ",s8,160     
movd    "694      ",s8,170     
movd    "3        ",s8,180     
movd    "B2  ",s8,190          
movd    "N ",s8,195            
movd    "Y ",s8,197            
movd    "Z",s8,199             



clear   s14,0
setc    9,0                     
setc    5,0
setup_1:





movd    "                     /n",s8,120
movc    s8,220,7          
setc    8,70                    
setc    6,20                    
lf_set:
movd    "/l",s8,c8
incc    8
decc    7
jz      cr_set
decc    6
jnz     lf_set
cr_set:
movd    "/n",s8,c8






call    pr_startup              
setl    11,2
setl    6,0




movd    "Project: Patienten Notruf B„renhof am Felsenbad V 2.0/n",s12,0
out     s12,0,c4
movd    "MOD     3<3 by Hoerhager Josef AOH ready!/n",s12,0
out     s12,0,c4
setc    0,0             

movd    " /l/n",s12,11
out     s12,0,c4         
reset_01:
reset_0:
main:
setl    11,1
setl    12,0
setl    13,0
setl    14,0

movd    "3<3",s12,8
setl    11,1     
compc   1,0      
jz     setup_0
sett    2               




wait    cntl_sign,tf_sign,im_sign



setl    11,2

test_cntl:
case    cntl_sign,test_tf_sign
movd    "WM 3 Message<                                                            >/n",s9,0
movs    s11,100,s9,13,60
out     s9,0,c4
compd   "RING",s11,140
jz      m3_ring
movd    "   ",s11,100
jmp     main




init_notruf:
movd    "0  ",s11,0
movd    "000 ",s11,5
movd    "0       ",s11,15
movd    "   ",s11,100               
ret







m3_ring:
setl    11,2

movd    "AT*A/n",s9,100
out     s9,100,c0           




movd    "1   ",s11,0
movd    "Modul 3 STATE=       /n",s9,0
movs    s11,0,s9,15,3
out     s9,0,c4

main_st1:
sett    100                     
wait    tf_sign,cntl_sign
case    tf_sign,test_st1_cntl



m3_onhook:
call    h2824_onhook
jmp     main

test_st1_cntl:
case    cntl_sign,main_st1
movd    "WM 3 Message<                                                            >/n",s9,0
movs    s11,100,s9,13,60
out     s9,0,c4

compd   "CONN",s11,140
jz      m3_connect

compd   "CLEARED",s11,140
jz      m3_onhook

compd   "DISC",s11,140
jz      m3_onhook

jmp     main_st1





m3_connect:



movd    "2   ",s11,0
movd    "Modul 3 STATE=       /n",s9,0
movs    s11,0,s9,15,3
out     s9,0,c4

compd   "    ",s11,110
jnz     m3_with_number

no_number:
call    send_error
call    h2824_onhook
jmp     main

m3_with_number:



test_notruf:

movd    "3 0          ",s15,100
acall   pfirst_dbs
movs    s11,110,s15,0,4
acall     find_dbs
jz        test_for_clear







movd      "3 0 ",s15,100
acall   pfirst_dbs
movd    "    ",s15,0
acall     find_dbs
jnz       space_error_dbs




movd    "    10      /n",s14,0
movd    "6   ",s14,6
movs    s11,110,s14,0,4
acall   write_dbs
out     s14,0,c4

activate:
sett    10



call      prstart_notr

sendsig   ans_sign,c1     
call    send_ack



wait    tf_sign
call    h2824_onhook
jmp     main



reactivate:
call    send_error
sett    10



call      prwrong_notr
call      prrestart_notr

sendsig   ans_sign,c1     



wait    tf_sign
call    h2824_onhook
jmp     main



space_error_dbs:
call      prdbs_error
jmp       activate







test_for_clear:
check_clear:



call    get_passw
jnz     reactivate          
comps   s15,50,s8,240,4
jnz     reactivate



movd    "3 0          ",s15,100
acall   pfirst_dbs
movs    s11,110,s15,0,4
acall     find_dbs
jnz       skip_clear
movd      "            ",s14,0
acall     write_dbs

skip_clear:
sett    10
sendsig ans_sign,c1
call    send_ack
call    prclear_notr

wait    tf_sign
call    h2824_onhook
jmp     main





test_tf_sign:
case    tf_sign,test_im_sign



movd    "   ",s11,100               
compd   "2824conn",s11,240
jz      main
call    pr_2824err
movd    "2824conn",s11,240
jmp     main








answ_err_cmd:
out     s12,0,c4
movd    "ERR_CMD/n",s12,11
out     s12,0,c4
anss    s12,10
ret




test_im_sign:
case    im_sign,sign_err
in      s12,10
compd   "init/n",s12,10         
jnz     cfg_cmd1
ansd    "OKAY!/n"
cfg_cmd01:
movd    "     ",s8,200
jmp     setup_0

cfg_cmd1:
compd   "reset/n",s12,10
jnz     cfg_cmd2
ansd    "OKAY-RESET!/n"


cfg1_loop:
compd   "   ",s14,181    
jnz     cfg1_cmd1        
readb   s14,181,0        
jz      cfg_cmd01        
cfg1_cmd1:
call    clear_notruf
jmp     cfg1_loop

cfg_cmd2:
compd   "set",s12,10
jnz     cfg_cmd3
call    cmd_set
anss    s12,10
jmp     reset_0

cfg_cmd3:
compd   "disp config",s12,10
jnz     cfg_cmd4
call    disp_config
jmp     reset_0

cfg_cmd4:
compd   "disp hist ",s12,10
jnz     cfg_cmde
call    disp_history
jmp     main


cfg_cmde:
call    answ_err_cmd
jmp     reset_0





sign_err:
movd    " SIGNAL_ERROR/n",s12,11
out     s12,0,c4
jmp     reset_0




time_min:
acall   read_dt
movd    "       ",s15,210       
movs    s15,188,s15,210,2       
movd    "60 ",s15,220
acall   mul
movs    s15,190,s15,210,2       
movs    s15,230,s15,220,8
acall   add                     



movs    s15,233,s14,230,6
ret




calc_timeout:
movs    s14,230,s15,210,6        
movs    s8,230,s15,220,4
acall	add
movs    s15,233,s14,240,6
movs    s15,233,s15,210,6       
movd    "1440 ",s15,220
acall   comp
compd   "LT",s15,204
jz      calc_end_to
movs    s14,240,s15,210,6
movd    "1440 ",s15,220
acall   subb
movs    s15,233,s14,240,6

calc_end_to:
ret









time_task01:
compd   "   ",s14,181    
jnz     time_t01         
readb   s14,181,0        
jnz     time_t01         
movd    "   ",s14,181    
jmp     time_task02      

time_t01:
movs    s14,184,s15,210,6       
movs    s14,230,s15,220,6
acall   comp                    
compd   "E",s15,204            
jnz     time_task02
clear_notruf:
movd    "0      ",s15,100
movs    s14,181,s15,102,3       
acall   preco_dbs
acall   read_dbs
compd   "     ",s14,3           
jz      time_t011               
movd    "3N            /n",s14,99 
movs    s14,3,s14,102,6
setc    8,104
find_space:
incc    8
compd   " ",s14,c8
jnz     find_space
incc    8
movs    s14,9,s14,c8,20         
out     s14,99,c2               
movd    "      ",s14,3
acall   write_dbs
time_t011:
movd    "             ",s14,181

time_task02:
ret









dbs_0_init:
movd    "CLEAR DATA-BASE IN MODUL 0 !!!/n",s12,100
out     s12,100,c4
dbs_0n_init:
movd    "0 16384 256 3 3 6 20   ",s15,100
movd    "                                                       ",s14,0
acall   open_dbs
acall   init_dbs
ret






















dbs_3_init:
movd    "CLEAR DATA-BASE IN MODUL 3 !!!/n",s12,100
out     s12,100,c4
movd    "3 16384 20 4 4 1 1 4  /n",s15,100
acall   open_dbs
acall   pfirst_dbs
movd    "    00                          /n",s14,0
acall   init_dbs
ret



disp_dbs_3:
movd    " DATABASE 3 LIST !/n",s12,100
out     s12,100,c4











dbs3_disp:
setc    10,255
movd    "RECO Nr.  0         1  2  3      /n",s12,100
out     s12,100,c4
movd    "                                 /n",s12,100
movd    "3  ",s15,100
acall   pfirst_dbs

dbs3_disploop:
acall   read_dbs        
incc    10
compd   "    ",s14,0
jz      dbs3_next
movc    10,s12,105              
movs    s14,0,s12,110,4        
movs    s14,4,s12,120,1           
movs    s14,5,s12,123,1            
movs    s14,6,s12,126,4           
out     s12,100,c4

dbs3_next:
acall   pnext_dbs
jz      dbs3_disploop

movd    " END of LIST DBS 3. /n",s12,100
out     s12,100,c4
ret




disp_dbs_0:
movd    " DATABASE 0 LIST !/n",s12,100
out     s12,100,c4







dbs0_disp:
movd    "RECO Nr.  0         1/n",s12,100
out     s12,100,c4
movd    "                                 /n",s12,100
movd    "0  ",s15,100
acall   pfirst_dbs
setc    10,255

dbs0_disploop:
acall   read_dbs        
incc    10
compd   "      ",s14,3
jz      dbs0_next
movc    10,s12,105              
movs    s14,3,s12,110,6         
movs    s14,9,s12,120,20        
out     s12,100,c4

dbs0_next:
acall   pnext_dbs
jz      dbs0_disploop

movd    " END of LIST DBS 0. /n",s12,100
out     s12,100,c4


ret



disp_history:
movc    s12,20,6
compc   6,0
jnz     dh_loop
setc    6,10

dh_loop:
buffrd   s12,10
compd   "E/n",s12,10
jz      dh_emty
out     s12,10,c4
decc    6
jnz     dh_loop
ansd    "MORE data/n"
ret

dh_emty:
ansd    "HISTORY BUFFER EMTY!/n"
ret



disp_config:
ansd    " CONFIGURATION !/n"
call    disp_dbs_0
call    disp_dbs_3
movd    "                                /n",s12,100
movd    " NOTRUF Nst# =                  /n",s12,100
movs    s8,210,s12,124,6
out     s12,100,c4

movd    " NUMBER of LF =                 /n",s12,100
movs    s8,220,s12,124,6
out     s12,100,c4

movd    " CLEAR TIMEOUT =                /n",s12,100
movs    s8,230,s12,124,6
out     s12,100,c4

movd    " CLEAR CODE =                   /n",s12,100
movs    s8,240,s12,124,6
out     s12,100,c4

movd    " AKTUELLE ZEIT =                /n",s12,100
movs    s14,230,s12,124,6
out     s12,100,c4

movd    " NEXT =                            /n",s12,100
movs    s14,181,s12,124,10
out     s12,100,c4

movd    " PAGING ENABLE =                /n",s12,100
movs    s8,197,s12,124,1
out     s12,100,c4

movd    " PAGING WAIT-TONE =             /n",s12,100
movs    s8,195,s12,124,1
out     s12,100,c4

movd    " PAGING ROUTE =                 /n",s12,100
movs    s8,190,s12,124,2
out     s12,100,c4

movd    " PAGING PRE-DIAL =              /n",s12,100
movs    s8,180,s12,124,6
out     s12,100,c4

movd    " PAGING PAGER-NUMBER=           /n",s12,100
movs    s8,170,s12,124,6
out     s12,100,c4

movd    " PAGING POST-DIAL =             /n",s12,100
movs    s8,160,s12,124,6
out     s12,100,c4

movd    " PAGING POST-DIAL-displ=        /n",s12,100
movs    s8,150,s12,124,6
out     s12,100,c4

ret





cmd_set:
compd   "num=",s12,14
jnz     cmd_set1
movs    s12,18,s8,210,8
jmp     okay_set

cmd_set1:
compd   "lf=",s12,14
jnz     cmd_set2
movs    s12,17,s8,220,8
jmp     okay_set

cmd_set2:
compd   "to=",s12,14
jnz     cmd_set3
movs    s12,17,s8,230,8
jmp     okay_set

cmd_set3:
compd   "clcode=",s12,14
jnz     cmd_set4
movs    s12,21,s8,240,8
jmp     okay_set

cmd_set4:
compd   "route=",s12,14
jnz     cmd_set5
movs    s12,20,s8,190,2
jmp     okay_set

cmd_set5:
compd   "predial=",s12,14
jnz     cmd_set6
movs    s12,22,s8,180,8
jmp     okay_set

cmd_set6:
compd   "postdial=",s12,14
jnz     cmd_set7
movs    s12,23,s8,160,8
jmp     okay_set

cmd_set7:
compd   "pager=",s12,14
jnz     cmd_set8
movs    s12,19,s8,170,8
jmp     okay_set

cmd_set8:
compd   "postdispl=",s12,14
jnz     cmd_set9
movs    s12,24,s8,150,8
jmp     okay_set

cmd_set9:
compd   "waittone=",s12,14
jnz     cmd_set10
movs    s12,23,s8,195,2
jmp     okay_set

cmd_set10:
compd   "page_en=",s12,14
jnz     cmd_set11
movs    s12,22,s8,197,2
jmp     okay_set

cmd_set11:
movd    "ERR_CMD/n",s12,10
ret
okay_set:
movd    "OKAY!/n",s12,10
ret




h2824_onhook:
movs    s11,100,s11,10,3   
movd    "AT*H/n",s9,100
out     s9,100,c0
h2824_main_l:
sett    20                     
wait    tf_sign,cntl_sign
case    tf_sign,h2824_cntl



jmp     nz_ret

h2824_cntl:
case    cntl_sign,nz_ret
movd    "WM 3 Message<                                                            >/n",s9,0
movs    s11,100,s9,13,60
out     s9,0,c4
compd   "CLEARED",s11,140
jz      h2824_tcr
jmp     h2824_main_l

h2824_tcr:
comps   s11,100,s11,10,3
jnz     h2824_onhook
movd    "   ",s11,100
jmp     z_ret




z_ret:
setc	15,255
incc	15
ret

nz_ret:	
setc	15,0
incc	15
ret






send_messnr:
movd    " *** NOTRUF   Message NR:       *******           +                       /n",s12,100
movs    s11,25,s12,127,3
movc    s11,25,2
incc    2
movc    2,s11,25
acall   fread_dt
movs    s15,150,s12,150,21
call    print_out_s12
call    write_hist_s12
ret

send_rufnum:
call    print_out_s12
call    write_hist_s12
movd    " Zimmer:                                                              /n",s12,100
movs    s11,110,s12,111,4
call    print_out_s12
call    write_hist_s12
ret

send_linefeed:
movs    s8,120,s12,100,25
call    print_out_s12
ret

pr_startup:
call    send_messnr
movd    " AFS Neu gestartet/n",s12,100
call    print_out_s12
call    write_hist_s12
call    send_linefeed
ret

pr_2824err:
call    send_messnr
movd    " Fehler ISDN 2824 Apparat keine Kommunikation!!!/n",s12,100
call    print_out_s12
call    write_hist_s12
call    send_linefeed
ret

prstart_notr:
call    send_messnr
movd    " NOTRUF --------------------------------------- gstartet aus/n",s12,100
call    send_rufnum
call    send_linefeed
ret
ret

prwrong_notr:
call    send_messnr
movd    " Passwort falsch aus/n",s12,100
call    send_rufnum
call    send_linefeed
ret

prclear_notr:
call    send_messnr
movd    " NOTRUF ----------------------- geloescht aus/n",s12,100
call    send_rufnum
call    send_linefeed
ret

prrestart_notr:
call    send_messnr
movd    " NOTRUF ----------------------------- neuerlich gestartet aus/n",s12,100
call    send_rufnum
call    send_linefeed
ret

prdbs_error:
call    send_messnr
movd    "*** ERROR DBS not enough space !!! *****/n",s12,100
call    print_out_s12
call    write_hist_s12
call    send_linefeed
ret



print_out_s12:
out     s12,100,c4              
out     s12,100,c5              


ret



write_hist_s12:
buffst                          
jnz     wr_hist1
buffrd  s12,11
jmp     write_hist_s12
wr_hist1:
buffwr  s12,100
ret





send_request:
sett    10
wait    tf_sign
movd    "AT*m0/n",s9,0
out     s9,0,c0
ret

send_ack:
movd    "AT*m00/n",s9,0
out     s9,0,c0
ret

send_error:
movd    "AT*C010101010101/n",s9,0
out     s9,0,c0
ret









get_dtmf:
setc    10,50
movd    "      /n",s15,c10
call    send_request
clearmfv        
sett    80        
jmp     get_dtmf1

get_dtmf_loop:
sett    40     

get_dtmf1:
getmfv  s15,c10
jz      nz_ret                  
compd   "E",s15,c10        
jz      get_dtmf_end            
incc    10
movd    "/n",s15,c10
decc    11
jnz     get_dtmf_loop           
movd    "DTMF-RX =             /n",s9,0
movs    s15,50,s9,10,8
out     s9,0,c4
jmp     nz_ret                  
get_dtmf_end:
movd    "/n",s15,c10
movd    "DTMF-RX =             /n",s9,0
movs    s15,50,s9,10,8
out     s9,0,c4
jmp     z_ret










get_passw:
setc    11,5            
call    get_dtmf
ret


zzz:

end


