uvmac/docs/develop.html
2020-03-14 15:28:01 -04:00

1 line
9.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Options for Developers in Mini vMac </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="develop.html">
</head>
<body>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="index.html">minivmac</a>/develop
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac
</h3>
<h3 align=center>
Options for Developers
</h3>
<hr>
<p> This page lists compile time options useful to people who wish
to develop or maintain Mini vMac. The main
<a href="options.html">Options</a> page has options of interest
to everyone else. </p>
<p> First see the <a href="build.html">Build</a> page to
learn how to compile Mini vMac. </p>
<h4> <a name="in"> ... Options Index ... </a> </h4>
<p><a href="develop.html#option_n">Variation Name</a></p>
<p><a href="develop.html#option_an">Abbreviated Name</a></p>
<p><a href="develop.html#option_intl">International Characters</a></p>
<p><a href="develop.html#option_t">Target</a></p>
<p><a href="develop.html#option_m">Model</a></p>
<p><a href="develop.html#option_cpu">CPU</a></p>
<p><a href="develop.html#option_api">API</a></p>
<p><a href="develop.html#option_snd_api">Sound API</a></p>
<p><a href="develop.html#option_d">Debugging Level</a></p>
<p><a href="develop.html#option_vsync">Vertical synchronization</a></p>
<p><a href="develop.html#option_at">End of Developer Options</a></p>
<p> : </p>
<p> <a name="option_n"> <b> Variation Name </b> </a> </p>
<p> If you compile a custom version of Mini vMac,
you can label it with a line such as: </p>
<pre>
-n "minivmac-3.0.0-custom"
</pre>
<p> This string is displayed by the About
command of Mini vMac, and is also used
as the name of the archive exported by
the build system. </p>
<p> <a name="option_an"> <b> Abbreviated Name </b> </a> </p>
<p> Instead of specifying the whole variation
name, you can just specify the abbreviated name,
with a line such as: </p>
<pre>
-an mnvm0001
</pre>
<p> The version number and platform parts
of the variation name are automatically generated.
The abbreviated
name must be 8 characters or less, and should only include
lowercase letters, numbers, and underscores. </p>
<p> <a name="option_intl"> <b> International Characters </b> </a> </p>
<pre>
-intl
</pre>
<p> This option forces Mini vMac to support
international characters in the user interface, even when using the
default English. This is useful if the maintainer name needs
the extra characters. (It would be nicer for the build system
to figure out for itself what character set is needed. But
this will do for now.) </p>
<p> <a name="option_t"> <b> Target </b> </a> </p>
<p> Some additional options for target that
are not officially supported: </p>
<pre>
-t xgen { Generic X11 }
-t mppc { Macintosh OS 9 and earlier - PowerPC }
-t m68k { Macintosh - 680x0 }
-t mx11 { X11 for Macintosh OS X - PowerPC }
-t mi11 { X11 for Macintosh OS X - Intel }
-t mx64 { X11 for Macintosh OS X - x86-64 }
-t cygw { Cygwin/X for Microsoft Windows }
-t fbpc { FreeBSD on PowerPC }
-t slrs { Solaris - SPARC }
-t sl86 { Solaris - Intel }
-t wc86 { Pocket PC - Intel (Emulator) }
-t irix { IRIX - MIPS }
-t minx { Minix 3.2 }
</pre>
<p> <a name="option_m"> <b> Model </b> </a> </p>
<p> Some additional options for model that
are not officially supported: </p>
<pre>
-m Twiggy { Macintosh prototype }
-m Twig43 { Macintosh prototype }
-m PB100 { Macintosh PowerBook 100 }
</pre>
<p>
The Twiggy emulation (by Mat&#283;j Hybler) allows use of
the ROM from a Macintosh prototype that has a Twiggy floppy drive
(used in the original Lisa computer), instead of the Sony
drive that the Macintosh 128K ended up shipping with.
Except for the disk driver, the ROMs are nearly identical,
except most everything is shifted to somewhat different
addresses. Probably because the trap patching technique used in
Macintosh System Software tends to depend on exact locations
of routines in ROM, no System Software that shipped will
run with the Twiggy ROM. There are two known disk images
that will work with it, one with an early version of
MacWrite and one with an early version of MacPaint.
However these image don't currently work as is in
the Twiggy Mac emulation. Mat&#283;j Hybler figured out a
small patch to their boot block code to make them work,
that disables some sort of check for the disk being bootable.
This might be needed because the emulation is still using
a replacement disk driver that is trying to imitate the
data structures in memory used by the
Sony disk driver, while the Twiggy disk driver has
significantly different data structures. (With this patch,
these two disk images will also work fine in the Macintosh
128K emulation.)
</p>
<p>
The Twig43 emulation (also by Mat&#283;j Hybler) allows use
of an even earlier ROM (which near the end of the ROM contains the
string &ldquo;ROM4.3T 07/04/83&rdquo;). This ROM is more
significantly different. Oddy though, it can use the early MacPaint
and MacWrite images without modification.
</p>
<p>
There is some code for PowerBook 100 emulation, but it does not yet
get very far in booting.
</p>
<p> <a name="option_cpu"> <b> CPU </b> </a> </p>
<p> The build system normally determines the CPU and operating
system from the target (-t) you have specified. If a target
doesn't yet exist for the combination of CPU and operating
system you desire, you can select a target for that operating
system and a different CPU, and then override the CPU with
a line such as: </p>
<pre>
-cpu 68k { 680x0 }
-cpu ppc { PowerPC }
-cpu x86 { Intel 32 bit }
-cpu x64 { Intel 64 bit }
-cpu spr { sparc }
-cpu arm { ARM }
-cpu mip { MIPS }
-cpu gen { generic }
</pre>
<p> It might or might not compile correctly, but it at least provides
a starting point. </p>
<p> <a name="option_api"> <b> API </b> </a> </p>
<p> The build system normally determines the appropriate API
(Application Programming Interface) from the target (-t)
you have specified. You can override this choice with lines
such as: </p>
<pre>
-api mac { Macintosh OS }
-api osx { Carbon for Macintosh OS X }
-api cco { Cocoa for Macintosh OS X }
-api win { Microsoft Windows 32 }
-api xwn { X Window System }
-api gtk { GTK+ (GIMP Toolkit) }
-api sdl { <a href="https://www.libsdl.org/download-1.2.php">Simple DirectMedia Layer</a> 1.2 }
-api sd2 { <a href="http://www.libsdl.org">Simple DirectMedia Layer</a> 2.0 }
</pre>
<p> One useful use of this option is
to specify '-api gtk' for a linux target (overriding
the default '-api xwn'). This gets
a menu bar and file dialogs, but loses other features
since this port is incomplete. </p>
<p> <a name="option_snd_api"> <b> Sound API </b> </a> </p>
<p> The build system normally determines the appropriate
Sound API from the target (-t) you have specified.
You can override this choice with lines such as: </p>
<pre>
-snd-api alsa { Advanced Linux Sound Architecture }
-snd-api ddsp { Open Sound System and compatible }
</pre>
<p> Currently the only useful use of this option is
to specify '-snd-api ddsp' for a linux target
(overriding the default '-snd-api alsa'). </p>
<p> <a name="option_d"> <b> Debugging Level </b> </a> </p>
<pre>
-d d { debug }
-d t { test }
-d s { ship }
</pre>
<pre>
-log 1 { enable logging infrastructure }
</pre>
<p> Logging won't do much without further enabling or creating code to log
various events that you are currently interested in. This is for developers only.
</p>
<pre>
-dis 1 { enable disassembler }
</pre>
<p> Besides disassembling a number of instructions executed after an event of interest,
it can disassemble instructions prior to the event, as the emulator can save
the addresses of instruction executed to a circular buffer.
Requires the "-log" option. Nothing much will happen without further enabling
or creating code to log various events that you are currently interested in.
</p>
<p> <a name="option_vsync"> <b> Vertical synchronization </b> </a> </p>
<p> <b> bug </b> : This isn't working correctly in Full Screen
Mode, at least in OS X 10.6.8, and so is not supported
for this version, at least. </p>
<pre>
-vsync 1 (<a href="var/mnvm0159.html">mnvm0159</a>)
</pre>
<p> Currently for OS X only, this option turns on OpenGL
double buffering and sets AGL_SWAP_INTERVAL to 1. This eliminates the
"tearing" issues noted by Manuel Alfayate. Unfortunately
it isn't yet a real solution, it is more to help illustrate
the issue before coming up with a better implementation.
(See
<a href="extras/testsync/index.html">testsync</a>.)
Besides using much more
memory, it also reduces the maximum speed of emulation
unpredictably and erratically, because it makes
aglSwapBuffers block until the vertical retrace,
when Mini vMac is expecting to give the emulation
extra time, for above "1x" speed. </p>
<p> <a name="option_at"> <b> End of Developer Options </b> </a> </p>
<pre>
@ { no more developer options }
</pre>
<p>
If this option is present, then no developer options are permitted
to the right of this option.
</p>
<p> : </p>
<p> If you find Mini vMac useful, please consider
<a href="https://www.gryphel.com/c/help/index.html">helping the Gryphel Project</A>.
</p>
<a href="https://www.gryphel.com/index.html">
<img src="https://www.gryphel.com/d/gryphel-32.gif" width=32 height=32 border=0
alt="gryphel logo, 1K"
>
</a>
<p> Next - <b><a href="setupcfg.html">Setup Tool Configuration</a></b> </p>
<hr>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="index.html">minivmac</a>/develop
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2018 Paul C. Pratt - last update 10/27/2018
</div>
</body>
</html>