AME86 Application Migration Executive CP/M-86 emulator for MSDOS Jean-Marc Lugrin, Digital Equipment Corporation This emulator allows you to run CP/M-86 programs under MSDOS. The goal is to ease transfer of already developed applications, and to allow co-existence of CP/M-86 and MSDOS applications. The goal is to emulate CP/M-86 as commonly used on the Rainbow-100 computer. Programs which depend too heavily on the internal structure of CP/M-86 are not likely to work correctly. This includes communication programs (poly-XXX, Kermit), debuggers (DDT86), device maintenance programs (STAT, MAINT, FORMAT). The same class of program that is easy to transfer to CCPM should run on AME86. For other limitations see below. It is possible to develop and test CP/M-86 programs (using ASM86, GENCMD or MWC or other CP/M-86 compilers) under MSDOS+AME86. NOTE: A CP/M-86 license is necessary to use Digital Research products with AME86. To run a CP/M-86 program use the command: AME86 [ path ] CP/M-86-program/[C,S|F,I] [ arguments ] AME86 will be searched for using the current PATH environment variable, but the CP/M-86 program must reside in the current directory or in a directory specified on the command line. Options must directly follow the name of the program to be loaded (NO space allowed). If SWITCHAR is "-", then replace "-" for "/" in the examples. The following options are recognized: /C - control-C will NOT abort your program. Under MSDOS control-C may abort your program at any console i/o operation (except some direct console i/o), or even at any system request (disk i/o or other request) if the option BREAK=ON has been used in CONFIG.SYS. This feature is useful for stopping erroneous programs, but may conflict with the way control-C is handled by the emulated program. If you do NOT want control-C trapping by MSDOS during execution of the program, use option /C. This should only be used with program known to work well, and to work with AME86 (e.g. RED). NOTE: If a program had any file open for writing when control-C was issued, the disk may be corrupted. You should run CHKDSK to check disk structure. /S and /F: Both options are for similar uses, and are mutually exclusive. Under CP/M-86 (and MSDOS) a program cannot know from where it was loaded (which drive). Under AME86 it cannot even know from which directory. This is a problem with program using HELP files or OVERLAYS (like RED, TURBO, WS, etc), as they do not know where to look for them. Normally they look at the default drive established at load, or at the boot drive. AME86 returns the drive used to load the program as the boot drive. Still the program may look in the wrong drive or the wrong directory. To allow a program a way to find overlays or help files, AME86 can give them a second chance on OPEN or CHAIN (but NOT on MAKE, SEARCH_FIRST or SEARCH_NEXT). The second chance is given ONLY if the file is assumed to be in the drive which was the CURRENT DRIVE when the program was loaded or if a PATH was specified on the command line, and if option /S or /F was specified. AME86 uses a heuristic to avoid trying to open using the same file name twice. Inpact on speed is minimal for option /S with floppy drive, with option /F with MDRIVE. NOTE: On 0.7-1 a bug precludes the use of /S and /F together with a path name. /S - Search: Allows for a second chance AFTER the file was looked in the current directory of the specified drive. Possible problem: if the user opens a data file which does not exist on the specified drive, and one exists on the load drive, the one on the load drive will be used without warning. /F - First Search: FIRST tries to open on the load device and pathname if the drive qualifies (is either the default drive at load or the effective load drive and a pathname is specified). Possible problem: if the user tries to open a data file on a specific disk, and a file with the same name exists on the load drive, the file on the load drive will be used without warning. /I - Ignore: This option gives a better (but less secure) emulation of CP/M-86. The following functionality is modified: 1) If the program calls CP/M-86 for an illegal request, AME86 returns with AX=BX=0. 2) If the program asks for a SEARCH in special mode, AME86 will attempt to emulate it (for STAT and MAINT). This does not run very well now... This option should be used carefully. NOTE: If you use BREAK=ON in your CONFIG.SYS, MSDOS will check for ^C at any system call. Your program has no possibility to intercept this Control/C: it is aborted. If you use BREAK=ON, and your program normally handle ^C itself, you have to be carrefull to type ^C ONLY when your program ask for some input. These is not always convenient, you may desire to supress BREAK=ON or use option /C. Copyright: Jean-Marc Lugrin, Digital Equipment Corporation, 1983, 1984