home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / misc2 / amebat.lzh / AMEBAT.ASM next >
Assembly Source File  |  1985-05-18  |  3KB  |  122 lines

  1. ;
  2. ;            === AMEBAT.ASM ===
  3. ;
  4. ; This program provides a way to spawn to AME86 without using ugly batch files.
  5. ; The program will take your command line (ie. filenames etc.) and pass them
  6. ; to AME86. Change drive, path, and .CMD specs per requirements as noted
  7. ; in the data structures at the bottom of the code. See AMEBAT.DOC for furthur
  8. ; information.
  9. ;
  10. ; Assemble, link, and convert to .COM as follows:
  11. ;
  12. ; MASM AMEBAT.ASM AMEBAT.OBJ NUL NUL    ;Note NO commas
  13. ; LINK AMEBAT.OBJ,AMEBAT.EXE,NUL,NUL    ;Note commas (ignore stack error)
  14. ; EXE2BIN AMEBAT.EXE CPMPROG.COM    ;CPMPROG = KEDT,SELECT, etc.
  15. ;
  16. ;  You can edit and build this file over and over for all your CP/M progs
  17. ;
  18. ;        Written by Jay Jervey, 21-MAR-1985, Fountain Valley, CA
  19. ;
  20.  
  21.  
  22.  
  23. RET_NEAR    MACRO
  24.         DB    0C3H
  25.         ENDM
  26.  
  27.      .RADIX    10D
  28.  
  29. CODE    SEGMENT
  30.  
  31.     ASSUME    CS:CODE,DS:CODE,ES:CODE,SS:CODE
  32.  
  33.     ORG    2CH
  34. ENVIRON    DW    0
  35.  
  36.     ORG    80H
  37.  
  38. CMDLEN    DB    0
  39. CMDLIN    DB    0
  40.  
  41.     ORG    100H
  42.  
  43. DOS    EQU    21H
  44.  
  45. BATCH:    MOV    SP,OFFSET STACK       ;Set up new stack
  46.     PUSH    CS
  47.     POP    ES
  48.     MOV    BX,48           ;Free unneeded memory
  49.     MOV    AH,4AH
  50.     INT    DOS
  51.  
  52.     MOV    AX,ENVIRON       ;Set environment segment
  53.     MOV    PARAM_BLOCK,AX
  54.     MOV    AX,CS
  55.     MOV    DS,AX
  56.     MOV    ES,AX
  57.     MOV    FCB5C_SEG,AX        ;Set FCB segs
  58.     MOV    FCB6C_SEG,AX
  59.     MOV    COMMAND_SEG,AX        ;Set 80H command line seg
  60.  
  61.     XOR    CH,CH            ;Append command line for AME86
  62.     MOV    CL,CMDLEN
  63.     ADD    COMMAND_BLOCK,CL
  64.     MOV    SI,OFFSET CMDLIN
  65.     MOV    DI,OFFSET TAIL
  66.     CLD
  67.     REP    MOVSB
  68.     MOV    BYTE PTR [DI],0DH    ;Must terminate with carriage return
  69.  
  70.     MOV    DX,OFFSET AME86        ;Program to execute in DX
  71.     MOV    BX,OFFSET PARAM_BLOCK    ;Start of parameter block in BX
  72.     CALL    SPAWN            ;Do it
  73.  
  74.     MOV    AH,0            ;Exit
  75.     INT    DOS
  76.  
  77. SPAWN:    CLI
  78.     MOV    STACK_SEG,SS        ;Save stack
  79.     MOV    STACK_PTR,SP
  80.     STI
  81.     MOV    AL,0
  82.     MOV    AH,4BH
  83.     INT    DOS            ;Run AME86
  84.     MOV    AX,CS
  85.     MOV    DS,AX
  86.     MOV    ES,AX
  87.     CLI
  88.     MOV    SS,STACK_SEG        ;Restore stack
  89.     MOV    SP,STACK_PTR
  90.     STI
  91.     RET_NEAR
  92.  
  93. STACK_PTR    DW    0
  94. STACK_SEG    DW    0
  95.  
  96. PARAM_BLOCK    DW    0
  97. COMMAND_OFF    DW    OFFSET COMMAND_BLOCK
  98. COMMAND_SEG    DW    0
  99.         DW    OFFSET FCB
  100. FCB5C_SEG    DW    0
  101.         DW    OFFSET FCB
  102. FCB6C_SEG    DW    0
  103. FCB        DB    5        ;Change to drive of CP/M program
  104.                     ; 1=A, 2=B.... 5=E etc.
  105.         DB    12 DUP (20H)
  106.         DB    0,0,0,0
  107.  
  108. AME86        DB    'E:\AME86.EXE',0  ;Point to AME86 here (ie. path etc.)
  109. COMMAND_BLOCK    DB    STRLEN
  110. COMMAND_STRING    DB    ' E:\\KEDT.CMD/C' ;Command line for AME86
  111.                       ;Note: the double backslash indicates
  112.                       ;the root directory. This is an AME86
  113.                       ;feature only. Other directory paths
  114.                       ;are specified normally.
  115. STRLEN    = $ - OFFSET COMMAND_STRING
  116. TAIL        DB    0DH
  117.         DB    300 DUP (?)
  118. STACK        DB    ?
  119.  
  120. CODE        ENDS
  121.         END    BATCH