home *** CD-ROM | disk | FTP | other *** search
- IBEM is an IBM-PC emulator written to run on any Amiga (earlier versions
- required a 68020/68030 - this new version will work on ANY processor,
- though there is an optimised version for 020/030s included)
-
- This is the demonstration version. As a demonstration there is a
- limit on the Hard Disk size of 2MB. There is also a time limit,
- which allows the program to run only for 15 minutes, at which time it
- will exit. Only one floppy disk can be used with the emulator. None
- of these restrictions apply for the complete version.
-
- ====================================================================
-
- IBeM Package Version 1.05
- -----------------------------
-
- Description:
-
- This software package is an IBM PC-XT emulator for the Amiga.
- Unlike transformer which will only run on a 68000, this emulator
- has been designed to work only with any Amiga. This emulator runs
- under AmigaDOS as a task and runs on its own screen in its own
- window. Your Amiga is still free to perform other tasks while the
- emulator is running.
-
- Setting up IBeM to run takes a little time, please read this file
- before trying to run IBeM.
-
- Send all bug reports (and money) to:
-
- Mark Tomlinson
- 30 Kirner St
- Christchurch 9
- New Zealand
-
- or e-mail to:
-
- tomlinson@elec.canterbury.ac.nz
-
-
- **************************************************************
-
-
-
- This package consists of the following files:
-
- IBeM - the emulator itself.
- IBeM000 - the 68000/68010 version of the emulator.
- mountlist - a sample mountlist
-
- To be able to read and write IBM formatted disks you will also
- need messydisk.device or CrossDOS.
-
- Messydisk.device is part of a shareware package known as MSH.
- I have been using version 1.30, but other versions eg MSH1.5 may
- also work. (NB: MSH1.30 is the update to MSH1.5).
-
-
- I am also distributing MSH1.30 on the same disk as the emulator,
- but please remember that I did not write it, and the money you
- send to me for the emulator does not pay for MSH. If you wish to
- send the developer of MSH payment, please look in the MSH
- directory for his address.
-
-
-
-
- **************************************************************
-
-
- Hardware required:
- ------------------
-
- For the 020/030 version:
- ------------------------
-
- An Amiga with a 68020/68030 (or 68040?) and a minimum of 2MB of
- fast ram. This version will not work with the 68000. The reason
- for requiring so much memory is that the emulator allocates a
- whole 1Meg for the IBM's address space. A math co-processor is
- not required, but later versions of the Emulator may use one to
- emulate an 8087. IBeM makes no use of the MMU so it will work on
- 68020 boards which don't include MMU's.
-
- The 020 version is known not to work on early GVP accelerator
- boards, but a PAL (that's a logic array, not a display mode)
- upgrade is available from the manufacturer. The reason for not
- working is that the emulator writes words at odd boundaries
- (since 8088's can do this), and while this is valid for 68020 and
- 68030 processors, the logic on the accelerator board must also
- support it. As no extra hardware is required for this function
- (except for different contents in the PAL), its omission is
- simply an oversight of the developer.
-
- For the 68000/68010 version:
- ----------------------------
-
- Any Amiga computer. This emulator will also run on 68020/030
- processors, but the version made specifically for these processors
- is more optimal and will run faster. If you have a GVP
- accelerator board which does not run the 020/030 version, then
- you can still run the 68000 version.
-
- This version does not require as much ram to run as the 020/030
- version - it will run on a 1M machine. A3000 owners who have
- only 1M fast mem and 1M chip will also be able to use this
- version.
-
- **************************************************************
-
-
- Emulation:
- ----------
-
- Currently the emulator supports the full 8088 instruction set,
- (don't be confused by system information programs that say that
- it is a V20 - the extra V20 instructions are not yet, but may
- shortly be, emulated).
-
- A CGA style screen with text and colour graphics is supported.
- Full four page 80 column text or 8 page 40 column text are
- supported, as well as 4 colour lo-res and 2 colour hi-res display
- modes. Flashing mode is not supported, use of this mode results
- in a high intensity background colour.
-
- There is no sound, serial port or maths coprocessor emulated as
- yet (See update.txt for parallel port emulation). The
- development of these functions will depend on the amount of
- support this product gets.
-
- Most of the BIOS functions are implemented as illegal
- instructions which are then emulated by the Amiga. There are no
- IBM ROM's buried inside the code.
-
-
- **************************************************************
-
-
- Disks for use under the emulator.
- ---------------------------------
-
- You will need to create a mountlist entry for all the disk drives
- that you wish to use under the emulator. The minimum is a single
- floppy (don't expect to be able to run ROM BASIC).
-
- These entries are searched for in the devs:mountlist file. The
- drives must be named (in upper case) IBMA:, IBMB:, and IBMC:.
- Only two floppies and one harddisk (drive C) are supported. The
- fields which the emulator uses are:
- BlocksPerTrack
- Surfaces
- HighCyl
- LowCyl
- StartCyl
- DosType
- Device
- Unit
- Flags
-
- All of these except for Flags are required, any extras are
- ignored by the emulator. The DosType field is used for
- identifying the drive type. It should be set to one of the
- following:
- DosType = 1 5.25" 360K drive
- 2 5.25" 1.2M drive
- 3 3.5" 720K drive
- 4 3.5" 1.44M drive
-
- The Flags is passed directly to the device driver. Normally
- this is not used, but may have to be set to 1 for 5.25" disks
- (= TDF_ALLOW_NON_3_5).
-
- Since extra fields are ignored by the Emultor, it is possible,
- simply by adding in a FileSystem, to be able to mount IBMA: and
- use it under AmigaDOS (as MSH was intended to be used), and also
- have it available under the emulator.
-
- The device *must* support reading into fast ram. Trackdisk
- Device does not no this, but messydisk.device does. (Also,
- CrossDOS's mfm.device, which is the equivalent to messdisk.device
- uses fast ram for buffers). I have yet to see a hard disk which
- will not run into fast ram.
-
- Don't expect to be able to read 1.44 Meg disks in the Amiga's
- internal floppy drive. I don't even know that a 5.25" drive will
- give you a true 360K disk under messydisk.device. The drive
- types 1.2M and 1.44M will only be possible if you somehow connect
- an IBM style controller to your machine and write a device driver
- for it. It is probably possible to make a mount list entry which
- will allow you to format 880K amiga-readable MS-DOS file-system
- disks. For this and other weird size drives, you will need to
- use DRIVER.SYS in order to format them on them emulator.
-
- For hard disks the DosType field is ignored. To create an IBM
- hard disk partition on the same drive as your Amiga partition,
- just set the HighCyl and LowCyl values such that the two do not
- overlap. If this means adjusting the size of your Amiga
- partition, you will have to back up your Amiga disk, change the
- disk's size (with prep or whatever software has been supplied for
- this) allowing room for the IBM's partition. Partitions of over
- 32 Megabytes are valid, but these will have to be partitioned
- under FDISK when you run the emulator unless you try running DOS
- 4.0.
-
- In any case, after the mountlist entry is set correctly, you will
- need to boot MS-DOS from the floppy, run FDISK (which will
- re-boot the emulator), and then run FORMAT.
-
- Low-level formatting of harddisks is best done from the Amiga.
-
-
- Special Note for CrossDOS users.
- --------------------------------
-
- CrossDOS can be used to allow you to read your hard disk
- partition under AmigaDOS. MSH is also supposed to be capable of
- this, but I had no success with it. To use it, you will need to
- create another mountlist entry. Since, when you format your
- harddisk, a partition table is created, you have to point
- CrossDOS past this and at the beginning of the actual C
- partition. The C partition starts on the next Track (*not*
- Cylinder) of the volume. To specify the next cylinder, you need
- to fake the mountlist entry. Specify only one Surface, and set
- the LowCyl = (lowcyl for IBMC: * actual number of heads) + 1.
- Also set HighCyl to (highcyl for IBMC: * heads + (heads - 1)).
- You should then be able to mount this and read your harddisk
- files directly, without even running IBeM.
-
-
- **************************************************************
-
- Running the Emulator:
- ---------------------
-
- To start the emulator, simply mount all the drives you wish to
- use, and then run IBeM. It should print the messages "Using
- device IBMx:" as it finds them in the dos device list. If you
- get the error message "No bootable disk's found", then you either
- haven't mounted the disks first, or else don't have an MS-DOS
- disk in the drive.
-
- Since mounting the drives is always necessary, a script file
- called "run-ibm" mounts the drives and starts the emulator
- (returning to the CLI).
-
- To quit the emulator at any time, simply press ctrl-alt-del. The
- emulator will also quit if it encounters an illegal instruction
- while executing 8088 code (similar to the Amiga's GURU). If this
- happens, the emulator will report the address where the error
- occured.
-
- A command line option exists only for the 68000 version for amount
- of memory to use. The amount specified should be a multiple of
- 64K and a maximum of 704K. (eg typing "IBeM000 640" will emulate
- a standard 640K ibm).
-
-
- **************************************************************
-
-
- Technical Notes:
- ----------------
-
- As stated above, illegal instructions are used to emulate the
- BIOS routines. If you are using a debugger and come upon an
- instruction with hex code DB, just step over it, most debuggers
- will cope with this.
-
- The timer interrupt (18.20... times per second), is derived from
- the VBLANK frequency. This means that the interrupts do not
- occur at regular intervals, but rather 2 or 3 VBlanks on a PAL
- system, or 3 or 4 VBlanks on an NTSC system. The average time
- between ticks comes out right, but individual interrupts do not
- occur at regular intervals. Also - if you change modes between
- NTSC and PAL, you can expect to get your clock running faster or
- slower.
-
- The cursor is a sprite. If you use a mouse blanker which
- actually kills all sprites, then the cursor will disappear as
- well.
-
- Since IBM's don't know how to wait for an event, the processor
- is kept busy at all times (even in the BIOS function "wait for
- keypress"). To allow other tasks to be run at the same time, the
- emulator automatically switches its task priority to -20. This
- means that any processor hungry applications which are running
- will lock out the emulator unless they too are set to a priority
- of -20 (to get sharing of the processor). Editors, CLI's,
- calculators, etc, impact very little on the emulators
- performance.
-
- Since it is easy to lock out the emulator from the CPU (with any
- other task), the emulator can get behind with its timer
- interrupts. If this happens for less than 5 seconds it will
- recover however, a timer interrupt will occur every VBLank until
- the time has caught up. This can be seen as a fast cursor flash.
- Time will be lost however if the emulator is held off the CPU for
- more than about 5 seconds (256 VBlanks).
-
- MS-DOS only sees the part of the disk which is stated in the
- mountlist. It only knows about the part in the range LowCyl to
- HighCyl. When the emulator writes to track 0 this gets
- translated to write physically at cylinder LowCyl. So even if
- you have a partition on your hard drive between cylinders 415 to
- 612, FDISK will think you have a drive with 148 cylinders,
- starting from 0.
-
-
-
- **************************************************************
-
-
- Known Bugs:
- -----------
-
- Conditional branches which are at the end of the code segment and
- have a positive displacement will not branch to the beginning of
- the code segment as they are supposed to. This was done for
- speed. Short jumps do behave correctly however. I have yet to
- see some software which this causes a problem. Also, code which
- runs past the end of the code segment will not jump back to the
- beginning of the segment.
-
-