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 / NUBYE / NUBY-SUP.LBR / NU-DRIV3.AQM / NU-DRIV3.ASM
Assembly Source File  |  2000-06-30  |  2KB  |  83 lines

  1. ; B5-DRIV3.ASM    for BYE501 and above        by George F Peace
  2. ; (8/17/85)
  3.  
  4. ; This is a CP/M Plus program
  5.  
  6. ; function:    loads or unloads the BYE5 RSX and initializes or resets the
  7. ;        remote console environment.
  8.  
  9. ; usage:    Operates just as CP/M 2.2 BYE5 does.  It is called by
  10. ;        BYE.COM using the CP/M Plus Chain to program function.
  11.  
  12. CR    EQU    0DH
  13. LF    EQU    0AH
  14. BDOS    EQU    5
  15. WBOOT    EQU    0
  16. PSTRING    EQU    9
  17. CALLRSX    EQU    60
  18.  
  19. RSX$CK    EQU    100
  20. RSX$INIT EQU    101
  21. RSX$TERM EQU    102
  22.  
  23.     ORG    100H
  24.  
  25.     CALL    RSXCHK        ; See if the RSX is already loaded
  26.     JZ    TERMRSX        ; We're already loaded, access active copy
  27.     MVI    A,RSX$INIT    ; Get initialization function
  28.  
  29. LOADRSX:STA    RSXPB        ; Store subfunction in parameter block
  30.     MVI    C,CALLRSX    ; Get RSX command index
  31.     LXI    D,RSXPB        ; Get RSX parameter block address
  32.     CALL    BDOS
  33.  
  34.     LDA    STAT        ; Get the status byte
  35.     CPI    00        ; Was all ok?
  36.     JNZ    ERROR1        ; Nope - tell the caller
  37.  
  38. EXIT:    MVI    C,WBOOT        ; Terminate the program but not the RSX
  39.     JMP    BDOS
  40.  
  41. TERMRSX:MVI    A,RSX$TERM    ; Get RSX termination function
  42.     JMP    LOADRSX        ; Now go set up the RSX
  43.  
  44. RSXCHK:    MVI    A,RSX$CK
  45.     STA    RSXPB        ; Store subfunction in parameter block
  46.     MVI    C,CALLRSX    ; Get RSX command index
  47.     LXI    D,RSXPB        ; Get RSX parameter block address
  48.     CALL    BDOS
  49.     LDA    STAT1        ; Get the status byte
  50.     CPI    0CCH        ; Is the RSX loaded?
  51.     RNZ            ; Nope
  52.     LDA    STAT2        ; Get the second status byte
  53.     CPI    0CCH        ; Is the RSX loaded?
  54.     RET            ; Return
  55.  
  56. ERROR0:    MVI    C,PSTRING    ; Get print string function
  57.     LXI    D,ERR0MSG    ; Get error message address
  58.     CALL    BDOS        ; Display the error message
  59.     JMP    EXIT        ; Go away
  60.  
  61. ERROR1:    MVI    C,PSTRING    ; Get print string function
  62.     LXI    D,ERR1MSG    ; Get error message address
  63.     CALL    BDOS        ; Display the error message
  64.     JMP    EXIT        ; Go away
  65.  
  66. ERR0MSG:DB    'Couldn''t find the BYE5 RSX in memory',CR,LF,'$'
  67. ERR1MSG:DB    'An unexpected error has occurred.  The BYE5 RSX is returning'
  68.     DB    CR,LF
  69.     DB    'a bad status.  Reset the system and try again.'
  70.     DB    CR,LF,'$'
  71. RSXPB:    DB    RSX$INIT    ; RSX initialization function
  72.     DB    2        ; 2 parameter words follows
  73.     DW    RSXNAME        ; Parameter 1 address
  74.     DW    ARGS        ; Parameter 2 address
  75. RSXNAME:DB    'BYE5    '    ; Name of RSX we're calling
  76. ARGS:    DB    0
  77. STAT:
  78. STAT1:    DB    0
  79. STAT2:    DB    0
  80.     DB    0,0,0
  81.  
  82.     END
  83.