home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / kaypro / kpfixsel.asm < prev    next >
Assembly Source File  |  1994-07-13  |  2KB  |  81 lines

  1. ;    FIXSEL.ASM    10/20/86
  2. ;
  3. ;    BY: MARTY L. WILLIAMS
  4. ;        VALLEY VIEW APTS
  5. ;        B8 A15
  6. ;        WATERVLIET, NY  12189
  7. ;        (518)786-1157
  8. ;
  9. ;    PROBLEM:
  10. ;    -WHEN A SELECT ERROR OCCURS, CP/M WILL
  11. ;     NOT RETURN YOU TO THE DRIVE YOU WERE ON.
  12. ;
  13. ;    SOLUTION:
  14. ;    -SAVE THE CURRENT DRIVE PRIOR TO SELECTING
  15. ;     THE NEXT DRIVE. IF A SELECT ERROR OCCURS,
  16. ;     RETURN TO THE CCP WITH THE LAST GOOD
  17. ;     DISK SELECTED.
  18. ;
  19. ;    NOTES:
  20. ;    -SOME BYTES ARE ROBBED FROM THE CCP INPUT
  21. ;     BUFFER. I DON'T THINK THIS SHOULD BE MUCH
  22. ;     OF A PROBLEM. I'VE NEVER HAD TO USE ALL
  23. ;     THOSE BYTES.
  24. ;    -YOU ARE RETURNED TO USER 0.
  25. ;    -WRITTEN FOR A KAYPRO 4/83.
  26. ;
  27. ;    IMPLEMENTATION: (63K SYSTEM)
  28. ;    A0>MOVCPM 63 *
  29. ;    A0>SAVE 34 CPM63.COM
  30. ;    A0>ASM SELFIX.AAZ
  31. ;    A0>DDT CPM63.COM
  32. ;    -ISELFIX.HEX
  33. ;    -R2980
  34. ;    G0 (OR ^C)
  35. ;    A0>SAVE 34 CPM63.COM
  36. ;    A0>SYSGEN CPM63.COM
  37. ;
  38. ;    PUT YOUR STARTING LOCATIONS HERE
  39. ;
  40. CCP    EQU    0E000H        ;CCP START  63K SYSTEM
  41. BDOS    EQU    0E800H        ;BDOS START 63K SYSTEM
  42. ;
  43. ERRMSG    EQU    BDOS + 00E5H    ;ERR MSG OUTPUT
  44. CURDSK    EQU    BDOS + 0342H    ;BDOS CURRENT DISK
  45. SELDSK    EQU    BDOS + 0C45H    ;BDOS ORGINAL SELECT
  46.                 ; DISK ADDRESS
  47. ;
  48.     ORG    CCP  + 06H    ;START OF CCP COMMAND BUFFER
  49.     DB    67H        ;SHORTEN THE COMMAND BUFFER
  50.                 ; THIS GIVES YOU A BUFFER
  51.                 ; OF 102 DECIMAL BYTES.
  52.                 ; THIS SHOULD BE PLENTY.
  53. ;
  54.     ORG    CCP  + 70H    ;START OF COMMAND BUFFER
  55.                 ; THAT HAS BEEN TURNED INTO
  56.                 ; A PATCH AREA
  57. SAVCUR:    LDA    CURDSK        ;GET CURRENT DISK PRIOR TO
  58.                 ; SELECTING A NEW DISK
  59.     STA    LSTDSK        ;SAVE IT AS THE LAST GOOD DISK
  60.     JMP    SELDSK        ;ORIGINAL BDOS SELECT DISK FUNC
  61. ;
  62. ;    INSTEAD OF JUMPING TO REBOOT WHEN A SELECT ERROR
  63. ;    OCCURS (ORIGINAL CODE), JUMP TO ROUTINE BELOW
  64. ;
  65. SELERR:    CALL    ERRMSG        ;OUTPUT SELECT ERROR MESSAGE
  66.     LDA    LSTDSK        ;GET LAST DISK SELECTED
  67.                 ; PRIOR TO SELECT ERROR
  68.     MOV    C,A        ;PUT IN 'C' FOR CCP TO USE
  69.     JMP    CCP  + 03H    ;JUMP TO CCP
  70. ;
  71. LSTDSK:    DB    00H        ;STORAGE FOR LAST DISK
  72. ;
  73.     ORG    BDOS + 63H    ;BDOS COMMAND VECTOR TABLE
  74.     DW    SAVCUR        ;NEW COMMAND VECTOR FOR
  75.                 ; SELECT DISK
  76.     ORG    BDOS + 0A8H
  77.     JMP    SELERR        ;JUMP TO NEW TAIL END SELECT
  78.                 ; ERROR PROCESSING
  79.     END
  80.  
  81.