; ;************************************************ ; ; downloading programm for channl3 ; opi-modul ; ;************************************************ ; ; work: ; 1. on rx_sign ; on ringer offhook send sit-tone onhook ; on reset init opi ; on zeit setc 0,6 ; ; 2. on tf_sign ; decc 0 if zerro init opi ; ; 3. on im_sign ; input reco and test ; if command not found answer "ERR_CMD/n" ; else make command ; if error on opi answer "ERR_OPI/n" ; else answer "OK/n" ; endif ; endif ; ; 4. command"s ; SDtttt Set don"t Disturb ; CDtttt Clear don"t Disturb ; ; SWtttthhmm Set Wakeup ; CWtttt Clear Wakeup ; GWtttt Get Wakeup ; return: RWhhmm Return Wakeup ; ; SItttt Set Inhibit ddi ; CItttt Clear Inhibit ddi ; ; SMtttt Set Messgewaiting ; CMtttt Clear Messagewaiting ; ; SBttttg Set Barring (gruppe) ; CBtttt Clear Barring (gr=0) ; ; CCtttt Clear Charge counter ; ; CFtttt Clear all Features ; do: CD,CW,CI,CM,CB ; ; SHtttt Check if TLN is onhook ; ; using: str 12 for work ; str 13 reserve ; str 14 reserve ; str 15 reserve ; ; ; 1111111111122222222233333333334444444444555555555566666666667 ;01234567890123456789012345678901234567890123456789012345678901234567890 ;OPI 3<3dddddddddddddddddddddddddddddddddddddddddd ; -data for rd and wr ; --sender kennung bei intermodultransfer ; ----eigene modulnummer ;------------filename ; setbaud 1,2400,8,n,1 ;Modul Default mode_opi ; ; selecting if opi interface is used? ; if string is "OPI/n" opi-interface is inuse ; movd "noOPI/n",s12,240 ; movd "OPI/n",s12,240 ;********************************************************** ; start_0: compd "OPI/n",s12,240 jz setup_0 ; ;********************************************************** ; ; opi interface is not in use ; no_opi: wait im_sign case im_sign,no_opi in s12,10 compd "SH",s12,11 jnz no_opi_err ; ansd "3OK/n" jmp no_opi ; no_opi_err: out s12,0,c4 movd "ERR_CMD/n",s12,11 out s12,0,c4 anss s12,10 jmp no_opi ; ;********************************************************** ; OPI interface is inuse ; setup_0: movd "OPI /l/n",s12,0 movd "3<3",s12,8 movd " OPI inaktiv -> INIT OPI/l/n",s12,11 out s12,0,c4 setl 11,2 setl 6,0 setc 0,6 setc 1,0 ;error counter initopa jnz reset_0 ; movd "@O/n",s12,250 movd " READY for WORK with OPI/l/n",s12,11 out s12,0,c4 ;to sv-mon setc 1,0 ;error counter setc 0,6 ;timeout counter reset_0: movd "3<3",s12,8 setl 11,1 ;modul ready compc 1,0 ;test error jnz setup_0 sett 200 wait rx_sign,tf_sign,im_sign ;warte auf anforederung or timeout ; ; auforderung: ; set channl is busy setl 11,2 case rx_sign,test_tf_sign clear rx_sign caselon ringer,test_zeit wrfkeyd a ;offhook wait rx_sign clear rx_sign movd "@O/n",s12,240 out s12,240,c4 setp mfv,f1 sett 4 wait tf_sign setp mfv,f4 sett 4 wait tf_sign setp mfv,f7 sett 4 wait tf_sign setp mfv,off sett 10 wait tf_sign wrfkeyd l,ir,l jmp reset_0 ; ; test_zeit: case4eq zeit,test_opi_res setc 0,6 ;counter 0 timeout set jmp reset_0 ; ; test_opi_res: caselon l_bein,reset_0 jmp setup_0 ;init opi ; ;************************************************ ; on tf_sign test timeout_cnt_0 ;************************************************ ; test_tf_sign: case tf_sign,test_im_sign decc 0 jnz reset_0 jmp setup_0 ; ;************************************************ ; on im_sign get command and do command ;************************************************ ; ;************************************************ ; sub-routinen ; answ_ok: ansd "3OK/n" wrfkeyd l,ir,l ret ; answ_offhook: out s12,0,c4 ;input str to sv-mon movd "ERR_OFFH/n",s12,11 out s12,0,c4 out s12,250,c4 anss s12,10 wrfkeyd l,ir,l ret ; answ_err_cmd: out s12,0,c4 movd "ERR_CMD/n",s12,11 out s12,0,c4 anss s12,10 wrfkeyd l,ir,l jmp test_opi ret ; answ_err_opi: out s12,0,c4 movd "ERR_OPI/n",s12,11 out s12,0,c4 anss s12,10 wrfkeyd l,ir,l jmp test_opi ret ; answ_err_to: out s12,0,c4 movd "ERR_TO/n",s12,11 out s12,0,c4 anss s12,10 wrfkeyd l,ir,l jmp test_opi ret ;************************************************ ; test_opi: wrfkeyd sp clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,test_opi_err clear rx_sign case4eq serv,test_opi_err wrfkeyd l ret ; test_opi_err: setc 1,1 ;set error ret ; ;************************************************ ; test_im_sign: case im_sign,sign_err in s12,10 movd " ",s12,100 movs s12,13,s12,100,4 ;trenne tln numm movs s12,17,s12,110,4 ;parameter 2 (gruppe oder zeit) ; compd "SH",s12,11 jnz cmd_0 call test_offhook jmp reset_0 ; cmd_0: compd "CC",s12,11 ;Clear Charge counter jnz cmd_1 call clear_charge_cnt jmp reset_0 ; cmd_1: compd "SW",s12,11 ;Set Wakeup jnz cmd_2 call set_wakeup jmp reset_0 ; cmd_2: compd "CW",s12,11 ;Clear Wakeup jnz cmd_3 call clear_wakeup jmp reset_0 ; cmd_3: compd "GW",s12,11 ;Get Wakeup jnz cmd_4 call get_wakeup jmp reset_0 ; cmd_4: compd "SM",s12,11 ;Set Messagewaiting jnz cmd_5 call set_messagewaiting jmp reset_0 ; cmd_5: compd "CM",s12,11 ;Clear Messagewaiting jnz cmd_6 call clear_messagewaiting jmp reset_0 ; cmd_6: compd "SD",s12,11 ;Set_dont_Disturb jnz cmd_7 call set_dont_disturb jmp reset_0 ; cmd_7: compd "CD",s12,11 ;Clear_dont_Disturb jnz cmd_8 call clear_dont_disturb jmp reset_0 ; cmd_8: compd "SI",s12,11 ;Set_Inhibit_ddi jnz cmd_9 call set_inhibit_ddi jmp reset_0 ; cmd_9: compd "CI",s12,11 ;Clear_Inhibit_ddi jnz cmd_10 call clear_inhibit_ddi jmp reset_0 ; cmd_10: compd "SB",s12,11 ;Set_Barring jnz cmd_11 call set_barring jmp reset_0 ; cmd_11: compd "CB",s12,11 ;Clear_Barring jnz cmd_12 call clear_barring jmp reset_0 ; cmd_12: compd "CF",s12,11 ;Clear_Features jnz cmd_13 call clear_features jmp reset_0 ; cmd_13: call answ_err_cmd jmp reset_0 ; ;************************************************ ; test if TLN is ONHOOK ; ; ONHOOK : answer "OK/n" ; else answer "ERR_OFFH/n" ; test_offhook: wrdkeys s12,100 ;dial to TLN clear rx_sign sett 30 wait rx_sign,tf_sign case rx_sign,answ_err_to ; case4eq tln,answ_offhook case16eq frei,answ_offhook wrfkeyd l jmp answ_ok ; ; ;************************************************ ; gebuehrenzaehler fuer teilnehmer loeschen ; clear_charge_cnt: wrfkeyd sp,ge movd "GEBUEHR /n",s12,200 wrdkeys s12,100 ;write tln clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign case16neq anzahl,clear_charge_1 case16eq gebuehr,answ_err_opi clear_charge_1: rdndis s12,208 out s12,200,c4 wrfkeyd sp,k0 jmp answ_ok ; ; ;************************************************ ; set wakeup ; set_wakeup: wrfkeyd sp,k9 ;"spez,9" wrdkeys s12,100 ;tln num wrdkeys s12,110 ;hhmm clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq aktivierung,answ_err_opi jmp answ_ok ; ; ;************************************************ ; clear wakeup ; clear_wakeup: wrfkeyd sp,k9 ;"spez,9" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to out s12,250,c4 case16eq terminruf,answ_err_opi MOVD "99 99 ",S12,150 rdpartndis 8,6,s12,150 compd "99",s12,150 jz answ_ok wrfkeyd k3 clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq loeschen,answ_err_opi jmp answ_ok ; ; ;************************************************ ; get wakeup ; get_wakeup: wrfkeyd sp,k9 ;"spez,9" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq terminruf,answ_err_opi movd "RW",s12,11 MOVD "99 99 ",S12,150 rdpartndis 8,6,s12,150 movs s12,150,s12,13,2 movs s12,153,s12,15,2 movd "/n",s12,17 out s12,0,c4 anss s12,10 wrfkeyd l ret ; ; ;************************************************ ; set messagewaiting ; set_messagewaiting: wrfkeyd ke,k1 ;"ke,1" wrdkeys s12,100 ;tln num wrfkeyd k1 ;"1" for set clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq aktivierung,answ_err_opi jmp answ_ok ; ; ;************************************************ ; clear messagewaiting ; clear_messagewaiting: wrfkeyd ke,k1 ;"ke,1" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case4eq mess,answ_err_opi ;amt2 = mes wrfkeyd k0 ;"0" for clr jmp answ_ok ; ; ;************************************************ ; anrufschutz fuer teilnehmer einleiten ; set_dont_disturb: wrfkeyd sp,k6 ;"sepz,6" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16neq aktivierung,answ_ok case16eq anrufschutz,answ_err_opi jmp answ_ok ; ; ;************************************************ ; anrufschutz fuer teilnehmer loeschen ; clear_dont_disturb: wrfkeyd sp,k# ;"sepz,#" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq loeschen,answ_err_opi jmp answ_ok ; ; ;************************************************ ; durchwahlsperre fuer teilnehmer aktivieren ; set_inhibit_ddi: wrfkeyd ke,k3 ;"ke,3" wrdkeys s12,100 ;tln num wrfkeyd k0 ;"0" ist gesperrt clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq durchwahl,answ_err_opi jmp answ_ok ; ; ;************************************************ ; durchwahlsperre fuer teilnehmer loeschen ; clear_inhibit_ddi: clear rx_sign wrfkeyd ke,k3 ;"ke,3" wrdkeys s12,100 ;tln num wrfkeyd k1 ;"1" ist nicht gesperrt sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq durchwahl,answ_err_opi jmp answ_ok ; ; ;************************************************ ; teilnehmer einer anderen gruppe zuordnen ; set_barring: clear rx_sign wrfkeyd ke,k2 ;"ke,2" wrdkeys s12,100 ;tln num wrdkeys s12,110 ;gruppe sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq aktivierung,answ_err_opi jmp answ_ok ; ; ;************************************************ ; teilnehmer der gruppe 0 zuordnen ; clear_barring: clear rx_sign wrfkeyd ke,k2 ;"ke,2" wrdkeys s12,100 ;tln num wrfkeyd k0 ;gruppe 0 sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq aktivierung,answ_err_opi jmp answ_ok ; ; ;************************************************ ; eingeleitete features fuer teilnehmer loeschen ; clear_features: ; ;************************************************ ; anrufschutz fuer teilnehmer loeschen ; wrfkeyd sp,k# ;"sepz,#" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq loeschen,answ_err_opi wrfkeyd l ; ;************************************************ ; durchwahlsperre fuer teilnehmer loeschen ; wrfkeyd ke,k3 ;"ke,3" wrdkeys s12,100 ;tln num wrfkeyd k1 ;"1" ist nicht gesperrt clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq durchwahl,answ_err_opi wrfkeyd l ; ;************************************************ ; teilnehmer der gruppe 0 zuordnen ; wrfkeyd ke,k2 ;"ke,2" wrdkeys s12,100 ;tln num wrfkeyd k0 ;gruppe 0 clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 case16eq aktivierung,answ_err_opi wrfkeyd l ; ;************************************************ ; clear massagewaiting ; clear rx_sign wrfkeyd ke,k1 ;"ke,1" wrdkeys s12,100 ;tln num sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 ; wenn 2. mal loeschen dann error ; case16eq loeschen,answ_err_opi ; daher nicht vergleichen wrfkeyd k0 ;"0" for clr wrfkeyd l,ir,l ; ;************************************************ ; clear wakeup wrfkeyd sp,k9 ;"spez,9" wrdkeys s12,100 ;tln num clear rx_sign sett 30 wait tf_sign,rx_sign case rx_sign,answ_err_to clear rx_sign out s12,250,c4 wrfkeyd k3 wrfkeyd l,ir,l jmp answ_ok ; ; ; ;************************************************ ; ; sign-error ; sign_err: movd " SIGNAL_ERROR/n",s12,11 out s12,0,c4 jmp reset_0 ; zzz_end: ; end