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

  1. ;
  2. ;        MAKESUB.ASM
  3. ;         (revised 4/28/80)
  4. ;
  5. ;11/04/79 FIRST WRITTEN BY KEITH PETERSEN
  6. ;      AND BOB MATHIAS.
  7. ;
  8. ;04/28/80 UPDATED FOR MORE EFFICIENT CODING BY
  9. ;      CLAYTON HIBBERT AND KEITH PETERSEN.
  10. ;
  11. ;THIS PROGRAM DEMONSTRATES HOW ONE CP/M COM
  12. ;PROGRAM CAN EXECUTE ANOTHER COM PROGRAM.
  13. ;THE SECRET IS IN CREATING A FILE CALLED
  14. ;"$$$.SUB" WHICH CONTAINS THE COMMAND TO
  15. ;EXECUTE THE NEXT PROGRAM. AFTER DOING THAT,
  16. ;A JMP TO WARM BOOT (0000H) WILL CAUSE CP/M
  17. ;TO DO A SUBMIT OF THAT COMMAND.
  18. ;
  19. ;
  20. DRNAME    EQU    4    ;ADDR. WHERE DRIVE NAME IS
  21. BDOS    EQU    5
  22. FCB    EQU    5CH
  23. FCBEX    EQU    FCB+12
  24. FCBNR    EQU    FCB+32
  25. BUFF    EQU    80H    ;CP/M DEFAULT BUFFER
  26. MAKE    EQU    22
  27. WRITE    EQU    21
  28. CLOSE    EQU    16
  29. ;
  30.     ORG    100H
  31. ;
  32.     LXI    H,FILNAM ;POINT TO FILENAME
  33.     LXI    D,FCB    ;POINT TO FCB
  34.     MVI    B,13     ;LENGTH OF FILENAME
  35.     CALL    MOVER    ;MOVE IT TO FCB
  36. ;
  37. ;    GO MAKE THE FILE
  38. ;
  39.     XRA    A
  40.     STA    FCBNR    ;SET RECORD NUMBER TO ZERO
  41.     LXI    D,FCB    ;POINT TO NAME
  42.     MVI    C,MAKE    ;MAKE FILE
  43.     CALL    BDOS
  44. ;
  45. ;    GET THE NAME TO PUT IN FILE
  46. ;
  47.     LXI    H,COMNAM ;POINT TO COMMAND STRING
  48.     LXI    D,BUFF    ;POINT TO FCB
  49.     MVI    B,NAMLEN ;LENGTH OF MOVE
  50.     CALL    MOVER    ;MOVE NAME INTO BUFFER
  51. ;
  52. ;    WRITE FILE NAME TO DISK
  53. ;
  54.     LXI    D,FCB    ;POINT TO NAME
  55.     MVI    C,WRITE    ;WRITE RECORD
  56.     CALL    BDOS
  57. ;    
  58. ;    NOW CLOSE THE FILE ON DISK
  59. ;
  60.     LXI    D,FCB    ;POINT TO NAME
  61.     MVI    C,CLOSE    ;CLOSE FILE
  62.     CALL    BDOS
  63. ;
  64. ;    INSURE THE DISK WE WANT TO SUBMIT ON
  65. ;
  66.     XRA    A    ;GET A ZERO
  67.     STA    DRNAME    ;SET CP/M FOR DRIVE A:
  68.     JMP    0    ;REBOOT
  69. ;
  70. ;MOVE (B) BYTES FROM (HL) TO (DE)
  71. ;
  72. MOVER:    MOV    A,M    ;GET BYTE FROM SOURCE
  73.     STAX    D    ;STORE AT DESTINATION
  74.     INX    H    ;INCREMENT SOURCE ADR
  75.     INX    D    ;INCREMENT DESTINATION ADR
  76.     DCR    B    ;DECREMENT MOVE COUNTER
  77.     JNZ    MOVER    ;NOT DONE, DO MORE    
  78.     RET
  79. ;
  80. FILNAM    DB    1    ;DRIVE NAME 1=A
  81.     DB    '$$$     SUB' ;NAME OF SUBMIT FILE
  82.     DB    0    ;SET EXTENT NR TO ZERO
  83. ;
  84. COMNAM    DB    NAMLEN -2 AND 0FFH ; ACTUAL LENGTH OF COMMAND
  85.     DB    'DIR'    ;PUT COMMAND HERE
  86.     DB    0    ;END WITH ZERO
  87. NAMLEN    EQU    $-COMNAM ;LENGTH OF NAME
  88. ;
  89.     END
  90.  
  91.