home *** CD-ROM | disk | FTP | other *** search
/ Dream 55 / Amiga_Dream_55.iso / Amiga / Emulation / pcemu-0.0.readme < prev    next >
Text File  |  1998-09-09  |  8KB  |  215 lines

  1. Short:    Slow buggy PC emul. port w/src, A68k/PPC
  2. Author:   Peter McGavin  (p.mcgavin@irl.cri.nz) (originally by David Hedley)
  3. Uploader: Peter McGavin  (p.mcgavin@irl.cri.nz)
  4. Type:     misc/emu
  5.  
  6.  
  7.  
  8.                           PCEmuAmiga 0.0                        30 Aug 1998
  9.                           --------------
  10.  
  11.  
  12. This archive contains an Amiga port of David Hedley's PC Emulator for
  13. Unix/X Windows.  Written entirely in C, it emulates a standard
  14. text-only 8086 based PC with 640 kb memory.
  15.  
  16. David Hedley did most of the work in 1993/1994 for a 3rd year
  17. university project.  He took several months to do the hard work,
  18. writing and debugging the 8086 emulator, bios interface and hardware
  19. emulation code.  For a full report of his activities, take a look at
  20. report.ps with a PostScript viewer.  David's version of the emulator
  21. is available from sunsite as pcemu1.01alpha.tar.gz.  It runs on Linux,
  22. Solaris, HP-UX, etc.
  23.  
  24. The Amiga port took 2 days (so far), plus another 2 or 3 hours to
  25. write this document.  I reckon that's a tribute to how well David made
  26. his code portable and separated the hardware independent from hardware
  27. dependent code.
  28.  
  29. I replaced the X Windows module, xstuff.c, with an Amiga equivalent,
  30. astuff.c.  It handles colour text video and the keyboard.  Apart from
  31. that, I replaced the 100 Hz timer interrupt code (tricky for PPC),
  32. resolved various naming conflicts with the Amiga includes, and changed
  33. some Unix versus Amiga path naming conventions.
  34.  
  35. Unfortunately the original emulator is far from complete.  For
  36. example, there are no graphics modes, no mouse/joystick, no sound,
  37. incomplete bios emulation, no 80286 emulation, and so on.  Indeed,
  38. these days it's quite hard to find compatible software for it.  Also,
  39. it is quite slow, and there are bugs.  No doubt there are more bugs
  40. and limitations in my Amiga version than in David's Unix/X Windows
  41. version.
  42.  
  43. On the positive side, when things go wrong, pcemu generally exits
  44. cleanly and leaves the Amiga stable.  If it freezes, a clean exit can
  45. be forced by sending pcemu a CTRL/C BREAK signal.  I have yet to crash
  46. my Amiga with pcemu.
  47.  
  48. See the other documentation files for David's description of the
  49. emulator.
  50.  
  51.  
  52.  
  53. REQUIREMENTS
  54. ------------
  55.  
  56. A fast Amiga, preferably a 68060 or PPC, with at least KS3.0.
  57.  
  58. The PPC version uses PowerUp, not WarpOS, sorry.
  59.  
  60. Stack requirements are small, I think.
  61.  
  62.  
  63.  
  64. INSTALLATION
  65. ------------
  66.  
  67. You should be able to run pcemu and/or pcemuppc directly from the
  68. distribution directory.
  69.  
  70. To install to a hard disk:
  71.  
  72. Copy pcemu and/or pcemuppc to a directory of your choice.
  73.  
  74. Install the vga/16 font in your fonts directory or under the program
  75. directory.  (The program directory is the directory containing pcemu
  76. and/or pcemuppc.)
  77.  
  78. Copy .pcemurc to the program directory.
  79.  
  80. Edit .pcemurc, look at the comments in the file and make changes if
  81. required.  Here you can configure your keyboard and PPC bus speed,
  82. among other things.
  83.  
  84. Copy DriveA to the program directory.  DriveA is an image of a
  85. bootable floppy disk.  The emulator loads it then boots to it.
  86.  
  87.  
  88.  
  89. DOS
  90. ---
  91.  
  92. PCs run operating systems such as MS-DOS.  PC emulators do the same.
  93. A PC emulator is pretty useless without an OS.
  94.  
  95. Unfortunately I can't give away MS-DOS with pcemu.  It still belongs
  96. to Bill Gates.
  97.  
  98. However there's a mostly MS-DOS compatible OS called FreeDOS that's
  99. governed by the GNU license.  I can give it away provided I tell you
  100. how I got it and how you can get the source code.  Well I downloaded
  101. it from "http://www.freedos.org/" and you can get it from there too.
  102.  
  103. The file DriveA is an image of a 1.44 Mb bootable floppy disk
  104. containing some of the base components of FreeDOS --- just enough to
  105. boot the emulator and try a few things.  It doesn't contain a single
  106. byte of Micro$oft code.
  107.  
  108. Unfortunately FreeDOS has its share of bugs which, added to the bugs
  109. in pcemu, makes for a very unstable situation.  You'll do much better
  110. if you get yourself a real bootable MS-DOS disk and make your own
  111. DriveA image from it.
  112.  
  113. The program amidumpdisk in the programs directory can dump 720 kb and
  114. 1.44 Mb PC floppies to a disk image.  Run it from a CLI to see how to
  115. use it.  You'll need a high-density drive to make a 1.44 Mb image.
  116. Well, either that or use David Hedley's dumpdisk (also in the programs
  117. directory) on a PC.  Or try "cp /dev/fd0 DriveA" on a Unix box.  If
  118. you make a 720 kb image (or another size), you'll have to change a
  119. line in .pcemurc.
  120.  
  121. It might be a good idea to make an image of a bootable MS-DOS disk
  122. with EDIT.EXE, QBASIC.EXE, some text Basic games like NIBBLES.BAS,
  123. Norton SysInfo, and so on.  Something with colour makes a difference.
  124.  
  125.  
  126.  
  127. WINDOWS
  128. -------
  129.  
  130. You must be kidding...
  131.  
  132.  
  133.  
  134. LREDIR AND EMUFS
  135. ----------------
  136.  
  137. These are PC programs in the programs directory which allow the PC
  138. emulator to access the Unix file system behind the emulator.  See
  139. ldir.readme in the programs directory for a full description.
  140.  
  141. Please note that I made only minimal changes to the EMUFS support in
  142. the emulator to get the code to compile.  In particular, I did not
  143. change any path naming conventions from Unix.  You can try installing
  144. EMUFS.SYS in your config.sys to access Amiga files, but the result may
  145. not be what you expect.
  146.  
  147. Absolute pathnames in Unix start with a slash "/".  When the emulator
  148. passes a name beginning with a "/" to AmigaDOS, AmigaDOS looks in the
  149. parent directory, i.e, one up from where you are now.  If you're very
  150. lucky, you might be able to access files in the parent directory from
  151. inside pcemu.  Constructions like "../" probably won't work at all.
  152. In any case, MFS often seems to list files with the wrong sizes, or
  153. complete gibberish.  MFS is the most bug-ridden part of PCEmuAmiga.
  154.  
  155.  
  156.  
  157. TIMING
  158. ------
  159.  
  160. The original emulator uses setitimer() to generate 100 Hz regular
  161. interrupts.  The interrupt routine sets a flag which the emulator
  162. checks before every 8086 instruction.  If the flag is set, the
  163. emulator generates 8086 interrupts as required, checks for keyboard
  164. input, updates the display, and so on.
  165.  
  166. SAS/C doesn't provide setitimer().  For the Amiga A68k version, I used
  167. timer.device and TR_ADDREQUEST to provide the same functionality.
  168.  
  169. I couldn't see how to generate 100 Hz interrupts with PPC PowerUp
  170. without massive overheads with every 8086 instruction.  Therefore I
  171. changed to a different method.  Before every instruction, the emulator
  172. reads the PPC time base facility registers and checks to see whether
  173. 0.01 seconds has elapsed since the last interrupt.
  174.  
  175. Calling a subroutine to read the time base registers and doing 64-bit
  176. comparisons is slower than checking a flag.  Therefore I changed the
  177. emulator to execute a fixed number of instructions before checking the
  178. clock.  You can set this number in .pcemurc.  By default it is 100.
  179. Not checking for interrupts after every instruction my cause
  180. compatibility problems with some software.
  181.  
  182.  
  183.  
  184. SPEED
  185. -----
  186.  
  187. Frankly, I'm disappointed in the speed, especially the PPC version.  I
  188. compiled David Hedley's original version with egcs on APUS and it went
  189. several times faster on the same Amiga.  And that was sending all the
  190. graphics across a network to another X-server too (because I haven't
  191. got an X-server working on APUS yet).  I don't know whether the
  192. difference is egcs versus SAS/C or whether I did something silly when
  193. I ported it to the Amiga.  Perhaps it's doing too many A68k/PPC
  194. context switches.  Profiling the A68k version indicates it spends
  195. about 99% of its time in the 8086 emulator.
  196.  
  197.  
  198.  
  199. FUTURE PLANS
  200. ------------
  201.  
  202. Sorry but I don't have any future plans for PCEmuAmiga really.  It
  203. would be incredibly time-consuming to fix many of the bugs and
  204. limitations.  I was only interested in seeing how easily it could be
  205. ported to the Amiga and how fast it would go.  Perhaps if I see an
  206. easy fix that would make a big difference, and if I have enough spare
  207. time, I might do something.  There are too many other things to do...
  208.  
  209. However all the source code is there for anyone to modify for
  210. non-commercial purposes.  Why don't you go for it?
  211.  
  212.  
  213.  
  214. Peter McGavin (p.mcgavin@irl.cri.nz).
  215.