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 / CCP / AUTOX.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  2KB  |  69 lines

  1. ;   ROUTINE TO EXECUTE A COMMAND BY USING THE AUTO
  2. ;   START FACILITY IN THE CP/M (V1.4, 2.0-2.2) .  IT
  3. ;   ASSUMES THAT THE CCP IS STILL INTACT (HAS NOT BEEN
  4. ;   CRASHED OR OVERLAYED.
  5. CDISC    EQU    4    ; CP/M DRIVE BUFFER LOCATION
  6. ;
  7. ;
  8. TXBUF:    DB YY    ; LENGTH OF BUFFER
  9.     DB XX    ; COMMAND LENGTH (EXCLUDING 00,0DH)
  10.     DB 'COMMAND'
  11.     DB 00    ; NULL
  12.     DB 0DH    ; CARRIAGE RETURN
  13. ;
  14. ;
  15. ;
  16.     LHLD    1        ; GET JUMP TO BIOS
  17.     LXI    D,-1603H    ; OFFSET FOR CP/M 2.X (USE 1503
  18.                 ; FOR CP/M 1.4X
  19. ;
  20.     DAD    D
  21.     SHLD    LDCCP        ; SAVE CCP LOCATION
  22.     LXI    H,TXBUF+1    ; POINT TO COUNTER
  23.     MOV    A,M        ; GET IT
  24.     ORA    A        ; IS IT STILL ZERO?
  25.     JZ    REXIT        ; YES, SO NO AUTO START
  26.     INR    A        ; INCREMENT COUNTER FOR COPY
  27.     INR    A
  28.     INR    A
  29.     MOV    C,A        ; GET INTO (B,C)
  30.     MVI    B,0
  31.     PUSH    H        ; SAVE POINTER
  32.     LHLD    LDCCP        ; GET CCP POINTER
  33.     LXI    D,7        ; POINT AT COUNTER LOCATION
  34.     DAD    D
  35.     XCHG            ; SAVE AS DESTINATION POINTER (D,E)
  36.     POP    H        ; GET BACK SOURCE POINTER
  37.     CALL    MOVE        ; COPY CODE INTO CCP BUFFER
  38.     LHLD    LDCCP        ; GET POINTER TO CCP
  39.     LXI    D,88H        ; OFFSET TO CCP TXBUF POINTER
  40.     DAD    D
  41.     PUSH    H        ; SAVE POINTER
  42.     LHLD    LDCCP
  43.     LXI    D,8        ; OFFSET TO START OF BUFFER
  44.     DAD    D
  45.     XCHG            ; SAVE IN (D,E)
  46.     POP    H        ; GET POINTER BACK
  47.     CALL    PTDE        ; RESET POINTER VALUE
  48.     LHLD    LDCCP        ; GET CCP ADDRESS
  49.     LDA    CDISC        ; GET DISC #
  50.     MOV    C,A        ; SAVE FOR CCP FUNCTION
  51.     PCHL            ; DO AUTO START
  52. ;
  53. MOVE:    MOV    A,M    ; GET BYTE FROM SOURCE
  54.     STAX    D    ; SAVE AT DESTINATION
  55.     INX    H
  56.     INX    D
  57.     DCX    B
  58.     MOV    A,B
  59.     ORA    C
  60.     JNZ    MOVE    ; LOOP UNTIL DONE
  61.     RET
  62. ;
  63. REXIT:    ...    ; ROUTINE OR PROGRAM TO GO TO
  64.         ; IF COMMAND LENGTH IS ZERO.
  65. ;
  66. LDCCP:    DS    2    ; BUFFER FOR CCP LOCATION
  67. ;
  68.     END
  69.