All the Executor source as-is from the subversion tree it was last worked on.

This commit is contained in:
Clifford T. Matthews committed 2008-10-05 21:48:37 -06:00
commit 3183eb6ea0
2517 files changed
+441747

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+648
View File
@@ -0,0 +1,648 @@
NOTE: This file was written by an Executor user to help other Executor
users solve common problems. ARDI has edited it slightly, but left it
essentially unchanged. If you're not a DOS user, not all of this
information will apply but you still may find some useful information
in it. Enjoy!
Version 2.
Updated December 20th, 1995
Executor/DOS experimental (pre-beta) version 1.99p8
GETTING STARTED WITH EXECUTOR
-----------------------------
"A bug is an undocumented feature.
A bug becomes a feature by documenting it."
The author of this document had no previous knowledge about Macintosh
software and architecture before buying Executor. PC experience in
abundance but totally blank about the Mac world. Executor was bought
to fill this hole and fully lived up to its expectations.
Although Executor can be used without any previous Macintosh knowledge
(proof that this unique selling point for a Mac still holds true)
there are some facts that would have helped the author. Some of these
are described below; perhaps they will help you.
The original Macintosh was introduced in 1984 with the now famous 1984
Big Brother advertisements. It was followed by an enormous range of
machines. The original Motorola 68000 processor (comparable to an
8086) was followed by the 68020 (eq. 80286), 68030 (386DX) and 68040
(486SX/DX). Last year Apple shifted its machines to RISC architecture
and now uses a Motorola/IBM developed PowerPC processor. Apple has
implemented an emulator within its operating system so that all 680x0
applications still can be run on a PowerPC.
Executor emulates a 68LC040, which is a 68040 without a floating point
processor (the "LC" stands for "low cost").
(An interesting sidenote: ARDI's 68LC040 emulator for the PC is faster
than Apple's 68LC040 emulator for PowerPC's. Mat Hostetter, part of ARDI's
team, wrote the emulator and really should bring it to the market as a
separate product.)
Most of the Mac's success was not caused by its hardware but by its
software. The Mac was one of the very first systems using a Graphical
User Interface. It is this GUI that Executor emulates.
The Macintosh operating system comes with the strange name of
'System'. It has had a number of releases comparable to MS-DOS; it is
now in its 7th life and like a cat, it was its last; future versions
are called MacOS. Although System 7 added a lot of new features,
Executor fully emulates a Mac running System 6.0.7. In the current
experimental versions (1.99x) of Executor, some emulation of System 7
functionality is included. It is ARDI's intention to make it possible some
day that you will be able to use Apple's System 7.5 on top of Executor.
Like Windows, System supports applications by giving them an
environment to run in. Interaction between the user and System is done
with a program called Finder; comparable to Program Manager within
Windows. It is Finder that generates the metaphors of folders,
desktop, trash can and others. It is Finder that starts
applications. With Finder the user can rename, copy and delete files
and folders.
The original Finder enabled the user to run one application at the
time, MultiFinder, introduced with System 6, made it possible to start
several applications. Executor is a single-program-at-a-time type of
emulator.
Apple is known for its furious legal attempts to protect the look-and-feel
of its products (and lost most cases). Therefore ARDI has developed its own
Finder substitute, called Browser (ARDI once suggested 'Loser') which is
integrated with Executor. In previous versions of Executor, the HFS_XFer
program, was used to copy, delete and rename files and folders.
System needs a harddisk with a number of pre-defined folders, one of
which is the System Folder. In it you will find a file called 'System'
which contains most of the Mac's operating System. On a real Mac also
the file 'Finder' will be found in this folder. The System Folder is
present on Executor's file system and there you will find Browser.
Executor by default loads Browser when you start Executor; if you don't
want that start Executor with the -nobrowser option.
ARDI's System file is not compatible with Apple's. If you try to use
a Macintosh and replace Apple's System file with ARDI's, your
Macintosh will crash. If you try to run Executor using Apple's System
file instead of ARDI's, Executor will crash.
This implies that although Executor emulates a Mac very well the first
impression is that it looks different because it lacks the important
Finder interface. Instead Executor either pops up a dialogue box that you
can use to tell it which program to start (-nobrowser), or it presents
the Finder substitute Browser. There are a number of ways to disable Finder
on a real Mac too, which saves a little memory.
Browser has a band under the menu bar with icons of commonly used
applications and directories and other objects. This band is known as
the "hot band". You can drag objects into and out of this band. When you
double click on a directory or volume, a window with icons for all the files
in the directory will appear. You can drag files from one window to another
to move or copy them. To delete a file, you must select it and choose
delete; there is no trash can.
Double clicking runs an application. The band has six buttons on it
which allow you to choose which kind of objects are displayed in the
hot band (applications, documents, volumes, directories, fonts, or
desk accesories). Also the capability to format disks is included.
Executor cannot format a totally unformatted disk, but it can imprint
a blank Macintosh filesystem on a high-density disk which already
contains a low-level Mac or PC format.
In a separate chapter below, you will find a more detailed description
of Browser.
Since the Mac is meant to be used for graphical applications it uses a
number of scalable fonts. These are stored in the 'System' file using
a tool called FONT/DA Mover when using System 6. Under System 7 one
can just copy a font in the System Folder and it will be recognised.
FONT/DA Mover is Apple copyrighted software. With Browser one can
simply drag a font to the font "hot band", restart Executor and it will
appear within applications. (The necessity to restart of Executor will
be gone in future versions.)
On a Mac, files are arranged in folders, the equivalent of MS-DOS
directories. Folders can be nested and contain icons for programs
and/or data files. A remarkable feature of Finder is the alias. An
alias is a copy of an application's icon that can be used to create
groups of objects. It is Apple's first effort towards object
orientation. Changing the properties of an icon also changes them of
the alias, contrary to within Windows (even within Windows 95!).
Since Executor comes without Finder, and doesn't recognize aliases, it
might occur that you open a folder on a floppy or CD-ROM finding
nothing in it. On a Mac there might have been aliases in those
folders.
A difference that a Windows user notices is that on a Mac the menu is
always on the topline of the display where in Windows the active menu
is always within the current window. A Windows desktop with a number
of applications running shows a lot of menus which can lead to
confusion. Windows indicates the current menu by giving it a different
colour. On a Mac selecting a window automatically makes its associated
menu appear on the topline. Since Executor can only run one
application at a time this should not be much of a problem.
RUNNING SOFTWARE WITH EXECUTOR
------------------------------
Now that you have installed Executor on your system and you have
verified that it runs, you are ready to start some of the demo
software that comes with Executor. These are freeware, shareware or
fully working demos of commercial packages. The files are located in
the EXDEMOS.HFV DOS volume and appear after installation in an
Executor volume in the 'demos' and 'games' folders. Also Executor
comes with some useful utilities included in the EXSYSTEM.HFV DOS
volume that appear in the 'utils' folder on your System drive.
After you have started some of these programs you probably want to do
something useful with Executor. This means getting hold of the
software that you need and properly installing it.
Before you start installing software there are a couple of issues that
have to be understood. First you need to have set aside a volume that
can hold the files you need. Such a volume can be created with MAKEHFV
as stated in the appropriate section of this manual. Remember that
unless you to tell Executor otherwise, your newly created volume has
to have a filename ending with ".hfv" and has to be placed in the same
directory as the other ".hfv" files are (the default is
\EXECUTOR.
The program that creates the new volume is called "makehfv" (make
hfv). It takes three arguments, the name of the DOS file that the
volume will reside in, the name of the volume as it will be seen by
any program running under Executor and the size in bytes that the
volume will take up. The suffixes "k" and "m" can be used to specify
the size in kilobytes (1024 byte chunks) or megabytes (1024 * 1024 =
1048576 byte chunks).
For example, to create a 10 megabyte volume, in the DOS file
newvol.hfv, with the internal name NewVolume, you would execute this
command:
C:\EXECUTOR> makehfv newvol.hfv NewVolume 10m
When you next start Executor and cycle through your available drives
by clicking the 'DRIVE' button you will have an empty volume called
NewVolume ready to take your files.
Also remember that Executor is a complex piece of software. ARDI has
beta-tested this product thoroughly but the enormous diversity of PC
hardware coupled with the complexity of emulating a totally different
system on top of this hardware means that crashes are possible. When
Executor or your PC dies, unpredictable things might happen. It is
recommended that so-called write-behind-cacheing be disabled when you
use Executor. Most systems nowadays use Microsoft's SMARTDRV which has
write-behind-cacheing turned off by default only when you use MS-DOS
6.2 If you have another MS-DOS version or when you have turned it on
please change the line that starts SMARTDRV to :
SMARTDRV C
instead of
SMARTDRV C+
As always, it is best to back up your data frequently.
GETTING HOLD OF SOFTWARE
------------------------
Apple's Macintosh is the second most widespread architecture in the
world. Software for the Mac is as freely available as for the PC
platform. There are however a few distinctions. Commercial software
tends to be more expensive and sometimes updated versions arrive later
than their MS-Windows counterparts. It used to be the other way around
but this is the way it is.
An important issue to note here is that Executor, due to constraints
in PC hardware, can only read Macintosh HD (SuperDrive) floppy-disks
and Macintosh formatted CD-ROMs (more on CD-ROMs later on). SuperDrive
floppy disks are physically identical to PC HD diskettes (all of them
have a second hole on the other side of the write-protect notch). As
on the PC they have a capacity of 1.4 Mb.
These disks share the same "low-level" format, but have a different
"filesystem format" than they do on a PC. i.e. the physical format is
the same as on a PC; it is just the logical format that differs.
Macintosh commercial software is available from most shops. If you
have no possibility to use a 'real' Macintosh then be sure that the
disks you get are HD ones. Otherwise let the dealer convert them.
Since not all software will run under Executor it is advisable to
arrange with your dealer to test the software first.
Especially look for explicit statements whether the software needs
System 7. If an application *requires* System 7, then it is unlikely
to work under the current implementation (1.99x) of Executor. At this
moment most of the work of System 7 emulation has been done but the
bottle-neck are Apple extensions like QuickTime and Apple Events.
Good software for the Macintosh can be found with most magazines
(again verify that they come with HD disks), on all commercial
networks and on the Internet.
When you want to use software on a Macintosh CD-ROM, your CD-ROM drive
will appear automatically within Executor if your CD-ROM controlling
software conforms to Microsoft's MSCDEX or Adaptec's ASPI standard.
When you insert a Macintosh formatted HD floppy or CD-ROM these will
be automatically recognised when you start Executor. If you insert
them when Executor has already started, you must press
Shift-left-Alt-2 before they will be seen.
Due to size constraints on a floppy, most of the time the software on
it will be in a compressed format. This is comparable to the way it is
done on the PC where ZIP, ARC, ARJ and LZH are some of the used
extensions to denote a compressed file. Amazingly the number of
different compression systems used on Macs is as large as on the PC
and all of them are different between the two platforms. Yes, there is
a ZIP utility for the Mac but no available software seems to be
compressed with it.
Although the naming convention for Mac files is much less constraining
than the one we are familiar with on the PC (name of 8 characters and
an extension of 3), most of the time the name of a compressed file
ends with a decimal point followed by a three character extension.
Mind that the name of a Mac file when found on a system that has a
more constraining naming convention (like MS-DOS) might not be able to
tell you what sort of format it is in. However, when you transform it
to Mac format (more on this later) its name will explain more. For
instance you might find a file called ACMECALC.BIN on CompuServe
which, when it ends up on your Executor volume, suddenly gets called
'Acme Super Calculator.sea'.
The most used compression systems and their extensions are:
.pit ; PackIt compressed file
.sit ; Stuffit compressed file
.cpt ; Compact Pro compressed file
.dde ; DiskDoubler compressed file
.sea ; One of the above but self-extracting
For the first four files you will need the mentioned shareware
programs to extract (decompress) them. The full Stuffit package can
also handle the other formats. Compact Pro is found in the 'utils'
folder on your System disk. Stuffit is excellent shareware and there
is a freeware Stuffit Expander program that as its name suggests can
only expand a compressed file (expanding again being another word for
decompress, foo). DiskDoubler is less used than the others, mainly
because it is commercial software. There is a free expander though.
A .sea file basically consists of a compressed file with an integrated
expander. When you start an .sea file it will expand itself
automatically.
Of the mentioned decompressors there are a number of different
versions to be found; not all of these work with Executor. Also some
self-extracting compressed files tend to kill Executor. When this
happens there is a simple but effective trick. Try to get hold of a
utility called 'DeSEA'. It does what its name implies; it turns a .sea
file in a .sit,.pit or .cpt file that then can be decompressed using
one of the mentioned tools.
Excellent information on the various compression schemes, .hqx and
BinHex formats can be found in a FAQ (Frequently Asked Questions)
document on datacommunication, available via anonymous ftp on the
Internet from:
site : sumex-aim.stanford.edu
file : /info-mac/comm/info/comp-sys-mac-comm-faq.txt
When the file is decompressed, you are ready to roll. Mind that a lot
of software that comes on CDs take the capacity of a CD to the maximum
by using audio and video clips (called QuickTime). These cannot be
used in Executor. A program with such a restriction will probably
complain that you need System 7; the version of the Mac's operating
system that supports video.
GETTING SOFTWARE USING YOUR PC
------------------------------
The above is all well but you might be tempted to get software for
Executor by downloading files from bulletin boards and/or networks
like CompuServe, America Online or the Internet. This is possible
though a bit more complicated since the PC is not a Mac (you might
have noticed this; ARDI lives because of it).
In the PC world every file on your harddisk comes as one logical
collection of bytes, with a start, a middle and an end. On the Mac
every file has two components (honest!), these are called the
data-fork and the resource-fork. The data-fork contains the data that
is unformatted, or at least not formatted in a way that the actual
Macintosh OS itself understands. The resource-fork contains data that
is formatted in a way that the Macintosh OS understands and hence can
be used to specify parameters for various Macintosh OS routines, for
instance icons. Every file has both a data-fork and a resource-fork
although either, (or even both) can be empty.
To enable distribution of Macintosh files on a non-Macintosh medium
like most bulletin-boards, a number of people, Apple amongst them,
found a way to combine the two forks in one file. Two of these systems
are known as BinHex. BinHex 4 is often known as "HQX" and it combines
both forks into a single ASCII file. BinHex 5 is often known as
"MacBinary" and it combines both forks into a single BINARY file.
Since Executor at this moment does not support serial I/O all
downloading of Mac files has to be done using your favourite PC
communication program and your PC modem. Downloaded files will thus
appear on your PC's harddisk.
If the file's description from where you downloaded it or its name on
your PC's harddisk indicates that is in HQX format (for instance
because its name contains the .hqx extension) there is an extra step
to take.
A file with the .hqx extension has been constructed using version 4.0
of BinHex. This program enables binary files to be transported on
networks that otherwise would have problems with them by translating
them in 7-bit ASCII text. You can try this by using your favourite DOS
editor on such a file; it will contain seemingly endless lists of
numbers; the human-readable equivalent of machine-code.
The supplied BinHex 5.0 program converts a.hqx file automatically to
its original format. There is also an excellent shareware program
called DeHQX that also gives a lot of information in the process.
To get a file converted so that it appears on an Executor Mac volume,
start the program BinHex in the 'utils' folder on your System disk. In
its file menu you will find a Download -> Application choice. It will
pop-up a dialogue box where you can specify the file on your PC volume
after which it will ask you where to store the result. When all goes
well you will find some form of Mac file on the destination
disk.
If a file is not HQX'ed, BinHex effectively only copies the file and creates
the two forks from the one file. To find out whether BinHex needs to take
the extra step it looks for the phrase :
(This file must be converted with BinHex 4.0)
at the beginning of the file.
CompuServe has its own Macintosh File Finder that enables you to find
your favourite Mac file amongst the odd 20,000 it stores. On the
Internet a lot of Mac software can be found. Look for the SimTel ftp
archives. Another good archive is the HENSA archive of Lancaster
University, UK.
To summarise; when you have downloaded a Mac file it will appear to be
a normal PC file on your PC. Run BinHex to write it to an Executor
volume. BinHex will automatically de-HQX the file. If required run a
de-compression program.
If Executor 'touches' a file on a PC volume it immediately creates a
pseudo resource fork for that file which is a separate file with a
percent-sign as its first character. This can confuse BinHex and other
programs, and a 'touched' file might not be shown anymore, unless you
turn off the "TEXT filter" within the 'File' menu of BinHex 5.0, so
that all files are displayed instead of just "TEXT" ones.
In such a case simply delete the resource-fork file.
This problem is actually a result of a bug in Executor and hopefully
the bug will be fixed soon.
A special word on text files. When you download a text file that was
produced on a Mac you will experience that a number of DOS editors
have problems with the fact that the Mac only uses a LF character at
the end of every line, where the PC uses a CR, LF pair. Luckily the
MS-DOS EDIT command can read both formats. When you open a Mac style
text document, change one character and then write it back, EDIT will
convert it to PC text format. There exists a shareware/freeware MS-DOS
program called MAC2PC80.EXE that does this all automatically.
If you do not want to store a compressed text file on an Executor
volume but want to read it using a PC editor then there are shareware
PC programs, like UNSTUFF.EXE (free!) that can decompress such a file
on the PC. Aladdin Systems (makers of StuffIt) have now released a very
nice Windows version of Stuffit Expander that handles almost every
Macintosh file format.
Apart from files being BinHex'ed and/or compressed, more complex
programs come in the form of an 'Installer'; a program that installs
the software so that it is automatically copied to the proper
folders. An installer most of the time also decompresses its
components and scatters them around in for instance your System
Folder.
The problem here is that most of the time installers are complex
programs that might confuse Executor. Many installers were written by
Apple and have special information about the insides of Macintoshes
that the authors of Executor did not have (Executor was written using
"clean room" techniques -- no Apple ROMs or System files were
disassembled). In such a case you will have to install the program on
a real Mac and then transfer the installed program to an Executor
volume. Afterward, if it is not publicly redistributable, delete the
program from the Mac. It is illegal not to.
On the issue of files in your System Folder; this folder acts as the
notorious WIN.INI file under Windows, i.e. it is regarded as every
application's liberty to litter it. A separate folder 'Preferences'
most of the time holds files that store items like your highest score
in your favourite game. Since Executor's System drive is limited in
size it pays to occasionally delete unwanted files from the System
Folder. Be careful with the file 'Printer' though. This file is
required for printing in Executor.
Note: The size of Executor's System drive is not really limited in size.
If you run out of space you have to create a second, larger System
volume with MAKEHFV. Do not call the DOS volume EXSYSTEM.HFV but
choose a different name like EXSYS1.HFV making sure that its
logical volume name remains System.
The proper MAKEHFV command line would be :
MAKEHFV EXSYS1.HFV System 2M
to create a 2 Mb. System drive. Copy all files from the first
drive to the second drive using Browser. Be careful; both
drives are called System - the empty one should be the
destination. When everything has been copied delete EXSYSTEM.HFV
and rename EXSYS1.HFV to EXSYSTEM.HFV.
Transferring a file from a Mac to Executor larger than can be fitted
on one floppy is not so easy. Try compressing it first. If it still
doesn't fit you can use a serial cable and transfer it using two
terminal programs, or try to get your hands on a program that cuts
archives in parts. (StuffIt Lite 3.x can do this.)
FILE CREATORS AND FILE TYPES
----------------------------
On a PC an application most of the time uses the 3-character extension
of files to denote that it created them. For instance an application
named ACMECALC might create files with an .ACM extension. Also the
extension might indicate the type of file like .TXT denoting a text
file. This way of doing things has lead to a lot of confusion since
nobody is regulating the list of used extensions, and three letters
doesn't lend itself to enough logical combinations.
On the Mac the above is regulated. The Mac uses a system where every
file has a 4-character 'creator' and a 4-character 'type'. These are
distributed by Apple - a list can be obtained of valid ones. (This
does not mean that everybody follows the rules of course.) The creator
field is used twofold. Firstly it tells a Mac's Finder what
application to load when the user double-clicks the icon of a
data-file. Secondly it enables an application to only show files in
dialogue boxes that it can handle.
Normally you do not have to worry about the above, but sometimes a
file that you think belongs to a certain application cannot be opened
by it. The adventurous can then change the type and or creator using
a tool like File Kit or from within Browser. From the number of available
programs that can change types and creators we might conclude that the
confusion on the Mac platform as to which file belongs to who is as
confusing as it is on PCs.
USEFUL PROGRAMS
---------------
Apart from the already mentioned utilities there are a couple more
that you probably might want to look for. Get a simple text processor
like UpWord to edit an occasional file or use the supplied Tex-Edit
program. To view the contents of most word-processor documents get Quill.
To make sure that the files you download are not virus-ridden get
Disinfectant. There are only an odd twenty viruses around but still
you might be unlucky. Because Executor has slightly different
"internals" than a Macintosh does, it is slightly less susceptible to
virus infection than a real Mac but better not take chances.
Easy Errors tells you what an error number generated by an application
actually means. (Who ever said a Mac was userfriendly?)
Get File Kit to have a look at file attributes like creation date and
length.
Shareware and/or freeware programming languages are not that freely
available as on the PC. There are a number of freeware 'C' compilers,
ChipMunk Basic 3.21 is a simple Basic interpreter.
HyperCard from Claris runs fairly well, but some stacks will not work
under HyperCard under Executor. Supercard created stacks also usually
work, although some aspects of Supercard's use of color can confuse
the experimental versions of Executor that support color.
If you want to learn how to program a Mac be prepared for a shock. To
fully understand how the Mac works you need to master a large and very
expensive series of books from Apple, called Inside Macintosh. Apple
has released a CD version of these books though.
Just like the Windows environment just knowing a programming language
is not enough to write a nice looking application. On a Mac one needs
to master the equivalent of the Windows API, called the Toolbox.
LIMITATIONS ON WHAT WILL RUN UNDER EXECUTOR
-------------------------------------------
On a real Mac there is a large number of ways to interact with the
machine. Apart from starting normal programs, there are
- Desk Accessories; these are handy programs that can be found
in the Apple Menu.
- Extensions; these extend the Mac's Operating System, for
instance for video.
- Control Panels; enable a Mac user to control various settings
of his/her system.
- Inits; small programs that a Mac loads for special
devices and/or functionality.
Apart from some Desk Accessories, Executor at this moment cannot run any
of the above.
TRANSFERRING DATA BETWEEN MAC APPLICATIONS AND DOS COUNTERPARTS
---------------------------------------------------------------
You can manipulate data within applications on both platforms if they
can read the applicable format, i.e. a Word for Windows 5.x document
can be edited using Word 5 with Executor.
If you let an application produce print output then Executor puts it
in a file EXECOUTx.PS within the directory where you started Executor.
The 'x' is a number from 0-9. This output is a proper PostScript file that
can be printed on a printer that supports PostScript. Otherwise you can use
the freeware package GhostScript to view or print them under MS-DOS.
Browser
-------
Recent 1.99x experimental pre-beta versions come with ARDI's Finder
substitute, called Browser. When you normally start Executor (i.e.
without the -nobrowser) option, Executor will automatically load Browser
and will return to Browser when you exit an application.
Browser presents the following:
- a normal Macintosh style menu
- 6 pictograms
- 2 buttons
- a 'hot-band' containing icons
From the menu you can for instance create folders, print files or
eject a disk. CLicking on the pictograms selects the appropriate
'hot-band'. There are 'hot-bands' for drives, applications, fonts,
DAs, folders and text files. The button 'Sort', sorts the current
'hot-band' and 'Help' gives a short explanation of the various
'hot-bands'.
A word about disk drives here. Executor will try to figure out what drives
are available when it loads. In a standard setup, the drives 'hot-band' will
show the System: drive, your .HFV volumes and your c:/ drive. If you have
a CD-ROM player available it will show up as a d:/ if MSCDEX is running.
On a Macintosh the sense hardware detects that a removable drive is
inserted and its icon will show up automatically. This is different from the
PC architecture. This means that Executor does not detect automatically when
you insert a Mac CD-ROM or diskette. To have Executor detect such a medium
select 'Check for disk' from the 'File' menu within Browser, or press
Alt-Shift-2. If the medium is recognized it will show up on the drives
'hot-band'. Also you have to manually eject a drive from the 'File' menu.
Be careful not to phyiscally eject a floppy when Executor is not finished
with it; buffers might not be flushed. Always use 'Eject' or Alt-Shift-2.
It is possible to drag DAs to the DA 'hot-band' and have Executor put them
in the Apple menu. Not all DAs work however. Be careful to have a copy of
your EXSYSTEM.HFV file. Some DAs crash Executor and weird things
might happen.
Browser can format Macintosh 1.44 Mb. diskettes. For this to work properly
first check that 'Direct Disk Access' is selected. (Press Alt-Shift-5 to
select the Preferences Panel.)
Bibliography
------------
Suggested further reading if you want to know more.
Title Author Content
---------------------------------------------------------------------------
Insanely Great Steven Levy History of the Mac
Technical Introduction Apple THE Source
to the Macintosh Family
comp.sys.mac.comm FAQ D.L. Oppenheimer Everything on
datacommunication,
compression and
file formats.
Executor's FAQ ARDI When all else fails
All company names and products mentioned are copyrighted and trademarks
of their respective owners.
Feel free to contact me : Ernst J. Oud
Compuserve : 100265,3601
Internet : ernstoud@euronet.nl
+116
View File
@@ -0,0 +1,116 @@
PLEASE READ THIS DOCUMENT CAREFULLY. IT'S IMPORTANT TO RECOGNIZE THAT
SIMPLY CHANGING A FILE TYPE WILL USUALLY NOT HELP.
This is a list of some of the more common Macintosh file types and
creators. You can use Executor's Get Info function (under the File
menu, or Cmd-I for a keyboard shortcut) to set the file type and
creator, but please read the rest of this description before you do.
This is most useful when working with certain types of downloaded
files such as StuffIt archives, or when first importing a
cross-platform file such as a TIFF which was created on a PC.
***********************************************************************
* NOTE: This will not help you if the file that you transferred had *
* important information in its resource fork. For instance, *
* applications will not work when you transfer just the data fork and *
* then set the type and creator, because applications contain CPU *
* instructions in 'CODE' resources, which are not stored in the data *
* fork. *
***********************************************************************
Some of the entries in this table are known to *not* require any
information in the resource fork. StuffIt archives, Compact Pro
archives, and Word formatted data are three examples, but some of the
document types listed herein may indeed require information in the
resource fork. In those cases, simply changing creator and type is
unlikely to be beneficial.
In general, it's best to transfer Mac files either by having Executor
read Mac formatted media (like floppies, zip drives or hard disks), or
by first converting the Mac files into HQX format, since it is the
most portable format. If you're a power user and you can make use of
the information in this table, that's great, but if not, it's less
error prone to just always use HQX as an intermediate form.
Note too that Executor directly recognizes only a few file types.
Others which do not have their own resource fork icons will be
displayed with the "unknown" icon -- a blue circle with a red question
mark. This does not necessarily mean that there is anything wrong
with the file; it only means that Executor does not have a
predetermined icon for it.
FILE CREATOR TYPE
4th Dimension data file 4D02 data
4th Dimension filter file 4D02 FILT
4th Dimension index file 4D02 INDX
4th Dimension settings file 4D02 SETT
Calendar File data file MACS ZSYS
Canvas data file DAD! defd
Clipboard File MACS CLIP
Compact Pro archives CPCT PACT
Desk Accessories DMOV DFIL
Dollars & Sense data file DAS! DASD
Double Helix formatted data HELX HEAP
Double Helix help file HELX HEXT
Double Helix text-only data file HELX TEXT
Edit data file EDIT TEXT
Excel chart XCEL MCBN
Excel text-only data file XCEL TEXT
Excel help file XCEL XHLP
Excel worksheet XCEL XLBN
Excel resume file XCEL XLIN
Excel macro file XCEL XLPG
Excel plot file XCEL XLPG
FileMaker data file NUTS NUTD
FileMaker Plus data file FMKR FMKD
Filevision data file TELO PICB
Font File DMOV FFIL
FullPaint painting PANT PNTG
HyperCard stack WILD STAK
Lightspeed C library file KAHL LIB!
Lightspeed C project file KAHL PROJ
Lightspeed C source code text KAHL TEXT
MacDraft drawing MACD DRWG
MacDraw drawing MDRW DRWG
MacDraw picture file MDRW PICT
MacDraw II drawing MDPL DRWG
MacDraw II picture file MDPL PICT
MacPaint painting MPNT PNTG
MacProject project data file MPRJ MPRD
MacWrite text-only file MACA TEXT
MacWrite formatted text file MACA WORD
MacWrite II text-only file MWII TEXT
MacWrite II formatted text file MWII WORD
Multiplan spread sheet PLAN MPBN
Multiplan text-only data PLAN TEXT
Omnis 3 data file OM$$ OM$D
Omnis 3 library file OM$$ OM$L
PageMaker formatted data ALDU PBPT
PowerPoint slides PPNT SLDS
QUED text file QUED TEXT
ReadySetGo data file MART RSGF
Red Ryder stuff file RRYD PDAT
Red Ryder macro file RRYD RRMC
Red Ryder data file RRYD RRRS
Reflex database file SING SSDB
Reflex report file SING SSRF
SuperPaint painting SPNT PNTG
Switcher data file SWIT SWIT
Think Tank data TANK TEXT
Video Works data MMVW DATA
Video Works data MMVW VWSC
Word dictionary MSWD DICT
Word hyphenation file MSWD WPRD
Word glossary WORD GLOS
Word file WORD PCOD
Word text-only file WORD TEXT
Word formatted data WORD WDBN
Works resume PSIP AWDT
Works spreadsheet PSIP AWSS
Works formatted text PSIP AWWP
Works text-only data PSIP TEXT
Write Now data nX^n nX^d
Write Now data nX^n nX^w
+60
View File
@@ -0,0 +1,60 @@
In the early days of the Macintosh, programs were small enough to fit
on a single floppy. The MacOS of the time was simple enough that
installation of new software on a Macintosh consisted of inserting the
floppy with the new software and using drag and drop to copy the
application from the floppy to your hard disk.
As software grew and the MacOS became more complex, software
developers began requiring users to run "installers" to install new
software. These installers often used file compression so that more
software could be put on fewer floppies. The increasing complexity of
the MacOS also made the installation procedure more tricky, since
certain files would need to be copied into the System Folder and the
machine might need to be rebooted after the System Folder was
modified. Installers did all the tricky work. Now, with software very
large and the MacOS very complex, installers are common even with
shareware and other software that you might download from the Internet
or a bulletin board.
Unfortunately, because of the complexity of the MacOS, some installers
use intimate knowledge of the MacOS to work their wonders. This use of
intimate knowledge makes it hard for emulators such as Executor to
work properly with these rogue installers. In fact, the first release
of Apple's own "Macintosh Application Environment" (MAE) couldn't run
some versions of Apple's own installer -- the problem is that bad.
Currently, installers based on that older version of Apple's Installer
will fail under Executor. The most popular program that uses Apple's
old installer is Word 5.
With a little creativity, you can usually install these programs into
Executor anyway. Here are some of the methods past users have used:
I. Stuffit Expander, an extremely flexible freeware utility which is
included with Executor, may be able to unpack the files just as the
actual installer would. You can then move them into their proper
places by hand. Often there will be a file or folder which will need
to be moved into the System Folder. Executor users have successfully
installed Microsoft Word using Stuffit Expander.
II. Install the program on a real Macintosh, and move the installed
program to Executor. You can do this file-by-file in a pinch, but
it's usually quicker and easier to compress the installed program
using Stuffit or Compact Pro. Don't forget to add to the archive
anything which the installer might have put into the Macintosh's
System Folder.
Once you have the archive, you can move it to Executor and use
Stuffit Expander to unpack it there. Again, anything which goes in
the System Folder on a real Macintosh should also go in the System
Folder under Executor.
III. Install the program on a real Macintosh which is equipped with an
external Macintosh hard drive. Disconnect the external drive and
connect it to your PC. Use Executor to run the program from the
external drive, or to copy it from there to your PC drive.
ARDI has been making progress with installers, as has Apple. In
general, newer installers are much more likely to work with Executor.
+102
View File
@@ -0,0 +1,102 @@
INSTALLATION UNDER OS/2 WARP
1.) Insert the Executor CD into the CD-ROM drive.
2.) Run the installation program. You can do this from a DOS prompt
by typing
D:\install
(assuming that your CD-ROM drive is your D: drive), or you can do it
from the OS/2 desktop:
Right-click the CD object on the Launch Pad, click the arrow
next to Open, and choose Icon view.
A window should pop up showing all the disk's program objects.
Double-click on INSTALL.EXE to start the installation program.
3.) Change the destination directory for installation if you do not
want to install in C:\EXECUTOR. Press the number 2 when you are ready
to begin the installation.
4.) When the DOS installation program has finished, double-click
OS/2's Add Programs object in the System Setup folder. Press the
enter key to have OS/2 detect the new Executor program automatically.
If autodetection fails, click on "Yes" to search for and select the
new program for the desktop.
5.) Select C:\EXECUTOR\EXECUTOR.EXE and click OK. There will then be
a new folder on your desktop containing the Executor object.
CONFIGURATION UNDER OS/2 WARP
The default DOS settings OS/2 assigns for you may work perfectly. If
Executor behaves strangely, though, then you might want to adjust the
settings by hand. To do this, right-click on the Executor object and
click Settings. Then click the notebook's Session tab and click the
DOS settings button. Click OK, and the list of DOS settings should be
displayed.
Here are some settings other OS/2 users have used with success:
DOS_HIGH On
DPMI_DOS_API ENABLED
DPMI_MEMORY_LIMIT 16
EMS_MEMORY_LIMIT 0
HW_ROM_TO_RAM On
HW_TIMER On
INT_DURING_IO On
VIDEO_8514A_XGA_IOTRAP Off
VIDEO_FASTPASTE Off
VIDEO_MODE_RESTRICTION NONE
VIDEO_ONDEMAND_MEMORY On
VIDEO_RETRACE_EMULATION Off
VIDEO_ROM_EMULATION Off
VIDEO_SWITCH_NOTIFICATION Off
VIDEO_WINDOW_REFRESH 1
XMS_HANDLES 0
XMS_MEMORY_LIMIT 0
You don't need to find an "OK" or "Save" button to save these
settings. The changes take place as soon as you adjust them.
Note that increasing the DPMI memory limit does not automatically
increase the memory Executor uses. You must also use Executor's
"-memory" command line switch, to tell Executor that more memory is
available.
If after adjusting the settings you still have trouble running
Executor/DOS under OS/2, write to support@ardi.com with your serial
number and your system details. We'll try to figure out a combination
of settings which will work for you.
Some OS/2 Executor users like to start Executor from a batch file
instead of starting Executor directly, because on some systems it
doesn't show up in the task list unless started indirectly. If you
want to do this, just make a text file called "executor.bat" which
contains the following two lines:
@echo off
executor.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
Then point your desktop object to this batch file rather than to
executor.exe itself. If you want to run another program to enhance
Executor, such as UniVBE (a universal video driver which speeds up
graphics performance), you can add its command to the Executor batch
file as well:
@echo off
univbe
executor.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
--
Many thanks to Charles Hunter and Pat Gunn for their help with this
file.
+206
View File
@@ -0,0 +1,206 @@
This file is designed to help you solve the problems most common to
beginning Executor users. Use the search feature of your favorite
editor to jump directly to the sections which interest you.
I. Executor won't install
II. Executor won't start
III. Registration problems
IV. Problems reading your Mac floppies or CDs
V. Problems using mouse or keyboard
VI. Your Macintosh program won't install
VII. Your Macintosh program won't run
This file assumes that you know how to use Unix-style command line
switches. If you don't, see the "Command Line Switches" section of
the minimanual for instructions.
If your problem is not addressed here, consult the FAQ (Frequently Asked
Questions) file. If it does not contain a solution, call +1 505 766 9115
or write to support@ardi.com with details of the problem.
---------------------------------------------------------------------
COMMON PROBLEMS AND SOLUTIONS
---------------------------------------------------------------------
I. Executor won't install
A. Is there enough disk space free? Executor needs 10 MB of hard
drive space for installation.
B. If the installation seemed to proceed OK but you don't see an
icon, this is normal. See os_tips.txt or w3x_tips.txt for
instructions on how to create an icon for OS/2 or Windows 3.x.
---------------------------------------------------------------------
II. Executor won't start
A. If you are using OS/2, Windows 3.x, or Windows 95, check out the
os2_tips.txt, w3x_tips.txt, or w95_tips.txt files for
configuration advice.
B. Executor/DOS users -- do you have a DOS mouse driver loaded and
enabled? Since Executor/DOS is a DOS-native program, it needs a
DOS mouse driver.
C. Are you running under Windows NT? If so, you need to start from
a FULL-SCREEN DOS prompt rather than a windowed prompt. You may
also need to use the "-vga" switch. Executor has trouble with
SuperVGA video modes on some NT machines.
D. When all else fails, try starting in so-called desperation mode,
with the following command line:
executor -desperate
This combines the effects of a variety of troubleshooting
switches, to disable (among other things) Executor's usual
probing of hardware. It runs Executor in a minimalist mode. If
this succeeds, then you can begin eliminating switches one by
one until you find the problem area.
---------------------------------------------------------------------
III. Registration problems
A. If the "OK" button doesn't work, it's almost always caused by a
typo in the serial number or key. Check your typing, and use
all lower-case letters. If you used previous versions of
Executor, note that you must use the new key which came with
Executor 2 and not your old key.
B. Linux and NEXTSTEP users, are you still running as user root?
You must be superuser (root) to register.
C. If Executor tells you that it's registering, but then asks you
to register again when you start it again, it may mean that you
have somehow installed two different copies of Executor in two
different locations. Make sure you have only one copy on your
hard drive.
D. Are you trying to run Executor from the CD? The expanded
version of Executor is there in case you want to replace
specific files from it -- YOU CAN NOT RUN Executor DIRECTLY FROM
THE CD. You must install Executor on your hard drive in order
to run it.
---------------------------------------------------------------------
IV. Problems reading your Mac floppies or CDs
A. Are your floppies high-density (1.44 MB) floppies? PCs cannot
read Macintosh 400K or 800K floppies. In fact, PCs cannot read
high-density floppies if they've been formatted in 800k format,
so even if your floppy says "HD" on it, if it was created on an
old Mac (like an SE), it may be in 800K format. We apologize for
the inconvenience this creates, but it's a physical problem that
would take special hardware to resolve.
B. Did you select Check for Disk from the File menu and scroll
along the hotband to view all the Volumes icons?
C. If you were using another disk earlier, did you eject it via the
File menu before removing it physically? Macintoshes do all
their floppy ejection via hardware that's controlled by
software. That means that Macintosh programs always know when a
floppy has been ejected. As such, Executor requires you to
explicitly tell it before you remove a floppy from the drive.
If you just pop a floppy out and put a new one in, Executor will
get confused and quite possibly crash, or even worse, corrupt
data on the floppy.
D. Is your CD a hybrid, with both DOS and Macintosh sections?
There are different ways that hybrids can be made. Some hybrids
won't work with Executor.
E. If you are running under Windows '95, and Executor is having
trouble reading your Mac CDs, you will have to tell Windows '95 to
run MSCDEX (which is what Executor uses to see CDs). Simply remove
the
rem - By Windows 95 Setup
portion from fthe mscdex line in your C:\AUTOEXEC.BAT file. You
will also need to edit your C:\CONFIG.SYS file and make sure the
CD-ROM driver is also not commented out. See w95_tips.txt for
details.
CD-ROM problems are so common, that the file "CDINFO.TXT" should be
installed in your Executor directory, and it contains even more
information about MSCDEX.
---------------------------------------------------------------------
V. Problems using mouse or keyboard
A. If you are using a non-United States keyboard, type
executor -keyboards
(plural) to get a list of keyboard maps Executor can support.
Start with the line
executor -keyboard keyboard_map_name
(with "keyboard" singular) to invoke that keyboard map.
If this does not work properly, you may need to set your system
software to American keyboard mode and then try the "-keyboard"
switch again.
B. Does your right alt key work as a second command key instead of
as an option key? Linux users, check your .Xdefaults file to
make sure that the right_alt line is not commented out. It is
commented out by default in many distributions.
C. Are you running on a laptop with only one alt key? There is yet
no easy way to change another key to function as an option key.
You will have to use the pull-down menus to access these
functions.
---------------------------------------------------------------------
VI. Your Macintosh program won't install
A. Does the installer fail to work? The older version of Apple's
Apple Installer will not run under Executor. See the
install.txt file for instructions on installing these programs.
B. Does the program complain that there is not enough disk space to
install? Make a new Macintosh volume with the makehfv program
(see "Making HFV Files" in the minimanual), and install the
program there.
---------------------------------------------------------------------
VII. Your Macintosh program won't run
A. Are you installing a program? The older version of Apple's
Apple Installer will not run under Executor. See the
install.txt file for instructions on installing these programs.
A. Does the program need System 7.5 or QuickTime? Is it an INIT or
CDEV? Does it require a modem or a network? Executor does not
currently support those Macintosh features, and so such programs
won't run.
B. Does it need System 7? Use the "-system" command line switch to
start Executor in System 7 mode. Then save your preferences in
the Preferences Panel (see "Command Line Switches" and "The
Preferences Panel" in the minimanual).
C. Try allocating more memory with the "-memory" switch.
Insufficient memory can cause a variety of strange errors.
D. Try setting Executor to "Pretend" sound (see "The Preferences
Panel" in the minimanual), or turning Executor's and the
program's sound completely off. Sound support is new, and some
programs will work better without it.
---------------------------------------------------------------------
+97
View File
@@ -0,0 +1,97 @@
INSTALLATION UNDER WINDOWS 3.X
1.) Insert the Executor CD in the CD-ROM drive, either before or after
you start Windows.
2.) Choose Run from the File menu. Type
D:\install.exe
at the prompt (assuming that your CD-ROM drive is your D:\ drive), and
click OK or press Return.
3.) The installer will bring up a short menu of choices. Press 2 to
install in the default C:\EXECUTOR, or 1 to change the destination
directory.
4.) Installation will begin. After it has finished, you will be
returned to the Windows desktop.
5.) Because Executor is native to DOS, it does not automatically
create its own Windows icon. To create an icon for it, open the
program group where you would like to put Executor (the Accessories
group is a common choice).
6.) Choose New from the File menu. Choose Program Item (unless you
want to give Executor its own separate group, in which case you should
choose Program Group first).
7.) Enter this information in the first three fields:
Executor
(for Program Description)
executor
(for Command Line)
C:\EXECUTOR
(for Working Directory, unless you changed it during installation)
Leave "none" in the fourth field. Click OK or press Enter to accept
Windows' default icon, or click Change Icon to choose your own icon
and then click OK. If you ever want to change these settings, you can
do so by selecting the Executor icon and choosing Properties from the
File menu.
CONFIGURATION UNDER WINDOWS 3.X
Executor should be run in 386-enhanced mode with virtual memory turned
on. This should be the default if you have a 386 or better. To
double-check, open the Control Panel from the Main program group and
double-click on the 386-Enhanced icon. This will display several
settings and buttons, including a button to show your virtual memory
settings.
Executor requires a mouse and a mouse driver. Many people assume that
they have a mouse driver because their mouse functions under Windows,
but actually Windows has a built-in mouse driver. You will need a DOS
mouse driver loaded and installed in DOS in order to run Executor.
For most people, Executor will work fine without any additional
configuration. If something strange happens, or if you want to run
Executor with command line switches (see "Command Line Switches" in
the minimanual), then you may want to create a Program Information
File with the Windows PIF Editor.
The PIF Editor is found in the Main program group. Double-click to
start it, and enter the following information in the fields:
EXECUTOR.EXE
(for Program Filename)
Executor
(for Window Title)
(leave Optional Parameters blank for now)
C:\EXECUTOR
(for Start-up Directory, unless you changed it during installation)
Save the file as "EXECUTOR.PIF". Then, change the properties of your
Executor icon (as above) to point it to EXECUTOR.PIF instead of
C:\EXECUTOR\EXECUTOR.EXE.
Often, creating a PIF is all that's needed to get a DOS-native program
running under Windows. If you still have trouble, then you can adjust
the PIF further.
You may want to add some command line switches to the Optional
Paramenters line. See the problems.txt file for advice on which
switches to use for troubleshooting, or type "executor -help | more"
at a C:\EXECUTOR> prompt to get a complete list of switches with a
brief description of each. You may also want to un-check the PIF's
"Close Window on Exit" box, so that any error messages Executor may be
giving you will be retained on the screen.
+108
View File
@@ -0,0 +1,108 @@
INSTALLATION UNDER WINDOWS '95
1.) Start your computer and insert the Executor CD in the CD-ROM
drive.
2.) Run the installation program. You can do this from a DOS prompt
by typing
D:\install
(assuming that your CD-ROM drive is your D: drive), or you can do it
from within Windows '95:
Click the Start button, point to Settings, and click Control
Panel on the Settings menu which pops up. Double-click on
Add/Remove Programs. Click the Install button.
Click Next to have Windows '95 detect the installation program
automatically. If it correctly detects INSTALL.EXE on the CD,
then click Finish to have Windows '95 run the installer for
you.
3.) Change the destination directory for installation if you do not
want to install in C:\EXECUTOR. Press the number 2 when you are ready
to begin the installation.
CONFIGURATION UNDER WINDOWS '95
CD-ROM DRIVE
If you want to use Macintosh CDs with Executor, you'll need to make
what might be a minor adjustment to the way Windows '95 treats CDs.
If it's present, find and remove the
rem - By Windows 95 Setup
portion from the mscdex line in your AUTOEXEC.BAT file. You will also
need to edit your CONFIG.SYS file and make sure the CD-ROM driver is
also not commented out.
If this works, this will tell Windows '95 to use the Microsoft CD-ROM
Extensions -- the standward way to perceive CDs -- instead of the
unique Windows '95 way.
If you can't find a "rem - By Windows 95 Setup" command, or if you're
having trouble modifying your CONFIG.SYS file to load your CD-ROM
driver, please read the file "CDINFO.TXT" that is installed in your
Executor directory when Executor is installed. It explains the nature
of the problem and gives you more information on how you might be able
to solve it.
SYSTEM SETTINGS
To examine the system settings, right-click on the Executor icon and
then select properties. Windows '95 will usually select the correct
settings for your system automatically, but if you're having any
trouble then you may want to try adjusting them by hand.
The Memory tab;
Conventional Memory-Auto
Initial Environment-Auto
Expanded(EMS)memory-None
Extended(XMS)memory-None
MS-DOS protected-mode(DPMI)memory-12288
Normally, the DPMI setting would be left on Auto as well. You will
only want to change it if you are having any trouble with memory. Try
running
executor -info
from a DOS prompt to see how much free DPMI Executor is detecting. If
it isn't 2/3 (or more) of your total RAM, then Windows '95 may not be
assigning enough DPMI automatically.
12288 is a safe DPMI setting for a computer with 16 MB RAM or more.
If you have less, the DPMI setting should probably be less as well.
6144 would be a good setting for a computer with 8 MB RAM.
The Misc tab:
Disable Allow screen saver if you have problems with Executor
freezing. Also set Idle sensitivity all the way to Low.
The Screen tab:
Set Executor to run Full-screen if Executor starts minimized. Because
it is a DOS-native program, Executor cannot be run in a window.
Windows '95 should maximize Executor automatically, but if it fails
then turning on Full-screen should fix the problem.
The Program tab:
Close on Exit should be selected normally, so that you don't have to
close the window by hand after you're finished using Executor. If you
are having any problems, you may want to deselect this so that
Executor's DOS window remains visible after Executor itself has
exited. Then you'll be able to see any error messages which Executor
may be printing upon exit.
+648
View File
@@ -0,0 +1,648 @@
NOTE: This file was written by an Executor user to help other Executor
users solve common problems. ARDI has edited it slightly, but left it
essentially unchanged. If you're not a DOS user, not all of this
information will apply but you still may find some useful information
in it. Enjoy!
Version 2.
Updated December 20th, 1995
Executor/DOS experimental (pre-beta) version 1.99p8
GETTING STARTED WITH EXECUTOR
-----------------------------
"A bug is an undocumented feature.
A bug becomes a feature by documenting it."
The author of this document had no previous knowledge about Macintosh
software and architecture before buying Executor. PC experience in
abundance but totally blank about the Mac world. Executor was bought
to fill this hole and fully lived up to its expectations.
Although Executor can be used without any previous Macintosh knowledge
(proof that this unique selling point for a Mac still holds true)
there are some facts that would have helped the author. Some of these
are described below; perhaps they will help you.
The original Macintosh was introduced in 1984 with the now famous 1984
Big Brother advertisements. It was followed by an enormous range of
machines. The original Motorola 68000 processor (comparable to an
8086) was followed by the 68020 (eq. 80286), 68030 (386DX) and 68040
(486SX/DX). Last year Apple shifted its machines to RISC architecture
and now uses a Motorola/IBM developed PowerPC processor. Apple has
implemented an emulator within its operating system so that all 680x0
applications still can be run on a PowerPC.
Executor emulates a 68LC040, which is a 68040 without a floating point
processor (the "LC" stands for "low cost").
(An interesting sidenote: ARDI's 68LC040 emulator for the PC is faster
than Apple's 68LC040 emulator for PowerPC's. Mat Hostetter, part of ARDI's
team, wrote the emulator and really should bring it to the market as a
separate product.)
Most of the Mac's success was not caused by its hardware but by its
software. The Mac was one of the very first systems using a Graphical
User Interface. It is this GUI that Executor emulates.
The Macintosh operating system comes with the strange name of
'System'. It has had a number of releases comparable to MS-DOS; it is
now in its 7th life and like a cat, it was its last; future versions
are called MacOS. Although System 7 added a lot of new features,
Executor fully emulates a Mac running System 6.0.7. In the current
experimental versions (1.99x) of Executor, some emulation of System 7
functionality is included. It is ARDI's intention to make it possible some
day that you will be able to use Apple's System 7.5 on top of Executor.
Like Windows, System supports applications by giving them an
environment to run in. Interaction between the user and System is done
with a program called Finder; comparable to Program Manager within
Windows. It is Finder that generates the metaphors of folders,
desktop, trash can and others. It is Finder that starts
applications. With Finder the user can rename, copy and delete files
and folders.
The original Finder enabled the user to run one application at the
time, MultiFinder, introduced with System 6, made it possible to start
several applications. Executor is a single-program-at-a-time type of
emulator.
Apple is known for its furious legal attempts to protect the look-and-feel
of its products (and lost most cases). Therefore ARDI has developed its own
Finder substitute, called Browser (ARDI once suggested 'Loser') which is
integrated with Executor. In previous versions of Executor, the HFS_XFer
program, was used to copy, delete and rename files and folders.
System needs a harddisk with a number of pre-defined folders, one of
which is the System Folder. In it you will find a file called 'System'
which contains most of the Mac's operating System. On a real Mac also
the file 'Finder' will be found in this folder. The System Folder is
present on Executor's file system and there you will find Browser.
Executor by default loads Browser when you start Executor; if you don't
want that start Executor with the -nobrowser option.
ARDI's System file is not compatible with Apple's. If you try to use
a Macintosh and replace Apple's System file with ARDI's, your
Macintosh will crash. If you try to run Executor using Apple's System
file instead of ARDI's, Executor will crash.
This implies that although Executor emulates a Mac very well the first
impression is that it looks different because it lacks the important
Finder interface. Instead Executor either pops up a dialogue box that you
can use to tell it which program to start (-nobrowser), or it presents
the Finder substitute Browser. There are a number of ways to disable Finder
on a real Mac too, which saves a little memory.
Browser has a band under the menu bar with icons of commonly used
applications and directories and other objects. This band is known as
the "hot band". You can drag objects into and out of this band. When you
double click on a directory or volume, a window with icons for all the files
in the directory will appear. You can drag files from one window to another
to move or copy them. To delete a file, you must select it and choose
delete; there is no trash can.
Double clicking runs an application. The band has six buttons on it
which allow you to choose which kind of objects are displayed in the
hot band (applications, documents, volumes, directories, fonts, or
desk accesories). Also the capability to format disks is included.
Executor cannot format a totally unformatted disk, but it can imprint
a blank Macintosh filesystem on a high-density disk which already
contains a low-level Mac or PC format.
In a separate chapter below, you will find a more detailed description
of Browser.
Since the Mac is meant to be used for graphical applications it uses a
number of scalable fonts. These are stored in the 'System' file using
a tool called FONT/DA Mover when using System 6. Under System 7 one
can just copy a font in the System Folder and it will be recognised.
FONT/DA Mover is Apple copyrighted software. With Browser one can
simply drag a font to the font "hot band", restart Executor and it will
appear within applications. (The necessity to restart of Executor will
be gone in future versions.)
On a Mac, files are arranged in folders, the equivalent of MS-DOS
directories. Folders can be nested and contain icons for programs
and/or data files. A remarkable feature of Finder is the alias. An
alias is a copy of an application's icon that can be used to create
groups of objects. It is Apple's first effort towards object
orientation. Changing the properties of an icon also changes them of
the alias, contrary to within Windows (even within Windows 95!).
Since Executor comes without Finder, and doesn't recognize aliases, it
might occur that you open a folder on a floppy or CD-ROM finding
nothing in it. On a Mac there might have been aliases in those
folders.
A difference that a Windows user notices is that on a Mac the menu is
always on the topline of the display where in Windows the active menu
is always within the current window. A Windows desktop with a number
of applications running shows a lot of menus which can lead to
confusion. Windows indicates the current menu by giving it a different
colour. On a Mac selecting a window automatically makes its associated
menu appear on the topline. Since Executor can only run one
application at a time this should not be much of a problem.
RUNNING SOFTWARE WITH EXECUTOR
------------------------------
Now that you have installed Executor on your system and you have
verified that it runs, you are ready to start some of the demo
software that comes with Executor. These are freeware, shareware or
fully working demos of commercial packages. The files are located in
the EXDEMOS.HFV DOS volume and appear after installation in an
Executor volume in the 'demos' and 'games' folders. Also Executor
comes with some useful utilities included in the EXSYSTEM.HFV DOS
volume that appear in the 'utils' folder on your System drive.
After you have started some of these programs you probably want to do
something useful with Executor. This means getting hold of the
software that you need and properly installing it.
Before you start installing software there are a couple of issues that
have to be understood. First you need to have set aside a volume that
can hold the files you need. Such a volume can be created with MAKEHFV
as stated in the appropriate section of this manual. Remember that
unless you to tell Executor otherwise, your newly created volume has
to have a filename ending with ".hfv" and has to be placed in the same
directory as the other ".hfv" files are (the default is
\EXECUTOR.
The program that creates the new volume is called "makehfv" (make
hfv). It takes three arguments, the name of the DOS file that the
volume will reside in, the name of the volume as it will be seen by
any program running under Executor and the size in bytes that the
volume will take up. The suffixes "k" and "m" can be used to specify
the size in kilobytes (1024 byte chunks) or megabytes (1024 * 1024 =
1048576 byte chunks).
For example, to create a 10 megabyte volume, in the DOS file
newvol.hfv, with the internal name NewVolume, you would execute this
command:
C:\EXECUTOR> makehfv newvol.hfv NewVolume 10m
When you next start Executor and cycle through your available drives
by clicking the 'DRIVE' button you will have an empty volume called
NewVolume ready to take your files.
Also remember that Executor is a complex piece of software. ARDI has
beta-tested this product thoroughly but the enormous diversity of PC
hardware coupled with the complexity of emulating a totally different
system on top of this hardware means that crashes are possible. When
Executor or your PC dies, unpredictable things might happen. It is
recommended that so-called write-behind-cacheing be disabled when you
use Executor. Most systems nowadays use Microsoft's SMARTDRV which has
write-behind-cacheing turned off by default only when you use MS-DOS
6.2 If you have another MS-DOS version or when you have turned it on
please change the line that starts SMARTDRV to :
SMARTDRV C
instead of
SMARTDRV C+
As always, it is best to back up your data frequently.
GETTING HOLD OF SOFTWARE
------------------------
Apple's Macintosh is the second most widespread architecture in the
world. Software for the Mac is as freely available as for the PC
platform. There are however a few distinctions. Commercial software
tends to be more expensive and sometimes updated versions arrive later
than their MS-Windows counterparts. It used to be the other way around
but this is the way it is.
An important issue to note here is that Executor, due to constraints
in PC hardware, can only read Macintosh HD (SuperDrive) floppy-disks
and Macintosh formatted CD-ROMs (more on CD-ROMs later on). SuperDrive
floppy disks are physically identical to PC HD diskettes (all of them
have a second hole on the other side of the write-protect notch). As
on the PC they have a capacity of 1.4 Mb.
These disks share the same "low-level" format, but have a different
"filesystem format" than they do on a PC. i.e. the physical format is
the same as on a PC; it is just the logical format that differs.
Macintosh commercial software is available from most shops. If you
have no possibility to use a 'real' Macintosh then be sure that the
disks you get are HD ones. Otherwise let the dealer convert them.
Since not all software will run under Executor it is advisable to
arrange with your dealer to test the software first.
Especially look for explicit statements whether the software needs
System 7. If an application *requires* System 7, then it is unlikely
to work under the current implementation (1.99x) of Executor. At this
moment most of the work of System 7 emulation has been done but the
bottle-neck are Apple extensions like QuickTime and Apple Events.
Good software for the Macintosh can be found with most magazines
(again verify that they come with HD disks), on all commercial
networks and on the Internet.
When you want to use software on a Macintosh CD-ROM, your CD-ROM drive
will appear automatically within Executor if your CD-ROM controlling
software conforms to Microsoft's MSCDEX or Adaptec's ASPI standard.
When you insert a Macintosh formatted HD floppy or CD-ROM these will
be automatically recognised when you start Executor. If you insert
them when Executor has already started, you must press
Shift-left-Alt-2 before they will be seen.
Due to size constraints on a floppy, most of the time the software on
it will be in a compressed format. This is comparable to the way it is
done on the PC where ZIP, ARC, ARJ and LZH are some of the used
extensions to denote a compressed file. Amazingly the number of
different compression systems used on Macs is as large as on the PC
and all of them are different between the two platforms. Yes, there is
a ZIP utility for the Mac but no available software seems to be
compressed with it.
Although the naming convention for Mac files is much less constraining
than the one we are familiar with on the PC (name of 8 characters and
an extension of 3), most of the time the name of a compressed file
ends with a decimal point followed by a three character extension.
Mind that the name of a Mac file when found on a system that has a
more constraining naming convention (like MS-DOS) might not be able to
tell you what sort of format it is in. However, when you transform it
to Mac format (more on this later) its name will explain more. For
instance you might find a file called ACMECALC.BIN on CompuServe
which, when it ends up on your Executor volume, suddenly gets called
'Acme Super Calculator.sea'.
The most used compression systems and their extensions are:
.pit ; PackIt compressed file
.sit ; Stuffit compressed file
.cpt ; Compact Pro compressed file
.dde ; DiskDoubler compressed file
.sea ; One of the above but self-extracting
For the first four files you will need the mentioned shareware
programs to extract (decompress) them. The full Stuffit package can
also handle the other formats. Compact Pro is found in the 'utils'
folder on your System disk. Stuffit is excellent shareware and there
is a freeware Stuffit Expander program that as its name suggests can
only expand a compressed file (expanding again being another word for
decompress, foo). DiskDoubler is less used than the others, mainly
because it is commercial software. There is a free expander though.
A .sea file basically consists of a compressed file with an integrated
expander. When you start an .sea file it will expand itself
automatically.
Of the mentioned decompressors there are a number of different
versions to be found; not all of these work with Executor. Also some
self-extracting compressed files tend to kill Executor. When this
happens there is a simple but effective trick. Try to get hold of a
utility called 'DeSEA'. It does what its name implies; it turns a .sea
file in a .sit,.pit or .cpt file that then can be decompressed using
one of the mentioned tools.
Excellent information on the various compression schemes, .hqx and
BinHex formats can be found in a FAQ (Frequently Asked Questions)
document on datacommunication, available via anonymous ftp on the
Internet from:
site : sumex-aim.stanford.edu
file : /info-mac/comm/info/comp-sys-mac-comm-faq.txt
When the file is decompressed, you are ready to roll. Mind that a lot
of software that comes on CDs take the capacity of a CD to the maximum
by using audio and video clips (called QuickTime). These cannot be
used in Executor. A program with such a restriction will probably
complain that you need System 7; the version of the Mac's operating
system that supports video.
GETTING SOFTWARE USING YOUR PC
------------------------------
The above is all well but you might be tempted to get software for
Executor by downloading files from bulletin boards and/or networks
like CompuServe, America Online or the Internet. This is possible
though a bit more complicated since the PC is not a Mac (you might
have noticed this; ARDI lives because of it).
In the PC world every file on your harddisk comes as one logical
collection of bytes, with a start, a middle and an end. On the Mac
every file has two components (honest!), these are called the
data-fork and the resource-fork. The data-fork contains the data that
is unformatted, or at least not formatted in a way that the actual
Macintosh OS itself understands. The resource-fork contains data that
is formatted in a way that the Macintosh OS understands and hence can
be used to specify parameters for various Macintosh OS routines, for
instance icons. Every file has both a data-fork and a resource-fork
although either, (or even both) can be empty.
To enable distribution of Macintosh files on a non-Macintosh medium
like most bulletin-boards, a number of people, Apple amongst them,
found a way to combine the two forks in one file. Two of these systems
are known as BinHex. BinHex 4 is often known as "HQX" and it combines
both forks into a single ASCII file. BinHex 5 is often known as
"MacBinary" and it combines both forks into a single BINARY file.
Since Executor at this moment does not support serial I/O all
downloading of Mac files has to be done using your favourite PC
communication program and your PC modem. Downloaded files will thus
appear on your PC's harddisk.
If the file's description from where you downloaded it or its name on
your PC's harddisk indicates that is in HQX format (for instance
because its name contains the .hqx extension) there is an extra step
to take.
A file with the .hqx extension has been constructed using version 4.0
of BinHex. This program enables binary files to be transported on
networks that otherwise would have problems with them by translating
them in 7-bit ASCII text. You can try this by using your favourite DOS
editor on such a file; it will contain seemingly endless lists of
numbers; the human-readable equivalent of machine-code.
The supplied BinHex 5.0 program converts a.hqx file automatically to
its original format. There is also an excellent shareware program
called DeHQX that also gives a lot of information in the process.
To get a file converted so that it appears on an Executor Mac volume,
start the program BinHex in the 'utils' folder on your System disk. In
its file menu you will find a Download -> Application choice. It will
pop-up a dialogue box where you can specify the file on your PC volume
after which it will ask you where to store the result. When all goes
well you will find some form of Mac file on the destination
disk.
If a file is not HQX'ed, BinHex effectively only copies the file and creates
the two forks from the one file. To find out whether BinHex needs to take
the extra step it looks for the phrase :
(This file must be converted with BinHex 4.0)
at the beginning of the file.
CompuServe has its own Macintosh File Finder that enables you to find
your favourite Mac file amongst the odd 20,000 it stores. On the
Internet a lot of Mac software can be found. Look for the SimTel ftp
archives. Another good archive is the HENSA archive of Lancaster
University, UK.
To summarise; when you have downloaded a Mac file it will appear to be
a normal PC file on your PC. Run BinHex to write it to an Executor
volume. BinHex will automatically de-HQX the file. If required run a
de-compression program.
If Executor 'touches' a file on a PC volume it immediately creates a
pseudo resource fork for that file which is a separate file with a
percent-sign as its first character. This can confuse BinHex and other
programs, and a 'touched' file might not be shown anymore, unless you
turn off the "TEXT filter" within the 'File' menu of BinHex 5.0, so
that all files are displayed instead of just "TEXT" ones.
In such a case simply delete the resource-fork file.
This problem is actually a result of a bug in Executor and hopefully
the bug will be fixed soon.
A special word on text files. When you download a text file that was
produced on a Mac you will experience that a number of DOS editors
have problems with the fact that the Mac only uses a LF character at
the end of every line, where the PC uses a CR, LF pair. Luckily the
MS-DOS EDIT command can read both formats. When you open a Mac style
text document, change one character and then write it back, EDIT will
convert it to PC text format. There exists a shareware/freeware MS-DOS
program called MAC2PC80.EXE that does this all automatically.
If you do not want to store a compressed text file on an Executor
volume but want to read it using a PC editor then there are shareware
PC programs, like UNSTUFF.EXE (free!) that can decompress such a file
on the PC. Aladdin Systems (makers of StuffIt) have now released a very
nice Windows version of Stuffit Expander that handles almost every
Macintosh file format.
Apart from files being BinHex'ed and/or compressed, more complex
programs come in the form of an 'Installer'; a program that installs
the software so that it is automatically copied to the proper
folders. An installer most of the time also decompresses its
components and scatters them around in for instance your System
Folder.
The problem here is that most of the time installers are complex
programs that might confuse Executor. Many installers were written by
Apple and have special information about the insides of Macintoshes
that the authors of Executor did not have (Executor was written using
"clean room" techniques -- no Apple ROMs or System files were
disassembled). In such a case you will have to install the program on
a real Mac and then transfer the installed program to an Executor
volume. Afterward, if it is not publicly redistributable, delete the
program from the Mac. It is illegal not to.
On the issue of files in your System Folder; this folder acts as the
notorious WIN.INI file under Windows, i.e. it is regarded as every
application's liberty to litter it. A separate folder 'Preferences'
most of the time holds files that store items like your highest score
in your favourite game. Since Executor's System drive is limited in
size it pays to occasionally delete unwanted files from the System
Folder. Be careful with the file 'Printer' though. This file is
required for printing in Executor.
Note: The size of Executor's System drive is not really limited in size.
If you run out of space you have to create a second, larger System
volume with MAKEHFV. Do not call the DOS volume EXSYSTEM.HFV but
choose a different name like EXSYS1.HFV making sure that its
logical volume name remains System.
The proper MAKEHFV command line would be :
MAKEHFV EXSYS1.HFV System 2M
to create a 2 Mb. System drive. Copy all files from the first
drive to the second drive using Browser. Be careful; both
drives are called System - the empty one should be the
destination. When everything has been copied delete EXSYSTEM.HFV
and rename EXSYS1.HFV to EXSYSTEM.HFV.
Transferring a file from a Mac to Executor larger than can be fitted
on one floppy is not so easy. Try compressing it first. If it still
doesn't fit you can use a serial cable and transfer it using two
terminal programs, or try to get your hands on a program that cuts
archives in parts. (StuffIt Lite 3.x can do this.)
FILE CREATORS AND FILE TYPES
----------------------------
On a PC an application most of the time uses the 3-character extension
of files to denote that it created them. For instance an application
named ACMECALC might create files with an .ACM extension. Also the
extension might indicate the type of file like .TXT denoting a text
file. This way of doing things has lead to a lot of confusion since
nobody is regulating the list of used extensions, and three letters
doesn't lend itself to enough logical combinations.
On the Mac the above is regulated. The Mac uses a system where every
file has a 4-character 'creator' and a 4-character 'type'. These are
distributed by Apple - a list can be obtained of valid ones. (This
does not mean that everybody follows the rules of course.) The creator
field is used twofold. Firstly it tells a Mac's Finder what
application to load when the user double-clicks the icon of a
data-file. Secondly it enables an application to only show files in
dialogue boxes that it can handle.
Normally you do not have to worry about the above, but sometimes a
file that you think belongs to a certain application cannot be opened
by it. The adventurous can then change the type and or creator using
a tool like File Kit or from within Browser. From the number of available
programs that can change types and creators we might conclude that the
confusion on the Mac platform as to which file belongs to who is as
confusing as it is on PCs.
USEFUL PROGRAMS
---------------
Apart from the already mentioned utilities there are a couple more
that you probably might want to look for. Get a simple text processor
like UpWord to edit an occasional file or use the supplied Tex-Edit
program. To view the contents of most word-processor documents get Quill.
To make sure that the files you download are not virus-ridden get
Disinfectant. There are only an odd twenty viruses around but still
you might be unlucky. Because Executor has slightly different
"internals" than a Macintosh does, it is slightly less susceptible to
virus infection than a real Mac but better not take chances.
Easy Errors tells you what an error number generated by an application
actually means. (Who ever said a Mac was userfriendly?)
Get File Kit to have a look at file attributes like creation date and
length.
Shareware and/or freeware programming languages are not that freely
available as on the PC. There are a number of freeware 'C' compilers,
ChipMunk Basic 3.21 is a simple Basic interpreter.
HyperCard from Claris runs fairly well, but some stacks will not work
under HyperCard under Executor. Supercard created stacks also usually
work, although some aspects of Supercard's use of color can confuse
the experimental versions of Executor that support color.
If you want to learn how to program a Mac be prepared for a shock. To
fully understand how the Mac works you need to master a large and very
expensive series of books from Apple, called Inside Macintosh. Apple
has released a CD version of these books though.
Just like the Windows environment just knowing a programming language
is not enough to write a nice looking application. On a Mac one needs
to master the equivalent of the Windows API, called the Toolbox.
LIMITATIONS ON WHAT WILL RUN UNDER EXECUTOR
-------------------------------------------
On a real Mac there is a large number of ways to interact with the
machine. Apart from starting normal programs, there are
- Desk Accessories; these are handy programs that can be found
in the Apple Menu.
- Extensions; these extend the Mac's Operating System, for
instance for video.
- Control Panels; enable a Mac user to control various settings
of his/her system.
- Inits; small programs that a Mac loads for special
devices and/or functionality.
Apart from some Desk Accessories, Executor at this moment cannot run any
of the above.
TRANSFERRING DATA BETWEEN MAC APPLICATIONS AND DOS COUNTERPARTS
---------------------------------------------------------------
You can manipulate data within applications on both platforms if they
can read the applicable format, i.e. a Word for Windows 5.x document
can be edited using Word 5 with Executor.
If you let an application produce print output then Executor puts it
in a file EXECOUTx.PS within the directory where you started Executor.
The 'x' is a number from 0-9. This output is a proper PostScript file that
can be printed on a printer that supports PostScript. Otherwise you can use
the freeware package GhostScript to view or print them under MS-DOS.
Browser
-------
Recent 1.99x experimental pre-beta versions come with ARDI's Finder
substitute, called Browser. When you normally start Executor (i.e.
without the -nobrowser) option, Executor will automatically load Browser
and will return to Browser when you exit an application.
Browser presents the following:
- a normal Macintosh style menu
- 6 pictograms
- 2 buttons
- a 'hot-band' containing icons
From the menu you can for instance create folders, print files or
eject a disk. CLicking on the pictograms selects the appropriate
'hot-band'. There are 'hot-bands' for drives, applications, fonts,
DAs, folders and text files. The button 'Sort', sorts the current
'hot-band' and 'Help' gives a short explanation of the various
'hot-bands'.
A word about disk drives here. Executor will try to figure out what drives
are available when it loads. In a standard setup, the drives 'hot-band' will
show the System: drive, your .HFV volumes and your c:/ drive. If you have
a CD-ROM player available it will show up as a d:/ if MSCDEX is running.
On a Macintosh the sense hardware detects that a removable drive is
inserted and its icon will show up automatically. This is different from the
PC architecture. This means that Executor does not detect automatically when
you insert a Mac CD-ROM or diskette. To have Executor detect such a medium
select 'Check for disk' from the 'File' menu within Browser, or press
Alt-Shift-2. If the medium is recognized it will show up on the drives
'hot-band'. Also you have to manually eject a drive from the 'File' menu.
Be careful not to phyiscally eject a floppy when Executor is not finished
with it; buffers might not be flushed. Always use 'Eject' or Alt-Shift-2.
It is possible to drag DAs to the DA 'hot-band' and have Executor put them
in the Apple menu. Not all DAs work however. Be careful to have a copy of
your EXSYSTEM.HFV file. Some DAs crash Executor and weird things
might happen.
Browser can format Macintosh 1.44 Mb. diskettes. For this to work properly
first check that 'Direct Disk Access' is selected. (Press Alt-Shift-5 to
select the Preferences Panel.)
Bibliography
------------
Suggested further reading if you want to know more.
Title Author Content
---------------------------------------------------------------------------
Insanely Great Steven Levy History of the Mac
Technical Introduction Apple THE Source
to the Macintosh Family
comp.sys.mac.comm FAQ D.L. Oppenheimer Everything on
datacommunication,
compression and
file formats.
Executor's FAQ ARDI When all else fails
All company names and products mentioned are copyrighted and trademarks
of their respective owners.
Feel free to contact me : Ernst J. Oud
Compuserve : 100265,3601
Internet : ernstoud@euronet.nl
+1085
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 5.0 %%For: (Marcia Edgar) () %%Title: (ARDI Logo EPS for Cliff) %%CreationDate: (11/2/98) (4:43 PM) %%BoundingBox: 38 221 570 594 %%HiResBoundingBox: 38.5513 221 569.4487 594 %%DocumentProcessColors: Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.0 0 %AI5_FileFormat 1.1 %AI3_ColorUsage: Black&White %%CMYKCustomColor: 1 0 0.55 0 (Aqua) %%+ 1 0.5 0 0 (Blue) %%+ 0.5 0.4 0.3 0 (Blue Gray) %%+ 0.8 0.05 0 0 (Blue Sky) %%+ 0.5 0.85 1 0 (Brown) %%+ 1 0.9 0.1 0 (Dark Blue) %%+ 1 0.55 1 0 (Forest Green) %%+ 0.05 0.2 0.95 0 (Gold) %%+ 0.75 0.05 1 0 (Grass Green) %%+ 0 0.45 1 0 (Orange) %%+ 0.15 1 1 0 (Red) %%+ 0.45 0.9 0 0 (Violet) %AI3_TemplateBox: 306 396 306 396 %AI3_TileBox: 8 40 600 784 %AI3_DocumentPreview: Macintosh_ColorPic %AI5_ArtSize: 611 791 %AI5_RulerUnits: 0 %AI5_ArtFlags: 1 0 0 1 0 0 1 1 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: -150 612 -1 792 533 18 1 1 2 40 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:8 40 %%AI3_PaperRect:-8 783 603 -8 %%AI3_Margin:8 -39 -8 8 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 25 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { 0 6 packedarray } bind def /findrgbcustomcolor { 1 5 packedarray } bind def /setcustomcolor { exch aload pop 0 eq { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } ifelse } def } if /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? level2? { gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore add add add 4 eq } { 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and } ifelse put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.1 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 24 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 15 dict def } if Adobe_ColorImage_AI6_Vars begin /channelcount 0 def /sourceLine truncated
+1
View File
@@ -0,0 +1 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta name=Title content="Executor Internals"> <meta name=Keywords content=""> <meta http-equiv=Content-Type content="text/html; charset=macintosh"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="MacHack_96_files/filelist.xml"> <title>Executor Internals</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Subject>How to efficiently run Mac Programs on PCs</o:Subject> <o:Author>ctm + mat</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>ctm</o:LastAuthor> <o:Revision>2</o:Revision> <o:TotalTime>1</o:TotalTime> <o:Created>2002-02-27T23:21:00Z</o:Created> <o:LastSaved>2002-02-27T23:21:00Z</o:LastSaved> <o:Pages>3</o:Pages> <o:Words>7412</o:Words> <o:Characters>42250</o:Characters> <o:Company>ardi</o:Company> <o:Lines>352</o:Lines> <o:Paragraphs>84</o:Paragraphs> <o:CharactersWithSpaces>51885</o:CharactersWithSpaces> <o:Version>9.2511</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings> <o:PixelsPerInch>800x600</o:PixelsPerInch> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:PrintFractionalCharacterWidth/> <w:HyphenationZone>0</w:HyphenationZone> <w:DoNotHyphenateCaps/> <w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing> <w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery> <w:UseMarginsForDrawingGridOrigin/> <w:DoNotShadeFormData/> <w:Compatibility> <w:OrigWordTableRules/> <w:NoLeading/> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:SpacingInWholePoints/> <w:ShowBreaksInFrames/> <w:SuppressTopSpacing/> <w:SuppressTopSpacingMac5/> <w:MWSmallCaps/> <w:UsePrinterMetrics/> <w:WW6BorderRules/> <w:FootnoteLayoutLikeWW8/> <w:ShapeLayoutLikeWW8/> <w:AlignTablesRowByRow/> <w:ForgetLastTabAlignment/> <w:DoNotUseHTMLParagraphAutoSpacing/> <w:LayoutRawTableWidth/> <w:LayoutTableRowsApart/> <w:UseWord97LineBreakingRules/> </w:Compatibility> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Times New Roman"; panose-1:0 2 2 6 3 5 4 5 2 3; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:Arial; panose-1:0 2 11 6 4 2 2 2 2 2; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:"Courier New"; panose-1:0 2 7 3 9 2 2 5 2 4; mso-font-charset:77; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:Geneva; panose-1:0 2 11 5 3 3 4 4 4 2; mso-font-charset:77; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:"Tms Rmn"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:77; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:Helv; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:77; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:"MS Serif"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:77; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:"MS Sans Serif"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:77; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:"New York"; panose-1:0 2 2 5 2 6 3 5 6 2; mso-font-charset:77; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:System; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:77; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:50331648 0 0 0 1 0;} @font-face {font-family:Wingdings; panose-1:0 5 2 1 2 1 8 4 8 7; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 16 0 0 -2147483648 0;} @font-face {font-family:"FE Roman font face"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fiLine truncated
Binary file not shown.
File diff suppressed because it is too large. Load diff
+36174
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f16\fnil Palatino;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}}{\colortbl\red0\green0\blue0; \red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\tqc\tx4320\tqr\tx8640 \f16\fs20 \sbasedon0\snext243 footer;}{\s245 \f16\fs18\up6 \sbasedon0\snext0 footnote reference;}{\s246 \f16\fs20 \sbasedon0\snext246 footnote text;}{\s250\li720 \f16\fs20\ul \sbasedon0\snext0 heading 6;}{\s251\li720 \b\f16\fs20 \sbasedon0\snext0 heading 5;}{\s252\li360 \f16\ul \sbasedon0\snext0 heading 4;}{\s253\li360\sb120 \b\f16 \sbasedon0\snext0 heading 3;}{\s254\sb120 \b\f21 \sbasedon0\snext0 heading 2;}{\s255\sb240 \b\f21\ul \sbasedon0\snext0 heading 1;}{\f16\fs20 \sbasedon222\snext0 Normal;}}{\info{\title Executor Internals}{\subject How to efficiently run Mac Programs on PCs}{\author ctm + mat}}\margl720\margr720\margt-1440\margb-1440\gutter1080\widowctrl\ftnbj\fracwidth\margmirror \sectd \sbknone\linemod0\linex0\cols1\endnhere {\footer \pard\plain \s243\tx4320\tqr\tx8640 \f16\fs20 \tab Executor Internals\tab \chpgn \par }\pard\plain \qc \f16\fs20 {\fs36 Executor Internals:\par How to Efficiently Run Mac Programs on PCs\par \par }{\plain \f16 Mathew J. Hostetter }{\plain \f22 <mat@ardi.com>}{\plain \f16 \par Clifford T. Matthews }{\plain \f22 <ctm@ardi.com>\par }{\fs18 After MacHack '96, this paper will be available from}{\f22\fs18 http://www.ardi.com}{\fs18 \par }{\plain \f16 \par }\pard Executor is a commercial Macintosh emulator that uses no software from Apple, but is still able to run much 680x0 based Macintosh software faster on Pentiums than the same software runs on 680x0 based Macs. This paper contains some implementation details, including descriptions of Executor's synthetic CPU, graphics subsystem and debugging environment. Portability issues, current limitations and future plans are also presented.{\fs36 \par }\sect \sectd \sbknone\linemod0\linex0\cols2\endnhere \pard\plain \s255\sb240 \b\f21\ul Executor Overview\par \pard\plain \s254\sb120 \b\f21 What Executor is\par \pard\plain \f16\fs20 Executor is a commercial emulator that allows PCs to run many Macintosh applications. Executor does not require Macintosh ROMs or a Macintosh System file and contains no Appple code it self. Executor was written entiredly by engineers without Macintosh backgrounds who have not disassembled any of Apple's ROMs or System file.\par \pard\plain \s254\sb120 \b\f21 Limitations\par \pard\plain \f16\fs20 Because Executor was written strictly from publicly available documentation (Inside Macintosh, Tech. Notes, etc.), programs which make use of undocumented features of MacOS may fail under Executor. Furthermore, there are some portions of MacOS that we ha ven't implemented yet. Executor is sufficiently large that there are probably bugs in some of o ur code as well. We realize these are major limitations, but this paper is primarily concerned with implementation details that are interesting to our fellow programmers as opposed to feature sets and limitations which are of more concern to end users and our marketing department.\par \pard\plain \s255\sb240 \b\f21\ul Design Goals\par \pard\plain \f16\fs20 Our goal is for Executor to be accurate, fast and portable. Beyond that, completeness is a secondary issue.\par \par Accuracy means that each subsystem that we implement should behave exactly according to the functional specs for the subsystem that we've derived from a combination of reading documentation, writing test cases and running programs under Executor.\par \par Fast is harder to qualify. As programmers we like to use advanced techniques that will result in programs running under Executor as quickly as possible. Unfortunately, we have a limited number of engineer hours in a week and most engineering time is spen t implementing new subsystems or finding and fixing subtle incompatibilities. We're proud of the speed that we've obtained so far, but we know that we can do better in the future.\par \par Portability is the ability to support multiple platforms from the same source base. A platform is a combination of CPU, operating system and graphics device or windowing system. Executor currently supports Intel 80[3456] 86 and compatible CPUs, Motorola m680[34]0 CPUs, the operating systems DOS, Linux and NEXTSTEP and can interact with VGA, SVGA, Display PostScript and X-Windows. To get the best performance on some architectures we do use arc hitecture specific code, but we also write portable versions to be used where the platform specific versions can't be. Although not supported as a product, Executor was ported to DEC's Alpha, but since ARDI has no Alpha and DEC lost interest, the A lpha port is no longer current. AlthoLine truncated
+10
View File
@@ -0,0 +1,10 @@
executor-faq.ascii: executor-faq.bfnn
(cd ../packages/linuxfaq ; make executor-faq.ascii)
gestalt/t1.html: gestalt.xml
docbook2html gestalt.xml -o gestalt
rsync -e ssh -avzu gestalt buy:/var/www/html/new/
faq/t1.html: faq.xml
docbook2html faq.xml -o faq
rsync -e ssh -avzu faq buy:/var/www/html/new/
+109
View File
@@ -0,0 +1,109 @@
Differences Between PowerPC and 68K
Synthetic CPU
PowerPC Numerics
Additions:
Mixed Mode Manager
Code Fragment Manager
Exception Manager
Potential Problems:
Decompression -- could be tricky to reverse engineer, could
technically even be patented
Major sections that haven't been written
serial port support
networking
AppleTalk
TCP/IP
INIT/CDEV support
Internationalization (Script Manager)
Edition Manager,
Process Manager
Start Manager
Power Manager
SCSI Manager
Sections that need improvement
sound
AppleEvents
ADB (Apple Desktop Bus)
Filesystem
Alias Manager
PBExchangeFiles,
Balloon Help
Font Manager
True Type fonts
OutlineMetrics, FlushFonts,
some of the icon suite routines,
Printing
low level printing calls (DraftBits, NoDraftBits, GetRotn)
PrJobMerge,
Color
AddComp, DelComp
DisposCCursor
NewTempScreenBuffer
CharExtra
SaveFore, RestoreFore, SaveBack, RestoreBack
Picture Utilities
DisposePictInfo, RecordPictInfo, RecordPixMapInfo,
RetrievePictInfo, NewPictInfo, GetPictInfo
Minor work that needs to be done
GetStdFilterProc, SetDialogCancelItem, SetDialogTracksCursor,
WritePartialResource, SetResourceSize
Temporary Memory Manager
Stylized Text Edit
GDeviceChanged, PortChanged, PixPatChanged and CTabChanged need work
GetCPixel doesn't work for bpp > 8.
OpenCPicture just calls OpenPicture.
RestoreClutDevice needs work
inverse color table routines don't do a good job of discriminating
between colors that are close to each other.
+426
View File
@@ -0,0 +1,426 @@
Syn68k: ARDI's dynamically compiling 68LC040 emulator
Mat Hostetter <mat@ardi.com>
I. Overview
This document is meant to give a concise technical summary of how
syn68k works.
"Syn68k", ARDI's 68LC040 emulator, is both highly portable and
fast. The portable core of syn68k, which works by dynamically
compiling 680x0 code into an efficient interpreted form, was designed
to run on all major CPU's. On supported architectures, syn68k can
also translate 680x0 code into native code that the host processor
can run directly.
II. Syngen
ARDI's "syngen" system analyzes a lisp-like file describing the
bit patterns and semantics of the 680x0 instruction set and produces
lookup tables and C code for the runtime system to use. This
process takes place only when syn68k is built, so we can afford
extensive analysis here. The code and tables generated by syngen
depend somewhat on the characteristics of the host processor; for
example, on a little endian machine it is advantageous to byte swap
some extracted 680x0 operands at compile time instead of at runtime.
The 680x0 description file can describe multiple ways to emulate
any particular 680x0 opcode. The runtime system looks at what CC
bits are live after the instruction and chooses the fastest variant
it can legally use. In the following example, we have two CC
variants of lsrw; one computes no CC bits, and the other computes
all of them:
(defopcode lsrw_ea
(list 68000 amode_alterable_memory () (list "1110001011mmmmmm"))
(list "-----" "-----" dont_expand
(assign $1.muw (>> $1.muw 1)))
(list "CN0XZ" "-----" dont_expand
(list
(assign ccx (assign ccc (& $1.muw 1)))
(ASSIGN_NNZ_WORD (assign $1.muw (>> $1.muw 1))))))
The 680x0 description file can also specify which 680x0 operands
should be "expanded" to become implicitly known by the corresponding
synthetic opcode. For example, fully expanding out "addl dx,dy"
would result in 64 synthetic opcodes, one for each combination of
data register operands. This results in smaller and faster synthetic
opcodes at the expense of increasing the total number of synthetic
opcodes. To conserve space, we only expand out common 680x0 opcodes.
On host architectures where we can compile to native code, we don't
waste space by "expanding out" common synthetic opcodes.
III. Test suites
ARDI has a large set of test suites that try thousands upon thousands
of variations of 680x0 opcodes and compare the results to those
generated by a real 68040. These test suites have proven to be an
invaluable debugging tool, both as new features are added and as
we have ported syn68k to other architectures (notably 80x86, 680x0,
i860 and Alpha). Our native code support is so recent that our
test suites do not yet adequately test all of the situations that
arise when generating native code, but we plan to extend them in
the near future.
IV. Interpreted code
Our interpreted code consists of contiguous sequences of "synthetic
opcodes" and their operands. Syngen can generate ANSI C, but when
compiled with gcc it uses C language extensions that make synthetic
opcodes pointers to the C code responsible for interpreting that
opcode. This "threaded interpreting" entirely eliminates switch
dispatch and loop overhead.
To illustrate the above points, here is the assembly language
generated for the synthetic opcode that would handle a fully expanded
"addl d0,d1" when no CC bit values are required. This is what
gcc's 80x86 output looks like (edited for readability) after we
run our interpreter through ARDI's Pentium-specific instruction
scheduling Perl script:
movl _d0,%eax ; fetch d0
movl (%esi),%edi ; fetch next synthetic opcode
addl %eax,_d1 ; do the add
addl $4,%esi ; increment synthetic PC
jmp *%edi ; jump to next synthetic opcode handler
We must emphasize that the preceding example is not native code
generated by our emulator, but merely a snippet of what gcc generates
for our interpreter. This gives you some idea of the efficiency
of the portable component of our emulator.
V. Native code
Syn68k supports optional architecture-specific native code extensions.
On systems where they are present, the runtime system tries to
generate native code whenever possible. In those rare cases when
it cannot, it reverts to our interpreted code. Since syn68k supports
both native and synthetic code, the runtime system automatically
inserts gateways between the two whenever there is a transition.
This approach allows us to gradually phase in native code handlers
for most 680x0 instructions while leaving tricky and unimportant
rare cases alone.
Although our native code compilation engine is not architecture-specific,
to date we have only implemented an 80x86 back end. The 80x86
architecture has achieved such important status in the industry
that it makes sense for us to describe how we generate native code
for it, even though many of these techniques would not be necessary
on RISC architectures.
We are glad that we implemented the most difficult back end first.
We believe that, were we to have started with a RISC back end, we
would have quite possibly architected a system where retrofitting
the exotic mechanisms necessary for efficient 80x86 support was
difficult.
Three major problems make translating 680x0 code to 80x86 code difficult:
1) The 80x86 has only 8 registers, while the 680x0 has 16.
2) The 80x86 is little endian, while the 680x0 is big endian.
3) The 80x86 does not have general-purpose postincrement and predecrement
operators, which are used frequently in 680x0 code.
On the other hand, several factors make the job easier:
1) The 80x86 has all of the CISC addressing modes commonly used in 680x0 code.
2) The 80x86 has CC bits that map directly to their 680x0 counterparts
(except for the 680x0's X bit).
3) The 80x86 supports 8-, 16- and 32-bit operations, (although it can only
support 8 bit operations on four of its registers).
4) The 80x86 and 680x0 have analogous conditional branch instructions.
5) The 80x86 allows unaligned memory accesses without substantial overhead.
The toughest problem is the lack of registers. On 32-register RISC
architectures it's easy to allocate one RISC register for each
680x0 register, but on the 80x86 a different approach is needed.
The obvious solution is to perform full-blown inter-block register
allocation, but we fear that using traditional compiler techniques
would be unacceptably slow.
For now, we have adopted a simple constraint: between basic blocks,
all registers and live CC bits must reside in their canonical home
in memory. Within a block, anything goes. So what liberties does
syn68k take within a block?
The 80x86 register set is treated as a cache for recently used
680x0 registers, and the 80x86 CC bits are used as a cache for the
680x0 CC bits. At any particular point within a block, each 680x0
register is either sitting in its memory home or is cached in an
80x86 register, and each live 680x0 CC bit is either cached in its
80x86 equivalent or stored in its memory home. Cached registers
may be in canonical form, may be byte swapped, may have only their
low two bytes swapped, or may be offset by a known constant from
their actual value.
Each 680x0 instruction can require that 680x0 registers be cached
in particular ways; the compilation engine generates the minimal
code needed to satisfy those constraints and then calls a sequence
of routines to generate the native code. As each 680x0 instruction
is processed, each 680x0 register's cache status is updated. Dirty
registers are canonicalized and spilled back to memory at the end
of each block (or when we run out of 80x86 registers and we need
to make room).
We allow 680x0 registers to be cached with varying byte orders and
offsets so that we can perform the optimizations of lazy byte
swapping and lazy constant offsetting. If the 680x0 program loads
a register from memory and then ends up writing it out later, we
avoid unnecessary byte swaps by not canonicalizing the value
immediately. Lazy constant offsetting mitigates the overhead of
postincrement and predecrement side effects. For example, this
680x0 code:
pea 0x1
pea 0x2
pea 0x3
pea 0x4
...
becomes this 80x86 code:
movl _a7,%edi
movl $0x01000000,-4(%edi) ; "push" big-endian constant
movl $0x02000000,-8(%edi)
movl $0x03000000,-12(%edi)
movl $0x04000000,-16(%edi)
... <more uses of a7 may follow, and they'll use %edi>
subl $16,%edi
movl $edi,_a7
...
As mentioned above, we use the 80x86 condition code bits as a cache
for the real 680x0 CC bits. Although live cached CC bits are
occasionally spilled back to memory because some 80x86 instruction
is about to clobber them, this trick almost always works. Using
80x86 CC bits, we can frequently get away with extremely concise
code sequences; for example, a 680x0 compare and conditional branch
becomes an 80x86 compare and conditional branch.
VI. Self-modifying code
Like most dynamically compiling emulators, syn68k doesn't detect
self-modifying code; the overhead is too high. Fortunately,
self-modifying programs don't work on the real 68040 either. We
rely on the program making explicit system calls to flush the caches
whenever 680x0 code may have been modified or created. Some programs
(like HyperCard) flush the caches very often, which can cause real
performance headaches if code is continuously recompiled. We have
solved this problem by checksumming 680x0 blocks as they are compiled
and only decompiling blocks which fail their checksums. This
optimization alone sped up some HyperCard stacks by a factor of
three or so.
VII. Responsiveness
Responsiveness is a concern for any dynamic compiler. Fortunately,
syn68k is largely driven by automatically generated lookup tables
so compilation speed is good. Like other dynamic compilers, syn68k
only bothers to compile 680x0 code when it encounters it for the
first time.
When syn68k encounters new code, it compiles other 680x0 code that
it can reach from there but does not compile through jsr's. Only
when a jsr is actually executed does syn68k compile the target
routine. Once that target routine is compiled, syn68k modifies
the jsr handler to point directly to the target routine so that
the jsr will be extremely fast the second time it is executed.
We've found that lazily compiling through jsr's does a good job of
avoiding compilation lag that might annoy the user.
Syn68k does not attempt to generate native code for a basic block
until that block (or a nearby one) has been executed 50 times.
This saves memory and some compilation time, although we haven't
noticed any particular sluggishness when compiling to native code.
VIII. Other optimizations
Syn68k maintains an internal "jsr stack" to speed up the common
case of jsr/rts. We realize that the rts address might have been
fiddled with, so the rts handler verifies at runtime that the rts
address matches the tag on top of the jsr stack. If it matches,
syn68k does a fast jump. If it doesn't, syn68k looks up the code
corresponding to the rts address in a hash table.
IX. Neat hacks
The low-level code generation routines for the 80x86 back end are
machine generated from assembly language templates. Thousands of
operand permutations for 80x86 instructions of interest are run
through the system's assembler and analyzed to derive the rules
the assembler uses to create binaries. Those rules are encapsulated
into C code and compiled into syn68k so we can generate binaries
on the fly. Here is a sample template:
{ "i386_leal_indoff", "", "", "", "", "-",
"leal %0(%1),%2",
{ "offset", "base", "dst" },
{ { SIZE_32, CONSTANT, IN }, { SIZE_32, REGISTER, IN },
{ SIZE_32, REGISTER, OUT } } },
This approach has saved us countless hours of debugging and allows
our system to automatically perform the same optimizations as the
host system's assembler.
We've annotated our 80x86 descriptions with information about
Pentium pairability so that future versions of syn68k can schedule
the native code we generate (we already schedule our main interpreter
when we build syn68k).
X. Future optimizations
We are working on a simple inter-block register allocation algorithm.
By relocating most 680x0 register->80x86 register moves to the
beginning of each block, we can improve Pentium pairability and
reduce 80486 and Pentium address generation pipeline stalls.
Now that we compile to native code, A-line trap overhead is becoming
significant. We may soon compile A-line traps to native code that
directly calls the appropriate ROMlib routine with the appropriate
arguments (checking at runtime to make sure that neither the trap
nor the A-line vector has been patched out, of course).
XI. Code examples
Here are two sample 680x0 code sequences from real applications,
and the 80x86 code that syn68k generates for them. We chose these
code sequences specifically to showcase several of the techniques
we use, so you shouldn't use them as a substitute for benchmarks.
Not all 680x0 code translates as well as these examples do, but
these examples are far from exotic.
Example 1 (Solarian):
680x0 code:
addqb #1,a4@(1)
movel #0,d0
moveb a4@,d0
swap d0
clrw d0
swap d0
asll #2,d0
lea a5@(-13462),a0
addal d0,a0
moveal a0@,a0
movel #0,d0
moveb a4@(1),d0
cmpw a0@,d0
bcs 0x3fffee2
80x86 code:
movl _a4,%edi ; addqb #1,a4@(1)
addb $0x1,0x1(%edi)
xorl %ebx,%ebx ; movel #0,d0
movb (%edi),%bl ; moveb a4@,d0
rorl $0x10,%ebx ; swap d0
xorw %bx,%bx ; clrw d0
rorl $0x10,%ebx ; swap d0
shll $0x2,%ebx ; asll #2,d0
movl _a5,%esi ; lea a5@(-13462),a0
leal 0xffffcb6a(%esi),%edx
addl %ebx,%edx ; addal d0,a0
movl (%edx),%edx ; moveal a0@,a0
xorl %ebx,%ebx ; movel #0,d0
movb 0x1(%edi),%bl ; moveb a4@(1),d0
bswap %edx ; cmpw a0@,d0
movw (%edx),%cx
rorw $0x8,%cx
cmpw %cx,%bx
movl %edx,_a0 ; <spill dirty 68k
movl %ebx,_d0 ; registers back to memory>
jb 0x6fae0c ; bcs 0x3fffee2
jmp 0x6faf0c ; <go to "fall through" code>
Example 2 (PageMaker):
680x0 code:
movel #0,d2
moveb d0,d2
lslw #8,d0
orw d0,d2
movel d2,d0
swap d2
orl d2,d0
movel a0,d2
lsrb #1,d2
bcc 0x3fffed4
80x86 code:
xorl %ebx,%ebx ; movel #0,d2
movl _d0,%edx ; moveb d0,d2
movb %dl,%bl
shlw $0x8,%dx ; lslw #8,d0
orw %dx,%bx ; orw d0,d2
movl %ebx,%edx ; movel d2,d0
rorl $0x10,%ebx ; swap d2
orl %ebx,%edx ; orl d2,d0
movl _a0,%ecx ; movel a0,d2
movl %ecx,%ebx
shrb %bl ; lsrb #1,d2
movl %ebx,_d2 ; <spill dirty 68k
movl %edx,_d0 ; registers back to memory>
jae 0x3b734c ; bcc 0x3fffed4
jmp 0x43d48c ; <go to "fall through" 68k code>
XII. Benchmarks
These performance numbers were computed with Speedometer 3.23.
We've removed the floating point tests from the list since they do
not measure syn68k's speed. Syn68k contains no special provisions
for Speedometer's benchmarks and we believe that these numbers are
indicative of syn68k's performance for many other CPU-intensive
programs.
Quadra Pentium 486DX4 486DX/2
610 90MHz 75MHz 66MHz
------ ------ ------ ------
CPU 16.018 28.833 15.727 13.840
Dhrystones 19.586 21.886 12.084 9.424
Tower 18.909 27.130 12.235 11.556
Quicksort 17.759 27.105 15.606 13.919
Bubble sort 18.409 31.154 19.286 16.875
Queens 19.083 38.167 19.083 18.320
Puzzle 22.083 44.167 23.661 21.032
Permutations 21.019 28.564 11.604 12.242
Int. Matrix 24.200 26.469 19.369 16.608
Sieve 23.362 60.290 33.982 30.145
------ ------ ------ ------
Average 20.490 33.881 18.582 16.680
Preliminary analysis suggests that we average a roughly 3:1
instruction count increase when translating to 80x86 code. We have
not yet taken rigorous measurements, but the 3:1 figure is lent
some credence by the fact that our 75MHz 486DX4 gets nearly the
same performance as our Quadra 610. We believe that inter-block
register allocation will noticeably improve this ratio.
+1476
View File
File diff suppressed because it is too large. Load diff
+427
View File
@@ -0,0 +1,427 @@
\documentstyle{article}
\title{{\huge{Syn68k}} \\ ARDI's dynamically compiling 68LC040 emulator}
\author{Mat Hostetter {\verb+<mat@ardi.com>+}}
\date{\today}
\begin{document}
\maketitle
\section{Overview}
This document is meant to give a concise technical summary of how
syn68k works.
``Syn68k,'' ARDI's 68LC040 emulator, is both highly portable and
fast. The portable core of syn68k, which works by dynamically
compiling 680x0 code into an efficient interpreted form, was designed
to run on all major CPU's. On supported architectures, syn68k can
also translate 680x0 code into native code that the host processor
can run directly.
\section{Syngen}
ARDI's ``syngen'' system analyzes a lisp-like file describing the
bit patterns and semantics of the 680x0 instruction set and produces
lookup tables and C code for the runtime system to use. This
process takes place only when syn68k is built, so we can afford
extensive analysis here. The code and tables generated by syngen
depend somewhat on the characteristics of the host processor; for
example, on a little endian machine it is advantageous to byte swap
some extracted 680x0 operands at compile time instead of at runtime.
The 680x0 description file can describe multiple ways to emulate
any particular 680x0 opcode. The runtime system looks at what CC
bits are live after the instruction and chooses the fastest variant
it can legally use. In the following example, we have two CC
variants of lsrw; one computes no CC bits, and the other computes
all of them:
\begin{verbatim}
(defopcode lsrw_ea
(list 68000 amode_alterable_memory () (list "1110001011mmmmmm"))
(list "-----" "-----" dont_expand
(assign $1.muw (>> $1.muw 1)))
(list "CN0XZ" "-----" dont_expand
(list
(assign ccx (assign ccc (& $1.muw 1)))
(ASSIGN_NNZ_WORD (assign $1.muw (>> $1.muw 1))))))
\end{verbatim}
The 680x0 description file can also specify which 680x0 operands
should be ``expanded'' to become implicitly known by the corresponding
synthetic opcode. For example, fully expanding out ``addl dx,dy''
would result in 64 synthetic opcodes, one for each combination of
data register operands. This results in smaller and faster synthetic
opcodes at the expense of increasing the total number of synthetic
opcodes. To conserve space, we only expand out common 680x0 opcodes.
On host architectures where we can compile to native code, we don't
waste space by ``expanding out'' common synthetic opcodes.
\section{Test suites}
ARDI has a large set of test suites that try thousands upon thousands
of variations of 680x0 opcodes and compare the results to those
generated by a real 68040. These test suites have proven to be an
invaluable debugging tool, both as new features are added and as
we have ported syn68k to other architectures (notably 80x86, 680x0,
i860 and Alpha). Our native code support is so recent that our
test suites do not yet adequately test all of the situations that
arise when generating native code, but we plan to extend them in
the near future.
\section{Interpreted code}
Our interpreted code consists of contiguous sequences of ``synthetic
opcodes'' and their operands. Syngen can generate ANSI C, but when
compiled with gcc it uses C language extensions that make synthetic
opcodes pointers to the C code responsible for interpreting that
opcode. This ``threaded interpreting'' entirely eliminates switch
dispatch and loop overhead.
To illustrate the above points, here is the assembly language
generated for the synthetic opcode that would handle a fully expanded
``addl d0,d1'' when no CC bit values are required. This is what
gcc's 80x86 output looks like (edited for readability) after we
run our interpreter through ARDI's Pentium-specific instruction
scheduling Perl script:
\begin{verbatim}
movl _d0,%eax ; fetch d0
movl (%esi),%edi ; fetch next synthetic opcode
addl %eax,_d1 ; do the add
addl $4,%esi ; increment synthetic PC
jmp *%edi ; jump to next synthetic opcode handler
\end{verbatim}
We must emphasize that the preceding example is not native code
generated by our emulator, but merely a snippet of what gcc generates
for our interpreter. This gives you some idea of the efficiency
of the portable component of our emulator.
\section{Native code}
Syn68k supports optional architecture-specific native code extensions.
On systems where they are present, the runtime system tries to
generate native code whenever possible. In those rare cases when
it cannot, it reverts to our interpreted code. Since syn68k supports
both native and synthetic code, the runtime system automatically
inserts gateways between the two whenever there is a transition.
This approach allows us to gradually phase in native code handlers
for most 680x0 instructions while leaving tricky and unimportant
rare cases alone.
Although our native code compilation engine is not architecture-specific,
to date we have only implemented an 80x86 back end. The 80x86
architecture has achieved such important status in the industry
that it makes sense for us to describe how we generate native code
for it, even though many of these techniques would not be necessary
on RISC architectures.
We are glad that we implemented the most difficult back end first.
We believe that, were we to have started with a RISC back end, we
would have quite possibly architected a system where retrofitting
the exotic mechanisms necessary for efficient 80x86 support was
difficult.
Three major problems make translating 680x0 code to 80x86 code difficult:
\begin{enumerate}
\item The 80x86 has only 8 registers, while the 680x0 has 16.
\item The 80x86 is little endian, while the 680x0 is big endian.
\item The 80x86 does not have general-purpose postincrement and predecrement
operators, which are used frequently in 680x0 code.
\end{enumerate}
On the other hand, several factors make the job easier:
\begin{enumerate}
\item The 80x86 has all of the CISC addressing modes commonly used in 680x0 code.
\item The 80x86 has CC bits that map directly to their 680x0 counterparts
(except for the 680x0's X bit).
\item The 80x86 supports 8-, 16- and 32-bit operations, (although it can only
support 8 bit operations on four of its registers).
\item The 80x86 and 680x0 have analogous conditional branch instructions.
\item The 80x86 allows unaligned memory accesses without substantial overhead.
\end{enumerate}
The toughest problem is the lack of registers. On 32-register RISC
architectures it's easy to allocate one RISC register for each
680x0 register, but on the 80x86 a different approach is needed.
The obvious solution is to perform full-blown inter-block register
allocation, but we fear that using traditional compiler techniques
would be unacceptably slow.
For now, we have adopted a simple constraint: between basic blocks,
all registers and live CC bits must reside in their canonical home
in memory. Within a block, anything goes. So what liberties does
syn68k take within a block?
The 80x86 register set is treated as a cache for recently used
680x0 registers, and the 80x86 CC bits are used as a cache for the
680x0 CC bits. At any particular point within a block, each 680x0
register is either sitting in its memory home or is cached in an
80x86 register, and each live 680x0 CC bit is either cached in its
80x86 equivalent or stored in its memory home. Cached registers
may be in canonical form, may be byte swapped, may have only their
low two bytes swapped, or may be offset by a known constant from
their actual value.
Each 680x0 instruction can require that 680x0 registers be cached
in particular ways; the compilation engine generates the minimal
code needed to satisfy those constraints and then calls a sequence
of routines to generate the native code. As each 680x0 instruction
is processed, each 680x0 register's cache status is updated. Dirty
registers are canonicalized and spilled back to memory at the end
of each block (or when we run out of 80x86 registers and we need
to make room).
We allow 680x0 registers to be cached with varying byte orders and
offsets so that we can perform the optimizations of lazy byte
swapping and lazy constant offsetting. If the 680x0 program loads
a register from memory and then ends up writing it out later, we
avoid unnecessary byte swaps by not canonicalizing the value
immediately. Lazy constant offsetting mitigates the overhead of
postincrement and predecrement side effects. For example, this
680x0 code:
\begin{verbatim}
pea 0x1
pea 0x2
pea 0x3
pea 0x4
...
\end{verbatim}
becomes this 80x86 code:
\begin{verbatim}
movl _a7,%edi
movl $0x01000000,-4(%edi) ; "push" big-endian constant
movl $0x02000000,-8(%edi)
movl $0x03000000,-12(%edi)
movl $0x04000000,-16(%edi)
... <more uses of a7 may follow, and they'll use %edi>
subl $16,%edi
movl $edi,_a7
...
\end{verbatim}
As mentioned above, we use the 80x86 condition code bits as a cache
for the real 680x0 CC bits. Although live cached CC bits are
occasionally spilled back to memory because some 80x86 instruction
is about to clobber them, this trick almost always works. Using
80x86 CC bits, we can frequently get away with extremely concise
code sequences; for example, a 680x0 compare and conditional branch
becomes an 80x86 compare and conditional branch.
\section{Self-modifying code}
Like most dynamically compiling emulators, syn68k doesn't detect
self-modifying code; the overhead is too high. Fortunately,
self-modifying programs don't work on the real 68040 either. We
rely on the program making explicit system calls to flush the caches
whenever 680x0 code may have been modified or created. Some programs
(like HyperCard) flush the caches very often, which can cause real
performance headaches if code is continuously recompiled. We have
solved this problem by checksumming 680x0 blocks as they are compiled
and only decompiling blocks which fail their checksums. This
optimization alone sped up some HyperCard stacks by a factor of
three or so.
\section{Responsiveness}
Responsiveness is a concern for any dynamic compiler. Fortunately,
syn68k is largely driven by automatically generated lookup tables
so compilation speed is good. Like other dynamic compilers, syn68k
only bothers to compile 680x0 code when it encounters it for the
first time.
When syn68k encounters new code, it compiles other 680x0 code that
it can reach from there but does not compile through jsr's. Only
when a jsr is actually executed does syn68k compile the target
routine. Once that target routine is compiled, syn68k modifies
the jsr handler to point directly to the target routine so that
the jsr will be extremely fast the second time it is executed.
We've found that lazily compiling through jsr's does a good job of
avoiding compilation lag that might annoy the user.
Syn68k does not attempt to generate native code for a basic block
until that block (or a nearby one) has been executed 50 times.
This saves memory and some compilation time, although we haven't
noticed any particular sluggishness when compiling to native code.
\section{Other optimizations}
Syn68k maintains an internal ``jsr stack'' to speed up the common
case of jsr/rts. We realize that the rts address might have been
fiddled with, so the rts handler verifies at runtime that the rts
address matches the tag on top of the jsr stack. If it matches,
syn68k does a fast jump. If it doesn't, syn68k looks up the code
corresponding to the rts address in a hash table.
\section{Neat hacks}
The low-level code generation routines for the 80x86 back end are
machine generated from assembly language templates. Thousands of
operand permutations for 80x86 instructions of interest are run
through the system's assembler and analyzed to derive the rules
the assembler uses to create binaries. Those rules are encapsulated
into C code and compiled into syn68k so we can generate binaries
on the fly. Here is a sample template:
\begin{verbatim}
{ "i386_leal_indoff", "", "", "", "", "-",
"leal %0(%1),%2",
{ "offset", "base", "dst" },
{ { SIZE_32, CONSTANT, IN }, { SIZE_32, REGISTER, IN },
{ SIZE_32, REGISTER, OUT } } },
\end{verbatim}
This approach has saved us countless hours of debugging and allows
our system to automatically perform the same optimizations as the
host system's assembler.
We've annotated our 80x86 descriptions with information about
Pentium pairability so that future versions of syn68k can schedule
the native code we generate (we already schedule our main interpreter
when we build syn68k).
\section{Future optimizations}
We are working on a simple inter-block register allocation algorithm.
By relocating most 680x0 register to 80x86 register moves to the
beginning of each block, we can improve Pentium pairability and
reduce 80486 and Pentium address generation pipeline stalls.
Now that we compile to native code, A-line trap overhead is becoming
significant. We may soon compile A-line traps to native code that
directly calls the appropriate ROMlib routine with the appropriate
arguments (checking at runtime to make sure that neither the trap
nor the A-line vector has been patched out, of course).
\section{Code examples}
Here are two sample 680x0 code sequences from real applications,
and the 80x86 code that syn68k generates for them. We chose these
code sequences specifically to showcase several of the techniques
we use, so you shouldn't use them as a substitute for benchmarks.
Not all 680x0 code translates as well as these examples do, but
these examples are far from exotic.
\begin{itemize}
\item Example 1 (Solarian):
\begin{verbatim}
680x0 code:
addqb #1,a4@(1)
movel #0,d0
moveb a4@,d0
swap d0
clrw d0
swap d0
asll #2,d0
lea a5@(-13462),a0
addal d0,a0
moveal a0@,a0
movel #0,d0
moveb a4@(1),d0
cmpw a0@,d0
bcs 0x3fffee2
80x86 code:
movl _a4,%edi ; addqb #1,a4@(1)
addb $0x1,0x1(%edi)
xorl %ebx,%ebx ; movel #0,d0
movb (%edi),%bl ; moveb a4@,d0
rorl $0x10,%ebx ; swap d0
xorw %bx,%bx ; clrw d0
rorl $0x10,%ebx ; swap d0
shll $0x2,%ebx ; asll #2,d0
movl _a5,%esi ; lea a5@(-13462),a0
leal 0xffffcb6a(%esi),%edx
addl %ebx,%edx ; addal d0,a0
movl (%edx),%edx ; moveal a0@,a0
xorl %ebx,%ebx ; movel #0,d0
movb 0x1(%edi),%bl ; moveb a4@(1),d0
bswap %edx ; cmpw a0@,d0
movw (%edx),%cx
rorw $0x8,%cx
cmpw %cx,%bx
movl %edx,_a0 ; <spill dirty 68k
movl %ebx,_d0 ; registers back to memory>
jb 0x6fae0c ; bcs 0x3fffee2
jmp 0x6faf0c ; <go to "fall through" code>
\end{verbatim}
\item Example 2 (PageMaker):
\begin{verbatim}
680x0 code:
movel #0,d2
moveb d0,d2
lslw #8,d0
orw d0,d2
movel d2,d0
swap d2
orl d2,d0
movel a0,d2
lsrb #1,d2
bcc 0x3fffed4
80x86 code:
xorl %ebx,%ebx ; movel #0,d2
movl _d0,%edx ; moveb d0,d2
movb %dl,%bl
shlw $0x8,%dx ; lslw #8,d0
orw %dx,%bx ; orw d0,d2
movl %ebx,%edx ; movel d2,d0
rorl $0x10,%ebx ; swap d2
orl %ebx,%edx ; orl d2,d0
movl _a0,%ecx ; movel a0,d2
movl %ecx,%ebx
shrb %bl ; lsrb #1,d2
movl %ebx,_d2 ; <spill dirty 68k
movl %edx,_d0 ; registers back to memory>
jae 0x3b734c ; bcc 0x3fffed4
jmp 0x43d48c ; <go to "fall through" 68k code>
\end{verbatim}
\end{itemize}
\section{Benchmarks}
These performance numbers were computed with Speedometer 3.23.
We've removed the floating point tests from the list since they do
not measure syn68k's speed. Syn68k contains no special provisions
for Speedometer's benchmarks and we believe that these numbers are
indicative of syn68k's performance for many other CPU-intensive
programs.
\begin{center}
\begin{tabular}{||l||c|c|c|c||} \hline \hline
\em{\small{Test/CPU}} & \em{\small{Quadra 610}} & \em{\small{Pentium 90Mhz}}
& \em{\small{486DX4 75Mhz}} & \em{\small{486DX/2 66Mhz}} \\ \hline \hline
CPU & 16.018 & 28.833 & 15.727 & 13.840 \\ \hline
Dhrystones & 19.586 & 21.886 & 12.084 & 9.424 \\ \hline
Tower & 18.909 & 27.130 & 12.235 & 11.556 \\ \hline
Quicksort & 17.759 & 27.105 & 15.606 & 13.919 \\ \hline
Bubble sort & 18.409 & 31.154 & 19.286 & 16.875 \\ \hline
Queens & 19.083 & 38.167 & 19.083 & 18.320 \\ \hline
Puzzle & 22.083 & 44.167 & 23.661 & 21.032 \\ \hline
Permutations & 21.019 & 28.564 & 11.604 & 12.242 \\ \hline
Int. Matrix & 24.200 & 26.469 & 19.369 & 16.608 \\ \hline
Sieve & 23.362 & 60.290 & 33.982 & 30.145 \\ \hline \hline
Average & 20.490 & 33.881 & 18.582 & 16.680 \\ \hline
\end{tabular}
\end{center}
Preliminary analysis suggests that we average a roughly 3:1
instruction count increase when translating to 80x86 code. We have
not yet taken rigorous measurements, but the 3:1 figure is lent
some credence by the fact that our 75MHz 486DX4 gets nearly the
same performance as our Quadra 610. We believe that inter-block
register allocation will noticeably improve this ratio.
\end{document}
+45
View File
@@ -0,0 +1,45 @@
To get started, fire up Executor and take a look at how it's set up.
It's a lot like a real Mac. To open a folder, just double-click on it.
To close it again, click on the box in the corner of its window. To
start one of the demo programs (Lemmings is a popular choice),
double-click on it. It will start just as it would on a real Mac,
with pull-down menus to control the game and let you quit when you get
tired of playing.
Executor has a hotband across the top of the screen where you can keep
the most frequently used files of each type. It's controlled by the
set of small boxes on the upper-left-hand corner of the screen. The
sideways oval will show you your directory structure from the top,
including not only your Mac volumes but your DOS drives and any
floppies or CDs which may be loaded. The other boxes will bring
different sets of things into the hotband -- you'll learn what the
heiroglyphs in the boxes are supposed to represent as you experiment.
After you've goofed around with the demos for a while, you'll probably
want to install your own games and maybe even do something useful.
Executor can run programs directly from high-density Mac floppies, but
this is very slow. It's quicker to copy the programs to one of the
simulated Mac volumes on your hard disk. To do this, put the
high-density floppy in your drive and select "Check for floppies" from
the pull-down menu under "File." Now select the overview of all
volumes by clicking on the sideways oval as above -- the floppy you
just inserted should be one of your choices. Double-click on the
floppy icon to open it, open the volume you want to put it in, and
drag the program icon from the floppy window to the window of the hard
disk volume.
Sooner or later you'll need to make a new Mac volume or two to contain
your files. To do this, you need to use the makehfv.exe utility in
DOS (or the makehfv utility under Linux). At your DOS (or shell)
prompt, type something like this:
makehfv newvol.hfv NewVolume 500k
where newvol.hfv is the name of the DOS file, NewVolume is the name
Executor will see, and 500k is the size of the volume. You can also
specify MB rather than KB by using m instead of k.
Lots of specific questions, such as how to use downloaded software,
are answered in the FAQ found in your docs subdirectory. If you have
any questions which aren't answered there, just write to
questions@ardi.com or call ARDI at +1 505 766 9115.
+62
View File
@@ -0,0 +1,62 @@
Executor 2 can read Mac formatted CD-ROMs, but it needs a way to read
raw CD-ROM sectors to do so.
If your computer has a SCSI CD-ROM and you have ASPI drivers
installed, Executor should be able to use them to read Mac formatted
CD-ROMs.
If not, Executor needs to use the 16-bit version of the Microsoft
CD-ROM Extensions to read raw CD-ROM extensions. That means that if
you're running Windows 3.x, you'll need to install MSCDEX.
If you're running Windows '95, you'll need to adjust your
configuration so that you use the 16-bit version of MSCDEX (at least
when you're running Executor), instead of the 32-bit version.
The easiest way to configure your system is to have a Windows Guru do
it for you. If you explain that Executor/DOS needs ASPI drivers or
the old version of MSCDEX, a knowledgeable Windows person can probably
examine your system and make the mods to your config.sys and
autoexec.bat to do the right thing.
If you don't have someone you can lean on, you may be able to get
technical support from wherever you purchased your PC, or if that
doesn't help, the company that made your CD-ROM drive may be able to
help you out.
The problem is that installing the old version of MSCDEX is a
different process on different types of machines. For instance, on
our Micron Millennia Transport laptop, we needed to add this line to
C:\CONFIG.SYS
DEVICE=C:\CDROM\SJCDAPI.SYS /D:MSCD000
and then we needed to add this line to C:\AUTOEXEC.BAT
MSCDEX.EXE /D:MSCD000 /M:40 /L:E
The first line is responsible for loading the 16-bit CD-ROM driver,
and that's the line that varies from system to system. The problem is
that you need to know where your 16-bit CD-ROM driver is, and
sometimes it can be hard to find. The "/D:MSCD000" portion of the
DEVICE line tells DOS/Windows that the device driver will be known as
"MSCD000".
The second line actually loads MSCDEX, and says to look for the device
driver "MSCD000", which we installed via the first line. The "/M:40"
portion of the line asks DOS/Windows to buffer 40 blocks, and the
"/L:E" portion tells DOS/Windows that we want the device to be logical
disk "E:". In general, you can use the exact same MSCDEX line in your
autoexec.bat as we have above, as long as you have the right 16-bit
CD-ROM driver loaded in your config.sys file.
NOTE: Even with those two lines added, we have to reboot our Micron
Millennia Transport into MS-DOS mode before Executor can access Mac
formatted CD-ROMs. You may also experience this restriction.
This configuration problem will go away once Executor has been
rewritten to be a Win32 program instead of a DOS program.
If Executor 2 is telling you to read this file, and you'd prefer that
it stop telling you about it, you can rename this file and Executor
will stop.
+647
View File
@@ -0,0 +1,647 @@
Cleanup goals:
- Consistency
- Cleanliness
- Conciseness
- Modularity
- easier to maintain and extend
- easier to remove and license/sell parts of Executor (e.g. HFS code)
- Robustness
- Portability
- Debuggability
- Superior tools
- Nicer learning curve for newcomers
- Reduced redundancy in the source
- A more efficient Executor binary
- smaller
- faster
- better locality of reference
- smaller memory footprint
- faster load times on demand-paged systems
----------------------------------------------------------------------
Coding standards:
We will use the coding conventions described in the GNU coding
standards, with some extensions:
- You may assume GNU make and gcc. Gratuitously using features
specific to either is a bad idea, but if using a GNU extension is
clearly the best (or only) way to write something, don't hesitate to
use it.
- Always use full ANSI C prototypes. When a function takes no arguments,
place an explicit "void" in the argument list both in the declaration
and in the definition.
- You may assume alloca is present, but do not assume you have a large
amount of stack space. Under djgpp we have only a default stack of
256K, which is why the rsys/tempalloc.h package was created.
- You may assume ANSI C libraries. We will never compile Executor on
a system that doesn't have ANSI libraries. As such, know what ANSI
provides and use those library functions when appropriate (instead
of hand-rolled loops, etc.) Use ANSI functions rather than their
old Unix counterparts when possible (e.g. memset rather than bzero,
and memcpy or memmove rather than bcopy).
- All source files will be maintained with RCS. This of course does
not apply to files which are mechanically generated from other
files. It may sometimes be appropriate to log derived files with
RCS, but usually it's not.
- Make functions and "global" variables `static' when possible.
This has the following benefits:
- gcc can warn about unused static items (which only waste space).
- It reduces the chance of an identifier clash with a symbol
in another source file.
- Use `gui_assert' and `warning_unexpected' statements liberally.
They take little time to add in, but can be an invaluable debugging
aid.
- Don't modify function parameters. This can make debugging confusing
as it makes it unclear what the original argument to the function
was.
- All functions will have exactly one `return' statement, counting the
implicit `return' at the end of a void function. This is to make
debugging easier (e.g. setting a breakpoint to see when a certain
value is returned), and to avoid certain kinds of bugs that can
happen with early exits.
- `return' statements should never return anything more complex than
a single variable or constant. This is to facilitate setting
debugger breakpoints.
- If you are writing a function that returns something by reference,
always fill that value in, even in the case of an error when you
don't expect that value to be used. Uninitialized memory errors can
be frustrating to track down, and gcc won't warn you about them in
this case. An exception of course would be routines that are
explicitly not supposed to modify the return-by-reference memory in
the case of an error.
- `goto' is often to be avoided, but don't hesitate to use it if it
makes your code simpler. For example, if you want to return an
error code from deep within nested `if' statements, set a variable
indicating the return code and `goto' the end of the function where
that variable is returned. kludges involving magic loop variables
or smashing loop counters and executing break statements are usually
more difficult to understand than a simple goto. A goto will
continue to work even if another nested layer of looping is added
outside, or if code is added after the loop that you really didn't
want to execute.
- Machine-generated code need not conform to any particular coding
standard, although it's more readable if it does. Such code should
at least be run through `indent' (if appropriate) to make it more
human-readable.
- Always declare variables in the innermost possible lexical scope.
- Never shadow identifiers in outer scopes.
- Never use the same variable name in two scopes in the same function
(it's OK when the variable is a magic temp variable inside a macro).
- Avoid using the same variable for two different purposes. Use two
variables instead. Reusing a variable can result in subtle bugs and
makes optimization more difficult for the compiler (gcc's register
allocator still can't do live range splitting). It sometimes makes
debugging more difficult when a value of interest gets clobbered for
no good reason.
- When declaring a hidden variable inside a macro, place an underscore
both before and after the identifier name. This is to avoid clashes
with local variables in outer scopes, and also to make clear the
special nature of the variable. So for example, SQUARE() could
be written as this GNU-style macro:
#define SQUARE(a) ({ typeof (a) _x_ = (a); _x_ * _x_; })
- Never use the same variable to hold both big and little endian
values. For example, don't do:
return_by_reference (&foo); /* This is */
foo = CL (foo); /* bad */
instead, use a temp variable to hold the big endian value,
or create a helper function that returns the value in the
byte order you want.
- Use functions rather than macros when possible, at least when the
expression is non-trivial. Functions are far easier to debug and do
type checking that (simple) macros can't. There are of course
numerous exceptions to this rule; for example, if you want to
"return" alloca'd memory you must do it from within a macro.
- Generally avoid macros that modify variables where a function call
could not. When you must modify variables, pass the variables as
arguments to the macro so it's at least clear that they are being
used. For example:
a = MACRO(); /* Best */
MACRO(a); /* Only if you really need to */
MACRO(); /* (where `a' is secretly modified) Evil! */
- Use `int' for most loop counters, even if a short will suffice. Old
versions of gcc could generate better looping code for shorts on the
m68k, but shorts are worse on other architectures, and newer gcc's
handle int loop counters well on the m68k.
- In loops, don't use fancy pointer arithmetic instead of a simple
array index just because you think it might make your code faster.
Unlike the m68k, the x86 and most RISC chips don't have general
postincrement and predecrement addressing modes, so this complexity
is usually wasted and often counterproductive.
- Strive to avoid preprocessor conditionals, and instead move code to
configuration files. This is not always possible, but often it is.
Tangles of #if's are much harder to read and maintain than code
which knows that the host implements a well-defined API for
system-specific features.
- Use "#if defined (FOO)" rather than "#ifdef FOO". This makes
it easier to add more clauses to the conditional, e.g.
"#if 0 && defined (FOO)"
- When you do need to use preprocessor conditionals, try not to use
conditionals based on particular operating systems; instead, make
the #ifdef's conditional upon the particular feature of interest.
For example, test "defined (USE_STRUCT_DIRECT)", rather than
"defined (NEXTSTEP)" if you want to see whether to use struct direct
or struct dirent. There are reasonable exceptions to this rule
where some feature is so intimately tied to an operating system that
there's no reason to bother making a specific macro. An example
would be conditional compilation for an ObjC NEXTSTEP call; there's
no reason to waste your time bothering to come up with a specific
conditional that only gets defined for NEXTSTEP, because it will
never be used elsewhere. One rule of thumb is to avoid using two
conditionals, e.g.:
#if defined (NEXTSTEP) || defined (LINUX)
In this case you should create a new macro and define it in both the
NEXTSTEP and LINUX config headers.
- All internal Executor types will end in `_t', except for
u?int{8,16,32}. Each Macintosh types will have its canonical name.
- For Macintosh struct fields defined in the documentation, use
standard Mac data types (e.g. INTEGER, LONGINT, etc.)
- Use enums rather than #define's when possible, because gdb knows
about enums. This is not possible when those values are used in
preprocessor conditionals, but that is rare.
- When you want a boolean value, and you're not in a context where
you should use the Mac BOOLEAN type, use `boolean_t'. That's an
enum and gdb knows about enums.
- When you specifically want a signed or unsigned N-bit number and
you're not in a context where you should use a Mac type, use int8,
int16, int32, int64, uint8, uint16, uint32, and uint64. For
example, an array of bytes should be an array of `uint8', not an
array of `unsigned char'. Configuration files will guarantee that
those fundamental types will be correct for all architectures and
compilers. If you just want an integer with at least 32 bits, use
`int' or `unsigned'. As per the GNU coding standards, you may
assume that ints have at least 32 bits. It is, however, possible
they may have more bits someday, so use `int32' or `uint32' when you
want exactly 32 bits.
- When creating an enum or any collection of related constant values,
try to use a common naming prefix for the identifiers that groups
them all together. This is not necessary for those rare macros
whose lifetime spans only a few lines, but is useful for values in
header files.
- Do not assume that pointer types are 32 bits. This is false on the
DEC Alpha, where they are 64 bits. Cliff modified gcc slightly to
allow pointer bitfields to let us typedef Mac structs with the
proper size and semantics. In some situations you will need to
assume that only the lower 32 bits of the pointer are significant,
since we frequently store pointers in Mac data structures that only
allocate 32 bits for pointers. We can make this happen under OSF on
the Alpha by using the `-taso' linker flag.
- If you have an if...else clause, and one consequent is substantially
shorter than the other, adjust the sense of the `if' so the shorter
code sequence goes first and the longer code sequence goes in the
`else' clause.
- Don't hesitate to create new source files if that's the cleanest way
to add a new feature or split something up into manageable pieces.
Place those files in specific config directories if that's where
they belong, to avoid cluttering up the main source tree.
Why is this a good idea?
- It can be difficult to wade through the RCS diffs for enormous
source files to find a change of interest. The bigger the file,
the more changes take place. As of this writing, main.c is
nearly 2000 lines long and has gone through 177 revisions since
work on Executor 2 started.
- It is sometimes useful to "roll back" files to earlier versions,
to track down a regression. Gigantic files with numerous
unrelated changes are almost impossible to roll back without
breaking something else.
- The more interesting things are in a file, the more likely there
is to be resource contention for that file between developers.
This problem will only get worse as ARDI gets more programmers.
- Small files compile faster (although, to be fair, if a lot
of junk gets #included then multiple files can be slower)
- Having more .o files gives us more freedom to choose a link
ordering that minimizes our memory footprint (NEXTSTEP has tools
to do this, and we can make rough-hewn tools for other platforms
with gprof and Perl).
- When printing a hexadecimal number in a diagnostic, always preface
it with "0x". Don't make the person reading the diagnostic guess
whether "400" really means four hundred or whether it's one thousand
twenty four.
UNRESOLVED:
- Infinite loops, when necessary, should be written as:
while (1) /* or should that be while (TRUE)? */
{
}
- [need naming convention for variables beyond GNU standards, e.g.
..._be suffix for big endian? What about ROMlib_ prefix,
or suffixes indicating type information?]
- Predicate variables or functions which return boolean will be
annotated with "_p".
- Variables which are return-by-reference pointers are annotated
with "_ref".
- Variables which contain big endian values are annotated with "_be".
A big endian int would have this suffix. A byte-swapped pointer
to a struct would have it. A pointer to a byte-swapped struct
would *not* have it, because the pointer variable itself is
big endian. A big endian Point struct sitting on the stack would
have the "_be" annotation.
----------------------------------------------------------------------
----------------------------------------------------------------------
There are two classes of transformations to the source tree:
- Those that affect the resulting Executor binary
- Those that do not
Modifications which do not affect the resulting binary are easy to
verify for correctness: make the modifications, recompile, and then
make sure the binary is unchanged. Consequently, such modifications
are "safe" only if made independently of mods that change the Executor
binary. To be truly safe, Executor binaries for all supported
platforms should be recompiled and compared before moving on.
It is still possible, of course, that an error can creep in somewhere
and not get noticed. A simple case is conditionally compiled code
that doesn't get compiled during the binary comparison test, but there
are more complex cases.
Although convenient, it is not essential (or even wise) to do in one
pass all mods which shouldn't change the Executor binary. Doing so
may save verification runs, but will cause extra headaches when the
verification fails. Changing several things in one step also makes
RCS diffs confusing. That doesn't mean that it is never appropriate
to group two semi-related sets of changes together; use your judgment.
----------------------------------------------------------------------
Split source tree into subdirectories containing related groups of
files and utilities?
./
executor.make
ae/
AE.c
AE_coercion.c
AE_desc.c
AE_hdlr.c
print/
PSprint.c
PSstrings.c
prError.c
prInit.c
prLowLevel.c
prPrinting.c
prRecords.c
ctl/
ctlArrows.c
ctlDisplay.c
ctlIMIV.c
ctlInit.c
ctlMiniarrows.c
ctlMisc.c
ctlMouse.c
ctlPopup.c
ctlSet.c
ctlSize.c
ctlStddef.c
dial/ [dlog?]
dialAlert.c
dialCreate.c
dialDispatch.c
dialHandle.c
dialInit.c
dialItem.c
dialManip.c
file/
fileAccess.c
fileCreate.c
fileDirs.c
fileDouble.c
fileHighlevel.c
fileInfo.c
fileMisc.c
fileVolumes.c
diskinit.c
slash.c
disk.c
hfs/ [merged with file?]
hfsBtree.c
hfsChanging.c
hfsCreate.c
hfsFile.c
hfsHelper.c
hfsHier.c
hfsMisc.c
hfsVolume.c
hfsWorkingdir.c
hfsXbar.c
list/
listAccess.c
listAddDel.c
listCreate.c
listDisplay.c
listMouse.c
listOps.c
listStdLDEF.c
sane/
float4.c
float5.c
float7.c
floatnext.c
menu/
menu.c
menuColor.c
menuV.c
stdmbdf.c
stdmdef.c
res/
resGet.c
resGetinfo.c
resGettype.c
resIMIV.c
resInit.c
resMisc.c
resMod.c
resOpen.c
resPartial.c
resSetcur.c
qd/
default_ctab_values.c
hintemplate.h
makerawblt.pl
mkseedtables.c
mksspairtable.c
mkultable.c
qBit.c
qCConv.c
qCGrafPort.c
qCRegular.c
qColor.c
qColorMgr.c
qColorPicker.c
qColorutil.c
qCursor.c
qGDevice.c
qGWorld.c
qGrafport.c
qHooks.c
qIMIV.c
qIMV.c
qIMVI.c
qIMVxfer.c
qMisc.c
qPaletteMgr.c
qPen.c
qPicstuff.c
qPict2.c
qPicture.c
qPixMapConv.c
qPoint.c
qPoly.c
qRect.c
qRegion.c
qRegular.c
qScale.c
qStandard.c
qStdArc.c
qStdBits.c
qStdLine.c
qStdOval.c
qStdPic.c
qStdPoly.c
qStdRRect.c
qStdRect.c
qStdRgn.c
qStdText.c
qText.c
autorefresh.c
dirtyrect.c
dcconvert.c
dcmaketables.c
rawpatblt.c
rawsrcblt.c
refresh.c
rgbutil.c
pat-blitters.tmpl
src-blitters.tmpl
srcblt.c
xdata.c
xdblt.c
serial/
serial.c
te/
teAccess.c
teDisplay.c
teEdit.c
teIMIV.c
teIMV.c
teInit.c
teInsert.c
teMisc.c
teScrap.c
script/
script.c
mman/
mman.c
mmansubr.c
wind/
windColor.c
windDisplay.c
windDocdef.c
windInit.c
windMisc.c
windMouse.c
windSize.c
windUpdate.c
sound/
sound.c
soundIMVI.c
snth5.c
map/
map_to_c.c
active.map
apple.map
arrow_down_active.map
arrow_down_inactive.map
arrow_left_active.map
arrow_left_inactive.map
arrow_right_active.map
arrow_right_inactive.map
arrow_up_active.map
arrow_up_inactive.map
go_away.map
grow.map
ractive.map
thumb_horiz.map
thumb_vert.map
zoom.map
glue/
emustubs.c
emutrap.c
emutraptables.c
tooltrap.awk
tooltrap2.awk
event/
hle.c
osevent.c
toolevent.c
ibm_keycodes.c
debug/
error.c
dump.c
prefs/
option.c
parse.y
parsenum.c
parseopt.c
time/
time.c
vbl.c
syncint.c
config/arch/m68k
priv.c
OBSOLETE/
genctopflags_h.tmpl
genctopflags_h.tmpl
genfndecls.c
genptocflags_h.tmpl
genstubify_h.tmpl
genstubify_s.tmpl
globals.awk
globals.c
globals.pl
mkexpandtables.c
mktable2.awk
mktable3.awk
romlib_stubs.c
ostrap.awk
setuid.c
stubify.awk
stubs.s
think.c
trapinfo
WTF_IS_THIS?
genrand_h.c
Unresolved
--------------------
aboutbox.c
adb.c
alias.c
balloon.c
bindec.c
color_wheel_bits.c
config
crc.c
desk.c
device.c
edition.c
executor.c
finder.c
gensplash.c
gestalt.c
icon.c
image.c
image_inits.c
include
iu.c
iv-stubs.c
keycode.c
launch.c
license.c
licensetext.c
main.c
mkvol
notify.c
osutil.c
pack.c
process.c
protector.c
scrap.c
screen-dump.c
segment.c
shutdown.c
sigio_multiplex.c
splash
splash.c
stdfile.c
string.c
syserr.c
system_error.c
tempmem.c
toolmath.c
toolutil.c
uniquefile.c
version.c
vgavdriver.c
+40
View File
@@ -0,0 +1,40 @@
CWSDPMI is Copyright (C) 1995 Charles W Sandmann (sandmann@clio.rice.edu)
102 Hurst Ct, Destrehan, LA 70047
This is the Beta 2 release. The files in this binary distribution may be
redistributed without the source code provided:
* This file (or its contents) must accompany CWSDPMI.EXE
* CWSDPMI.EXE is not modified in any way
* Distribution with commercial or shareware programs is allowed but requires
notification of the author by mail or acknowledged email
* Notice to users that they have the right to receive the source code for
CWSDPMI. (Distributors should indicate a site for the source in their
documentation, contact address above if source is desired and not available).
-------------------------------------------------------------------------------
CWSDPMI was written to provide DPMI services for V2 of DJGPP. It currently
does not support 16-bit DPMI applications or DOOM. It does support virtual
memory and hardware interrupt reflection from real mode to protected mode.
DJGPP V1.1x and RSX applications will also run using this server, which can be
used to provide enhanced control over hardware interrupts.
Please report any applications which do not work properly to the address above.
Directions for use (server can be used in either of two different ways):
1) "cwsdpmi" alone with no parameters will terminate and stay resident
FOR A SINGLE DPMI PROCESS. This means it unloads itself when your
DPMI application exits. This mode is useful in software which needs
DPMI services, since CWSDPMI can be exec'ed and then will unload on exit.
2) "cwsdpmi -p" will terminate and stay resident until you remove it.
It can be loaded into UMBs with LH. "cwsdpmi -u" will unload the TSR.
I would like to give special thanks to DJ Delorie who wrote the original
GO32 code on which CWSDPMI is based. Morten Welinder also provided and
improved much of the code in this program.
Binary file not shown.
Binary file not shown.
+62
View File
@@ -0,0 +1,62 @@
{\rtf0\ansi{\fonttbl\f0\fnil Times-Roman;\f1\fmodern Courier;\f2\fswiss Helvetica;}
\paperw9840
\paperh8400
\margl120
\margr120
\pard\tx533\tx1067\tx1601\tx2135\tx2668\tx3202\tx3736\tx4270\tx4803\tx5337\f0\b0\i0\ulnone\fs32\fc0\cf0 Hi Dr. Petrocelli,\
\
I took a look at changing
\f1 config.sys
\f0 under Windows 95. I suggest you make a copy of
\f1 config.sys
\f0 first by selecting it, and then using copy and paste as mentioned in the other set of instructions. Then, select
\f1 config.sys
\f0 and choose
\b Open With...
\b0 from the
\b File
\b0 menu.\
\
You'll then be presented with a choice of applications\
\
Select
\b Notepad
\b0 \
\
The contents of
\f1 config.sys
\f0 will then be shown in a Notepad\
window\
\
See if there's already a line in config.sys that says\
\
\f1 FILES=
\f2\i something
\f0\i0 \
\
if there is, and
\f2\i something
\f0\i0 is less than
\f1 30
\f0 , change it to
\f1 30
\f0 , then save the document using the
\b Save
\b0 item from the
\b File
\b0 menu. If there isn't already a line that mentions
\f1 FILES
\f0 , you can just add one yourself at the end\
\
\f1 FILES=30
\f0 \
\
is all you need to add.\
\
After you've done that, you should be able to reboot and Executor should stop complaining.\
\
I hope this helps. Enjoy your last day at work.\
}
+643
View File
@@ -0,0 +1,643 @@
NOTAS DEL TRADUCTOR
- Si usted tiene una version 1.99<x> o superior de Executor, parte
de las limitaciones aqui mencionadas puede que ya hayan sido solventadas.
- En muchos casos, no he traducido opciones, comandos y menus, y nombres
de programas, ya que actualmente Executor solo existe en Ingles, por lo
que traducirlas podria dar pie a confusiones.
*******************************************************************
TRADUCCION DE ERNSTOUD.TXT AL CASTELLANO
NOTA: Este documento es obra de un usuario de Executor para
ayudar a otros usuarios de Executor a solucionar problemas
comunes. ARDI lo ha editado ligeramente, pero lo ha dejado
basicamente como era. ­Disfrutelo!
PRIMEROS PASOS CON EXECUTOR
----------------------------
" Un 'bug' es una funcion indocumentada. Un 'bug' llega a ser
una funcion al documentarla."
El autor de este documento no tenia conocimientos previos del
software y la arquitectura Macintosh antes de comprar
Executor. Experiencia de PC en abundancia pero totalmente en
blanco sobre el mundo Mac. Compro Executor para llenar este
vacio y este ha cumplido totalmente sus expectativas.
Aunque Executor puede ser usado sin ningun conocimiento previo
de Macintosh (demostracion de que este argumento de venta,
unico para los Mac, sigue siendo cierto) hay algunos datos que
habrian ayudado al autor. Algunos de estos se describen mas
adelante; quiza le ayudaran a usted.
El Macintosh original se introdujo en 1984 con los famosos
anuncios 1984-Gran Hermano. Fue seguido por una amplia gama de
maquinas. El procesador Motorola original 68000 (comparable
al 8086) fue seguido por el 68020 (eq. 80286), 68030 (386DX) y
68040 (486SX/DX). Executor emula un 68LC040, que es un 68040
sin un procesador de punto flotante ("LC" significa "bajo
coste").
El exito de los Mac no fue debido a las maquinas, si no al
software, que fue uno de los primeros en utilizar un entorno
grafico de usuario, GUI. Este GUI es lo que emula Executor.
El sistema Macintosh se llama 'System'. Ha tenido un numero
de versiones comparable a MS-DOS; esta es su septima vida y
como para un gato, es la ultima; las versiones futuras se
llaman MacOS. Aunque que el Sistema 7 ha agregado muchas
caracteristicas nuevas, executor emula un Mac que usa
Sistema 6.0.7; ARDI tiene la intencion de hacer posible
algun dia que Ud. pueda usar el Sistema 7 de APPLE sobre
Executor.
Como en Windows, el Sistema soporta aplicaciones al darles un
entorno en el que ejecutarlas. La interaccion entre el usuario
y el Sistema se hace con un programa llamado "Finder"
(buscador); comparable al Administrador de Programas de
Windows. Es el "Finder" el que genera las metaforas de
carpetas, escritorio, papelera, y otras. Es el "Finder" quien
inicia las aplicaciones. Con el "Finder" el usuario puede
renombrar, copiar y borrar archivos y carpetas.
El "Finder" original permite al usuario ejecutar una aplicacion a
la vez, MultiFinder, introducido con el Sistema 6, ha hecho
posible iniciar varias aplicaciones. Executor es un tipo de
emulador de un solo programa a la vez.
ARDI esta desarrollando su propio sustituto de "Finder" que se
integrara con executor. Hasta entonces, el programa HFS_XFer,
descrito en un capitulo aparte de este manual, se usa para
copiar, borrar y renombrar archivos y carpetas.
El sistema necesita un disco duro con un numero de carpetas
predefinidas, una de las cuales es la carpeta de Sistema. En
ella encontrara un archivo llamado 'System' que contiene la
mayoria del Sistema Mac. En un Mac de verdad el archivo
'Finder' tambien se encuentra en este carpeta. La Carpeta de
Sistema esta presente en el sistema de archivo de Executor pero
no contiene un "Finder", y el sistema de archivo de ARDI no es
compatible con el sistema de archivo de APPLE. Si trata de usar
un Macintosh y reemplazar archivo de Sistema de Apple con el de
ARDI, su Macintosh se estrellara. Si trata de ejecutar Executor
usando archivo de Sistema de Apple en vez del de ARDI, executor
se estrellara.
Esto implica que aunque que Executor emule un Mac muy bien, la
primera impresion es de que tiene "algo" diferente, porque carece
del importante interfaz del "Finder". En su lugar Executor
presenta una caja de dialogo que usa para preguntarle que
programa iniciar. De todas formas, hay maneras de desactivar el
"Finder" en un Mac de verdad, lo que ahorra memoria. ARDI esta
desarrollando un sustituto "Finder"; puede que este disponible
ya, mientras lee esto, de lo contrario esta siendo probado por
los probadores de betas. Busque en su BBS o red preferida.
El sustituto del "Finder" de ARDI tiene una banda bajo la barra
de menu con iconos de directorios y aplicaciones usadas
habitualmente y otros objetos. Esta banda se conoce como la
"Hot Band" (banda caliente). Ud. puede arrastrar objetos hacia y
desde esta banda. Cuando hace doble clic sobre un directorio o
volumen, aparece una ventana con iconos para todo los archivos
del directorio. Ud. puede arrastrar los archivos desde una
ventana a otra para moverlos o copiarlos. Para borrar un
archivo, debe seleccionarlo y escoger borrar; no hay papelera.
El doble clic ejecuta una aplicacion. La banda tiene
seis botones que le permiten escoger que tipo de objetos se
muestran en la banda caliente (aplicaciones, documentos,
volumenes, directorios, fuentes, o accesorios de escritorio).
Tambien incluye la posibilidad de formatear discos.
Ya que el Mac se suele usar para aplicaciones graficas, utiliza
fuentes escalables. Estas se almacenan en el archivo 'System'
usando una herramienta llamada FONT/DA Mover bajo el Sistema 6.
Bajo el Sistema 7 uno puede copiar simplemente una fuente en la
carpeta Sistema y el sistema la reconoce. El FONT/DA Mover es
software registrado de Apple. Esto hace dificil instalar
fuentes en Executor hasta que el "Browser" (hojeador) de ARDI
este universalmente disponible.
En un Mac, los archivos se organizan en carpetas, el equivalente
de directorios MS-DOS. Las carpetas pueden anidarse y contener
iconos para programas y/o archivos de datos. Un aspecto notable
de "Finder"es el alias. Un alias es una copia de icono de una
aplicacion que puede usarse para crear grupos de objetos. Es el
primer paso de Apple hacia la orientacion a objetos. El cambio
de las propiedades de un icono tambien cambia las del alias, al
contrario que en Windows.
Ya que Executor viene sin "Finder", y no reconoce alias, puede
ocurrir que Ud. abra una carpeta de un disquette o CD-ROM y no
encuentre nada. En un Mac puede haber habido alias en esas
carpetas.
Una diferencia que notara el usuario de Windows es que en un
Mac el menu esta siempre sobre la linea superior de la pantalla,
mientras que en Windows el menu activo esta siempre dentro de la
ventana actual. Un escritorio de Windows con un numero de
aplicaciones ejecutandose muestra muchos menus, lo que puede
resultar desconcertante. Windows indica el menu actual cambiando
el color. En un Mac, al seleccionar una ventana, automaticamente
hacemos que su menu asociado aparezca en la linea superior. Ya
que Executor solo puede ejecutar una aplicacion a la vez esto no
deberia ser fuente de problemas. Uno se da cuenta usando HFS_XFER
(descrito mas adelante).
EJECUCION DE SOFTWARE EN EXECUTOR
----------------------------------
Ahora que ha instalado Executor sobre su sistema y ha comprobado
que funciona, Ud. esta preparado para probar alguno de los
programas de demostracion que vienen con executor. Estos son
freeware, shareware o demostraciones totalmente funcionales
de programas comerciales. Los archivos se ubican en el volumen
de DOS EXDEMOS1.HFV y aparecen despues de la instalacion en
un volumen de Executor, en las carpetas 'demos' y 'games'.
Tambien Executor viene con algunas utilidades practicas,
incluidas en el volumen DOS EXSYSTEM.HFV que aparece en la
carpeta 'utils' en su disco de Sistema.
Despus de haber iniciado algunos de estos programas Ud.
probablemente quiera hacer algo util con Executor. Esto
significa conseguir el software que necesite e instalarlo
adecuadamente.
Antes de comenzar a instalar software hay un par de puntos que
deben quedar claros. Primero: Ud. ha de tener un volumen
reservado para contener los archivos que necesita. Tal volumen
puede crearse con MAKHFV siguiendo las instrucciones la seccion
apropiada de este manual. Recuerde que a menos que le diga a
Executor otra cosa, su volumen nuevo ha de tener un sufijo
".hfv" y tiene que ponerse en el mismo directorio que los otros
archivos ".hfv" (\EXECUTOR por defecto).
El programa que crea el volumen nuevo se llama "makehfv" (crear
volumen). Usa tres argumentos; el nombre del archivo DOS
donde radica el volumen, el nombre del volumen como es visto por
cualquier programa que corre bajo Executor y el espacio en bytes
que el volumen ocupa. Los sufijos "k" y "m" puden ser usados para
especificar Kilobytes (1024 bytes) y Megabytes (1024 * 1024 = 1048576
bytes)
Por ejemplo, para crear un volumen de 10 Mb, en el archivo DOS
newvol.hfv, con el nombre interno NewVolume, Ud. ha de
ejecutar este comando:
c:\> makehfv newvol.hfv NewVolume 10m
Cuando arranque Executor de nuevo y vaya viendo los discos
disponibles haciendo clic en el boton "DRIVE" (disco) tendra
un volumen vacio prepara para albergar sus archivos.
Recuerde que Executor es un programa complejo. ARDI ha probado
exhaustivamente a nivel beta este producto, pero la diversidad
de hardware de PC, combinado con la complejidad de emular un
sistema totalmente diferente sobre este hardware hace que las
paradas inesperadas sean posibles. Cuando Executor o su PC se
"cuelgan", cosas impredecibles pueden suceder. Se recomienda
desactivar el cache de escritura al usar Executor. La mayoria
de los sistemas hoy dia usan el SMARTDRIVE de Microsoft, el cual
desactiva el cache de escritura por defecto solo desde la ver.
6.2 de DOS. Si Ud. tiene otra version de MS-DOS, o si lo tiene
activado, haga los siguientes cambios en la linea de SMARTDRV:
SMARTDRV C
en vez de
SMARTDRV C +
Como siempre, es recomendable hacer copia de seguridad de sus
datos frecuentemente.
CONSEGUIR SOFTWARE
------------------
La arquitectura Apple Macintosh es la segunda mas difundida en
el mundo. El software para Mac es casi tan facil de encontrar
como el de PC. Hay sin embargo unas pocas diferencias. El
software comercial tiende a ser mas caro y las actualizaciones
suelen salir mas tarde que sus eqivalentes para Windows. Antes
era al reves, pero las cosas han cambiado.
Un punto importante a tener en cuenta es que Executor, debido a
limitaciones en el equipo PC, solo puede leer disquettes de Alta
Densidad Macintosh HD (SuperDrive) y CD-ROMS formato Macintosh
(mas sobre CD-ROMS despues). Los disquettes SuperDrive son
fisicamente identicos a los HD de PC. (todos ellos tienen un
segundo agujero en el lado contrario de la muesca de proteccion
de escritura). Como los de PC, tienen una capacidad de 1.4 Mb.
Estos discos comparten el mismo formato a bajo nivel, pero tiene
un "formato de archivo" diferente . Es decir; el formato fisico
es igual, es el formato logico el que difiere.
Hay software comercial para Macintosh disponible en muchas
tiendas. Si Ud. no tiene posibilidad de usar un Macintosh "de
verdad" entonces asegurese que los discos que consiga son HD.
En caso contrario, haga que en la tienda se los pasen a HD.
Ya que no todo el software funciona bajo executor es aconsejable
conseguir que en la tienda se lo le dejen probar antes de
comprar.
Busque notas en las que diga que el soft necesita Sistema 7. Si
una aplicacion * requiere * Sistema 7, posiblemente no pueda
funcionar bajo la implementacion actual de Executor.
Buen software para Macintosh puede encontrarse en la mayoria de
las revistas (recuerde comprobar que vienen en discos HD ), en
todas las redes comerciales e Internet.
Si quiere usar software de un CD-ROM Mac, su unidad de CD-ROM
aparecera automaticamente en executor si su controlador de
CD-ROM se adhiere a los estandares MSCDEX de Microsoft, o ASPI
de Adaptec.
Si arranca Executor con un CD-ROM, o un disquette HD Mac ya
insertados, seran reconocidos automaticamente. Si los inserta
despues, habra de pulsar May.-Izda-Alt-2 para que sean
detectados.
Debido a limitaciones de espacio en los disquettes, la mayoria
de las veces el software estara comprimido. El proceso es
similar al de los PCs, donde ZIP, ARC, ARJ y LZH son algunas de
las extensiones usadas para denotar un archivo comprimido.
Sorprendentemente, la variedad de sistemas diferentes de
compresion usados en Macs es tan amplia como la de los PCs y
todos ellos son diferentes entre las dos plataformas. Hay una
utilidad ZIP para el Mac pero no parece que haya software
comprimido con este sistema.
Aunque que las convenciones de nomenclatura para archivos Mac
son mucho menos restrictivas que a la que nos tiene habituados
el PC (el nombre de 8 caracteres y una extension de 3), la
mayoria de las veces el nombre de los archivos comprimidos acaba
en un punto y una extension de tres caracteres.
Considere que el nombre de un archivo Mac, cuando lo encuentra
en un sistema que tiene una convencion de nomenclatura mas
limitada (como MS-DOS), puede que no le deje claro el formato
que tiene. Sin embargo, cuando lo transforma a formato Mac
(como veremos mas adelante) su nombre le dira mas. Por ejemplo
Ud. podria encontrar un archivo llamado ACMECALC.BIN en
CompuServe, que cuando llega a su volumen de Executor,
repentinamente pasa a llamarse 'Acme Super Calculator.sea'.
Los sistemas de compresion mas utilizados y sus extensiones son:
.pit ; Compresion PackIt
.sit ; Compresion Stuffit
.cpt ; Compresion Compact Pro
.dde ; Compresion DiskDoubler
.sea ; Uno de los anteriores, pero auto-extractor.
Para los primero cuatro tipos necesitara el mencionado programa
shareware para sacar el contenido (descomprimirlos). El paquete
completo Stuffit puede manipular los otros formatos. Compact
Pro se encuentra en la carpeta 'utils' de su disco de Sistema.
Stuffit es un programa shareware excelente, y hay un Stuffit
Expander 'freeware' (gratuito), programa que como su nombre
sugiere solo puede 'expandir' un archivo comprimido (Expand
tambien se usa en ingles para decir descomprimir). DiskDoubler
se usa menos que los otros, principalmente porque es software
comercial. De todas maneras hay un descompresor gratuito.
Un archivo .sea basicamente consiste en un archivo comprimido
con un descompresor integrado. Cuando ejecuta un archivo .sea,
este se decomprime automaticamente.
De los mencionados descompresores hay un numero de versiones
diferentes; no todos funcionan con executor. Tambien hay
archivos auto extractores que tienden a colgar a Executor.
Cuando esto sucede hay un simple pero eficaz truco. Hagase con
una utilidad llamada 'DeSEA'. Hace lo que su nombre indica;
convierte un archivo .sea en uno .pit, .sit, o .cpt, que puede
ser descomprimido usando una de las herramientas mencionadas.
Hay un FAQ en Ingles muy bueno sobre los distintos medios de
compresion, .hqx y BinHex, disponible por FTP anonimo de
Internet en:
lugar: sumex-aim.stanford.edu
fichero: /info-mac/comm/info/comp-sys-mac-comm-faq.txt
Cuando el archivo se ha descomprimido, ya estamos listos para
funcionar. Considere que mucho software que viene sobre CDs lo
llenan a capacidad al usar audio y video (llamado QuickTime).
Estos no pueden usarse en executor. Un programa con tal
restriccion probablemente se quejara de que necesita Sistema 7;
la version de sistema Mac que soporta video.
CONSEGUIR SOFTWARE USANDO SU PC
--------------------------------
Lo de arriba esta muy bien, pero podria intentar conseguir
software para Executor descargando archivos desde BBSes y/o
redes como CompuServe, America Online o el Internet. Esto es
posible, aunque una que pizca mas complicado, ya que el PC no es
un Mac (A lo mejor se ha dado cuenta de esto; ARDI existe
gracias a ello).
En el mundo PC cada archivo en su disco duro es una coleccion
logica de datos, con un comienzo, un medio y un fin. En el
Mac cada archivo tiene dos componentes (­no es broma! ), estos
se llaman los "data fork" (parte de datos) y "resource fork"
(parte de recursos). El data fork contiene datos sin un formato
comprensible por el SO Mac. El "resource fork" contiene datos que
el Macintosh comprende y de aqui en adelante pueden usarse
para especificar parametros diversos, por ejemplo iconos. Cada
archivo tiene ambos forks aunque uno (o incluso ambos) puede
estar vacios.
Para permitir la distribucion de archivos Macintosh sobre un
medio no Macintosh, como la mayoria de los BBS, se busco un
sistema para combinar los dos forks en un archivo. Dos de estos
sistemas son conocido como BinHex. BinHex 4 es frecuentemente
conocido como "HQX" y combina ambos forks en un archivo ASCII
unico. BinHex 5 es frecuentemente conocido como "MacBinary" y
combina ambos forks en un solo archivo BINARIO.
Ya que Executor en este momento no soporta I/O serie, todos los
downloads de archivos Mac tienen que hacerse usado su programa
de comunicacion de PC preferido, y su modem para PC. Asi, los
archivos que descargue apareceran en el disco duro de su PC.
Si descripcion del archivo alli donde lo encontro, o su nombre
en el disco duro de su PC indica que esta en formato HQX
(por ejemplo porque su nombre contiene la extension .hqx) hay un
paso extra que tomar.
Un archivo con la extension se ha construido usando version 4.0
de BinHex. Este programa permite que archivos binarios se
transporten sobre redes, que de otra manera tendrian problemas
con ellos, traduciendolos a texto ASCII de 7 bits. Puede ver
esto con su editor DOS favorito; vera una lista interminable de
numeros.
BinHex 5.0 convierte ficheros .hqx automaticamente a su formato
original. Tambien hay un excelente programa shareware llamado
DeHQX que ademas da mucha informacion durante el proceso.
Para conseguir que un archivo convertido aparezca sobre un
volumen Mac de Executor, inicie el programa BinHex en la carpeta
'utils' de su disco de Sistema. En su menu de archivo
encontrara una opcion "Download -> Application". Le
mostrara una caja de dialogo donde puede especificar el archivo
de su volumen PC donde almacenar el resultado. Si todo sale
bien encontrara algun tipo de archivo Mac en el disco de
destino. (Recuerde que Executor en su caja de dialogo inicial
solo le muestra carpetas y programas. Para abrir un archivo
.sit habra de iniciar Stuffit, por ejemplo.)
Si un archivo no es HQX BinHex unicamente copiara el fichero y
creara los forks. BinHex, para averiguar si necesita tomar el
paso extra, busca la frase:
(This file must be converted with BinHex 4.0)
al principio del archivo.
CompuServe tiene su propio buscador de archivos Macintosh que le
permite encontrar el archivo que busca entre los aprox. 20,000
que almacena. Tambien puede encontrarse mucho en Internet.
Busque los archivos SimTel ftp. Otro archivo bueno es el HENSA,
de la Universidad de Lancaster, GB.
Resumiendo; cuando descargue un archivo Mac, este aparecera
como un archivo normal de PC en su disco duro. Ejecute BinHex
para pasarlo a un volumen de Executor. BinHex automaticamente
des-HQX el archivo. Si se requiere ejecute un programa
descompresor.
Si Executor 'toca' un archivo sobre un volumen PC
inmediatamente crea un pseudo resource fork para ese archivo,
que es un archivo aparte con un simbolo de por ciento como
primer caracter. Esto puede confundir a BinHex y a otros
programas, y un fichero 'tocado' podria no ser mostrado nunca mas,
a menos que desactive el "TEXT filter", para que todo los
archivos sean mostrados, en vez de solo los de "TEXT". En tal
caso simplemente borre el archivo de resource fork. Este
problema es realmente un resultado de un bug en Executor y
esperamos que se solucione pronto.
Una nota respecto a los archivos de texto. Cuando adquiera un
archivo de texto que se produjo sobre un Mac notara que ciertos
editores DOS tienen problemas con el hecho de que los Mac usan
solo un caracter LF al final de cada linea, mientras que los PC
usan un par CR,LF. Por suerte el EDIT de DOS puede leer ambos
formatos. Cuando abra un documento Mac de texto, cambie un
caracter y acto seguido guardelo, EDIT lo convertira a formato
de texto PC. Existe una programa shareware o freeware para DOS
llamado MAC2PC80.EXE que hace esto automaticamente.
Si no quiere almacenar un archivo comprimido de texto en un
volumen de Executor pero lo quiere leer usando un editor PC,
hay programas shareware para PC, como UNSTUFF.EXE (gratuito) que
puede descomprimir estos archivos en su PC.
Aparte de archivos que han pasado por BinHex y/o los comprimidos,
hay programas mas complejos que vienen con un 'Instalador'; un
programa que instala el software para que sea copiado
automaticamente en las carpetas apropiadas. Un instalador
normalmente descomprime sus componentes y los esparce por ahi,
por ejemplo en su carpeta Sistema.
El problema aqui es que la mayoria de las veces los instaladores
son programas complejos que pueden confundir a Executor. Varios
instaladores fueron escritos por Apple y tienen informacion
especial sobre las 'tripas' de los Mac que los autores de
Executor no tienen (Executor se escribio usando tecnicas de
'Sala limpia'-- no se desensamblo el Sistema o los ROMs de
Apple). En ese caso tendra que instalar el programa sobre un
Mac de verdad y despues transferir el programa instalado al
volumen de Executor. Despues, si no es un programa de libre
distribucion, borrelo del Mac. Es ilegal no hacerlo.
Respecto a su carpeta de Sistema; esta carpeta actua como el
WIN.INI bajo Windows, es decir, toda aplicacion considera que
esta en su derecho de desordenarla. Una carpeta aparte,
'Preferences', la mayoria de las veces contiene archivos que
guardan cosas como las puntuaciones de los juegos. Ya que el
disco de Sistema de Executor esta limitado en tama¤o, conviene
borrar archivos inutiles de la carpeta Sistema. Sin embargo,
tenga cuidado con el archivo \TMP\EXECOUT.PS. Este archivo es
necesario para imprimir en Executor.
Nota: El tama¤o del disco de Sistema de Executor no es
realmente limitado. Si se le acaba el espacio tiene
que crear un segundo volumen mas grande de Sistema con
MAKEHFV. No llame al volumen DOS EXSYSTEM.HFV, si no algo
diferente, como EXSYS1.HFV asegurandose que su nombre logico sea
System. La linea de comando de MAKEHFV seria:
MAKEHFV EXSYS1.HFV System 2M
para crear un disco de sistema de 2 Mb. Copie todo los
archivos desde el primer disco al segundo disco con HFS_XFER.
Tenga cuidado; ambos discos se llaman System - el vacio
debe ser el destino. Cuando todo este copiado borre
EXSYSTEM.HFV y renombre EXSYS1.HFV a EXSYSTEM.HFV.
Transferir un archivo desde un Mac a Executor mayor de lo que
cabe en un disquette no es tan facil. Intente comprimirlo
primero. Si todavia no cabe puede usar un cable serie y
transferirlo usando dos programas de terminal, o intentar
conseguir un programa que corta archivos en parte.
CREADORES DE ARCHIVO Y TIPOS DE ARCHIVO
----------------------------------------
En un PC una aplicacion normalmente usa la extension de 3
caracteres en el nombre de un archivo para denotar quien lo
creo. Por ejemplo la aplicacion ACMECALC podria crear archivos
con una extension .ACM. La extension tambien puede indicar el
tipo de archivo, como .TXT, que denota un archivo de texto. Esto
ha creado mucha confusion, ya que nadie regula el uso de las
extensiones, y tres letras no dan para mucho.
En los Mac esto esta estandarizado. El Mac usa un sistema en el
que cada archivo tiene un creador de 4 caracteres y un tipo de 4
caracteres. Apple provee una lista de tipos validos. (Esto no
significa que todos sigan las reglas, por supuesto.) El campo de
creador se usa doblemente. Primero le dice al finder del Mac
que aplicacion cargar cuando el usuario hace doble clic en el
icono de un archivo de datos. Segundo, permite que una
aplicacion solo muestre en la caja de dialogo los archivos que
puede manejar.
Normalmente no tiene que preocuparse por esto, pero a veces un
archivo que cree que pertenece a una determinada aplicacion no
puede ser abierto por esta. Si es audaz puede cambiar el tipo y/o
el creador usando una herramienta como File Kit. Viendo la
cantidad de programas que hay para cambiar los tipos y
creadores, podemos llegar a la conclusion de que la confusion
respecto a extensiones es tan grande en los Mac como en los PC.
PROGRAMAS UTILES
-----------------
Aparte de las utilidades ya mencionadas hay un par mas que Ud.
probablemente podria querer buscar. Consiga un procesador
de texto simple como UpWord para editar un archivo ocasional.
Para inspeccionar los contenidos de la mayoria de los documentos
de procesador de texto busque Quill.
Para asegurarse de que los archivos que obtiene no tengan virus
consiga Disinfectant. Solo hay unos veinte virus de Mac, pero
mejor no arriesgar. Ya que Executor es ligeramente diferente
por dentro que un Macintosh, debe ser menos susceptible a la
infeccion de virus que un Mac verdadero, pero mejor no
tentar a la suerte.
Easy Errors le cuenta lo que un numero de error generado por una
aplicacion realmente significa. (¨Quien dijo un Mac era amable
con el usuario? ) Consiga File Kit para ver atributos de archivo
como fecha y longitud.
Para formatear disquettes Mac espere a versiones futuras de
Executor o compre MacDISK de Insignia. Alternativamente compre
discos pre-formateados. Mejor aun: ya que el formato fisico
para disquettes Macintosh es igual a el formato PC Ud. puede
usar DISKCOPY para copiar un disquette Macintosh. Puede usar
MAKEHFV para crear un archivo .hfv con 1440k bytes y despues
copielo a un disco en blanco, si es que tiene las herramientas
para ello.
Es mas dificil obtener lenguajes de programacion Shareware y/o
freeware para PC. Hay algunos compiladores de C freeware,
y ChipMunk Basic es un interprete de Basic simple.
HyperCard de Claris funciona bastante bien, pero algunos stacks
no funcionan bajo HyperCard en Executor. Los stacks de Supercard
funcionan tambien, aunque a veces hay problemas con el color en
las versiones experimentales de Executor que soportan color.
Si quiere aprender a programar para Mac debe prepararse para
una sorpresa. Para comprender como trabaja el Mac necesita
dominar una serie de libros de Apple, que son muchos y caros,
llamados Dentro del Macintosh. Apple prepara una version CD
de estos libros.
Al igual que en Windows, el conocer un lenguaje de programacion no
es suficiente para escribir una buena aplicacion. Para Mac uno
necesita dominar el equivalente de las Windows API, llamado el
Toolbox.
LIMITACIONES SOBRE LO QUE SE EJECUTA BAJO EXECUTOR
---------------------------------------------------
En un Mac de verdad hay muchas formas de interaccion con la
maquina. Aparte de arrancar programas normales, hay
- Accesorios de Escritorio; estos son programas practicos que
pueden encontrarse en el Menu de Apple, tal como HFS_XFER.
- Extensiones; estas amplian el Sistema Mac, por ejemplo para
video.
- Los Paneles de Control; permiten al usuario de Mac controlar
valores diversos de su sistema.
- Inits; programas peque¤os que un Mac carga para dispositivos
especiales y/o funcionalidad.
Aparte de el Accesorio de Escritorio HFS_XFER, Executor
actualmente no puede ejecutar ninguno de los de arriba.
TRANSFERIR DATOS ENTRE APLICACIONES MAC Y SUS EQUIVALENTES DOS
---------------------------------------------------------------
Ud. puede manipular datos en aplicaciones de ambas
plataformas si las mismas son capaces de leer el formato
aplicable, p. ej. un documento de Word para Windows puede
editarse usando Word en Executor.
Si hace que una aplicacion imprima, Executor manda el resultado
a un fichero en \TMP\EXECOUT.PS si el directorio \TMP existe.
Esto es un archivo PostScript que puede imprimirse en una
impresora que soporte PostScript. Tambien puede usar el
paquete freeware GhostScript para verlo u imprimirlo bajo MS-DOS.
Bibliografia
------------
Sugerencias de lectura para saber mas de estos temas:
Titulo Autor Contenido
-------------------------------------------------------------------
Insanely Great Steven Levy History of the Mac
Technical Introduction Apple THE Source to the
Macintosh Family
comp.sys.mac.comm FAQ D.L. Oppenheimer Everything on
datacommunication,
compression and file formats.
Todos los productos y nombres de compa¤ias aqui mencionados estan
registrados y son marcas registradas de sus respectivos propietarios.
Ernst J. Oud Compuserve: 100265,3601 Internet:
ernstoud@euronet.nl
******************************************************************
ERNSTOUD.TXT traducido por Juan Negron. 100014.2742@compuserve.com
Traduccion Rev. 0.99
******************************************************************
+255
View File
@@ -0,0 +1,255 @@
READ THE FAQ
This document includes the bare basics needed to get started.
However, once you've installed Executor, you should read the file
"docs\faq". It contains answers to Frequently Asked Questions,
including Executor's price (right now $49 for students, faculty and
staff of educational institutions and $99 for everyone else) as well
as upgrade policies and how to order.
1.99<x> DENOTES EXPERIMENTAL VERSIONS OF EXECUTOR
In an effort to keep our customers in the development loop, we are
periodically releasing experimental versions of Executor. These
experimental versions are numbered 1.99a, 1.99b, 1.99c, etc. We try
not to break features with new releases, but sometimes that happens,
so be aware that anything mentioned in these notes may fail to work.
If you have a previous version of Executor installed, you may not want
to delete your current version until you're sure the latest version is
in fact better for you.
In addition to the text files in the doc subdirectory mentioned above,
another good source of information about Executor is the Usenet
newsgroup "comp.emulators.mac.executor", or the Executor interest
mailing list. The newsgroup and the mailing list are connected via a
bidirectional gateway.
To join the mailing list, send e-mail to "executor-request@ardi.com"
or "executor-digest-request@ardi.com" with a blank subject line and a
body that says "subscribe". With the first address, you'll receive
e-mail everytime someone sends anything to the mailing list. With the
digest form, you'll receve e-mail only once a day with all the
previous day's traffic bundled into one digest.
You can then send messages to the entire group by sending to
"executor@ardi.com". Some of the people on the list have been using
Executor under NEXTSTEP for a couple of years and under DOS for a
year, and of course we closely follow that mailing list, even though
we don't directly administer it.
HOW TO INSTALL
This distribution has an installation program which will automatically
install Executor from two floppies. To run the installation script,
make sure that the first floppy (the one with this README.1ST file on
it) is in your 3.5" floppy drive. If that drive is drive "A:", all
you need to do is:
C:\> A:\INSTALL
The installer program will allow you to install Executor anywhere on
your hard drive.
IMPORTANT:
If you are using disk cacheing you should set it to only do read
caches. Write caches can result in the ".hfv" files being
corrupted if Executor dies unexpectedly. (NOTE: if you forget to
turn off your write cache, you may have to reinstall the ".hfv"
files after Executor crashes).
MORE INFORMATION AVAILABLE AFTER YOU INSTALL
The installation process creates a "docs" directory that contains
other files that may help you to better understand Executor. The most
important of these is called "faq", which stands for "answers to
Frequently Asked Questions".
EXECUTOR NEEDS A MOUSE DRIVER TO WORK
In addition to needing a mouse to be physically connected to your
computer, Executor requires a mouse driver to be loaded before it can
run. If Executor complains that you don't have a mouse installed,
even though you have one connected, the problem is that your
autoexec.bat does not load the mouse driver for use with DOS programs.
Since many people only use their mouse with Windows, which has its own
mouse driver, they don't have the mouse driver commands in their
autoexec.bat.
The exact changes that need to be made to your autoexec.bat varies
depending on what type of mouse you have, and where the mouse driver
has been installed on your system. In general, anyone knowledgeable
about your particular configuration should be able to give you simple
instructions for modifying your autoexec.bat, whether that's the
technical support line of the company that made the machine, or your
local DOS wizard.
HOW TO GET STARTED COPYING MACINTOSH FORMATTED FLOPPIES
Executor/DOS can only read High Density (1.4 MB) formatted floppies.
Most older Macintosh applications were distributed on 800K floppies
which can't be used with Executor, so MAKE SURE you use 1.4 MB
Macintosh formatted floppies with Executor/DOS. Executor/DOS doesn't
low format floppies for you, but it will reformat a DOS floppy as a
Macintosh floppy, but only if you insert the floppy into the floppy
drive *after* Executor has brought up its desktop.
It is important to note that you have three different areas that you
can copy to/from. In addition to Macintosh formatted floppies, you
can copy Macintosh files to your hard disk, either as DOS files, or as
Macintosh files within a single DOS file which represents a Macintosh
"volume". Executor/DOS 1.99<x> also allows you to copy to/from Mac
formatted SCSI drives (if you have a SCSI adapter) and copy from Mac
formatted CD ROMs if you have a CD ROM drive (must be seen as drive H:
or lower).
When you copy Mac files as DOS files, they are broken up in two
halves. One half will have the original name of the file, the other
will have a "%" prepended to the original name. The file with the
original name represents the "data fork" of the Macintosh file, and
that's where data that can be used in both Macintosh and DOS
environments resides. The other half, the one with the "%" prepended
is the "resource fork" and it contains information that only makes
sense in the Macintosh environment.
Using the DOS filesystem to represent Macintosh files is very awkward.
In fact, if the names contain funny characters, you might get an "I/O
error". The alternative is to store files within a single "Macintosh
Volume". This demo version of Executor comes with a 4 MB Mac Volume.
It should be sufficient to allow you to explore Executor. While
Executor is working within a Macintosh volume, files can have upper
and lower case names with lengths up to 31 characters, but your DOS
programs can't see the individual files. More about what's going on
is in the printed documentation.
USING MAKEHFV TO CREATE A NEW VOLUME
Although we don't supply documentation with this demo version of
Executor, you may notice the "MAKEHFV" program in the "\EXECUTOR"
directory. If you are adventurous and want to use makehfv, it is
important that the new volume that you create have the suffix ".HFV".
If you do not call your new volume "something.HFV", Executor will
ignore it.
RUNNING PROGRAMS DIRECTLY OFF FLOPPIES
Running programs directly off floppies is incredibly slow. You will
find it much quicker to use HFS_XFer to copy a program from a floppy
into one of your ".hfv" files and then run the program directly out of
the ".hfv" file.
UNIXISMS LEFT IN EXECUTOR
Executor was developed originally under UNIX. A few "UNIXisms" have
remained in Executor; they may be gone in 2.0. Sometimes you will see
"/" used where "\" would normally be used in DOS. In addition,
switches are introduced with a leading "-" instead of "/". We
apologize for this annoyance.
USE WITH WINDOWS
Executor/DOS 1.99<x> will run under Windows 3.1.
You can make a double-clickable icon for Executor by using the Program
Manager in Windows:
Choose "New..." from the Program Manager "File" menu
Click the "Program Item" radio button
Click "OK"
Enter "Executor" in the Description field
Enter "c:\executor\executor" in the Command Line field
Enter "c:\executor" in the Working Directory field
Add a Shortcut Key if you wish
Click on "Change Icon...
Click on "OK" when the error message comes up
Find, Select and Click OK on an Icon you like
Click on "OK" to leave "Program Item Properties"
Remember, Executor is its own windowing system. It does not need
Windows to be effective, although the only way you can run two Mac
programs at once it to do so under Windows. Once you have one copy of
Executor running under Windows, you can use "Left_Alternate-Tab" and
"Right_Alternate-Enter" to hot-key back and forth between different
programs and screen modes.
USE WITH OS/2
Executor/DOS 1.99<x> works with OS/2 2.11, but not with previous versions.
To get E/D 1.99<x> to run you'll need to adjust use these settings:
DPMI_DOS_API ENABLED
DPMI_MEMORY_LIMIT 16
EMS_MEMORY_LIMIT 0
XMS_MEMORY_LIMIT 0
USE WITH NT
Currently, Executor/DOS 1.99<x> does not run under Windows NT.
IF EXECUTOR RUNS SLOWLY
Executor needs about 4 MB of memory to work efficiently. If it does
not have enough physical memory, it will make do by writing
infrequently used parts of itself to your hard disk and only "paging"
them in when they're actually used. However, DOS systems can have
their memory artificially eaten up in too many ways to describe here.
If think Executor is running slowly, you might want to have a DOS guru
check to make sure that it's not being memory starved.
CREDITS
Executor is a product of ARDI (Abacus Research and Development, Inc.).
The majority of Executor proper was designed and implemented by
Clifford T. Matthews. The synthetic CPU and DOS port were done by
Mathew Hostetter. Executor was originally written under X-Windows,
then ported to NEXTSTEP and finally ported to DOS using DJGPP, a port
of the Free Software Foundation's gcc compiler done by DJ Delorie,
Charles Sandmann and others. The 387 emulator that we use was written
by William Metzenthen.
More information about the Free Software Foundation and DJGPP is
included in our documentation.
Thanks!
Clifford T. Matthews questions@ardi.com
Founder +1 505 766 9115 Phone
ARDI +1 505 247 1899 FAX
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
File diff suppressed because it is too large. Load diff
+149
View File
@@ -0,0 +1,149 @@
<html>
<head><title>
Executor Frequently Asked Questions with Answers
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor Frequently Asked Questions with Answers
</h1>
This is the list of Frequently Asked Questions about Executor, the
commercial Macintosh emulator for DOS, Windows, OS/2, and Linux. This
set of answers to Frequently Asked Questions is not designed to take the
place of our Executor manual. However, currently our manual is not
available on-line, so this FAQ does briefly touch on some issues that
are covered more in depth in our manual.
<p>
In addition to this FAQ, there should be README files bundled with
Executor and there is also an Executor/DOS document that describes how
to get started with Executor/DOS from a DOS user's point of view,
which may be useful to users of Executor on other platforms as well.
That document is called &quot;ERNSTOUD.TXT&quot;, since it's hard to
come up with useful names when constrained by the DOS 8.3 filename limits and
the author of the document is Ernst J. Oud.
<p>
Please check out these documents and this FAQ, before sending e-mail
to ARDI or the Executor Interest mailing list.
<p>
A new version of this document appears frequently.
If this copy is more than a month old it may be out of date.
<p>
Index
</h1>
<ul>
<h2><li><a href="section1.html" rel=subdocument>Section 1. Executor in General</a></li></h2>
<li><a href="section1.html#q_1_1" rel=subdocument>Q1.1. What is the correct pronunciation?</a></li>
<li><a href="section1.html#q_1_2" rel=subdocument>Q1.2. Does Executor require ROMs or System Files from
Apple?</a></li>
<li><a href="section1.html#q_1_3" rel=subdocument>Q1.3. Is Executor shareware?</a></li>
<h2><li><a href="section2.html" rel=subdocument>Section 2. Executor's Limitations</a></li></h2>
<li><a href="section2.html#whatversion" rel=subdocument>Q2.1. What version of the Macintosh operating system does Executor
emulate?</a></li>
<li><a href="section2.html#limitations" rel=subdocument>Q2.2. What limitations does Executor 2 have?</a></li>
<li><a href="section2.html#q_2_3" rel=subdocument>Q2.3. If I have 800 KB floppies, what can I do?</a></li>
<li><a href="section2.html#q_2_4" rel=subdocument>Q2.4. Does Executor have networking support?</a></li>
<li><a href="section2.html#q_2_5" rel=subdocument>Q2.5. How do you install Fonts and Desk Accessories
(DAs)?</a></li>
<li><a href="section2.html#q_2_6" rel=subdocument>Q2.6. Will Desk Accessories work under Executor?</a></li>
<li><a href="section2.html#q_2_7" rel=subdocument>Q2.7. Why do some installers not work?</a></li>
<h2><li><a href="section3.html" rel=subdocument>Section 3. Using Executor</a></li></h2>
<li><a href="section3.html#wherecmd" rel=subdocument>Q3.1. Where are the Cmd (Clover) and Option keys?</a></li>
<li><a href="section3.html#q_3_2" rel=subdocument>Q3.2. What is an image file?</a></li>
<li><a href="section3.html#q_3_3" rel=subdocument>Q3.3. Can I launch applications directly from the command
line?</a></li>
<li><a href="section3.html#ghostfonts" rel=subdocument>Q3.4. I installed a font in Executor, but I still can't print in it. What's
the deal?</a></li>
<li><a href="section3.html#q_3_5" rel=subdocument>Q3.5. Can I have Executor use more than 8 MB for the application
zone?</a></li>
<li><a href="section3.html#q_3_6" rel=subdocument>Q3.6. An application I'm trying crashes. What should I
do?</a></li>
<li><a href="section3.html#q_3_7" rel=subdocument>Q3.7. Why do some applications claim I don't have an
FPU?</a></li>
<li><a href="section3.html#compact" rel=subdocument>Q3.8. Why does Compact Pro have trouble with multi-volume
archives?</a></li>
<li><a href="section3.html#internet" rel=subdocument>Q3.9. How can I use Mac software from the internet?</a></li>
<li><a href="section3.html#q_3_10" rel=subdocument>Q3.10. How can I use Mac software from Bulletin
Boards?</a></li>
<li><a href="section3.html#q_3_11" rel=subdocument>Q3.11. How can I use Mac software from AOL?</a></li>
<li><a href="section3.html#textfiles" rel=subdocument>Q3.12. Why do files which aren't text files look like text
files?</a></li>
<li><a href="section3.html#q_3_13" rel=subdocument>Q3.13. What does &quot;You may open a 32000 character selection&quot;
mean?</a></li>
<li><a href="section3.html#q_3_14" rel=subdocument>Q3.14. What is Speedometer?</a></li>
<li><a href="section3.html#q_3_15" rel=subdocument>Q3.15. How can I get a screen dump of Executor?</a></li>
<li><a href="section3.html#q_3_16" rel=subdocument>Q3.16. How does your Browser show file size?</a></li>
<li><a href="section3.html#q_3_17" rel=subdocument>Q3.17. How does your Browser show free space?</a></li>
<li><a href="section3.html#q_3_18" rel=subdocument>Q3.18. Why does Browser display question marks for some
documents?</a></li>
<h2><li><a href="section4.html" rel=subdocument>Section 4. Executor/Win32</a></li></h2>
<li><a href="section4.html#q_4_1" rel=subdocument>Q4.1. How does Executor/Win32 compare to Executor/DOS?</a></li>
<li><a href="section4.html#q_4_2" rel=subdocument>Q4.2. How do I use command-line switches with Executor/Win32?</a></li>
<li><a href="section4.html#q_4_3" rel=subdocument>Q4.3. Why do I get only a black screen when running
Executor/Win32?</a></li>
<h2><li><a href="section5.html" rel=subdocument>Section 5. Executor/Linux</a></li></h2>
<li><a href="section5.html#q_5_1" rel=subdocument>Q5.1. I can't get the option key to work under X. What should I
do?</a></li>
<li><a href="section5.html#q_5_2" rel=subdocument>Q5.2. Where are the bitmaps stored on the Linux version of
executor?</a></li>
<li><a href="section5.html#svgamouse" rel=subdocument>Q5.3. My mouse won't work with the SVGALIB version. What's the
deal?</a></li>
<li><a href="section5.html#linuxb" rel=subdocument>Q5.4. How do I get E/L to see my second floppy
drive?</a></li>
<li><a href="section5.html#q_5_5" rel=subdocument>Q5.5. Why does Lemmings's splash screen take so long to be
drawn?</a></li>
<li><a href="section5.html#q_5_6" rel=subdocument>Q5.6. What free projects has ARDI supported?</a></li>
<li><a href="section5.html#q_5_7" rel=subdocument>Q5.7. Is Executor localized for languages other than
English?</a></li>
<li><a href="section5.html#q_5_8" rel=subdocument>Q5.8. Can I Macintosh format disk drives?</a></li>
<li><a href="section5.html#q_5_9" rel=subdocument>Q5.9. How can Executor be configured for multiple
users?</a></li>
<h2><li><a href="section6.html" rel=subdocument>Section 6. Executor/DOS</a></li></h2>
<li><a href="section6.html#whatishfv" rel=subdocument>Q6.1. What is an HFV file?</a></li>
<li><a href="section6.html#makehfv" rel=subdocument>Q6.2. What is makehfv?</a></li>
<li><a href="section6.html#q_6_3" rel=subdocument>Q6.3. What are the hardware requirements for Executor/DOS?</a></li>
<li><a href="section6.html#vesa" rel=subdocument>Q6.4. What do I do if my Super VGA card isn't VESA
compliant?</a></li>
<li><a href="section6.html#white" rel=subdocument>Q6.5. Why is there a bright white border on the
screen?</a></li>
<li><a href="section6.html#doa" rel=subdocument>Q6.6. E/D dies during startup. Why?</a></li>
<li><a href="section6.html#winwedge" rel=subdocument>Q6.7. E/D runs under DOS, but not from Windows. What do I
do?</a></li>
<li><a href="section6.html#q_6_8" rel=subdocument>Q6.8. What causes errors when transferring files?</a></li>
<li><a href="section6.html#q_6_9" rel=subdocument>Q6.9. Why does my screen look funny when I run
Executor?</a></li>
<li><a href="section6.html#q_6_10" rel=subdocument>Q6.10. Does E/D require an ASPI driver to access
SCSI?</a></li>
<li><a href="section6.html#q_6_11" rel=subdocument>Q6.11. Why won't Executor/DOS work with my Diamond Viper PCI
card?</a></li>
<li><a href="section6.html#q_6_12" rel=subdocument>Q6.12. Why doesn't my mouse work when I run Executor under OS/2
Warp?</a></li>
<li><a href="section6.html#q_6_13" rel=subdocument>Q6.13. Any OS/2 Warp suggestions?</a></li>
<li><a href="section6.html#q_6_14" rel=subdocument>Q6.14. Does Executor/DOS work under Windows 95?</a></li>
<li><a href="section6.html#dosbugs" rel=subdocument>Q6.15. Executor/DOS dies, what should I do?</a></li>
<li><a href="section6.html#q_6_16" rel=subdocument>Q6.16. How does printing work under E/D?</a></li>
<li><a href="section6.html#q_6_17" rel=subdocument>Q6.17. Why does E/D under Windows 3.x have problems
hot-keying?</a></li>
<li><a href="section6.html#q_6_18" rel=subdocument>Q6.18. Why can't I eject or format my DOS formatted
floppy?</a></li>
<li><a href="section6.html#q_6_19" rel=subdocument>Q6.19. Do E/D and QEMM fight?</a></li>
<li><a href="section6.html#q_6_20" rel=subdocument>Q6.20. Does Executor fight with Novell DPMS?</a></li>
<li><a href="section6.html#q_6_21" rel=subdocument>Q6.21. How can I speed up Executor/DOS?</a></li>
<li><a href="section6.html#q_6_22" rel=subdocument>Q6.22. How do I make Executor/DOS run faster under
VirtualPC</a></li>
<h2><li><a href="section7.html" rel=subdocument>Section 7. Esoterica</a></li></h2>
<li><a href="section7.html#q_7_1" rel=subdocument>Q7.1. May I bundle the DEMO version of Executor on a
CD-ROM?</a></li>
<li><a href="section7.html#thanks" rel=subdocument>Q7.2. Who wrote this FAQ? Who helped?</a></li>
<li><a href="section7.html#faqcopyright" rel=subdocument>Q7.3. Is this FAQ Disclaimed and Copyrighted?</a></li>
</ul><hr>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+51
View File
@@ -0,0 +1,51 @@
<html>
<head><title>
Executor FAQ - Section 1
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 1 <br>
Executor in General
</h1>
<ul>
<li><a href="#q_1_1" rel=subdocument>Q1.1. What is the correct pronunciation?</a></li>
<li><a href="#q_1_2" rel=subdocument>Q1.2. Does Executor require ROMs or System Files from
Apple?</a></li>
<li><a href="#q_1_3" rel=subdocument>Q1.3. Is Executor shareware?</a></li>
</ul><hr>
<A name="q_1_1"><h2>
Question 1.1. What is the correct pronunciation?
</h2></A>
Ig-ZEK-yu-tor
<A name="q_1_2"><h2>
Question 1.2. Does Executor require ROMs or System Files from
Apple?
</h2></A>
No. Executor re-implements from scratch a subset of the routines that
make up Apple's Macintosh Operating System and Toolbox.
<A name="q_1_3"><h2>
Question 1.3. Is Executor shareware?
</h2></A>
NO. Executor is a commercial program.
<p>
We do make demo versions which have some significant functionality
removed from them. The demo versions are the only versions that
should be found on bulletin boards or FTP sites. If you find a
non-limited version of Executor available to download, it was put
there illegally and it is illegal to use it.
<hr>
Next: <a href="section2.html" rel=precedes>Executor's Limitations</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+155
View File
@@ -0,0 +1,155 @@
<html>
<head><title>
Executor FAQ - Section 2
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 2 <br>
Executor's Limitations
</h1>
<ul>
<li><a href="#whatversion" rel=subdocument>Q2.1. What version of the Macintosh operating system does Executor
emulate?</a></li>
<li><a href="#limitations" rel=subdocument>Q2.2. What limitations does Executor 2 have?</a></li>
<li><a href="#q_2_3" rel=subdocument>Q2.3. If I have 800 KB floppies, what can I do?</a></li>
<li><a href="#q_2_4" rel=subdocument>Q2.4. Does Executor have networking support?</a></li>
<li><a href="#q_2_5" rel=subdocument>Q2.5. How do you install Fonts and Desk Accessories
(DAs)?</a></li>
<li><a href="#q_2_6" rel=subdocument>Q2.6. Will Desk Accessories work under Executor?</a></li>
<li><a href="#q_2_7" rel=subdocument>Q2.7. Why do some installers not work?</a></li>
</ul><hr>
<A name="whatversion"><h2>
Question 2.1. What version of the Macintosh operating system does
Executor emulate?
</h2></A>
Executor knows how to emulate most of System 7.0, but the default
version that Executor reports to applications is System 6.0.7, because
some bad programs make calls to undocumented System 7.0 traps if we
acknowledge that we've implemented System 7.0. Each time a different
application is run under Executor, Executor checks an application
specific configuration file for application specific settings. Many
of the configuration files adjust the System to 7.0.
<p>
You can manually adjust the system version. Start Executor and call
up the Preferences Panel with Cmd-shift-5 [see
<A href="section3.html#wherecmd">Q3.1 `Where are the Cmd (Clover) and Option keys?'</A>]. Set the System to 7 and click OK (don't save yet; these are just the
Browser settings). Now start your application, call up the
Preferences Panel again, and save it with the System 7 setting. After
that, Executor will automatically invoke System 7 support when you run
that application.
<A name="limitations"><h2>
Question 2.2. What limitations does Executor 2
have?
</h2></A>
Because the OS and Toolbox have been rewritten from scratch, Executor
2 has limitations, including no serial port access, no modem use, no
AppleTalk, primitive sound, limited System 7 support, no INITs, no
CDEVs and no Internationalization.
<p>
Executor can read and write 1.44 MB Mac formatted floppy disks, but
due to limitations in PC hardware, <em>can't</em> read or write 800 KB floppy disks.
<p>
In the lab we have limited serial port access and we're working on
improving sound.
<A name="q_2_3"><h2>
Question 2.3. If I have 800 KB floppies, what can I
do?
</h2></A>
Very little. It is not ARDI's fault and there's nothing we can do
about it, but the way that Apple squeezed 800 KB onto floppies when
PCs were only getting 720 KB on floppies was to write more data on the
floppy tracks far from the center than on the tracks near the center.
This was clever, but extremely incompatible.
<p>
There <em>are</em> ways to squeeze more information onto PC floppy
drives than PCs usually use. However, these methods
<em>cannot</em> be used to write or even read 800 KB Macintosh formatted floppies.
<p>
Luckily, very little is supplied on 800 KB floppies anymore, but if
you have some, you're almost definitely going to need the use of a
Macintosh somewhere to copy the contents onto &quot;HD&quot; 1.4 MB
formatted floppies (PCs and Macs use the same low-level format for 1.4 MB
floppies).
<p>
One Executor Enthusiast suggested using Kinko's public Macs for this
purpose, and this description was given:
<pre>
1. Moving 800 KB Mac Files onto 1.44 MB Mac disks. The easiest thing
that I have found when working on a real Mac is to preformat the
Mac disks to 1.44 MB. Insert the 1.44 MB disk and eject it with
(Cmd-E). Then insert the 800 KB mac disk. Drag the icon of the 800
KB disk over the 1.44 MB disk. All the files will be transferred as
will the file names. The Mactools fastcopy program can also copy
between densities.
2. Kinko's Public Machines. Kinko's public Macs are equipped with a
program known as &quot;Desk Tracy&quot; which is designed to stop people from
pirating Kinko's software from the hard disk. The problem is that when
you are copying files between your own disks the program will still
trigger if the file has a namesake on the Kinko's machine. What you
will need to do is get a Kinko's employee to shut the program off,
which is obviously a discretionary call with them. I didn't have a
problem and have done it twice, but we obviously will be using
different Kinko's.
</pre>
<A name="q_2_4"><h2>
<br>
Question 2.4. Does Executor have networking
support?
</h2></A>
Currently, no. Some Networking support may be included in Executor 3,
but we do not yet have an estimated date of completion for Executor 3.
The first platform to have networking support built in will probably
be Linux. NOTE: networking support will most likely first be an
implementation of Open Transport and/or MacTCP, followed by EtherTalk.
Supporting AppleTalk over serial lines is unlikely to happen due to
differences in PC and Mac hardware.
<A name="q_2_5"><h2>
Question 2.5. How do you install Fonts and Desk Accessories
(DAs)?
</h2></A>
You just drag them into the hot-band and our browser will do the right
thing. However, we only support bit-mapped fonts, not Type 1 or
TrueType fonts. In addition, there is a bug which causes the hot-band
to forget which desk accessories have been loaded, which then makes it
impossible to remove desk accessories.
<A name="q_2_6"><h2>
Question 2.6. Will Desk Accessories work under
Executor?
</h2></A>
Currently Desk Accessory support is very weak; most will not run.
When we add support for extensions, we'll also go back and fix some
desk accessory bugs.
<A name="q_2_7"><h2>
Question 2.7. Why do some installers not
work?
</h2></A>
Currently there is one major class of application installer that is
known not to work with Executor. Installers based on Apple's old
Installer do not work. An example is Microsoft Word 5's installer.
Some installers require that you use Cmd-shift-5 and set the system
version to 7 and turn on the &quot;Pretend&quot; options before
they'll work properly. <hr>
Next: <a href="section3.html" rel=precedes>Using Executor</a>.<br>
Back: <a href="section1.html" rev=precedes>Executor in General</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+433
View File
@@ -0,0 +1,433 @@
<html>
<head><title>
Executor FAQ - Section 3
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 3 <br>
Using Executor
</h1>
<ul>
<li><a href="#wherecmd" rel=subdocument>Q3.1. Where are the Cmd (Clover) and Option keys?</a></li>
<li><a href="#q_3_2" rel=subdocument>Q3.2. What is an image file?</a></li>
<li><a href="#q_3_3" rel=subdocument>Q3.3. Can I launch applications directly from the command
line?</a></li>
<li><a href="#ghostfonts" rel=subdocument>Q3.4. I installed a font in Executor, but I still can't print in it. What's
the deal?</a></li>
<li><a href="#q_3_5" rel=subdocument>Q3.5. Can I have Executor use more than 8 MB for the application
zone?</a></li>
<li><a href="#q_3_6" rel=subdocument>Q3.6. An application I'm trying crashes. What should I
do?</a></li>
<li><a href="#q_3_7" rel=subdocument>Q3.7. Why do some applications claim I don't have an
FPU?</a></li>
<li><a href="#compact" rel=subdocument>Q3.8. Why does Compact Pro have trouble with multi-volume
archives?</a></li>
<li><a href="#internet" rel=subdocument>Q3.9. How can I use Mac software from the internet?</a></li>
<li><a href="#q_3_10" rel=subdocument>Q3.10. How can I use Mac software from Bulletin
Boards?</a></li>
<li><a href="#q_3_11" rel=subdocument>Q3.11. How can I use Mac software from AOL?</a></li>
<li><a href="#textfiles" rel=subdocument>Q3.12. Why do files which aren't text files look like text
files?</a></li>
<li><a href="#q_3_13" rel=subdocument>Q3.13. What does &quot;You may open a 32000 character selection&quot;
mean?</a></li>
<li><a href="#q_3_14" rel=subdocument>Q3.14. What is Speedometer?</a></li>
<li><a href="#q_3_15" rel=subdocument>Q3.15. How can I get a screen dump of Executor?</a></li>
<li><a href="#q_3_16" rel=subdocument>Q3.16. How does your Browser show file size?</a></li>
<li><a href="#q_3_17" rel=subdocument>Q3.17. How does your Browser show free space?</a></li>
<li><a href="#q_3_18" rel=subdocument>Q3.18. Why does Browser display question marks for some
documents?</a></li>
</ul><hr>
<A name="wherecmd"><h2>
Question 3.1. Where are the Cmd (Clover) and Option
keys?
</h2></A>
On a PC keyboard, Executor uses the left &quot;Alt&quot; key as a Cmd
key and the right &quot;Alt&quot; key as the Option key.
<A name="q_3_2"><h2>
Question 3.2. What is an image file?
</h2></A>
Some Macintosh sites contain image files that are exact copies of a
Macintosh Hierarchical FileSystem (HFS) volume with a few bytes of
header information prepended. Executor allows you to use image
files just like HFVs, although they should have the suffix
&quot;<code>.ima</code>&quot; instead of &quot;<code>.hfv</code>&quot;.
<A name="q_3_3"><h2>
Question 3.3. Can I launch applications directly from the command
line?
</h2></A>
Yes. If an application resides within a UNIX or DOS filesystem, you
can specify the name of the application, and documents that you would
like the application to open when it starts up, on the command line.
Applications that reside in HFV files are specified using colons to
delimit the pathname, e.g. &quot;<code>executor MyVolume:directory:application</code>&quot;.
<A name="ghostfonts"><h2>
Question 3.4. I installed a font in Executor, but I still can't print
in it. What's the deal?
</h2></A>
You have to install the same font in Ghostscript. Otherwise,
Ghostscript will use the default Helvetica font since it can't find
the one you want. Don't forget to add the paths to the fonts into
your fonts pfb file.
<A name="q_3_5"><h2>
Question 3.5. Can I have Executor use more than 8 MB for the
application zone?
</h2></A>
You can use up to 64 MB for the applzone.
<A name="q_3_6"><h2>
Question 3.6. An application I'm trying crashes. What should I
do?
</h2></A>
Perhaps the most common avoidable cause of crashes is insufficient
memory for the emulated application. You can fix this by increasing
the &quot;applzone&quot; parameter. For example, many programs which
normally die quickly will work with &quot;executor -applzone 4m&quot; (which
allocates 4 MB of space for the emulated application; see the list of command line
switches and their meanings elsewhere in this document).
<p>
DOS NOTE: If you run &quot;executor -info&quot;, it will tell you how
much DPMI memory is available and how much memory is being used by the applzone,
syszone and stack. If there is less DPMI memory available than the
sum of the applzone, syszone and stack memory requirements, then
Executor will page between DPMI memory and a special
&quot;paging&quot; disk file. This paging slows you down and also consumes disk space. It is
possible to manually override the applzone, syszone and stack defaults
with smaller values, but when you do so, you run the risk of not
having enough memory for an application to run. Unfortunately,
Macintosh programs are often not polite at all when they do not have
enough memory. The Lemmings demo is an example of such a program; if
you run that program on a real Mac and only give it 1200k of memory,
weird errors will occur. Doing the same under Executor will also
yield weird errors.
<p>
If Executor needs to make a paging file, and there is not enough disk
space to create one, you will get an error message during Executor's
startup. If you have the environment variable &quot;TEMP&quot; set,
then Executor will try to place its paging file there, so if TEMP is set to
point to a small RAM disk, or a disk that is nearly filled, Executor
may run out of memory too easily.
<p>
Some programs are unhappy with Executor's limited sound support, and
crash. You can turn on the &quot;pretend sound&quot; option before
running the application in question and see if this helps. In addition, some
programs have menu items, or preference check boxes that can be used
to disable sound. It is always recommended that you disable sound
from within a program in addition to using the Executor sound
preferences, if you have to disable sound.
<p>
One example of a program that will have problems with sound is
&quot;Ultimate Solitaire&quot;. If you do not disable sound from
within Ultimate Solitaire, the game will play fine, until you win. At that
point it will tell Executor to start playing a sound and request that
Executor notify it when the sound is done playing. If sound is off,
this will result in Ultimate Solitaire hanging after you win a game.
<p>
Some programs also save preferences in a file, and if something bad
happens to that file, the program can then get confused and will not
run properly. Occasionally this happens to Microsoft Word, and you
need to use the browser to delete the file &quot;Word
Preferences&quot; from your &quot;System Folder&quot;.
<p>
Although it should not happen, even our file browser keeps a file
around that can cause trouble if it becomes corrupt. That file is
&quot;godata.sav&quot;. It stores which folders you have open and the
contents of your &quot;hot-band&quot;. If that file gets corrupt, the file
browser may not run. In the rare case that the browser won't run, you can use the
&quot;-nobrowser&quot; switch when you start Executor to bypass the
browser, but to get the browser back you'll need to either delete
&quot;godata.sav&quot; somehow or replace exsystem.hfv with one from the original
distribution.
<A name="q_3_7"><h2>
Question 3.7. Why do some applications claim I don't have an
FPU?
</h2></A>
The problem is probably that the applications you are trying to use
try to directly manipulate the FPU unit that some Macintoshes have.
<p>
The key words are &quot;directly manipulate&quot;. Apple warned
software makers to not directly manipulate the FPU, but to instead use their numerics
library (&quot;SANE&quot; Standard Apple Numerics Environment).
Programs that don't use SANE, but directly manipulate the FPU run faster on Macs
that have FPUs, but don't run at all on Macs that don't have FPUs. If
that is actually the source of your problems, then such programs also
wouldn't run on Apple machines like the Quadra 605. This limitation
is also present on Apple's PowerPC based Macs.
<p>
One workaround for this problem is an &quot;INIT&quot; called
&quot;SoftFPU&quot;. SoftFPU will make a Mac without a co-processor work as though there is
one there, however the floating point computation will be done very
slowly. However, SoftFPU can't be used with Executor until Executor
supports INITs.
<A name="compact"><h2>
Question 3.8. Why does Compact Pro have trouble with multi-volume
archives?
</h2></A>
Executor takes a short cut that causes trouble for some programs;
Compact Pro is one of them. The problem is that a real Macintosh can
keep track of volumes that are not physically in the drive. That is
why Macintoshes sometimes tell you to put one disk in their floppy
drive, then they eject it and ask for another one, then eject it and
ask for the first one. Executor currently isn't so clever. When a
disk is ejected, Executor forgets about it. Few programs count on the
behavior of a real Mac, but those that do currently won't work with
Executor.
<p>
In Compact Pro's case you can just copy all of the pieces of the
archive to your hard disk, then open the last piece from the hard disk
and everything will work properly. This workaround requires more hard
disk space than you'd need if you could just read the pieces off a
succession of floppies.
<p>
Since this difference affects very few programs, it's not as high
priority as adding other new features.
<A name="internet"><h2>
Question 3.9. How can I use Mac software from the
internet?
</h2></A>
Find a site that legitimately has Mac software for use. There is a
Macintosh FAQ that lists many sites -- here are some of them:
<ul>
<li><code>www.ardi.com</code> : <A href="ftp://www.ardi.com/pub/samples"><code>/pub/samples</code></A> (USA) </li>
<li><code>liquify.isca.uiowa.edu</code> : <A href="ftp://liquify.isca.uiowa.edu/mac/infomac"><code>/mac/infomac</code></A> (USA) </li>
<li><code>wuarchive.wustl.edu</code> : <A href="ftp://wuarchive.wustl.edu/systems/mac/info-mac"><code>/systems/mac/info-mac</code></A> (USA) </li>
<li><code>ftp.technion.ac.il</code> : <A href="ftp://ftp.technion.ac.il/pub/unsupported/mac"><code>/pub/unsupported/mac</code></A> (Israel) </li>
<li><code>ftp.sunset.se</code> : <A href="ftp://ftp.sunset.se/pub/mac"><code>/pub/mac</code></A> (Sweden) </li>
<li><code>src.doc.ic.ac.uk</code> : <A href="ftp://src.doc.ic.ac.uk/packages/info-mac"><code>/packages/info-mac</code></A> (UK) </li>
<li><code>ftp.is.co.za</code> : <A href="ftp://ftp.is.co.za/info-mac"><code>/info-mac</code></A> (South Africa) </li>
</ul>
<p>
Our <A href="ftp://ftp.ardi.com/pub/samples">samples directory</A> is there to give you a few files in a variety of different formats that are known to work with Executor. If
you have trouble downloading Mac software from the internet, you may
want to practice these instructions using the files in our
<A href="ftp://ftp.ardi.com/pub/samples">samples directory</A> first, so you'll know you're not attempting something impossible.
<p>
Before transferring a large application, you might want to see what
the requirements of that application are, most sites have a collection
of small notes about applications that you can look at first.
<p>
Use BINARY mode to transfer the files that you want to use. Files
whose names end in &quot;.hqx&quot; are usually the easiest to handle.
<p>
In general, StuffIt Expander will do well with many different types of
files. However, some of the Web Browsers out there interfere with
StuffIt Expander by trying to expand the files as you're downloading
them from the net. The browser sees that you're not running on a
Macintosh, so the non-Macintosh information (like the type and
creator) is thrown away! One way to avoid this problem with some of
the web browsers is to hold the shift key down when you click on a
link that contains a Macintosh file. There are other ways that
specific browsers can be configured to tell them to
<em>not</em> expand Macintosh files as they're picking them up.
<p>
Under DOS, you need to make an HFV file [see
<A href="section6.html#makehfv">Q6.2 `What is makehfv?'</A>] that will be large enough to hold the files as you've downloaded them and also
hold the files after they've been expanded. Once you've made the HFV
file, copy all the files you've downloaded into it, then follow the
remaining directions.
<p>
Under all operating systems, your next step is to run StuffIt Expander
and use the &quot;Expand...&quot; menu item from the &quot;File&quot;
menu to open each of the files you've downloaded. In general, especially when dealing
with files whose names end in &quot;.hqx&quot;, StuffIt Expander will
do the right thing. However, some sites do not store files in
&quot;.hqx&quot; format, and StuffIt Expander may fail. Remember, under DOS, you must do the
StuffIt Expansion inside an HFV file.
<p>
If StuffIt Expander fails, you can try using the Get Info option of
Executor's browser to change the creator and type information of the
file. If you believe the downloaded file in question is a StuffIt
Archive, you can change the type and creator each to &quot;SIT!&quot;
and then try StuffIt Expander again. If you believe the downloaded file is a
Compact Pro archive, you can change the creator to &quot;CPCT&quot;
and the type to &quot;PACT&quot; and then try StuffIt Expander again. Similarly,
you can use creator &quot;BnHq&quot; and type &quot;TEXT&quot; if you think that
the file is a MacBinary file. StuffIt Expander 4.0 should be much better at
automatically determining what format an archive is in.
<A name="q_3_10"><h2>
Question 3.10. How can I use Mac software from Bulletin
Boards?
</h2></A>
In general, follow the procedure in <A href="#internet">Q3.9 `How can I use Mac software from the internet?'</A> -- know the limitations of what Executor can run, transfer in binary mode and use
StuffIt Expander to unpack the files you download. Just like with
files downloaded from the internet, sometimes you'll need to change
the file type and creator, first.
<A name="q_3_11"><h2>
Question 3.11. How can I use Mac software from
AOL?
</h2></A>
AOL sometimes (about half the time) uses a format that StuffIt
Expander under Executor has trouble with. For DOS/Windows users, use
this workaround. Get a copy of unstuff.exe (available on AOL
compressed as unsitins.exe) and use the -mb tag to convert your
downloaded files to MacBinary format before ever moving them into
Executor. E.g.: <pre>
unstuff -mb somefile.sit
</pre>
<br>
And you'll get somefile with a different extension.
<p>
Then start up Executor and use BinHex's Download --&gt; Application
function to convert the file to an application and move it into
an Executor volume simultaneously.
<p>
Note that if the file can be unstuffed in the usual manner, then
trying to use this workaround will break it. It's usually best,
therefore, to try normal unstuffing first.
<A name="textfiles"><h2>
Question 3.12. Why do files which aren't text files look like text
files?
</h2></A>
Macintosh files have File Type and File Creator information stored in
their directory entries on a Macintosh filesystem. These two pieces
of information are often lost when the file is put onto a PC.
Executor's default is to assume that a file is a text file, because
text is the most universal of file types. If the file is not a text
file you'll probably want to use StuffIt Expander (see
<A href="#internet">Q3.9 `How can I use Mac software from the internet?'</A>) to expand the archive, or in rare cases you'll have to change the File
Creator and File Type.
<p>
To change a file's Creator and Type information, run Browser, select
the file's icon, and choose Get Info from Browser's File menu. Then
change File Creator and File Type to the appropriate codes from the
filetype.txt list in the docs directory of your Executor CD.
<p>
NOTE: in addition to having Type and Creator information, Macintosh
files also often have information in the &quot;Resource Fork&quot;
portion of the file. That information is also often lost when a file is
transferred to a PC, so it's possible that changing the Type and
Creator information will not be sufficient to allow you to use a Mac
file on a PC under Executor unless you use some sort of archiving
program (e.g. StuffIt, Compact Pro) to make sure all the Mac
information is stored in the &quot;Data Fork&quot; of the file.
<A name="q_3_13"><h2>
Question 3.13. What does &quot;You may open a 32000 character
selection&quot; mean?
</h2></A>
As mentioned in <A href="#textfiles">Q3.12 `Why do files which aren't text files look like text
files?'</A>, files that don't have a file type are assumed to be text files. That means that if you double-click on
them, Tex-Edit will try to open up the file, even if the file is in
some other representation. Executor does not use filename extensions
to determine a file's types, so if you download a file named
&quot;testfile.bin&quot; and then let Executor see the file, it will
still appear to be a text file, even though the name strongly suggests that
it's a BinHex file.
<p>
You can use StuffIt Expander (see <A href="#internet">Q3.9 `How can I use Mac software from the internet?'</A>) to expand a variety of different file types, but you'll have to start StuffIt Expander up
directly, by double-clicking on it and then use the
&quot;Expand...&quot; item in the &quot;File&quot; menu to select the file you want to expand
(e.g. &quot;testfile.bin&quot;).
<A name="q_3_14"><h2>
Question 3.14. What is Speedometer?
</h2></A>
Speedometer is a shareware application that we have included with
Executor for demonstrational purposes. We have done so with
permission of Speedometer's author, Scott Berfield. It benchmarks
Macintoshes (and PCs running Executor) to find out how quickly their
CPU, graphics, floating point and disk subsystems work. The current
version of Speedometer is Speedometer 4.x, but that uses a timing
mechanism that Executor currently doesn't support. Speedometer 3.23
can give you a rough approximation of how quickly your PC is emulating
a Mac. Remember, Speedometer is shareware, and ARDI has not paid the
shareware fee for you. If you repeatedly use Speedometer, please
register it with Scott.
<p>
Speedometer will show you that Executor is a very efficient emulator.
Please note, ARDI has not put special hooks into Executor to recognize
Speedometer's code and bypass it; Speedometer is treated just like any
other application when run under Executor. Yes, it would be possible
for us to cheat and make Speedometer return values that are higher
than you could expect to see in real life, but we don't do that sort
of thing.
<A name="q_3_15"><h2>
Question 3.15. How can I get a screen dump of
Executor?
</h2></A>
Just type Cmd-Shift-3, just like on a Mac. The difference is that the
screen shot will be in TIFF format (uncompressed, for now) and will be
written in the directory that contains <code>executor.exe</code> under DOS, or in <code>/tmp</code> under Linux.
<A name="q_3_16"><h2>
Question 3.16. How does your Browser show file
size?
</h2></A>
Listing mode will show you the combined size of a file's resource and
data fork. There is currently no way to determine the size of a
folder.
<A name="q_3_17"><h2>
Question 3.17. How does your Browser show free
space?
</h2></A>
Select the volume, then choose &quot;Get Info&quot; from the File
menu.
<A name="q_3_18"><h2>
Question 3.18. Why does Browser display question marks for some
documents?
</h2></A>
Browser uses the question-mark icon for documents for which it doesn't
recognize the file type and creator. Furthermore, Browser isn't good
about remembering type and creator information.
<p>
Here's how Browser works: when Browser starts, it examines each
application that is either on the hot-band or is in a folder that is
open on Browser's desktop. Then, as it is drawing the icons for
documents, it only uses icons for those applications that it saw upon
startup.
<p>
So, if the application that creates a document isn't either on the
hot-band or in an open folder, browser will present a question-mark
icon. A real Mac remembers any icons that it has ever seen (until you
rebuild the desktop).
<p>
If you have the application that corresponds to the document that has
a question mark, you can get rid of the question mark by dragging the
application onto the hot-band and then quitting Executor and
restarting (or by running an application and then quitting the
application). When Browser restarts it will see the application in
the hot-band and then remember the icon that should be used for
documents of that type. <hr>
Next: <a href="section4.html" rel=precedes>Executor/Win32</a>.<br>
Back: <a href="section2.html" rev=precedes>Executor's Limitations</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+94
View File
@@ -0,0 +1,94 @@
<html>
<head><title>
Executor FAQ - Section 4
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 4 <br>
Executor/Win32
</h1>
<ul>
<li><a href="#q_4_1" rel=subdocument>Q4.1. How does Executor/Win32 compare to Executor/DOS?</a></li>
<li><a href="#q_4_2" rel=subdocument>Q4.2. How do I use command-line switches with Executor/Win32?</a></li>
<li><a href="#q_4_3" rel=subdocument>Q4.3. Why do I get only a black screen when running
Executor/Win32?</a></li>
</ul><hr>
<A name="q_4_1"><h2>
Question 4.1. How does Executor/Win32 compare to
Executor/DOS?
</h2></A>
Executor/Win32 is a Win32 application and can run only under Windows
95 or later and Windows NT 4 or later. For those platforms,
Executor/Win32 is preferred, since it will usually have fewer
compatibility problems and it runs in its own window, or full-screen.
Some people are still running OS/2, Windows 3.x or even DOS, and they
can't run Executor/Win32. Additionally, Executor/Win32 can't be run
on a SX-class 386 machine. Such machines are very old and very slow,
but they can still run Executor/DOS.
<p>
Our product, Executor for Windows, includes both Executor/Win32 and
Executor/DOS, so you don't have to choose one or the other when
ordering.
<A name="q_4_2"><h2>
Question 4.2. How do I use command-line switches with
Executor/Win32?
</h2></A>
Command-line switches can be used by creating a
short-cut or by creating the file <code>commands.txt</code>, or a combination of both.
<p>
To use command-line switches with a short-cut, you need to create a
short-cut to <code>executor.exe</code>, then select it and choose &quot;Properties...&quot;
using your right mouse. The Properties panel has several tabs, one of
which is labeled &quot;Shortcut&quot;. After selecting the Shortcut
tab, you can then edit the &quot;Target:&quot; field. Keep the information that is
already in there (e.g. &quot;<code>C:\ExecWin32\executor.exe</code>&quot;) and then add a space, followed by the command-line option(s) you want to use when you
double-click on that short-cut (e.g. &quot; -size 800x600 -applzone
4m&quot;).
<p>
Since you can use command-line switches to specify a Macintosh program
for Executor to run, you can create individual short-cuts for
individual programs (e.g. &quot; C:\ExecWin32\Apps\Freeware\Risk!&quot;).
<p>
If you have some command-line switches that you want to apply to
<em>all</em> invocations of Executor, you can create a file called
<code>commands.txt</code> in the same directory that includes <code>executor.exe</code>. You can put all the switches on one line, or
use a separate line for each switch.
<p>
Switches in commands.txt override the ones that are specified in
short-cuts.
<A name="q_4_3"><h2>
Question 4.3. Why do I get only a black screen when running
Executor/Win32?
</h2></A>
You've encountered a bug. The bug may be in your video driver or in
the screen-accessing DLLs that Executor uses.
<p>
To see if it's in your video driver, try adjusting your Display
settings. In the Control Panel there's a Display icon.
Double-clicking that should let you select a panel named
&quot;Settings&quot;, which probably has an &quot;Advanced...&quot; button. If you click
the &quot;Advanced...&quot; button, you should be able to select a panel
named &quot;Performance&quot;. Try turning the Performance down and see if
that fixes the problem. You might also want to try downloading a newer driver
from the maker of your video card.
<p>
To see if it's our screen-accessing DLLs, Try renaming the file
&quot;<code>SDL-dx5.dll</code>&quot; to &quot;<code>SDL-dx5.dll.SAVE</code>&quot;. That will prevent Executor from seeing that DLL, so Executor will then use a
different DLL (<code>SDL-dib.dll</code>) which will cause it to access the screen in a different way. If that solves it, then you may have
found a bug in <code>SDL-dx5.dll</code>. If so, please send e-mail to <A href="mailto:bugs@ardi.com"><code>bugs@ardi.com</code></A> and let us know. <hr>
Next: <a href="section5.html" rel=precedes>Executor/Linux</a>.<br>
Back: <a href="section3.html" rev=precedes>Using Executor</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+223
View File
@@ -0,0 +1,223 @@
<html>
<head><title>
Executor FAQ - Section 5
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 5 <br>
Executor/Linux
</h1>
<ul>
<li><a href="#q_5_1" rel=subdocument>Q5.1. I can't get the option key to work under X. What should I
do?</a></li>
<li><a href="#q_5_2" rel=subdocument>Q5.2. Where are the bitmaps stored on the Linux version of
executor?</a></li>
<li><a href="#svgamouse" rel=subdocument>Q5.3. My mouse won't work with the SVGALIB version. What's the
deal?</a></li>
<li><a href="#linuxb" rel=subdocument>Q5.4. How do I get E/L to see my second floppy
drive?</a></li>
<li><a href="#q_5_5" rel=subdocument>Q5.5. Why does Lemmings's splash screen take so long to be
drawn?</a></li>
<li><a href="#q_5_6" rel=subdocument>Q5.6. What free projects has ARDI supported?</a></li>
<li><a href="#q_5_7" rel=subdocument>Q5.7. Is Executor localized for languages other than
English?</a></li>
<li><a href="#q_5_8" rel=subdocument>Q5.8. Can I Macintosh format disk drives?</a></li>
<li><a href="#q_5_9" rel=subdocument>Q5.9. How can Executor be configured for multiple
users?</a></li>
</ul><hr>
<A name="q_5_1"><h2>
Question 5.1. I can't get the option key to work under X. What should
I do?
</h2></A>
Executor doesn't map raw keys to Mac modifiers, instead it uses the
X &quot;Meta&quot; (mod1) modifier to mean command-key and the X
&quot;Mode Switch&quot; (mod3) modifier to mean option-key. Many X configurations
automatically set up the left Alt to be Meta and the right Alt to be
mode switch, but not all.
<p>
If you're using XFree86, check to make sure your XF86Config file
doesn't have the right-alt function definition commented out. They
are commented out by default in some distributions.
<p>
If you're not using XFree86, or you don't want to change your
XF86Config file, you can use xmodmap to make your right Alt key be
&quot;Mode Switch&quot; (mod3):
<p>
xmodmap -e 'remove mod1 = Alt_R' -e 'add mod3 = Alt_R'
<A name="q_5_2"><h2>
Question 5.2. Where are the bitmaps stored on the Linux version of
executor?
</h2></A>
All versions of Executor maintain an internal bitmap corresponding to
the actual screen. We accrue a &quot;dirty rectangle&quot; as the
program draws to what it thinks is the screen via Executor's QuickDraw implementation.
We periodically update the _real_ screen (e.g., the X window) by
transferring the &quot;dirty rect&quot; across. So basically our
graphics interface to the host machine consists of nothing more than blitting
rectangles to the screen, which aids our portability. Under X, we use
shared memory extensions for speed, but we don't do anything fancy
like trying to cache Mac fonts on the X server side. Spending time
trying to do so would be a bad idea for a number of reasons we won't
go into.
<p>
&quot;Refresh&quot; mode is useful when the program directly
manipulates the frame buffer itself. In this mode, we periodically analyze the
internal screen memory to decide what has been changed, and transfer
the changed data to the real screen.
<A name="svgamouse"><h2>
Question 5.3. My mouse won't work with the SVGALIB version. What's
the deal?
</h2></A>
Make sure your mouse works with other SVGAlib programs before you
suspect there's an Executor specific problem. Make sure your
/etc/vga/libvga.config file contains the proper mouse information and
that /dev/mouse is a symbolic link to the right device.
<A name="linuxb"><h2>
Question 5.4. How do I get E/L to see my second floppy
drive?
</h2></A>
Before running Executor, set the MacVolumes environment variable to
point to the entry in &quot;/dev&quot; that represents your B: drive,
as:
<p>
Using &quot;sh&quot;, &quot;bash&quot; or other Bourne Shell like
shell: <pre>
$ export MacVolumes=&quot;/dev/fd1&quot;
</pre>
Using &quot;csh&quot;, &quot;t-csh&quot; or other C Shell like shell:
<pre>
% setenv MacVolumes &quot;/dev/fd1&quot;
</pre>
This should work as long as you have permission to access the drive in
question (&quot;/dev/fd1&quot; in the above example). If it doesn't,
try using the -nodrivesearch switch to disable Executor's usual probing for
devices.
<A name="q_5_5"><h2>
Question 5.5. Why does Lemmings's splash screen take so long to be
drawn?
</h2></A>
Executor/Linux tries to cooperate with X-Windows when assigning colors. That leaves X in
charge of &quot;the colormap&quot;, which means Executor can't quickly
change the colors in the colormap itself. If you use the
&quot;-privatecmap&quot; option when you start Executor, you'll find that Lemmings splash
screen will come up much quicker, but you'll also experience the
&quot;creepy colors&quot; problem in other windows.
<A name="q_5_6"><h2>
Question 5.6. What free projects has ARDI
supported?
</h2></A>
ARDI sent a copy, with the appropriate legal release, of its HFS
implementation to Paul Hargrove to aid him with his implementation of
a true HFS filesystem under Linux. This saved him considerable time
reverse engineering various undocumented aspects of HFS.
<p>
To build Executor/DOS, ARDI uses <A href="http://www.delorie.com/djgpp/">DJGPP</A>, a free 32-bit programming environment for DOS based mostly on GNU tools. As users
of <A href="http://www.delorie.com/djgpp/">DJGPP</A>, we have contributed bug fixes and some source code
to the project. For more information about
<A href="http://www.delorie.com/djgpp/">DJGPP</A>, see <code>&lt;http://www.delorie.com/djgpp/&gt;</code>.
<p>
ARDI has also done a minor rewrite of Checker to make it much faster
and fix many bugs. Unfortunately, the modifications were in the hands
of one of ARDI's contractors and appear to have slipped through the
sands of time.
<A name="q_5_7"><h2>
Question 5.7. Is Executor localized for languages other than
English?
</h2></A>
Not yet. We recently added international keyboard support, so
romantic language localization is not difficult, per-se, but we're
concentrating on building awareness of Executor in English speaking
countries first.
<A name="q_5_8"><h2>
Question 5.8. Can I Macintosh format disk
drives?
</h2></A>
Yes, but if you do not consider yourself a UNIX wizard, you probably
shouldn't do it. All you have to do is find out the formatted disk
capacity and then run makehfv [See <A href="section6.html#makehfv">Q6.2 `What is makehfv?'</A>] with arguments so it writes directly to the disk drive you want formatted. You can only do
this if you have write permissions on the drive in question.
Obviously all data currently residing on that drive will be lost, and
if you make a typo and inadvertently specify the wrong drive, you'll
erase the data on the wrong drive.
<A name="q_5_9"><h2>
Question 5.9. How can Executor be configured for multiple
users?
</h2></A>
Executor has a variety of environment variables that can be altered to
allow individual users to override the default locations Executor
expects to find key files. Here are the important environment
variables and their default values:
<ul>
<li>ConfigurationFolder &quot;+/Configuration&quot;
</li>
<li>SystemFolder &quot;+/ExecutorVolume/System Folder&quot;
</li>
<li>PublicDirectoryMap &quot;+/DirectoryMap&quot;
</li>
<li>PrivateDirectoryMap &quot;~/.Executor/DirectoryMap&quot;
</li>
<li>DefaultFolder &quot;+/ExecutorVolume&quot;
</li>
<li>MacVolumes &quot;+/exsystem.hfv;+&quot; </li>
<li>ScreenDumpFolder &quot;/tmp&quot; </li>
</ul>
<p>
The leading &quot;+/&quot; represents the directory
&quot;/usr/local/lib/executor&quot;. So to allow multiple users to all have their own preferences, you can
create an executor directory for each potential user like this:
<pre>
~/executor/
~/executor/Configuration
~/executor/SystemFolder
~/executor/ScreenDumps
</pre>
<br>
Then reassign these environment variables:
<ul>
<li>ConfigurationFolder &quot;~/executor/Configuration&quot;
</li>
<li>SystemFolder &quot;~/executor/SystemFolder&quot;
</li>
<li>PublicDirectoryMap &quot;~/DirectoryMap&quot;
</li>
<li>DefaultFolder &quot;~/executor&quot; </li>
<li>ScreenDumpFolder &quot;~/executor/ScreenDumps&quot;
</li>
</ul>
<p>
You'll then need to populate the System Folder either with copies of
what's in &quot;/usr/local/lib/executor/ExecutorVolume/System
Folder&quot;, or with symbolic links to the actual files. The Desktop Textures program
actually modifies the System File, so if different users are going to
want different desktops, or if you want to make sure there's no
interference between users, then you should use copies rather than
symbolic links. <hr>
Next: <a href="section6.html" rel=precedes>Executor/DOS</a>.<br>
Back: <a href="section4.html" rev=precedes>Executor/Win32</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+528
View File
@@ -0,0 +1,528 @@
<html>
<head><title>
Executor FAQ - Section 6
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 6 <br>
Executor/DOS
</h1>
<ul>
<li><a href="#whatishfv" rel=subdocument>Q6.1. What is an HFV file?</a></li>
<li><a href="#makehfv" rel=subdocument>Q6.2. What is makehfv?</a></li>
<li><a href="#q_6_3" rel=subdocument>Q6.3. What are the hardware requirements for Executor/DOS?</a></li>
<li><a href="#vesa" rel=subdocument>Q6.4. What do I do if my Super VGA card isn't VESA
compliant?</a></li>
<li><a href="#white" rel=subdocument>Q6.5. Why is there a bright white border on the
screen?</a></li>
<li><a href="#doa" rel=subdocument>Q6.6. E/D dies during startup. Why?</a></li>
<li><a href="#winwedge" rel=subdocument>Q6.7. E/D runs under DOS, but not from Windows. What do I
do?</a></li>
<li><a href="#q_6_8" rel=subdocument>Q6.8. What causes errors when transferring files?</a></li>
<li><a href="#q_6_9" rel=subdocument>Q6.9. Why does my screen look funny when I run
Executor?</a></li>
<li><a href="#q_6_10" rel=subdocument>Q6.10. Does E/D require an ASPI driver to access
SCSI?</a></li>
<li><a href="#q_6_11" rel=subdocument>Q6.11. Why won't Executor/DOS work with my Diamond Viper PCI
card?</a></li>
<li><a href="#q_6_12" rel=subdocument>Q6.12. Why doesn't my mouse work when I run Executor under OS/2
Warp?</a></li>
<li><a href="#q_6_13" rel=subdocument>Q6.13. Any OS/2 Warp suggestions?</a></li>
<li><a href="#q_6_14" rel=subdocument>Q6.14. Does Executor/DOS work under Windows 95?</a></li>
<li><a href="#dosbugs" rel=subdocument>Q6.15. Executor/DOS dies, what should I do?</a></li>
<li><a href="#q_6_16" rel=subdocument>Q6.16. How does printing work under E/D?</a></li>
<li><a href="#q_6_17" rel=subdocument>Q6.17. Why does E/D under Windows 3.x have problems
hot-keying?</a></li>
<li><a href="#q_6_18" rel=subdocument>Q6.18. Why can't I eject or format my DOS formatted
floppy?</a></li>
<li><a href="#q_6_19" rel=subdocument>Q6.19. Do E/D and QEMM fight?</a></li>
<li><a href="#q_6_20" rel=subdocument>Q6.20. Does Executor fight with Novell DPMS?</a></li>
<li><a href="#q_6_21" rel=subdocument>Q6.21. How can I speed up Executor/DOS?</a></li>
<li><a href="#q_6_22" rel=subdocument>Q6.22. How do I make Executor/DOS run faster under
VirtualPC</a></li>
</ul><hr>
<A name="whatishfv"><h2>
Question 6.1. What is an HFV file?
</h2></A>
Executor has the ability to store an entire Macintosh
&quot;volume&quot; (i.e. filesystem corresponding to a disk drive or a partition within a
disk drive) in a DOS or UNIX file. Under DOS, this feature is very
handy because there is no way to have files with long names and upper
and lower case characters in their names unless you use an HFV file.
See <A href="#makehfv">Q6.2 `What is makehfv?'</A>.
<p>
In general, HFV files should have filenames that end in
&quot;<code>.hfv</code>&quot;.
<A name="makehfv"><h2>
Question 6.2. What is makehfv?
</h2></A>
The program makehfv (formerly called mkvol) allows you to create
virtual Macintosh volumes [see <A href="#whatishfv">Q6.1 `What is an HFV file?'</A>]. It is now part of all Executor distributions, although it is more useful under DOS than
under Windows or Linux.
<p>
To use makehfv you need to pick a name for the new HFV file, a name
for the Macintosh volume that your new HFV file will represent and the
number of kilobytes or megabytes that you want the HFV file to use.
Here's an example that creates a file named
&quot;<code>bigtest.hfv</code>&quot; that will appear in Executor as &quot;BigTest&quot; and will have 10
MB of space in it. <pre>
makehfv bigtest.hfv BigTest 10m
</pre>
<p>
<br>
Executor/DOS will automatically see HFV files if they are placed in
the same directory as <code>executor.exe</code>, which is usually <code>C:\EXECUTOR</code> and their names have the suffix &quot;<code>.hfv</code>&quot;.
<p>
Executor/Linux will automatically see HFV files if they are placed in
the same directory as ExecutorVolume (NOTE:
<em>not</em> in ExecutorVolume itself), which is usually
<code>/usr/local/lib/executor</code> and their names have the suffix &quot;<code>.hfv</code>&quot;.
<p>
If you're using DOS or Windows, if you use a compressed filesystem or
if you plan to make a compressed archive containing an HFV file,
you'll want to use the &quot;-zeros&quot; command line option to
makehfv. That tells makehfv to explicitly write zeros in the new hfv which takes a
little more time but makes the resulting HFV file much more
compressible.
<A name="q_6_3"><h2>
Question 6.3. What are the hardware requirements for
Executor/DOS?
</h2></A>
Required: '386 or better, VGA, 15 MB disk space, and 4 MB RAM. A SCSI
Controller is needed only if you want to access external Macintosh
hard disks or PowerBooks.
<p>
Recommended: '486 or better, SVGA, 15 MB disk space, and 8 MB RAM. A
SCSI Controller is needed only if you want to access external
Macintosh hard disks or PowerBooks.
<p>
Executor/DOS 2 should work in sixteen colors on any VGA. In addition,
if you have a Super VGA that is VESA 1.0 compliant, Executor/DOS
should be able to provide 256 colors and a range of screen sizes. If
you have a video card that is VESA 2.0 compliant, Executor's graphics
will be significantly faster.
<A name="vesa"><h2>
Question 6.4. What do I do if my Super VGA card isn't VESA
compliant?
</h2></A>
There is a shareware SVGA utility that provides VESA compliance for
SVGA cards that normally are not VESA compliant.
<A href="http://www.scitechsoft.com/">SciTech Display Doctor</A> is available from <code>&lt;http://www.scitechsoft.com/&gt;</code>. If you use it, you should pay the shareware fee as described in the documentation. If you have a
recent SVGA card you probably don't need SciTech Display Doctor,
although it may improve Executor's performance.
<A name="white"><h2>
Question 6.5. Why is there a bright white border on the
screen?
</h2></A>
The problem starts with Macs and PCs using different values to
represent white and black. That's not too big of a problem, because
Executor knows about this difference and translates things
appropriately. The rest of the problem has to do with the fact that
on video screens (unlike on laptop screens) there is a part of the
screen that is outside the pixel area that is still illuminated by the
video gun. That portion of the screen is known as the
&quot;overscan&quot; area and the VESA 2.0 specs don't provide a way to set what color the
overscan should be displayed as. Instead they use the value that is
used for the binary representation that represents black on PCs. That
works well, except we're already mapping that representation to be
white.
<p>
This only happens when Executor detects and can use a &quot;linear
framebuffer&quot;. That's the fast way that allows Executor to write
directly to the screen without an intermediate copy to an offscreen
representation of the Mac screen. If we can't get access to a linear
framebuffer then we can use the normal PC color mapping and patch
things up as we transfer from the offscreen image. That allows the
overscan area to be black but it's actually slower (significantly
slower for some games).
<A name="doa"><h2>
Question 6.6. E/D dies during startup.
Why?
</h2></A>
The most common cause of E/D not running under DOS is the lack of file
descriptors that you might get if you don't have the line:
<pre>
FILES=30
</pre>
<br>
in your config.sys. If Executor is giving you trouble and you don't
have such a line in your config.sys file, please add it, or if you
have a smaller number than 30, please increase your number to 30.
There is no reason to decrease your number if it is greater than 30.
<p>
Windows NT doesn't use config.sys, instead you need to use the
configuration file that is listed when you get to the
&quot;Program&quot; portion of &quot;Properties&quot; and click on the WindowsNT button.
The default Config Filename is <pre>
%SystemRoot%\SYSTEM32\CONFIG.NT
</pre>
<br>
&quot;%SystemRoot%&quot; will automatically be replaced with the
location of your Windows NT file, which is likely
<pre>
C:\WINDOWSNT
</pre>
<br>
The default CONFIG.NT file has &quot;FILES=20&quot; in it, so you need to either change the contents
of CONFIG.NT probably <pre>
C:\WINNT\SYSTEM32\CONFIG.NT
</pre>
<br>
or use the WindowsNT button on the Program page of the
Properties panel to use a different configuration file.
<p>
When all else fails, you can use the command line option
&quot;-desperate&quot; to tell Executor to use as few extended features of your computer as
possible in an attempt to avoid running into a problem. Under DOS you
just add &quot;-desperate to the command line, i.e.:
<pre>
C:\&gt; executor -desperate
</pre>
<br>
Under Windows, you need to make a short-cut to Executor and then use
the Properties menu item to change the command line to include
&quot;-desperate&quot;.
<A name="winwedge"><h2>
Question 6.7. E/D runs under DOS, but not from Windows. What do I
do?
</h2></A>
There are several things you can check:
<ul>
<li>Do you have FILES=30 or greater in the appropriate config file [see
<A href="#doa">Q6.6 `E/D dies during startup. Why?'</A>]? </li>
<li>Are you running in 386-enhanced mode? </li>
<li>Is virtual memory turned on? </li>
<li>Is your mouse driver loaded and enabled (not just installed)?
</li>
</ul>
<p>
If this checking produces no insights, write to
<A href="mailto:questions@ardi.com"><code>questions@ardi.com</code></A> and we'll try to track down the cause of the problem.
<A name="q_6_8"><h2>
Question 6.8. What causes errors when transferring
files?
</h2></A>
Error -42 is the error code generated inside a Macintosh when too many
files are open. Executor internally generates this error when the
underlying operating system disallows the opening of a file. This
error is usually symptomatic of not properly setting
<code>FILES</code> in your config.sys [see <A href="#doa">Q6.6 `E/D dies during startup. Why?'</A>].
<p>
Similar errors may result when you try to copy Macintosh file to a DOS
disk because many Macintosh file names are illegal under DOS. You can
fix this by renaming the file to a normal DOS eight-dot-three name.
<p>
Executor versions that are older than 2.0j [available in mid June]
have trouble with Windows 95's long file names. Specifically, any
Macintosh file with a control-character as part of its name will cause
trouble, and filenames will appear to all be in lower case. 2.0j
solves these problems.
<A name="q_6_9"><h2>
Question 6.9. Why does my screen look funny when I run
Executor?
</h2></A>
Your video driver may not be fully VESA compliant. If Executor
detects VESA compliance, it will try to use VESA modes. In general,
this is a good thing, however, if these modes have bugs in them,
Executor will invoke the bugs, and Executor may fail. Try getting a
newer driver for your video card if this happens [see
<A href="#vesa">Q6.4 `What do I do if my Super VGA card isn't VESA
compliant?'</A>].
<p>
NOTE: If you run Executor with the &quot;-info&quot; switch, Executor
will print out information it finds out about your video card. That information
may be helpful in tracking down your problem.
<A name="q_6_10"><h2>
Question 6.10. Does E/D require an ASPI driver to access
SCSI?
</h2></A>
If your SCSI drivers patch the &quot;INT 13&quot; BIOS calls, then an
ASPI driver is not needed. As long as &quot;INT 13&quot; can allow
Executor to read a SCSI drive, there is no need to use ASPI. Similarly, if you have a
16-bit MSCDEX CD-ROM driver installed, Executor will be able to see
your CD-ROM drive (whether it's SCSI or not) even without ASPI
drivers.
<A name="q_6_11"><h2>
Question 6.11. Why won't Executor/DOS work with my Diamond Viper PCI
card?
</h2></A>
Executor/DOS requires VESA compliant graphics cards. Many cards are
not directly VESA compliant and need a TSR to be run before they will
work with Executor/DOS. On a Gateway computer, you can do this with
the &quot;vprmode VESA&quot; command [see
<A href="#vesa">Q6.4 `What do I do if my Super VGA card isn't VESA
compliant?'</A>].
<A name="q_6_12"><h2>
Question 6.12. Why doesn't my mouse work when I run Executor under
OS/2 Warp?
</h2></A>
If it's not already there, you may need to add this line:
<pre>
DEVICE=C:\OS2\MDOS\VMOUSE.SYS
</pre>
<br>
to your CONFIG.SYS. This, and related issues, are described on pages
206-207 of _User's Guide to OS/2 Warp_. This line should already have been
added for you when you installed Warp.
<p>
Also, you may need to load MOUSE.COM in your AUTOEXEC.BAT, for
example: <pre>
LOADHIGH C:\OS2\MDOS\MOUSE.COM
</pre>
<br>
You can also create an AUTOEXEC file specifically for Executor, place
it in the same directory as Executor, and configure Warp to execute that
file whenever you launch Executor.
<A name="q_6_13"><h2>
Question 6.13. Any OS/2 Warp suggestions?
</h2></A>
Here is the advice of an Executor Enthusiast:
<pre>
I haven't been having any problems with running Executor/DOS in
OS/2. What he needs to do (assuming he has Warp) is to run &quot;Add
Programs&quot; object in the &quot;System Setup&quot; folder. This will make a object
for Executor on his desktop (usually in the &quot;Additional DOS Programs&quot;
folder). Go into the settings for that object, and select the
&quot;Session&quot; tab. Set it to &quot;DOS Full Screen&quot;, and choose &quot;DOS
Settings&quot;. He wants &quot;All DOS Settings&quot;. Primarily, Executor needs the
&quot;DPMI Memory Limit&quot; set to 16 megs, and &quot;DPMI Memory Limit&quot; set to
enabled. Since it defaults to 4 megs and automatic, it won't work. For
additional performance, he should set &quot;DOS High&quot; to on, &quot;EMS Memory
Limit&quot; to 0, &quot;Video 8514a XGA IOtrap&quot; to off, &quot;Video Retrace
Emulation&quot; to off, &quot;XMS Memory Limit&quot; to 0, and &quot;XMS Minimum HMA&quot; to
63. The biggest boost comes from &quot;Session Priority&quot;. Set this to at
least 16, and if he is going to run no other programs, set it
higher. If he is going to run other programs, this should be left
at 16, and the &quot;DOS Background Execution&quot; needs to be set to on.
</pre>
<A name="q_6_14"><h2>
<br>
Question 6.14. Does Executor/DOS work under Windows
95?
</h2></A>
Yes, Executor/DOS works well under Windows 95. But you should run
Executor/Win32 under Windows 95. It has fewer compatibility problems
and is just as fast.
<A name="dosbugs"><h2>
Question 6.15. Executor/DOS dies, what should I
do?
</h2></A>
If Executor dies even running the demo applications, try temporarily
moving your config.sys and autoexec.bat files aside and create minimal
versions of each, leaving only the lines that you need to initialize
your mouse driver and the <pre>
FILES=30
</pre>
<br>
line in your config.sys. Then reboot and try running Executor. If
Executor then starts working, you will have to slowly add back the
things that are in your normal autoexec.bat and config.sys files until
you know exactly what is causing the problem. Once you know that, you
should send information to <A href="mailto:bugs@ardi.com"><code>bugs@ardi.com</code></A>.
<p>
If Executor only dies on a particular application, try increasing the
amount of RAM dedicated to the application by using the
&quot;-applzone&quot; switch when you run Executor. Also try turning on &quot;Pretend
Sound&quot;, or if the screen seems to be only partially
updated, try turning on &quot;Refresh&quot;.
<p>
Once you've done as much as you can to figure out the problem,
<A href="http://www.ardi.com/bugform.html">send a bug report</A> via <code>&lt;http://www.ardi.com/bugform.html&gt;</code>. Run Executor with the &quot;-info&quot; switch
and include that information. Make sure you also include the version
of Executor you're running (e.g. Executor/DOS 2), the name and version
of the application that is dying (e.g. HyperCard 2.1), the name and
version of the operating system you're running (e.g. DOS 6.22) and
enough details to reproduce the crash (e.g. &quot;start the
application, choose the &quot;more Elvis&quot; from the &quot;adjust music&quot;
menu and the application will crash&quot;). If the application you are running is
publicly available via anonymous ftp, telling us where we can pick it
up for testing purposes also helps.
<p>
We accept bug reports from everyone, although paid customers' bug
reports are almost always higher priority than those of potential
customers.
<A name="q_6_16"><h2>
Question 6.16. How does printing work under
E/D?
</h2></A>
Executor/DOS will print directly to a PostScript-compatible printer if
started with the switch -printer lpt1 (or lpt2, lpt3, or whatever as
appropriate). Otherwise, it prints to a PostScript file. The first
time you print, the file will be named <code>execout1.ps</code> and will be located in the same directory that <code>executor.exe</code> is located in. You can then print this file on a PostScript printer, or
if you have a PostScript compatible driver, you can use a
non-PostScript printer. A popular PostScript compatible printer
drivers is <A href="http://www.cs.wisc.edu/~ghost/">Ghostscript</A>, available for free (<code>&lt;http://www.cs.wisc.edu/~ghost/&gt;</code>).
<A name="q_6_17"><h2>
Question 6.17. Why does E/D under Windows 3.x have problems
hot-keying?
</h2></A>
When you use a hot-key to switch away from Executor, Windows 3.x
doesn't know how to save the screen, because it only knows about the
original VGA screen modes, but Executor uses SVGA/VESA screen modes.
So when you switch back, Windows 3.x doesn't know how to replace the
screen with what it used to contain.
<p>
This problem is further compounded by the fact that Executor has no
way of knowing when it's been switched out and switched back. To make
matters worse, some Windows drivers (ATI Mach 32, for example) don't
even restore the mode properly, so not only will the screen be
incorrect, but Executor will die shortly after you switch back.
<p>
Luckily this is less frequently a problem in Windows 95 or OS/2.
<A name="q_6_18"><h2>
Question 6.18. Why can't I eject or format my DOS formatted
floppy?
</h2></A>
Executor/DOS allows you to see DOS drives other than the drive you
install Executor on. It also allows you to format floppies in the
Macintosh format (it used to read and write Mac formatted floppies,
but it wouldn't do the formatting itself).
<p>
Currently, the two abilities conflict. What we do is if a DOS
formatted floppy is in the drive when E/D starts, we treat that drive
as a fixed drive from that point on. You can no longer eject the
floppy, nor can you convince Executor to consider that floppy as a Mac
formatted floppy or a candidate for Mac formatting. This is confusing
and ugly; but we haven't found a better solution yet.
<A name="q_6_19"><h2>
Question 6.19. Do E/D and QEMM fight?
</h2></A>
We don't have QEMM in house for testing, but apparently older versions
of QDPMI are incompatible DPMI providers for Executor. We have heard
that QEMM 8.0 works with Executor, but we have not tested it. DPMI
providers that are known to work are the supplied CWSDPMI, the DPMI
provider in Windows 3.x and Windows 95, the DPMI provider in OS/2,
and 386Max.
<p>
For now, if you have lines similar to these two:
<pre>
DEVICE=C:\QEMM\LOADHI.SYS /R:1 /SIZE=8880 C:\QEMM\QDPMI.SYS
SWAPFILE=DPMI.SWP SWAPSIZE=1024.
</pre>
<p>
<br>
in your config.sys file, you should &quot;rem them out&quot; -- i.e.
add &quot;rem &quot; to the beginning of each line -- at least when using Executor:
<pre>
REM DEVICE=C:\QEMM\LOADHI.SYS /R:1 /SIZE=8880 C:\QEMM\QDPMI.SYS
REM SWAPFILE=DPMI.SWP SWAPSIZE=1024.
</pre>
<A name="q_6_20"><h2>
<br>
Question 6.20. Does Executor fight with Novell
DPMS?
</h2></A>
Yes. Novell DOS and Stacker both use this memory manager, but
Executor will crash when Novell DPMS (DOS Protected Mode Services) is
running. Fortunately, Stacker can be run without it if you are using
another memory manager such as 386Max. Additionally, Stacker won't
use DPMS when run under Windows.
<p>
This is another compatibility problem that we're looking into,
although it has been reported that some other well known programs
crash under DPMS's DPMI support (PKZIP, Geoworks and Logic Magician's
Oberon System).
<A name="q_6_21"><h2>
Question 6.21. How can I speed up Executor/DOS?
</h2></A>
Executor/DOS is of course dependent on the speed and type of CPU in
your PC. Obviously you can make E/D run faster if you upgrade your
386 to a Pentium. However, there are other, non-obvious ways in which
sometimes you can dramatically improve Executor's speed.
<p>
Use the &quot;-info&quot; switch to see how much DPMI memory you have
compared to how much physical memory you have. In general, Executor itself
will consume approximately 2 MB of memory even if you could have an
applzone, syszone and stack size of 0 (which you can't). So on a 4 MB
system, you can only allocate another 2 MB total to applzone, syszone
and stack if you want to avoid paging (paging slows Executor down
considerably), and that's only if you don't have drivers in your
config.sys file or autoexec.bat tying up more of your memory. If you
are low on memory, you should use DOS's &quot;mem&quot; command and
see how much Extended (XMS) memory DOS thinks you have. The more you can increase
that figure before Executor starts up, the more DPMI memory Executor
will have and the easier it will be for Executor to avoid paging.
<p>
<em>If</em> you have plenty of memory, then you can also speed
Executor up a little bit by running a disk cache. However, you should
only run the disk cache in a write-through mode -- in other words you
should enable the disk cache so that all disk writes are immediately
sent to the disk. Failure to do so may result in corrupt HFV files
after Executor dies.
<p>
Executor can access video cards in three different ways. The slowest
is by using VGA calls. This is also the least flexible -- you are
often limited only to 16 colors when using VGA calls, since the only
VGA mode that supports 256 colors is too small to use with Executor.
If your card is VESA compliant, or has a driver that makes it VESA
compliant, Executor can drive the video card more efficiently. There
are two major levels of VESA compliance -- VESA 1.x and VESA 2.x.
Executor is even more efficient if it can drive your video card using
a VESA 2.0 driver, <em>if</em> that driver supports &quot;linear mapping&quot;.
The SciTech Display Doctor driver allows many popular video cards to
be linear mapped. If you want Executor to run quickly, you should
probably pick up a copy of SciTech Display Doctor and test it on your
system to see if it improves things. You can use
&quot;Speedometer&quot; or &quot;Globe&quot; to get a rough approximation of how much it helps.
On many cards, use of SciTech Display Doctor can double Executor's graphics
speed.
<A name="q_6_22"><h2>
Question 6.22. How do I make Executor/DOS run faster under
VirtualPC
</h2></A>
Using the &quot;<code>-oldtimer</code>&quot; switch can speed Executor/DOS up by
more than a factor of two when it's running under VirtualPC, a PC
emulator made by <A href="http://www.connectix.com/">Connectix</A> <code>&lt;http://www.connectix.com/&gt;</code>. <hr>
Next: <a href="section7.html" rel=precedes>Esoterica</a>.<br>
Back: <a href="section5.html" rev=precedes>Executor/Linux</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
+66
View File
@@ -0,0 +1,66 @@
<html>
<head><title>
Executor FAQ - Section 7
</title>
<link rev="made" href="mailto:questions@ardi.com">
</head><body><h1>
Executor FAQ - Section 7 <br>
Esoterica
</h1>
<ul>
<li><a href="#q_7_1" rel=subdocument>Q7.1. May I bundle the DEMO version of Executor on a
CD-ROM?</a></li>
<li><a href="#thanks" rel=subdocument>Q7.2. Who wrote this FAQ? Who helped?</a></li>
<li><a href="#faqcopyright" rel=subdocument>Q7.3. Is this FAQ Disclaimed and Copyrighted?</a></li>
</ul><hr>
<A name="q_7_1"><h2>
Question 7.1. May I bundle the DEMO version of Executor on a
CD-ROM?
</h2></A>
The short answer is &quot;yes&quot;.
<p>
You are able to freely copy and distribute demo versions of Executor,
as long as you follow the restrictions set forth in Executor's license
panel. Please run the demo version of Executor and choose &quot;About
Executor...&quot; to see the restrictions that you must follow.
<p>
A suggestion: contact us to make sure you have the latest version of
Executor. We can tell you if a new release is imminent.
<A name="thanks"><h2>
Question 7.2. Who wrote this FAQ? Who helped?
</h2></A>
This FAQ was written and is maintained by ARDI employees. After
learning about them via the old Caldera FAQ, we rewrote our existing
FAQ to use the same tools that the Linux FAQ is built with. Those
tools were written by Ian Jackson <A href="mailto:ijackson@nyx.cs.du.edu"><code>ijackson@nyx.cs.du.edu</code></A>.
<p>
We've also had contributions from many Executor Enthusiasts worldwide.
<p>
Thanks.
<A name="faqcopyright"><h2>
Question 7.3. Is this FAQ Disclaimed and
Copyrighted?
</h2></A>
This document is provided as is. The information in it is
<em>not</em> warranted to be correct; you use it at your own risk.
<p>
Executor Frequently Asked Questions with Answers is Copyright
1996-1999 by ARDI <A href="mailto:info@ardi.com"><code>info@ardi.com</code></A>. <hr>
Back: <a href="section6.html" rev=precedes>Executor/DOS</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
- 28 February 2002
</address><br>
Extracted from Executor Frequently Asked Questions with Answers,
<A href="section7.html#faqcopyright">Copyright ARDI 2002.</A>
</body></html>
File diff suppressed because it is too large. Load diff
View File
Whitespace-only changes.
+112
View File
@@ -0,0 +1,112 @@
[changes from previous versions are now in docs/Changes.*]
The file elinux199X.tar (where X is a lower case letter optionally
followed by a digit) contains Executor/Linux, a commercial Macintosh
emulator which can be used in a 10 minute time limited demo mode.
Right now we have no linux specific manual, but we have a linux
section in our FAQ.
To install executor, just type "make install". You will need to have
write permission to create /usr/local/bin/executor,
/usr/local/bin/executor-svga and /usr/local/lib/executor.
Additional information is available in the docs subdirectory of the
directory that contains this readme file. Be sure to read the
"executor_faq.txt" (answers to frequently asked questions) if you have
trouble with Executor. The file "ernst_oud.txt" contains information
about Executor/DOS, written from a DOS users perspective that still
might be useful to users of Executor/Linux.
If you would like to be able to submit bug reports in the format that
we use internally, you can use the "send-pr" distribution contained in
"send-pr.tar" to build the send-pr program. More information is
included in that package.
Included in /usr/local/lib/executor/ExecutorVolume are some sample
programs that you can run. NOTE: some of these are shareware, and
ARDI had not paid your shareware fee for them. If you continue to use
Executor, you should either delete the shareware items, or register
them.
Executor assumes your floppy drive is /dev/fd0 and your CD-ROM drive
is /dev/cdrom and will need permission to access those devices if you
want Executor to be able to read and write floppies and read CD-ROMs.
If you're bold, you can even hook up a Macintosh formatted SCSI
disk and access that under Executor by adjusting your "MacVolumes"
environment variable:
$ export MacVolumes=/dev/sd1
$ executor
This assumes "/dev/sd1" is a Macintosh formatted SCSI disk and that
the permissions on /dev/sd1 allow you to read, if you want the volume
to be read only, or read and write, if that's what you want to do
under Executor.
If you have permission to access /dev/fd0 and /dev/cdrom, then those
devices will automatically be examined by Executor to see if they
contain Macintosh formatted media. If they do, they will be available
under Executor.
The 1.99<x> versions of Executor are "experimental". We hope to have
Executor in beta in January of 1996 and officially released in
February or March.
In addition to the text files in the doc subdirectory mentioned above,
another good source of information about Executor is the Usenet
newsgroup "comp.emulators.mac.executor", or the Executor interest
mailing list. The newsgroup and the mailing list are connected via a
bidirectional gateway.
To join the mailing list, send e-mail to "executor-request@ardi.com"
or "executor-digest-request@ardi.com" with a blank subject line and a
body that says "subscribe". With the first address, you'll receive
e-mail everytime someone sends anything to the mailing list. With the
digest form, you'll receve e-mail only once a day with all the
previous day's traffic bundled into one digest.
You can then send messages to the entire group by sending to
"executor@ardi.com". Some of the people on the list have been using
Executor under NEXTSTEP for a couple of years and under DOS for a
year, and of course we closely follow that mailing list, even though
we don't directly administer it.
Before 2.0 goes to press, pricing for non time-limited versions of
Executor/Linux is $49 for students, $49 for educational institutions,
faculty and staff and $99 for everyone else. The $49 student fee also
entitles the student to run Executor/DOS as well. The educatonal fee
does not include that. That price does cover all the 1.99<x> releases
and the 2.0 CD-ROM release when it's finished.
Again, read "executor_faq.txt" for more information.
The Linux version of Executor now has rudimentary sound support.
These programs are known to work well with this support (although the
volume is not adjustable): Apeiron, Maelstrom, Swoop, Rescue, SimAnt,
KidPix2, Prince of Persia 1, Blood Suckers, Space Madness, and
Spaceward Ho. Many of those games are only fun if SVGAlib can
linearly map your video board into memory. There are many other
programs that should work fairly soon.
The primary person to thank is Pat LoPresti <patl@lcs.mit.edu> , and
the secondary entity to thank is The Jin <jin@atype.com>. Pat and Jin
are good friends of Mat Hostetter and Cotton Seed, two of ARDI's most
talented engineers. Pat offered to design a nice low-level sound API
that we can use to implement sound on a variety of platforms and also
do the Linux implementation, with some help from Jin and Cotton and
Mat.
In order for sound to work under Executor/Linux, you must be using
kernel 1.3.45 or greater. In addition, we've found that the
svgalib-elf version totally hangs kernel 1.3.45 over here, so you may
have to use the svgalib-aout version if you have kernel 1.3.45.
Thanks for your interest.
--Cliff
Please address questions to questions@ardi.com and bug reports
to bugs@ardi.com. Our web site is http://www.ardi.com/ and we
accept anonymous ftp connections at ftp.ardi.com.
+157
View File
@@ -0,0 +1,157 @@
Newsgroups: comp.emulators.mac.executor
From: questions@ardi.com
Subject: comp.emulators.mac.executor mini-FAQ, Please read before posting
Thank you for reading this introduction to comp.emulators.mac.executor.
Last modified: November 9th 1999
What is this newsgroup? What articles are appropriate here?
comp.emulators.mac.executor (c.e.m.e.) was created for the
discussion of Executor, a commercial Macintosh emulator for
PCs.
Discussions of Executor are welcome. Please read this
mini-FAQ and the complete FAQ (see below) before posting.
Both documents answer the questions that come to mind when you
first hear about Executor, so by reading the FAQs you can
avoid asking questions that most of the readers of this
newsgroup are tired of answering. Reading FAQs before posting
on usenet is considered good "netiquette" and will help make
c.e.m.e. a useful discussion group and may avoid some of the
"flame-wars" found on advocacy groups.
Please do not post encoded binaries to c.e.m.e. Such posts
are prohibited by c.e.m.e's charter (see below). Please
respect the problems that such posts cause some of c.e.m.e's
readership.
Please do not post requests for Macintosh ROMs or System files
here. Macintosh ROMs and System files are copyrighted by
Apple Computer, Inc. Asking for a copy of them is asking
someone to violate copyright laws. Even if it weren't, it's
off-topic because Executor doesn't need Macintosh ROMs or
Apple System files.
C.e.m.e. is *not* an advocacy group, it's a support group for
users of Executor. It isn't a support group for emulator
users in general. If the discussion isn't about Executor,
it's off-topic.
Different people have different needs, so some people find
Executor quite useful, others find it a novelty and some have
no need for it at all. Please accept this and don't try to
convince people that Executor is good or that Executor is bad
in c.e.m.e. It's unlikely you'll change anybody's mind, and
your time is better spent elsewhere.
Similarly, some people like Macs, some people dislike them;
please don't argue about operating systems in c.e.m.e. By
ignoring off-topic posts, the off-topic poster will always get
the last word in. *That's _OK_*. In any honest disagreement,
proponents of each side will believe they are correct and the
other person is mistaken. That leads to a desire to rebut any
incorrect information that one sees, but this is Usenet.
Incorrect information will always be plentiful. Even though
it's counter-intuitive, you're more likely to see incorrect
off-topic information disappear if you ignore it than if you
automatically respond to it.
Where is the complete FAQ?
The latest version is always available via the World-Wide Web at
<http://www.ardi.com/executor-faq.html/>
You may also find it elsewhere, but beware. In cyberspace, outdated
information can live an exceedingly long time. As such, it's
especially useful for Executor users to have WWW access and to refer
to the webbed FAQ, rather than looking for it elsewhere.
If you don't have WWW access, you can get a copy mailed to you
by sending email to info@ardi.com with "faq" or "FAQ" in the
subject line (not the body) of the message, or by sending
email to faq@ardi.com. Both "info@ardi.com" and "faq@ardi.com"
are automated email servers which do not read the contents of
the letter that is sent to them.
What is Executor?
Executor, a commercial product, is an emulator that allows
non-Macintosh hardware to run many applications originally
written for a Macintosh. It also lets your PC read and write
Mac-formatted high-density floppies and Mac external hard
drives, and read Mac CDs.
Executor for Windows includes both Executor/DOS (E/D) and
Executor/Win32 (E/W). E/D runs under DOS, Windows 3.x and
OS/2. E/W runs under Windows 95, Windows 98 and NT. Executor
for Linux includes the supported Executor/Linux/X and the
unsupported Executor/Linux/SVGAlib and Executor/Linux/SDL.
Where can I pick up the Executor demos?
<http://www.ardi.com/>
What limitations does Executor have?
See the complete FAQ for more details.
ARDI has rewritten the OS and Toolbox calls from scratch.
This provides a tremendous speed improvement and allows
Executor to be sold independently of Apple. This does cause
some limitations, including limited serial port access, no
AppleTalk, incomplete System 7 support, no INITs (which means
no QuickTime and no ATM), no CDEVs and very little
internationalization.
Due to limitations in PC hardware, Executor can read and write
1.4 MB Mac formatted floppy disks, but can *not* read or write
Mac formatted 800 KB floppy disks. Without custom hardware,
PCs simply can't read the Mac 800 KB format. If you think
you've seen software that allows this, you're mistaken. It's
possible to read 800 KB formatted floppies that are in a
different format, but not 800 KB floppies that are in the Mac
800 KB format.
Executor prints directly to PostScript printers. If you don't
have a PostScript printer, Executor can print to a Postscript
file for which you will need a PostScript filter in order to
print.
Who makes Executor?
<http://www.ardi.com/>
ARDI
Suite 4-101
1650 University Blvd., NE
Albuquerque, NM 87102
+1 505 766 9115 Phone
+1 505 766 5153 FAX
questions@ardi.com
What is the c.e.m.e. charter?
CHARTER: comp.emulators.mac.executor
Comp.emulators.mac.executor is for general discussion of
ARDI's Executor software Macintosh emulator. Executor users
and potential users are encouraged to discuss Executor bugs
and workarounds and to share tips for getting Executor to work
properly with specific hardware and/or software. ARDI will
post announcements of new versions, and provide other help
when possible.
Criticism, advice, and mutual user assistance are all expected
and encouraged. Advertisements and off-topic postings are
forbidden, as is the posting of encoded binaries or any
information on obtaining pirated software.
END CHARTER.
Thank you for reading this. With your cooperation, we can keep a high
signal-to-noise ratio on c.e.m.e.
+112
View File
@@ -0,0 +1,112 @@
[changes from previous versions are now in docs/Changes.*]
The directory Executor.pkg is a NEXTSTEP installer package that
installs /LocalApps/Executor.app, which is a pre-beta version
Executor/NEXTSTEP 2.0, a commercial Macintosh emulator. Currently
this pre-beta only supports NEXTSTEP/Intel and NEXTSTEP/Motorola.
There are no plans for any other architectures to be supported in the
near future.
Executor expects to be installed in /LocalApps. The file:
"Executor.app/ExecutorVolume/System Folder/godata.sav"
contains pathnames that begin with "/LocalApps", so if you install
Executor anywhere other than /LocalApps, the Browser will not
automatically have fun things opened and installed on the hot-band.
You'll have to find ExecutorVolume yourself and adjust the hot-band to
your liking.
Certain files must have the correct ownership and permissions in order
for Executor to work properly. Specifically, the Executor binary
itself must be owned by root and made setuid. The directory "System
Folder" and the files *godata.sav and *system.ard must be writable by
anyone who will be using Executor. These permissions will
automatically be set properly if you install Executor when you are
logged in as or "su"d as root.
Additional information is available in the docs subdirectory of the
directory that contains this readme file. Be sure to read the
"executor_faq.txt" (answers to frequently asked questions) if you have
trouble with Executor. The file "ernst_oud.txt" contains information
about Executor/DOS, written from a DOS users perspective that still
might be useful to users of Executor/NEXTSTEP.
Included in /usr/local/lib/executor/ExecutorVolume are some sample
programs that you can run. NOTE: some of these are shareware, and
ARDI had *not* paid your shareware fee for them. If you continue to
use Executor, you should either delete the shareware items, or
register them.
If you want to access Macintosh formatted floppies from within
Executor, make sure that the floppies are put in the drive AFTER
Executor has already started. On non-NeXT hardware, you will then
need to use Workspace's "Check for Disks" menu item to get Executor to
realize that there is a Macintosh formatted floppy there. If you put
the floppy in *before* Executor starts, then NEXTSTEP will take over
the floppy drive and Executor will not be able to access all the data
that it needs.
The 1.99<x> versions of Executor are "experimental". We hope to have
Executor in beta in January of 1996 and officially released in
February or March.
In addition to the text files in the doc subdirectory mentioned above,
another good source of information about Executor is the Usenet
newsgroup "comp.emulators.mac.executor", or the Executor interest
mailing list. The newsgroup and the mailing list are connected via a
bidirectional gateway.
To join the mailing list, send e-mail to "executor-request@ardi.com"
or "executor-digest-request@ardi.com" with a blank subject line and a
body that says "subscribe". With the first address, you'll receive
e-mail everytime someone sends anything to the mailing list. With the
digest form, you'll receve e-mail only once a day with all the
previous day's traffic bundled into one digest.
You can then send messages to the entire group by sending to
"executor@ardi.com". Some of the people on the list have been using
Executor under NEXTSTEP for a couple of years and under DOS for a
year, and of course we closely follow that mailing list, even though
we don't directly administer it.
Before 2.0 goes to press, pricing for non time-limited versions of
Executor/NEXTSTEP is $99 for students, $99 for educational
institutions, faculty and staff and $199 for everyone else. That
price does cover all the 1.99<x> releases and the 2.0 CD-ROM release
when it's finished.
Again, read "executor_faq.txt" for more information.
NOTE: we have changed the registration procedure and will need to
issue all our current NEXTSTEP customers new keys. In the meantime,
until the end of November, every Executor/NEXTSTEP user (current
customers and not) has permission to use this serial number and key:
Serial Number = 100
Key = "c9gm7biez8jf2"
This will only work under Executor/NEXTSTEP and it will only work for
versions 1.x. It stops functioning February 1. We'll either get new
serial numbers to all our current NEXTSTEP customers by then or we'll
release another key that everyone can use while we sort things out.
To use this key, start Executor, then click on the "Info" button. It
will prsent you with a page of legalese, and the option to click on
the "Next" button to get another page of legalese. After you've
clicked on the Next button about a dozen times, you'll be prompted for
your name, organization, serial number and authorization key. Use the
values supplied above for the last two choices. You will have to run
Executor once as root after you've entered the registration
information.
NOTE: Executor currently does not have any way of bypassing Display
Postcript, so screen access is slower under NEXTSTEP than under other
platforms. We have received help from NeXT and hope to be able to
speed up our graphics access sometime after 2.0 is released.
--Cliff
Please address questions to questions@ardi.com and bug reports
to bugs@ardi.com. Our web site is http://www.ardi.com/ and we
accept anonymous ftp connections at ftp.ardi.com.
+2323
View File
File diff suppressed because it is too large. Load diff
+4676
View File
File diff suppressed because it is too large. Load diff
+147
View File
@@ -0,0 +1,147 @@
PageMaker 4.2 does a Gestalt call for the AliasMgr and then proceeds
to use the Alias Manager, even if we say it's not present. However,
it will avoid use of the Alias Manager if the Gestalt call itself
returns an error. This doesn't appear to be within spec (IMVI), but
it looks like we should just not know the descriptors that we don't
support. Boo.
MacInTax '93 does the same thing with the Edition Manager that
PageMaker does with the Alias Manager. It's unclear how widespread
this problem is.
Claris Works does the same thing with Apple Events... bad!
Because of apps like this, there are a number of selectors that we
simply fail to recognize, because our support for the functionality
that is being queried is weak. Here are the selectors that are likely
to fit in that category when 2.1 ships:
gestaltAliasMgrAttr
gestaltApplEventsAttr
gestaltAppleTalkVersion
gestaltAUXVersion
gestaltConnMgrAttr
gestaltCRMAttr
gestaltCTBVersion
gestaltDBAccessMgrAttr
gestaltEasyAccessAttr
gestaltEditionMgrAttr
gestaltFontMgrAttr
gestaltFXfrMgrAttr
gestaltHardwareAttr
gestaltHelpMgrAttr
gestaltMiscAttr
gestaltNotificatinMgrAttr
gestaltNuBusConnectors
gestaltOSAttr
gestaltPopupAttr
gestaltPowerMgrAttr
gestaltPPCToolboxAttr
gestaltResourceMgrAttr
gestaltScriptCount
gestaltScriptMgrVersion
gestaltSerialAttr
gestaltStdNBPAttr
gestaltTermMgrAttr
gestaltParityAttr
gestaltVMAttr
'icmp'
'sysa'
These selectors are recognized
gestaltDITLExtAttr
gestaltFindFolderAttr
gestaltFSAttr
gestaltSoundAttr
gestaltExtToolboxTable
gestaltToolboxTable
gestaltOSTable
gestaltFPUType
gestaltKeyboardType
gestaltLogicalPageSize
gestaltLogicalRAMSize
gestaltLowMemorySize
gestaltMMUType
gestaltPhysicalRAMSize
gestaltProcessorType
gestaltQuickdrawVersion
gestaltQuickdrawFeatures
gestaltTimeMgrVersion
gestaltVersion
gestaltMachineIcon
gestaltMachineType
gestaltROMSize
gestaltROMVersion
gestaltSystemVersion
gestaltTextEditVersion
These four will be ignored unless they are specifically enabled by the
"pretend" options (Pretend Help, Pretend Edition, Pretend Script,
Pretend Alias) in the preferences panel:
gestaltHelpMgrAttr
gestaltScriptMgrVersion
gestaltEditionMgrAttr
gestaltAliasMgrAttr
Thse two will be recognized if the system version is set to 7.0 or
higher via the prefs panel:
gestaltStandardFileAttr
gestaltApplEventsAttr
ARDI has added one special gestalt call, gestaltPHYSICAL ('MUL8')
which returns the address of a routine that functions just like
Gestalt, but provides access to a completely different set of tables.
These tables will contain information about the environment in which
Executor is running instead the emulated environment that Executor
provides.
Example:
int PhysicalGestalt (long selector, long *responsep)
{
int retval;
pascal int (*physfp) (long sel, long *responsep);
retval = Gestalt ('MUL8', (void *) &physfp);
if (retval == noErr)
retval = physfp (selector, responsep);
return retval;
}
...
OSErr err;
long vers;
err = PhysicalGestalt ('sysv', &vers);
/* err should be noErr and vers should be the version of Executor you're
running, not the version of the System file we're emulating */
Right now there are only a few PhyscialGestalt selectors recognized:
gestaltSystemVersion, numeric version of Executor
gestaltExecutorVersionString, address of the string version of Executor
gestaltDemoStatus, 1, if this is a demo version
gestaltDemoExpiration, how many days until the demo expires
gestaltSerialNumber, non-demo version: S/N
gestaltRegisteredName, non-demo version: name
gestaltRegisteredOrg, non-demo version: organization
gestaltPhysicalRAMSize, amount of physical ram on the machine
gestaltScreenSize, resolution of the monitor
gestaltGhostScriptVersion, win32 only: Ghostscript DLL version
gestaltGhostScriptVersion = 'gost'
gestaltExecutorVersionString = 'xqtr'
gestaltDemoStatus = 'demo'
gestaltDemoExpiration = 'xpir'
gestaltSerialNumber = 's/n '
gestaltScreenSize = 'scrn'
gestaltRegisteredName = 'name'
gestaltRegisteredOrg = 'org '
We are willing to add a variety of other PhysicalGestalt selectors as
Mac-developers require, including things like amount of memory on the
system and screen size.
+286
View File
@@ -0,0 +1,286 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN">
<article>
<articleinfo>
<author><firstname>Clifford</firstname><surname>Matthews</surname></author>
<authorinitials>ctm</authorinitials>
<title><function>Gestalt</function> under ROMlib</title>
<abstract>
<para>
This article provides information about <function>Gestalt</function>
under ROMlib. Since <application>Executor</application> and the
Carbonless Copies Runtime System both use ROMlib, this information
also applies to them.
</para>
</abstract>
<copyright>
<year>1999</year>
<year>2002</year>
<holder>Abacus Research & Development, Inc.</holder>
</copyright>
</articleinfo>
<note>
<para>
The information in this paper is <emphasis>not</emphasis> built
directly from the ROMlib source. It is provided as-is and is subject
to change.
</para>
</note>
<section>
<title>Apple Selectors</title>
<para>
PageMaker 4.2 calls <function>Gestalt</function> with the
<constant>gestaltAliasMgrAttr</constant> selector and if
<function>Gestalt</function> returns <returnvalue>noErr</returnvalue>,
proceeds to use the Alias Manager, even the response is
<returnvalue>0</returnvalue>. PageMaker 4.2 will not use the Alias
Manager if in this case <function>Gestalt</function> returns
<returnvalue>gestaltUndefSelectorErr</returnvalue>. PageMaker 4.2's
use of <function>Gestalt</function> doesn't appear to be within spec
(IMVI), but that's just another difference where ROMlib has to do what
the Mac does, rather than what the specifications suggest.
</para>
<para>
MacInTax '93 does the same thing with the Edition Manager that
PageMaker does with the Alias Manager. Claris Works does the same
thing with Apple Events. After ARDI saw three instances of this
behavior ARDI stopped keeping track. Because of such behavior, there
are a number of selectors that ROMlib deliberately fails to recognize.
ROMlib does this when its support for the queried functionality is
incomplete. Here are the selectors that ROMlib deliberately fails to
recognize:
</para>
<simplelist type="horiz" columns="3">
<member><constant>gestaltAliasMgrAttr</constant></member>
<member><constant>gestaltApplEventsAttr</constant></member>
<member><constant>gestaltAppleTalkVersion</constant></member>
<member><constant>gestaltAUXVersion</constant></member>
<member><constant>gestaltConnMgrAttr</constant></member>
<member><constant>gestaltCRMAttr</constant></member>
<member><constant>gestaltCTBVersion</constant></member>
<member><constant>gestaltDBAccessMgrAttr</constant></member>
<member><constant>gestaltEasyAccessAttr</constant></member>
<member><constant>gestaltEditionMgrAttr</constant></member>
<member><constant>gestaltFontMgrAttr</constant></member>
<member><constant>gestaltFXfrMgrAttr</constant></member>
<member><constant>gestaltHardwareAttr</constant></member>
<member><constant>gestaltHelpMgrAttr</constant></member>
<member><constant>gestaltMiscAttr</constant></member>
<member><constant>gestaltNotificatinMgrAttr</constant></member>
<member><constant>gestaltNuBusConnectors</constant></member>
<member><constant>gestaltOSAttr</constant></member>
<member><constant>gestaltPopupAttr</constant></member>
<member><constant>gestaltPowerMgrAttr</constant></member>
<member><constant>gestaltPPCToolboxAttr</constant></member>
<member><constant>gestaltResourceMgrAttr</constant></member>
<member><constant>gestaltScriptCount</constant></member>
<member><constant>gestaltScriptMgrVersion</constant></member>
<member><constant>gestaltSerialAttr</constant></member>
<member><constant>gestaltStdNBPAttr</constant></member>
<member><constant>gestaltTermMgrAttr</constant></member>
<member><constant>gestaltParityAttr</constant></member>
<member><constant>gestaltVMAttr</constant></member>
<member>'<literal>icmp</literal>'</member>
<member>'<literal>sysa</literal>'</member>
</simplelist>
<para>
ROMlib recognizes and returns information for these selectors:
</para>
<simplelist type="horiz" columns="3">
<member><constant>gestaltDITLExtAttr</constant></member>
<member><constant>gestaltFindFolderAttr</constant></member>
<member><constant>gestaltFSAttr</constant></member>
<member><constant>gestaltSoundAttr</constant></member>
<member><constant>gestaltExtToolboxTable</constant></member>
<member><constant>gestaltToolboxTable</constant></member>
<member><constant>gestaltOSTable</constant></member>
<member><constant>gestaltFPUType</constant></member>
<member><constant>gestaltKeyboardType</constant></member>
<member><constant>gestaltLogicalPageSize</constant></member>
<member><constant>gestaltLogicalRAMSize</constant></member>
<member><constant>gestaltLowMemorySize</constant></member>
<member><constant>gestaltMMUType</constant></member>
<member><constant>gestaltPhysicalRAMSize</constant></member>
<member><constant>gestaltProcessorType</constant></member>
<member><constant>gestaltQuickdrawVersion</constant></member>
<member><constant>gestaltQuickdrawFeatures</constant></member>
<member><constant>gestaltTimeMgrVersion</constant></member>
<member><constant>gestaltVersion</constant></member>
<member><constant>gestaltMachineIcon</constant></member>
<member><constant>gestaltMachineType</constant></member>
<member><constant>gestaltROMSize</constant></member>
<member><constant>gestaltROMVersion</constant></member>
<member><constant>gestaltSystemVersion</constant></member>
<member><constant>gestaltTextEditVersion</constant></member>
</simplelist>
<para>
ROMlib fails to recognize the following four selectors unless they are
specifically enabled by the "pretend" options (Pretend Help, Pretend
Edition, Pretend Script, Pretend Alias). The pretend options can be
enabled in the preferences panel or via a configuration file.
</para>
<simplelist type="horiz" columns="3">
<member><constant>gestaltHelpMgrAttr</constant></member>
<member><constant>gestaltScriptMgrVersion</constant></member>
<member><constant>gestaltEditionMgrAttr</constant></member>
<member><constant>gestaltAliasMgrAttr</constant></member>
</simplelist>
<para>
These two selectors are only recognized if the system version is set
to 7.0 or higher:
</para>
<simplelist type="horiz" columns="3">
<member><constant>gestaltStandardFileAttr</constant></member>
<member><constant>gestaltApplEventsAttr</constant></member>
</simplelist>
</section>
<section>
<title>ARDI selectors</title>
<para>
ARDI has added one special <function>gestalt</function> selector,
<constant>gestaltPHYSICAL</constant> ('<literal>MUL8</literal>'). It
returns the address of a routine that behaves just like
<function>Gestalt</function>, but provides access to a completely
different set of tables. These tables contain information about the
environment in which <application>Executor</application> is running
instead the emulated environment that
<application>Executor</application> provides.
</para>
<para>
Example:
</para>
<programlisting>
<![CDATA[
int PhysicalGestalt (long selector, long *responsep)
{
int retval;
pascal int (*physfp) (long sel, long *responsep);
retval = Gestalt ('MUL8', (void *) &physfp);
if (retval == noErr)
retval = physfp (selector, responsep);
return retval;
}
...
OSErr err;
long vers;
err = PhysicalGestalt ('sysv', &vers);
/* err should be noErr and vers should be the version of Executor you're
running, not the version of the System file we're emulating */
]]>
</programlisting>
<para>
These are the PhysicalGestalt selectors supported:
</para>
<table>
<title>PhysicalGestalt Selectors</title>
<tgroup cols="3">
<thead>
<row>
<entry>Name</entry>
<entry>Value</entry>
<entry>Response</entry>
</row>
</thead>
<tbody>
<row>
<entry>gestaltSystemVersion</entry>
<entry>'<literal>sysv</literal>'</entry>
<entry>numeric version of <application>Executor</application></entry>
</row>
<row>
<entry>gestaltExecutorVersionString</entry>
<entry>'<literal>xqtr</literal>'</entry>
<entry>address of the string version of <application>Executor</application></entry>
</row>
<row>
<entry>gestaltDemoStatus</entry>
<entry>'<literal>demo</literal>'</entry>
<entry>1, if this is a demo version</entry>
</row>
<row>
<entry>gestaltDemoExpiration</entry>
<entry>'<literal>xpir</literal>'</entry>
<entry>how many days until the demo expires</entry>
</row>
<row>
<entry>gestaltSerialNumber</entry>
<entry>'<literal>s/n </literal>'</entry>
<entry>non-demo version: serial number</entry>
</row>
<row>
<entry>gestaltRegisteredName</entry>
<entry>'<literal>name</literal>'</entry>
<entry>non-demo version: name </entry>
</row>
<row>
<entry>gestaltRegisteredOrg</entry>
<entry>'<literal>org </literal>'</entry>
<entry>non-demo version: organization</entry>
</row>
<row>
<entry>gestaltPhysicalRAMSize</entry>
<entry>'<literal>ram </literal>'</entry>
<entry>amount of physical ram on the machine</entry>
</row>
<row>
<entry>gestaltScreenSize</entry>
<entry>'<literal>scrn</literal>'</entry>
<entry>resolution of the monitor</entry>
</row>
<row>
<entry>gestaltGhostScriptVersion</entry>
<entry>'<literal>gost</literal>'</entry>
<entry>win32 only: Ghostscript DLL version</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
ARDI is willing to add PhysicalGestalt selectors as Mac developers require.
</para>
</section>
</article>
<!-- This comment is for emacs users. Please leave it at the end of the file.
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
sgml-xml-p:t
End:
-->
+649
View File
@@ -0,0 +1,649 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>Gestalt under ROMlib</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="NEXT"
TITLE="ARDI selectors"
HREF="x163.html"></HEAD
><BODY
CLASS="article"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2"><TT
CLASS="function"
>Gestalt</TT
> under ROMlib</H1
><P
CLASS="copyright"
>Copyright &copy; 1999, 2002 by Abacus Research &#38; Development, Inc.</P
><DIV
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="50%"
CELLSPACING="0"
CELLPADDING="0"
ALIGN="CENTER"
><TR
><TD
VALIGN="TOP"
><B
>Abstract</B
></TD
></TR
><TR
><TD
VALIGN="TOP"
><P
>&#13;This article provides information about <TT
CLASS="function"
>Gestalt</TT
>
under ROMlib. Since <TT
CLASS="application"
>Executor</TT
> and the
Carbonless Copies Runtime System both use ROMlib, this information
also applies to them.
</P
></TD
></TR
></TABLE
></DIV
><HR
WIDTH="75%"
ALIGN="CENTER"
COLOR="#000000"
SIZE="1"></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="t1.html#AEN20"
>Apple Selectors</A
></DT
><DT
><A
HREF="x163.html"
>ARDI selectors</A
></DT
></DL
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="./stylesheet-images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;The information in this paper is <I
CLASS="emphasis"
>not</I
> built
directly from the ROMlib source. It is provided as-is and is subject
to change.
</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="AEN20">Apple Selectors</H1
><P
>&#13;PageMaker 4.2 calls <TT
CLASS="function"
>Gestalt</TT
> with the
<TT
CLASS="constant"
>gestaltAliasMgrAttr</TT
> selector and if
<TT
CLASS="function"
>Gestalt</TT
> returns <SPAN
CLASS="returnvalue"
>noErr</SPAN
>,
proceeds to use the Alias Manager, even the response is
<SPAN
CLASS="returnvalue"
>0</SPAN
>. PageMaker 4.2 will not use the Alias
Manager if in this case <TT
CLASS="function"
>Gestalt</TT
> returns
<SPAN
CLASS="returnvalue"
>gestaltUndefSelectorErr</SPAN
>. PageMaker 4.2's
use of <TT
CLASS="function"
>Gestalt</TT
> doesn't appear to be within spec
(IMVI), but that's just another difference where ROMlib has to do what
the Mac does, rather than what the specifications suggest.
</P
><P
>&#13;MacInTax '93 does the same thing with the Edition Manager that
PageMaker does with the Alias Manager. Claris Works does the same
thing with Apple Events. After ARDI saw three instances of this
behavior ARDI stopped keeping track. Because of such behavior, there
are a number of selectors that ROMlib deliberately fails to recognize.
ROMlib does this when its support for the queried functionality is
incomplete. Here are the selectors that ROMlib deliberately fails to
recognize:
</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="constant"
>gestaltAliasMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltApplEventsAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltAppleTalkVersion</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltAUXVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltConnMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltCRMAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltCTBVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltDBAccessMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltEasyAccessAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltEditionMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltFontMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltFXfrMgrAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltHardwareAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltHelpMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltMiscAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltNotificatinMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltNuBusConnectors</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltOSAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltPopupAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltPowerMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltPPCToolboxAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltResourceMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltScriptCount</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltScriptMgrVersion</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltSerialAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltStdNBPAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltTermMgrAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltParityAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltVMAttr</TT
></TD
><TD
>'<TT
CLASS="literal"
>icmp</TT
>'</TD
></TR
><TR
><TD
>'<TT
CLASS="literal"
>sysa</TT
>'</TD
><TD
>&nbsp;</TD
><TD
>&nbsp;</TD
></TR
></TBODY
></TABLE
><P
></P
><P
>&#13;ROMlib recognizes and returns information for these selectors:
</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="constant"
>gestaltDITLExtAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltFindFolderAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltFSAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltSoundAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltExtToolboxTable</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltToolboxTable</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltOSTable</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltFPUType</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltKeyboardType</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltLogicalPageSize</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltLogicalRAMSize</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltLowMemorySize</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltMMUType</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltPhysicalRAMSize</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltProcessorType</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltQuickdrawVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltQuickdrawFeatures</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltTimeMgrVersion</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltMachineIcon</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltMachineType</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltROMSize</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltROMVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltSystemVersion</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltTextEditVersion</TT
></TD
><TD
>&nbsp;</TD
><TD
>&nbsp;</TD
></TR
></TBODY
></TABLE
><P
></P
><P
>&#13;ROMlib fails to recognize the following four selectors unless they are
specifically enabled by the "pretend" options (Pretend Help, Pretend
Edition, Pretend Script, Pretend Alias). The pretend options can be
enabled in the preferences panel or via a configuration file.
</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="constant"
>gestaltHelpMgrAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltScriptMgrVersion</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltEditionMgrAttr</TT
></TD
></TR
><TR
><TD
><TT
CLASS="constant"
>gestaltAliasMgrAttr</TT
></TD
><TD
>&nbsp;</TD
><TD
>&nbsp;</TD
></TR
></TBODY
></TABLE
><P
></P
><P
>&#13;These two selectors are only recognized if the system version is set
to 7.0 or higher:
</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
><TT
CLASS="constant"
>gestaltStandardFileAttr</TT
></TD
><TD
><TT
CLASS="constant"
>gestaltApplEventsAttr</TT
></TD
><TD
>&nbsp;</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x163.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>ARDI selectors</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
+410
View File
@@ -0,0 +1,410 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>ARDI selectors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="Gestalt under ROMlib"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Gestalt under ROMlib"
HREF="t1.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
><TT
CLASS="function"
>Gestalt</TT
> under ROMlib</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="t1.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="AEN163">ARDI selectors</H1
><P
>&#13;ARDI has added one special <TT
CLASS="function"
>gestalt</TT
> selector,
<TT
CLASS="constant"
>gestaltPHYSICAL</TT
> ('<TT
CLASS="literal"
>MUL8</TT
>'). It
returns the address of a routine that behaves just like
<TT
CLASS="function"
>Gestalt</TT
>, but provides access to a completely
different set of tables. These tables contain information about the
environment in which <TT
CLASS="application"
>Executor</TT
> is running
instead the emulated environment that
<TT
CLASS="application"
>Executor</TT
> provides.
</P
><P
>&#13;Example:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="programlisting"
>&#13;
int PhysicalGestalt (long selector, long *responsep)
{
int retval;
pascal int (*physfp) (long sel, long *responsep);
retval = Gestalt ('MUL8', (void *) &#38;physfp);
if (retval == noErr)
retval = physfp (selector, responsep);
return retval;
}
...
OSErr err;
long vers;
err = PhysicalGestalt ('sysv', &#38;vers);
/* err should be noErr and vers should be the version of Executor you're
running, not the version of the System file we're emulating */
</PRE
></TD
></TR
></TABLE
><P
>&#13;These are the PhysicalGestalt selectors supported:
</P
><DIV
CLASS="table"
><A
NAME="AEN175"><P
><B
>Table 1. PhysicalGestalt Selectors</B
></P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
CELLSPACING="0"
CELLPADDING="4"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="MIDDLE"
>Name</TH
><TH
ALIGN="LEFT"
VALIGN="MIDDLE"
>Value</TH
><TH
ALIGN="LEFT"
VALIGN="MIDDLE"
>Response</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltSystemVersion</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>sysv</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>numeric version of <TT
CLASS="application"
>Executor</TT
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltExecutorVersionString</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>xqtr</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>address of the string version of <TT
CLASS="application"
>Executor</TT
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltDemoStatus</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>demo</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>1, if this is a demo version</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltDemoExpiration</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>xpir</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>how many days until the demo expires</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltSerialNumber</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>s/n </TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>non-demo version: serial number</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltRegisteredName</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>name</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>non-demo version: name </TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltRegisteredOrg</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>org </TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>non-demo version: organization</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltPhysicalRAMSize</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>ram </TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>amount of physical ram on the machine</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltScreenSize</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>scrn</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>resolution of the monitor</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>gestaltGhostScriptVersion</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>'<TT
CLASS="literal"
>gost</TT
>'</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>win32 only: Ghostscript DLL version</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;ARDI is willing to add PhysicalGestalt selectors as Mac developers require.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><TT
CLASS="function"
>Gestalt</TT
> under ROMlib</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
+113
View File
@@ -0,0 +1,113 @@
*** GOALS
the goals of the new configure was to
1. make it easier to add new platforms/front ends.
2. allow building objects in a director other than
the source repository, so it is easy to have several
builds for a single platform, each being built with
different options.
3. make dependencies explicit.
*** CONFIGURING
to configure a build directory, do:
/.../executor/util/configure.sh [options]
where options include:
--cflags='flags'; where flags are the default cflags to be used when
building object files for the target
--root='dir'; where dir is the path to the executor source tree, in
this case `/.../executor', this defaults to `...'. `${root}' will
denote this directory for the rest of this document.
--target='target'; where target is the gnu-style tuple describing the
target to build executor for. the build system assumes the toolchain
for this target can be invoked in the form `<target>-<tool>', ie.,
`i486-next-ns3-gcc'.
*** TARGETS
we have a number of aliases for various targets (ie., cliff build
binutils with a `i486-go32-bsd' configuration to cross compile to dos.
cotton configured a newer version as `i386-msdos-go32'. there are
equal differences in the configuration for other platforms).
therefore, this target is `canonicalized' to yield the target name for
selecting various configuration files and syn68k versions. currently
three canonical configurations are supported (see the case statement
in util/configure.sh).
m68k-next-ns3, i486-next-ns3 for nextstep hosts running on black or
white hardware, respectively. since they are configured `ns3', it
assumed executor is backwards compatible with earlier versions, or we
just don't care about that.
i386-msdos-go32; for dos.
a target configuration, found in ${root}/targets/<target>, has to parts.
<target>.h; the configuration header file, and
<target>.make; a make configuration file.
currently, configure tests <target>.h to see if it defines `SYN68K',
in which case it configures the target to build with syn68k (adds
-DSYN68K to the `DEFINES' make variable, and sets the make variable
`LIBSYN68K' to point to the appropriate syn68k library for the
target). ultimately, putting `-DSYN68K' on the command line should be
unecessary, as all relevent files should include the target and front
end configuration header files.
target.make (if it exists) is included in Makefile.in when
configuring. it can perform any target-depend make operations it
wants. currently, the build system uses the following make
variables which <target>.make can define:
LOWGLOBAL_LD_OPTION
TARGET_LIBS
TARGET_POST_LD_CMD, TARGET_POST_LD_OPTIONS
*** THE FRONT END
the target describes what type of os/hardware executor will run on,
the front-end determines what kind of input/output api executor will
have to interface to. there are three such front-ends (with more to
be added later, i'm sure).
x; for x.
nextstep; for NeXTstep, and
dos; for vga/dos
each front end has a `<front-end>.make' file which is included in
Makefile.in druing configure. this makefile fragment includes
everything needed to build front-end specific things.
Makefile.in uses the following make variabes which the front end
makefile fragment can define:
FRONT_END_DEFINES
FRONT_END_LIBS
FRONT_END_OBJ
*** Makefile.in
Makefile.in is the main skeleton which configure.sh processes (via sed
placements to tokens of the form `@foo@') to create the Makefile in
the build directory.
currently the following tokens are replaced
@target@; the canonicalized target name
@target_make@; the text of the target makefile fragment
@target_gcc@; the name of the gnu c compiler targetting
the target.
@front_end@; the name of the front end
@root@; the path to the root directory.
@syn68k_define@; any syn68k-specific defines, currently just
`-DSYN68K', empty if the target does not use the synthetic cpu.
@syn68k_lib@; the path to the syn68k library for this
target. empty if the target does not use the synthetic cpu.
@cflags@; default cflags to be used when compiling object
files for the target.
currently we include $(ROMLIB_DIR)/romlib.make and
$(EXECUTOR_DIR)/executor.make. these should proably be included as
well, for consistency.
+224
View File
@@ -0,0 +1,224 @@
LEA EL "FAQ" (Preguntas Habituales)
Este documento incluye lo necesario para empezar. Sin embargo, una vez
instalado Executor, deberia leer el archivo "docs\faq". Contiene
respuestas a Preguntas Habituales, incluyendo los precios de Executor
(ahora mismo $49 para estudiantes, profesorado y personal de
instituciones educativas y $99 para todos los demas) asi como
politicas de actualizacion y como encargarlo.
1.99<x> DENOTA VERSIONES EXPERIMENTALES DE EXECUTOR
En un esfuerzo por mantener a nuestros clientes en el ciclo de
desarrollo, periodicamente hacemos disponibles versiones
experimentales de Executor. Estas versiones experimentales se numeran
1.99a, 1.99b, 1.99c, etc... Tratamos de no estropear lo que ya
funciona, pero a veces sucede, por lo que ha de ser consciente que
algunas cosas mencionadas en estas notas pueden no funcionar. Si
Ud. tiene una version previa de Executor instalada, puede no querer
borrar su version actual hasta que este seguro de que la nueva version
funciona como quiere. Para mantenerse al dia lo mejor es unirse a la
"Executor Interest Mailing List" de Internet. Para hacerlo, envie un
e-mail (correo electronico) a "executor-request@nacm.com" con una
linea de "subject" vacia y un "Texto" que diga "subscribe". De esa
manera tendra acceso a la mejor linea de informacion respecto a los
ultimos desarrollos de Executor.
COMO INSTALAR EXECUTOR
Esta distribucion tiene un programa de instalacion que automaticamente
instala Executor desde dos disquettes. Para instalar asegurese de que
el primer disquette (el que contiene este LEAME.1ER) este en su
disquetera de 3.5". Si esa disquetera es "A:" todo lo que ha de hacer
es:
C:\>A:\INSTALL
El programa de instalacion le permite instalar Executor donde prefiera
en su disco duro.
IMPORTANTE:
Si usa cache de disco debera desactivar el cache de escritura. El
cache de escritura puede corromper los ficheros ".HFV" si Executor
termina inesperadamente. (NOTA: si se olvida de desactivar el cache de
escritura, puede tener que reinstalar los ficheros ".HFV" despues de
un fallo de Executor).
MAS INFORMACION DISPONIBLE DESPUES DE INSTALAR
El proceso de instalacion crea un directorio "docs" que contiene otros
archivos que pueden ayudarle a comprender mejor Executor. El mas
importante de estos se llama "FAQ", que significa "Frequently Asked
Questions" (Preguntas Habituales).
EXECUTOR NECESITA UN CONTROLADOR DE RATON
Ademas de necesitar un raton fisicamente conectado a su computadora,
executor requiere un controlador de raton cargado antes de su
ejecucion. Si Executor se queja que Ud. no tiene un raton instalado,
pero Ud. tiene uno conectado, el problema es que su autoexec.bat no
carga el controlador de raton para el uso con programas DOS. Ya que
mucha gente usa el raton solo con Windows, que tiene su controlador
propio de raton, es posible que no tenga los comandos de controlador
de raton en su autoexec.bat.
Los cambios exactos a realizar dependen de que tipo de raton tenga, y
donde se halle el controlador de raton de su sistema. En general,
alguien con conocimientos de la configuracion de su sistema debe poder
guiarle para la instalacion de su raton, ya sea un servicio tecnico, o
su experto local de DOS
INICIACION AL COPIADO DE DISQUETTES CON FORMATO MACINTOSH
Executor/DOS solo puede leer disquettes de alta densidad "HD" (1.4
MB). La mayoria de aplicaciones Macintosh antiguas se distribuyeron
sobre disquettes de 800K que no pueden usarse con Executor, por lo que
ha de asegurarse de que usa diquettes para Macintosh de Alta Densidad
(1.4MB) con Executor/DOS. Executor/DOS no da formato a bajo nivel a un
disquette, pero puede reformatear un disquette DOS para Macintosh, y
solo si inserta el disquette *despues* de que Executor haya mostrado
su escritorio. Es importante resaltar que tiene tres areas diferentes
desde las que Ud. puede copiar y a las que puede copiar. Ademas de
disquettes formato Macintosh, Ud. puede copiar archivos Macintosh a su
disco duro, bien como archivos DOS, o como archivos Macintosh dentro
de un unico archivo DOS que representa un "Volumen"
Macintosh. Executor/DOS 1.99<x> tambien permite copiar a/desde discos
SCSI formato Mac (si Ud. tiene un adaptador SCSI) y la copia desde
CD-ROMs formato Mac, siempre que la letra de su CD-ROM sea H: o menor.
Cuando Ud. copia archivos Mac como archivos DOS, estos se "parten" en
dos mitades. Una mitad tendra el nombre original del archivo, el otro
tendra un "%" antecediendo al nombre original. El archivo con el
nombre original representa la data fork" (parte de datos) del archivo
Macintosh, y son datos que pueden usarse en ambos entornos, Macintosh
y DOS. La otra mitad, La que comienza por "%" es la "resource fork"
(parte de recursos) y contiene informacion que solo tiene sentido en
el entorno Macintosh.
Usar el sistema de archivos DOS para representar archivos Macintosh es
muy engorroso. De hecho, si los nombres contienen caracteres raros,
Ud. podra sufrir un "I/O error". La alternativa es almacenar archivos
dentro de un unico "Volumen Macintosh". Esta version de demostracion
de Executor viene con un Volumen Mac de 4 MB Debe ser suficiente para
permitirle explorar Executor. Mientras Executor trabaja dentro de un
Volumen Macintosh, los archivos pueden tener nombres en
mayusculas/minusculas con longitudes de hasta 31 caracteres, pero sus
programas DOS no pueden ver los archivos individuales. Mas informacion
al respecto en la documentacion.
USO DE MAKEHFV PARA CREAR UN VOLUMEN NUEVO
Aunque que nosotros no suministremos documentacion con esta version de
demostracion de Executor, puede haber visto el programa "MAKEHFV" en
el directorio "\EXECUTOR". Si es audaz y quiere usar makehfv, es
importante que el volumen nuev oque Ud. cree tenga el sufijo ".HFV".
Si Ud. no llama a su volumen nuevo "algo.HFV", executor lo ignorara.
EJECUCION DE PROGRAMAS DIRECTAMENTE DESDE DISQUETTES
La ejecucion de programas directamente desde disquette es
increiblemente lenta. Sera mucho mas rapido usar HFS_XFER para copiar
un programa desde un disquette a uno de sus volumenes ".HFV" y
ejecutar el programa directamente desde el volumen ".HFV"
UNIXISMOS QUE QUEDAN EN EXECUTOR
Executor se desarrollo originalmente bajo UNIX. Ciertos "UNIXismos"
han permanecido en Executor; Puede que ya no esten en la ver. 2.0. A
veces vera "/" usado donde "\"normalmente se usaria en DOS. Ademas,
los interruptores se introducen precedidos de "-" en vez de "/".
Rogamos nos disculpen si esto les causa molestias.
EL USO CON WINDOWS
Executor/DOS 1.99<x> funciona bajo Windows 3.1.
Puede crear un icono para Executor usando el Administrador de
Programas en Windows:
Escoja "Nuevo..." desde el Menu "Archivo" del "Administrador
de Programa".
Haga clic en el boton "Elemento de Programa"
Haga clic en "Aceptar"
Teclee "Executor" en el campo "Descripcion"
Introduzca "C:\executor\executor" en el campo "Linea de
Comando".
Introduzca "C:\executor" en el campo "Directorio de
Trabajo"
Agregue una "Tecla de metodo abreviado" si lo desea
Haga clic sobre "Cambiar de Icono"
Acepte al aparecer el mensaje de error
Seleccione un Icono que le guste
Haga clic sobre "Aceptar" para salir de "Propiedades de
Elemento de Programa"
Recuerde, Executor es su propio Entorno de Ventanas. No necesita
Windows para funcionar, aunque que la unica manera de ejecutar dos
programas Mac a la vez es bajo Windows. Una vez tenga una copia de
Executor que corre bajo Windows, puede usar "Alt_Izda.-Tab" y
"Dcha._Alt-Intro" para saltar entre modos diferentes de pantalla y
programas.
EL USO CON OS/2
Executor/DOS 1.99<x> funciona en OS/2 2.11, pero no con versiones
previas. Para que E/D 1.99<x> funcione, debera ajustar los siguientes
parametros:
DPMI_DOS_API ENABLED DPMI_MEMORY_LIMIT 16
EMS_MEMORY_LIMIT 0 XMS_MEMORY_LIMIT 0
USO CON NT
Actualmente, Executor/DOS 1.99<x> no corre bajo Windows NT. Esto no
cambiara pronto, lo sentimos.
SI EXECUTOR EJECUTA LENTAMENTE
Executor necesita 4 MB de memoria para trabajar eficientemente. Si no
tiene la memoria fisica suficiente, pasara a disco aquellas partes de
memoria que se usen menos, y las recuperara cuando las necesite. Sin
embargo, en DOS los sistemas pueden ver su memoria artificialmente
reducida de demasiadas maneras para explicar aqui. Si cree que
Executor funciona lentamente, quiza sea conveniente que un experto le
compruebe el sistema, para asegurarse que la memoria no esta siendo
reducida.
CREDITOS
Executor es un producto de ARDI (Abacus Research and Development,
Inc.). La mayoria de Executor propiamente dicho ha sido dise¤ada e
implementada por Clifford T. Matthews. El CPU sintetico y portado a
DOS son de Mathew Hostetter. Executor originalmente se escribio bajo
X-WINDOWS, portado a NEXTSTEP y finalmente a DOS, usando DJGPP, un
portado del compilador gcc de la Free Software Foundation, hecho por
DJ Delorie, Charles Sandmann y otros. El emulador de 387 que usamos
es obra de William Metzenthen. Puede encontrar mas informacion sobre
la Free Software Foundation y DJGPP en nuestra documentacion.
Gracias!
Clifford T. Matthews questions@ardi.com
Fundador +1505 766 9115 Telefono
ARDI +1505 247 1899 FAX
LEAME.1ER traducido por Juan Negron. 100014.2742@compuserve.com
Traduccion Rev. 0.99.
+179
View File
@@ -0,0 +1,179 @@
What is Executor?
Executor is a commercial emulator that allows non-Macintosh hardware
to run many applications originally written on a Macintosh. Executor
has many limitations, but surprisingly, speed is not one of them.
If your only experience with emulators is Soft-PC or Soft-Windows
making a Mac emulate a PC, please check out a demo of Executor [see
below -- `Where can I pick up the Executor demos?'] to see just how
quickly Executor can do the reverse.
------------------------------------------------------------------
How can I get more information about Executor?
The FAQ (Frequently Asked Questions list) is the basic source for
Executor information. It's available wherever the Executor demo is,
with the canonical site being ftp.ardi.com/pub/docs. See below for
the addresses of mirror sites, most of which are much faster than
ARDI.
It's available in HTML at http://www.ardi.com/executor-faq/index.html.
The FAQ is also included in the docs with each demo.
-----------------------------------------------------------------
On which platforms is Executor available?
Executor/DOS (E/D) is an implementation that runs under DOS, Windows
3.x, Windows '95 and OS/2. Executor/NEXTSTEP (E/NS) is an
implementation that runs under NEXTSTEP, both on original NeXT
hardware and Intel based hardware running NEXTSTEP. Executor/Linux
(E/L) is an implementation that runs under Linux for the PC.
------------------------------------------------------------------
Where can I pick up the Executor demos?
If you have Web access, go to
http://www.ardi.com/
There are links there which will let you automatically download
whatever version is the latest. If you only have plain ftp access,
read on.
The canonical place to find Executor demos is ftp.ardi.com. However,
ftp.ardi.com is currently only connected to the Internet via a 28.8kb
modem, and as such is really only useful to provide data for mirror
sites. When you connect to ftp.ardi.com it will give you a current
list of those mirror sites.
ftp://vorlon.mit.edu/pub/ardi/
ftp://ftp.pht.com/pub/linux/ardi/
ftp://ka4ybr4.netmha.com/pub/ardi/
ftp://ftp.mpik-tueb.mpg.de/pub/phil/ardi/
---------------------------------------------------------------
What limitations will Executor 2 have?
Because the OS and Toolbox have been rewritten from scratch, Executor
2 will have many limitations, including no serial port access, no
AppleTalk, minimal sound, minimal System 7 support, no INITs, no CDEVs
and no Internationalization.
Executor can read and write 1.4 MB Mac formatted floppy disks, but due
to limitations in PC hardware, Executor *can't* read or write 800 KB
floppy disks.
Executor can print directly only to a PostScript printer. Otherwise,
Executor will print to a PostScript file and you can then use an
interpreter such as GhostScript to print to a printer.
We hope to support full sound and serial port access within six months
of releasing Executor 2, but currently all our effort is concentrated
on preparing 2 for release, so that is only speculation.
---------------------------------------------------------------
How much does Executor cost?
The currently shipping version is the Executor 2.0, and it costs US$249.
Shipping is free within the U.S. or to countries participating in the
Global Priority mail system. International shipping to other
countries (USPS International Express) is US$20.
An Executor/Linux license allows you to use either the X-Windows
version or the SVGAlib version, but you can not use one and let a
friend use the other at the same time. Eventually we'll merge the two
versions, but this may not happen until after Executor 2 is released.
All 1.x owners, even those who bought Executor 1.0 a year and a half
ago, are entitled to free upgrades through and including 2.0.x, as
long as the upgrades are picked up electronically. 2.0.x releases
will fix bugs in 2.0, but will not add new functionality. Beyond 2.0,
when new functionality is added, there will be a small upgrade fee if
you want the the newer versions with the new functionality.
All prices are subject to change.
-------------------------------------------------------------------
Who makes Executor?
ARDI
Suite 4-101
1650 University Blvd., NE
Albuquerque, NM 87102
+1 888 BUY ARDI (toll free; for orders only)
+1 505 766 9115 (for tech support)
+1 505 766 5153 fax
<info@ardi.com> general information
<questions@ardi.com> specific questions and tech support
<bugs@ardi.com> bug reports
<sales@ardi.com> information about ordering
------------------------------------------------------------------
How do I order Executor?
Before you order, please read and understand Executor's current
limitations [see above -- `What limitations does Executor 2.0 have?']
and Executor's price [see above -- `How much does Executor cost?'].
While Executor is still in development, we specifically make demo
versions [see above -- `Where can I pick up the Executor demos?']
available so you'll know exactly what you're getting. If you like
what you see, you can mail us a check [see above -- `Who makes
Executor?'], FAX us (+1 505 766 5153) credit card information (VISA,
MasterCard or EuroCard only) or call us up (+1 888 BUY ARDI) so we can
take down your credit card information. We do not currently run PGP,
so sending credit card information via e-mail is not recommended.
We accept domestic purchase orders from most universities and most
large companies. We no longer accept non-U.S. purchase orders and we
reserve the right to refuse U.S. purchase orders as we see fit. NOTE:
All checks and money orders must be payable in U.S. funds and be
written from a U.S. bank.
Order Form
Name ______________________ Name on Card ______________________
Organization ______________________ Visa or MC ______________________
Street Address ______________________ Card Number ______________________
Street Address ______________________ Expiration Date ___________________
City ______________________ E-mail Address ____________________
State ______________________ FAX Number _______________________
Postal Code ______________________ Phone Number ______________________
Country ______________________
Number of Cost
Description Quantity Machines Each
Executor CD _____ x _____ x $249 = _____
International Shipping (US $20) may be needed if the
destination address is outside the United States. We ship
Global Priority when we can. Is International Shipping OK
if necessary? _____
Sales Tax ($14.47; needed if destination is in New Mexico) _____
Total _____
+19
View File
@@ -0,0 +1,19 @@
O R I G I N A L N E W estimated
------------------------------- --------------
PPC601 PPC601 scaled
Quadra Pentium 486DX4 486DX/2 100MHz 100MHz Pentium
610 90MHz 75MHz 66MHz w/o SD w/ SD 100 MHz
------ ------ ------ ------ ------ ------ -------
CPU 16.018 28.833 15.727 13.840 32.04 54.06 32.036
Dhrystones 19.586 21.886 12.084 9.424 42.76 54.98 24.317
Tower 18.909 27.130 12.235 11.556 52.00 29.71 30.144
Quicksort 17.759 27.105 15.606 13.919 30.29 57.22 30.116
Bubble sort 18.409 31.154 19.286 16.875 36.82 57.86 34.614
Queens 19.083 38.167 19.083 18.320 50.89 65.43 42.407
Puzzle 22.083 44.167 23.661 21.032 47.32 73.61 49.074
Permutations 21.019 28.564 11.604 12.242 48.43 61.89 31.737
Int. Matrix 24.200 26.469 19.369 16.608 70.58 94.11 29.410
Sieve 23.362 60.290 33.982 30.145 31.68 81.26 66.988
------ ------ ------ ------ ----- ----- ------
Average 20.490 33.881 18.582 16.680 45.641 64.007 37.645
Binary file not shown.
Binary file not shown.
View File
Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Whitespace-only changes.
+27
View File
@@ -0,0 +1,27 @@
exits immediately, after it calls GetDiskFragment () which fails.
The FSSpec that they're handing in is vref==0, parid==0, name[0] == 0.
It's fairly clear that they're trying to load a fragment from their own data
fork, but without testing, it's not clear at all whether something's going
wrong when they try to fill in the name, or whether GetDiskFragment is
supposed to know about a zero-length name.
I put in a test where we recognize zero-length names, but then Corel
stopped making the call to GetDiskFragment. Instead it started
calling FSpOpenRF with a bizarre name. That suggests to me that a
corrupt file is hosing us somewhere (temp file, prefs file). I didn't
have time to pursue this -- late for dinner. It looks like it might
be the System file itself (nope -- copying that from w2k didn't help).
Interestingly enough, adding that code was what caused the weird call
to FSpOpenRF. When that code isn't added, we get passed a null name,
which apparently FSpOpenRF actually opens. Weird. It may be a stray
memory issue or a case of some function not returning information
where it should.
If I then manually juke the call to GetDiskFragment, I get:
Need glue for '__register_fragment'
which may be something that comes from InterfaceLib, or may be
something they expect to pick up elsewhere -- I should be able to tell
if I watch carefully.
+7
View File
@@ -0,0 +1,7 @@
Fontgrapher 4.1 demo appears to add 350 to the stack in order to get
some memory that it latrer uses with the stmw instruction. Since the
stack is 4-byte aligned before 350 is added to it, it's no longer
4-byte aligned afterward -- why does this work on a Mac? Perhaps
older Macs didn't care? Perhaps this code doesn't get hit. Perhaps
the Mac cleans up such accesses. Perhaps the stack is misaligned
going into that code. My guess is the code doesn't get hit.
+6
View File
@@ -0,0 +1,6 @@
FreeHand 8.0 installer calls modeswitch from 68k code
when there doesn't appear to be a cfrg (don't pursue)
FreeHand 8.0 proper has trouble finding a file that is in the same directory
with it
+6
View File
@@ -0,0 +1,6 @@
Complains with "could not be launched because an error occurred
(#-35). If you have moved the application out of the Corel Graphics 8
folder, try moving it back. Otherwise, please contact Corel Technical
Support."
Of course this was done on a system where I did indeed move it.
+8
View File
@@ -0,0 +1,8 @@
Complains that default destination is in the trash
When we select a destination it doesn't update the "Select XXX"
button at the bottom as we click different folders
(BTW, they have support for a "New Folder" button)
their control doesn't update
+36
View File
@@ -0,0 +1,36 @@
THINK ABOUT RAMIFICATIONS OF PPC SP and 68k emulator's A7 IDENTITY
Auto-create glue for everything we have ctopflags for -- this
will allow us to track calls made by ppc apps (WP goes
off into never-never land; dim3 hits suspicious loop)
support lower-case glue -- EnergyScheming
It also may make sense to figure out what bug is preventing
browser from opening macos86 after a launch and also look into
supporting afpd r/w.
stub out drag manager -- will help dimensions 3.0 and possibly some
68k apps
Need glue for "HoldMemory" -- ImageReady 2.0 (in PS55 folder)
glue for StdCLib
/macos86 is opened correctly when double-clicked, but becomes /
after an application has run (this is when using "-afpd" -- it
may happen elsewhere, too)
implement
CountSymbols
GetIndSymbol
Support the init routine
free resources when processes exit
look at FreeHand 8's installer's modeswitch
dump interfacelib symbols and look for ones we can provide easily
+5
View File
@@ -0,0 +1,5 @@
Quark XPress 4.02 demo installer has problems
clicking check-boxes
quitting
XPress proper needs register calling conventions
+1
View File
@@ -0,0 +1 @@
Need glue for '__register_fragment'
+18
View File
@@ -0,0 +1,18 @@
Need glue for 'RemoveTrackingHandler'
i.e. needs DragManager
UPDATE: HMMM... We're now getting a SEGV. It's not clear what changed to
cause this regression
hfsXbar.c:361; trap failure in `PBHOpen': -43
interfacelib.c:2674; trace info in `HOpen': retval = -43, filename = 'AdobeFnt.lst'
interfacelib.c:808; trace info in `NewPtr_wrapper': 0x3011ea50
interfacelib.c:808; trace info in `NewPtr_wrapper': 0x3011f3f4
Program received signal SIGSEGV, Segmentation fault.
0x3166cbf8 in ?? ()
(gdb) x/i $pc
0x3166cbf8: stb r5,0(r6)
(gdb) p/x $r6
$12 = 0x80000000
+1
View File
@@ -0,0 +1 @@
Need glue for 'WideDivide'
+1
View File
@@ -0,0 +1 @@
Can't load shared libraries
+47
View File
@@ -0,0 +1,47 @@
It looks like the "Illustrator Formats - Standard/PICT Export" plug-in requires
these routines from "StdCLib":
fwrite
free
memset
fclose
fseek
malloc
memmove
strcpy
strlen
vsprintf
fopen
This is a bit evil because it's not at all clear where they should
come from. A simplistic find/xargs/grep-l search suggests that this
library isn't supplied anywhere in the Illustrator 8 tryout directory.
It may even be a bug that someone didn't realize that they were
requiring this library.
I'll need to write a tool that is better than find/xargs that will
really tell us which libraries are exported by which files.
Foo.
The biggest problem here may be that vsprintf requires a variable
number of arguments. Other than that it would be trivial to glue our
own StdCLib for at least these functions.
I can probably remove that particular plug-in and get Illustrator 8 to
run further.
UPDATE: Searching for StdCLib on the web shows that StdCLib is present
on all PowerMacs, so we will indeed have to support it. Not that big
of a deal, per-se, but it's one more thing to do.
-------------------------------------------------------------------------
If I get rid of "Illustrator Formats - Standard/PICT Export" then we
wind up with a segmentation fault. If I get rid of all the plug-ins,
then we die as we make a call to a custom CDEF. I need to look at how
FAT traps are done, althought this doesn't look like what's going on.
Grr... would be nice to be able to disassemble 68k code under PPC
linux gdb.
+1
View File
@@ -0,0 +1 @@
Need glue for 'AEManagerInfo'
+10
View File
@@ -0,0 +1,10 @@
PS3.0 Installer doesn't run off CD-ROM
wants to eject CD-ROM, then ask for ATM disk, at least
if ATM is one of the things being installed (doesn't
eject disk when ATM not installed)
If I just try to install PS3 itself, the installer
runs for a little while and then wants to eject my
disk
+15
View File
@@ -0,0 +1,15 @@
Looks like we're getting unaligned memory need to experiment more with
stmw on a G4
cfm.c:1056; unimplemented feature in `load_loader_section': register preservation, bad init_block
interfacelib.c:331; trace info in `LMGetApplLimit':
interfacelib.c:303; trace info in `LMGetApplZone':
interfacelib.c:331; trace info in `LMGetApplLimit':
interfacelib.c:345; trace info in `LMGetMBarHeight':
Program received signal SIGBUS, Bus error.
0x317df134 in ?? ()
(gdb) x/i $pc
0x317df134: stmw r13,20(r3)
(gdb) p/x $r3
$2 = 0x7ffff0e6
+6
View File
@@ -0,0 +1,6 @@
When you provide it with plug-ins, it dies while trying to load one of
the extensions. It looks like it may be jumping into callback space --
I think I've seen this under a different app before.
The SimpleText that is included will not start -- it appears to be 'dcmp'
related
+3
View File
@@ -0,0 +1,3 @@
Installer sends AE and then apparently waits for a reply, which never comes
wp 35 proper seems to spin its wheels -- unclear why
+12
View File
@@ -0,0 +1,12 @@
TexEdit scrolling.
Microsoft Flight Simulator.
Browser startup time
disk access under Windows (for instance saving a file from Word)
This was reported by Emilio Moreno and who knows, he may be
swapping like hell
DemoHo68k is amazingly slow when the ~Build Ships~ panel is brought up
and when the number of ships is adjusted.
Mat> The source for Wolfenstein3D is available in
Mat> ftp://ftp.idsoftware.com/idstuff/source/
+244
View File
@@ -0,0 +1,244 @@
1.99x DENOTES EXPERIMENTAL VERSIONS OF EXECUTOR
In an effort to keep our customers in the development loop, we are
periodically releasing experimental versions of Executor. These
experimental versions are numbered 1.99a, 1.99b, 1.99c, etc. We try
not to break features with new releases, but sometimes that happens,
so be aware that anything mentioned in these notes may fail to work.
To keep totally up to date, you should join the Executor Interest
mailing list. To do so, send e-mail to "majordomo@nacm.com" with a
blank subject line and a mail body of "subscribe executor" and then
you'll have access to a more timely forum concerning the latest
developments in Executor.
HOW TO INSTALL
This distribution has an installation program which will automatically
install Executor from two floppies. To run the installation script, make
sure that the first floppy (the one with this README.1ST file on it) is in
your 3.5" floppy drive. If that drive is drive "A:", all you need to
do is:
C:\> A:\INSTALL
Unlike previous versions of Executor's installer, starting with 1.99i,
the installer program will allow you to install Executor anywhere on
your hard drive.
IMPORTANT:
If you are using disk cacheing you should set it to only do read
caches. Write caches can result in the ".hfv" files being
corrupted if Executor dies unexpectedly. (NOTE: if you forget to
turn off your write cache, you may have to reinstall the ".hfv"
files after Executor crashes).
MORE INFORMATION AVAILABLE AFTER YOU INSTALL
The installation process creates a "docs" directory that contains
other files that may help you to better understand Executor. The most
important of these is called "faq", which stands for "answers to
Frequently Asked Questions".
EXECUTOR NEEDS A MOUSE DRIVER TO WORK
In addition to needing a mouse to be physically connected to your
computer, Executor requires a mouse driver to be loaded before it can
run. If Executor complains that you don't have a mouse installed,
even though you have one connected, the problem is that your
autoexec.bat does not load the mouse driver for use with DOS programs.
Since many people only use their mouse with Windows, which has its own
mouse driver, they don't have the mouse driver commands in their
autoexec.bat.
The exact changes that need to be made to your autoexec.bat varies
depending on what type of mouse you have, and where the mouse driver
has been installed on your system. In general, anyone knowledgeable
about your particular configuration should be able to give you simple
instructions for modifying your autoexec.bat, whether that's the
technical support line of the company that made the machine, or your
local DOS wizard.
HOW TO GET STARTED COPYING MACINTOSH FORMATTED FLOPPIES
Executor/DOS can only read High Density (1.4Mb) formatted floppies.
Most older Macintosh applications were distributed on 800K floppies
which can't be used with Executor, so MAKE SURE you use 1.4Mb
Macintosh formatted floppies with Executor/DOS. Executor/DOS doesn't
format floppies for you; you'll have to do that on a Macintosh, for
now.
The key to copying Macintosh formatted floppies is the "Desk
Accessory" called HFS_XFer. Desk accessories are little programs that
piggyback off other programs to do their work. It's like the old
Vermont joke (beware, provincial humor does not always translate well)
"You can't get there from here (pause) you have to go someplace else,
first". The upshot is that you must run a program, almost any
program, in order to find and use "HFS_XFer". I usually start up the
"Mines" program. Once Mines is started, and the initial "OK" box is
clicked, you can find "HFS_XFer" under the Apple menu at the far left
of the menu bar.
Internally at ARDI we have a file browser that allows you to
graphically copy, delete and rename files. It will be included with
E/D 2.0, but it is not yet available to the general public.
It is important to note that you have three different areas that you
can copy to/from. In addition to Macintosh formatted floppies, you
can copy Macintosh files to your hard disk, either as DOS files, or as
Macintosh files within a single DOS file which represents a Macintosh
"volume". This fully-enabled version of Executor/DOS 1.99x also
allows you to copy to/from Mac formatted SCSI drives (if you have a
SCSI adapter) and copy from Mac formatted CD ROMs if you have a CD ROM
drive.
When you copy Mac files as DOS files, they are broken up in two
halves. One half will have the original name of the file, the other
will have a "%" prepended to the original name. The file with the
original name represents the "data fork" of the Macintosh file, and
that's where data that can be used in both Macintosh and DOS
environments resides. The other half, the one with the "%" prepended
is the "resource fork" and it contains information that only makes
sense in the Macintosh environment.
Using the DOS filesystem to represent Macintosh files is very awkward.
In fact, if the names contain funny characters, you might get an "I/O
error". The alternative is to store files within a single "Macintosh
Volume". This demo version of Executor comes with a 5 Mb Mac Volume.
It should be sufficient to allow you to explore Executor. While
Executor is working within a Macintosh volume, files can have upper
and lower case names with lengths up to 31 characters, but your DOS
programs can't see the individual files. More about what's going on
is in the printed documentation.
USING MKVOL TO CREATE A NEW VOLUME
Although we don't supply documentation with this demo version of
Executor, you may notice the "MKVOL" program in the "\EXECUTOR"
directory. If you are adventurous and want to use mkvol, it is
important that the new volume that you create have the suffix ".HFV".
If you do not call your new volume "something.HFV", Executor will
ignore it.
RUNNING PROGRAMS DIRECTLY OFF FLOPPIES
Running programs directly off floppies is incredibly slow. You will
find it much quicker to use HFS_XFer to copy a program from a floppy
into one of your ".hfv" files and then run the program directly out of
the ".hfv" file.
UNIXISMS LEFT IN EXECUTOR
Executor was developed originally under UNIX. A few "UNIXisms" have
remained in Executor; they will be gone in 2.0. Sometimes you will
see "/" used where "\" would normally be used in DOS. In addition,
switches are introduced with a leading "-" instead of "/". We
apologize for this annoyance.
USE WITH WINDOWS
Executor/DOS 1.99x will run under Windows 3.1.
You can make a double-clickable icon for Executor by using the
Program Manager in Windows:
Choose "New..." from the Program Manager "File" menu
Click the "Program Item" radio button
Click "OK"
Enter "Executor" in the Description field
Enter "c:\executor\executor" in the Command Line field
Enter "c:\executor" in the Working Directory field
Add a Shortcut Key if you wish
Click on "Change Icon...
Click on "OK" when the error message comes up
Find, Select and Click OK on an Icon you like
Click on "OK" to leave "Program Item Properties"
Remember, Executor is its own windowing system. It does not need
Windows to be effective, although the only way you can run two Mac
programs at once it to do so under Windows. Once you have one copy of
Executor running under Windows, you can use "Left_Alternate-Tab" and
"Right_Alternate-Enter" to hot-key back and forth between different
programs and screen modes.
USE WITH OS/2
Executor/DOS 1.99x works with OS/2 2.11, but not with previous versions.
To get E/D 1.99x to run you'll need to adjust use these settings:
DPMI_DOS_API ENABLED
DPMI_MEMORY_LIMIT 16
EMS_MEMORY_LIMIT 0
XMS_MEMORY_LIMIT 0
USE WITH NT
Currently, Executor/DOS 1.99x does not run under Windows NT. This should
change soon, I believe.
IF EXECUTOR RUNS SLOWLY
Executor needs about 4 Mb of memory to work efficiently. If it does
not have enough physical memory, it will make do by writing
infrequently used parts of itself to your hard disk and only "paging"
them in when they're actually used. However, DOS systems can have
their memory artificially eaten up in too many ways to describe here.
If think Executor is running slowly, you might want to have a DOS guru
check to make sure that it's not being memory starved.
CREDITS
Executor is a product of ARDI (Abacus Research and Development, Inc.).
The majority of Executor proper was designed and implemented by
Clifford T. Matthews. The synthetic CPU and DOS port were done by
Mathew Hostetter. Executor was originally written under X-Windows,
then ported to NEXTSTEP and finally ported to DOS using DJGPP, a port
of the Free Software Foundation's gcc compiler done by DJ Delorie.
The file "EXECUTOR.EXE" is actually a modified version of DJ's "GO32"
DOS extender, the source to which is freely available, from us (for
the cost of a floppy plus postage).
More information about the Free Software Foundation and DJGPP is
included in our documentation.
Thanks!
Clifford T. Matthews questions@ardi.com
Founder +1 505 766 9115 Phone
ARDI +1 505 247 1899 FAX
+63
View File
@@ -0,0 +1,63 @@
+---------------------------------------------------------------------------+
| wm-FPU-emu an FPU emulator for 80386 and 80486SX microprocessors. |
| |
| Copyright (C) 1992,1993,1994 |
| W. Metzenthen, 22 Parker St, Ormond, Vic 3163, |
| Australia. E-mail billm@vaxc.cc.monash.edu.au |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License version 2 as |
| published by the Free Software Foundation. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| |
+---------------------------------------------------------------------------+
This emulator, which I call wm-FPU-emu, is in fact a slightly modified
wm-FPU-emu which I wrote for the Linux operating system. That emulator
is based upon an older emulator which I wrote for use with djgpp.
Released versions:
for djgpp 1.11 wm-FPU-emu version Beta 1.11d April 1994
for djgpp 1.11 maint5 wm-FPU-emu version Beta 1.11d2 July 1994
If you merely want to use the FPU emulator, move the file emu387 to
where go32 expects to find it. See the djgpp documentation for more
detail on installing and using emu387.
If you want to look at the source for the emulator, you will find it
in the file wmfpu112.tgz which is a gzip-compressed tar archive. Use
gunzip and tar to extract the files.
If you wish to compile the emulator, you should be aware that the
emulator source is set up for compiling on the Linux operating system.
It is conceivable that it will compile with few problems on other
operating systems such as OS/2 or even ms-dos. For Linux, I suggest
moving wmfpu112.tgz to the root directory and then:
cd /; tar xpvfz /wmfpu112.tgz '*/wm-FPU-emu/*'
which assumes that you already have the Linux kernel sources installed,
otherwise simply do:
cd /; tar xpvfz /wmfpu112.tgz
then:
cd /usr/src/djgpp/wm-FPU-emu
and read the README.
A copy of the GNU General Public License may be found in wmfpu112.tgz
as the file
./usr/src/djgpp/wm-FPU-emu/COPYING.
A discussion of the performance and limitations of the emulator can
be found in wmfpu112.tgz in the file
./usr/src/linux/drivers/FPU-emu/README.
Bill Metzenthen
11th July 1994
+378
View File
@@ -0,0 +1,378 @@
[hammer home the distinction between compile-time and run-time]
A Region is a data structure that defines a set of pixels. ???
[briefly describe Apple's Region and ARDI's internal Region. ARDI's
region doesn't XOR adjacent scanlines, and stores X values in "native
endian" byte order for speed (y values are still big endian, which can
be irritating). Mac programs can never see a special region].
...We wanted to write a blitter that had good performance in the
common case, but did not want to spend a great deal of time writing
code to handle special cases...
One way to write a simple Region blitter is to start with a subroutine
that parses the start/stop pairs of a Region scanline and draws the
corresponding pixels. This subroutine is then called once for each
row of pixels to be displayed.
Unfortunately, this approach is slow since each scanline gets
re-parsed every time it is drawn. The Region for a 300 pixel tall
rectangle consists of a single scanline with a repeat count of "300";
this "simple Region blitter" will parse that scanline 300 times!
That's a lot of redundant work.
There are many possible ways to get away with parsing each scanline
only once. One approach is to convert the start/stop pairs into a bit
mask where the bits in the mask correspond to the bits in the target
bitmap that are to be changed. The inner blitting loop then becomes
an exercise in bitwise arithmetic. In C, such a loop might look
something like this:
for (x = left; x < right; x++)
dst[x] = (dst[x] & ~mask[x]) | (pattern_value & mask[x]);
That's not bad, but it's unnecessarily slow in the common case of
filling a rectangle. For a rectangular Region, mask[x] is usually all
one bits, making the bit munging a waste of time. And even when the
masks are never solid (e.g. when drawing a thin vertical line), this
technique is still unnecessarily slow. As it turns out, even the
cycles the CPU spends loading mask bits from memory are unnecessary.
Executor's blitter uses the techniques of partial evaluation and
dynamic code generation to eliminate redundant work. On the 80x86
each scanline is quickly translated into executable code, and that
code gets executed once each time the scanline needs to be drawn. On
non-80x86 platforms, each scanline is compiled into threaded code
which is executed by a machine-generated interpreter to draw the
scanlines.
80x86:
Before describing how the dynamic compilation process works, let's
take a look at an example. Consider the case where a 401x300
rectangle is to be filled with white pixels (pixel value zero on the
Macintosh). This might happen, for example, when erasing a window.
Furthermore, let's assume that the target bitmap has four bits per
pixel, since that's somewhat tricker to handle than 8 bits per pixel.
Here is the subroutine that Executor dynamically generates to draw
this rectangle on a Pentium:
loop: andl $0xff,0x50(%edi) # clear leftmost 6 boundary pixels
addl $0x54,%edi # set up pointer for loop
movl $0x31,%ecx # set up loop counter
rep ; stosl # slam out 49 aligned longs
andl $0xffff0f00,0x0(%edi) # clear 3 right boundary pixels
addl $0x28,%edi # move to next row
decl %edx # decrement # of rows left
jne loop # continue looping if appropriate
ret # we're done!
This code, when called with the proper values in its input registers,
will draw the entire rectangle. Note how the inner loop is merely a
"rep ; stosl"...it doesn't get much more concise than that! The
astute reader will know that on certain 80x86 processors "rep ; stosl"
is not the fastest possible way to set a range of memory. This is
true, but because our code generation is dynamic, in the future we can
tailor the specific code sequence generated to the processor on which
Executor is currently running. The blitter already does this when it
needs to emit a byte swap; on the 80486 and up we use the `bswap'
instruction, and on the 80386 (which doesn't support `bswap') we use a
sequence of rotates.
One thing you may notice is that the bit masks used to clear the
boundary pixels look strange. They are actually correct, since 80x86
processors are little endian.
Unlike some processors, such as the 68040, the 80x86 instruction and
data caches are always coherent. Consequently, no cache flushes need
to be performed before the dynamically created code can be executed.
Here's another example, this time drawn from a real application. The
program "Globe", by Paul Mercer, draws a spinning globe on the screen
as fast as it can. Each "globe frame" is a 128x128 Pixmap. Here is
the code that Executor generates and runs when Globe uses CopyBits to
transfer one frame to the screen at 8 bits per pixel:
loop: movl $0x20,%ecx ; set up loop counter for 32 longs
rep ; movsl ; copy one row (128 bytes)
addl $0xffffff00,%esi ; advance to previous src row
addl $0xfffffd00,%edi ; advance to previous dst row
decl %edx ; decrement # of rows remaining
jne loop
ret
Again the inner loop is very tight, just a "rep ; movsl" this time.
No matter how fast the generated code, if Executor spends too much
time generating that code then any speedup will be negated by the
increased time required for dynamic compilation. Consequently, the
dynamic compilation from Region to 80x86 code needs to be fast.
We solved this problem with a "meta-assembler" written in Perl.
The blitter operates on aligned longs in the destination bitmap. As
the compilation engine strides through the start/stop pairs from left
to right, it identifies which bits in each long are part of the Region
and determines which of several cases is appropriate:
- Some but not all bits in the current long are in the Region.
- All bits in the current long are in the Region.
- All bits in this long and the next long are in the Region.
- All bits in this long and the next two longs are in the Region.
- All bits in this long and the next three longs are in the Region.
- More than four contiguous longs are completely in the Region,
and the number of longs equals 0 mod 4.
- More than four contiguous longs are completely in the Region,
and the number of longs equals 1 mod 4.
- More than four contiguous longs are completely in the Region,
and the number of longs equals 2 mod 4.
- More than four contiguous longs are completely in the Region,
and the number of longs equals 3 mod 4.
The particular case encountered determines which function pointer to
load from a lookup table corresponding to the current drawing mode.
For example, the "patCopy" drawing mode has one table of function
pointers, "patXor" another. There are also some special case tables
for drawing patterns that are either all zero bits or all one bits.
The main blitter doesn't care what drawing mode is being used, since
it does all mode-specific work through the supplied function pointer
table.
Each function pointer points to a function that generates 80x86 code
for the appropriate case. For example, one function generates code
for a "patCopy" to three contiguous longs, one generates code for
"patXor" only to certain specified bits within one long, etc.
The blitter compilation engine marches through the Region scanline
from left to right, calling code generation functions as it goes. The
generated code is accrued into a 32-byte aligned buffer on the stack.
In this way, the blitter constructs a subroutine to draw the Region.
The compilation engine isn't very complicated. The tricky part is the
all of code generation subroutines, which need to be fast since they
are called so often and easy to write since there are so many of them.
For each drawing mode there's one for each case the compilation engine
cares about. For pattern drawing modes, there are separate
specialized routines for cases like patterns that can be entirely
expressed in one 32-bit value ("short/narrow") patterns, patterns
which can be expressed as one 32-bit value for each row, but which
vary per row ("tall/narrow"), as well as "wide" variants of both.
Beyond that, there are some versions specialized for 80486 and higher
processors (which have the "bswap" instruction).
This is where the Perl meta-assembler comes into play.
The meta-assembler takes as input an assembly language template, and
generates as output Pentium-scheduled assembly code that outputs an
80x86 binary for the input template. Got it? This can be a little
confusing, so a few examples are in order.
Here is perhaps the simplest template:
@meta copy_short_narrow_1
movl %eax,@param_offset@(%edi)
@endmeta
The meta-assembler processes that into this 80x86 assembly code:
.align 4,0x90
.globl _xdblt_copy_short_narrow_1
_xdblt_copy_short_narrow_1:
movw $0x8789,(%edi)
movl %eax,2(%edi)
addl $6,%edi
ret
This subroutine, which gets called by the blitter compilation engine,
generates the binary for the input assembly template. It writes the
raw binary for the movl instruction specified in the template to the
address specified by %edi.
Let's take a look at a far more complicated template. This template
handles the case where we want to bitwise OR a pattern to the
destination bitmap, and the number of longs to transfer equals zero
mod 4 (e.g. if the blitter wants to OR 36 longs to memory):
@meta or_short_narrow_many_mod_0
addl $@param_offset@,%edi
movl $@param_long_count_div_4@,%ecx
1: orl %eax,(%edi)
orl %eax,4(%edi)
orl %eax,8(%edi)
orl %eax,12(%edi)
addl $16,%edi
decl %ecx
jnz 1b
@lit leal (%eax,%edx,4),%ecx
@lit addl %ecx,edi_offset
@endmeta
The meta-assembler compiles that to this:
.align 4,0x90
.globl _xdblt_or_short_narrow_many_mod_0
_xdblt_or_short_narrow_many_mod_0:
movw $0xC781,(%edi)
movl %eax,2(%edi)
movl $0x47090709,11(%edi)
movb $0xB9,6(%edi)
movl $0x8470904,15(%edi)
movl $0x754910C7,23(%edi)
movl $0x830C4709,19(%edi)
movb $0xEF,27(%edi)
movl %edx,%ecx
shrl $2,%ecx
movl %ecx,7(%edi)
addl $28,%edi
leal (%eax,%edx,4),%ecx
addl %ecx,edi_offset
ret
Again, this mechanically generated subroutine generates the executable
80x86 binary for the "or_short_narrow_many_mod_0" template. It gets
called by the blitter compilation engine when it needs code to OR a
bunch of longs to memory.
Even though this subroutine is longer than the previous example, it
still doesn't take very long to execute. Furthermore, it only gets
called when the blitter has determined that many longs are to be ORed
to memory, so the time taken actually blitting to memory will
typically dwarf the time taken to execute these 15 instructions.
The meta-assembler is a Perl script that works by running numerous
syntactically modified versions of the assembly template through
"gas", the GNU assembler, and examining the output bytes to discover
which bits are fixed opcode bits and which bits correspond to
operands. Once it has figured out what goes where, it generates 80x86
assembly code which writes out the constant bytes and computes and
writes out the operand bytes. That code is run through a simple
Pentium instruction scheduler and the meta-assembler is done.
Portable:
Although the meta-assembler-based blitter works only on 80x86
processors, Executor itself can run on non-Intel processors. On other
CPUs (such as the 68040 used in the NeXTstation) Executor's blitter
works somewhat differently.
The basic idea is still the same: translate Region scanlines into an
efficient form once and then use that efficient form each time the
scanline gets drawn. This time, however, the "efficient form" is
processor independent, and the blitter is written entirely in C.
As is the case with the 80x86-specific blitter, the portable blitter
compilation engine examines scanline start/stop pairs and identifies
which of several cases is appropriate. One case is "output three
longs", another is "output only certain pixels within the current
long", and so on.
Like the 80x86-specific blitter, the particular case encountered
determines which entry in a lookup table will be used. But there the
similarity ends. The lookup tables contain pointers to C code labels
rather than to routines that generates 80x86 code on the fly.
[FIXME: the following would be best as a footnote]
"What the heck is a pointer to a C code label?", you ask? gcc (the
GNU C compiler) has a "pointer to label" extension to the C language
which makes the statement "&&my_label" evaluate to a "void *" that
points to the compiled code for "my_label:" within a C function.
This, combined with gcc's "goto void *" extension, allows C programs
to execute goto statements whose destinations are not known at compile
time.
Each scanline gets translated into an array of opcodes for the
"blitter opcode interpreter" (which will be described below). Each
opcode is stored in one of these C structs:
struct
{
const void *label; /* Pointer to C code to handle this opcode. */
int32 offset; /* Offset into scanline to start. */
int32 arg; /* Extra operand with different uses. */
};
For example, consider the case where the blitter wants to write out
five contiguous longs from a "simple" pattern starting 64 bytes into
the current row. In this case, "label" would equal
"&&copy_short_narrow_many_5", "offset" would equal 64, and "arg" would
equal 5.
The blitter opcode interpreter
The blitter opcode interpreter is machine generated C code created by
a Perl script when Executor is compiled. That Perl script takes as
input C code snippets that tell it how to handle particular drawing
modes, and produces as output C code for an interpreter.
Here is the template taken as input by the Perl script for the
"copy_short_narrow" case. This is the simple case where the pixels
for the pattern being displayed can be stored entirely within one
32-bit long (for example, solid white or solid black).
begin_mode copy_short_narrow max_unwrap
repeat @dst@ = v;
mask @dst@ = (@dst@ & ~arg) | (v & arg);
end_mode
The "repeat" field tells the Perl script what C code to generate for
the simple case where all pixels in the destination long are to be
affected. The "mask" case tells it what to do when it must only
modify certain bits in the target long and must leave others alone.
The generated interpreter takes as input an array of blitter opcode
structs, which it then proceeds to interpret once for each row to be
drawn.
Here is the section of the (machine-generated) interpreter that
handles the copy_short_narrow cases. Remember that each "blitter
opcode" is really just a pointer to one of these C labels. This code
would get used when filling a rectangle with a solid color.
copy_short_narrow_mask:
*dst = (*dst & ~arg) | (v & arg);
JUMP_TO_NEXT;
copy_short_narrow_many_loop:
dst += 8;
copy_short_narrow_many_8:
dst[0] = v;
copy_short_narrow_many_7:
dst[1] = v;
copy_short_narrow_many_6:
dst[2] = v;
copy_short_narrow_many_5:
dst[3] = v;
copy_short_narrow_many_4:
dst[4] = v;
copy_short_narrow_many_3:
dst[5] = v;
copy_short_narrow_many_2:
dst[6] = v;
copy_short_narrow_many_1:
dst[7] = v;
if ((arg -= 8) > 0)
goto copy_short_narrow_many_loop;
JUMP_TO_NEXT;
Note how the inner blitting loop is "unwrapped" for speed. A blitter
opcode would specify that 39 longs are to be output by making its
"arg" field be 39 and the "label" field point to
"copy_short_narrow_many_3", in the middle of the unwrapped loop. The
interpreter would jump there and loop until all of the pixels had been
written out, at 32 bytes per loop iteration. This is very fast,
especially for portable code.
Of course, if any other pixels needed to be drawn, there would be
additional blitter opcode structs telling the interpreter what to do.
The interpreter dispatches to the next opcode by executing the
"JUMP_TO_NEXT" macro, which automatically does a "goto" to the C label
that handles the next opcode.
Binary file not shown.
Loaded 100 of 2517 files, more files were not shown because too many files have changed in this diff. Show more