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 / BYE5 / BYE520.LBR / B5-CPM3.AZM / B5-CPM3.ASM
Assembly Source File  |  2000-06-30  |  4KB  |  126 lines

  1. ; B5-CPM3.ASM    for BYE509 and above        by George F Peace
  2. ; Rename assembled/linked file to BYE.COM for RCP/M+ operation
  3. ;
  4. ;    Updated 7/11/86 by JEL...
  5. ;        - All initialize code moved to BYE HANGUP routine
  6. ;          It is quite possible (and has happened) that while
  7. ;          the sysop is using the system, carrier is lost,
  8. ;          causing this module to not be run between calls,
  9. ;          giving the next caller unwanted privaleges.
  10. ;
  11. ;    Updated 4/17/86 by GFP...
  12. ;        - Reinstalled password and drive path initialization code
  13. ;          to be executed only on initial execution.  RSX delete
  14. ;          code remains in BYE5nn.ASM
  15. ;
  16. ;    Updated 4/13/86 by GFP...
  17. ;        - Uses BYE5 extended BDOS calls to check BYE existance
  18. ;        - Only schedules B5-DRIV3.COM if the BYE5 RSX cannot be found
  19. ;        - .LBR delete code, drive/password initialization code
  20. ;          removed (BYE5nn.ASM does that now)
  21. ;
  22. ;    Updated 1/12/86 by GFP to set search path to default drive,
  23. ;                then drive A:
  24. ;
  25. ;     Updated 12/85 by Larry J. Moore to turn off the wheel byte and
  26. ;                    set the default password to null
  27. ;
  28. ;        This is a CP/M Plus program that is scheduled when:
  29. ;
  30. ;        - The SYSOP or a caller invokes it manually to reset
  31. ;          the RCP/M+ environment.
  32. ;        - The BYE5 configuration tag EXFILE is set to YES, no RBBS
  33. ;          system is defined, and the carrier is lost during a
  34. ;          session.  This requires that EXITFCB in the data portion
  35. ;          of the BYE5nn.ASM program be updated or this program be
  36. ;          renamed to match EXITFCB.
  37. ;
  38. ; The program performs cleanup operations prior to allowing the BYE5
  39. ; RSX to reset the environment.  The "standard" operation is to
  40. ; schedule the real (hidden) B5-DRIV3.COM or any other program or
  41. ; command as defined at label XQTSTR.
  42. ;
  43. ;
  44. ; ASSEMBLE AND LINK THIS PROGRAM USING MAC/HEXCOM OR RMAC/LINK.
  45. ; THE RESULTING .COM FILE SHOULD BE NAMED  BYE.COM  AND BE PLACED SO IT IS
  46. ; ACCESSIBLE BY CALLERS AND SYSOP.  IT IS THE FRONT-END TO BYE5 ACCESS
  47. ; FOR CP/M PLUS (CPM3 SET TO YES IN BYE5nn.ASM).
  48. ;
  49. ;
  50. BDOS    EQU    5
  51. CHAINP    EQU    47
  52. GTSCB    EQU    49
  53. CALLRSX    EQU    60
  54. DEFPASS    EQU    106        ; Set default password
  55. RSX$TM    EQU    102        ; Log caller out
  56.  
  57.     ORG    100H
  58.  
  59. ; First, see if the BYE5 RSX is loaded.
  60. ; If not, run the RSX loader program to initialize the system.
  61. ;
  62.     MVI    C,32        ; Get user get/set function
  63.     MVI    E,241        ; And special entry flag
  64.     CALL    BDOS        ; Check for BYE5 existance
  65.     CPI    77        ; Test for special return
  66.     JNZ    LODRSX        ; Not in memory - exit
  67.  
  68.     MVI    C,CALLRSX    ; Get call RSX function
  69.     LXI    D,RSXPB        ; Load RSX parameter block address
  70.     JMP    BDOS        ; Jump to active RSX; should not return
  71.  
  72. LODRSX:
  73. ;
  74. ; Copy the caller's command tail to the one we're about to issue
  75. ;
  76.     LDA    80H        ; Get command tail length
  77.     CPI    0        ; Was anything typed by the caller?
  78.     JZ    DONE        ; Nope, all done
  79.  
  80.     LXI    H,80H        ; Initialize pointer to command tail buffer
  81.     LXI    D,TAIL-1    ; Init to destination
  82.  
  83. CLOOP:
  84.     INX    H        ; Point to next byte
  85.     INX    D        ; Do it for destination, too
  86.     MOV    A,M        ; Get the byte
  87.     STAX    D        ; Put it in the destination tail
  88.     CPI    0        ; Was that all?
  89.     JNZ    CLOOP        ; Nope - get another character
  90. ;
  91. DONE:
  92.     LXI    H,XQTSTR    ; Source=string
  93.     LXI    D,80H        ; Dest=default DMA
  94.     MVI    B,LXQTSTR    ; Length of STRING
  95.     CALL    MOVE
  96.     MVI    C,CHAINP    ; Chain program
  97.     MVI    E,0        ; Don't bother forcing temporary DU:
  98.     JMP    BDOS        ; And don't come back
  99.  
  100. ; Move (HL) to (DE), length in (B)
  101. ;
  102. MOVE:    MOV    A,M        ; Get a byte
  103.     STAX    D        ; Put at new home
  104.     INX    D        ; Bump pointers
  105.     INX    H
  106.     DCR    B        ; Decrement byte count
  107.     JNZ    MOVE        ; If more, do it
  108.     RET            ; If not, return
  109. ;
  110. XQTSTR:    DB    'A:B5-DRIV3.COM '    ; Do this
  111. TAIL:    DS    64            ; Allow 64 bytes for the command tail
  112.     DB    0            ; Required terminator
  113. LXQTSTR    EQU    $-XQTSTR        ; Length of string
  114.  
  115. RSXPB:    DB    RSX$TM        ; BYE function
  116.     DB    2        ; 2 parameter words follows
  117.     DW    RSXNAME        ; Parameter 1 address
  118.     DW    ARGS        ; Parameter 2 address
  119.  
  120. RSXNAME:DB    'BYE5    '    ; RSX Name in BYE5nn.ASM (must be 8 bytes)
  121.  
  122. ARGS:    DB    0
  123. STAT:    DB    0
  124.  
  125.     END
  126.