home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / amix / AmigaDOS-Emu.zoo / small-doc < prev    next >
Internet Message Format  |  1992-01-14  |  5KB

  1. From comp.sys.amiga.emulations Sat Jan 11 23:09:52 1992
  2. Xref: cs.tu-berlin.de comp.unix.amiga:2436 alt.sources.amiga:448 comp.sys.amiga.emulations:2877
  3. Path: cs.tu-berlin.de!fauern!Sirius.dfn.de!chx400!ieee.org!sdd.hp.com!samsung!uunet!blekko!yoda!ford
  4. From: ford@yoda.uucp (Mike "Ford" Ditto)
  5. Newsgroups: comp.unix.amiga,alt.sources.amiga,comp.sys.amiga.emulations
  6. Subject: AmigaDOS emulator for Unix SVR4
  7. Summary: amusing hack, works for some simple programs, could be extended
  8. Keywords: source execute simple AmigaDOS programs
  9. Message-ID: <114@yoda.uucp>
  10. Date: 9 Jan 92 21:38:38 GMT
  11. Reply-To: ford@yoda.uucp (Mike "Ford" Ditto)
  12. Followup-To: comp.unix.amiga
  13. Organization: Omnicron Data Systems
  14. Lines: 4284
  15.  
  16. Here is an AmigaDOS emulator for Unix.  It's written for Amiga Unix
  17. SVR4, but would probably work on any m68k SVR4 system.
  18.  
  19. To compile it, you need the AmigaDOS include files.  I used the
  20. AmigaDOS 1.3 includes that came with a version of the Aztec C
  21. Compiler.  Some tweaking may be required for other versions.
  22.  
  23. Before you get too excited, note that the program emulates a *very*
  24. small subset of the Amiga operating environment.  It does not support
  25. graphics at all.  It currently emulates enough of exec.library and
  26. dos.library to allow the execution of simple text-only programs, the
  27. same sort of program that can be run entirely in an AmigaDOS CON: CLI
  28. or AUX: CLI.
  29.  
  30. For example, I have successfully used it to run the Aztec C Compiler
  31. and related utilities under Unix and develop AmigaDOS programs from C
  32. source, entirely under Unix.
  33.  
  34. Although it is useful for a fairly small set of tasks in its current
  35. form, it is extensible, and could form the basis for a "real" AmigaDOS
  36. emulator.  Basically, since I created the basic structure, I've been
  37. implementing a new function whenever I try to execute a program that
  38. fails because it needs that function.  In some cases, I implmented
  39. only enough to get the program in question to run.
  40.  
  41. I haven't worked on it in a while, but I am familiar with the
  42. code and would be willing to help anyone who wants to hack on it.
  43.  
  44.     Usage: arun [-v verbosity] amiga_program args ...
  45.  
  46.     -v1 allows the display of some warnings and other marginally
  47.     useful information when invoking the program.
  48.  
  49.     -v2 adds to the above a message for every AmigaDOS library
  50.     function called.
  51.  
  52.     The "args ..." are concatenated separated by spaces and
  53.     passed to the AmigaDOS program.
  54.  
  55.     If any unimplemented library function is called, the program
  56.     is aborted with a cryptic message.  The sorts of things that
  57.     would cause the Amiga OS to "guru" will cause the process to
  58.     dump core.
  59.  
  60.  
  61. Here are some examples of using this program to execute AmigaDOS
  62. versions of "date" and "tar" programs, both compiled with Aztec C:
  63.  
  64.  
  65. Script started on Thu Jan  9 16:29:44 1992
  66.  
  67. ford@yoda> file date tar arun.tar
  68. ~date:        AmigaDOS LoadSeg file
  69. tar:        AmigaDOS LoadSeg file
  70. arun.tar:    tar file
  71.  
  72. ford@yoda> arun date
  73. Thu Jan  9 16:30:16  1992
  74.  
  75. ford@yoda> arun -v2 date
  76. ExecBase = 0x80012af8
  77. DOSBase = 0x80011cbc
  78. &CurrentProcess = 0x80012d8c (&MsgPort=0x80012de8)
  79. &CurrentProcess.pr_CLI = 0x80012e38 (offset 0xac)
  80. Program entry at 0x8001349c
  81. OpenLibrary(dos.library, 0)
  82. AllocMem(0x78, 0x10000)
  83. FindTask(0)
  84. AllocMem(0x6, 0x0)
  85. AllocMem(0x8, 0x0)
  86. Input()
  87. Output()
  88. Open(*, 0x3ed)
  89. OpenLibrary(environment, 0)
  90. Building Manx environment
  91. CloseLibrary(0x80002bb0)
  92. AllocMem(0x14, 0x0)
  93. DateStamp(0xc07ffc50)
  94. OpenLibrary(environment, 0)
  95. CloseLibrary(0x80002bb0)
  96. AllocMem(0x14, 0x0)
  97. OpenLibrary(environment, 0)
  98. CloseLibrary(0x80002bb0)
  99. AllocMem(0x14, 0x0)
  100. AllocMem(0x408, 0x0)
  101. IsInteractive(200043c8)
  102. SetSignal(00000000, 00001000)
  103. Write(0x200043c8, 0x80015dc0, 0x1a)
  104. Thu Jan  9 16:30:24  1992
  105. FreeMem(0x80015db8, 0x408)
  106. Close(0x20004851)
  107. FreeMem(0x80013008, 0x78)
  108. FreeMem(0x800131ac, 0x14)
  109. FreeMem(0x80013194, 0x14)
  110. FreeMem(0x800130b0, 0x14)
  111. FreeMem(0x80012e94, 0x6)
  112. FreeMem(0x80012ea0, 0x8)
  113. Program returned 0x0
  114.  
  115. ford@yoda> arun tar -tvf arun.tar
  116. rw-r--r-- 42/10    181 Dec 25 20:43 1990 Makefile
  117. rw-r--r-- 42/10    529 Dec 27 15:49 1990 amiga.c
  118. rw-r--r-- 42/10    976 Dec 26 03:25 1990 arun.h
  119. rw-r--r-- 42/10  10498 Jun 20 04:19 1991 dos.c
  120. rw-r--r-- 42/10   4347 Jan  9 20:37 1992 exec.c
  121. rw-r--r-- 42/10    420 Dec 25 20:43 1990 load.h
  122. rw-r--r-- 42/10   4573 Dec 26 02:02 1990 loadseg.c
  123. rw-r--r-- 42/10    653 Dec 25 20:43 1990 mkstubs
  124. rw-r--r-- 42/10   2550 Jan  9 21:01 1992 run.c
  125. rw-r--r-- 42/10    384 Dec 26 03:16 1990 runseg.s
  126. rw-r--r-- 42/10  49013 Dec 25 20:44 1990 stubs.s
  127. rw-r--r-- 42/10  18605 Dec 28 03:57 1990 unsupp.s
  128.  
  129. ford@yoda> exit
  130.  
  131. script done on Thu Jan  9 16:31:04 1992
  132.  
  133.  
  134.  
  135. I created this software and hereby submit it into the public domain.
  136.  
  137.                 Have Fun!
  138.                     -=] Ford [=-
  139.  
  140. "Well, he didn't know what to do, so    (In Real Life:  Mike Ditto)
  141. he decided to look at the government,    ford@yoda.uucp
  142. to see what they did, and scale it    uunet!cbmvax!kenobi!ford
  143. down and run his life that way." -- Laurie Anderson
  144.  
  145.  
  146.  
  147.