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 / BYESUB.AQM / BYESUB.ASM
Assembly Source File  |  2000-06-30  |  2KB  |  73 lines

  1. ;
  2. ;                          BYESUB.ASM
  3. ;         A routine to load/run a .com file on request
  4. ;   When used by itself, or, as intended, as a called subroutine for
  5. ;RCP/M conditional logoffs, (security violation, overstayers, etc.),
  6. ;this routine will make use of the autorun feature buried in the CCP 
  7. ;module of CP/M. The file specified at the equate near the end of the 
  8. ;program will be loaded into the ccp command buffer, and the ccp will
  9. ;be cold started. This will act as if the name had been typed in at
  10. ;the console, and the return key hit.
  11. ;
  12. ;   Note that the value of CPR is system dependant. This must be 
  13. ;changed for your paticular system.
  14. ;
  15. ;              ----------------------------------
  16. ;
  17. ;------------------
  18. ;   Mods / Fixes  :
  19. ;------------------
  20. ;
  21. ;11/06/82    Initial Release
  22. ;
  23. ;            Mark J. Pulver
  24. ;            AIMS  (312) 789-0499
  25. ;
  26. ;
  27. ;-----------------
  28. ;   Code starts  :
  29. ;-----------------
  30. ;
  31. CPR    EQU    0C700H    ;ccp cold start
  32. CBUFF    EQU    CPR+7    ;address of command length pointer
  33. CIVAL    EQU    CPR+8    ;address of command buffer
  34. CIBPTR    EQU    CPR+59H    ;address of pointer to ccp command buffer
  35. ;
  36. OFFSET    EQU    0
  37. ;
  38. ;
  39.     ORG    0100H
  40. ;
  41. BYE:    EQU    $+OFFSET
  42.     LHLD    BYEFIL        ;get length
  43.     MOV    B,L        ;B needs it for MOVE
  44.     LXI    H,BYEFIL    ;get name of file
  45.     LXI    D,CBUFF        ;where its going
  46.     CALL    MOVE        ;move name into buffer
  47.     LXI    H,CIVAL        ;get command buffer location
  48.     SHLD    CIBPTR        ;stuff it in pointer
  49.     LDA    USER
  50.     MOV    C,A        ;C must have user/drive
  51.     JMP    CPR        ;cold start ccp
  52. ;
  53. MOVE:    EQU    $+OFFSET    ;hl to de length in b
  54.     MOV    A,M
  55.     STAX    D
  56.     INX    D
  57.     INX    H
  58.     DCR    B
  59.     JNZ    MOVE
  60.     RET
  61. ;
  62. USER:    EQU    $+OFFSET
  63.     DB    0            ;user/drive spec for file,
  64.                     ;follows 0004h conventions
  65. BYEFIL:    EQU    $+OFFSET
  66.     DB    5,'BYE',0        ;comfile to run
  67. ;command length ^       ^- - - "0" must be here
  68. ;+2 for first and last bytes
  69. ;
  70. ;
  71.     END
  72.