;************************************************
;
;  printer feur telefonzellen report
;
;  using  str 4 for work
;         str 5 zwischenspeicher
;         str 6 for number mem
;         str 7 reserve
;
;
;          1111111111122222222233333333334444444444555555555566666666667
;01234567890123456789012345678901234567890123456789012345678901234567890
;TELZ    1<1dddddddddddddddddddddddddddddddddddddddddd
;           -data for rd and wr
;          --sender kennung bei intermodultransfer
;        ----eigene modulnummer
;------------filename
;
        setbaud 1,1200,8,n,1   ;Modul Default
        mode_reco
        ;
        compd   "TELZ",s4,0
        jz      init_okay
        clear   s6,0
init_okay:
        movd    "TELZ             ",s4,0
        movd    "1<1",s4,8
        movd    " READY for WORK as telez-printer/l/n",s4,11
        out     s4,0,c4         ;to sv-mon
        movd    "  PRINTING SZ-STRING/n",s4,11
        out     s4,0,c4
        out     s6,0,c4
reset_0:
        movd    "1<1 /n",s4,8
        setl    9,1     ;modul ready
        wait    im_sign,rx_sign ;warte auf anforderung or reco from printer
        ;
        ; auforderung:
        ; set channl is busy
        setl    9,2
        case    rx_sign,test_cmd
        rds     s4,11           ;get data
;
        compd   "N ",s4,11
        jnz     error_rx
        movs    s4,11,s4,100,80 ;backup string
        out     s4,10,c2        ;send name update to BDI
        compd   "OK/n",s4,11
        jnz     error_cnd
        movs    s4,100,s4,11,70
        movd    "U",s4,11
        buffst          ;space in buffer?
        jz      bdi_buff_full
        buffwr  s4,11
        jmp     reset_0
;
error_cnd:
        wrs     s4,11,40
        jmp     reset_0
;
bdi_buff_full:
        out     s4,0,c4
        movd    " BDI-ERROR * BUFFER FULL */n",s4,11
        out     s4,0,c4
        jmp     reset_0
;
error_rx:
        out     s4,0,c4         ;reco nicht erwartet
        movd    " RECO not expected /n",s4,11
        out     s4,0,c4
        jmp     reset_0
        ;
        ; test commands
        ;
test_cmd:
        case    im_sign,sign_err
        in      s4,10
        compd   "0",s4,10       ;von edv  ??
        jnz     cmd_von_bdi
        compd   "SZ",s4,11
        jnz     answ_err_cmd    ;error on command
        ;
        ; store extension number"s
        ;
        clear   s5,0            ;clear zwischenspeicher
        setc    0,30            ;maximal 30 tln nummern
        setc    1,13            ;1.tln pos
        setc    2,0             ;destination
sz_test_loop:
        compd   "/n",s4,c1      ;ende der definition
        jnz     tln_transfer
tln_end_trans:
        movs    s5,0,s6,0,200
        jmp     answ_ok
tln_transfer:
        movs    s4,c1,s5,c2,4
        incc    1
        incc    2
        compd   "/n",s4,c1
        jnz     tln1_trans
        movd    "    ",s5,c2
        jmp     tln_end_trans
tln1_trans:
        incc    1
        incc    2
        compd   "/n",s4,c1
        jnz     tln2_trans
        movd    "    ",s5,c2
        jmp     tln_end_trans
tln2_trans:
        incc    1
        incc    2
        compd   "/n",s4,c1
        jnz     tln3_trans
        movd    "    ",s5,c2
        jmp     tln_end_trans
tln3_trans:
        incc    1
        incc    2
        decc    3
        jnz     sz_test_loop
;
answ_err_ext:
        out     s4,0,c4
        movd    "ERR_EXT/n",s4,11
        out     s4,0,c4
        anss    s4,10
        jmp     reset_0
;
answ_ok:
        movd    "OK/n",s4,11
        anss    s4,10
        jmp     reset_0
;
answ_err_cmd:
        out     s4,0,c4
        movd    "ERR_CMD/n",s4,11
        out     s4,0,c4
        anss    s4,10
        jmp     reset_0
;
;  answ_back befreie bdi aus warte pos
;
answ_back:
        ansd    "1OK/n"
        jmp     reset_0
        ;
;************************************************
;
; command von bdi send  to printer
; and test if "C-reco" tln ist in "SZ-reco"
;
cmd_von_bdi:
        compd   "C",s4,11       ;only call-reco
        jnz     keine_telz
;
; make printout to bonprinter
;
; "TELEFONZELLE  tttt  mm.dd. hh:mm  ccccc IMP/l/n"
; "/l/n"
; "/l/n"
;
        movd    "TELEFONZELLE  ",s5,0
        setc    0,0
suche_telz:
        comps   s4,12,s6,c0,4
        jz      telz_found
        compd   " ",s6,c0
        jz      keine_telz      ;tln ist keine telefonzelle
        incc    0
        incc    0
        incc    0
        incc    0
        jmp     suche_telz
;
telz_found:
        movs    s4,12,s5,14,4   ;tln-nummer
        movs    s4,41,s5,20,2   ;monat
        movd    ".",s5,22
        movs    s4,43,s5,23,2   ;tag
        movd    ". ",s5,25
        movs    s4,37,s5,27,2   ;stunde
        movd    ":",s5,29
        movs    s4,39,s5,30,2   ;minute
        movd    "   ",s5,32
        movs    s4,32,s5,35,5   ;geb imp
        movd    "  IMP/l/n",s5,40
        wrs     s5,0,255
        ;
        ; send anzahl cr-lf
        ;
        setc    1,2
telz_prloop:
        wrd     "/l/n"
        decc    1
        jnz     telz_prloop
        ;
keine_telz:
        compd   "N ",s4,11      ;test if IOS update
        jnz     answ_back
        wrs     s4,11,40        ;send string to IOS
        jmp     answ_back
;
;
;************************************************
;
;   sign-error
;
sign_err:
        movd    " SIGNAL_ERROR/n",s4,11
        out     s4,0,c4
        jmp     reset_0
;
;
end
