summaryrefslogtreecommitdiff
path: root/emulators/pcemu/pkg-descr
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/pcemu/pkg-descr')
-rw-r--r--emulators/pcemu/pkg-descr238
1 files changed, 238 insertions, 0 deletions
diff --git a/emulators/pcemu/pkg-descr b/emulators/pcemu/pkg-descr
new file mode 100644
index 000000000000..812ce717b029
--- /dev/null
+++ b/emulators/pcemu/pkg-descr
@@ -0,0 +1,238 @@
+[This is David Hedley's original README, FreeBSD port comments below]
+
+ PC Emulator for Unix and X Windows
+
+As the title suggests, this is a Unix/X windows program which is
+designed to emulate a standard 8086 based PC.
+
+In its current form it runs most text based programs. The programs I have
+tried and found to work are as follows:
+
+MSDOS 5.0 MSDOS 6.2
+WordPerfect 5.1 Borland C++ 2.0
+Turbo Debugger 2.51 Turbo Assembler 2.51
+BBCBasic 4.61 MSDOS QBasic
+MSDOS GWBASIC Virtually all program that came with MSDOS 5
+Hitchhiker's Guide to the Galaxy PC Magazine's ANSI.COM
+SemWare's QEdit 2.1 Norton Utils 4.50 Advanced Edition
+Norton Utils 6.0 Xtree Professional 1.1
+PowerMeter Utils Autoroute (ancient version)
+Minitab 8.0 Microsoft Diagnostics
+
+This is all the programs I could lay my hands on which were text based
+and could run on an 8086
+
+The emulator runs at about 8-10MHz 80286 speed on a Sun SparcStation
+10/40 (without the -mviking flag) and at about 6MHz 8088 speed on a
+33MHz 80486 box running Linux.
+
+I have included a Postscript representation of my project report. It's
+a bit out of date now, but it's the closest thing I've got to
+documentation! I'll do some kind of latex thing for the next
+release....
+
+The program rather hogs the cpu but unmapping the window (iconifying
+it) will put it to sleep.
+
+The most recent version of this program will always be in ftp.cs.bris.ac.uk
+currently in the directory /users/hedley
+
+INSTALLING THE EMULATOR
+
+Edit the Makefile to change the OPTIONS, CFLAGS and XROOT to be
+appropriate for your system (I am assuming you are using GNU GCC,
+although any ANSI C compiler should work just as well). Ensure you are
+using the best (speed) optimisations possible (e.g. -O2 -fomit-frame-poiner)
+
+Edit the file mytypes.h and ensure that the types for INT8, UINT8,
+INT16, UINT16 etc are correct. Hopefully nothing need be changed in
+this file, but you never can tell... I have assumed that 'char's are 8
+bit bytes, 'short's are 16 bit words and 'long's are 32 bit words. If
+your compiler treats these differently to the above then you will have
+to edit this header file.
+
+Type 'make' and go away and have a cup of tea! Compiling 'cpu.c' takes
+a while (and quite a bit of memory!).
+
+Get a floppy disk of the same size/type as you specified in the Makefile
+(i.e. if you chose -DBOOT720, then you'll need a 3.5" 720k disk). Install
+MSDOS on it. Copy the files 'config.sys', 'emufs.sys' and 'lredir.exe' from
+the 'programs' directory onto this floppy disk. Shove it in your Unix box
+and type cp /dev/fd0 DriveA This should create a 720k (or whatever) file
+which the emulator can boot from. If you do not have access to a Unix box
+with a floppy disk on it, then you can use the supplied 'dumpdisk' program
+to create a disk image. All you need is access to a PC. Simply put in a
+bootable MSDOS disk into the drive and type dumpdisk A (or dumpdisk B if in
+drive B). The program will copy the entire disk to a file called
+'drivea'. You must then transfer it to your Unix box...
+
+You then need to convert the vga font (vga.bdf) into a font format
+your X server can understand (either SNF or PCF) using either
+'bdftosnf' or 'bdftopcf' and install the resulting font file somewhere
+where your X server can find it. Then type 'mkfontdir' to rebuild the
+fonts.dir file and then type 'xset fp rehash' to tell your X server
+about the new font. If you type 'xlsfonts' you should see 'vga' as one
+of the fonts listed. If not, then something has gone wrong. I may or
+may not be able to help - it depends on your local setup. The emulator
+will run without the font as it uses the standard 8x16 X11 font -
+although most programs which use the extended character set will look
+pretty terrible. A warning will be displayed if the correct VGA font
+cannot be found. If you are using openwindows, you will have to type
+'convertfont' and then 'bldfamily'
+
+You should now be in a position to run the emulator
+
+By default, the emulator requires the disk image called 'DriveA' to be in
+the current directory or else it will complain. If you don't like this,
+then you can change the file the emulator boots from by altering your
+.pcemurc file (see below) or by changing the default at compile time (by
+modifying the Makefile)
+
+Once run, the emulator should come up with the usual MSDOS banner and
+request the current date and time (which should already be
+correct). You can now run PC programs, mount Unix directories as
+drives etc. You will already have one drive redirection - drive C: is
+the Unix root directory. To mount further directories as drives, you
+must use the program 'lredir'. Consult the file 'lredir.readme' for
+instructions...
+
+ The .pcemurc file
+
+At present this file allows a few things to be changed at run time. If this
+file is found (either in the current directory or in your home directory),
+then it is read and parsed and the values overwriting the equivalent
+compile time options. Currently the only options supported at present are:
+
+bootfile diskfile
+
+where diskfile is the disk image you want to boot from (no quotes or
+anything are needed and the filename must not contain white spaces).
+
+boottype type
+
+where type is either 360, 720, 144 or 12. This tells the emulator the type
+of disk the disk image file represents (360k, 720k, 1.44MB, 1.2MB
+respectively).
+
+updatespeed n
+
+where n is an integer > 0
+This is the rate at which the screen memory gets checked for changes (and
+hence the update speed at which the screen gets updated for non-BIOS
+writes). n is measured in internal interrupt ticks of which there are ~72.8
+per second (depends on the resolution of the system timer).
+
+cursorspeed n
+
+where n is an integer
+This specifies how fast the cursor should flash. Flashing the cursor can
+take a fair amount of bandwidth and so on slow/heavily loaded networks it
+may be best to slow down the cursor flashing. Setting n to 0 or less will
+disable cursor flashing - the cursor will be permanently on.
+
+An example .pcemurc file can be found in this directory.
+
+If you have problems compiling or running the emulator, then please contact
+me giving details of what went wrong (along with your computer type
+etc).
+
+Architectures tested:
+
+Computer OS Comments
+-----------------------------------------------------------------------------
+PC 486/33 Linux 0.99.14w Runs quite well. A bit pointless though :)
+Sun 3/60 SunOS 4.1.x Takes an age to compile and not really worth
+ the effort...
+SparcStation 10 SunOS 4.1.3 Runs well. Takes > 20MB RAM to compile though
+HP 755/99 HPUX Runs OK (>25MB RAM to compile...)
+Sun 4 Solaris 2.3 Runs OK
+RS6000 ??? Had a few problems getting it to compile.
+ Getting there slowly though.
+SGI Indigo IRIX 4.?.? Doesn't work if compiled with optimisation
+ using the standard compiler. Haven't tried
+ it using gcc yet...
+
+As you can see this list is quite small. The main limiting factor is the range
+of machines I have access to. If anyone else can get it running on other
+architectures then please contact me!
+
+Warning: This program is not secure! Do not make is suid or sgid anything
+unless you wish to compromise the security of your system!
+
+EMULATOR LIMITATIONS etc
+
+Some parts of the PC architecture are emulated better than others. The
+BIOS has been partly implemented - enough to get MSDOS to boot and to
+allow most programs to run. Anyhow, most decent programs bypass the
+BIOS for screen access. BIOS Disk calls for drive A have been mostly
+emulated, although formatting doesn't work.
+
+Some of the hardware has been emulated but not much. Timer interrupts
+are generated by the system but there is now way (at present) to
+reprogram the timer. The Programmable Interrupt Controller has been
+emulated in part to respond to the End Of Interrupt command and reads
+from and writes to the mask register should work OK.
+
+None of the VGA hardware has been emulated at present (apart from
+screen updating) although this will change in the near future. Mode
+changes must therefore be done through the BIOS.
+
+The keyboard has been mostly emulated. The program converts X11
+keysyms to raw PC scan codes and then generates an interrupt 9 as per
+usual. There is a BIOS routine which takes these scan codes and
+generates the correct BIOS ASCII/scan code pair. The keysyms used can
+be found in the module 'xstuff.c'. In the future these keysyms will be
+read in from a file at run time.
+
+THANKS
+
+Thanks go to the following:
+
+Andy Norman at HPLabs, Bristol (ange@hpl.hewlett-packard.co.uk) for the HP
+port.
+Dieter Becker (becker@med-in.uni-sb.de) for help with the Solaris port
+Klaas Esselink (esselin1@ksla.nl) for help with the RS6000 port
+
+Please report bugs/comments etc to me (hedley@cs.bris.ac.uk) and I'll
+do my best to sort them out (no guarantees though). After June 25th I
+will be leaving University and will not be able to check email very
+frequently - please be patient if you want a response - I will reply
+eventually.
+
+Have fun...
+
+David
+
+
+
+[FreeBSD port comments]
+
+I (joerg_wunsch@uriah.heep.sax.de) have slightly extended the .pcemurc
+functionality, in order to improve the handling of international key-
+boards. David's code hard-coded the keyboard mapping from XKeyStrings
+to PC scancodes.
+
+I've been adding a .pcemurc section that defines the reverse mapping
+from XKeyStrings to PC scancodes, so it's at the very least possible
+to remap the keyboard to the original US layout even for international
+versions. The syntax for this rules is
+
+ `keymap' <scancode>`='<XKeyString>
+
+This is my personal .pcemurc file, just to illustrate the usage.
+
+bootfile /home/joerg/pcemu/DriveA
+boottype 720
+keymap 12=ß
+keymap 13='
+keymap 21=z
+keymap 26=]
+keymap 27=+
+keymap 39=\
+keymap 40=[
+keymap 41=^
+keymap 43=#
+keymap 44=y
+keymap 53=-
+keymap 86=<
+