`
`Chimera 3.2
`The Real-Time Operating System
`for Reconfigurable Sensor-Based Control Systems
`February 8, 1995
`
`Darin Ingimarson
`David B. Stewart
`Pradeep K. Khosla
`
`The Robotics Institute Dept. of Electrical and Computer Engineering
`Carnegie Mellon University
`
`
`
`Chimera 3.2
`
`Copyright © 1993, 1994, 1995 all rights reserved.
`
`Chimera 3.2 was developed in the Advanced Manipulators Laboratory of the Robotics Institute, Carn-
`egie Mellon University (CMU).. The authors and CMU have used their best efforts in preparing the doc-
`umentation and the corresponding software. These efforts include development, research, and testing of
`the theories and programs to determine their effectiveness. See Section 0.1 (in Preface) for general
`terms, licensing, and limitation of liability.
`
`Advanced Manipulators Laboratory, The Robotics Institute
`and
`Department of Electrical and Computer Engineering
`
`Carnegie Mellon University
`5000 Forbes Avenue
`Pittsburgh, Pennsylvania 15213-3890
`
`Email address for bugs, fixes, questions, and comments: chiinera@cinu.edu (internet)
`
`
`
`Chimera 3.2
`
`Table of Contents
`
`Preface
`0.1 Licensing and other Terms
`Chimera 3.2 GeneraI License Agreement
`0.1.1
`0.1.2
`Limitation of Liability
`BSD4.3 Unix Terms
`0.1.3
`0.1.4 GNU General Public License
`0.1.5 GNU Library General Public License
`0.2 History of Chimera
`0.3 Overview of Documentation
`0.4 List of New Features
`Chimera 3.0 (released 1993)
`0.4.1
`0.4.2
`Chimera 3.1 (November 1993)
`Chimera 3.2 (April 1994)
`0.4.3
`0.5 Acknowledgements
`1. Beginner's Tutorial
`
`ix
`
`ix
`ix
`xii
`xii
`xii
`xvi
`xxii
`xxiii
`xxiv
`xxiv
`xxv
`xxv
`xxvi
`i
`
`
`
`¡V
`
`Chimera 3.2 Table of Contents
`
`2.2
`
`Setting up your Chimera 3.2 Environment
`¡.1
`I .2 A Simple Program Example
`I .3 A Multitasking Example
`1.4 A Real-Time Example
`1.5 Error Detection and Handling
`1.6 Terminating a Chimera 3.2 Session
`Summary
`1.7
`2. User's Manual
`2.1 Compiling and Linking Programs
`C Code for RTPUs
`2.1.1
`2.1.2 C+±CodeforRTPUs
`C Code for Host Workstation
`2.1.3
`2.1.4 Makefiles
`chim Interface Commands
`attach: Attach to an RTPU
`2.2.1
`2.2.2
`bg: Execute Program in Background
`cd: Change Working Directory
`2.2.3
`detach: Detach from an RTPU
`2.2.4
`download: Download a File
`2.2.5
`execute: Download and Execute Default RTPU
`2.2.6
`fg: Continue Execution in Foreground
`2.2.7
`go: Execute Program
`2.2.8
`kill: Intemipt Execution
`2.2.9
`2.2.10 killserver: Kill the qs Server
`2.2.11 monitor: Use Monitor of Default RTPU
`2.2.12 pwd: Print Working Directory
`2.2.13 quit: Quit from Console Process
`2.2.14 red: Change Default Directory ofRTPU
`2.2.15 select: Select the Default RTPU
`2.2.16 status: Print Out Status of System
`2.2.17 tables: Start the tables Interface
`2.2.18 version: Print Current Version Information
`2.3 Ugraph
`Starting ugraph
`2.3.1
`The Main Window
`2.3.2
`Plotting a Function
`2.3.3
`Plotting UXDF Data
`2.3.4
`2.3.5 Viewing the Raw Data
`Legends and Labels
`2.3.6
`2.3.7
`Line Types
`2.3.8 Resizing the Graph
`Ranges and Zooming
`2.3.9
`2.3.10 Curve Interpolation Method
`2.3.11 Graph Sampling Period
`2.3.12 Live Mode
`
`2
`2
`
`5
`
`8
`Il
`Il
`li
`13
`
`13
`14
`15
`15
`15
`
`16
`
`18
`18
`18
`19
`19
`19
`20
`20
`21
`21
`21
`21
`21
`22
`22
`22
`23
`24
`24
`24
`24
`25
`26
`26
`28
`30
`30
`31
`31
`31
`32
`
`
`
`Chimera 3.2
`
`Table of Contents
`
`2.6
`
`2.4 Debugging Chimera Programs
`Embedded 110 statements and macros
`2.4.1
`The VMEbus Analyzer
`2.4.2
`Post-mortem debugging with the UNIX nm utility
`2.4.3
`Post-mortem debugging with gidb
`2.4.4
`2.5 Monitors
`Ironics IMON Monitor
`2.5.1
`Chimera IMONICA Monitor
`2.5.2
`tables Interface Commands
`cpus: System CPU Tables
`2.6.1
`devices: Device Driver Tables
`2.6.2
`fds: File Descriptor Tables
`2.6.3
`host: Host Interface and Address Windows
`2.6.4
`local: Host Mappings to VMEbus Devices
`2.6.5
`log: Log Configuration Information
`2.6.6
`2.6.7 map: Mapping of VME Address Ranges to Host Windows
`2.6.8 memory: Memory Expansion Boards
`options: Current Option Settings
`2.6.9
`2.6.10 quit: Quit from tables Interface
`2.6.11 resources: Resource Allocation
`2.6.12 xm: Express Mail Configuration
`3. Programming Guidelines
`File System Organization
`Subdirectory Structure
`3.1.1
`Supporting Multiple Computing Architectures
`3.1.2
`3.1.3 Makefiles
`3.2 Constants, Variables, and Subroutine Declarations
`Register Variables
`3.2.1
`3.2.2 Variables
`3.2.3 Global Variables
`Subroutines
`3.2.4
`3.3 Naming Conventions
`3.3.1 Macros and Constants
`Local Variables and Subroutines
`3.3.2
`Types
`3.3.3
`3.3.4 Global State Variables
`3.4 Libraries
`Subroutine Libraries
`3.4.1
`3.4.2 Device Driver Libraries
`Reconfigurable Module Libraries
`3.4.3
`3.5 General Coding Tips
`Loops
`3.5.1
`State Variable Table
`3.5.2
`3.5.3 Generating the Framework for a Reconfigurable Module
`Special Purpose Processors
`3.5.4
`
`3.1
`
`y
`
`33
`33
`34
`34
`35
`43
`43
`43
`45
`45
`46
`46
`46
`47
`48
`48
`48
`49
`49
`49
`49
`
`51
`
`52
`52
`53
`54
`56
`56
`57
`58
`60
`60
`61
`61
`62
`62
`63
`64
`64
`64
`65
`65
`65
`66
`66
`
`
`
`vi
`
`Chimera 3.2 Table of Contents
`
`3.6 Device Drivers
`I/O Device (JOD) Drivers
`3.6.1
`3.6.2
`Sensor-Actuator Interface (Second-Level Driver)
`Special Purpose Processor Drivers
`3.6.3
`3.7 Documentation
`Documenting a Reconfigurable Module
`3.7.1
`3.8 Peer Review of Code
`Sample Documentation of a Reconfigurable Module
`3.9
`4. Programmer's Manual
`
`4.1
`
`Standard Typcs, Constants, and Macros
`4.1.1 ASCIi Character Set
`Chimera 3.2 Constants
`4.1.2
`Standard Library Constants
`4.1.3
`4.1.4 Weights and Measures
`Basic Types
`4.1.5
`4.1.6 Variable Types
`4.1.7 Debugging Utility Macros
`4.2 Chimera Libraries
`Concurrent Standard Input/Output (stdio) Library
`4.2.1
`Standard Directory Operations Library
`4.2.2
`Chimera Directory Operations
`4.2.3
`4.2.4
`String Library
`Type Conversion:
`4.2.5
`4.2.6 Memory Operations:
`4.2.7 Bit Field Operations'
`Random Number Routines
`4.2.8
`Sorting and Searching Routines
`4.2.9
`4.2.10 User Interface Packet Utility
`4.2.1! Command interpreter:
`4.2.12 Configuration File Reading Utility
`4.2.13 Configuration and Data File "define" Mechanism
`4.2.14 Math Functions
`4.2.15 Matrix Math Libraries
`4.2.16 Memory Allocation Routines'
`4.2.17 Time-of-Day Library
`4.2.18 Universal Experimental Data Fornmt (UXDF) Library
`4.3 Task Control Primitives
`Creating a Task
`4.3.1
`Terminating a Task
`4.3.2
`Physical Time
`4.3.3
`4.3.4
`Task Timing Primitives
`Task Priorities
`4.3.5
`4.4 Local Communication and Synchronization
`RTPU Local Shared Memory
`4.4.1
`RTPU Local Semaphores
`4.4.2
`4.4.3 Host Workstation Local Shared Memory
`
`66
`67
`68
`69
`69
`69
`70
`
`71
`
`75
`
`76
`76
`76
`78
`79
`84
`85
`87
`88
`88
`94
`96
`97
`100
`101
`103
`105
`107
`107
`112
`120
`130
`131
`134
`143
`145
`147
`
`15 1
`
`151
`153
`153
`154
`157
`
`158
`158
`159
`160
`
`
`
`Chimera 3.2
`
`Table of Contents
`
`4.5
`
`4.4.4 Host Workstation Local Semaphores
`Jnterprocessor Communication and Synchronization
`Interprocessor Shared Memory
`4.5.1
`Remote Semaphores
`4.5.2
`Interprocessor Message Passing
`4.5.3
`4.5.4 One-to-One Triple-Buffer Communication
`4.5.5 Global State Variable Table Mechanism
`Extended File System
`4.5.6
`Ethernet Interface Passing
`4.5.7
`4.6 Host Procedure Calls
`4.7 Host Interface to Chimera Utilities
`4.8 Generic Interfaces
`Reconfigurable I/O Device Drivers
`4.8.1
`Sensor/Actuator Independent Interface
`4.8.2
`Special Purpose Processors
`4.8.3
`4.9 Command Line Arguments
`4.10 Error and Exception Handling
`4.10.1 Deadline Failure Detection and Handling
`4.10.2 Global Error Handling
`4.10.3 UNIX-compatible Error Handling
`4.11 Kernel Level Routines
`4.11.1 Kernel-Level Task Synchronization
`4.11.2 Setjmp and Longjmp: Global Goto Statements
`4.11.3 Forcing a Reschedule
`4.11.4 System Conversion Utilities
`4.11.5 Changing the Vector Base Register
`4.11.6 Accessing CPU Registers
`4.11.7 Setting CPU Priority Level
`4.11.8 C Access to User Traps
`4.11.9 Testing Existence of Memory
`4.11.10 Low-level Multiprocessor Synchronization Primitives
`4.11.11 Polling Mechanisms
`4.12 The Chimera Default Scheduler
`4.12.1 Real-time clock resolution
`4.12.2 Time Overflow
`4.13 Reconfigurable Subsystems
`4.13.1 Reconfigurable Module Interface Specification
`4.13.2 Subsystem (SBS) Interface
`4.13.3 SBS Interactive Command Interpreter
`4.13.4 Subsystem Specification Pile (.sbs file)
`4.13.5 Reconfigurable Module Specification (.rmod) file
`4.13.6 Network Commands
`4.13.7 Network Packet Specifications
`4.13.8 Parallel Subsystems
`5. System's Manual
`
`vii
`
`162
`
`163
`164
`167
`169
`172
`175
`187
`189
`
`193
`194
`
`196
`196
`202
`206
`217
`218
`218
`220
`233
`233
`234
`235
`236
`236
`237
`238
`239
`240
`241
`241
`242
`244
`244
`245
`245
`246
`252
`261
`266
`269
`271
`278
`285
`
`287
`
`
`
`5.3
`
`6.1
`
`5.1
`
`System Details under Normal Operation
`Starting Up Chimera 3.2
`5.1.1
`5.1.2 Downloading Programs
`Executing Programs
`5.1.3
`5.2 Writing Device Drivers
`I/O Device (JOD) Drivers
`5.2.1
`Sensor/Actuator Interface (SAI) Drivers
`5.2.2
`Special Purpose Processor (SPP) Drivers
`5.2.3
`Installing bD, SAI, and SPP Drivers
`5.2.4
`Interrupt and Exception Handlers
`Local Interrupts
`5.3.1
`5.3.2 VMEbus Interrupts
`5.3.3 Mailbox Interrupts
`Exception Handlers
`5.3.4
`5.4 Customizing a Kernel
`6. Installation Manual
`Supported Hardware
`Host Workstation Hardware
`6.1.1
`6.1.2 RTPUHardware
`I/O Device Hardware
`6.1.3
`6.2 Hardware Addressing
`hardware Installation
`6.3
`RTPU Hardware Installation
`6.3.1
`6.3.2 Adaptor Hardware Installation
`Special Purpose Processor Installation
`6.3.3
`6.4 Software Installation
`Setting Up the Chimera Environment
`6.4.1
`Loading the Software
`6.4.2
`Building a New SunOS 4.x.x Kernel
`6.4.3
`Sun3 and Sun4 Installation
`6.4.4
`Sun4c (Sun SPARCstation) Installation
`6.4.5
`6.5 Creating a Configuration File
`Sample Configuration Files
`6.5.1
`6.5.2 Options: "o'' Entries
`6.5.3 Host Workstation Infonnation: "h" Entries
`6.5A RTPUs: "r" Entries
`Special Purpose Processors: "s' Entries
`6.5.5
`6.5.6 Memory Expansion Boards: "in" and "n" Entries
`I/O Devices (new Chimera 3.0 format): "i" Entry
`6.5.7
`I/O Devices (old Chimera II format): ''d'' Entry
`6.5.8
`6.6 Troubleshooting Your Installation
`
`Index
`
`Chimera 3.2 Table of Contents
`
`287
`287
`288
`290
`292
`292
`302
`305
`305
`305
`306
`307
`307
`308
`309
`
`311
`
`312
`312
`313
`313
`313
`315
`316
`325
`332
`333
`333
`334
`334
`335
`339
`341
`341
`344
`344
`348
`349
`349
`350
`351
`352
`
`355
`
`
`
`Chimera 3.2
`
`Preface
`
`0.1 Licensing and other Terms
`
`The rights to Chimera 3.2 belong to Carnegie Mellon University (CMU), as it was originally developed as
`a research project. Chimera 3.2 is distributed with the terms outlined below.
`
`Every attempt is made to keep the manuals up to date. However, as in any large software product, their is a
`tendency for the version of the manual to not coincide with the software version. In some cases, the
`document actually outdates the software, because the documentation was often used as an informal
`specification of the product. The version number on the cover of this manual should be up to date with
`software of the same version number. Any differences should be reported to <chimera@cmu.edu>.
`
`0.1.1 Chimera 3.2 GeneraI License Agreement
`
`Licensing Agreement for Academic, Educational, and Research Purposes
`
`We provide Chimera 3.2 and associated software products together with this license agreement. We grant
`you a license to use the software product in machine-readable form for research, educational, and academic
`purposes only, provided that any software modules developed for Chimera are made freely available for use
`by other licensed Chimera users.
`
`
`
`Chimera 3.2
`
`Carnegie Mellon University (CMU) has certain rights to the computer software,
`electronic information and data, in all forms and versions, identïfied as Chimera,
`described in CMU Docicet 95-035,
`including associated documentation
`("Program").
`
`CMU grants to LICENSEE a fully-paid, nonexclusive, and nontransferable license
`to use the Program furnished hereunder, upon the terms and conditions set out
`below.
`
`LICENSEE acknowledges that the Program is a research tool still
`in the
`development stage, that it is being supplied "as is," without any accompanying
`services or improvements from CMU, and that this license is entered into in order
`to encourage scientific collaboration aimed at further development and application
`of the Program.
`
`CMU MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR
`IMPLIED AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO,
`WARRANTY OF FITNESS FOR PURPOSE, OR MERCHANTABILITY,
`EXCLUSIVITY OR RESULTS OBTAINED FROM SPONSOR'S USE OF ANY
`INTELLECTUAL PROPERTY DEVELOPED UNDER THIS AGREEMENT,
`NOR SHALL EITHER PARTY HERETO BE LIABLE TO THE OTHER FOR
`INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES SUCH AS LOSS
`OF PROFITS OR INABILITY TO USE SAID INTELLECTUAL PROPERTY
`OR ANY APPLICATIONS AND DERIVATION THEREOF. CMU DOES NOT
`MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM
`FROM PATENT, TRADEMARK, OR COPYRIGHT INFRTNGEMENT, OR
`THEFT OF TRADE SECRETS AND DOES NOT ASSUME ANY LIABILITY
`HEREUNDER FOR ANY INFRINGEMENT OF ANY PATENT,
`TRADEMARK, OR COPYRIGHT ARISING FROM THE USE OF THE
`PROGRAM, INFORMATION, INTELLECTUAL PROPERTY, OR OTHER
`PROPERTY OR RIGHTS GRANTED OR PROVIDED TO IT HEREUNDER.
`THE USER AGREES THAT IT WILL NOT MAKE ANY WARRANTY ON
`BEHALF OF CMU, EXPRESSED OR IMPLIED, TO ANY PERSON
`CONCERNING THE APPLICATION OF OR THE RESULTS TO BE
`OBTAINED WITH THE PROGRAM UNDER THIS AGREEMENT.
`
`LICENSEE agrees that it will flot make any warranty on behalf of CMU, express
`or implied, to any person concerning the application of or the results to be obtained
`with the Program.
`
`LICENSEE agrees that it will use the Program solely for research, educational, and
`academic purposes only, and shall not distribute or transfer it to another location
`or to any other person without prior written permission from CMU. This Program,
`or any portion thereof, may not be used for commercial purposes.
`
`LICENSEE agrees not to make copies of software products other than two copies
`with all proprietary rights notices which are archived for backup purposes only.
`The software products are confidential information and must be safeguarded from
`disclosure outside the scope of this authorization.
`
`LICENSEE agrees not to alter, decompile, or reverse engineer the Program.
`
`Title to copyright to the Program and to any assorted documentation shall at all times
`remain with CMU, and LICENSEE agrees to preserve same. LICENSEE agrees
`
`
`
`0.1. Licensing and other Terms
`
`xi
`
`not to make any copies except for it's internal use in the above laboratory, or to use
`separately any portion of the Program, without prior written consent of CMU.
`
`LICENSEE agrees to place the appropr ate copyright notice on any such copies.
`Nothing herein shall be deemed to grant any license or rights in any other
`technology owned by CMU related to the Program.
`
`9. This Agreement shall be construed, interpreted and applied in accordance with the
`laws of the Commonwealth of Pennsylvania.
`
`IO. Nothing in this Agreement shall be construed as conferring rights to use in
`advertising, publicity or otherwise any trademark or the name of "CMU".
`
`11. If permission to transfer the Program is given (under Article 8 above), LICENSEE
`warrants that LICENSEE will not export or reexport, directly or indirectly:
`
`the Program or any portion thereof, or
`
`any direct product (including equipment, processes or services) produced by
`the use of the Program, or
`
`any product of a complete plant or of a major component of a plant when such
`complete plant or such major component is the direct product of the Program,
`
`to any country except when such export or reexport is authorized if full compliance
`with the laws and regulations of the United States of America.
`
`12. LICENSEE agrees to make available for free distribution and use by other
`institutions licensed to use the Program, software modules developed by Licensee
`using the methodologies presented by the Program.
`
`13. LICENSEE understands that CMIJ is not responsible for support or maintenance
`of the Program.
`
`14. Upon LICENSEE's discontinued use of Program, LICENSEE agrees it will noti'
`CMU, and LICENSEE will, upon CMU's request, either return Program or destroy
`Program. The right to use the Program terminates immediately if the obligations in
`this license are not complied with.
`
`The Chimera 3.2 General License Agreement does not apply to public domain code
`which can be used in conjunction with the Chimera software, and has been included for
`your convenience. This includes the GNU CC compiler, assembler, loader, debugger,
`and math library, sample Chimera modules, and (with source release only) some BSD
`4.3 UNIX library code.
`
`As part of the Chimera 3.2 package, only the binary forms of the GNU CC compiler,
`assembler, loader, debugger, and math library are provided, along with the source code
`for the Chimera front end (although we are not obligated to provide the source code for
`this segment of software). The remainder of the GNU source code is available upon
`request at no charge, according to the GNU GENERAL PUBLIC LICENSE, as
`described below.
`
`The source code for any library code obtained from B SD 4.3 UNIX has the copyright
`notice in their headers. The terms and conditions for copying, distributing, and
`modi'ing BSD 4.3 UNIX code is given below.
`
`
`
`xii
`
`Chimera 3.2
`
`0.1.2 Limitation of Liability
`
`Chimera 3.2 is developed and distributed by the Advanced Manipulators Laboratory of
`the Robotics Institute, and the Electrical and Computer Engineering Department,
`Carnegie Mellon University (CMU), Pittsburgh, PA 15213. The authors and CMU
`have used their best efforts in preparing the documentation and the corresponding
`software. These efforts include development, research, and testing of the theories and
`programs to determine their effectiveness.
`
`The authors and CMU make no warranty of any kind, expressed or implied, with regard
`to these programs or this documentation. The authors and CMU shall not be liable in
`any event for incidental or consequential damages in connection with, or arising out of,
`the furnishing, performance, or use of these programs. This limit also applies to any
`subcontractor, reseller, programmer, or developer as the maximum for which we are
`collectively responsible. UNDER NO CIRCUMSTANCES ARE WE LIABLE FOR
`THIRD-PARTY CLAIMS AGAINST YOU FOR LOSSES OR DAMAGES; LOSS
`OF OR DAMAGE TO YOUR RECORDS OR DATA, OR CONSEQUENTIAL
`DAMAGES (INCLUDING LOST PROFITS OR SAVINGS) OR INCIDENTAL
`DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF SUCH POSSIBILITIES.
`
`0.1.3 BSD 4,3 Unix Terms
`
`BSD 4.3 Unix Terms and Conditions for Copying, Distribution,
`and Modification
`
`Copyright (c) 1988 Regents of the University of California. All rights reserved.
`
`Redistribution and use in source and binary forms are permitted provided that the
`above copyright notice and this paragraph are duplicated in all such forms and that any
`documentation, advertising materials, and other materials related to such distribution
`and use acknowledge that the software was developed by the University of California,
`Berkeley. The name of the University may not be used to endorse or promote products
`derived from this software without specific prior written permission. THIS
`SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
`IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE
`IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A
`PARTICULAR PURPOSE.
`
`The above copying and distribution notice applies only to the source code, and their
`corresponding compiled binary forms, for which the above message appears in the
`header of the source code file. The source code that is distributed under this agreement
`nd is provided for your convenience with the Chimera package. The authors and CMU
`have absolutely no rights and do not imply any van'anties for the BSD Unix code. They
`are provided for your convenience only.
`
`0.1.4 GNU General Public License
`The 'ccl','cclobj', and 'cclplus' compilers, 'gas68' assembler, 'gld' loader, and
`'gidb' Chimera debugger fall under this GNU GENERAL PUBLIC LICENSE. The
`authors and CMU have absolutely no rights to and do not imply any warranties for the
`GNU Software.
`
`
`
`0.1. Licensing and other Terms
`
`xIIi
`
`Terms and Conditions for Copying, Distribution and Modification
`(Version 2, June 1991)
`
`Copyright (C) 1989, 1991 Free Software Foundation, Inc.
`675 Mass Ave, Cambridge, MA 02139, USA
`
`0. This License applies to any program or other work which contains a notice placed
`by the copyright holder saying it may be distributed under the terms of this General
`Public License. The "Program", below, refers to any such program or work, and a
`"work based on the Program" means either the Program or any derivative work
`under copyright law: that is to say, a work containing the Program or a portion of
`it, either verbatim or with modifications and/or translated into another language.
`(Hereinafter, translation is included without limitation in the term "modification".)
`Each licensee is addressed as "you".
`
`Activities other than copying, distribution and modification are not covered by this
`License; they are outside its scope. The act of running the Program is not restricted,
`and the output from the Program is covered only if its contents constitute a work
`based on the Program (independent of having been made by running the Program).
`Whether that is true depends on what the Program does.
`
`You may copy and distribute verbatim copies of the Program's source code as you
`receive it, in any medium, provided that you conspicuously and appropriately
`publish on each copy an appropriate copyright notice and disclaimer of warranty;
`keep intact all the notices that refer to this License and to the absence of any
`warranty; and give any other recipients of the Program a copy of this License along
`with the Program.
`
`You may charge a fee for the physical act of transferring a copy, and you may at
`your option offer warranty protection in exchange for a fee.
`
`You may modifS' your copy or copies of the Program or any portion of it, thus
`forming a work based on the Program, and copy and distribute such modifications
`or work under the terms of Section 1 above, provided that you also meet all of these
`conditions:
`
`You must cause the modified files to carry prominent notices stating that you
`changed the files and the date of any change.
`
`You must cause any work that you distribute or publish, that in whole or in part
`contains or is derived from the Program or any part thereof, to be licensed as a
`whole at no charge to all third parties under the terms of this License.
`
`If the modified program normally reads commands interactively when run, you
`must cause it, when started running for such interactive use in the most
`ordinary way, to print or display an announcement including an appropriate
`copyright notice and a notice that there is no warranty (or else, saying that you
`provide a warranty) and that users may redistribute the program under these
`conditions, and telling the user how to view a copy of this License. (Exception:
`if the Program itself is interactive but does not normally print such an
`announcement, your work based on the Program is not required to print an
`announcement.)
`
`These requirements apply to the modified work as a whole. If identifiable sections
`of that work are not derived from the Program, and can be reasonably considered
`
`
`
`xiv
`
`Chimera 3.2
`
`independent and separate works in themselves, then this License, and its terms, do
`not apply to those sections when you distribute them as separate works. But when
`you distribute the same sections as part of a whole which is a work based on the
`Program, the distribution of the whole must be on the tenus of this License, whose
`pennissions for other licensees extend to the entire whole, and thus to each and
`every part regardless of who wrote it.
`
`Thus, it is not the intent of this section to claim rights or contest your rights to work
`written entirely by you; rather, the intent is to exercise the right to control the
`distribution of derivative or collective works based on the Program.
`
`In addition, mere aggregation of another work not based on the Program with the
`Program (or with a work based on the Program) on a volume of a storage or
`distribution medium does not bring the other work under the scope of this License.
`
`3. You may copy and distribute the Program (or a work based on it, under Section 2)
`in object code or executable form under the terms of Sections 1 and 2 above
`provided that you also do one of the following:
`
`Accompany it with the complete corresponding machine-readable source code,
`which must be distributed under the tenus of Sections 1 and 2 above on a
`medium customarily used for software interchange; or,
`
`Accompany it with a written offer, valid for at least three years, to give any third
`party, for a charge no more than your cost of physically performing source
`distribution, a complete machine-readable copy of the corresponding source
`code, tobe distributed under the tenus of Sections 1 and 2 above on a medium
`customarily used for software interchange; or,
`
`Accompany it with the information you received as to the offer to distribute
`corresponding source
`allowed only
`alternative
`for
`code.
`(This
`is
`noncommercial distribution and only if you received the program in object
`code or executable form with such an offer, in accord with Subsection b
`above.)
`
`The source code for a work means the preferred form of the work for making
`modifications to it. For an executable work, complete source code means all the
`source code for all modules it contains, plus any associated interface definition
`files, plus the scripts used to control compilation and installation of the executable.
`However, as a special exception, the source code distributed need not include
`anything that is normally distributed (in either source or binary form) with the
`major components (compiler, kernel, and so on) of the operating system on which
`the executable runs, unless that component itself accompanies the executable.
`
`If distribution of executable or object code is made by offering access to copy from
`a designated place, then offering equivalent access to copy the source code from
`the same place counts as distribution of the source code, even though third parties
`are not compelled to copy the source along with the object code.
`
`4. You may not copy, modify, sublicense, or distribute the Program except as expressly
`provided under this License. Any attempt otherwise to copy, modi', sublicense or
`distribute the Program is void, and will automatically terminate your rights under
`this License. However, parties who have received copies, or rights, from you under
`
`
`
`0.1. Licensing and other Terms
`
`xv
`
`this License will not have their licenses terminated so long as such parties remain
`in full compliance.
`
`You are not required to accept this License, since you have not signed it. However,
`nothing else grants you permission to modify or distribute the Program or its
`derivative works. These actions are prohibited by law if you do not accept this
`License. Therefore, by modifying or distributing the Program (or any work based
`on the Program), you indicate your acceptance of this License to do so, and all its
`terms and conditions for copying, distributing or modifying the Program or works
`based on it.
`
`Each time you redistribute the Program (or any work based on the Program), the
`recipient automatically receives a license from the original licensor to copy,
`distribute or modify the Program subject to these terms and conditions. You may
`not impose any further restrictions on the recipients' exercise of the rights granted
`herein. You are not responsible for enforcing compliance by third parties to this
`License.
`
`If, as a consequence of a court judgment or allegation of patent infringement or for
`any other reason (not limited to patent issues), conditions are imposed on you
`(whether by court order, agreement or otherwise) that contradict the conditions of
`this License, they do not excuse you from the conditions of this License. If you
`cannot distribute so as to satisfy simultaneously your obligations under this
`License and any other pertinent obligations, then as a consequence you may not
`distribute the Program at all. For example, if a patent license would not permit
`royalty-free redistribution of the Program by all those who receive copies directly
`or indirectly through you, then the only way you could satisfy both it and this
`License would be to refrain entirely from distribution of the Program.
`
`If any portion of this section is held invalid or unenforceable under any particular
`circumstance, the balance of the section is intended to apply and the section as a
`whole is intended to apply in other circumstances.
`
`It is not the purpose of this section to induce you to infringe any patents or other
`property right claims or to contest validity of any such claims; this section has the
`sole purpose of protecting the integrity of the free software distribution system,
`which is implemented by public license practices. Many people have made
`generous contributions to the wide range of software distributed through that
`system in reliance on consistent application of that system; it is up to the
`author/donor to decide if he or she is willing to distribute software through any
`other system and a licensee cannot impose that choice.
`
`This section is intended to make thoroughly clear what is believed to be a
`consequence of the rest of this License.
`
`If the distribution and/or use of the Program is restricted in certain countries either
`by patents or by copyrighted interfaces, the original copyright holder who places
`the Program under this License may add an explicit geographical distribution
`limitation excluding those countries, so that distribution is permitted only in or
`among countries not thus excluded. In such case, this License incorporates the
`limitation as if written in the body of this License.
`
`The Free Software Foundation may publish revised and/or new versions of the
`General Public License from time to time. Such new versions will be similar in
`
`
`
`xvi
`
`Chimera 3.2
`
`spirit to the present version, but may differ in detail to address new problems or
`concerns.
`
`Each version is given a distinguishing version number. If the Program specifies a
`version number of this License which applies to it and "any later version", you
`have the option of following the terms and conditions either of that version or of
`any later version published by the Free Software Foundation. If the Program does
`not specify a version number of this License, you may choose any version ever
`published by the Free Software Foundation.
`
`If you wish to incorporate parts of the Program into other free programs whose
`distribution conditions are different, write to the author to ask for permission. For
`software which is copyrighted by the Free Software Foundation, write to the Free
`Software Foundation; we sometimes make exceptions for this. Our decision will
`be guided by the two goals of preserving the free status of all derivatives of our free
`software and of promoting the sharing and reuse of software generally.
`
`NO WARRANTY
`
`BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
`WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
`APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING
`THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
`PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
`EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
`IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
`PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
`PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
`PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
`NECESSARY SERVICING, REPAIR OR CORRECTION.
`
`IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
`TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER
`PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS
`PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
`ANY GENERAL,
`INCIDENTAL OR CONSEQUENTIAL
`SPECIAL,
`DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
`PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
`DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
`YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO
`OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
`OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
`DAMAGES.
`
`END OF TERMS AND CONDITIONS
`
`0.1.5 GNU Library General Public License
`
`The 'libmO4O.lib' linkable M68040 inaih library falls under this GNU LIBRARY
`GENERAL PUBLIC LICENSE. The authors and CMU have absolutely no rights to
`and do not imply any warranties for the GNU Software.
`
`
`
`0.1. Licensing and other Terms
`
`xvii
`
`Terms and Conditions for Copying, Distribution and Modification
`(Version 2, June 1991)
`
`Copyright (C) 1991 Free Software Foundation, Inc.
`675 Mass Ave, Cambridge, MA 02139, USA
`
`0. This License Agreement applies to any software library which contains a notice
`placed by the copyright holder or other authorized party saying it may be
`distributed under the terms of this Library General Public License (also called "this
`License"). Each licensee is addressed as "you".
`
`A "library" means a collection of