mirror of
https://github.com/ctm/executor.git
synced 2026-10-25 00:02:23 +00:00
All the Executor source as-is from the subversion tree it was last worked on.
This commit is contained in:
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.
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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
|
||||
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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}
|
||||
@@ -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.
|
||||
Executable
+62
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
@@ -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.\
|
||||
|
||||
}
|
||||
@@ -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
|
||||
******************************************************************
|
||||
Executable
+255
@@ -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
@@ -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 "ERNSTOUD.TXT", 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 "You may open a 32000 character selection"
|
||||
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>
|
||||
@@ -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>
|
||||
@@ -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 "HD" 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 "Desk Tracy" 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 "Pretend" 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>
|
||||
@@ -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 "You may open a 32000 character selection"
|
||||
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 "Alt" key as a Cmd
|
||||
key and the right "Alt" 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
|
||||
"<code>.ima</code>" instead of "<code>.hfv</code>".
|
||||
<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. "<code>executor MyVolume:directory:application</code>".
|
||||
<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 "applzone" parameter. For example, many programs which
|
||||
normally die quickly will work with "executor -applzone 4m" (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 "executor -info", 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
|
||||
"paging" 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 "TEMP" 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 "pretend sound" 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
|
||||
"Ultimate Solitaire". 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 "Word
|
||||
Preferences" from your "System Folder".
|
||||
<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
|
||||
"godata.sav". It stores which folders you have open and the
|
||||
contents of your "hot-band". 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
|
||||
"-nobrowser" switch when you start Executor to bypass the
|
||||
browser, but to get the browser back you'll need to either delete
|
||||
"godata.sav" 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 "directly manipulate". Apple warned
|
||||
software makers to not directly manipulate the FPU, but to instead use their numerics
|
||||
library ("SANE" 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 "INIT" called
|
||||
"SoftFPU". 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 ".hqx" 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 "Expand..." menu item from the "File"
|
||||
menu to open each of the files you've downloaded. In general, especially when dealing
|
||||
with files whose names end in ".hqx", StuffIt Expander will
|
||||
do the right thing. However, some sites do not store files in
|
||||
".hqx" 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 "SIT!"
|
||||
and then try StuffIt Expander again. If you believe the downloaded file is a
|
||||
Compact Pro archive, you can change the creator to "CPCT"
|
||||
and the type to "PACT" and then try StuffIt Expander again. Similarly,
|
||||
you can use creator "BnHq" and type "TEXT" 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 --> 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 "Resource Fork"
|
||||
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 "Data Fork" of the file.
|
||||
|
||||
<A name="q_3_13"><h2>
|
||||
Question 3.13. What does "You may open a 32000 character
|
||||
selection" 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
|
||||
"testfile.bin" 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
|
||||
"Expand..." item in the "File" menu to select the file you want to expand
|
||||
(e.g. "testfile.bin").
|
||||
<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 "Get Info" 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>
|
||||
@@ -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 "Properties..."
|
||||
using your right mouse. The Properties panel has several tabs, one of
|
||||
which is labeled "Shortcut". After selecting the Shortcut
|
||||
tab, you can then edit the "Target:" field. Keep the information that is
|
||||
already in there (e.g. "<code>C:\ExecWin32\executor.exe</code>") 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. " -size 800x600 -applzone
|
||||
4m").
|
||||
<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. " C:\ExecWin32\Apps\Freeware\Risk!").
|
||||
<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
|
||||
"Settings", which probably has an "Advanced..." button. If you click
|
||||
the "Advanced..." button, you should be able to select a panel
|
||||
named "Performance". 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
|
||||
"<code>SDL-dx5.dll</code>" to "<code>SDL-dx5.dll.SAVE</code>". 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>
|
||||
@@ -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 "Meta" (mod1) modifier to mean command-key and the X
|
||||
"Mode Switch" (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
|
||||
"Mode Switch" (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 "dirty rectangle" 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 "dirty rect" 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>
|
||||
"Refresh" 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 "/dev" that represents your B: drive,
|
||||
as:
|
||||
<p>
|
||||
Using "sh", "bash" or other Bourne Shell like
|
||||
shell: <pre>
|
||||
$ export MacVolumes="/dev/fd1"
|
||||
</pre>
|
||||
Using "csh", "t-csh" or other C Shell like shell:
|
||||
<pre>
|
||||
% setenv MacVolumes "/dev/fd1"
|
||||
</pre>
|
||||
This should work as long as you have permission to access the drive in
|
||||
question ("/dev/fd1" 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 "the colormap", which means Executor can't quickly
|
||||
change the colors in the colormap itself. If you use the
|
||||
"-privatecmap" option when you start Executor, you'll find that Lemmings splash
|
||||
screen will come up much quicker, but you'll also experience the
|
||||
"creepy colors" 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><http://www.delorie.com/djgpp/></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 "+/Configuration"
|
||||
</li>
|
||||
<li>SystemFolder "+/ExecutorVolume/System Folder"
|
||||
</li>
|
||||
<li>PublicDirectoryMap "+/DirectoryMap"
|
||||
</li>
|
||||
<li>PrivateDirectoryMap "~/.Executor/DirectoryMap"
|
||||
</li>
|
||||
<li>DefaultFolder "+/ExecutorVolume"
|
||||
</li>
|
||||
<li>MacVolumes "+/exsystem.hfv;+" </li>
|
||||
<li>ScreenDumpFolder "/tmp" </li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The leading "+/" represents the directory
|
||||
"/usr/local/lib/executor". 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 "~/executor/Configuration"
|
||||
</li>
|
||||
<li>SystemFolder "~/executor/SystemFolder"
|
||||
</li>
|
||||
<li>PublicDirectoryMap "~/DirectoryMap"
|
||||
</li>
|
||||
<li>DefaultFolder "~/executor" </li>
|
||||
<li>ScreenDumpFolder "~/executor/ScreenDumps"
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
You'll then need to populate the System Folder either with copies of
|
||||
what's in "/usr/local/lib/executor/ExecutorVolume/System
|
||||
Folder", 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>
|
||||
@@ -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
|
||||
"volume" (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
|
||||
"<code>.hfv</code>".
|
||||
<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
|
||||
"<code>bigtest.hfv</code>" that will appear in Executor as "BigTest" 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 "<code>.hfv</code>".
|
||||
<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 "<code>.hfv</code>".
|
||||
<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 "-zeros" 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><http://www.scitechsoft.com/></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
|
||||
"overscan" 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 "linear
|
||||
framebuffer". 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
|
||||
"Program" portion of "Properties" and click on the WindowsNT button.
|
||||
The default Config Filename is <pre>
|
||||
%SystemRoot%\SYSTEM32\CONFIG.NT
|
||||
</pre>
|
||||
<br>
|
||||
"%SystemRoot%" 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 "FILES=20" 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
|
||||
"-desperate" 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 "-desperate to the command line, i.e.:
|
||||
<pre>
|
||||
C:\> 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
|
||||
"-desperate".
|
||||
<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 "-info" 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 "INT 13" BIOS calls, then an
|
||||
ASPI driver is not needed. As long as "INT 13" 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 "vprmode VESA" 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 "Add
|
||||
Programs" object in the "System Setup" folder. This will make a object
|
||||
for Executor on his desktop (usually in the "Additional DOS Programs"
|
||||
folder). Go into the settings for that object, and select the
|
||||
"Session" tab. Set it to "DOS Full Screen", and choose "DOS
|
||||
Settings". He wants "All DOS Settings". Primarily, Executor needs the
|
||||
"DPMI Memory Limit" set to 16 megs, and "DPMI Memory Limit" set to
|
||||
enabled. Since it defaults to 4 megs and automatic, it won't work. For
|
||||
additional performance, he should set "DOS High" to on, "EMS Memory
|
||||
Limit" to 0, "Video 8514a XGA IOtrap" to off, "Video Retrace
|
||||
Emulation" to off, "XMS Memory Limit" to 0, and "XMS Minimum HMA" to
|
||||
63. The biggest boost comes from "Session Priority". 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 "DOS Background Execution" 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
|
||||
"-applzone" switch when you run Executor. Also try turning on "Pretend
|
||||
Sound", or if the screen seems to be only partially
|
||||
updated, try turning on "Refresh".
|
||||
|
||||
<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><http://www.ardi.com/bugform.html></code>. Run Executor with the "-info" 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. "start the
|
||||
application, choose the "more Elvis" from the "adjust music"
|
||||
menu and the application will crash"). 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><http://www.cs.wisc.edu/~ghost/></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 "rem them out" -- i.e.
|
||||
add "rem " 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 "-info" 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 "mem" 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 "linear mapping".
|
||||
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
|
||||
"Speedometer" or "Globe" 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 "<code>-oldtimer</code>" 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><http://www.connectix.com/></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>
|
||||
@@ -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 "yes".
|
||||
<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 "About
|
||||
Executor..." 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
Whitespace-only changes.
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
+4676
File diff suppressed because it is too large.
Load diff
@@ -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.
|
||||
@@ -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:
|
||||
-->
|
||||
@@ -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 © 1999, 2002 by Abacus Research & 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
|
||||
> 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
|
||||
> 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
|
||||
> 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
|
||||
> 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
|
||||
> </TD
|
||||
><TD
|
||||
> </TD
|
||||
></TR
|
||||
></TBODY
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
><P
|
||||
> 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
|
||||
> </TD
|
||||
><TD
|
||||
> </TD
|
||||
></TR
|
||||
></TBODY
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
><P
|
||||
> 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
|
||||
> </TD
|
||||
><TD
|
||||
> </TD
|
||||
></TR
|
||||
></TBODY
|
||||
></TABLE
|
||||
><P
|
||||
></P
|
||||
><P
|
||||
> 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
|
||||
> </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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="x163.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>ARDI selectors</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
||||
@@ -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"
|
||||
><<< Previous</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="section"
|
||||
><H1
|
||||
CLASS="section"
|
||||
><A
|
||||
NAME="AEN163">ARDI selectors</H1
|
||||
><P
|
||||
> 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
|
||||
> Example:
|
||||
</P
|
||||
><TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="programlisting"
|
||||
>
|
||||
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 */
|
||||
|
||||
</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><P
|
||||
> 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
|
||||
> 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"
|
||||
><<< 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"
|
||||
> </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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
||||
@@ -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
@@ -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.
|
||||
@@ -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 _____
|
||||
@@ -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.
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.
Binary file not shown.
Binary file not shown.
Whitespace-only changes.
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
Quark XPress 4.02 demo installer has problems
|
||||
clicking check-boxes
|
||||
quitting
|
||||
|
||||
XPress proper needs register calling conventions
|
||||
@@ -0,0 +1 @@
|
||||
Need glue for '__register_fragment'
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
Need glue for 'WideDivide'
|
||||
@@ -0,0 +1 @@
|
||||
Can't load shared libraries
|
||||
@@ -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.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Need glue for 'AEManagerInfo'
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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/
|
||||
|
||||
Executable
+244
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
"&©_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
Reference in new issue
Block a user