home *** CD-ROM | disk | FTP | other *** search
- This is a quick overview of my CP/M emulator for Unix. I apologize if
- it isn't completely up to date as the program is still evolving.
-
- The system decodes most of the Z80 instruction set. mostly the I/O is
- not implemented. Whenever the PC is >= 0xfec0 it executes a return no
- matter what is in RAM at that location. Before calling the routine for
- each instruction I look at the PC and end the program if it is zero or
- perform a BDOS function if it is 0xfec0 or BIOS if it is >= 0xff00. Since
- the emulator ignores the contents of memory as far as instruction decoding
- is concerned, The system has the interesting property of being able to use
- all of memory except the first 0x100 bytes for user programs by putting the
- stack at 0xfffe. In fact the default stack when a program is run is set
- to 0xfff0.
-
- I use Unix commands to simulate some CP/M commands such as DIR, REN, TYPE
- and handle things such as SAVE internally. I use the Unix file system for
- drives. The user defines Unix directories to CP/M drive mappings. This
- allows CP/M to use the same file system as the Unix but does force CP/M
- conventions on the file names such as upper case, must have 1 and only 1
- period, etc. It is easy to handle though since one can always link files
- as necessary, even from CP/M since I also include a '!' command to do Unix
- commands from within CP/M.
-
- Programs that use IN and OUT opcodes will fail. All I/O must go through
- the BDOS or the BIOS. The user can set up the following devices: Screen
- (CON out), keyboard (CON in), RDR, PUN and LST. The default for screen
- and keyboard is stdout and stdin. The user can set up Unix files for any
- of these devices. The file of course can be an actual file, a device or even
- a pipe to a command, even another CP/M command that has the keyboard reading
- from the same pipe.
-
- Mostly I tried for speed except where speedup would depend on the program
- running on a specific processor. The main part of the decoding module is
- a 256 entry switch table with sub-switches for the Z80 extensions.
-
- It's not quite finished yet but I am running simple programs with it now.
- What would be nice would be some sort of test suite. Anyone know of any?
-
- As for copyright, if you use it say where you got it and send me any fixes
- or enhancements if you feel like it. It's free and you get what you pay
- for. Don't blame me if it breaks anything or doesn't do what you expect.
- (In case it isn't obvious I am not a lia^H^Hawyer.)
-
- D'Arcy J.M. Cain
- UUCP: darcy@druid
-
-