|
|
1.1 ! root 1: UAE-0.6.7.1 ! 2: AMIGA version ! 3: ! 4: by Samuel Devulder ! 5: [email protected] ! 6: ! 7: Jan. 1997 ! 8: ! 9: ! 10: INTRODUCTION ! 11: ============ ! 12: ! 13: This the Amiga port of UAE v0.6.7.1. UAE is the Un*x Amiga Emulator ! 14: written by Bernd Schmidt. ! 15: ! 16: You should read the README file before this one to know more about uae. ! 17: (how to use it, command-line options, what is emulated, and so on...). ! 18: ! 19: This port features many things. It is build with the help of ADE ! 20: (Amiga Development Enviroment): GCC, ixemul, ... Thus allowing an easy ! 21: port of the original unix version to the Amiga without a lot of ! 22: modifications. ! 23: ! 24: ! 25: REQUIREMENTS ! 26: ============ ! 27: ! 28: This version will work on any Amiga running at least AmigaOS v2.04 and ! 29: is programmed to use AmigaOS v3.0 facilities when available. UAE needs ! 30: roughly 10Mb of free ram to run on the Amiga. A fast processor is also ! 31: strongly recommended. ! 32: ! 33: Note that you can use UAE under VMM and that uae can run under uae ! ! 34: ! 35: ! 36: FEATURES ! 37: ======== ! 38: ! 39: The joystick can be used within the emulation, allowing you to play ! 40: games without destroying your numeric keypad with the '-J' option :-). ! 41: ! 42: The sound can be emulated in this version. But Amigas are too slow for ! 43: it to be really usefull. On my amiga, UAE produces one second of sound ! 44: every twenty seconds in Sanity's Interference demo. An amiga 20 times ! 45: faster as an A4000 would be nice. PowerPC Amiga will probably achieve ! 46: this one day. ! 47: ! 48: The CPU emulation is speed up by using ASM code to compute flags ! 49: directly from the 680x0 SR/CCR register. ! 50: ! 51: It supports all Amiga natives mode as well as cybergraphics mode ! 52: (rewritten in that version, so expects bugs in it; I'm waiting your ! 53: bug-reports and improvements :-). It can run on a automatically ! 54: selected custom screen, or on a user-selected screen, or on the ! 55: default public screen. It will dither the output when not enough ! 56: colors are available (unless you disable dithering), and eventually ! 57: use a grayscale palette if less that 8 colors are available. This will ! 58: give you the best graphic output according to your configuration. (use ! 59: "uae -h" to know how to selected the rendering style). ! 60: ! 61: You can mount Amiga partitions using the -m option. Be sure to use unix ! 62: convention when giving a path to UAE. For exemple do not do ! 63: ! 64: CLI> uae -m boot:dh0:path -0 /disks/df0.adf ! 65: ! 66: but rather ! 67: ! 68: CLI> uae -m boot:/dh0/path -0 ../disks/df0.adf ! 69: ! 70: This is not a bug, but an ixemul.library feature. You can access amiga ! 71: disks by specifying /dev/<device-name>[.device]/unit or /dev/df<num> ! 72: after -0. For example you can do "uae -0 /dev/df0" or "uae -0 ! 73: /dev/trackdisk.device/0". Under the file requester, select the DEV: ! 74: assign to access amiga disk-devices. ! 75: ! 76: You can reset the emulator by pressing CTRL-ALT-DEL in UAE's window. I ! 77: guess it reminds you something :^) You can enter debug mode by pressing ! 78: ^C or ^D in the cli/shell window or by pressing the close-gadget of ! 79: UAE's window when used on a public screen. ! 80: ! 81: The F12 key of the X11 version of uae is simulated by pressing ! 82: CTRL-SHIFT-ALT-F10 simultanemously. This toggles the mouse emulation ! 83: mode and is needed for some games or demos when you find that the ! 84: mouse does not work well under UAE. ! 85: ! 86: You can toggle on/off the screen rendering to speed up the sound ! 87: processing by pressing CTRL-SHIFT-ALT-F9. ! 88: ! 89: You can insert disks by pressing CTRL-LALT-F1, CTRL-LALT-F2, ! 90: CTRL-LALT-F3, or CTRL-LALT-F4. F1 corresponds to drive DF0, F2 to DF1, ! 91: and so on. Alternatively you can simply eject a disk by pressing ! 92: LSHIFT in addition of the above keys. ! 93: ! 94: If UAE does not find a rom-file, it'll use the ROM located at address ! 95: $F80000 - $FFFFFF. Thus, you need not grab it and that will spare you ! 96: some disk space. You can disable this feature by creating the ! 97: environment variable "USE_UAE_ERSATZ", in which case UAE will try to ! 98: emulate rom calls using a pseudo kickstart. ! 99: ! 100: *NEW*: In this release, UAE should supports Graffiti screens (uae ! 101: -H3), but I am not able to test it by myself as I don't have that ! 102: board. Please send me some feedback about it. ! 103: ! 104: *NEW*: This release also features an AREXX port to control UAE from an ! 105: external gui (see section below). That port is used by the ARexx ! 106: script "UAEGUI.rexx". That script uses MUIREXX to provide a nice MUI ! 107: interface for UAE. ! 108: ! 109: ! 110: INCLUDED EXECUTABLE SETTINGS ! 111: ============================ ! 112: ! 113: The included executable is compiled for MC68030. It has the following ! 114: settings in ./config.h: ! 115: ! 116: #define USE_POINTER ! 117: #define CPU_LEVEL 0 ! 118: ! 119: AREXX PORT ! 120: ========== ! 121: ! 122: UAE provides an AREXX port through which you can set or retrieve ! 123: internal parameters or variables such as the state of the joystick ! 124: emulation or the framerate and so on. Is also implements a "feedback" ! 125: mecanism so that a GUI piloting UAE through the AREXX port can hear ! 126: about dynamical modification of UAE variables such as led states and ! 127: the like. The port name is "UAE". If that port already exists, UAE ! 128: will disable it's AREXX feature (that is to say if you have 2 copies ! 129: of UAE running on your system, only one will have an AREXX port. I ! 130: doubt anyone will try to run 2 UAE in the same time :-). ! 131: ! 132: The commands that need a string argument accepts quoted strings. If ! 133: the string is not quoted then it is the following word that will be ! 134: used. The quotes can be single (') or double ("). They must match (eg. ! 135: if you begin with ('),then you must end your string with (') too). ! 136: Within a string, you can use a backslash (\) to express escape ! 137: sequences. For example, "This 'is' a \"string\"." represents the ! 138: string (This 'is' a "string"). I hope you get it :-) ! 139: ! 140: Here is a list of the available commands: ! 141: ! 142: * BYE ! 143: * QUIT ! 144: This make the emulator exit. ! 145: ! 146: * RESET ! 147: This makes a hard-reset of the emulator. ! 148: ! 149: * DEBUG ! 150: This forces the emulator to enter in debugging mode. ! 151: ! 152: * EJECT <num> ! 153: This will eject the disk in drive <num> (from 0 to 3). ! 154: ! 155: * INSERT <num> <filename> ! 156: This will insert the filedisk <filename> in drive unit ! 157: <num>. ! 158: ! 159: * FRAMERATE <num> ! 160: This sets the framerate to <num> (1 <= <num> <= 20). ! 161: It is a way to overwrite the -f flag of UAE. ! 162: ! 163: * VERSION <arg> (<arg> = NUM | AUTHOR | PORT | STRING) ! 164: This places in the AREXX 'RESULT' variable some ! 165: information about UAE's version. ! 166: ! 167: NUM returns a numerical value that is to be interpreted ! 168: as UAEMAJOR*100 + UAEMINOR*10 + UAEURSAMINOR (ie. uae ! 169: v0.6.4 will return "64"). ! 170: ! 171: AUTHOR returns the original author of UAE (ie. Bernd ! 172: Schmidt). ! 173: ! 174: PORT returns the name of the port author (that's me!:-) ! 175: ! 176: STRINGS returns a summary string made with the above ! 177: strings. ! 178: ! 179: * DISPLAY <arg> (<arg> = ON | OFF | TOGGLE) ! 180: This will enable or disable the display rendering. ! 181: ! 182: * FAKEJOYSTICK <arg> (<arg> = ON | OFF | TOGGLE) ! 183: This will enable or disable the joystick emulation. It ! 184: is a way to overwrite the -J flag from the command ! 185: line. ! 186: ! 187: * SOUND <arg> (<arg> = ON | OFF | BEST) ! 188: This sets the state of the sound emulation (see option ! 189: '-S' on the command line). BEST is the same as using ! 190: the -S3 switch on the commandline. ! 191: ! 192: * QUERY <var> ! 193: This asks UAE's for its internal variables. That ! 194: state is written in the arexx 'RESULT' variable. So ! 195: don't forget to put 'OPTIONS RESULTS' in your arexx ! 196: scripts. ! 197: ! 198: <var> can be one of the following: ! 199: ! 200: * FAKEJOYSTICK => returns "1" if the joystick ! 201: emulation is ON and "0" if it is OFF. ! 202: ! 203: * DISPLAY => returns "1" if the display is not ! 204: inhibited and "0" otherwise. ! 205: ! 206: * FRAMERATE => returns the current framerate (see ! 207: option -f). ! 208: ! 209: * SOUND => returns "0" if the sound is not emulated ! 210: (ie. uae -S0 was used). "1" is returned when the ! 211: sound is OFF (think about uae -S1). "2" means the ! 212: sound emulation is ON and "3" means it is the best ! 213: sound-emulation that is used (uae -S3). ! 214: ! 215: * NAME_DF0 ! 216: * NAME_DF1 ! 217: * NAME_DF2 ! 218: * NAME_DF3 => returns the name of the diskfile used in ! 219: the indicated unit. ! 220: ! 221: * LED_DF0 ! 222: * LED_DF1 ! 223: * LED_DF2 ! 224: * LED_DF3 => returns "1" if the drive led is hilighted ! 225: and "0" if the led is OFF. ! 226: ! 227: * LED_POW => returns "1" if the powerled is ON and "0" ! 228: otherwise. ! 229: ! 230: * FEEDBACK <eventname> PORT|ADDRESS <portname> ! 231: CMD_ON|CMD|CMD_OFF <cmd> ! 232: That command needs a special explanation: ! 233: ! 234: <eventname> is the name of an internal UAE event. It ! 235: can be any of: ! 236: ON_EXIT (UAE is about to quit), ! 237: LED_POW (the power led has changed), ! 238: LED_DF0 (led of drive DF0 has changed), ! 239: LED_DF1 (the same, but for DF1), ! 240: LED_DF2 (well...), ! 241: LED_DF3 (quess!), ! 242: NAME_DF0 (name of filedisk df0 has changed), ! 243: NAME_DF1 (obvious), ! 244: NAME_DF2 (ditto), ! 245: NAME_DF3 (...). ! 246: ! 247: <portname> is the name of an AREXX port. It can be ! 248: "COMMAND" in which case <cmd> is interpreted as DOS ! 249: command. ! 250: ! 251: <cmd> is a string containing a command that UAE will ! 252: send to <portname> when the event matching <eventname> ! 253: occur. ! 254: ! 255: Each event has 2 available <cmd>. One is set by the ! 256: CMD_ON keyword, the other by CMD_OFF. CMD_ON can be ! 257: abreviated to CMD. ! 258: ! 259: When the event is the name of a led (LED_POW, LED_DF0, ! 260: ...), it is the <cmd> associated to CMD_ON that will be ! 261: sent to <portname> if the led is hilighted. It is the ! 262: <cmd> of the CMD_OFF argument that will be used if the ! 263: led is dimmed. I think you need an example to make it ! 264: clear (no pun intended :) ! 265: ! 266: If you issue the command: ! 267: ! 268: address UAE feedback LED_POW PORT COMMAND ! 269: CMD_ON "list t:" CMD_OFF "list s:" ! 270: ! 271: Then UAE will issue "list t:" when the led is set to ON ! 272: and "list s:" when it set to OFF. For example in ! 273: UAEGUI.rexx you'll find: ! 274: ! 275: address UAE feedback LED_DF0 PORT UAEGUI, ! 276: CMD_ON "switch ID DF0 ATTRS 0x8042654b 1", ! 277: CMD_OFF "switch ID DF0 ATTRS 0x8042654b 0" ! 278: ! 279: That makes the gui led follow any state changements. ! 280: ! 281: If <eventname> is not a name of a led (ON_EXIT, ! 282: NAME_DF0, ...) then UAE will only use the CMD_ON ! 283: command. For events like NAME_DF0, <cmd> can bear a ! 284: '%s'. It'll be replaced by the name of the ! 285: correponding filedisk. For example, the following code: ! 286: ! 287: address UAE feedback NAME_DF0 PORT UAEGUI, ! 288: CMD "popasl ID NDF0 CONTENT %s" ! 289: ! 290: Will change the content of the popasl gadged ! 291: automatically when the drivename is modified. ! 292: ! 293: The event ON_EXIT is used when uae is about to exit. ! 294: You can use it to automatically close an external GUI ! 295: when UAE ends: ! 296: ! 297: address UAE feedback ON_EXIT PORT UAEGUI, ! 298: CMD "quit" ! 299: /* sends "quit" to UAEGUI when UAE exits */ ! 300: ! 301: Note: I hope my explanation about the AREXX port is not too fuzzy. You ! 302: can always have a look to UAEGUI.rexx to figure out how to use it. ! 303: ! 304: ! 305: HOW TO (RE-)BUILD UAE ! 306: ===================== ! 307: ! 308: If you wish to (re-)build uae, you need to have ADE/gcc correctly ! 309: installed (see ftp://ftp.ninemoons.com/pub/ade/). Not all part of ADE ! 310: are needed, but be sure to have gcc2.7.2.1, binutils, autoconf, awk, ... ! 311: ! 312: Note: This version uses an amiga specific feature of gcc found in Kamil ! 313: Iskra's version (http://student.uci.agh.edu.pl/~iskra/ade.html). Look at ! 314: __attribute__((regparm(4))) in configure.in. This allows gcc to ! 315: use registered arguments passing. It is only available since gcc2.7.2.1. ! 316: If it fails with the snapshot you have, then you should comment the ! 317: definition of REGPARM. Unfortunately that will make UAE run slower. ! 318: ! 319: The default Makefile provided is for a mc68030 microprocessor. If you ! 320: wish to have a Makefile tuned for your CPU (and fpu), just type "sh -c ! 321: configure". Note that you should use sh from the pdksh distribution (in ! 322: ADE) if you want a correct "config.cache" file (other shells produces a ! 323: buggy "config.cache" file). ! 324: ! 325: If you have deleted the file "configure", you can rebuild it from ! 326: "configure.in". To do this, just type autoconf in a shell. Note that ! 327: autoconf 2.10 is required. ! 328: ! 329: Once your Makefile is generated (if needed), you can modify the file ! 330: "config.h" to suit your needs. You can also modify "src/md-amiga/ami-win.c" ! 331: to allow the support of cybergfx modes (you'll need to obtain ! 332: CGraphX-DevKit.lha from aminet then). I suggest you to define ! 333: DONT_WANT_SOUND in "config.h". That will speed up the emulation (sound ! 334: emulation slows down the speed by roughly 10%). ! 335: ! 336: When you'll have configured uae correctly, type "make" in a shell. Then ! 337: one hour and a half later you'll get the uae executable (it might be less ! 338: if you have a *real fast* Amiga, but don't expect less that 15 minutes). ! 339: I know it's slow, but Amigas are slow (even those with 68060 are not that ! 340: fast, by today's standards ;-). ! 341: ! 342: To compile, 10Mb of free memory should be enough (I have 4Mb, but ! 343: virtual memory helps in that case). The resulting directory size is ! 344: roughtly 5.7Mb on my harddrive. Be sure to have a stack of at least ! 345: 300Kb when compiling UAE and at least 32kb when UAE is running. ! 346: ! 347: ! 348: REMARKS OR BUG-REPORTS ! 349: ====================== ! 350: ! 351: You can send me your remarks and bug-report to: ! 352: ! 353: [email protected] ! 354: ! 355: ! 356: LAST NOTE ! 357: ========= ! 358: ! 359: Why emulate an Amiga on an Amiga ? That can seem to be a foolish ! 360: behaviour.. Actually it is not ! ! 361: ! 362: Many old games/demos refuse to work well if you are using a 68030+; ! 363: even with degrader running. In that case, uae might be usefull. ! 364: ! 365: UAE might also help graphic-board owners. With UAE, they can view all ! 366: the demos with copper and blitter effects that fails to run on their ! 367: graphics board. Or run programs like Deluxe-Paint or Brilliance that ! 368: poke the hardware directly. ! 369: ! 370: Using uae on a 68040+ Amiga will let you play games or demos on your ! 371: workbench, in a perfect multitasking. And that is, believe me, quite ! 372: amazing (even on my poor 68030 :-). Alternatively, UAE makes a ! 373: wonderfull screen-saver (a bit memory-hungry though). ! 374: ! 375: The main advantage of uae, will be when PowerPC Amigas will come out. ! 376: On these machines, I bet no old programs will run. Those machines will ! 377: certainly include a 680x0 emulation powerfull enough to run DOS ! 378: programs, but certainly not sufficient to run old games. Thanks to UAE, ! 379: backward compatibility will not be a problem anymore. UAE is definitely ! 380: a great program !
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.