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 / BYECOM.MAC < prev    next >
Text File  |  2000-06-30  |  3KB  |  178 lines

  1. ; BYECOM.MAC - get signoff comment then hang up and loop.
  2. ;
  3. ; Uses SYSLIB calls.
  4. ;
  5. ; This program was designed as a "quick and dirty"
  6. ; way of getting any comments a caller might have.
  7. ; Normally, he would have to go back to the message-
  8. ; or logon subsystem to leave any late comments.
  9. ; This way he can leave them at signoff or he can
  10. ; execute the (renamed) BYE.COM file for fast logoff.
  11. ; BYECOM jumps to the line input routine after hanging
  12. ; up the phone. This prevents any disk access from being
  13. ; rudely aborted by BYE when it takes control due to
  14. ; the lost carrier.
  15. ;
  16. ; This program may not be an example of efficient
  17. ; programming, but it serves it's purpose.
  18. ;
  19. ; Written in December 1982, updated 2/8/83.
  20. ;
  21. .Z80
  22. ;
  23. CR    EQU    0DH
  24. LF    EQU    0AH
  25. DISKWR    EQU    3FH        ;this flag indicates disk write to BYE
  26. CALLER    EQU    40H        ;first 4 chars of caller's name stored here
  27. PMMI    EQU    0E3H        ;modem control port for hang-up
  28. COMDSK    EQU    0        ;COMMENTS file drive (0=A, 1=B...)
  29. COMUSR    EQU    15        ;COMMENTS file user
  30. ;
  31. ; SYSLIB calls:
  32. ;
  33.     EXT    CODEND
  34.     EXT    CIN
  35.     EXT    COUT
  36.     EXT    CAPS
  37.     EXT    F$EXIST
  38.     EXT    F$DELETE
  39.     EXT    FO0$OPEN
  40.     EXT    FI0$OPEN
  41.     EXT    FO0$CLOSE
  42.     EXT    FI0$CLOSE
  43.     EXT    F0$PUT
  44.     EXT    F0$GET
  45.     EXT    F$RENAME
  46.     EXT    INITFCB
  47.     EXT    INLINE
  48.     EXT    PRINT
  49.     EXT    LOGUD
  50.     EXT    MOVEB
  51.     EXT    CRLF
  52. ;
  53. ; Say who we are, what we want.
  54. ;
  55. START:    CALL    PRINT
  56.     DB    CR,LF,'Do you want to leave '
  57.     DB    'any comments? ',0
  58.     CALL    CODEND
  59.     LD    A,1
  60.     CALL    INLINE
  61.     LD    A,(HL)
  62.     CALL    CAPS
  63.     CP    'N'
  64.     JP    Z,HANGUP    ;no comments, hang up phone
  65.     CP    'Y'
  66.     JR    NZ,START
  67.     LD    BC,COMDSK*100H+COMUSR    ;b=disk,c=user
  68.     CALL    LOGUD
  69.     LD    DE,COMFCB
  70.     PUSH    DE
  71.     CALL    INITFCB
  72.     LD    DE,TEMFCB
  73.     CALL    INITFCB
  74.     CALL    FO0$OPEN
  75.     JP    NZ,DISKERROR
  76.     POP    DE
  77.     CALL    F$EXIST
  78.     JR    Z,X
  79.     CALL    FI0$OPEN
  80.     JP    NZ,DISKERROR
  81. ;
  82. ; copy old file to new file
  83. ;
  84. CPYLP:    CALL    F0$GET
  85.     CP    1AH
  86.     JR    Z,EXITCP
  87.     CALL    F0$PUT
  88.     JR    CPYLP
  89. ;
  90. EXITCP:    CALL    FI0$CLOSE
  91. X:    LD    HL,CALLER
  92.     LD    DE,NAME
  93.     LD    B,4
  94.     CALL    MOVEB
  95. ;
  96. ; now write his name
  97. ;
  98.     LD    DE,FROM
  99. WNAME:    LD    A,(DE)
  100.     CALL    F0$PUT
  101.     INC    DE
  102.     CP    LF
  103.     JR    NZ,WNAME
  104.     CALL    PRINT
  105.     DB    CR,LF,LF,'Enter comments one line at a time.'
  106.     DB    CR,LF,'CR alone to end.',CR,LF,0
  107. ;
  108. ; get comments a line at a time
  109. ;
  110. GETCOM:    CALL    CODEND
  111.     CALL    PRINT
  112.     DB    '--> ',0
  113.     LD    A,1
  114.     CALL    INLINE
  115.     LD    A,(HL)
  116.     OR    A
  117.     JR    Z,EOF
  118.     LD    A,1
  119.     LD    (DISKWR),A
  120.     CALL    WRITECOM
  121.     XOR    A
  122.     LD    (DISKWR),A
  123.     JR    GETCOM
  124. ;
  125. ; write line to disk
  126. ;
  127. WRITECOM:
  128.     LD    A,(HL)
  129.     OR    A
  130.     JR    Z,CRLFF
  131.     CALL    F0$PUT
  132.     INC    HL
  133.     JR    WRITECOM
  134. ;
  135. CRLFF:    LD    A,CR
  136.     CALL    F0$PUT
  137.     LD    A,LF
  138.     JP    F0$PUT
  139. ;
  140. EOF:    LD    A,1
  141.     LD    (DISKWR),A
  142.     CALL    CRLFF
  143.     CALL    FO0$CLOSE
  144.     LD    DE,COMFCB
  145.     CALL    F$DELETE
  146.     EX    DE,HL
  147.     LD    DE,TEMFCB
  148.     CALL    F$RENAME
  149.     JR    Z,DISKERROR
  150.     CALL    PRINT
  151.     DB    CR,LF,'Thank you for your comments.',0
  152. ;
  153. ; now say goodbye and hang him up.
  154. ;
  155. HANGUP:    CALL    PRINT
  156.     DB    CR,LF,'Good bye - call again',CR,LF,0
  157.     XOR    A
  158.     LD    (DISKWR),A    ;clear disk write flag
  159.     OUT    (PMMI),A
  160.     JP    INLINE        ;hang up while in I/O loop
  161. ;
  162. DISKERROR:
  163.     CALL    PRINT
  164.     DB    7,CR,LF
  165.     DB    '++error in COMMENTS file++',CR,LF
  166.     DB    'Please use CBBS for comments or BYEBYE for logout'
  167.     DB    CR,LF,0
  168.     JR    HANGUP
  169. ;
  170. FROM:    DB    'FROM '
  171. NAME:    DB    '     ',CR,LF
  172. ;
  173. COMFCB:    DB    0,'COMMENTS   '
  174.     DS    24
  175. TEMFCB:    DB    0,'COMMENTS$$$'
  176.     DS    24
  177.     END
  178.