home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / RCPM / BYEXCLBK.MOD < prev    next >
Text File  |  2000-06-30  |  6KB  |  223 lines

  1.                    BYE
  2.                 CALLBACK
  3.               MODIFICATION
  4.               ------------
  5.  
  6.      With this modification to the B5IM code in BYE5 or
  7. equivalent B3IM code in recent versions of BYE3, your modem only
  8. answers the second of two calls placed less than a minute apart,
  9. and only then if the telephone rang less than three times on the
  10. first call.  This makes your computer accessable on a line
  11. ordinarily used for voice communication, without preventing use
  12. of that line by incoming voice callers.
  13.  
  14.      Changes are made to three areas of the BYE source code.
  15.  
  16.      First, add the following equates in the OPTION CONFIGURATION
  17. SECTION.  Location is not critical; I added them after the four
  18. equates under the heading "The next 4 equates are only used if
  19. B5IM is YES" --
  20.  
  21. -----------------------------------------------------------------
  22. ;
  23. ;    Equates for callback feature - B5IM must = YES
  24. ;
  25. CALLBK    EQU    YES        ; Yes activates callback code in B5IM
  26. CLBKTM    EQU    30        ; Seconds to wait for callback (<64)
  27. CBMSGS    EQU    YES        ; If YES, ring count, ready and time up
  28.                 ; messages are printed (also activated
  29.                 ; by PRGRSS)
  30. ;
  31. ;
  32. ;
  33. -----------------------------------------------------------------
  34.  
  35.      Next, go to the B5IM code.
  36. DELETE the portion which looks like this:
  37.  
  38.      IF    B5IM
  39. IMRING: CALL    MDINST        ; Character ready from modem?
  40.     RZ            ; No
  41.     CALL    MDINP        ; Get the modem response code
  42.     ANI    7FH        ; Strip parity
  43.      ENDIF            ; B5IM
  44. ;
  45.      IF    B5IM AND PRGRSS
  46.     CALL    RCDISP        ; Display RC for local sysop
  47.     PUSH    PSW
  48.     LXI    H,LFMSG
  49.     CALL    PRINTL        ; Turn up a line on crt
  50.     POP    PSW
  51.      ENDIF            ; PRGRSS
  52. ;
  53.      IF    B5IM
  54.     CPI    CR
  55.     RZ
  56.     CPI    LF
  57.     RZ
  58.     CPI    '2'        ; Ring?
  59.     JNZ    REDOIT        ; No, something wrong, start over
  60.      ENDIF            ; B5IM
  61.  
  62.  
  63. and REPLACE that code with this:
  64.  
  65. -----------------------------------------------------------------
  66.  
  67. ;*************************************************************
  68. ;
  69. ;    B5IM MODIFIED FOR CALLBACK
  70. ;
  71. ;*************************************************************
  72.      IF    B5IM
  73. IMRING:
  74.      ENDIF
  75.      IF    B5IM AND CALLBK
  76.     LHLD    RDYFLG        ; Does flag show
  77.     MOV    A,H        ; ready for callback?
  78.     ORA    L
  79.     JZ    RCT4        ; No...carry on
  80.     CALL    KDELAY        ; Yes...continue countdown
  81.     DCX    H        ;
  82.     MOV    A,H        ; and see if time up
  83.     ORA    L
  84.     SHLD    RDYFLG
  85.     JNZ    RCT4        ; Time not up ... carry on
  86.      ENDIF            ; B5IM AND CALLBACK
  87.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  88.     LXI    H,RNMS4     ; Time up ... print message
  89.     CALL    PRINTL
  90.      ENDIF            ; B5IM, etc.
  91.      IF    B5IM AND CALLBK
  92. RCT4:
  93.      ENDIF            ; B5IM AND CALLBK
  94.      IF    B5IM
  95.     CALL    MDINST        ; Character ready from modem?
  96.     RZ            ; No
  97.     CALL    MDINP        ; Get the modem response code
  98.     ANI    7FH        ; Strip parity
  99.      ENDIF            ; B5IM
  100. ;
  101.      IF    B5IM AND PRGRSS
  102.     CALL    RCDISP        ; Display RC for local sysop
  103.     PUSH    PSW
  104.     LXI    H,LFMSG
  105.     CALL    PRINTL        ; Turn up a line on crt
  106.     POP    PSW
  107.      ENDIF            ; PRGRSS
  108. ;
  109.      IF    B5IM
  110.     CPI    CR
  111.     RZ
  112.     CPI    LF
  113.     RZ
  114.     CPI    '2'        ; Ring?
  115.     JNZ    REDOIT        ; No, something wrong, start over
  116.      ENDIF            ; B5IM
  117. ;
  118.      IF    B5IM AND CALLBK
  119.     LHLD    RDYFLG        ; Ready for callback?
  120.     MOV    A,H
  121.     ORA    L
  122.     LXI    H,0        ; (Reset counter regardless)
  123.     SHLD    RDYFLG
  124.     JNZ    IMRIN1        ; Yes ... then answer 'phone
  125. RNGCNT: XRA    A        ; Reset ringcounter and
  126.     STA    RNG
  127.      ENDIF
  128.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  129.     MVI    A,' '
  130.     STA    RNMS2        ; Ascii representation buffer
  131.     STA    RNMS2+1
  132.     STA    RNMS2+2
  133.      ENDIF            ; B5IM, etc.
  134.      IF    B5IM AND CALLBK
  135. RCT0:    LDA    RNG        ; Update ringcount
  136.     INR    A
  137.     STA    RNG
  138.      ENDIF
  139.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  140.     LXI    H,RNMS2     ; Put in ascii form
  141.     CALL    DEC8
  142.     LXI    H,RNMS1     ; And print # in message
  143.     CALL    PRINTL
  144.      ENDIF
  145.      IF    B5IM AND CALLBK
  146.     LXI    B,8000        ; Set ringstoptest timer
  147. RCT1:    CALL    MDINST        ; Anything from modem?
  148.     JZ    RCT2        ; No
  149.     CALL    MDINP        ; Yes ... get it
  150.     ANI    07FH
  151.     CPI    '2'        ; Ring?
  152.     JZ    RCT0        ; Yes ... update ringcount
  153.                 ; and reset counter
  154. RCT2:    CALL    KDELAY        ; 8 seconds since last ring?
  155.     DCX    B
  156.     MOV    A,C
  157.     ORA    B
  158.     JNZ    RCT1        ; No ... keep checking
  159.      ENDIF
  160.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  161.     LXI    H,LFMSG
  162.     CALL    PRINTL
  163.      ENDIF
  164.      IF    B5IM AND CALLBK
  165.     LDA    RNG        ; Yes ... more than 2 rings?
  166.     CPI    3
  167.     JNC    RCT3        ; Yes ... Ignore that call
  168.      ENDIF
  169.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  170.     LXI    H,RNMS3     ; Its a callback signal, so
  171.     CALL    PRINTL        ; print ready message and
  172.      ENDIF
  173.      IF B5IM AND CALLBK
  174.                 ; Set ready flag/timer
  175.     LXI    H,CLBKTM*1000
  176.     SHLD    RDYFLG
  177. RCT3:    XRA    A        ; Set zero flag and return
  178.     RET            ; as though no call
  179.      ENDIF            ; B5IM AND CALLBK
  180.  
  181. -----------------------------------------------------------------
  182.  
  183.  
  184.      Finally, go to the messages section near the end of the
  185. code, and place the following code after the end of the B5IM
  186. command strings section --
  187.  
  188.  
  189. -----------------------------------------------------------------
  190. ;
  191. ;
  192. ;
  193.      IF    B5IM AND CALLBK
  194. RNG:    DB    0
  195. RDYFLG: DB    0,0
  196.      ENDIF
  197.      IF    B5IM AND CALLBK AND (CBMSGS OR PRGRSS)
  198. RNMS1:    DB    CR,'Ring #'
  199. RNMS2:    DB    '   ',0
  200. RNMS3:    DB    'Ready for callback...',CR,LF,0
  201. RNMS4:    DB    'No callback...time up!',CR,LF,0
  202.      ENDIF            ; B5IM AND CALLBK, etc.
  203. ;
  204. ;
  205. ;
  206. -----------------------------------------------------------------
  207.  
  208. Notes:
  209.  
  210.      1) For use with BYE3, proceed as indicated but change "B5IM"
  211. to "B3IM" wherever it appears in the modification.
  212.  
  213.      2) The modified program starts looking for the callback ring
  214. seven or eight seconds after the last ring of a one- or two-ring
  215. call.  It answers the callback after the first ring.  It stops
  216. looking if no callback occurs within CLBKTM seconds (actually
  217. about 1.18 times CLBKTM if MHZ = 4).  CLBKTM should not be
  218. greater than 64.
  219.  
  220. O. Gray
  221. Toronto, Ont
  222. Sept. 12, 1985
  223.