9762 lines
405 KiB
Plaintext
9762 lines
405 KiB
Plaintext
|
"Mapping the Amiga" by Rhett Anderson and Randy Thompson. A comprehensive
|
||
|
guide to the inner world of the Amiga. Covers libraries and hardware
|
||
|
registers. Examples in C, Assembly Language, and Modula 2.
|
||
|
|
||
|
|
||
|
Preface
|
||
|
|
||
|
There are so many programming books for the Amiga. Why should there be
|
||
|
another one?
|
||
|
Frankly, we wrote this book for ourselves. When we sit down to program,
|
||
|
we find that no single book is enough. The typical Amiga programmer may
|
||
|
have Commodore's official reference manuals, several Sybex, Abacus, and
|
||
|
COMPUTE! books, the complete set of Amiga Transactor magazines, and even
|
||
|
several printouts of downloaded programming information and source code, all
|
||
|
scattered across desks, chairs, and, of course, the floor. As you know, program-
|
||
|
ming the Amiga is a tough job. You might spend an hour just tracking down
|
||
|
the right source. What is the solution to this problem?
|
||
|
We turned for inspiration to two books that helped us in the past: Mapping
|
||
|
the Atari by Ian Chadwick (1983, COMPUTE! Books) and Mapping the Commo-
|
||
|
dore 64 by Sheldon Leemon (1984, COMPUTE! Books). These books had it
|
||
|
all-explanations of how the respective machines organized memory, detailed
|
||
|
listings of what various memory locations were and how to use them, descrip-
|
||
|
tions of input/output registers, and discussions of the functions of various
|
||
|
ROM routines.
|
||
|
These books were so detailed a programmer could literally write a program
|
||
|
without putting fingerprints on a single other book.
|
||
|
But of course you can't really do the same thing for the Amiga. The above-
|
||
|
mentioned books were slightly over 200 pages. This book is more than twice as
|
||
|
large and comes nowhere near to saying everything that can be said about the
|
||
|
Amiga. If the Apple II's built-in software and hardware is an apartment, and the
|
||
|
Commodore 64's is a townhouse, then the Amiga's is a Manhattan city block.
|
||
|
And the problem is not just a matter of scale. Unlike earlier computers, the
|
||
|
Amiga doesn't set aside areas of memory for this or that purpose. Instead, the
|
||
|
Amiga has libraries of routines, which can show up virtually anywhere in the
|
||
|
RAM space of the machine. These routines aren't even all in ROM; some are
|
||
|
loaded from disk. The screen is not in a fixed location. Commodore even
|
||
|
threatens that the locations of the memory-mapped custom chips may change
|
||
|
at any time. The Amiga doesn't go through all these contortions to be contrary.
|
||
|
Instead, this level of indirection provides the Amiga with prodigious flexibility.
|
||
|
Libraries and devices are easily upgraded and added. Peripherals and input de-
|
||
|
vices are easily accommodated.
|
||
|
|
||
|
|
||
|
Aware of the problems of scale and flexibility, we set out to accomplish a
|
||
|
different and (somewhat) more reasonable task: to enable a programmer to use
|
||
|
our book as a reference work that answers 90 percent of his or her questions.
|
||
|
This task took the two of us a year. We couldn't have done it alone. We'd like
|
||
|
to thank Stephen Levy, our editor, for his patience. We would also like to
|
||
|
thank our friends and co-workers at Amiga Resource and COMPUTE!, and also,
|
||
|
especially, our wives, for putting up with months of odd moods and the occa-
|
||
|
sional bout of crankiness. A special thanks goes out to Sheldon Leemon for his
|
||
|
many suggestions and observations.
|
||
|
|
||
|
How to Use This Book:
|
||
|
First, we suggest a little window shopping. Browse among the chapters and the
|
||
|
appendices. Ever wonder how the blitter works? Curious about the HAM video
|
||
|
mode? Cruise through the Hardware chapter. Want to know how the Amiga
|
||
|
organizes its data? Want to know how to use the Amiga's built-in functions?
|
||
|
The Structures and Libraries chapters tell you. Becoming familiar with the
|
||
|
structure and content of the book will pay off later.
|
||
|
If you're an expert programmer, we suggest a quick scan of the book.
|
||
|
You'll probably use this book as a reference. Read the introductions to each
|
||
|
chapter, and don't forget to check out the appendices.
|
||
|
The majority of the book consists of tables and charts-a compilation of
|
||
|
vital programming information organized in understandable and usable for-
|
||
|
mats. Much of this information can't be found in any other single place. For ex-
|
||
|
ample, where else can you find a complete listing of library functions that gives
|
||
|
the syntax of each function in C, machine language, and Modula-2?
|
||
|
Each major section of the book begins with an introduction that explains
|
||
|
how to use the information that follows. So even if you're a beginner, you'll
|
||
|
find this book a great way to learn about the Amiga's inner workings.
|
||
|
If you already have a stable of Amiga programming books, notice how the
|
||
|
layouts of those books compare with ours. For instance, some books group
|
||
|
functions by the library in which they're found; Mapping the Amiga orders the
|
||
|
functions alphabetically. Knowing this can save you some time and help you
|
||
|
learn how to use Mapping in conjunction with your other programming books.
|
||
|
If you don't have any other Amiga programming books, we'd like to sug-
|
||
|
gest a few. Commodore's set of reference manuals (published by Addison Wes-
|
||
|
ley) are invaluable. Be sure to get the latest set; new examples and tables have
|
||
|
been included in every update so far. Sybex sells three excellent books: Eugene
|
||
|
Mortimore's two-volume Amiga Programmer's Handbook and Rob Peck's Pro-
|
||
|
gramming the Amiga. Abacus publishes many Amiga books. Our favorites are
|
||
|
Amiga System Programmer's Guide and Amiga Graphics Inside & Out. COMPUTE!
|
||
|
books also has many titles. We often turn to COMPUTE!'s Amiga Programming
|
||
|
Guide and Sheldon Leemon's Inside Amiga Graphics. You'll also want a manual
|
||
|
for the language you're using.
|
||
|
|
||
|
Programming and Mapping:
|
||
|
You can program the Amiga in just about any language you've ever heard of
|
||
|
(with the possible exception of COBOL). Each language has different syntax,
|
||
|
requirements, and interfacing details. For this book, we've supported the lan-
|
||
|
guages most familiar to us: Lattice C, M2S's M2Sprint Modula-2, and machine
|
||
|
language. All programming examples given in this book were written using one
|
||
|
of these languages. Users of other C and Modula-2 implementations should
|
||
|
have little trouble using this book. If you use a different language, see the man-
|
||
|
ual for information about how structure offsets are named and what parameters
|
||
|
are passed to the various system functions.
|
||
|
We hope this book will be useful to you. Don't hesitate to let us know
|
||
|
what helped you and what you found lacking. Send mail to:
|
||
|
|
||
|
Rhett & Randy
|
||
|
COMPUTE! Publications
|
||
|
324 W. Wendover Ave., Suite 200
|
||
|
Greensboro, NC 27408
|
||
|
|
||
|
You might also be able to find us on your favorite online service, such as
|
||
|
CompuServe, PLink, or GEnie. Ask your friendly local sysop.
|
||
|
As Bill Wilkinson said in the introduction to Mapping the Atari, good luck
|
||
|
and happy mapping.
|
||
|
|
||
|
Notes from BSI: It took about eight hours to scan and fix the majority of
|
||
|
the typos caused by the scanner (HP ScanJet+) reading bold text incorrect-
|
||
|
ly. For that reason, I have not scanned the "Structures" part of the book.
|
||
|
You can use you include files for DevPac2 instead. (Or with Lattice, or
|
||
|
with...) However, I have included the "hardware" part since I manually
|
||
|
typed that up when I first got my Amiga so I could learn where all the
|
||
|
hardware registers are. Enjoy the text. Any questions can be left to me
|
||
|
(Bansai) on Motherboard East 1.5 at 1(215)792-0167. Slates!
|
||
|
-------------------------
|
||
|
Library Functions
|
||
|
|
||
|
The Amiga is an incredibly capable machine. It has so much to offer, from digi-
|
||
|
tized sounds and dazzling color graphics to a window-based user interface and
|
||
|
a true multitasking operating system. Library functions are the key to accessing
|
||
|
these features.
|
||
|
The Amiga's library functions are similar to the Commodore 64's ROM
|
||
|
Kernal subroutines, the IBM PC's BIOS interrupt calls, and the Apple Macin-
|
||
|
tosh's Toolbox procedures-they are a collection of routines that allow you to
|
||
|
control almost every aspect of your computer. They're called functions because
|
||
|
the majority of them were written in the C programming language. In C, all
|
||
|
user-defined commands are referred to as functions.
|
||
|
|
||
|
Linked Libraries
|
||
|
There are really two types of libraries on the Amiga: linked libraries and shared
|
||
|
libraries. (Note: Amiga Basic and Modula-2 do not use linked libraries.)
|
||
|
Linked libraries are a collection of external functions that you make part of
|
||
|
your program. When you link your program with Alink or Blink, each linked li-
|
||
|
brary function you use is brought in from one of the specified .lib files and
|
||
|
stuffed into your program. The Lattice C file lc.lib and the Manx C file c.lib are
|
||
|
both examples of linked libraries.
|
||
|
The functions offered by a linked library are dependent upon your compil-
|
||
|
er or assembler. However, one linked library is common-amiga.lib. The
|
||
|
amiga.lib library offers common functions such as printf( ), atoi( ), and
|
||
|
BeginIO( ). Only amiga.lib is documented in this chapter. Language-specific
|
||
|
linked libraries are explained in the manual that came with your compiler or
|
||
|
assembler.
|
||
|
Using an amiga.lib function in C is incredibly easy: Simply call the func-
|
||
|
tion by name and then link your program with amiga.lib. For Lattice C users,
|
||
|
linking with amiga.lib is automatic when you use the compiler's -L option.
|
||
|
Other compilers simply have you provide the amiga.lib filename as one of the
|
||
|
library parameters in the Alink or Blink command sequence.
|
||
|
Accessing amiga.lib from machine language is a bit tougher. First you must
|
||
|
declare that function with an XREF statement, preceding the function name with
|
||
|
an underline character (xref _CreateExtIO, for example). Second, you must
|
||
|
push the function arguments onto the stack, not place them into registers. To
|
||
|
actually call the function you simply JSR to the function name, as in JSR
|
||
|
_CreateExtIO. Finally, you must remove the function arguments from the
|
||
|
stack- the function does not do this for you. A simple addq.l #8,sp would suf-
|
||
|
fice for CreateExtIO( ) since this function accepts two long words (eight bytes)
|
||
|
worth of arguments.
|
||
|
All of the amiga.lib functions are described in the function tables found at
|
||
|
the end of this chapter. Here's the entry for amiga.lib's printf( ) function:
|
||
|
-------------------------
|
||
|
printf
|
||
|
Description: prints a formatted string to the standard output (Lattice and Manx
|
||
|
users: if you link with lc.lib or c.lib, this is not the function you're
|
||
|
calling)
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: printf(string, values...)
|
||
|
C: void printf(char *, long...)
|
||
|
Machine Language: move.l #value,-(sp) ;may have several values
|
||
|
pea string
|
||
|
jsr _printf
|
||
|
add.l #8,sp ;(2 arguments * 4 bytes = 8)
|
||
|
Modula-2: not available
|
||
|
Arguments:string = pointer to string containing optional C formatting com-
|
||
|
mands (%); if you're passing longword values on the stack (as
|
||
|
shown above), be sure to follow the percent symbol with a lower-
|
||
|
case L
|
||
|
values = values or addresses of strings to print; this routine
|
||
|
knows how many values are on the stack by checking the number
|
||
|
of formatting commands in the string argument
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
The Machine Language entry in this table illustrates how you might call
|
||
|
the printf( ) function from machine language. Specifically, it shows the order in
|
||
|
which you must push the function's arguments onto the stack. In all cases, the
|
||
|
arguments are pushed onto the stack in the order opposite to that shown in the
|
||
|
Syntax entry (right to left instead of left to right).
|
||
|
In these crude machine language examples, all pointer arguments are
|
||
|
placed onto the stack using a PEA instruction. In actual use, the argument's ad-
|
||
|
dress may be contained in a register or a memory location, in which case you
|
||
|
would MOVE it onto the stack. The examples shown here use PEA simply so
|
||
|
you understand that the function expects an address and not an actual value. If
|
||
|
the argument is supposed to be a value, we place it onto the stack via a MOVE
|
||
|
instruction.
|
||
|
|
||
|
For a real-world example, the following machine language program makes
|
||
|
use of amiga.lib's printf( ) function to output the solution to a simple equation:
|
||
|
-------------------------
|
||
|
Program 1-1. Simple Addition
|
||
|
|
||
|
* Machine language example for using the printf( ) linked library function
|
||
|
* -Be sure to link with amiga.lib
|
||
|
|
||
|
* Hard-coded function offsets
|
||
|
OpenLibrary equ -552
|
||
|
CloseLibrary equ -414
|
||
|
Output equ -60
|
||
|
|
||
|
AbsExecBase equ 4 ;Absolute location of ExecBase pointer
|
||
|
|
||
|
XREF printf ;Declaration for amiga.lib function
|
||
|
XDEF SysBase ;Make this available to amiga.lib
|
||
|
XDEF DOSBase ;Make this available to amiga lib
|
||
|
XDEF stdout ;Make this available to amiga lib
|
||
|
|
||
|
SECTION code,CODE
|
||
|
|
||
|
* Short-but-effective startup code
|
||
|
movea.l AbsExecBase,a6 ;Pointer to IntuitionBase in a6
|
||
|
move.l a6, SysBase ;Store it in external location for amiga.lib
|
||
|
clr.l d0 ;Version number goes in d0
|
||
|
movea.l #DOSName,a1 ;Pointer to library's name goes in a1
|
||
|
]sr OpenLibrary(a6) ;Open DOS library and return libBase in d0
|
||
|
move.l d0, d0SBase ;Save library base pointer
|
||
|
beq.s Abort2 ;Abort if dos.library could not be opened
|
||
|
move.l d0,a6 ;Pointer to DOSBase in a6
|
||
|
jsr Output(a6) ;Call Output to get an output file handle
|
||
|
move.l d0, stdout ;and store it for amiga.lib
|
||
|
beq.s Abortl ;Abort if unable to get a file handle
|
||
|
|
||
|
* Main program that adds Num1 and Num2
|
||
|
move.l Num1,d0 ;Get Num1 into d0
|
||
|
add.l Num2,d0 ;Add the two numbers and put result in d0
|
||
|
|
||
|
* Call printf( ) to print the addition result in decimal and in hex format
|
||
|
move.l d0,-(sp) ;Push result onto stack for hex output
|
||
|
move.l d0,-(sp) ;Push result onto stack for decimal output
|
||
|
move.l Num2,-(sp) ;Push Num2 value on stack
|
||
|
move.l Num1,-(sp) ;Push Num1 value on stack
|
||
|
pea formatString ;Push address of formatString onto stack
|
||
|
jsr printf ;Call printf( )
|
||
|
add.l #20,sp ;Remove arguments from stack-
|
||
|
;(5 arguments * 4 bytes = 20 bytes)
|
||
|
|
||
|
* Close DOS library
|
||
|
Abort1:
|
||
|
move.l DOSBase,a1 ;Pointer to DOSBase in a1
|
||
|
move.l SysBase,a6 ;Pointer to ExecBase in a6
|
||
|
jsr CloseLibrary(a6) ;Call CloseLibrary( )
|
||
|
|
||
|
* Exit program
|
||
|
Abort2:
|
||
|
clr.l d0 ;Set return code
|
||
|
rts ;Drop out of program
|
||
|
|
||
|
|
||
|
SECTION data,DATA
|
||
|
|
||
|
Num1:
|
||
|
|
||
|
dc.l 8723 ;Value 1 that will be added to
|
||
|
Num2:
|
||
|
dc.l 434 ;Value 2
|
||
|
|
||
|
SysBase:
|
||
|
dc.l 0 ;Location to hold ExecBase pointer
|
||
|
DOSBase:
|
||
|
dc.l 0 ;Location to hold DOSBase pointer
|
||
|
stdout:
|
||
|
dc.l 0 ;Location to hold output handle
|
||
|
|
||
|
DOSName:
|
||
|
dc.b 'dos.library',0 ;Name of dos library
|
||
|
|
||
|
* The following statements define the format string to be used by printf( )
|
||
|
* Note that a lowercase L follows all percent symbols (%)-this is required
|
||
|
* if you pass your values as 32-bit quantities, as we do in this program
|
||
|
formatString:
|
||
|
dc.b '%ld + %ld = %ld (%lx hex)',10,0
|
||
|
|
||
|
END
|
||
|
-------------------------
|
||
|
Shared Libraries
|
||
|
When someone refers to an Amiga library, they're usually talking about a
|
||
|
shared library. The same is true of this book.
|
||
|
As the name implies, a shared library is accessible to all Amiga programs.
|
||
|
When you use a shared library function, its code does not become part of your
|
||
|
program on disk; shared libraries are located in ROM (writable control memory
|
||
|
on the Amiga 1000) or loaded into RAM from the libs directory of your Work-
|
||
|
bench disk.
|
||
|
Shared libraries are more memory conservative than linked libraries. Every
|
||
|
program that accesses a function from a linked library must contain its own
|
||
|
copy of that function. Only one copy of a shared library function ever needs to
|
||
|
be in memory because all programs have access to it.
|
||
|
At this writing, there are 15 libraries available with Kickstart/Workbench
|
||
|
1.3, each one covering a different aspect of the Amiga. For graphics program-
|
||
|
ming, you use the graphics.library; for creating windows, requesters, and pull-
|
||
|
down menus, you use the intuition.library; for disk access, you use the
|
||
|
dos.library.
|
||
|
The clist.library has been removed from Kickstart 1.2 and 1.3, but it is
|
||
|
available with Kickstart 1.1 and is documented here for the sake of complete-
|
||
|
ness. Two special libraries-romboot.library and version.library-are not cov-
|
||
|
ered in this chapter since the functions they contain are private to the Amiga's
|
||
|
system software and cannot be called by the user.
|
||
|
-------------------------
|
||
|
Opening and Closing Libraries
|
||
|
A library must be opened before you can access its functions. Like your local
|
||
|
Seven-Eleven store, the Exec library is always open. This works out rather well
|
||
|
considering OpenLibrary( ), the one function required to open other libraries, is
|
||
|
contained in Exec. When you link with startup code such as Lattice's c.o, the
|
||
|
DOS library is opened for you as well. If you program with M2Sprint, you'll
|
||
|
find that several libraries are automatically opened for you.
|
||
|
You open a library using the aptly named OpenLibrary( ) function.
|
||
|
OpenLibrary( ) expects two arguments: the library name and the library version
|
||
|
number. (See Table 1-2 for a complete list of available libraries.) The sample
|
||
|
code below shows the C, machine language, and Modula-2 syntax for using the
|
||
|
OpenLibrary( ) function.
|
||
|
|
||
|
In C:
|
||
|
libBase = OpenLibrary(libraryName,version);
|
||
|
|
||
|
In machine language:
|
||
|
move.l ExecBase,a6 ;Pointer to ExecBase
|
||
|
lea libraryName,a1 ;Pointer to the library's name goes in a1
|
||
|
moveq #version,d0 ;Version number goes in d0
|
||
|
jsr OpenLibrary(a6) ;Open library and return libBase in d0
|
||
|
move.l d0,libBase ;Save library base pointer
|
||
|
|
||
|
In Modula-2:
|
||
|
libBase := OpenLibrary(libraryName,version);
|
||
|
|
||
|
where libBase is the name of the library's base pointer, libraryName is the
|
||
|
name of the library, and version is the lowest acceptable version of the library
|
||
|
you require. In most cases, you should use a version number of 0 or 33. The
|
||
|
following table explains all the possible version numbers you can use:
|
||
|
|
||
|
Table 1 1. Library Version Numbers
|
||
|
Version Number Kickstart Version
|
||
|
0 Any version
|
||
|
30 Kickstart version 1.0
|
||
|
31 NTSC Kickstart version 1.1
|
||
|
32 PAL Kickstart version 1.1
|
||
|
33 Kickstart 1.2 (the oldest version still supported)
|
||
|
34 Kickstart 1.3
|
||
|
|
||
|
If you specify a version that is higher than what is available on the Amiga
|
||
|
you run your program, OpenLibrary( ) will fail and return a NULL value. If the
|
||
|
library is opened successfully, the base address of the library is returned in libBase.
|
||
|
|
||
|
|
||
|
Table 1-2 shows the library base pointer names (libBase) and their corre-
|
||
|
sponding library names (libraryName) that you should use when opening a li-
|
||
|
brary. In machine language, you can use practically any name you choose, as
|
||
|
long as you define an area in memory to store the pointer and label that loca-
|
||
|
tion using the name you select. By convention, it's recommended you use the
|
||
|
library base pointer name provided in Table 1-2 and precede it with an under-
|
||
|
line character, as in the name _DOSBase. In Lattice C, you must use the names
|
||
|
given below. If you don't, your program will compile and link correctly, and
|
||
|
then happily guru when it is run.
|
||
|
|
||
|
Table 1-2. Library Names
|
||
|
Library Name Library Base Pointer Name
|
||
|
clist.library ClistBase (unavailable in Kickstart 1.2 and 1.3)
|
||
|
diskfont.library DiskfontBase
|
||
|
dos.library DOSBase (normally opened by startup code)
|
||
|
exec.library ExecBase (ExecBase found at location 4)
|
||
|
expansion.library ExpansionBase
|
||
|
graphics.library GfxBase
|
||
|
icon.library IconBase
|
||
|
intuition.library IntuitionBase
|
||
|
layers.library LayersBase
|
||
|
mathffp.library MathBase
|
||
|
mathieeedoubbas.library MathleeeDoubBasBase
|
||
|
mathieeedoubtrans.library MathleeeDoubTransBase
|
||
|
mathtrans.library MathTransBase
|
||
|
romboot.library (system private-not accessible to user)
|
||
|
translator.library TranslatorBase
|
||
|
version.library (system private-not accessible to user)
|
||
|
|
||
|
When your program is finished, you must be sure to close all of the librar-
|
||
|
ies you opened. To accomplish this you use yet another aptly named Exec
|
||
|
function, CloseLibrary( ). The only argument that the CloseLibrary( ) function
|
||
|
requires is the base address of the library you wish to close. This is the same
|
||
|
base address that was returned by OpenLibrary( ). Here are some examples on
|
||
|
using CloseLibrary( ):
|
||
|
|
||
|
In C and Modula-2 use:
|
||
|
CloseLibrary(libBase);
|
||
|
|
||
|
In machine language:
|
||
|
move.l libBase,a1 ;libBase goes in register a1
|
||
|
move.l ExecBase,a6 ;Pointer to ExecBase goes in a6
|
||
|
jsr CloseLibrary(a6) ;Close the library
|
||
|
|
||
|
|
||
|
If you neglect to close a library, you run the risk of wasting memory since
|
||
|
the system will not know if it can throw out an unused, RAM-based library.
|
||
|
-------------------------
|
||
|
Calling Functions
|
||
|
The end of this chapter contains an alphabetical listing of every user-accessible
|
||
|
Amiga library function. Each table entry gives the function's name; a brief de-
|
||
|
scription of that function; the library in which the function is contained; its
|
||
|
negative offset from the library base (useful to the "take charge" machine lan-
|
||
|
guage programmer); the Modula-2 module in which it is contained; its syntax;
|
||
|
its C, machine language, and Modula-2 usage; a description of its arguments
|
||
|
(sometimes referred to as parameters); and a description of the value (if any)
|
||
|
that is returned by the function. For example, here's the entry for Intuition's
|
||
|
OpenWindow( ) function:
|
||
|
|
||
|
OpenWindow
|
||
|
Description: opens an Intuition window
|
||
|
Library: intuition.library
|
||
|
Offset: -$00CC (-204)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: window = OpenWindow(newWindow)
|
||
|
C: struct Window *OpenWindow(struct NewWindow *)
|
||
|
Machine Language: d0 = OpenWindow(a0)
|
||
|
Modula-2: OpenWindow(VAR newWindow: NewWindow): WindowPtr
|
||
|
Arguments: newWindow = NewWindow structure that describes window to
|
||
|
open
|
||
|
Result: window = pointer to Window structure; NULL if unsuccessful
|
||
|
|
||
|
The Syntax section gives you a general idea of what the function expects
|
||
|
and what it returns. If you look at the C description, you can see that
|
||
|
OpenWindow( ) expects a pointer to a NewWindow structure and returns a
|
||
|
pointer to a Window structure. The Machine Language description shows that
|
||
|
the Window pointer should be placed in a0 and the pointer to the opened Win-
|
||
|
dow is returned in d0 (all functions that return values return them in d0). For
|
||
|
Modula-2, you can see you must pass the function a NewWindow structure
|
||
|
and the value it returns is of type WindowPtr. The following C, machine lan-
|
||
|
guage, and Modula-2 programs are examples of how you can use this infor-
|
||
|
mation to open a window. Five library functions are used in these program:
|
||
|
OpenLibrary( ), OpenWindow( ), Wait( ), CloseWindow( ), and CloseLibrary( ).
|
||
|
-------------------------
|
||
|
Program 1-2. C Window
|
||
|
|
||
|
C code that opens a window and waits for you to close it
|
||
|
|
||
|
#include <intuition/intuition.h> /* Include Intuition stuff */
|
||
|
|
||
|
struct IntuitionBase *IntuitionBase = NULL; /* Define IntuitionBase */
|
||
|
struct Window *MyWindow = NULL; /* Define Window pointer */
|
||
|
struct NewWindow MyNewWindow = { /* Set up NewWindow structure */
|
||
|
0,12,
|
||
|
200,100,
|
||
|
-1 , -1 ,
|
||
|
CLOSEWINDOW,
|
||
|
WINDOWCLOSE | WINDOWDEPTH | WINDOWDRAG | WINDOWSIZING | ACTIVATE,
|
||
|
NULL,
|
||
|
NULL,
|
||
|
"Close Me",
|
||
|
NULL,
|
||
|
NULL,
|
||
|
80,24,
|
||
|
-1 , -1 ,
|
||
|
WBENCHSCREEN
|
||
|
};
|
||
|
|
||
|
void main()
|
||
|
|
||
|
/* Open intuition.library */
|
||
|
if ((IntuitionBase=(struct IntuitionBase *)
|
||
|
OpenLibrary("intuition.library",0))==NULL)
|
||
|
exit(0);
|
||
|
|
||
|
/* Open window */
|
||
|
if ((MyWindow=(struct Window *)OpenWindow(&MyNewWindow))==NULL) (
|
||
|
CloseLibrary(IntuitionBase);
|
||
|
exit(0);
|
||
|
|
||
|
/* Wait for user to click close box */
|
||
|
Wait(l<<MyWindow->UserPort->mp SigBit);
|
||
|
|
||
|
CloseWindow(MyWindow); /* Close window */
|
||
|
CloseLibrary(IntuitionBase); /* Close intuition.library */
|
||
|
-------------------------
|
||
|
Program 1-3. Machine Language Window
|
||
|
|
||
|
*Open a window and wait for user to close it
|
||
|
|
||
|
*Include Intuition stuff
|
||
|
INCLUDE "intuition/intuition.i"
|
||
|
|
||
|
*Address that holds pointer to ExecBase (this is ALWAYS 4)
|
||
|
ExecBase equ 4
|
||
|
|
||
|
* Hard-coded function offsets-no need to link with amiga.lib with these!
|
||
|
OpenLibrary equ -552
|
||
|
CloseLibrary equ -414
|
||
|
OpenWindow equ -204
|
||
|
CloseWindow equ -72
|
||
|
|
||
|
|
||
|
Wait equ -318
|
||
|
|
||
|
SECTION code,CODE
|
||
|
|
||
|
*Open intuition.library
|
||
|
movea.l #IntuitionName,a1 ;Library name in a1
|
||
|
move.l #0,d0 ;Version number in d0
|
||
|
movea.l ExecBase,a6 ;Pointer to ExecBase in a6
|
||
|
jsr OpenLibrary(a6) ;Call OpenLibrary( )
|
||
|
move.l d0, IntuitionBase ;Save intuition.library base
|
||
|
beq.s Abort2 ;Exit program if OpenLibrary fails
|
||
|
|
||
|
*Open a window
|
||
|
movea.l #MyNewWindow,a0 ;Pointer to NewWindow in a0
|
||
|
move.l IntuitionBase,a6 ;Pointer to IntuitionBase in a6
|
||
|
jsr OpenWindow(a6) ;Call OpenWindow( )
|
||
|
move.l d0,MyWindow ;Save pointer to newly opened window
|
||
|
beq.s Abort1 ;Exit program in OpenWindow fails
|
||
|
|
||
|
*Wait for user to click close box
|
||
|
movea.l MyWindow,a0 ;Pointer to window's
|
||
|
movea.l wd_UserPort(a0),a0 ;user port in a0
|
||
|
move.b MP SIGBIT(a0),d1 ;Window's signal bits
|
||
|
moveq.l #l,d0 ;Convert bit number to mask
|
||
|
lsl.l d1,d0 ;and place the result in d0
|
||
|
movea.l ExecBase,a6 ;Pointer to ExecBase in a6
|
||
|
jsr Wait(a6) ;Call Wait( )
|
||
|
|
||
|
*Close the window
|
||
|
movea.l MyWindow,a0 ;Pointer to window in a0
|
||
|
move.l IntuitionBase,a6 ;Pointer to IntuitionBase in a6
|
||
|
jsr CloseWindow(a6) ;Call CloseWindow( )
|
||
|
|
||
|
*Close intuition.library
|
||
|
Abort1:
|
||
|
move.l IntuitionBase,a1 ;Pointer to IntuitionBase in a1
|
||
|
movea.l ExecBase,a6 ;Pointer to ExecBase in a6
|
||
|
jsr CloseLibrary(a6) ;Call CloseLibrary( )
|
||
|
|
||
|
*Exit the program
|
||
|
Abort2:
|
||
|
clr.l d0 ;Set return code
|
||
|
rts ;Drop out of program
|
||
|
|
||
|
SECTION data,DATA
|
||
|
|
||
|
*NewWindow structure
|
||
|
MyNewWindow:
|
||
|
dc.w 0,12
|
||
|
dc.w 200,100
|
||
|
dc.b -1,-1
|
||
|
dc.l CLOSEWINDOW
|
||
|
dc.l WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|WINDOWSIZING|ACTIVATE
|
||
|
dc.l 0
|
||
|
dc.l 0
|
||
|
dc.l WindowTitle
|
||
|
dc.l 0
|
||
|
dc.l 0
|
||
|
dc.w 80,24
|
||
|
dc.w -1,-1
|
||
|
dc.w WBENCHSCREEN
|
||
|
|
||
|
|
||
|
IntuitionName:
|
||
|
dc.b 'intuition.library',0 ;Library name
|
||
|
WindowTitle:
|
||
|
dc.b 'Close Me',0 ;Text to appear in window's drag bar
|
||
|
|
||
|
SECTION mem,BSS
|
||
|
|
||
|
_IntuitionBase:
|
||
|
ds.l l ;Place to store IntuitionBase
|
||
|
MyWindow
|
||
|
ds.l l ;Place to store Window pointer
|
||
|
|
||
|
END
|
||
|
-------------------------
|
||
|
Program 1-4. Modula-2 Window
|
||
|
|
||
|
MODULE SharedLibExample;
|
||
|
(* Modula-2 code that opens a window and waits for you to close it *)
|
||
|
|
||
|
FROM Intuition IMPORT NewWindow, WindowFlagSet, WindowFlags, IDCMPFlags,
|
||
|
IDCMPFlagSet, ScreenFlagSet, WBenchScreen, WindowPtr, OpenWindow,
|
||
|
CloseWindow;
|
||
|
FROM SYSTEM IMPORT BYTE, ADR, ADDRESS;
|
||
|
FROM Ports IMPORT WaitPort;
|
||
|
|
||
|
VAR
|
||
|
newWindow: NewWindow;
|
||
|
myWindowPtr: WindowPtr;
|
||
|
dummy: ADDRESS;
|
||
|
|
||
|
BEGIN
|
||
|
|
||
|
(* Setup NewWindow structure *)
|
||
|
|
||
|
WITH newWindow DO
|
||
|
LeftEdge := 0; TopEdge := 12;
|
||
|
Width := 200; Height := 100;
|
||
|
DetailPen := BYTE(0); BlockPen := BYTE(l);
|
||
|
Title := ADR("Close Me");
|
||
|
Flags := WindowFlagSet{Activate,WindowClose,WindowDepth,
|
||
|
WindowDrag,WindowSizing};
|
||
|
IDCMPFlags := IDCMPFlagSet{CloseWindowFlag};
|
||
|
Type := WBenchScreen;
|
||
|
FirstGadget := NIL;
|
||
|
CheckMark := NIL;
|
||
|
Screen := NIL;
|
||
|
BitMap := NIL;
|
||
|
MinWidth := 80; MinHeight := 24;
|
||
|
MaxWidth := -1; MaxHeight
|
||
|
END;
|
||
|
|
||
|
(* Try to open window *)
|
||
|
|
||
|
myWindowPtr := OpenWindow(ADR(newWindow));
|
||
|
|
||
|
IF myWindowPtr # NIL THEN
|
||
|
dummy := WaitPort(myWindowPtr^.UserPort);
|
||
|
CloseWindow(myWindowPtr);
|
||
|
END;
|
||
|
END SharedLibExample.
|
||
|
-------------------------
|
||
|
Machine Language and Function Offsets
|
||
|
In machine language, library functions are called with a JSR using address indi-
|
||
|
rect with displacement addressing mode, which generates the destination ad-
|
||
|
dress from the contents of register a6. For example, our previous machine
|
||
|
language window program contains the following instructions:
|
||
|
|
||
|
OpenWindow equ -552
|
||
|
|
||
|
move.l _IntuitionBase,a6 ;Pointer to IntuitionBase in a6
|
||
|
jsr OpenWindow(a6) ;Call OpenWindow( )
|
||
|
|
||
|
The MOVE instruction puts the base address of the Intuition library in reg-
|
||
|
ister a6. The label OpenWindow contains the offset of OpenWindow( ) function
|
||
|
from the base address of Intuition. The JSR instruction combines the base ad-
|
||
|
dress with the offset to produce an actual destination address. By putting the
|
||
|
base address in a6, we also tell OpenWindow( ) where its current library base is.
|
||
|
To tell you the truth, our machine language program is breaking a few
|
||
|
rules because it hard codes the library offsets in the beginning of the program
|
||
|
using EQU directives. Purists obtain their function offsets using XREF state-
|
||
|
ments. If we were to program this "by the book," the above lines would read
|
||
|
xref _LVOOpenLibrary
|
||
|
|
||
|
move.l _IntuitionBase,a6 ;Pointer to IntuitionBase in a6
|
||
|
jsr _LVOOpenWindow(a6) ;Call OpenWindow( )
|
||
|
|
||
|
so the OpenWindow( ) offset would be obtained at link time. All of the pro-
|
||
|
gram's library calls could (and some would say, should) be coded this way.
|
||
|
Where does the _LVOOpenLibrary offset come from? Besides containing
|
||
|
linked library functions, amiga.lib also contains the function offsets for every
|
||
|
Amiga library. That's why so many machine language programs must be linked
|
||
|
with amiga.lib. If you use the XREF method, you must precede all function
|
||
|
names with an _LVO in order for amiga.lib to recognize them. If you hard-
|
||
|
code your offsets as we did in Program 1-3, however, you can call the func-
|
||
|
tions whatever you like-you won't even have to take the time to link with
|
||
|
amiga.lib (unless, of course, you used one of amiga.lib's linked library
|
||
|
functions).
|
||
|
-------------------------
|
||
|
Final Notes
|
||
|
There are a few macros included in the following function list. Accessing a
|
||
|
macro is much like accessing a library function. In Modula-2, all supported
|
||
|
macros are defined as standard procedures and placed into modules. With C
|
||
|
and machine language, they are actual compiler/assembler macros that must be
|
||
|
included in your source code. The include file, header file, and Modula-2 mod-
|
||
|
ule that contains the macro definitions are included in the macro's table entry.
|
||
|
A few last minute points should be made regarding the terminology used
|
||
|
in the following list of functions: By convention, a NULL value is equivalent to
|
||
|
0. The Modula-2 equivalent of NULL is NIL, which is defined as ADDRESS(0).
|
||
|
In C, TRUE represents a nonzero value (usually equal to 1) and FALSE equals
|
||
|
0. In Modula-2, TRUE and FALSE are elements of the type BOOLEAN. If you
|
||
|
see an _fptr in a C usage description, it specifies a pointer to a function.
|
||
|
The following table is mainly for reference purposes-it's a place you can
|
||
|
look up information about any Amiga library function, quickly and easily. For
|
||
|
more details about using a specific function, we suggest you refer to the auto-
|
||
|
docs section of the Commodore-Amiga ROM Kernel Reference Manual.
|
||
|
|
||
|
-------------------------Functions Start Here-------------------------
|
||
|
AbortIO
|
||
|
Description: attempts to abort an I/O request already in progress
|
||
|
Library: exec.library
|
||
|
Offset: -$01E0 (-480)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: error = AbortIO(ioRequest)
|
||
|
C: long AbortIO(struct IORequest *)
|
||
|
Machine Language: d0 = AbortIO(a1)
|
||
|
Modula-2: AbortIO(ioRequest: ADDRESS): LONGINT
|
||
|
Arguments: ioRequest = IORequest block containing I/O request to abort
|
||
|
Result: error = 0 if successful; nonzero error value if unsuccessful
|
||
|
-------------------------
|
||
|
ActivateGadget
|
||
|
Description: activates a string gadget so the user does not have to click in the
|
||
|
gadget box to bring up a cursor
|
||
|
Library: intuition.library
|
||
|
Offset: -$01CE (-462)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = ActivateGadget(gadget, window, requester)
|
||
|
C: long ActivateGadget(struct Gadget *, struct Window *, struct
|
||
|
Requester *)
|
||
|
Machine Language: d0 = ActivateGadget(a0, a1, a2)
|
||
|
Modula-2: ActivateGadget(gadget: GadgetPtr; window: WindowPtr; request-
|
||
|
er: RequesterPtr): BOOLEAN
|
||
|
Arguments: gadget = string gadget to activate
|
||
|
window = window containing gadget
|
||
|
requester = requester to receive gadgets; NULL if gadgets are not
|
||
|
to be part of a requester
|
||
|
Result: success = TRUE if successful; FALSE if arguments are bogus
|
||
|
-------------------------
|
||
|
ActivateWindow
|
||
|
Description: activates a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$01C2 (-450)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ActivateWindow(window)
|
||
|
C: long ActivateWindow(struct Window *)
|
||
|
Machine Language: ActivateWindow(a0)
|
||
|
Modula-2: ActivateWindow(window: WindowPtr)
|
||
|
Arguments: window = window to activate
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddAnimOb
|
||
|
Description: adds an AnimOb to the linked list of AnimObs
|
||
|
Library: graphics.library
|
||
|
Modula-2 Module: Gels
|
||
|
Offset: -$009C (-156)
|
||
|
Syntax: AddAnimOb(anOb, anKey, rastPort)
|
||
|
C: void AddAnimOb(struct AnimOb *, long, struct RastPort *)
|
||
|
Machine Language: AddAnimOb(a0, a1, a2)
|
||
|
Modula-2: AddAnimOb(anOb: AnimObPtr; anKey: ADDRESS; rastPort:
|
||
|
RastPortPtr)
|
||
|
Arguments: anOb = AnimOb structure to be added to list
|
||
|
anKey = address of pointer to the first AnimOb in the list
|
||
|
(anKey=NULL if none in list so far)
|
||
|
rastPort = RastPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddBob
|
||
|
Description: adds a Bob to GEL list
|
||
|
Library: graphics.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: AddBob(bob, rastPort)
|
||
|
C: void AddBob(struct Bob *, struct RastPort *)
|
||
|
Machine Language: AddBob(a0, a1)
|
||
|
Modula-2: AddBob(bob: BobPtr; VAR rastPort: RastPortPtr)
|
||
|
Arguments: bob = Bob structure to be added to GEL list
|
||
|
rastPort = RastPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddConfigDev
|
||
|
Description: adds a new ConfigDev structure to the system's list of configura-
|
||
|
tion devices
|
||
|
Library: expansion.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: ConfigVars
|
||
|
Syntax: AddConfigDev(configDev)
|
||
|
C: void AddConfigDev(long)
|
||
|
Machine Language: AddConfigDev(a0)
|
||
|
Modula-2: AddConfigDev(configDev: ConfigDevPtr)
|
||
|
Arguments: configDef = a valid ConfigDev structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddDevice
|
||
|
Description: adds a device to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$01B0 (-432)
|
||
|
Modula-2 Module: Devices
|
||
|
Syntax: AddDevice(device)
|
||
|
C: void AddDevice(struct Device *)
|
||
|
Machine Language: AddDevice(a1)
|
||
|
Modula-2: AddDevice(device: DevicePtr)
|
||
|
Arguments: device = initialized device node
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddDosNode
|
||
|
Description: mounts a disk
|
||
|
Library: expansion.library
|
||
|
Offset: -$0096 (-150)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: AddDosNode(bootPri, flags, deviceNode)
|
||
|
C: void AddDosNode(long, long, struct dosNode *)
|
||
|
Machine Language: AddDosNode(d0, d1, a0)
|
||
|
Modula-2: AddDosNode(bootPri: INTEGER; flags: BITSET; deviceNode:
|
||
|
DeviceNodePtr): BOOLEAN
|
||
|
Arguments: bootPri = boot priority of disk-+5 for floppy disk, 0 for hard
|
||
|
disk,-5 for a network disk,-128 non-bootable device
|
||
|
flags = ADN_STARTPROC (1) to start handler process
|
||
|
immediately
|
||
|
dosNode = initialized device node, as returned by
|
||
|
MakeDosNode( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddFont
|
||
|
Description: adds a font to the system
|
||
|
Library: graphics.library
|
||
|
Offset: -$01E0 (-480)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: AddFont(textFont)
|
||
|
C: void AddFont(struct TextFont *)
|
||
|
Machine Language: AddFont(a1)
|
||
|
Modula-2: AddFont(textFont: TextFontPtr)
|
||
|
Arguments: textFont = TextFont structure (in public RAM) to add
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddFreeList
|
||
|
Description: adds memory to the free list
|
||
|
Library: icon.library
|
||
|
Offset: -$0048 (72)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: status = AddFreeList(free, mem, len)
|
||
|
C: long AddFreeList(struct FreeList *, char *, long)
|
||
|
Machine Language: d0 = AddFreeList(a0, a1, a2)
|
||
|
Modula-2: AddFreeList(free: FreeListPtr; mem: ADDRESS; len:
|
||
|
LONGCARD): BOOLEAN
|
||
|
Arguments: free = FreeList structure
|
||
|
mem = memory to record
|
||
|
len = length of the memory to record
|
||
|
Result: status = nonzero value if the call succeeded
|
||
|
-------------------------
|
||
|
AddGadget
|
||
|
Description: adds gadget to window
|
||
|
Library: intuition.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: position = AddGadget(window, gadget, position)
|
||
|
C: long AddGadget(struct Window *, struct Gadget *, long)
|
||
|
Machine Language: d0 = AddGadget(a0, a1, d0)
|
||
|
Modula-2: AddGadget(window: WindowPtr; gadget: GadgetPtr; position:
|
||
|
INTEGER): INTEGER
|
||
|
Arguments: window = window to contain gadget
|
||
|
gadget = gadget to add
|
||
|
position = position in gadget list for new gadget; -1 for end of
|
||
|
list
|
||
|
Result: position = position where gadget is actually added
|
||
|
-------------------------
|
||
|
AddGList
|
||
|
Description: adds or inserts a gadget list to an existing gadget list
|
||
|
Library: intuition.library
|
||
|
Offset: -$01B6 (-438)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: position = AddGList(window, gadget, position, numGadgets,
|
||
|
requester)
|
||
|
C: long AddGList(struct Window *, Gadget *, long, long, struct
|
||
|
Requester *)
|
||
|
Machine Language: d0 = AddGList(a0, a1, d0, d1, a2)
|
||
|
Modula-2: AddGList(window: WindowPtr; gadget: GadgetPtr; position:
|
||
|
INTEGER; numGadgets: INTEGER; requester: RequesterPtr):
|
||
|
CARDINAL
|
||
|
|
||
|
Arguments: window = window to receive gadgets
|
||
|
gadget = first gadget in new gadget list
|
||
|
position = position in existing gadget list where new gadget list
|
||
|
should be added
|
||
|
numGadgets = number of gadgets to add
|
||
|
requester = requester to receive gadgets; NULL if gadgets are not
|
||
|
to be part of a requester
|
||
|
Result: position = position where gadget list is actually added
|
||
|
-------------------------
|
||
|
AddHead
|
||
|
Description: inserts a node at the head of a list
|
||
|
Library: exec.library
|
||
|
Offset: -$00F0 (-240)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: AddHead(list, node)
|
||
|
C: void AddHead(struct List *, struct Node *)
|
||
|
Machine Language: AddHead(a0, a1)
|
||
|
Modula-2: AddHead(list: ListPtr; VAR node: NodePtr)
|
||
|
Arguments: list = list header
|
||
|
node = node to insert
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddIntServer
|
||
|
Description: adds an interrupt server to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$00A8 (-168)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: AddlntServer(intNum, interrupt)
|
||
|
C: void AddIntServer(long, struct Interrupt *)
|
||
|
Machine Language: AddIntServer(d0, a1)
|
||
|
Modula-2: AddIntServer(intNum: CARDINAL; interrupt: InterruptPtr)
|
||
|
Arguments: intNum = portia interrupt bit (0-4)
|
||
|
interrupt = interrupt server node
|
||
|
Result: none
|
||
|
------------------------
|
||
|
AddLibrary
|
||
|
Description: adds a library to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$018C (-396)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: AddLibrary(library)
|
||
|
C: void AddLibrary(struct Library *)
|
||
|
Machine Language: AddLibrary(a1)
|
||
|
Modula-2: AddLibrary(library:LibraryPtr)
|
||
|
Arguments: library = initialized Library structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddMemList
|
||
|
Description: adds memory to the system's pool of free memory
|
||
|
Library: exec.library
|
||
|
Offset: -$026A (-618)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: AddMemList(size, attributes, pri, base, name)
|
||
|
C: void AddMemList(long, long, long, char *, char *)
|
||
|
Machine Language: AddMemList(d0, d1, d2, a0, a1)
|
||
|
Modula-2: AddMemList(size: LONGCARD; attributes: MemReqSet; pri:
|
||
|
INTEGER; base: ADDRESS; name: STRPTR)
|
||
|
Arguments: size = size of memory block in bytes
|
||
|
attributes = type of memory-MEMF_PUBLIC, MEMF_CHIP,
|
||
|
MEMF_FAST, MEMB_CLEAR
|
||
|
pri = priority of memory-CHIP memory has a priority of -10;
|
||
|
16-bit expansion memory has a priority of 0
|
||
|
base = address of the first location in the memory block
|
||
|
name = name to be used in memory header; NULL for no name
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddPort
|
||
|
Description: adds a message port to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$0162 (-354)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: AddPort(port)
|
||
|
C: void AddPort(struct MsgPort *)
|
||
|
Machine Language: AddPort(a1)
|
||
|
Modula-2: AddPort(port: MsgPortPtr)
|
||
|
Arguments: port = message port to add
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddResouree
|
||
|
Description: adds a resource to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$01E6 (-486)
|
||
|
Modula-2 Module: Resources
|
||
|
Syntax: AddResource(resource)
|
||
|
C: void AddResource(struct Resource *)
|
||
|
Machine Language: AddResource(a1)
|
||
|
Modula-2: AddResource(resource: ResourcePtr)
|
||
|
Arguments: resource = resource node
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddSemaphore
|
||
|
Description: attaches a signal semaphore to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$0258 (-600)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: AddSemaphore(signalSemaphore)
|
||
|
C: void AddSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: AddSemaphore(a1)
|
||
|
Modula-2: AddSemaphore(signalSemaphore: SignalSemaphorePtr)
|
||
|
Arguments: signalSemaphore = initialized SignalSemaphore structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddTail
|
||
|
Description: appends a node to the tail of a list
|
||
|
Library: exec.library
|
||
|
Offset: -$00F6 (-246)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: AddTail(list, node)
|
||
|
C: void AddTail(struct List *, struct Node *)
|
||
|
Machine Language: AddTail(a0, a1)
|
||
|
Modula-2: AddTail(list: ListPtr; node: NodePtr)
|
||
|
Arguments: list = list header
|
||
|
node = node to insert
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddTask
|
||
|
Description: adds a task to the system
|
||
|
Library: exec.library
|
||
|
Offset: -$011A (-282)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: AddTask(task, initialPC, finalPC)
|
||
|
C: void AddTask(struct Task *, char *, char *)
|
||
|
Machine Language: AddTask(a1, a2, a3)
|
||
|
Modula-2: AddTask(task: TaskPtr; initialPC, finalPC:ADDRESS)
|
||
|
Arguments: task = task control block
|
||
|
initialPC = initial entry point
|
||
|
finalPC = address of entry point of finalization code
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddTOF
|
||
|
Description: adds a task to the TopOfFrame (vertical-blanking interval) inter-
|
||
|
rupt server chain
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: AddTOF(i, p, a)
|
||
|
C: void AddTOF(struct Isrvstr *, APTR, APTR)
|
||
|
Machine Language: pea a
|
||
|
pea p
|
||
|
pea i
|
||
|
jsr _AddTOF
|
||
|
add.l #12,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: i = Isrvstr structure
|
||
|
p = entry point of routine to call at every vertical blank
|
||
|
a = array of long words that will receive routine's arguments
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AddVSprite
|
||
|
Description: adds VSprite to GEL list
|
||
|
Library: graphics.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: AddVSprite(vSprite, rastPort)
|
||
|
C: void AddVSprite(struct VSprite *, struct RastPort *)
|
||
|
Machine Language: AddVSprite(a0, a1)
|
||
|
Modula-2: AddVSprite(vSprite: VSpritePtr; rastPort: RastPortPtr)
|
||
|
Arguments: vSprite = initialized VSprite structure
|
||
|
rastPort = RastPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
afp
|
||
|
Description: converts an ASCII string into a fast floating point number
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum = afp(string)
|
||
|
C: float afp(char *)
|
||
|
Machine Language: pea string
|
||
|
jsr _afp ;fnum returned in d0/d1
|
||
|
addq.l #4,sp
|
||
|
Modula-2: not available; use ConvStrToReal in RealConversions module
|
||
|
Arguments: string = string to convert
|
||
|
Result: fnum = floating point equivalent of string arguments
|
||
|
-------------------------
|
||
|
Alert
|
||
|
Description: alerts the user of a serious error
|
||
|
Library: exec.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: Alerts
|
||
|
Syntax: Alert(alertNum, flags)
|
||
|
C: void Alert(long, char *)
|
||
|
Machine Language: Alert(d7, a5)
|
||
|
Modula-2: Alert(alertNum: LONGCARD; flags: LONGCARD)
|
||
|
Arguments: alertNum = alert number
|
||
|
flags = second part of Guru Meditation number (usually the ad-
|
||
|
dress of the offending task)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AllocAbs
|
||
|
Description: allocates a block of memory from a specified location
|
||
|
Library: exec.library
|
||
|
Offset: -$00CC (-204)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: memoryBlock = AllocAbs(byteSize, location)
|
||
|
C: void *AllocAbs(long, void *)
|
||
|
Machine Language: d0 = AllocAbs(d0, a1)
|
||
|
Modula-2: AllocAbs(byteSize: LONGCARD; location: ADDRESS): ADDRESS
|
||
|
Arguments: byteSize = size of desired block in bytes
|
||
|
location = address where the memory must be
|
||
|
Result: memoryBlock = pointer to allocated block; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
Allocate
|
||
|
Description: allocates a block of memory
|
||
|
Library: exec.library
|
||
|
Offset: -$00BA (-186)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: memoryBlock = Allocate(freeList, byteSize)
|
||
|
C: void *Allocate(struct MemHeader *, long)
|
||
|
Machine Language: d0 = Allocate(a0, d0)
|
||
|
Modula-2: Allocate(freeList: MemHeaderPtr; byteSize: LONGCARD):
|
||
|
ADDRESS
|
||
|
Arguments: freeList = memory list header
|
||
|
byteSize = size of desired block in bytes
|
||
|
Result: memoryBlock = pointer to allocated block; NULL if unsuccessful.
|
||
|
-------------------------
|
||
|
AllocBoardMem
|
||
|
Description: allocates expansion board memory
|
||
|
Library: expansion.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: startSlot = AllocBoardMem(slotSpec)
|
||
|
C: long AllocBoardMem(long)
|
||
|
Machine Language: d0 = AllocBoardMem(d0)
|
||
|
Modula-2: AllocBoardMem(slotSpec: INTEGER): INTEGER
|
||
|
Arguments: slotSpec = number of slots to allocate
|
||
|
Result: startSlot = slot allocated; -1 if unsuccessful
|
||
|
------------------------
|
||
|
AllocCList
|
||
|
Description: allocates and initializes a clist
|
||
|
Library: clist.library
|
||
|
Offset: $0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: cList = AllocCList(cLPool)
|
||
|
C: long AllocCList(long)
|
||
|
Machine Language: d0 = AllocCList(a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: cLPool = initialized CListPool
|
||
|
Result: cList = longword cList descriptor; negative if unsuccessful.
|
||
|
-------------------------
|
||
|
AllocConfigDev
|
||
|
Description: allocates a ConfigDev structure
|
||
|
Library: expansion.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: ConfigVars
|
||
|
Syntax: configDev = AllocConfigDev( )
|
||
|
C: struct ConfigDev *AllocConfigDev(void)
|
||
|
Machine Language: d0 = AllocConfigDev( )
|
||
|
Modula-2: AllocConfigDev( ): ConfigDevPtr
|
||
|
Arguments: none
|
||
|
Result: configDef = a valid ConfigDev structure; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
AllocEntry
|
||
|
Description: allocates many regions of memory
|
||
|
Library: exec.library
|
||
|
Offset: -$00DE (-222)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: memlist = AllocEntry(memlist)
|
||
|
C: struct MemList *AllocEntry(stuct MemList *)
|
||
|
Machine Language: d0 = AllocEntry(a0)
|
||
|
Modula-2: AllocEntry(memList: MemListPtr): MemListPtr
|
||
|
Arguments: memList = initialized cList pool
|
||
|
Result: memList = different memList filled with allocated memory
|
||
|
------------------------
|
||
|
AllocExpansionMem
|
||
|
Description: allocates expansion memory
|
||
|
Library: expansion.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: startSlot = AllocExpansionMem(numSlots, slotOffset)
|
||
|
C: CPTR AllocExpansionMem(long, long)
|
||
|
Machine Language: d0 = AllocExpansionMem(d0, d1)
|
||
|
Modula-2: AllocExpansionMem(numSlots, slot Offset: INTEGER): INTEGER
|
||
|
Arguments: numSlots = number slots to allocate
|
||
|
slotOffset = boundary offset
|
||
|
Result: startSlot = slot allocated; -1 if unsuccessful
|
||
|
-------------------------
|
||
|
AllocMem
|
||
|
Description: allocates many regions of memory
|
||
|
Library: exec.library
|
||
|
Offset: -$00C6 (-198)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: memoryBlock = AllocMem(byteSize, requirements)
|
||
|
C: void *AllocMem(long, long)
|
||
|
Machine Language: d0 = AllocMem(d0, d1)
|
||
|
Modula-2: AllocMem(byteSize: LONGCARD; requirements: MemReqSet):
|
||
|
ADDRESS
|
||
|
Arguments: byteSize = size of desired block in bytes
|
||
|
requirements = type of memory-MEMF_PUBLIC,
|
||
|
MEMF_CHIP, MEMF_FAST, MEMB_CLEAR
|
||
|
Result: memoryBlock = pointer to allocated block
|
||
|
-------------------------
|
||
|
AllocRaster
|
||
|
Description: allocates space for a bit plane
|
||
|
Library: graphics.library
|
||
|
Offset: -$01EC (-492)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: raster = AllocRaster(width, height)
|
||
|
C: PLANEPTR AllocRaster(long, long)
|
||
|
Machine Language: d0 = AllocRaster(d0, d1)
|
||
|
Modula-2: AllocRaster(width, height: CARDINAL): PlanePtr
|
||
|
Arguments: width = width of bitplane in pixels
|
||
|
height = height of bitplane in pixels
|
||
|
Result: raster = pointer to allocated memory; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
AllocRemember
|
||
|
Description: calls AllocMem and creates a link node
|
||
|
Library: intuition.library
|
||
|
Offset: -$018C (-396)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: memoryBlock = AllocRemember(rememberKey, size, flags)
|
||
|
C: char *AllocRemember(struct Remember *, long, long)
|
||
|
Machine Language: d0 = AllocRemember(a0, d0, d1)
|
||
|
Modula-2: AllocRemember(VAR rememberKey: RememberPrt; size:
|
||
|
LONGCARD; flags: MemReqSet): ADDRESS
|
||
|
Arguments: rememberKey = address of pointer to Remember structure
|
||
|
size = size of desired block in bytes
|
||
|
flags = type of memory-MEMF_PUBLIC, MEMF_CHIP,
|
||
|
MEMF_FAST, MEMB_CLEAR
|
||
|
Result: memoryBlock = pointer to allocated block
|
||
|
-------------------------
|
||
|
AllocSignal
|
||
|
Description: allocates a signal bit
|
||
|
Library: exec.library
|
||
|
Offset: -$014A (-330)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: signalNum = AllocSignal(signalNum)
|
||
|
C: long AllocSignal(long)
|
||
|
Machine Language: d0 = AllocSignal(d0)
|
||
|
Modula-2: AllocSignal(signalNum: SIGNAL): SIGNAL
|
||
|
Arguments: signalNum = desired signal number (0-31); -1 for no preference
|
||
|
Result: signalNum = signal number allocated; -1 if no signal is
|
||
|
available
|
||
|
-------------------------
|
||
|
AllocTrap
|
||
|
Description: allocates a processor trap vector
|
||
|
Library: exec.library
|
||
|
Offset: -$0156 (-342)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: trapNum = AllocTrap(trapNum)
|
||
|
C: long AllocTrap(long)
|
||
|
Machine Language: d0 = AllocTrap(d0)
|
||
|
Modula-2: AllocTrap(trapNum: TRAP): TRAP
|
||
|
Arguments: trapNum = desired trap number (0-15); -1 for no preference
|
||
|
Result: trapNum = trap number allocated; -1 if no trap is available
|
||
|
-------------------------
|
||
|
AllocWBObject
|
||
|
Description: allocates a Workbench object
|
||
|
Library: icon.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: object = AllocWBObject( )
|
||
|
C: struct WBObject AllocWBObject(void)
|
||
|
Machine Language: d0 = AllocWBObject( )
|
||
|
Modula-2: not available
|
||
|
Arguments: none
|
||
|
Result: object = the WBObject; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
AndRectRegion
|
||
|
Description: performs a two-dimensional AND operation of a rectangle with a
|
||
|
region, leaving the result in the region
|
||
|
Library: graphics.library
|
||
|
Offset: -$01F8 (-504)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: AndRectRegion(region, rectangle)
|
||
|
C: void AndRectRegion(struct Region *, struct Rectangle *)
|
||
|
Machine Language: AndRectRegion(a0, a1)
|
||
|
Modula-2: AndRectRegion(region: RegionPtr; rectangle: RectanglePtr)
|
||
|
Arguments: region = Region structure
|
||
|
rectangle = Rectangle structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AndRegionRegion
|
||
|
Description: performs a two-dimensional AND operation of one region with a
|
||
|
second region, leaving the result in second region
|
||
|
Library: graphics.library
|
||
|
Offset: -$0270 (-624)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: success = AndRegionRegion(region1, region2)
|
||
|
C: long AndRegionRegion(struct Region *, struct Region *)
|
||
|
Machine Language: d0 = AndRegionRegion(a0, a1)
|
||
|
Modula-2: AndRegionRegion(region1, region2: RegionPtr): BOOLEAN
|
||
|
Arguments: region1 = Region structure
|
||
|
region2 = Region structure
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
Animate
|
||
|
Description: processes every AnimOb in the current animation list
|
||
|
Library: graphics.library
|
||
|
Offset: -$00A2 (-162)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: Animate(anKey, rastPort)
|
||
|
C: void Animate(long, struct RastPort *)
|
||
|
Machine Language: Animate(a0, a1)
|
||
|
Modula-2: Animate(ankey: ADDRESS; rastPort: RastPortPtr)
|
||
|
Arguments: anKey = address of variable that points to the head AnimOb
|
||
|
rastPort = RastPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
AreaCircle (macro)
|
||
|
Description: adds a circle to the list of points used to fill an area
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: error = AreaCircle(rastPort, cx, cy, radius)
|
||
|
C: long AreaCircle(struct RastPort *, long, long, long)
|
||
|
Machine Language: not available, use AreaEllipse
|
||
|
Modula-2: AreaCircle(rp: RastPortPtr; cx, cy, radius: INTEGER): INTEGER
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
cx = horizontal coordinate of circle's center
|
||
|
cy = vertical coordinate of circle's center
|
||
|
radius = circle's radius
|
||
|
Result: error = 0 if successful; -1 if no room left in list of points
|
||
|
-------------------------
|
||
|
AreaDraw
|
||
|
Description: adds a point to the list of points used to fill an area
|
||
|
Library: graphics.library
|
||
|
Offset: -$0102 (-258)
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: error = AreaDraw(rastPort, x, y)
|
||
|
C: long AreaDraw(struct RastPort *, long, long)
|
||
|
Machine Language: d0 = AreaDraw(a1, d0, d1)
|
||
|
Modula-2: AreaDraw(rastPort: RastPortPtr; x, y: INTEGER): INTEGER
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
x = horizontal coordinate of point
|
||
|
y = vertical coordinate of point
|
||
|
Result: error = 0 if successful; -1 if no room left in list of points
|
||
|
-------------------------
|
||
|
AreaEllipse
|
||
|
Description: adds an ellipse to the list of points used to fill an area
|
||
|
Library: graphics.library
|
||
|
Offset: -$00BA (-186)
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: error = AreaEllipse(rastPort, cx, cy, a, b)
|
||
|
C: long AreaEllipse(struct RastPort *, long, long, long, long)
|
||
|
Machine Language: d0 = AreaEllipse(a1, d0, d1, d2, d3)
|
||
|
Modula-2: AreaEllipse(rastPort: RastPortPtr; cx, cy, a, b: INTEGER):
|
||
|
INTEGER
|
||
|
-------------------------
|
||
|
AttemptLockLayerRom
|
||
|
Description: attempts to lock a Layer structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$028E (-582)
|
||
|
Modula-2 Module: Clip
|
||
|
Syntax: success = AttemptLockLayerRom(layer)
|
||
|
C: long AttemptLockLayerRom(struct Layer *)
|
||
|
Machine Language: d0 = AttemptLockLayerRom(a5)
|
||
|
Modula-2: AttemptLockLayerRom(layer: LayerPtr): BOOLEAN
|
||
|
Arguments: layer = Layer structure to lock
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
AttemptSemaphore
|
||
|
Description: attempts to obtain access to a SignalSemaphore structure
|
||
|
Library: exec.library
|
||
|
Offset: -$0240 (-576)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: success = AttemptSemaphore(signalSemaphore)
|
||
|
C: long AttemptSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: d0 = AttemptSemaphore(a0)
|
||
|
Modula-2: AttemptSemaphore(signalSemaphore: SignalSemaphorePtr):
|
||
|
BOOLEAN
|
||
|
Arguments: signalSemaphore = initialized SignalSemaphore structure
|
||
|
Result: success = TRUE if successful; FALSE if another task is using
|
||
|
specified SignalSemaphore structure
|
||
|
-------------------------
|
||
|
AutoRequest
|
||
|
Description: automatically creates and gets a response from a requester
|
||
|
Library: intuition.library
|
||
|
Offset: -$015C (-348)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: response = AutoRequest(window, bodyText, positiveText,
|
||
|
negativeText, positiveFlags, negativeFlags, width, height)
|
||
|
C: long AutoRequest(struct Window *, struct IntuiText *, struct
|
||
|
IntuiText *, struct IntuiText *, long, long, long)
|
||
|
Machine Language: d0 = AutoRequest(a0, a1, a2, a3, d0, d1, d2, d3)
|
||
|
Modula-2: AutoRequest(window: WindowPtr; bodyText, positiveText,
|
||
|
negativeText: IntuiTextPtr; positiveFlags, negativeFlags:
|
||
|
IDCMPFlagsSet; width, height: INTEGER): BOOLEAN
|
||
|
Arguments: window = Window structure
|
||
|
bodyText = IntuiText structure
|
||
|
positiveText = IntuiText structure
|
||
|
negativeText = IntuiText structure
|
||
|
positiveFlags = flags for the IDCMP
|
||
|
negativeFlags = flags for the IDCMP
|
||
|
width = width of requester
|
||
|
height = height of requester
|
||
|
Result: response = TRUE for a positive response; FALSE for a negative
|
||
|
response
|
||
|
-------------------------
|
||
|
AvailFonts
|
||
|
Description: builds an array of all available fonts on disk and/or in memory
|
||
|
Library: diskfont.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: DiskFont
|
||
|
Syntax: error = AvailFonts(buffer, bufBytes, types)
|
||
|
C: long AvailFonts(char *, long, long)
|
||
|
Machine Language: d0 = AvailFonts(a0, d0, d1)
|
||
|
Modula-2: AvailFonts(buffer: ADDRESS; bufBytes: LONGCARD; types:
|
||
|
AFTypeSet): LONGCARD
|
||
|
Arguments: buffer = memory buffer used to hold the array
|
||
|
bufBytes = size of buffer in bytes
|
||
|
types = type of fonts to search for-AFF_MEMORY and/or
|
||
|
AFF_DISK
|
||
|
Result: error = 0 if successful, otherwise, error contains the number of
|
||
|
additional bytes that must be added to the buffer size (bufBytes)
|
||
|
to contain all of the font information
|
||
|
-------------------------
|
||
|
AvailMem
|
||
|
Description: returns memory available given certain requirements
|
||
|
Library: exec.library
|
||
|
Offset: -$00D8 (-216)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: size = AvailMem(requirements)
|
||
|
C: long AvailMem(long)
|
||
|
Machine Language: d0 = AvailMem(d1)
|
||
|
Modula-2: AvailMem(requirements: MemReqSet): LONGCARD
|
||
|
Arguments: requirements = type of memory required-MEMF_PUBLIC,
|
||
|
MEMF_CHIP, MEMF_FAST, MEMB_CLEAR
|
||
|
Result: size = total free space remaining
|
||
|
------------------------- MISSING IN ORIGINAL TEXT!!!! -------------------------
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
cx = horizontal coordinate of ellipse's center
|
||
|
cy = vertical coordinate of ellipse's center
|
||
|
a = horizontal radius of ellipse (must be greater than O)
|
||
|
b = vertical radius of ellipse (must be greater than O)
|
||
|
Result: error = 0 if successful; -1 if no room left in list of points
|
||
|
-------------------------
|
||
|
AreaEnd
|
||
|
Description: fills an area using a list of vertices
|
||
|
Library: graphics.library
|
||
|
Offset: -$0108 (-264)
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: error = AreaEnd(rastPort)
|
||
|
C: long AreaEnd(struct RastPort *)
|
||
|
Machine Language: d0 = AreaEnd(a1)
|
||
|
Modula-2: AreaEnd(rastPort: RastPortPtr): INTEGER
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
Result: error = 0 if successful; -1 if unsuccessful
|
||
|
-------------------------
|
||
|
AreaMove
|
||
|
Description: closes the current polygon described by a table of vertices and de-
|
||
|
fines the starting point for a new polygon
|
||
|
Library: graphics.library
|
||
|
Offset: -$00FC (-252)
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: error = AreaMove(rastPort, x, y)
|
||
|
C: long AreaMove(struct RastPort *, long, long)
|
||
|
Machine Language: d0 = AreaMove(a1, d0, d1)
|
||
|
Modula-2: AreaMove(rastPort: RastPortPtr; x, y: INTEGER): INTEGER
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
x = horizontal coordinate of point
|
||
|
y = vertical coordinate of point
|
||
|
Result: error = 0 if successful; -1 if no room left in list of points
|
||
|
-------------------------
|
||
|
arnd
|
||
|
Description: rounds a floating point number contained in an ASCII string
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: arnd(place, exp, string)
|
||
|
C: void arnd(long, long, char *)
|
||
|
Machine Language: pea string
|
||
|
move.l #exp,-(sp)
|
||
|
move.l #place,-(sp)
|
||
|
jsr _arnd ;string contents are modified
|
||
|
add.l #12,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: place = number of desired decimal places
|
||
|
exp = exponent value of number in string argument
|
||
|
string = string containing number to round
|
||
|
Result: string argument is modified to contain rounded number
|
||
|
-------------------------
|
||
|
AskFont
|
||
|
Description: puts text attributes of the current font in the specified TextAttr
|
||
|
structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$01DA (-474)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: AskFont(rastPort, textAttr)
|
||
|
C: void AskFont(struct RastPort *, struct TextAttr *)
|
||
|
Machine Language: AskFont(a1, a0)
|
||
|
Modula-2: AskFont(rastPort: RastPortPtr; textAttr: TextAttrPtr)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
textAttr = TextAttr structure to be filled
|
||
|
Result: returns results in textAttr argument
|
||
|
-------------------------
|
||
|
AskSoftStyle
|
||
|
Description: returns the soft style bits of the current font
|
||
|
Library: graphics.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: enable = AskSoftStyle(rastPort)
|
||
|
C: long AskSoftStyle(struct RastPort *)
|
||
|
Machine Language: d0 = AskSoftStyle(a1)
|
||
|
Modula-2: AskSoftStyle(rastPort: RastPortPtr): FontStyleSet
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
Result: enable = valid style bits
|
||
|
-------------------------
|
||
|
BeginIO
|
||
|
Description: initiates an IO request like SendIO( ), but does not clear io_Flags
|
||
|
field
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: BeginIO(ioRequest)
|
||
|
C: void BeginIO(struct IORequest *)
|
||
|
Machine Language: pea ioRequest
|
||
|
jsr _BeginIO
|
||
|
addq.l #4,sp
|
||
|
Modula-2: BeginIO(ioRequest: ADDRESS)
|
||
|
Arguments: IORequest = initialized IORequest structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BeginRefresh
|
||
|
Description: sets up a window for optimized refreshing
|
||
|
Library: intuition.library
|
||
|
Offset: -$0162 (-354)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: BeginRefresh(window)
|
||
|
C: void BeginRefresh(struct Window *)
|
||
|
Machine Language: BeginRefresh(a0)
|
||
|
Modula-2: BeginRefresh(window: WindowPtr)
|
||
|
Arguments: window = window that needs updating
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BeginUpdate
|
||
|
Description: prepares to repair a damaged layer
|
||
|
Library: layers.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = BeginUpdate(layer)
|
||
|
C: long BeginUpdate(struct Layer *)
|
||
|
Machine Language: d0 = BeginUpdate(a0)
|
||
|
Modula-2: BeginUpdate(layer: LayerPtr): BOOLEAN
|
||
|
Arguments: layer = Layer to be repaired
|
||
|
Result: TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
BehindLayer
|
||
|
Description: moves a layer behind other layers
|
||
|
Library: layers.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = BehindLayer(dummy, layer)
|
||
|
C: long BehindLayer(struct Layer_Info, struct Layer *)
|
||
|
Machine Language: d0 = BehindLayer(a0, a1)
|
||
|
Modula-2: BehindLayer(layer: LayerPtr): BOOLEAN
|
||
|
Arguments: dummy = unused
|
||
|
layer = Layer to move behind other layers
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
BltBitMap
|
||
|
Description: uses the blitter chip to move (blit) a rectangular region of bits from
|
||
|
a BitMap to a BitMap
|
||
|
Library: graphics.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: planes = BltBitMap(scrBitMap, srcX, srcY, destBitMap, destX,
|
||
|
destY, sizeX, sizeY, miniterm, mask, tempA)
|
||
|
|
||
|
C: long BltBitMap(struct BitMap *, long, long, struct BitMap *, long,
|
||
|
long, long, long, long, long, char *)
|
||
|
Machine Language: d0 = BltBitMap(a0, d0, d1, a1, d2, d3, d4, d5, d6, d7, a2)
|
||
|
Modula-2: BltBitMap(scrBitMap: BitMapPtr; srcX, srcY: INTEGER;
|
||
|
destBitMap: BitMapPtr; destX, destY: INTEGER; sizeX, sizeY:
|
||
|
INTEGER; miniterm: BYTE; mask: BITSET; tempA: ADDRESS):
|
||
|
LONGCARD
|
||
|
Arguments: scrBitMap = source BitMap structure
|
||
|
srcX = horizontal coordinate of upper left corner of source
|
||
|
rectangle
|
||
|
srcY = vertical coordinate of upper left corner of source rectangle
|
||
|
destBitMap = destination BitMap structure
|
||
|
destX = horizontal coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
destY = vertical coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
sizeX = width of rectangle
|
||
|
sizeY = height of rectangle
|
||
|
miniterm = logic function to apply to rectangle
|
||
|
mask = bit planes to be affected
|
||
|
tempA = pointer to chip memory for one source line or NULL
|
||
|
Result: planes = actual number of planes involved in blit
|
||
|
-------------------------
|
||
|
BltBltMapRastPort
|
||
|
Description: moves a rectangular region from a BitMap to a RastPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$025E (-606)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: BltBitMapRastPort(srcBitMap, srcX, srcY, destRastPort, destX,
|
||
|
destY, sizeX, sizeY, miniterm)
|
||
|
C: void BltBitMapRastPort(struct BitMap *, long, long, struct RastPort
|
||
|
*, long, long, long, long, long)
|
||
|
Machine Language: BltBitMapRastPort(a0, d0, d1, a1, d2, d3, d4, d5, d6)
|
||
|
Modula-2: BltBitMapRastPort(srcBitMap: BitMapPtr; srcX, srcY: INTEGER;
|
||
|
destRastPort: RastPortPtr; destX, destY: INTEGER; sizeX, sizeY:
|
||
|
INTEGER; miniterm: BYTE)
|
||
|
Arguments: srcBitMap = source BitMap structure
|
||
|
srcX = horizontal coordinate of upper left corner of source
|
||
|
rectangle
|
||
|
srcY = vertical coordinate of upper left corner of source rectangle
|
||
|
destRastPort = destination RastPort structure
|
||
|
destX = horizontal coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
destY = vertical coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
sizeX = width of rectangle
|
||
|
sizeY = height of rectangle
|
||
|
miniterm = logic function to apply to rectangle
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BltClear
|
||
|
Description: fills a section of chip memory with zeros
|
||
|
Library: graphics.library
|
||
|
Offset: -$012C (-300)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: BltClear(memBlock, byteCount, flags)
|
||
|
C: void BltClear(char *, long, long)
|
||
|
Machine Language: BltClear(a1, d0, d1)
|
||
|
Modula-2: BltClear(memBlock: ADDRESS; byteCount: LONGCARD; flags:
|
||
|
BltClearFlagSet)
|
||
|
|
||
|
Arguments: memBlock = memory to clear (must start on a word boundary)
|
||
|
byteCount = number of bytes to clear
|
||
|
flags = set bit 0 to force function to wait until memory is cleared;
|
||
|
set bit 1 if byteCount is to be interpreted as the number of rows
|
||
|
and bytes per row to clear; clear bit 1 if byteCount is to be inter-
|
||
|
preted as an even number of bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BltMaskBitMapRastPort
|
||
|
Description: moves a rectangular region from a BitMap to a RastPort through a
|
||
|
mask
|
||
|
Library: graphics.library
|
||
|
Offset: -$027C (-636)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: BltMaskBitMapRastPort(srcBitMap, srcX, srcY, destRastPort, destX,
|
||
|
destY, sizeX, sizeY, miniterm, mask)
|
||
|
C: void BltMaskBitMapRastPort(struct BitMap *, long, long, struct
|
||
|
RastPort *, long, long, long, long, long, APTR)
|
||
|
Machine Language: BltMaskBitMapRastPort(a0, d0, d1, a1, d2, d3, d4, d5, d6, a2)
|
||
|
Modula-2: BltMaskBitMapRastPort(srcBitMap: BitMapPtr; srcX, srcY: INTE-
|
||
|
GER; destRastPort: RastPortPtr; destX, destY: INTEGER; sizeX,
|
||
|
sizeY: INTEGER; miniterm: BYTE; mask: PlanePtr)
|
||
|
Arguments: srcBitMap = source BitMap structure
|
||
|
srcX = horizontal coordinate of upper left corner of source
|
||
|
rectangle
|
||
|
srcY = vertical coordinate of upper left corner of source rectangle
|
||
|
destRastPort = destination RastPort structure
|
||
|
destX = horizontal coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
destY = vertical coordinate of upper left corner of destination
|
||
|
sizeX = width of rectangle
|
||
|
sizeY = height of rectangle
|
||
|
miniterm = logic function to apply to rectangle
|
||
|
mask = pointer to bit-plane mask
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BltPattern
|
||
|
Description: draws through a mask using standard drawing rules
|
||
|
Library: graphics.library
|
||
|
Offset: -$0138 (-312)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: BltPattern(destRastPort, pattern, x1, y1, x2, y2, width)
|
||
|
C: void BltPattern(struct RastPort *, struct RastPort *, long, long,
|
||
|
long, long, long)
|
||
|
Machine Language: BltPattern(a1, a0, d0, d1, d2, d3, d4)
|
||
|
Modula-2: BltPattern(destRastPort: RastPortPtr; pattern: ADDRESS; x1, y1:
|
||
|
INTEGER; x2, y2: INTEGER; width: INTEGER)
|
||
|
Arguments: destRastPort = destination RastPort
|
||
|
pattern = two-dimensional mask pattern
|
||
|
x1 = horizontal coordinate of upper left corner in destination
|
||
|
RastPort
|
||
|
y1 = vertical coordinate of upper left corner in destination
|
||
|
RastPort
|
||
|
x2 = horizontal coordinate of lower right corner in destination
|
||
|
RastPort
|
||
|
y2 = vertical coordinate of lower right corner in destination
|
||
|
RastPort
|
||
|
width = width of mask in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BltTemplate
|
||
|
Description: "cookie cuts" a shape in a rectangle to a RastPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: BltTemplate(source, srcX, srcMod, destRastPort, destX, destY,
|
||
|
sizeX, sizeY)
|
||
|
C: void BltTemplate(char *, long, long, struct RastPort *, long, long,
|
||
|
long, long)
|
||
|
Machine Language: BltTemplate(a0, d0, d1, a1, d2, d3, d4, d5)
|
||
|
Modula-2: BltTemplate(source: PlanePTR; srcX, srcMod: INTEGER;
|
||
|
destRastPort: RastPortPtr; destX, destY: INTEGER; sizeX, sizeY:
|
||
|
INTEGER) (changes)
|
||
|
Arguments: source = template mask
|
||
|
srcX = horizontal offset into template mask (0-15)
|
||
|
srcMod = number of bytes per row in template mask
|
||
|
destRastPort = destination RastPort
|
||
|
destX = horizontal coordinate of upper left corner in destination
|
||
|
RastPort
|
||
|
destY = vertical coordinate of upper left corner in destination
|
||
|
RastPort
|
||
|
sizeX = width of rectangular template
|
||
|
sizeY = height of rectangular template
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BNDRYOFF (macro)
|
||
|
Description: turns boundary mode off
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: BNDRYOFF(rastPort)
|
||
|
C: void BNDRYOFF(struct RastPort *)
|
||
|
Machine Language: not available
|
||
|
Modula-2: BNDRYOFF(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
BuildSysRequest
|
||
|
Description: builds and displays a system requester
|
||
|
Library: intuition.library
|
||
|
Offset: -$0168 (-360)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: window = BuildSysRequest(window, bodyText, positiveText,
|
||
|
negativeText, flags, width, height)
|
||
|
C: struct Window *BuildSysRequest(struct Window *, struct IntuiText
|
||
|
*, struct IntuiText *, struct IntuiText *, long, long, long)
|
||
|
Machine Language: d0 = BuildSysRequest(a0, a1, a2, a3, d0, d1, d2)
|
||
|
Modula-2: BuildSysRequest(window: WindowPtr; bodyText, positiveText,
|
||
|
negativeText: IntuiTextPtr; flags: IDCMPFlagsSet; width, height:
|
||
|
INTEGER): ADDRESS
|
||
|
Arguments: window = Window to contain requester
|
||
|
bodyText = IntuiText structure containing requester's main text
|
||
|
positiveText = IntuiText structure containing text for positive
|
||
|
gadget
|
||
|
negativeText = IntuiText structure containing text for negative
|
||
|
gadget
|
||
|
flags = IDCMP flags for initialization of window containing
|
||
|
requester
|
||
|
width = requester width
|
||
|
height = requester height
|
||
|
Result: window = pointer to window containing requester; if requester
|
||
|
could not be opened, DisplayAlert( ) is called and this function re-
|
||
|
turns TRUE if the left mouse button is pressed and FALSE if the
|
||
|
right mouse button is pressed
|
||
|
-------------------------
|
||
|
BumpRevision
|
||
|
Description: creates a new name for the copy of a file, directory, or disk
|
||
|
Library: icon.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: newname = BumpRevision(newbuf, oldname)
|
||
|
C: long BumpRevision(char *, char *)
|
||
|
Machine Language: d0 = BumpRevision(a0, a1)
|
||
|
Modula-2: BumpRevision(newbuf, oldname: STRPTR)
|
||
|
Arguments: newbuf = buffer to contain the new name (must be at least 31
|
||
|
characters long)
|
||
|
oldname = old name
|
||
|
Result: newname = pointer to the new name contained in newbuf
|
||
|
-------------------------
|
||
|
Cause
|
||
|
Description: causes a software interrupt
|
||
|
Library: exec.library
|
||
|
Offset: -$00B4 (-180)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: Cause(interrupt)
|
||
|
C: void Cause(struct Interrupt *)
|
||
|
Machine Language: Cause(a1)
|
||
|
Modula-2: Cause(interrupt: InterruptPtr)
|
||
|
Arguments: interrupt = initialized interrupt node
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CBump
|
||
|
Description: moves to the next position in user copper list
|
||
|
Library: exec.library
|
||
|
Offset: -$016E (-366)
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: CBump(copList)
|
||
|
C: void CBump(struct UCopList *)
|
||
|
Machine Language: CBump(a1)
|
||
|
Modula-2: CBump(copList: UCopListPtr)
|
||
|
Arguments: copList = UCopList structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CEND (macro)
|
||
|
Description: adds the final instruction to a user copper list
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: CEND(copList)
|
||
|
C: void CEND(struct UCopList *)
|
||
|
Machine Language: not available
|
||
|
Modula-2: CEND(VAR copList: UCopList)
|
||
|
Arguments: copList = UCopList structure
|
||
|
Result: none
|
||
|
------------------------
|
||
|
ChangeSprite
|
||
|
Description: changes the shape of a sprite
|
||
|
Library: graphics.library
|
||
|
Offset: -$01A4 (-420)
|
||
|
Modula-2 Module: Sprites
|
||
|
Syntax: ChangeSprite(viewPort, simpleSprite, newdata)
|
||
|
C: void ChangeSprite(struct ViewPort *, struct SimpleSprite *, short *)
|
||
|
Machine Language: ChangeSprite(a0, a1, a2)
|
||
|
Modula-2: ChangeSprite(viewPort: ViewPortPtr; simpleSprite:
|
||
|
SimpleSpritePtr; newdata: ADDRESS)
|
||
|
Arguments: viewPort = ViewPort structure
|
||
|
simpleSprite = initialized SimpleSprite structure
|
||
|
newdata = table of sprite shape data
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CheckIO
|
||
|
Description: gets the status of an IO request
|
||
|
Library: exec.library
|
||
|
Offset: -$01D4 (-468)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: status = CheckIO(ioRequest)
|
||
|
C: long CheckIO(struct IORequest *)
|
||
|
Machine Language: d0 = CheckIO(a1)
|
||
|
Modula-2: CheckIO(ioRequest: ADDRESS): ADDRESS
|
||
|
Arguments: ioRequest = IORequest block
|
||
|
Result: status = NULL if I/O is still in progress; pointer to IORequest
|
||
|
block if I/O has completed
|
||
|
-------------------------
|
||
|
CINIT (macro)
|
||
|
Description: initializes a user copper list
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: copList = CINIT(copList, num)
|
||
|
C: struct UCopList *CINIT(struct UCopList *, short)
|
||
|
Machine Language: not available
|
||
|
Modula-2: CINIT(copList: UCopListPtr; num: CARDINAL): UCopListPtr
|
||
|
Arguments: copList = UCopList structure
|
||
|
num = number of instructions buffer must hold
|
||
|
Result: copList = pointer to an initialized UCopList structure, ready to
|
||
|
accept copper instructions
|
||
|
-------------------------
|
||
|
ClearDMRequest
|
||
|
Description: clears the DMRequest of a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = ClearDMRequest(window)
|
||
|
C: long ClearDMRequest(struct Window *)
|
||
|
Machine Language: d0 = ClearDMRequest(a0)
|
||
|
Modula-2: ClearDMRequest(window: WindowPtr): BOOLEAN
|
||
|
Arguments: window = window from which DMRequest is to be cleared
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful (DMRequest
|
||
|
is still in use)
|
||
|
-------------------------
|
||
|
ClearEOL
|
||
|
Description: clears from the current position to the end of the line
|
||
|
Library: graphics.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: ClearEOL(rastPort)
|
||
|
C: void ClearEOL(struct RastPort *)
|
||
|
Machine Language: ClearEOL(a1)
|
||
|
Modula-2: ClearEOL(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort structure to clear
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ClearMenuStrip
|
||
|
Description: clears (detaches) a window's menu strip
|
||
|
Library: intuition.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ClearMenuStrip(window)
|
||
|
C: void ClearMenuStrip(struct Window *)
|
||
|
Machine Language: ClearMenuStrip(a0)
|
||
|
Modula-2: ClearMenuStrip(window: WindowPtr)
|
||
|
Arguments: window = Window structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ClearPointer
|
||
|
Description: returns the mouse pointer to its default shape
|
||
|
Library: intuition.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ClearPointer(region)
|
||
|
C: void ClearPointer(struct Region *)
|
||
|
Machine Language: ClearPointer(a0)
|
||
|
Modula-2: ClearPointer(window: WindowPtr)
|
||
|
Arguments: window = Window structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ClearRectRegion
|
||
|
Description: performs a two-dimensional clearing operation of a clipping rec
|
||
|
tangle with a region, leaving the result in the region
|
||
|
Library: graphics.library
|
||
|
Offset: -$020A (-522)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: success = ClearRectRegion(region, rectangle)
|
||
|
C: long ClearRectRegion(struct Region *, struct Rectangle *)
|
||
|
Machine Language: d0 = ClearRectRegion(a0, a1)
|
||
|
Modula-2: ClearRectRegion(region: RegionPtr; rectangle: RectanglePtr):
|
||
|
BOOLEAN
|
||
|
Arguments: region = Region to clear
|
||
|
rectangle = Rectangle to be used as the clipping rectangle
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
ClearRegion
|
||
|
Description: removes all rectangles from a region
|
||
|
Library: graphics.library
|
||
|
Offset: -$0210 (-528)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: ClearRegion(region)
|
||
|
C: void ClearRegion(struct Region *)
|
||
|
Machine Language: ClearRegion(a0)
|
||
|
Modula-2: ClearRegion(region: RegionPtr)
|
||
|
Arguments: region = Region to clear
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ClearScreen
|
||
|
Description: clears from the current position to the end of the RastPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: ClearScreen(rastPort)
|
||
|
C: void ClearScreen(struct RastPort *)
|
||
|
Machine Language: ClearScreen(a1)
|
||
|
Modula-2: ClearScreen(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort to clear
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ClipBlit
|
||
|
Description: copies bit-map data (and optionally manipulates) from one
|
||
|
RastPort to another
|
||
|
Library: graphics.library
|
||
|
Offset: -$0228 (-552)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: ClipBlit(scrRastPort, srcX, srcY, destRastPort, destX, destY, sizeX,
|
||
|
sizeY, miniterm)
|
||
|
C: void ClipBlit(struct RastPort * long, long, struct RastPort *, long,
|
||
|
long, long, long, long)
|
||
|
Machine Language: ClipBlit(a0, d0, d1, a1, d2, d3, d4, d5, d6)
|
||
|
Modula-2: ClipBlit(scrRPort: RastPortPtr; srcX, srcY: INTEGER; destRPort:
|
||
|
RastPortPtr; destX, destY: INTEGER; sizeX, sizeY: INTEGER;
|
||
|
miniterm: BYTE)
|
||
|
Arguments: scrRastPort = source RastPort structure
|
||
|
srcX = horizontal coordinate of upper left corner of source
|
||
|
rectangle
|
||
|
srcY = vertical coordinate of upper left corner of source rectangle
|
||
|
destRastPort = destination RastPort structure
|
||
|
destX = horizontal coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
destY = vertical coordinate of upper left corner of destination
|
||
|
rectangle
|
||
|
sizeX = width of rectangle
|
||
|
sizeY = height of rectangle
|
||
|
miniterm = logic function to apply to rectangle
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Close
|
||
|
Description: closes an open file
|
||
|
Library: dos.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: Close(file)
|
||
|
C: void Close(BPTR)
|
||
|
Machine Language: Close(d1)
|
||
|
Modula-2: Close(file: FileHandle)
|
||
|
Arguments: file = BCPL pointer to file handle of file to close
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseDevice
|
||
|
Description: terminates access to a device
|
||
|
Library: exec.library
|
||
|
Offset: -$01C2 (-450)
|
||
|
Modula-2 Module: Devices
|
||
|
Syntax: CloseDevice(ioRequest)
|
||
|
C: void CloseDevice(struct IORequest *)
|
||
|
Machine Language: CloseDevice(a1)
|
||
|
Modula-2: CloseDevice(ioRequest: ADDRESS)
|
||
|
Arguments: ioRequest = IORequest structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseFont
|
||
|
Description: tells the system that an opened font is no longer in use
|
||
|
Library: graphics.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: CloseFont(font)
|
||
|
C: void CloseFont(struct TextFont *)
|
||
|
Machine Language: CloseFont(a1)
|
||
|
Modula-2: CloseFont(textfont: TextFontPtr)
|
||
|
Arguments: font = font descriptor as returned by OpenFont( ) or
|
||
|
OpenDiskFont( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseLibrary
|
||
|
Description: tells the system that an opened library is no longer in use
|
||
|
Library: exec.library
|
||
|
Offset: -$019E (-414)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: CloseLibrary(library)
|
||
|
C: void CloseLibrary(struct Library *)
|
||
|
Machine Language: CloseLibrary(a1)
|
||
|
Modula-2: CloseLibrary(library: LibraryPtr)
|
||
|
Arguments: library = base address of a library, as returned by OpenLibrary( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseScreen
|
||
|
Description: closes an Intuition screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: CloseScreen(screen)
|
||
|
C: void CloseScreen(struct Screen *)
|
||
|
Machine Language: CloseScreen(a0)
|
||
|
Modula-2: CloseScreen(screen: ScreenPtr)
|
||
|
Arguments: screen = screen to close
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseWindow
|
||
|
Description: closes an Intuition window
|
||
|
Library: intuition.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: CloseWindow(window)
|
||
|
C: void CloseWindow(struct Window *)
|
||
|
Machine Language: CloseWindow(a0)
|
||
|
Modula-2: CloseWindow(window: WindowPtr)
|
||
|
Arguments: window = window to close
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CloseWorkBench
|
||
|
Description: attempts to close the Workbench screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = CloseWorkBench( )
|
||
|
C: long CloseWorkBench(void)
|
||
|
Machine Language: d0 = CloseWorkBench( )
|
||
|
Modula-2: CloseWorkBench( ): BOOLEAN
|
||
|
Arguments: none
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
CMove
|
||
|
Description: appends a copper move instruction to a user copper list without
|
||
|
bumping the copper instruction pointer to the next instruction
|
||
|
Library: graphics.library
|
||
|
Offset: -$0174 (-372)
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: CMove(copList, r, v)
|
||
|
C: void CMove(struct UCopList *, long, long)
|
||
|
Machine Language: CMove(a1, d0, d1)
|
||
|
Modula-2: CMove(copList: UCopListPtr; r: ADDRESS; v: WORD)
|
||
|
Arguments: copList = UCopList structure
|
||
|
a = address of hardware register to receive value
|
||
|
v = value to store in hardware register
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CMOVE (macro)
|
||
|
Description: appends a copper move instruction to a user copper list and
|
||
|
bumps the copper instruction pointer to the next instruction
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: CMOVE(copList, r, v)
|
||
|
C: void CMOVE(struct UCopList *, APTR, short)
|
||
|
Machine Language: not available
|
||
|
Modula-2: CMOVE(copList: UCopListPtr; r: ADDRESS; v: WORD)
|
||
|
Arguments: copList = UCopList structure
|
||
|
a = address of hardware register to receive value
|
||
|
v = value to store in hardware register
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ConcatCList
|
||
|
Description: concatenates two character lists
|
||
|
Library: clist.library
|
||
|
Offset: -$009C (-156)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = ConcatCList(srcCList, destCList)
|
||
|
C: long ConcatCList(long, long)
|
||
|
Machine Language: d0 = ConcatCList(a0, a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: srcCList = source character list
|
||
|
destCList = destination character list
|
||
|
Result: error = Zero if successful; Nonzero if unsuccessful (out of
|
||
|
memory)
|
||
|
-------------------------
|
||
|
ConfigBoard
|
||
|
Description: configures an expansion board
|
||
|
Library: expansion.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: error = ConfigBoard(board, configDev)
|
||
|
C: long ConfigBoard(long, long)
|
||
|
Machine Language: d0 = ConfigBoard(a0, a1)
|
||
|
Modula-2: ConfigBoard(board: ADDRESS; configDev: ADDRESS):
|
||
|
BOOLEAN
|
||
|
Arguments: board = base address of expansion board (most likely
|
||
|
E_EXPANSIONBASE)
|
||
|
configDev = initialized ConfigDev structure
|
||
|
Result: error = nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
ConfigChain
|
||
|
Description: configures the entire system
|
||
|
Library: expansion.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: error = ConfigChain(baseAddr)
|
||
|
C: long ConfigChain(long)
|
||
|
Machine Language: d0 = ConfigChain(a0)
|
||
|
Modula-2: ConfigChain(baseAddr: ADDRESS): BOOLEAN
|
||
|
Arguments: baseAddr = base address (most likely E_EXPANSIONBASE)
|
||
|
Result: error = nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
CopyCList
|
||
|
Description: copies a character list to a new character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0090 (-144)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: cList = CopyCList(cList)
|
||
|
C: long CopyCList(long)
|
||
|
Machine Language: d0 = CopyCList(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = original character list
|
||
|
Result: cList = new character list; Negative is unsuccessful (not enough
|
||
|
memory)
|
||
|
-------------------------
|
||
|
CopyMem
|
||
|
Description: copies the contents of RAM from one location to another
|
||
|
Library: exec.library
|
||
|
Offset: -$0270 (-624)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: CopyMem(srcPointer, destPointer, size)
|
||
|
C: void CopyMem(char *, char *, long)
|
||
|
Machine Language: CopyMem(a0, a1, d0)
|
||
|
Modula-2: CopyMem(srcPointer, destPointer: ADDRESS; size: LONGCARD)
|
||
|
Arguments: srcPointer = pointer to memory block to be copied
|
||
|
destPointer = pointer to destination memory block
|
||
|
size = size of memory block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CopyMemQuick
|
||
|
Description: performs an optimized copy of RAM with some restrictions
|
||
|
Library: exec.library
|
||
|
Offset: -$0276 (-630)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: CopyMemQuick(srcPointer, destPointer, size)
|
||
|
C: void CopyMemQuick(char *, char *, long)
|
||
|
Machine Language: CopyMemQuick(a0, a1, d0)
|
||
|
Modula-2: CopyMemQuick(srcPointer, destPointer: ADDRESS; size:
|
||
|
LONGCARD)
|
||
|
Arguments: srcPointer = pointer to the long-word aligned memory block to
|
||
|
be copied
|
||
|
destPointer = pointer to the long-word aligned destination mem-
|
||
|
ory block
|
||
|
size = size of memory block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CopySBitMap
|
||
|
Description: copies all bits from a SuperBitMap into the Layer bitmap
|
||
|
Library: graphics.library
|
||
|
Offset: -$01C2 (-450)
|
||
|
Modula-2 Module: Clip
|
||
|
Syntax: CopySBitMap(layer)
|
||
|
C: void CopySBitMap(struct Layer *)
|
||
|
Machine Language: CopySBitMap(a0)
|
||
|
Modula-2: CopySBitMap(layer: LayerPtr)
|
||
|
Arguments: layer = pointer to a locked Layer that has a SuperBitMap
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CreateBehindlayer
|
||
|
Description: creates a new layer behind all existing layers
|
||
|
Library: layers.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: layer = CreateBehindLayer(layerInfo, bitMap, x0, y0, x1, y1,
|
||
|
flags, superBitMap)
|
||
|
C: struct Layer *CreateBehindLayer(struct LayerInfo *, struct Bit-
|
||
|
Map *, long, long, long, long, long, struct BitMap *)
|
||
|
Machine Language: d0 = CreateBehindLayer(a0, a1, d0, d1, d2, d3, d4, a2)
|
||
|
Modula-2: CreateBehindLayer(layerInfo: LayerInfoPtr; bitMap: BitMapPtr; x0,
|
||
|
y0, x1, y1: LONGINT; flags: LayerFlagSet; superBitMap:
|
||
|
BitMapPtr): LayerPtr
|
||
|
Arguments: layerInfo = info structure of Layer to create
|
||
|
bitMap = common BitMap used by all Layers
|
||
|
x0 = horizontal coordinate of upper left corner of Layer
|
||
|
y0 = vertical coordinate of upper left corner of Layer
|
||
|
x1 = horizontal coordinate of lower right corner of Layer
|
||
|
y1 = vertical coordinate of lower right corner of Layer
|
||
|
flags = type of Layer
|
||
|
superBitMap = NULL or a SuperBitMap
|
||
|
Result: layer = pointer to Layer structure if successful; NULL if
|
||
|
unsuccessful
|
||
|
-------------------------
|
||
|
CreateDir
|
||
|
Description: creates a new directory
|
||
|
Library: dos.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: lock = CreateDir(name)
|
||
|
C: BPTR CreateDir(char *)
|
||
|
Machine Language: d0 = CreateDir(d1)
|
||
|
Modula-2: CreateDir(name: STRPTR): FileLock
|
||
|
Arguments: name = NULL terminate string that specifies the new directory
|
||
|
name
|
||
|
Result: lock = BCPL pointer to a lock
|
||
|
-------------------------
|
||
|
CreateExtIO
|
||
|
Description: allocates memory for and initializes an IO request block
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: IOUtils
|
||
|
Syntax: block = CreateExtIO(ioReplyPort, size)
|
||
|
C: struct IORequest *CreateExtIO(struct MsgPort *, long)
|
||
|
Machine Language: move.l #size,-(sp)
|
||
|
pea ioReplyPort
|
||
|
jsr _CreateExtIO ;block returned in d0
|
||
|
addq.l #8,sp
|
||
|
Modula-2: CreateExtIO(ioReplyPort: MsgPortPtr; size: CARDINAL):
|
||
|
ADDRESS
|
||
|
Arguments: ioReplyPort = initialized MsgPort
|
||
|
size = IORequest block size
|
||
|
Result: block = pointer to newly created IORequest block; NULL if un-
|
||
|
successful (not enough memory)
|
||
|
-------------------------
|
||
|
CreatePort
|
||
|
Description: allocates memory for and initializes a message port
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: PortUtils
|
||
|
Syntax: port = CreatePort(name, pri)
|
||
|
C: struct MsgPort *CreatePort(char *, long)
|
||
|
Machine Language: move.l #pri,-(sp)
|
||
|
pea name
|
||
|
jsr _CreatePort ;port returned in d0
|
||
|
addq.l #8,sp
|
||
|
Modula-2: CreatePort(name: STRPTR; pri: INTEGER): MsgPortPtr
|
||
|
Arguments: name = name of public port to create; NULL for private port
|
||
|
pri = priority to assign to port
|
||
|
Result: port = pointer to newly created message port; NULL if unsuc-
|
||
|
cessful (not enough memory)
|
||
|
-------------------------
|
||
|
CreateProc
|
||
|
Description: creates a new process
|
||
|
Library: dos.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: DOSProcess
|
||
|
Syntax: process = CreateProc(name, pri, segment, stackSize)
|
||
|
C: struct MsgPort *CreateProc(char *, long, BPTR, long)
|
||
|
Machine Language: d0 = CreateProc(d1, d2, d3, d4)
|
||
|
Modula-2: CreateProc(name: STRPTR; pri: LONGINT; segment: BPTR;
|
||
|
stackSize: LONGINT): ProcessID
|
||
|
Arguments: name = NULL terminated string that specifies the new process
|
||
|
name
|
||
|
priority = priority to be given to process
|
||
|
segment = segment list, as returned by LoadSeg( )
|
||
|
stackSize = size of root stack in bytes
|
||
|
Result: process = pointer to newly created IORequest block; NULL if un-
|
||
|
successful (not enough memory)
|
||
|
-------------------------
|
||
|
CreateTask
|
||
|
Description: creates a task
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: TaskUtils
|
||
|
Syntax: task = CreateTask(name, pri, initPC, stackSize)
|
||
|
C: struct Task *CreateTask(char *, long, _fptr, long)
|
||
|
Machine Language: move.l #stackSize,-(sp)
|
||
|
pea initPC
|
||
|
move.l #pri,-(sp)
|
||
|
pea name
|
||
|
jsr _CreateTask ;task returned in d0
|
||
|
add.l #16,sp
|
||
|
Modula-2: CreateTask(name: STRPTR; pri: INTEGER; initP
|
||
|
C: PROC; stackSize: LONGCARD): TaskPtr
|
||
|
Arguments: name = name of task
|
||
|
pri = exec task priority (-128 through 127, usually 0)
|
||
|
stackSize = size of stack in bytes
|
||
|
Result: task = pointer to newly created task; NULL if unsuccessful (not
|
||
|
enough memory)
|
||
|
-------------------------
|
||
|
CreateUpfrontLayer
|
||
|
Description: creates a new layer on top of all existing layers
|
||
|
Library: layers.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: layer = CreateUpfrontLayer(layerInfo, bitMap, x0, y0, x1, y1,
|
||
|
flags, superBitMap)
|
||
|
C: struct Layer *CreateUpfrontLayer(struct Layer_Info *, struct Bit-
|
||
|
Map *, long, long, long, long, long, struct BitMap *)
|
||
|
Machine Language: d0 = CreateUpfrontLayer(a0, a1, d0, d1, d2, d3, d4, a2)
|
||
|
Modula-2: CreateUpfrontLayer(layerInfo: LayerInfoPtr; bitMap: BitMapPtr;
|
||
|
x0, y0, x1, y1: LONGINT; flags: LayerFlagSet; superBitMap:
|
||
|
BitMapPtr): LayerPtr
|
||
|
Arguments: layerInfo = info structure of Layer to create
|
||
|
bitMap = common BitMap used by all Layers
|
||
|
x0 = horizontal coordinate of upper left corner of Layer
|
||
|
y0 = vertical coordinate of upper left corner of Layer
|
||
|
x1 = horizontal coordinate of lower right corner of Layer
|
||
|
y1 = vertical coordinate of lower right corner of Layer
|
||
|
flags = type of Layer
|
||
|
superBitMap = NULL or pointer to SuperBitMap
|
||
|
Result: layer = pointer to Layer structure if successful; NULL if
|
||
|
unsuccessful
|
||
|
-------------------------
|
||
|
CurrentDir
|
||
|
Description: changes the current directory and returns the old current directory
|
||
|
Library: dos.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: oldlock = CurrentDir(lock)
|
||
|
C: BPTR CurrentDir(BPTR)
|
||
|
Machine Language: d0 = CurrentDir(d1)
|
||
|
Modula-2: CurrentDir(lock: FileLock): FileLock
|
||
|
Arguments: lock = BCPL pointer to lock associated with new current
|
||
|
directory
|
||
|
Result: oldlock = BCPL pointer to lock associated with old directory
|
||
|
-------------------------
|
||
|
CurrentTime
|
||
|
Description: returns the current system time
|
||
|
Library: intuition.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: CurrentTime(seconds, micros)
|
||
|
C: void CurrentTime(long *, long *)
|
||
|
Machine Language: CurrentTime(d0, d1)
|
||
|
Modula-2: CurrentTime(VAR seconds, micros: LONGCARD)
|
||
|
Arguments: seconds = pointer to four-byte (LONG) variable to receive sec-
|
||
|
onds value
|
||
|
micros = pointer to four-byte (LONG) variable to receive micro-
|
||
|
seconds value
|
||
|
Result: returned in seconds and micros arguments
|
||
|
-------------------------
|
||
|
CWait
|
||
|
Description: appends copper wait instruction to a user copper list without
|
||
|
bumping the copper instruction pointer to the next instruction
|
||
|
Library: graphics.library
|
||
|
Offset: -$017A (-378)
|
||
|
Modula-2 Module: CopperUtil
|
||
|
Syntax: CWait(copList, vert, horiz)
|
||
|
C: void CWait(struct UCopList *, short, short)
|
||
|
Machine Language: not available
|
||
|
Modula-2: CWait(copList: UCopListPtr; vert, horiz: INTEGER)
|
||
|
Arguments: copList = UCopList structure
|
||
|
vert = vertical beam position relative to top of ViewPort
|
||
|
horiz = horizontal beam position (must be less than 223)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
CWAIT (macro)
|
||
|
Description: appends copper wait instruction to a user copper list and bumps
|
||
|
the copper instruction pointer to the next instruction
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: CopperUtil
|
||
|
Syntax: CWAIT(copList, vert, horiz)
|
||
|
C: void CWAIT(struct UCopList *, short, short)
|
||
|
Machine Language: not available
|
||
|
Modula-2: CWAIT(copList: UCopListPtr; vert, horiz: INTEGER)
|
||
|
Arguments: copList = UCopList structure
|
||
|
vert = vertical beam position relative to top of ViewPort
|
||
|
horiz = horizontal beam position (must be less than 223)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DateStamp
|
||
|
Description: returns the current date and time in internal format
|
||
|
Library: dos.library
|
||
|
Offset: -$00C0 (-192)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: DateStamp(v)
|
||
|
C: long *DateStamp(long *)
|
||
|
Machine Language: DateStamp(d1)
|
||
|
Modula-2: DateStamp(v: DateStampRecPtr)
|
||
|
Arguments: v = pointer to the first element of an array of three long words
|
||
|
Result: v argument points to result in RAM
|
||
|
-------------------------
|
||
|
dbf
|
||
|
Description: converts a fast floating point dual-binary number to plain fast
|
||
|
floating point format
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum = dbf(exp, mant)
|
||
|
C: float dbf(long, long)
|
||
|
Machine Language: move.l #mant,-(sp)
|
||
|
move.l #exp,-(sp)
|
||
|
jsr _dfb ;fnum returned in d0/d1
|
||
|
addq.l #8,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: exp = 16 bit integer representing the sign (bit 16 equals 0 for
|
||
|
positive or 1 for negative) and base ten exponent (bits 0-15)
|
||
|
mant = integer representing the mantissa
|
||
|
Result: fnum = floating point equivalent of value specified by exp and
|
||
|
mant arguments
|
||
|
-------------------------
|
||
|
Deallocate
|
||
|
Description: deallocates a block of previously allocated memory
|
||
|
Library: exec.library
|
||
|
Offset: -$00C0 (-192)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: Deallocate(freeList, memoryBlock, byteSize)
|
||
|
C: void Deallocate(struct MemHeader *, void *, long)
|
||
|
Machine Language: Deallocate(a0, a1, d0)
|
||
|
Modula-2: Deallocate(freeList: MemHeaderPtr; memoryBlock: ADDRESS;
|
||
|
byteSize: LONGCARD)
|
||
|
Arguments: freeList = memory list header
|
||
|
memoryBlock = memory block to deallocate
|
||
|
byteSize = size of memory block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Debug
|
||
|
Description: runs the system debugger or the debugger installed by
|
||
|
SetFunction
|
||
|
Library: exec.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: Exec
|
||
|
Syntax: Debug(num)
|
||
|
C: void Debug(long)
|
||
|
Machine Language: Debug(d0)
|
||
|
Modula-2: Debug(num: LONGCARD)
|
||
|
Arguments: num = should be set to 0
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Delay
|
||
|
Description: delays a process for a specified amount of time
|
||
|
Library: dos.library
|
||
|
Offset: -$00C6 (-198)
|
||
|
Modula-2 Module: DOSProcess
|
||
|
Syntax: Delay(ticks)
|
||
|
C: void Delay(long)
|
||
|
Machine Language: Delay(d1)
|
||
|
Modula-2: Delay(ticks: LONGINT)
|
||
|
Arguments: ticks = number of ticks to wait (50 ticks per second)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DeleteExtIO
|
||
|
Description: returns memory allocated by CreateExtIO
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: IOUtils
|
||
|
Syntax: DeleteExtIO(ioRequest, size)
|
||
|
C: void DeleteExtIO(struct IORequest *, long)
|
||
|
Machine Language: move.l #size,-(sp)
|
||
|
pea ioRequest
|
||
|
jsr _DeleteExtIO
|
||
|
addq.l #4,sp
|
||
|
Modula-2: DeleteExtIO(ioReq: ADDRESS; size: CARDINAL)
|
||
|
Arguments: ioRequest = IORequest block to delete
|
||
|
size = size of IORequest block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DeleteFile
|
||
|
Description: deletes a file or directory
|
||
|
Library: dos.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = DeleteFile(name)
|
||
|
C: long DeleteFile(char *)
|
||
|
Machine Language: d0 = DeleteFile(d1)
|
||
|
Modula-2: DeleteFile(name: STRPTR): BOOLEAN
|
||
|
Arguments: name = NULL terminated string that specifies the file to delete
|
||
|
Result: TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
DeleteLayer
|
||
|
Description: deletes a layer from a layer list
|
||
|
Library: layers.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = DeleteLayer(dummy, layer)
|
||
|
C: long DeleteLayer(struct Layer_Info, struct Layer *)
|
||
|
Machine Language: d0 = DeleteLayer(a0, a1)
|
||
|
Modula-2: DeleteLayer(layer: LayerPtr): BOOLEAN
|
||
|
Arguments: dummy = unused
|
||
|
layer = layer to delete
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
DeletePort
|
||
|
Description: frees a message port created by CreatePort( )
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: PortUtils
|
||
|
Syntax: DeletePort(msgPort)
|
||
|
C: void DeletePort(struct MsgPort *)
|
||
|
Machine Language: pea msgPort
|
||
|
jsr _DeletePort
|
||
|
addq.l #4,sp
|
||
|
Modula-2: DeletePort(msgPort: MsgPortPtr)
|
||
|
Arguments: msgPort = message port to delete
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DeleteTask
|
||
|
Description: deletes a task created with CreateTask( )
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: TaskUtils
|
||
|
Syntax: DeleteTask(task)
|
||
|
C: void DeleteTask(struct Task *)
|
||
|
Machine Language: pea task
|
||
|
jsr _DeleteTask
|
||
|
addq.l #4,sp
|
||
|
Modula-2: DeleteTask(task: TaskPtr)
|
||
|
Arguments: task = Task to delete
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DeviceProc
|
||
|
Description: returns the process identifier of specified process
|
||
|
Library: dos.library
|
||
|
Offset: -$00AE (-174)
|
||
|
Modula-2 Module: DOSProcess
|
||
|
Syntax: process = DeviceProc(name)
|
||
|
C: struct MsgPort *DeviceProc(char *)
|
||
|
Machine Language: d0 = DeviceProc(d1)
|
||
|
Modula-2: DeviceProc(name: STRPTR): ProcessID
|
||
|
Arguments: name = NULL terminated string that specifies the device name
|
||
|
Result: process = BCPL pointer to a process; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
Disable
|
||
|
Description: disables interrupt processing
|
||
|
Library: exec.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: Disable( )
|
||
|
C: void Disable(void)
|
||
|
Machine Language: Disable( )
|
||
|
Modula-2: Disable( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DisownBlitter
|
||
|
Description: frees blitter for use by other programs
|
||
|
Library: graphics.library
|
||
|
Offset: -$01CE (-462)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: DisownBlitter( )
|
||
|
C: void DisownBlitter(void)
|
||
|
Machine Language: DisownBlitter( )
|
||
|
Modula-2: DisownBlitter( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DisplayAlert
|
||
|
Description: creates an Alert
|
||
|
Library: intuition.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: response = DisplayAlert(alertNumber, message, height)
|
||
|
C: long DisplayAlert(long, char *, long)
|
||
|
Machine Language: d0 = DisplayAlert(d0, a0, d1)
|
||
|
Modula-2: DisplayAlert(alertNumber: LONGCARD; message: ADDRESS;
|
||
|
height: CARDINAL): BOOLEAN
|
||
|
Arguments: alertNumber = AlertMessage number
|
||
|
message = NULL terminated Alert message string
|
||
|
height = minimum display lines required for your message
|
||
|
Result: response = TRUE or FALSE, depending on alert type and user
|
||
|
response
|
||
|
-------------------------
|
||
|
DisplayBeep
|
||
|
Description: flashes the video display and emits a beep
|
||
|
Library: intuition.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: DisplayBeep(screen)
|
||
|
C: void DisplayBeep(struct Screen *)
|
||
|
Machine Language: DisplayBeep(a0)
|
||
|
Modula-2: DisplayBeep(screen: ScreenPtr)
|
||
|
Arguments: screen = screen to beep
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DisposeFontContents (available in library version 34)
|
||
|
Description: frees the array of FontContents returned by NewFontContents( )
|
||
|
Library: diskfont.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: DisposeFontContents(fontContentsHeader)
|
||
|
C: void DisposeFontContents(struct FontContentsHeader *)
|
||
|
Machine Language: DisposeFontContents(a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fontContentsHeader = FontContentsHeader as returned by
|
||
|
NewFontContents( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DisposeLayerInfo
|
||
|
Description: returns memory used by a LayerInfo structure
|
||
|
Library: layers.library
|
||
|
Offset: -$0096 (-150)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: DisposeLayerInfo(layerInfo)
|
||
|
C: void DisposeLayerInfo(struct Layer_Info *)
|
||
|
Machine Language: DisposeLayerInfo(a0)
|
||
|
Modula-2: DisposeLayerInfo(layerInfo: layerInfoPtr)
|
||
|
Arguments: layerInfo = LayerInfo structure to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DisposeRegion
|
||
|
Description: returns memory used by a Region structure and its
|
||
|
RegionRectangles
|
||
|
Library: graphics.library
|
||
|
Offset: -$0216 (-534)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: DisposeRegion(region)
|
||
|
C: void DisposeRegion(struct Region *)
|
||
|
Machine Language: DisposeRegion(a0)
|
||
|
Modula-2: DisposeRegion(region: RegionPtr)
|
||
|
Arguments: region = Region structure to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DoCollision
|
||
|
Description: tests all GELs in GEL list for GEL-to-GEL collisions
|
||
|
Library: graphics.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: DoCollision(rastPort)
|
||
|
C: void DoCollision(struct RastPort *)
|
||
|
Machine Language: DoCollision(a1)
|
||
|
Modula-2: DoCollision(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort with GEL list
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DoIO
|
||
|
Description: performs IO command and waits for completion
|
||
|
Library: exec.library
|
||
|
Offset: -$01C8 (-465)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: error = DoIO(ioRequest)
|
||
|
C: long DoIO(struct IORequest *)
|
||
|
Machine Language: d0 = DoIO(a1)
|
||
|
Modula-2: DoIO(ioRequest: ADDRESS): INTEGER
|
||
|
Arguments: ioRequest = initialized IORequest structure
|
||
|
Result: error = zero if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
DoubleClick
|
||
|
Description: test two time values for double-click timing
|
||
|
Library: intuition.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: double = DoubleClick(startSecs, startMicros, currentSecs,
|
||
|
currentMicros)
|
||
|
C: long DoubleClick(long, long, long, long)
|
||
|
Machine Language: d0 = DoubleClick(d0, d1, d2, d3)
|
||
|
Modula-2: DoubleClick(startSecs, startMicros, currentSecs, currentMicros:
|
||
|
LONGCARD): BOOLEAN
|
||
|
Arguments: startSecs = seconds value at time of first click
|
||
|
startMicros = micros value at time of first click
|
||
|
currentSecs = seconds value at time of second click
|
||
|
currentMicros = micros value at time of second click
|
||
|
Result: double = TRUE if valid double click; FALSE if not
|
||
|
-------------------------
|
||
|
Draw
|
||
|
Description: draws a line from current pen position to specified point
|
||
|
Library: graphics.library
|
||
|
Offset: -$00F6 (-246)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: Draw(rastPort, x, y)
|
||
|
C: long Draw(struct RastPort *, long, long)
|
||
|
Machine Language: Draw(a1, d0, d1)
|
||
|
Modula-2: Draw(rastPort: RastPortPtr; x, y: INTEGER)
|
||
|
Arguments: rastPort = RastPort to draw line in
|
||
|
x = horizontal coordinate of line's destination
|
||
|
y = vertical coordinate of line's destination
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DrawBorder
|
||
|
Description: draws a border
|
||
|
Library: intuition.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: DrawBorder(rastPort, border, leftOffset, topOffset)
|
||
|
C: long DrawBorder(struct RastPort *, struct Border *, long, long)
|
||
|
Machine Language: DrawBorder(a0, a1, d0, d1)
|
||
|
Modula-2: DrawBorder(rastPort: RastPortPtr; border: BorderPtr; leftOffset,
|
||
|
topOffset: INTEGER)
|
||
|
Arguments: rastPort = RastPort to draw border in
|
||
|
border = Border to be drawn
|
||
|
leftOffset = horizontal placement offset for border
|
||
|
topOffset = vertical placement offset for border
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DrawCircle (macro)
|
||
|
Description: draws a circle in the specified RastPort
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: DrawCircle(rastPort, cx, cy, radius)
|
||
|
C: void DrawCircle(struct RastPort *, long, long, long)
|
||
|
Machine Language: not available, use DrawEllipse instead
|
||
|
Modula-2: DrawCircle(rastPort: RastPortPtr; cx, cy, radius: INTEGER)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
cx = horizontal coordinate of circle's center
|
||
|
cy = vertical coordinate of circle's center
|
||
|
radius = circle's radius
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DrawEllipse
|
||
|
Description: draws an elliptical outline within a rectangular outline
|
||
|
Library: graphics.library
|
||
|
Offset: -$00B4 (-180)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: DrawEllipse(rastPort, cx, cy, a, b)
|
||
|
C: void DrawEllipse(struct RastPort *, long, long, long, long)
|
||
|
Machine Language: DrawEllipse(a1, d0, d1, d2, d3)
|
||
|
Modula-2: DrawEllipse(rastPort: RastPortPtr; cx, cy, a, b: INTEGER)
|
||
|
Arguments: rastPort = RastPort into which ellipse will be drawn
|
||
|
cx = horizontal coordinate of ellipse's center, relative to the
|
||
|
RastPort
|
||
|
cy = vertical coordinate of ellipse's center, relative to the RastPort
|
||
|
a = ellipse's horizontal radius (must be greater than O)
|
||
|
b = ellipse's vertical radius (must be greater than O)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DrawGList
|
||
|
Description: processes a GEL list, drawing bobs and constructing a copper list
|
||
|
for VSprites
|
||
|
Library: graphics.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: DrawGList(rastPort, viewPort)
|
||
|
C: void DrawGList(struct RastPort *, struct ViewPort *)
|
||
|
Machine Language: DrawGList(a1, a0)
|
||
|
Modula-2: DrawGList(rastPort: RastPortPtr; viewPort: ViewPortPtr)
|
||
|
Arguments: rastPort = RastPort where bobs will be drawn
|
||
|
viewPort = ViewPort in which VSprites will be created
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
DrawImage
|
||
|
Description: draw the specified image
|
||
|
Library: intuition.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: DrawImage(rastPort, image, leftOffset, topOffset)
|
||
|
C: long DrawImage(struct RastPort *, struct Image *, long, long)
|
||
|
Machine Language: DrawImage(a0, a1, d0, d1)
|
||
|
Modula-2: DrawImage(rastPort: RastPortPtr; image: ImagePtr; leftOffset,
|
||
|
topOffset: INTEGER)
|
||
|
Arguments: rastPort = RastPort where image will be drawn
|
||
|
image = Image to be drawn
|
||
|
leftOffset = horizontal placement offset for image
|
||
|
topOffset = vertical placement offset for image
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Duplock
|
||
|
Description: duplicates a lock
|
||
|
Library: dos.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: newlock = DupLock(lock)
|
||
|
C: BPTR DupLock(BPTR)
|
||
|
Machine Language: d0 = DupLock(d1)
|
||
|
Modula-2: DupLock(lock: FileLock): FileLock
|
||
|
Arguments: lock = lock to duplicate
|
||
|
Result: newlock = duplicate lock
|
||
|
-------------------------
|
||
|
Enable
|
||
|
Description: enables interrupt processing
|
||
|
Library: exec.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: Enable( )
|
||
|
C: void Enable(void)
|
||
|
Machine Language: Enable( )
|
||
|
Modula-2: Enable( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
EndRefresh
|
||
|
Description: ends optimized refresh of a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$016E (-366)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: EndRefresh(window, complete)
|
||
|
C: void EndRefresh(struct Window *, long)
|
||
|
Machine Language: EndRefresh(a0, d0)
|
||
|
Modula-2: EndRefresh(window: WindowPtr; complete: BOOLEAN)
|
||
|
Arguments: window = window in optimized-refresh mode
|
||
|
complete = TRUE if window is completely refreshed; FALSE if
|
||
|
not
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
EndRequest
|
||
|
Description: removes requester from window
|
||
|
Library: intuition.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: EndRequest(requester, window)
|
||
|
C: void EndRequest(struct Requester *, struct Window *)
|
||
|
Machine Language: EndRequest(a0, a1)
|
||
|
Modula-2: EndRequest(requester: RequesterPtr; window: WindowPtr)
|
||
|
Arguments: requester = requester to remove
|
||
|
window = window which is associated with requester
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
EndUpdate
|
||
|
Description: removes damage list and restores layer to normal state
|
||
|
Library: layers.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: EndUpdate(layer, flag)
|
||
|
C: void EndUpdate(struct Layer *, long)
|
||
|
Machine Language: EndUpdate(a0, d0)
|
||
|
Modula-2: EndUpdate(layer: LayerPtr; flag: BOOLEAN)
|
||
|
Arguments: layer = layer to return to normal state
|
||
|
flag = TRUE if update was complete-damage list will be
|
||
|
cleared; FALSE if update was not complete-damage list will be
|
||
|
retained
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Enqueue
|
||
|
Description: inserts or appends node to a system queue
|
||
|
Library: exec.library
|
||
|
Offset: -$010E (-270)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: Enqueue(list, node)
|
||
|
C: void Enqueue(struct List *, struct Node *)
|
||
|
Machine Language: Enqueue(a0, a0)
|
||
|
Modula-2: Enqueue(list: ListPtr; node: NodePtr)
|
||
|
Arguments: list = system queue header
|
||
|
node = node to insert or append
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Examine
|
||
|
Description: examines a directory or file
|
||
|
Library: dos.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = Examine(lock, infoBlock)
|
||
|
C: long Examine(BPTR, struct FileInfoBlock *)
|
||
|
Machine Language: d0 = Examine(d1, d2)
|
||
|
Modula-2: Examine(lock: FileLock; infoBlock: FileInfoBlockPtr): BOOLEAN
|
||
|
Arguments: lock = lock of directory or file to examine
|
||
|
infoBlock = info block to receive directory or file information
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
Execute
|
||
|
Description: executes a CLI command
|
||
|
Library: dos.library
|
||
|
Offset: -$00DE (-222)
|
||
|
Modula-2 Module: DOSLoader
|
||
|
Syntax: success = Execute(command, input, output)
|
||
|
C: long Execute(char *, BPTR, BPTR)
|
||
|
Machine Language: d0 = Execute(d1, d2, d3)
|
||
|
Modula-2: Execute(command: STRPTR; input, output: FileHandle):
|
||
|
BOOLEAN
|
||
|
Arguments: command = NULL terminated string containing CLI command
|
||
|
input = file handle for input redirection; NULL if none
|
||
|
output = file handle for output redirection; NULL if none
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
Exit
|
||
|
Description: ends a program
|
||
|
Library: dos.library
|
||
|
Offset: -$0090 (-144)
|
||
|
Modula-2 Module: DOSProcess
|
||
|
Syntax: Exit(returnCode)
|
||
|
C: void Exit(long)
|
||
|
Machine Language: Exit(d1)
|
||
|
Modula-2: Exit(returnCode: LONGINT)
|
||
|
Arguments: returnCode = return code passed to parent (usually the CLI)-by
|
||
|
convention, a value of zero implies no error
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ExNext
|
||
|
Description: examines the next entry in a directory
|
||
|
Library: dos.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = ExNext(lock, infoBlock)
|
||
|
C: long ExNext(BPTR, struct FilelnfoBlock *)
|
||
|
Machine Language: d0 = ExNext(d1, d2)
|
||
|
Modula-2: ExNext(lock: FileLock; infoBlock: FileInfoBlockPtr): BOOLEAN
|
||
|
Arguments: lock = lock of directory to examine
|
||
|
infoBlock = info block to receive entry information
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
FastRand
|
||
|
Description: generates a somewhat random integer
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: rnd = FastRand(seed)
|
||
|
C: long FastRand(long)
|
||
|
Machine Language: move.l #long,-(sp)
|
||
|
jsr _FastRand ;rnd returned in d0
|
||
|
addq.l #4,sp
|
||
|
Modula-2: not available, use Random in RandomNumbers module
|
||
|
Arguments: seed = value used to seed random number
|
||
|
Result: rnd = random number calculate using the following C equation:
|
||
|
rnd=(seed << 1) ^ 0x1872B41
|
||
|
-------------------------
|
||
|
FattenLayerInfo
|
||
|
Description: converts 1.0 LayerInfo structure to 1.1-1.3-compatible LayerInfo
|
||
|
structure
|
||
|
Library: layers.library
|
||
|
Offset: -$009C (-156)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: FattenLayerInfo(layerInfo)
|
||
|
C: void FattenLayerInfo(struct Layer_Info *)
|
||
|
Machine Language: FattenLayerInfo(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: layerInfo = LayerInfo structure to update
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FindConfigBoard
|
||
|
Description: finds a matching ConfigDev entry
|
||
|
Library: expansion.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: configDev = FindConfigBoard(oldConfigDev, manufacturer,
|
||
|
product)
|
||
|
C: struct ConfigDev *FindConfigBoard(long, long, long)
|
||
|
Machine Language: d0 = FindConfigBoard(a0, d0, d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: oldConfigDev = ConfigDev structure just before the location in
|
||
|
ConfigDev list where search should begin; NULL to start search at
|
||
|
the beginning of the list
|
||
|
manufacturer = manufacturer code to search for; -1 to ignore
|
||
|
manufacturer code
|
||
|
product = product code to search for; -1 to ignore product coed
|
||
|
Result: configDev = first ConfigDev structure that matches the manufac-
|
||
|
turer and product codes specified; NULL if no more matches
|
||
|
-------------------------
|
||
|
FindName
|
||
|
Description: finds a system list node
|
||
|
Library: exec.library
|
||
|
Offset: -$0114 (-276)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: node = FindName(start, name)
|
||
|
C: struct Node *FindName(struct List *, char *)
|
||
|
Machine Language: d0 = FindName(a0, a1)
|
||
|
Modula-2: FindName(start: ADDRESS; name: STRPTR): NodePtr
|
||
|
Arguments: start = list header or list node to start search (if node this one is
|
||
|
skipped)
|
||
|
name = NULL terminated string that specifies name of node
|
||
|
Result: node = pointer to specified node; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
FindPort
|
||
|
Description: finds a public message port
|
||
|
Library: exec.library
|
||
|
Offset: -$0186 (-390)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: port = FindPort(name)
|
||
|
C: struct MsgPort *FindPort(char *)
|
||
|
Machine Language: d0 = FindPort(a1)
|
||
|
Modula-2: FindPort(name: STRPTR): MsgPortPtr
|
||
|
Arguments: name = NULL terminated string that specifies name of port
|
||
|
Result: port = pointer to specified port; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
FindResident
|
||
|
Description: finds a Resident structure
|
||
|
Library: exec.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Resident
|
||
|
Syntax: resident = FindResident(name)
|
||
|
C: struct Resident *FindResident(char *)
|
||
|
Machine Language: d0 = FindResident(a1)
|
||
|
Modula-2: FindResident(name: STRPTR): ResidentPtr
|
||
|
Arguments: name = NULL terminated string that specifies name of Resident
|
||
|
structure
|
||
|
Result: resident = pointer to specified Resident structure; NULL if
|
||
|
unsuccessful
|
||
|
-------------------------
|
||
|
FindSemaphore
|
||
|
Description: finds a SignalSemaphore structure
|
||
|
Library: exec.library
|
||
|
Offset: -$0252 (-612)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: semaphore = FindSemaphore(name)
|
||
|
C: struct SignalSemaphore *FindSemaphore(char *)
|
||
|
Machine Language: d0 = FindSemaphore(a1)
|
||
|
Modula-2: FindSemaphore(name: STRPTR): SignalSemaphorePtr
|
||
|
Arguments: name = NULL terminated string that specifies name of
|
||
|
semaphore
|
||
|
Result: semaphore = pointer to specified SignalSemaphore structure;
|
||
|
NULL if unsuccessful
|
||
|
-------------------------
|
||
|
FindTask
|
||
|
Description: finds a task
|
||
|
Library: exec.library
|
||
|
Offset: -$0126 (-294)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: task = FindTask(name)
|
||
|
C: struct Task *FindTask(char *)
|
||
|
Machine Language: d0 = FindTask(a1)
|
||
|
Modula-2: FindTask(name: STRPTR): TaskPtr
|
||
|
Arguments: name = NULL terminated string that specifies name of task
|
||
|
Result: task = pointer to specified task; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
FindToolType
|
||
|
Description: finds value of a ToolType variable
|
||
|
Library: icon.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: value = FindToolType(toolTypeArray, typeName)
|
||
|
C: struct char *FindToolType(char *, char *)
|
||
|
Machine Language: d0 = FindToolType(a0, a1)
|
||
|
Modula-2: FindToolType(toolTypeArray: StrArrayPtr; typeName: STRPTR):
|
||
|
ADDRESS
|
||
|
Arguments: toolTypeArray = pointer to an array of strings containing tool
|
||
|
types
|
||
|
typeName = NULL terminated string that specifies tool type to
|
||
|
find
|
||
|
Result: value = pointer to string containing specified tool type; NULL if
|
||
|
typeName not found in toolTypeArray
|
||
|
-------------------------
|
||
|
Flood
|
||
|
Description: floods (fills) an area of a RastPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$014A (-330)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: Flood(rastPort, mode, x, y)
|
||
|
C: void Flood(struct RastPort *, long, long, long)
|
||
|
Machine Language: Flood(a1, d2, d0, d1)
|
||
|
Modula-2: Flood(rastPort: RastPortPtr; mode: LONGCARD; x, y: INTEGER)
|
||
|
Arguments: rastPort = RastPort to fill
|
||
|
mode = type of fill- 0 (fill pixels that are the same color as
|
||
|
AOLPen) or 1 (fill pixels that are the same color as pixel at x,y)
|
||
|
x = horizontal coordinate where fill will begin
|
||
|
y = vertical coordinate where fill will begin
|
||
|
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FlushCList
|
||
|
Description: clears a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: FlushCList(cList)
|
||
|
C: void FlushCList(long)
|
||
|
Machine Language: FlushCList(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = CList header-as returned by AllocCList( )
|
||
|
or StrToCL( )-used to manage character list to clear
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Forbid
|
||
|
Description: prevents task rescheduling
|
||
|
Library: exec.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: Forbid( )
|
||
|
C: void Forbid(void)
|
||
|
Machine Language: Forbid( )
|
||
|
Modula-2: Forbid( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
fpa
|
||
|
Description: converts a fast floating point number into an ASCII string
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: exp = fpa(fnum, string)
|
||
|
C: long fpa(float, char *)
|
||
|
Machine Language: pea string
|
||
|
move.l fnum,-(sp)
|
||
|
jsr _fpa ;exp returned in d0 and string equals fnum
|
||
|
addq.l #8,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = floating point number to convert
|
||
|
string = address of string to receive ASCII equivalent of fnum
|
||
|
argument
|
||
|
Result: exp = integer exponent of fnum
|
||
|
-------------------------
|
||
|
fpbcd
|
||
|
Description: converts a fast floating point number into BCD format
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fpbcd(fnum, string)
|
||
|
C: void fpbcd(float, char *)
|
||
|
Machine Language: pea string
|
||
|
move.l fnum,-(sp)
|
||
|
jsr _fpbcd ;BCD equivalent of fnum returned in string
|
||
|
addq.l #8,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = floating point number to convert
|
||
|
string = address of five-byte string to receive BCD equivalent of
|
||
|
fnum argument
|
||
|
Result: string argument receives the BCD equivalent of fnum argument
|
||
|
-------------------------
|
||
|
FreeBoardMem
|
||
|
Description: frees expansion board memory (opposite of AllocBoardMem( )
|
||
|
Library: expansion.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: FreeBoardMem(startSlot, slotSpec)
|
||
|
C: void FreeBoardMem(long, long)
|
||
|
Machine Language: d0 = FreeBoardMem(d0, d1)
|
||
|
Modula-2: FreeBoardMem(startslot, slotSpeC: INTEGER)
|
||
|
Arguments: startSlot = slot number as returned by AllocBoardMem( )
|
||
|
slotSpec = number of slots to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Modula-2: FreeMem(memoryBlock: ADDRESS: byteSize: LONGCARD)
|
||
|
Arguments: memoryBlock = pointer to memory block to free
|
||
|
byteSize = size of block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeCList
|
||
|
Description: releases character list descriptor and any resources it uses
|
||
|
Library: clist.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: FreeCList(cList)
|
||
|
C: void FreeCList(long)
|
||
|
Machine Language: FreeCList(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = descriptor of character list to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeColorMap
|
||
|
Description: returns memory used by a ColorMap structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$0240 (-576)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: FreeColorMap(colorMap)
|
||
|
C: void FreeColorMap(struct ColorMap *)
|
||
|
Machine Language: FreeColorMap(a0)
|
||
|
Modula-2: FreeColorMap(colorMap: ColorMapPtr)
|
||
|
Arguments: colorMap = ColorMap structure to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeConfigDev
|
||
|
Description: frees a ConfigDev structure
|
||
|
Library: expansion.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: ConfigVars
|
||
|
Syntax: FreeConfigDev(configDev)
|
||
|
C: void FreeConfigDev(struct ConfigDev *)
|
||
|
Machine Language: FreeConfigDev(a0)
|
||
|
Modula-2: FreeConfigDev(configDev: ConfigDevPtr)
|
||
|
Arguments: configDev = ConfigDev structure as returned by AllocConfigDev( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeCopList
|
||
|
Description: returns memory allocated for an intermediate copper list
|
||
|
Library: graphics.library
|
||
|
Offset: -$0222 (-546)
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: FreeCopList(copList)
|
||
|
C: void FreeCopList(struct CopList *)
|
||
|
Machine Language: FreeCopList(a0)
|
||
|
Modula-2: FreeCopList(copList: CopListPtr)
|
||
|
Arguments: copList = CopList structure to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeCprList
|
||
|
Description: returns memory allocated for a hardware copper list
|
||
|
Library: graphics.library
|
||
|
Offset: -$0234 (-564)
|
||
|
Modula-2 Module: Copper
|
||
|
Syntax: FreeCprList(cprlist)
|
||
|
C: void FreeCprList(struct cprlist *)
|
||
|
Machine Language: FreeCprList(a0)
|
||
|
Modula-2: FreeCprList(cprlist: cprlistPtr)
|
||
|
Arguments: cprlist = cprlist structure to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeDiskObject
|
||
|
Description: frees memory allocated for a Workbench disk object
|
||
|
Library: icon.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: FreeDiskObject(diskObj)
|
||
|
C: void FreeDiskObject(struct DiskObject *)
|
||
|
Machine Language: FreeDiskObject(a0)
|
||
|
Modula-2: FreeDiskObject(diskObj: DiskObjectPtr)
|
||
|
Arguments: diskObj = DiskObject structure to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeEntry
|
||
|
Description: frees many regions of memory
|
||
|
Library: exec.library
|
||
|
Offset: -$00E4 (-228)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: FreeEntry(memList)
|
||
|
C: void FreeEntry(struct MemList *)
|
||
|
Machine Language: FreeEntry(a0)
|
||
|
Modula-2: FreeEntry(memList: MemListPtr)
|
||
|
Arguments: memList = MemList structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeExpansionMem
|
||
|
Description: frees expansion memory
|
||
|
Library: expansion.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: FreeExpansionMem(startSlot, numSlots)
|
||
|
C: void FreeExpansionMem(long, long)
|
||
|
Machine Language: FreeExpansionMem(d0, d1)
|
||
|
Modula-2: FreeExpansionMem(startSlot, numSlots: INTEGER)
|
||
|
Arguments: startSlot = slot number as returned by AllocExpansionMem( )
|
||
|
slotSpec = number of slots to free
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeFreeList
|
||
|
Description: frees all memory in a free list
|
||
|
Library: icon.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: FreeFreeList(freeList)
|
||
|
C: void FreeFreeList(struct FreeList *)
|
||
|
Machine Language: FreeFreeList(a0)
|
||
|
Modula-2: FreeFreeList(freeList: FreeListPtr)
|
||
|
Arguments: memList = FreeList structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeGBuffers
|
||
|
Description: frees memory allocated by GetGBuffers( )
|
||
|
Library: graphics.library
|
||
|
Offset: -$0258 (-600)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: FreeGBuffers(animOb, rastPort, dBuffer)
|
||
|
C: void FreeGBuffers(struct AnimOb *, struct RastPort *, long)
|
||
|
Machine Language: FreeGBuffers(a0, a1, d0)
|
||
|
Modula-2: FreeGBuffers(animOb: AnimObPtr; rastPort: RastPortPtr; dBuffer:
|
||
|
BOOLEAN)
|
||
|
Arguments: animOb = AnimOb structure
|
||
|
rastPort = Rastport structure
|
||
|
dBuffer = double-buffer flag-TRUE for double-buffering
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeMem
|
||
|
Description: frees memory allocated by GetGBuffers( )
|
||
|
Library: exec.library
|
||
|
Offset: -$00D2 (-210)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: FreeMem(memoryBlock, byteSize)
|
||
|
C: void FreeMem(void *, long)
|
||
|
Machine Language: FreeMem(a1, d0)
|
||
|
Modula-2: FreeMem(memoryBlock: ADDRESS: byteSize: LONGCARD)
|
||
|
Arguments: memoryBlock = pointer to memory block to free
|
||
|
byteSize = size of block in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeRaster
|
||
|
Description: frees memory allocated by AllocRaster( )
|
||
|
Library: graphics.library
|
||
|
Offset: -$01F2 (-498)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: FreeRaster(p, width, height)
|
||
|
C: void FreeRaster(PLANEPTR, long, long)
|
||
|
Machine Language: FreeRaster(a0, d0, d1)
|
||
|
Modula-2: FreeRaster(p: PlanePtr; width, height: CARDINAL)
|
||
|
Arguments: p = memory block returned by AllocRaster( )
|
||
|
width = width of bitplanes in pixels
|
||
|
height = height of bitplanes in pixels
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeRemember
|
||
|
Description: frees memory allocated by AllocRemember( )
|
||
|
Library: intuition.library
|
||
|
Offset: -$0198 (-408)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: FreeRemember(rememberKey, reallyForget)
|
||
|
C: void FreeRemember(struct Remember *, long)
|
||
|
Machine Language: FreeRemember(a0, d0)
|
||
|
Modula-2: FreeRemember(rememberKey: RememberPrt; reallyForget:
|
||
|
BOOLEAN)
|
||
|
Arguments: rememberKey = address of pointer to Remember structure
|
||
|
reallyForget = TRUE to free memory and link nodes; FALSE to
|
||
|
free only link nodes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeSignal
|
||
|
Description: frees a signal bit
|
||
|
Library: exec.library
|
||
|
Offset: -$0150 (-336)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: FreeSignal(signalNum)
|
||
|
C: void FreeSignal(long)
|
||
|
Machine Language: FreeSignal(d0)
|
||
|
Modula-2: FreeSignal(signalNum: SIGNAL)
|
||
|
Arguments: signalNum = signal number to free (0-31)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeSprite
|
||
|
Description: makes sprite available for others to use
|
||
|
Library: graphics.library
|
||
|
Offset: -$019E (-414)
|
||
|
Modula-2 Module: Sprites
|
||
|
Syntax: FreeSprite(pick)
|
||
|
C: void FreeSprite(long)
|
||
|
Machine Language: FreeSprite(d0)
|
||
|
Modula-2: FreeSprite(pick: INTEGER)
|
||
|
Arguments: pick = number of sprite to free (0-7)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeSysRequest
|
||
|
Description: frees memory allocated by BuildSysRequest( )
|
||
|
Library: intuition.library
|
||
|
Offset: -$0174 (-372)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: FreeSysRequest(window)
|
||
|
C: void FreeSysRequest(struct Window *)
|
||
|
Machine Language: FreeSysRequest(a0)
|
||
|
Modula-2: FreeSysRequest(window: WindowPtr)
|
||
|
Arguments: window = Window structure as returned by BuildSysRequest( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeTrap
|
||
|
Description: frees a processor trap
|
||
|
Library: exec.library
|
||
|
Offset: -$015C (-348)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: FreeTrap(trapNum)
|
||
|
C: void FreeTrap(long)
|
||
|
Machine Language: FreeTrap(d0)
|
||
|
Modula-2: FreeTrap(trapNum: TRAP)
|
||
|
Arguments: trapNum = trap number to free (0-15)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeVPortCoplists
|
||
|
Description: frees all intermediate copper lists and their headers from a
|
||
|
ViewPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$021C (-540)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: FreeVPortCopLists(viewPort)
|
||
|
C: void FreeVPortCopLists(struct ViewPort *)
|
||
|
Machine Language: FreeVPortCopLists(a0)
|
||
|
Modula-2: FreeVPortCopLists(viewPort: ViewPortPtr)
|
||
|
Arguments: viewPort = ViewPort structure containing copper lists
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
FreeWBObject
|
||
|
Description: frees memory allocated for a Workbench object
|
||
|
Library: icon.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: FreeWBObject(object)
|
||
|
C: void FreeWBObject(struct WBObject *)
|
||
|
Machine Language: FreeWBObject(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: object = WBObject structure to free
|
||
|
Result: none
|
||
|
--------------------------
|
||
|
GetCC
|
||
|
Description: gets 68000/68010 condition codes
|
||
|
Library: exec.library
|
||
|
Offset: -$0210 (-528)
|
||
|
Modula-2 Module: Exec
|
||
|
Syntax: condition = GetCC( )
|
||
|
C: long GetCC(void)
|
||
|
Machine Language: d0 = GetCC( )
|
||
|
Modula-2: GetCC( ): BITSET
|
||
|
Arguments: none
|
||
|
Result: condition = 68000/68010 condition code
|
||
|
-------------------------
|
||
|
GetCLBuf
|
||
|
Description: converts character list into contiguous data
|
||
|
Library: clist.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: length = GetCLBuf(cList, buffer, maxLength)
|
||
|
C: long GetCLBuf(long, char *, long)
|
||
|
Machine Language: d0 = GetCLBuf(a0, a1, d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
buffer = buffer to hold data
|
||
|
maxLength = maximum size of buffer in bytes
|
||
|
Result: length = number of bytes copied into buffer
|
||
|
-------------------------
|
||
|
GetCLChar
|
||
|
Description: gets a byte from the beginning of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: byte = GetCLChar(cList)
|
||
|
C: long GetCLChar(long)
|
||
|
Machine Language: d0 = GetCLChar(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
Result: byte = byte from beginning of character list; -1 if no data
|
||
|
-------------------------
|
||
|
GetCLWord
|
||
|
Description: gets a word from the beginning of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: word = GetCLWord(cList)
|
||
|
C: long GetCLWord(long)
|
||
|
Machine Language: d0 = GetCLWord(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
Result: word = word from beginning of character list; -1 if no data
|
||
|
-------------------------
|
||
|
GetColorMap
|
||
|
Description: allocates and initializes a ColorMap structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$023A (-570)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: colorMap = GetColorMap(entries)
|
||
|
C: struct ColorMap *GetColorMap(long)
|
||
|
Machine Language: d0 = GetColorMap(d0)
|
||
|
Modula-2: GetColorMap(colorMap: LONGINT): ColorMapPtr
|
||
|
Arguments: entries = number of entries for this color map
|
||
|
Result: colorMap = pointer to ColorMap structure; O if unsuccessful
|
||
|
-------------------------
|
||
|
GetCurrentBinding
|
||
|
Description: sets static board configuration area
|
||
|
Library: expansion.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: actual = GetCurrentBinding(currentBinding, size)
|
||
|
C: long GetCurrentBinding(long, long)
|
||
|
Machine Language: d0 = GetCurrentBinding(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: currentBinding = CurrentBinding structure
|
||
|
size = size of user's BindDriver structure
|
||
|
Result: actual = actual size of the CurrentBinding structure
|
||
|
-------------------------
|
||
|
GetDefPrefs
|
||
|
Description: gets a copy of the default Preferences
|
||
|
Library: intuition.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: Preferences
|
||
|
Syntax: prefBuffer = GetDefPrefs(prefBuffer, size)
|
||
|
C: struct Preferences *GetDefPrefs(struct Preferences *, long)
|
||
|
Machine Language: d0 = GetDefPrefs(a0, d0)
|
||
|
Modula-2: GetDefPrefs(prefBuffer: ADDRESS; size: INTEGER): ADDRESS
|
||
|
Arguments: prefBuffer = buffer to receive copy of default Preferences
|
||
|
size = size of buffer in bytes
|
||
|
Result: prefBuffer = pointer to your buffer
|
||
|
-------------------------
|
||
|
GetDiskObject
|
||
|
Description: reads a Workbench DiskObject (.info file) from disk
|
||
|
Library: icon.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: diskObj = GetDiskObject(name)
|
||
|
C: struct DiskObject *GetDiskObject(char *)
|
||
|
Machine Language: d0 = GetDiskObject(a0)
|
||
|
Modula-2: GetDiskObject(name: STRPTR): DiskObjectPtr
|
||
|
Arguments: name = name of Workbench object (.info file)
|
||
|
Result: diskObj = pointer to DiskObject structure; 0 if unsuccessful
|
||
|
-------------------------
|
||
|
GetGBuffers
|
||
|
Description: attempts to allocate all buffers of an enter AnimOb
|
||
|
Library: graphics.library
|
||
|
Offset: -$00A8 (-168)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: success = GetGBuffers(animOb, rastPort, dBuffer)
|
||
|
C: long GetGBuffers(struct AnimOb *, struct RastPort *, long)
|
||
|
Machine Language: d0 = GetGBuffers(a0, a1, d0)
|
||
|
Modula-2: GetGBuffers(animOb: AnimObPtr; rastPort: RastPortPtr; dBuffer:
|
||
|
BOOLEAN): BOOLEAN
|
||
|
Arguments: animOb = AnimOb structure
|
||
|
rastPort = Rastport structure
|
||
|
dBuffer = double-buffer flag-TRUE for double-buffering
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
GetIcon
|
||
|
Description: reads a DiskObject structure from disk
|
||
|
Library: icon.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: status = GetIcon(name, icon, free)
|
||
|
C: long GetIcon(char *, struct DiskObject *, struct FreeList *)
|
||
|
Machine Language: d0 = GetIcon(a0, a1, a2)
|
||
|
Modula-2: not available
|
||
|
Arguments: name = name of icon (.info file)
|
||
|
icon = DiskObject structure
|
||
|
free = FreeList structure
|
||
|
Result: status = nonzero if successful
|
||
|
-------------------------
|
||
|
GetMsg
|
||
|
Description: gets next message from a message port
|
||
|
Library: exec.library
|
||
|
Offset: -$0174 (-372)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: message = GetMsg(port)
|
||
|
C: struct Message *GetMsg(struct MsgPort *)
|
||
|
Machine Language: d0 = GetMsg(a0)
|
||
|
Modula-2: GetMsg(port: MsgPortPtr): ADDRESS
|
||
|
Arguments: port = receiving message port
|
||
|
Result: message = pointer to first message; NULL if no message
|
||
|
-------------------------
|
||
|
GetPrefs
|
||
|
Description: gets Preferences' current settings
|
||
|
Library: intuition.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: Preferences
|
||
|
Syntax: prefBuffer = GetDefPrefs(prefBuffer, size)
|
||
|
C: struct Preferences *GetDefPrefs(struct Preferences *, long)
|
||
|
Machine Language: d0 = GetDefPrefs(a0, d0)
|
||
|
Modula-2: GetDefPrefs(prefBuffer: ADDRESS; size: INTEGER): ADDRESS
|
||
|
Arguments: prefBuffer = buffer to receive copy of Preferences
|
||
|
size = size of buffer in bytes
|
||
|
Result: prefBuffer = pointer to your buffer
|
||
|
-------------------------
|
||
|
GetRGB4
|
||
|
Description: gets the value of an entry in a ColorMap structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$0246 (-582)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: value = GetRGB4(colorMap, entry)
|
||
|
C: long GetRGB4(struct ColorMap *, long)
|
||
|
Machine Language: d0 = GetRGB4(a0, d0)
|
||
|
Modula-2: GetRGB4(colorMap: ColorMapPtr; entry: LONGINT): INTEGER
|
||
|
Arguments: colorMap = ColorMap structure
|
||
|
entry = index into color table, specifying desired entry
|
||
|
Result: value = two-byte, right-justified RGB value with four bits per
|
||
|
color-red, green, blue; -1 if no valid entry
|
||
|
-------------------------
|
||
|
GetSereenData
|
||
|
Description: copies all or part of a Screen structure into buffer; opens specifled
|
||
|
screen if not already open
|
||
|
Library: intuition.library
|
||
|
Offset: -$01AA (-426)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = GetScreenData(buffer, size, type, screen)
|
||
|
C: long GetScreenData(char *, long, long, struct Screen *)
|
||
|
Machine Language: d0 = GetScreenData(a0, d0, d1, a1)
|
||
|
Modula-2: GetScreenData(buffer: ADDRESS; size: CARDINAL; type:
|
||
|
ScreenFlagSet; screen: ScreenPtr): BOOLEAN
|
||
|
Arguments: buffer = buffer in which data will be placed
|
||
|
size = size of buffer in bytes
|
||
|
type = screen type-CUSTOMSCREEN, WORKBENCHSCREEN
|
||
|
screen = custom Screen structure; ignored if type argument
|
||
|
equals WORKBENCHSCREEN
|
||
|
|
||
|
Result: success = TRUE if successful; FALSE if screen not available and
|
||
|
could not be opened
|
||
|
-------------------------
|
||
|
GetSprite
|
||
|
Description: allocates hardware sprite for simple sprite manager
|
||
|
Library: graphics.library
|
||
|
Offset: -$0198 (-408)
|
||
|
Modula-2 Module: Sprites
|
||
|
Syntax: spriteNumber = GetSprite(sprite, pick)
|
||
|
C: long GetSprite(struct SimpleSprite *, long)
|
||
|
Machine Language: d0 = GetSprite(a0, d0)
|
||
|
Modula-2: GetSprite(sprite: SimpleSpritePtr; pick: INTEGER): INTEGER
|
||
|
Arguments: sprite = SimpleSprite structure
|
||
|
pick = number of desired sprite (0-7); -1 for next available
|
||
|
sprite
|
||
|
Result: spriteNumber = number of sprite allocated; -1 if sprite
|
||
|
unavailable
|
||
|
-------------------------
|
||
|
GetWBObject
|
||
|
Description: reads in a Workbench object from disk
|
||
|
Library: icon.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: object = GetWBObject(name)
|
||
|
C: struct WBObject *GetWBObject(char *)
|
||
|
Machine Language: d0 = GetWBObject(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: name = NULL terminated string that specifies name of Work-
|
||
|
bench object
|
||
|
Result: object = pointer to Workbench object; 0 if unsuccessful
|
||
|
-------------------------
|
||
|
IEEEDPAbs
|
||
|
Description: obtains the absolute value of an IEEE double-precision floating-
|
||
|
point number
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPAbs(fnum2)
|
||
|
C: double IEEEDPAbs(double)
|
||
|
Machine Language: d0/d1 = IEEEDPAbs(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = absolute value of fnum2 in IEEE double-precision
|
||
|
floating-point format
|
||
|
-------------------------
|
||
|
IEEEDPAcos
|
||
|
Description: obtains the arccosine of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPAcos(fnum2)
|
||
|
C: double IEEEDPAcos(double)
|
||
|
Machine Language: d0/d1 = IEEEDPAcos(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing the cosine of an angle
|
||
|
Result: fnum1 = IEEE double-precision floating-point value of fnum2 an-
|
||
|
gle in radians
|
||
|
-------------------------
|
||
|
IEEEDPAdd
|
||
|
Description: adds two IEEE double-precision floating-point numbers
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPAdd(fnum2, fnum3)
|
||
|
C: double IEEEDPAdd(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPAdd(d0/d1, d2/d3)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
fnum3 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = fnum2 plus fnum3 in IEEE double-precision floating-
|
||
|
point format
|
||
|
-------------------------
|
||
|
IEEEDPAsin
|
||
|
Description: obtains the arcsine of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum2 = IEEEDPAsin(fnum2)
|
||
|
C: double IEEEDPAsin(double)
|
||
|
Machine Language: d0/d1 = IEEEDPAsin(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing the sine of an angle
|
||
|
Result: fnum1 = IEEE double-precision floating-point value of fnum2 an-
|
||
|
gle in radians
|
||
|
-------------------------
|
||
|
IEEEDPAtan
|
||
|
Description: obtains the arctangent of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPAtan(fnum2)
|
||
|
C: double IEEEDPAtan(double)
|
||
|
Machine Language: d0/d1 = IEEEDPAtan(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing the tangent of an angle
|
||
|
Result: fnum1 = IEEE double-precision floating-point value of fnum2 an-
|
||
|
gle in radians
|
||
|
-------------------------
|
||
|
IEEEDPCeil
|
||
|
Description: obtains the Ceil function of an IEEE double-precision floating-
|
||
|
point number (rounds it up)
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPCeil(fnum2)
|
||
|
C: double IEEEDPCeil(double)
|
||
|
Machine Language: d0/d1 = IEEEDPCeil(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point integer value that's
|
||
|
closest to, but not less than the value of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPCmp
|
||
|
Description: compares two IEEE double-precision floating-point numbers
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: flag = IEEEDPCmp(fnum1, fnum2)
|
||
|
C: long IEEEDPCmp(double, d0uble)
|
||
|
Machine Language: d0 = IEEEDPCmp(d0/d1, d2/d3)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum1 = IEEE double-precision floating-point number
|
||
|
fnum2 = IEEE double-precision floating-point number
|
||
|
Result: flag = -1 if fnum1<fnum2; +1 if fnum1>fnum2; 0 if
|
||
|
fnum1 = fnum2
|
||
|
-------------------------
|
||
|
IEEEDPCos
|
||
|
Description: obtains the cosine of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPCos(fnum2)
|
||
|
C: double IEEEDPCos(double)
|
||
|
Machine Language: d0/d1 = IEEEDPCos(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point cosine of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPCosh
|
||
|
Description: obtains the hyperbolic cosine of an IEEE double-precision float-
|
||
|
ing-point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPCosh(fnum2)
|
||
|
C: double IEEEDPCosh(double)
|
||
|
Machine Language: d0/d1 = IEEEDPCosh(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point hyperbolic cosine
|
||
|
of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPDiv
|
||
|
Description: divides one IEEE double-precision floating-point number by
|
||
|
another
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPDiv(fnum2, fnum3)
|
||
|
C: double IEEEDPDiv(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPDiv(d0/d1, d2/d3)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point dividend
|
||
|
fnum3 = IEEE double-precision floating-point divisor
|
||
|
Result: fnum1 = IEEE double-precision floating-point format results of
|
||
|
fnum2 divided by fnum3
|
||
|
-------------------------
|
||
|
IEEEDPExp
|
||
|
Description: obtains the exponent of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPExp(fnum2)
|
||
|
C: double IEEEDPExp(double)
|
||
|
Machine Language: d0/d1 = IEEEDPExp(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point value representing
|
||
|
e raised to the power of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPFieee
|
||
|
Description: converts a IEEE single-precision floating-point number to an IEEE
|
||
|
double-precision floating-point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPFieee(fnum2)
|
||
|
C: double IEEEDPFieee(float)
|
||
|
Machine Language: d0/d1 = IEEEDPFieee(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE single-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point equivalent to
|
||
|
fnum2
|
||
|
-------------------------
|
||
|
IEEEDPFix
|
||
|
Description: converts an IEEE double-precision floating-point number to an
|
||
|
integer
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: inum = IEEEDPFix(fnum)
|
||
|
C: long IEEEDPFix(double)
|
||
|
Machine Language: d0 = IEEEDPFix(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = IEEE double-precision floating-point number
|
||
|
Result: inum = integer equivalent to fnum
|
||
|
-------------------------
|
||
|
IEEEDPFloor
|
||
|
Description: obtains the Floor function of an IEEE double-precision floating-
|
||
|
point number (rounds it down)
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPFloor(fnum2)
|
||
|
C: double IEEEDPFloor(double)
|
||
|
Machine Language: d0/d1 = IEEEDPFloor(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point integer value that's
|
||
|
closest to, but not greater than the value of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPFlt
|
||
|
Description: converts an integer to an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum = IEEEDPFlt(inum)
|
||
|
C: double IEEEDPFlt(long)
|
||
|
Machine Language: d0/d1 = IEEEDPFlt(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: inum = signed integer to be converted
|
||
|
Result: fnum = IEEE double-precision floating-point equivalent to inum
|
||
|
-------------------------
|
||
|
IEEEDPLog
|
||
|
Description: obtains the natural logarithm of an IEEE double-precision floating-
|
||
|
point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPLog(fnum2)
|
||
|
C: double IEEEDPLog(double)
|
||
|
Machine Language: d0/d1 = IEEEDPLog(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point natural logarithm
|
||
|
(base e) of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPlog10
|
||
|
Description: obtains the naparian logarithm (base 10) of an IEEE double-
|
||
|
precision floating-point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPLog10(fnum2)
|
||
|
C: double IEEEDPLog10(double)
|
||
|
Machine Language: d0/d1 = IEEEDPLog10(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point naparian logarithm
|
||
|
(base 10) of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPMul
|
||
|
Description: multiplies one IEEE double-precision floating-point number by
|
||
|
another
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPMul(fnum2, fnum3)
|
||
|
C: double IEEEDPMul(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPMul(d0/d1, d2/d3)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
fnum3 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = product of fnum2 and fnum3 in IEEE double-precision
|
||
|
floating-point format
|
||
|
-------------------------
|
||
|
IEEEDPNeg
|
||
|
Description: negates the value of an IEEE double-precision floating-point number
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPNeg(fnum2)
|
||
|
C: double IEEEDPNeg(double)
|
||
|
Machine Language: d0/d1 = IEEEDPNeg(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number to negate
|
||
|
Result: fnum1 = negative fnum2 in IEEE double-precision floating-point
|
||
|
format
|
||
|
-------------------------
|
||
|
IEEEDPPow
|
||
|
Description: obtains the exponentiation of two IEEE double-precision floating-
|
||
|
point numbers
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPPow(fnum2, fnum3)
|
||
|
C: double IEEEDPPow(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPPow(d2/d3, d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
fnum3 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point value of fnum2
|
||
|
raised to the power of fnum3
|
||
|
-------------------------
|
||
|
IEEEDPSin
|
||
|
Description: obtains the sine of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPSin(fnum2)
|
||
|
C: double IEEEDPSin(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPSin(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point sine of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPSincos
|
||
|
Description: obtains the sine and cosine of an IEEE double-precision floating-
|
||
|
point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPSincos(fnum2, fnum3)
|
||
|
C: double IEEEDPSincos(double, d0uble *)
|
||
|
Machine Language: d0/d1 = IEEEDPSincos(d0/d1, a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
fnum3 = pointer to an IEEE double-precision floating point num-
|
||
|
ber to receive the cosine of fnum2
|
||
|
Result: fnum1 = IEEE double-precision floating-point sine of fnum2 (co-
|
||
|
sine is returned in fnum3)
|
||
|
-------------------------
|
||
|
IEEEDPSinh
|
||
|
Description: obtains the hyperbolic sine of an IEEE double-precision floating-
|
||
|
point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPSinh(fnum2)
|
||
|
C: double IEEEDPSinh(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPSinh(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point hyperbolic sine of
|
||
|
fnum2
|
||
|
-------------------------
|
||
|
IEEEDPSqrt
|
||
|
Description: obtains the square root of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPSqrt(fnum2)
|
||
|
C: double IEEEDPSqrt(double)
|
||
|
Machine Language: d0/d1 = IEEEDPSqrt(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE double-precision floating-point square root of
|
||
|
fnum2
|
||
|
-------------------------
|
||
|
IEEEDPSub
|
||
|
Description: subtracts one IEEE double-precision floating-point number from
|
||
|
another
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPSub(fnum2, fnum3)
|
||
|
C: double IEEEDPSub(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPSub(d0/d1, d2/d3)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
fnum3 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = fnum2 minus fnum3 in IEEE double-precision floating-
|
||
|
point format
|
||
|
-------------------------
|
||
|
IEEEDPTan
|
||
|
Description: obtains the tangent of an IEEE double-precision floating-point
|
||
|
number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPTan(fnum2)
|
||
|
C: double IEEEDPTan(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPTan(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point tangent of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPTanh
|
||
|
Description: obtains the hyperbolic tangent of an IEEE double-precision
|
||
|
floating-point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPTanh(fnum2)
|
||
|
C: double IEEEDPTanh(double, d0uble)
|
||
|
Machine Language: d0/d1 = IEEEDPTanh(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number represent-
|
||
|
ing an angle in radians
|
||
|
Result: fnum1 = IEEE double-precision floating-point hyperbolic tangent
|
||
|
of fnum2
|
||
|
-------------------------
|
||
|
IEEEDPTIeee
|
||
|
Description: converts an IEEE double-precision floating-point number to an
|
||
|
IEEE single-precision floating-point number
|
||
|
Library: mathieeedoubtrans.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = IEEEDPTieee(fnum2)
|
||
|
C: float IEEEDPTieee(double)
|
||
|
Machine Language: d0 = IEEEDPTieee(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = IEEE double-precision floating-point number
|
||
|
Result: fnum1 = IEEE single-precision floating-point equivalent to fnum2
|
||
|
-------------------------
|
||
|
IEEEDPTst
|
||
|
Description: compares an IEEE double-precision floating-point number with
|
||
|
zero
|
||
|
Library: mathieeedoubbas.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: flag = IEEEDPTst(fnum)
|
||
|
C: long IEEEDPTst(double)
|
||
|
Machine Language: d0 = IEEEDPTst(d0/d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = IEEE double-precision floating-point number
|
||
|
Result: flag = -1 if fnum <0; +1 if fnum >0; 0 if fnum=0
|
||
|
-------------------------
|
||
|
IncrCLMark
|
||
|
Description: increments character list mark to the next position
|
||
|
Library: clist.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = IncrCLMark(cList)
|
||
|
C: long IncrCLMark(long)
|
||
|
Machine Language: d0 = IncrCLMark(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor
|
||
|
Result: error = 0 if successful; nonzero if next offset is not in the charac-
|
||
|
ter list
|
||
|
-------------------------
|
||
|
Info
|
||
|
Description: returns information about a disk or disk file
|
||
|
Library: dos.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = Info(lock, infoData)
|
||
|
C: long Info(BPTR, struct InfoData *)
|
||
|
Machine Language: d0 = Info(d1, d2)
|
||
|
Modula-2: Info(lock: FileLock; infoData: InfoDataPtr): BOOLEAN
|
||
|
Arguments: lock = BCPL pointer to a lock
|
||
|
infoData = InfoData structure to be filled
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
InitArea
|
||
|
Description: initializes vector collection matrix
|
||
|
Library: graphics.library
|
||
|
Offset: -$011A (-282)
|
||
|
Modula-2 Module: Areas
|
||
|
Syntax: InitArea(areaInfo, buffer, maxVectors)
|
||
|
C: long InitArea(struct AreaInfo *, short *, long)
|
||
|
Machine Language: InitArea(a0, a1, d0)
|
||
|
Modula-2: InitArea(areaInfo: AreaInfoPtr; buffer: ADDRESS; maxVectors:
|
||
|
INTEGER)
|
||
|
Arguments: areaInfo = AreaInfo structure
|
||
|
buffer = pointer to memory block where vectors will be stored-
|
||
|
must start on word boundary and should be 5*maxVectors bytes
|
||
|
long
|
||
|
maxVectors = maximum number of vectors
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitBitMap
|
||
|
Description: initializes a BitMap structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$0186 (-390)
|
||
|
Modula-2 Module: Graphics
|
||
|
Syntax: InitBitMap(bitMap, depth, width, height)
|
||
|
C: void InitBitMap(struct Bitmap *, long, long, long)
|
||
|
Machine Language: InitBitMap(a0, d0, d1, d2)
|
||
|
Modula-2: InitBitMap(bitMap: BitMapPtr; depth, width, height: INTEGER)
|
||
|
Arguments: bitMap = BitMap structure
|
||
|
depth = number of bit planes to be used
|
||
|
width = width of each bit plane in bits
|
||
|
height = height of each bit plane in lines
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitCLPool
|
||
|
Description: initializes a character list pool
|
||
|
Library: clist.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = InitCLPool(cLPool, size)
|
||
|
C: long InitCLPool(long, long)
|
||
|
Machine Language: d0 = InitCLPool(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cLPool = data area to be used as character list pool
|
||
|
size = size of pool in bytes
|
||
|
Result: error = 0 if successful; nonzero if pool size is too small
|
||
|
-------------------------
|
||
|
InitCode
|
||
|
Description: initializes resident modules with a startup class value and version
|
||
|
number
|
||
|
Library: exec.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: Resident
|
||
|
Syntax: InitCode(startClass, version)
|
||
|
C: void InitCode(long, long)
|
||
|
Machine Language: InitCode(d0, d1)
|
||
|
Modula-2: InitCode(startClass, version: LONGCARD)
|
||
|
Arguments: startClass = startup class of resident module-COLDSTART,
|
||
|
COOLSTART, or WARMSTART
|
||
|
version = version number of resident module
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitGels
|
||
|
Description: initializes a GEL list
|
||
|
Library: graphics.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: InitGels(head, tail, gelsInfo)
|
||
|
C: void InitGels(struct VSprite *, struct VSprite *, struct GelsInfo *)
|
||
|
Machine Language: InitGels(a0, a1, a2)
|
||
|
Modula-2: InitGels(head, tail: VSpritePtr; gelsInfo: GelsInfoPtr)
|
||
|
Arguments: head = VSprite structure to be used as head of GEL list
|
||
|
tail = VSprite structure to be used as tail of GEL list
|
||
|
gelsInfo = GelsInfo structure to be initialized
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitGMasks
|
||
|
Description: initializes all masks of an AnimOb structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$00AE (-174)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: InitGMasks(animOb)
|
||
|
C: void InitGMasks(struct AnimOb *)
|
||
|
Machine Language: InitGMasks(a0)
|
||
|
Modula-2: InitGMasks(animOb: AnimObPtr)
|
||
|
Arguments: animOb = AnimOb structure containing masks to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitLayers
|
||
|
Description: initializes a Layer_Info structure
|
||
|
Library: layers.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: InitLayers(layerInfo)
|
||
|
C: void InitLayers(struct Layer_Info *)
|
||
|
Machine Language: InitLayers(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: layerInfo = Layer_Info structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitMasks
|
||
|
Description: initializes the BorderLine and CollMask values used by a VSprite
|
||
|
structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: InitMasks(vSprite)
|
||
|
C: void InitMasks(struct VSprite *)
|
||
|
Machine Language: InitMasks(a0)
|
||
|
Modula-2: InitMasks(vSprite: VSpritePtr)
|
||
|
Arguments: vSprite = VSprite structure containing BorderLine and CollMask
|
||
|
values to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitRastPort
|
||
|
Description: initializes a RastPort structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$00C6 (-198)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: InitRastPort(rastPort)
|
||
|
C: void InitRastPort(struct RastPort *)
|
||
|
Machine Language: InitRastPort(a1)
|
||
|
Modula-2: InitRastPort(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitRequester
|
||
|
Description: initializes a Requester structure
|
||
|
Library: intuition.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: InitRequester(requester)
|
||
|
C: void InitRequester(struct Requester *)
|
||
|
Machine Language: InitRequester(a0)
|
||
|
Modula-2: InitRequester(requester: RequesterPtr)
|
||
|
Arguments: requester = Requester structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitResident
|
||
|
Description: initializes a resident module
|
||
|
Library: exec.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Resident
|
||
|
Syntax: InitResident(resident, segList)
|
||
|
C: void InitResident(struct Resident *, char *)
|
||
|
|
||
|
Machine Language: InitResident(a1, d1)
|
||
|
Modula-2: InitResident(resident: ResidentPtr; segList: ADDRESS)
|
||
|
Arguments: resident = Resident structure representing resident module to
|
||
|
initialize
|
||
|
segList = a segment list
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitSemaphore
|
||
|
Description: initializes a SignalSemaphore structure
|
||
|
Library: exec.library
|
||
|
Offset: -$022E (-558)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: InitSemaphore(signalSemaphore)
|
||
|
C: void InitSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: InitSemaphore(a0)
|
||
|
Modula-2: InitSemaphore(signalSemaphore: SignalSemaphorePtr)
|
||
|
Arguments: signalSemaphore = SignalSemaphore structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitStruct
|
||
|
Description: clears an area of memory following rules defined by a table
|
||
|
Library: exec.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: InitStruct(initTable, memBlock, size)
|
||
|
C: void InitStruct(char *, char *, long)
|
||
|
Machine Language: InitStruct(a1, a2, d0)
|
||
|
Modula-2: InitStruct(initTable, memBlock: ADDRESS; size: CARDINAL)
|
||
|
Arguments: initTable = pointer to the commands and data used to initialize
|
||
|
memory
|
||
|
memBlock = pointer to memory to be initialized
|
||
|
size = size of memory to clear before it is initialized with
|
||
|
initTable; 0 for no initial clearing of memory
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitTmpRas
|
||
|
Description: initializes chip RAM for use by area-fill, flood-fill, and text
|
||
|
functions
|
||
|
Library: graphics.library
|
||
|
Offset: -$01D4 (-468)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: InitTmpRas(tmpRas, buffer, size)
|
||
|
C: void InitTmpRas(struct TmpRas *, char *, long)
|
||
|
Machine Language: InitTmpRas(a0, a1, d0)
|
||
|
Modula-2: InitTmpRas(tmpRas: TmpRasPtr; buffer: PlanePtr; size:
|
||
|
LONGCARD)
|
||
|
Arguments: tmpRas = TmpRas structure to be linked into a RastPort
|
||
|
buffer = pointer to chip RAM memory
|
||
|
size = size of buffer in bytes
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitView
|
||
|
Description: initializes a View structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$0168 (-360)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: InitView(view)
|
||
|
C: void InitView(struct View *)
|
||
|
Machine Language: InitView(a1)
|
||
|
Modula-2: InitView(view: ViewPtr)
|
||
|
Arguments: view = View structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InitVPort
|
||
|
Description: initializes a ViewPort structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$00CC (-204)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: InitVPort(viewPort)
|
||
|
C: void InitVPort(struct ViewPort *)
|
||
|
Machine Language: InitVPort(a0)
|
||
|
Modula-2: InitVPort(viewPort: ViewPortPtr)
|
||
|
Arguments: viewPort = ViewPort structure to initialize
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Input
|
||
|
Description: gets the initial input file handle assigned to a program
|
||
|
Library: dos.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: file = Input( )
|
||
|
C: BPTR Input(void)
|
||
|
Machine Language: d0 = Input( )
|
||
|
Modula-2: Input( ): FileHandle
|
||
|
Arguments: none
|
||
|
Result: file = BCPL pointer to a file handle
|
||
|
-------------------------
|
||
|
Insert
|
||
|
Description: inserts a Node structure into a doubly-linked list
|
||
|
Library: exec.library
|
||
|
Offset: -$00EA (-234)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: Insert(list, node, listNode)
|
||
|
C: void Insert(struct List *, struct Node *, struct Node *)
|
||
|
Machine Language: Insert(a0, a1, a2)
|
||
|
Modula-2: Insert(list: ListPtr; node, listNode: NodePtr)
|
||
|
Arguments: list = target List header
|
||
|
node = Node structure to insert
|
||
|
listNode = node after which to insert; NULL to insert at head
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
InstallClipRegion
|
||
|
Description: installs a clip region into a layer
|
||
|
Library: layers.library
|
||
|
Offset: -$00AE (-174)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: oldClipRegion = InstallClipRegion(layer, region)
|
||
|
C: struct Region *InstallClipRegion(struct Layer *, struct Region *)
|
||
|
Machine Language: d0 = InstallClipRegion(a0, a1)
|
||
|
Modula-2: InstallClipRegion(layer: LayerPtr; region: RegionPtr): RegionPtr
|
||
|
Arguments: layer = Layer structure to which region will be added
|
||
|
region = Region structure to be added to layer
|
||
|
Result: oldClipRegion = previous clip region that was installed; NULL if
|
||
|
no previous clip region
|
||
|
-------------------------
|
||
|
IntuiTextLength
|
||
|
Description: returns the pixel width of an IntuiText string
|
||
|
Library: intuition.library
|
||
|
Offset: -$014A (-330)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: length = IntuiTextLength(intuiText)
|
||
|
C: long IntuiTextLength(struct IntuiText *)
|
||
|
Machine Language: d0 = IntuiTextLength(a0)
|
||
|
Modula-2: IntuiTextLength(intuiText: IntuiTextPtr): CARDINAL
|
||
|
Arguments: intuiText = IntuiText structure
|
||
|
Result: length = pixel width of text
|
||
|
-------------------------
|
||
|
Intuition
|
||
|
Description: sets Intuition's main entry point, where input events arrive and
|
||
|
are dispatched
|
||
|
Library: intuition.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: Intuition(inputEvent)
|
||
|
C: void Intuition(struct InputEvent *)
|
||
|
Machine Language: Intuition(a0)
|
||
|
Modula-2: Intuition(inputEvent: InputEventPtr)
|
||
|
Arguments: inputEvent = first input event in a linked list of InputEvent
|
||
|
structures
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
IoErr
|
||
|
Description: gets extra information from the system
|
||
|
Library: dos.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: error = IoErr( )
|
||
|
C: long IoErr(void)
|
||
|
Machine Language: d0 = IoErr( )
|
||
|
Modula-2: IoErr( ): LONGINT
|
||
|
Arguments: none
|
||
|
Result: error = error code or other error information
|
||
|
-------------------------
|
||
|
IsInteractive
|
||
|
Description: finds out whether a file is connected to a virtual terminal
|
||
|
Library: dos.library
|
||
|
Offset: -$00D8 (-216)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: status = IsInteractive(file)
|
||
|
C: long IsInteractive(BPTR)
|
||
|
Machine Language: d0 = IsInteractive(d1)
|
||
|
Modula-2: IsInteractive(file: FileHandle): BOOLEAN
|
||
|
Arguments: file = BCPL pointer to a file handle
|
||
|
Result: status = TRUE if file is connected to a virtual terminal; FALSE if
|
||
|
not
|
||
|
-------------------------
|
||
|
ItemAddress
|
||
|
Description: returns address of specified MenuItem
|
||
|
Library: intuition.library
|
||
|
Offset: -$0090 (-144)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: address = ItemAddress(menuStrip, menuNumber)
|
||
|
C: struct MenuItem *ItemAddress(struct Menu *, long)
|
||
|
Machine Language: d0 = ItemAddress(a0, d0)
|
||
|
Modula-2: ItemAddress(menuStrip: MenuPtr; menuNumber: CARDINAL):
|
||
|
MenuItemPtr
|
||
|
Arguments: menuStrip = first menu in your menu strip
|
||
|
menuNumber = value with packed data that specifies the menu
|
||
|
and item (and optionally subitem)
|
||
|
Result: address = pointer to specified MenuItem; NULL if menuNumber
|
||
|
equals NULL
|
||
|
-------------------------
|
||
|
ITEMNUM (macro)
|
||
|
Description: extracts the menu item number from a value
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: itemNumber = ITEMNUM(menuValue)
|
||
|
C: long ITEMNUM(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: ITEMNUM(menuValue: CARDINAL): CARDINAL
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: itemNumber = item number (0-63); equals NOITEM if no menu
|
||
|
was selected
|
||
|
-------------------------
|
||
|
LoadRGB4
|
||
|
Description: loads color register values from a data table
|
||
|
Library: graphics.library
|
||
|
Offset: -$00C0 (-192)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: LoadRGB4(viewPort, colormap, pens)
|
||
|
C: void LoadRGB4(struct ViewPort *, short *, long)
|
||
|
Machine Language: LoadRGB4(a0, a1, d0)
|
||
|
Modula-2: LoadRGB4(viewPort: ViewPortPtr; colormap: ADDRESS; pens:
|
||
|
INTEGER)
|
||
|
Arguments: viewPort = ViewPort whose colors you want to change
|
||
|
colormap = pointer to array of 16-bit color values, where the firs
|
||
|
four bits are zero, the second contains red, the third green, and
|
||
|
the fourth blue
|
||
|
pens = number of consecutive color registers to load
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
LoadSeg
|
||
|
Description: loads an AmigaDOS load module into memory
|
||
|
Library: dos.library
|
||
|
Offset: -$0096 (-150)
|
||
|
Modula-2 Module: DOSLoader
|
||
|
Syntax: segment = LoadSeg(name)
|
||
|
C: BPTR LoadSeg(char *)
|
||
|
Machine Language: d0 = LoadSeg(d1)
|
||
|
Modula-2: LoadSeg(name: STRPTR): BPTR
|
||
|
Arguments: name = NULL terminated string that specifies the filename of
|
||
|
load module
|
||
|
Result: segment = BCPL pointer to a segment; 0 if unsuccessful
|
||
|
-------------------------
|
||
|
LoadView
|
||
|
Description: creates a display using a new copper list
|
||
|
Library: graphics.library
|
||
|
Offset: -$00DE (-222)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: LoadView(view)
|
||
|
C: void LoadView(struct View *)
|
||
|
Machine Language: LoadView(a1)
|
||
|
Modula-2: LoadView(view: ViewPtr)
|
||
|
Arguments: view = View structure with pointer to copper list
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Lock
|
||
|
Description: locks a directory or file
|
||
|
Library: dos.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: lock = Lock(name, accessMode)
|
||
|
C: BPTR Lock(char *, long)
|
||
|
Machine Language: d0 = Lock(d1, d2)
|
||
|
Modula-2: Lock(name: STRPTR; accessMode: LONGINT): FileLock
|
||
|
Arguments: name = NULL terminated string that specifies name of file or
|
||
|
directory
|
||
|
accessMode = type of lock-ACCESS_READ (shared) or
|
||
|
ACCESS_WRITE (exclusive)
|
||
|
Result: lock = BCPL pointer to a lock
|
||
|
-------------------------
|
||
|
LockIBase
|
||
|
Description: locks IntuitionBase to keep other tasks (or the system) from
|
||
|
changing it
|
||
|
Library: intuition.library
|
||
|
Offset: -$019E (-414)
|
||
|
Modula-2 Module: IntuitionBase
|
||
|
Syntax: lockValue = LockIBase(lockNumber)
|
||
|
C: long LockIBase(long)
|
||
|
Machine Language: d0 = LockIBase(d0)
|
||
|
Modula-2: LockIBase(lockNumber: LONGCARD): LONGCARD
|
||
|
Arguments: lockNumber = Intuition lock desired (should be zero)
|
||
|
Result: lockValue = value to use to unlock IntuitionBase via
|
||
|
UnlockIBase( )
|
||
|
-------------------------
|
||
|
LockLayer
|
||
|
Description: locks a layer to protect it from graphics output
|
||
|
Library: layers.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: LockLayer(dummy, layer)
|
||
|
C: void LockLayer(struct Layer_Info *, struct Layer *)
|
||
|
Machine Language: LockLayer(a0, a1)
|
||
|
Modula-2: LockLayer(layer: LayerPtr)
|
||
|
Arguments: dummy = unused
|
||
|
layer = Layer structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
LockLayerInfo
|
||
|
Description: locks a Layer_Info structure to keep other tasks from changing it
|
||
|
Library: layers.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: LockLayerInfo(layerInfo)
|
||
|
C: void LockLayerInfo(struct Layer_Info *)
|
||
|
Machine Language: LockLayerInfo(a0, a1)
|
||
|
Modula-2: LockLayerInfo(layerInfo: LayerInfoPtr)
|
||
|
Arguments: layerInfo = Layerlnfo structure to lock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
LockLayerRom
|
||
|
Description: locks a Layer structure to keep other tasks from changing it
|
||
|
Library: layers.library
|
||
|
Offset: -$01B0 (-432)
|
||
|
Modula-2 Module: Clip
|
||
|
Syntax: LockLayerRom(layer)
|
||
|
C: void LockLayerRom(struct Layer *)
|
||
|
Machine Language: LockLayerRom(a5)
|
||
|
Modula-2: LockLayerRom(layer: LayerPtr)
|
||
|
Arguments: layer = Layer structure to lock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
LockLayers
|
||
|
Description: stops graphic output to all layers in a Layer_Info structure
|
||
|
Library: layers.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: LockLayers(layerInfo)
|
||
|
C: void LockLayers(struct Layer_Info *)
|
||
|
Machine Language: LockLayers(a0)
|
||
|
Modula-2: LockLayers(layerInfo: LayerInfoPtr)
|
||
|
Arguments: layerlnfo = Layerlnfo structure with list of layers to lock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MakeDosNode
|
||
|
Description: initializes the DeviceNode structure required to enter a DOS disk
|
||
|
device into the system
|
||
|
Library: expansion.library
|
||
|
Offset: -$0090 (-144)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: deviceNode = MakeDosNode(parameterPacket)
|
||
|
C: struct DeviceNode *MakeDosNode(long *)
|
||
|
Machine Language: d0 = MakeDosNode(a0)
|
||
|
Modula-2: MakeDosNode(parameterPacket: ADDRESS): DeviceNodePtr
|
||
|
Arguments: parameterPacket = array of long words containing the DOS han-
|
||
|
dler name, exec device name, unit number (for OpenDevice( )),
|
||
|
flags (for OpenDevice( )), number of long words used to describe
|
||
|
the handler environment, and the file handler environment, in
|
||
|
that order.
|
||
|
Result: deviceNode = pointer to initialized DeviceNode structure; NULL
|
||
|
if not enough memory
|
||
|
-------------------------
|
||
|
MakeFunctions
|
||
|
Description: constructs a jump table of the type used by resources, libraries,
|
||
|
and devices
|
||
|
Library: exec.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: size = MakeFunctions(destination, funcArray, funcDispBase)
|
||
|
C: void MakeFunctions(char *, long *, long)
|
||
|
Machine Language: d0 = MakeFunctions(a0, a1, a2)
|
||
|
Modula-2: MakeFunctions(destination, funcArray, funcDispBase: ADDRESS):
|
||
|
LONGCARD
|
||
|
Arguments: destination = target address for function jump table
|
||
|
funcArray = pointer to array of function pointers or
|
||
|
displacements
|
||
|
funcDispBase = pointer to base about which all function displace-
|
||
|
ments are relative; 0 if functionArray contains absolute pointers
|
||
|
Result: size = size of new table in bytes (Modula-2 only)
|
||
|
-------------------------
|
||
|
MakeLibrary
|
||
|
Description: constructs a library vector and data area
|
||
|
Library: exec.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: library = MakeLibrary(vectors, structure, init, dataSize, segList)
|
||
|
C: struct Library *MakeLibrary(long *, char *, _fptr, long, char *)
|
||
|
Machine Language: d0 = MakeLibrary(a0, a1, a2, d0, d1)
|
||
|
Modula-2: MakeLibrary(vectors, structure: ADDRESS; init: MAKELIBPROC;
|
||
|
dataSize: LONGCARD; segList: ADDRESS): LibraryPtr
|
||
|
Arguments: vectors = pointer to an array of function displacements-if first
|
||
|
word is -1 array contains relative word displacements; otherwise
|
||
|
array contains absolute function pointers
|
||
|
structure = pointer to an InitStruct data region; can be NULL
|
||
|
init = entry point that will be called before adding the library;
|
||
|
can be NULL
|
||
|
dataSize = size of library data area, including the standard library
|
||
|
node data
|
||
|
segList = pointer to a memory segment list (used by DOS)
|
||
|
Result: library = reference address of library
|
||
|
-------------------------
|
||
|
MakeScreen
|
||
|
Description: executes an Intuition-integrated MakeVPort( ) of a custom screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$017A (-378)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: MakeScreen(screen)
|
||
|
C: void MakeScreen(struct Screen *)
|
||
|
Machine Language: MakeScreen(a0)
|
||
|
Modula-2: MakeScreen(screen: ScreenPtr)
|
||
|
Arguments: screen = custom screen
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MakeVPort
|
||
|
Description: constructs intermediate copper list for a ViewPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$00D8 (-216)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: MakeVPort(view, viewPort)
|
||
|
C: void MakeVPort(struct View *, struct ViewPort *)
|
||
|
Machine Language: MakeVPort(a0, a1)
|
||
|
Modula-2: MakeVPort(view: ViewPtr; viewPort: ViewPortPtr)
|
||
|
Arguments: view = View structure
|
||
|
viewPort = ViewPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MarkCList
|
||
|
Description: marks a position in a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = MarkCList(cList, offset)
|
||
|
C: long MarkCList(long, long)
|
||
|
Machine Language: d0 = MarkCList(a0, a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = CList descriptor
|
||
|
offset = byte offset into character list of position to mark
|
||
|
Result: error = 0 if successful; nonzero if offset not in character list
|
||
|
-------------------------
|
||
|
MatchToolValue
|
||
|
Description: checks a tool type variable for a particular value
|
||
|
Library: icon.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: result = MatchToolValue(typeString, value)
|
||
|
C: long MatchToolValue(char *, char *)
|
||
|
Machine Language: d0 = MatchToolValue(a0, a1)
|
||
|
Modula-2: MatchToolValue(typeString, value: STRPTR): BOOLEAN
|
||
|
Arguments: typeString = a ToolType value, as returned by FindToolType(
|
||
|
value = value you are looking for
|
||
|
Result: result = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
MENUNUM (macro)
|
||
|
Description: extracts the menu number from a value
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: menuNumber = MENUNUM(menuValue)
|
||
|
C: long MENUNUM(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: MENUNUM(menuValue: CARDINAL): CARDINAL
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: menuNumber = menu number (0-31); equals NOMENU if no
|
||
|
menu was selected
|
||
|
-------------------------
|
||
|
ModifyIDCMP
|
||
|
Description: modifies the state of a window's IDCMP
|
||
|
Library: intuition.library
|
||
|
Offset: -$0096 (-150)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ModifyIDCMP(window, flags)
|
||
|
C: void ModifyIDCMP(struct Window *, long)
|
||
|
Machine Language: ModifyIDCMP(a0, d0)
|
||
|
Modula-2: ModifyIDCMP(window: WindowPtr; flags: IDCMPFlagsSet)
|
||
|
Arguments: window = window containing IDCMP
|
||
|
flags = IDCMP flags
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ModifyProp
|
||
|
Description: modifies current state of proportional gadgets (see
|
||
|
NewModifyProp)
|
||
|
Library: intuition.library
|
||
|
Offset: -$009C (-156)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ModifyProp(propGadget, window, requester, flags, horizPot,
|
||
|
vertPot, horizBody, vertBody)
|
||
|
C: void ModifyProp(struct Gadget *, struct Window *, struct Request-
|
||
|
er *, long, long, long, long, long)
|
||
|
Machine Language: ModifyProp(a0, a1, a2, d0, d1, d2, d3, d4)
|
||
|
Modula-2: ModifyProp(propGadget: GadgetPtr; window: WindowPtr; re-
|
||
|
quester: RequesterPtr; flags: PropFlagSet; horizPot, vertPot,
|
||
|
horizBody, vertBody: CARDINAL)
|
||
|
Arguments: propGadget = proportional gadget to modify
|
||
|
window = window containing proportional gadget
|
||
|
requester = Requester structure; NULL if gadget is not part of a
|
||
|
requester
|
||
|
flags = new flags value
|
||
|
horizPot = new horizontal pot value (position)
|
||
|
vertPot = new vertical pot value (position)
|
||
|
horizBody = new horizontal body value (size of slider)
|
||
|
vertBody = new vertical body value (size of slider)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Move
|
||
|
Description: moves the drawing pen to the specified position without drawing
|
||
|
anything
|
||
|
Library: layers.library
|
||
|
Offset: -$00F0 (-240)
|
||
|
Modula-2 Module: Drawing
|
||
|
Syntax: Move(rastPort, x, y)
|
||
|
C: void Move(struct RastPort *, long, long)
|
||
|
Machine Language: Move(a0, d0, d1)
|
||
|
Modula-2: Move(rastPort: RastPortPtr; x, y: INTEGER)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
x = new horizontal coordinate
|
||
|
y = new vertical coordinate
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MoveLayer
|
||
|
Description: moves a nonbackdrop layer to a new position in the bitmap
|
||
|
Library: layers.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = MoveLayer(dummy, layer, dx, dy)
|
||
|
C: long MoveLayer(struct Layerlnfo *, struct Layer *, long, long)
|
||
|
Machine Language: d0 = MoveLayer(a0, a1, d0, d1)
|
||
|
Modula-2: MoveLayer(layer: LayerPtr; dx, dy: LONGINT): BOOLEAN
|
||
|
Arguments: dummy = unused
|
||
|
layer = nonbackdrop Layer structure
|
||
|
dx = offset by which to move layer horizontally
|
||
|
dy = offset by which to move layer vertically
|
||
|
Result: success = TRUE is successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
MoveLayerInFrontOf
|
||
|
Description: moves a layer in front of another layer
|
||
|
Library: layers.library
|
||
|
Offset: -$00A8 (-168)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = MoveLayerInFrontOf(layer, target)
|
||
|
C: long MoveLayerInFrontOf(struct Layer *, struct Layer *)
|
||
|
Machine Language: d0 = MoveLayerInFrontOf(d0, a1)
|
||
|
Modula-2: MoveLayerInFrontOf(layer, target: LayerPtr): BOOLEAN
|
||
|
Arguments: layer = layer to move
|
||
|
target = layer to have another layer placed on top of
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
MoveScreen
|
||
|
Description: moves a screen vertically
|
||
|
Library: intuition.library
|
||
|
Offset: -$00A2 (-162)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: MoveScreen(screen, dx, dy)
|
||
|
C: void MoveScreen(struct Screen *, long, long)
|
||
|
Machine Language: MoveScreen(a0, d0, a1)
|
||
|
Modula-2: MoveScreen(screen: ScreenPtr; dx, dy: INTEGER)
|
||
|
Arguments: screen = screen to move
|
||
|
dx = offset by which to move screen horizontally
|
||
|
dy = offset by which to move screen vertically (not implemented
|
||
|
as of system version 1.3)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MoveSprite
|
||
|
Description: moves a sprite to specified location
|
||
|
Library: graphics.library
|
||
|
Offset: -$01AA (-426)
|
||
|
Modula-2 Module: Sprites
|
||
|
Syntax: MoveSprite(viewPort, sprite, x, y)
|
||
|
C: long MoveSprite(struct ViewPort *, struct SimpleSprite *, long,
|
||
|
long)
|
||
|
Machine Language: MoveSprite(a0, a1, d0, d1)
|
||
|
Modula-2: MoveSprite(viewPort: ViewPortPtr; sprite: SimpleSpritePtr; x, y:
|
||
|
INTEGER)
|
||
|
Arguments: viewPort = ViewPort structure
|
||
|
sprite = SimpleSprite structure
|
||
|
x = new horizontal position of sprite
|
||
|
y = new vertical position of sprite
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MoveWindow
|
||
|
Description: moves a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$00A8 (-168)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: MoveWindow(window, dx, dy)
|
||
|
C: void MoveWindow(struct Window *, long, long)
|
||
|
Machine Language: MoveWindow(a0, d0, a1)
|
||
|
Modula-2: MoveWindow(window: WindowPtr; dx, dy: INTEGER)
|
||
|
Arguments: window = window to move
|
||
|
dx = offset by which to move window horizontally
|
||
|
dy = offset by which to move window vertically
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
MrgCop
|
||
|
Description: merges coprocessor instructions to form one instruction list
|
||
|
Library: graphics.library
|
||
|
Offset: -$00D2 (-210)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: MrgCop(view)
|
||
|
C: void MrgCop(struct View *)
|
||
|
Machine Language: MrgCop(a1)
|
||
|
Modula-2: MrgCop(view: ViewPtr)
|
||
|
Arguments: view = View structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
NewFontContents
|
||
|
Description: creates an array of FontContents entries describing all fonts asso-
|
||
|
ciated with specified font name
|
||
|
Library: diskfont.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fontContentsHeader = NewFontContents(fontsLock, fontName)
|
||
|
C: struct FontContentsHeader *NewFontContents(BPTR, char *)
|
||
|
Machine Language: d0 = NewFontContents(a0, a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: fontsLock = BCPL pointer to a lock on the directory containing
|
||
|
the fonts contents file (usually FONTS: directory)
|
||
|
fontName = filename of font contents file (for example,
|
||
|
"Diamond.font")
|
||
|
Result: fontContentsHeader = pointer to a FontContentsHeader
|
||
|
-------------------------
|
||
|
NewLayerInfo
|
||
|
Description: creates a Layer_Info structure
|
||
|
Library: layers.library
|
||
|
Offset: -$0090 (-144)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: layerInfo = NewLayerInfo( )
|
||
|
C: struct Layer_Info *NewLayerInfo(void)
|
||
|
Machine Language: d0 = NewLayerInfo( )
|
||
|
Modula-2: NewLayerInfo( ): LayerInfoPtr
|
||
|
Arguments: none
|
||
|
Result: layerInfo = pointer to initialized Layer_Info structure; NULL if
|
||
|
unsuccessful
|
||
|
-------------------------
|
||
|
NewList
|
||
|
Description: initializes a list header
|
||
|
Library: amiga.lib (linked library)
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: NewList(list)
|
||
|
C: void NewList(struct List *)
|
||
|
Machine Language: not available
|
||
|
Modula-2: NewList(VAR list: List)
|
||
|
Arguments: list = List structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
NewModifyProp
|
||
|
Description: modifies current state of proportional gadgets, with selective gad-
|
||
|
get refresh
|
||
|
Library: intuition.library
|
||
|
Offset: -$01D4 (-468)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: NewModifyProp(propGadget, window, requester, flags, horizPot,
|
||
|
vertPot, horizBody, vertBody, gadgetNumber)
|
||
|
C: void NewModifyProp(struct Gadget *, struct Window *, struct Re-
|
||
|
quester *, long, long, long, long, long, long)
|
||
|
Machine Language: NewModifyProp(a0, a1, a2, d0, d1, d2, d3, d4, d5)
|
||
|
Modula-2: NewModifyProp(propGadget: GadgetPtr; window: WindowPtr; re-
|
||
|
quester: RequesterPtr; flags: PropFlagSet; horizPot, vertPot,
|
||
|
horizBody, vertBody: CARDINAL; gadgetNumber: INTEGER)
|
||
|
Arguments: propGadget = proportional gadget to modify
|
||
|
window = window containing proportional gadget
|
||
|
requester = Requester structure; NULL if gadget is not part of a
|
||
|
requester
|
||
|
flags = new flags value
|
||
|
horizPot = new horizontal pot value (position)
|
||
|
vertPot = new vertical pot value (position)
|
||
|
horizBody = new horizontal body value (size of slider)
|
||
|
vertBody = new vertical body value (size of slider)
|
||
|
gadgetNumber = number of gadgets to refresh after gadget modi-
|
||
|
fication; -1 to refresh all gadgets to the end of gadget list
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
NewRegion
|
||
|
Description: creates an empty Region structure
|
||
|
Library: graphics.library
|
||
|
Offset: -$0204 (-516)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: region = NewRegion( )
|
||
|
C: struct Region *NewRegion(void)
|
||
|
Modula-2: NewRegion(VAR list: List)
|
||
|
NewRegion( ): RegionPrt
|
||
|
Arguments: none
|
||
|
Result: region = pointer to initialized Region structure; NULL if not
|
||
|
enough memory
|
||
|
-------------------------
|
||
|
ObtainConfigBinding
|
||
|
Description: attempts to get permission to bind drivers
|
||
|
Library: expansion.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: ObtainConfigBinding( )
|
||
|
C: void ObtainConfigBinding(void)
|
||
|
Machine Language: ObtainConfigBinding( )
|
||
|
Modula-2: not available
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
------------------------
|
||
|
ObtainSemaphore
|
||
|
Description: obtains exclusive use of a signal semaphore
|
||
|
Library: exec.library
|
||
|
Offset: -$0234 (-564)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: ObtainSemaphore(signalSemaphore)
|
||
|
C: void ObtainSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: ObtainSemaphore(a0)
|
||
|
Modula-2: ObtainSemaphore(signalSemaphore: SignalSemaphorePtr)
|
||
|
Arguments: signalSemaphore = initialized SignalSemaphore structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ObtainSemaphoreList
|
||
|
Description: obtains exclusive use of a list of signal semaphores
|
||
|
Library: exec.library
|
||
|
Offset: -$0246 (-582)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: ObtainSemaphoreList(list)
|
||
|
C: void ObtainSemaphoreList(struct List *)
|
||
|
Machine Language: ObtainSemaphoreList(a0)
|
||
|
Modula-2: ObtainSemaphoreList(list: SignalSemaphorePtr)
|
||
|
Arguments: list = List structure representing a list of signal semaphores
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OFFDISPLAY (macro)
|
||
|
Description: clears the display DMA bit in the DMA control register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: CustomHardware
|
||
|
Syntax: OFF_DISPLAY( )
|
||
|
C: void OFF_DISPLAY(void)
|
||
|
Machine Language: not available
|
||
|
Modula-2: OFFDISPLAY( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OffGadget
|
||
|
Description: disables a gadget
|
||
|
Library: intuition.library
|
||
|
Offset: -$00AE (-174)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: OffGadget(gadget, window, requester)
|
||
|
C: void OffGadget(struct Gadget , struct Window *, struct Requester *)
|
||
|
Machine Language: OffGadget(a0, a1, a2)
|
||
|
Modula-2: OffGadget(gadget: GadgetPtr; window: WindowPtr; requester:
|
||
|
RequesterPtr)
|
||
|
Arguments: gadget = gadget to disable
|
||
|
window = window containing gadget
|
||
|
requester = Requester structure; NULL if gadget is not part of a
|
||
|
requester
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OffMenu
|
||
|
Description: disables a menu or menu item
|
||
|
Library: intuition.library
|
||
|
Offset: -$00B4 (-180)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: OffMenu(window, menuNumber)
|
||
|
C: void OffMenu(struct Window *, long)
|
||
|
Machine Language: OffMenu(a0, d0)
|
||
|
Modula-2: OffMenu(window: WindowPtr; menuNumber: CARDINAL)
|
||
|
Arguments: window = window containing menu or menu item
|
||
|
menuNumber = number specifying menu or menu item to dis-
|
||
|
able-bits 0-4 specify menu number, bits 5-10 specify menu
|
||
|
item, and bits 11-15 specify menu subitems
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OFF_SPRITE (macro)
|
||
|
Description: clears the sprite DMA bit in the DMA control register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: CustomHardware
|
||
|
Syntax: OFF_SPRITE( )
|
||
|
C: void OFF_SPRITE(void)
|
||
|
Machine Language: not available
|
||
|
Modula-2: OFFSPRITE( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OFF_VBLANK (macro)
|
||
|
Description: clears the vertical blanking interrupt (bit 5) in the interrupt control
|
||
|
register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: none
|
||
|
Syntax: OFF_VBLANK( )
|
||
|
C: void OFF_VBLANK(void)
|
||
|
Machine Language: not available
|
||
|
Modula-2: not available
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OldOpenLibrary
|
||
|
Description: obsolete version of the OpenLibrary( ) function which gains access
|
||
|
to a library without requiring a version number; do not use this
|
||
|
function-use OpenLibrary( ) instead
|
||
|
Library: exec.library
|
||
|
Offset: -$0198 (-408)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: library = Old0penLibrary(name)
|
||
|
C: struct Library *Old0penLibrary(char *)
|
||
|
Machine Language: d0 = Old0penLibrary(a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: name = name of desired library
|
||
|
Result: library = base pointer to desired library; NULL if library cannot
|
||
|
be found
|
||
|
-------------------------
|
||
|
ON_DISPLAY (macro)
|
||
|
Description: sets the display DMA bit in the DMA control register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: CustomHardware
|
||
|
Syntax: ON_DISPLAY( )
|
||
|
C: void ON_DISPLAY(void)
|
||
|
Machine Language: not available
|
||
|
Modula-2: ONDISPLAY( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OnGadget
|
||
|
Description: enables a gadget
|
||
|
Library: intuition.library
|
||
|
Offset: -$00BA (-186)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: OnGadget(gadget, window, requester)
|
||
|
C: void OnGadget(struct Gadget *, struct Window *, struct Requester *)
|
||
|
Machine Language: OnGadget(a0, a1, a2)
|
||
|
Modula-2: OnGadget(gadget: GadgetPtr; window: WindowPtr; requester:
|
||
|
RequesterPtr)
|
||
|
Arguments: gadget = gadget to enable
|
||
|
window = window containing gadget
|
||
|
requester = Requester structure; NULL if gadget is not part of a
|
||
|
requester
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
OnMenu
|
||
|
Description: enables a menu or menu item
|
||
|
Library: intuition.library
|
||
|
Offset: -$00C0 (-192)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: OnMenu(window, menuNumber)
|
||
|
C: void OnMenu(struct Window *, long)
|
||
|
Machine Language: OnMenu(a0, d0)
|
||
|
Modula-2: OnMenu(window: WindowPtr; menuNumber: CARDINAL)
|
||
|
Arguments: window = window containing menu or menu item
|
||
|
menuNumber = number specifying menu or menu item to en-
|
||
|
able-bits 0-4 specify menu number, bits 5-10 specify menu
|
||
|
item, and bits 11-15 specify menu subitems
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ON_SPRITE (macro)
|
||
|
Description: sets the sprite DMA bit in the DMA control register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: CustomHardware
|
||
|
Syntax: ON_SPRITE( )
|
||
|
C: void ON_SPRITE(void)
|
||
|
Machine Language: ON_SPRITE( )
|
||
|
Modula-2: ONSPRITE( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ON_VBLANK (macro)
|
||
|
Description: sets the vertical blanking interrupt (bit 5) in the interrupt control
|
||
|
register
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: none
|
||
|
Syntax: ON_VBLANK( )
|
||
|
C: void ON_VBLANK(void)
|
||
|
Machine Language: ON_VBLANK( )
|
||
|
Modula-2: not available
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Open
|
||
|
Description: opens a file for input or output
|
||
|
Library: dos.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: file = Open(name, accessMode)
|
||
|
C: BPTR Open(char *, long)
|
||
|
Machine Language: d0 = Open(d1, d2)
|
||
|
Modula-2: Open(name: STRPTR; accessMode: LONGINT): FileHandle
|
||
|
Arguments: name = NULL terminated string specifying filename
|
||
|
accessMode = type of file access desired-MODE_OLDFILE for
|
||
|
reading, MODE_NEWFILE for writing
|
||
|
Result: file = BCPL pointer to file handle; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
OpenDevice
|
||
|
Description: provides access to a device and initializes an IO request block for
|
||
|
access to the device
|
||
|
Library: exec.library
|
||
|
Offset: -$01BC (-444)
|
||
|
Modula-2 Module: Devices
|
||
|
Syntax: error = OpenDevice(name, unitNumber, ioRequest, flags)
|
||
|
C: long OpenDevice(char *, long, struct IORequest *, long)
|
||
|
Machine Language: d0 = OpenDevice(a0, d0, a1, d2)
|
||
|
Modula-2: OpenDevice(name: STRPTR; unitNumber: LONGCARD;
|
||
|
ioRequest: ADDRESS; flags: LONGBITSET): INTEGER
|
||
|
Arguments: name = NULL terminated string specifying device name
|
||
|
unitNumber = desired unit number for device (device specific)
|
||
|
ioRequest = IORequest block to initialize
|
||
|
flags = additional device information (device specific)
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
OpenDiskFont
|
||
|
Description: gains access to a disk-resident font
|
||
|
Library: diskfont.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: DiskFont
|
||
|
Syntax: font = OpenDiskFont(textAttr)
|
||
|
C: struct TextFont *OpenDiskFont(struct TextAttr *)
|
||
|
Machine Language: d0 = OpenDiskFont(a0)
|
||
|
Modula-2: OpenDiskFont(textAttr: TextAttrPtr): TextFontPtr
|
||
|
Arguments: textAttr = TextAttr structure that describes the desired font
|
||
|
Result: font = pointer to desired TextFont structure; 0 if unsuccessful
|
||
|
-------------------------
|
||
|
OpenFont
|
||
|
Description: gains access to a memory-resident font
|
||
|
Library: graphics.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: font = OpenFont(textAttr)
|
||
|
C: struct TextFont *OpenFont(struct TextAttr *)
|
||
|
Machine Language: d0 = OpenFont(a0)
|
||
|
Modula-2: OpenFont(textAttr: TextAttrPtr): TextFontPtr
|
||
|
Arguments: textAttr = TextAttr structure that describes the desired font
|
||
|
Result: font = pointer to desired TextFont structure; 0 if unsuccessful
|
||
|
-------------------------
|
||
|
OpenLibrary
|
||
|
Description: gains access to a library
|
||
|
Library: exec.library
|
||
|
Offset: -$0228 (-552)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: library = OpenLibrary(name, version)
|
||
|
C: struct Library *OpenLibrary(char *, long)
|
||
|
Machine Language: d0 = OpenLibrary(a1, d0)
|
||
|
Modula-2: OpenLibrary(name: STRPTR; version: LONGCARD): LibraryPtr
|
||
|
Arguments: name = name of desired library
|
||
|
version = lowest acceptable library version number; 0 if you
|
||
|
don't care
|
||
|
Result: library = base pointer to desired library; NULL if library cannot
|
||
|
be found
|
||
|
-------------------------
|
||
|
OpenResource
|
||
|
Description: gains access to a resource
|
||
|
Library: exec.library
|
||
|
Offset: -$01F2 (-498)
|
||
|
Modula-2 Module: Resources
|
||
|
Syntax: resource = OpenResource(name)
|
||
|
C: struct Resource *OpenResource(char *)
|
||
|
Machine Language: d0 = OpenResource(a1)
|
||
|
Modula-2: OpenResource(name: STRPTR): ResourcePtr
|
||
|
Arguments: name = name of desired resource
|
||
|
Result: resource = pointer to resource; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
OpenScreen
|
||
|
Description: opens an Intuition screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$00C6 (-198)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: screen = OpenScreen(newScreen)
|
||
|
C: struct Screen *OpenScreen(struct NewScreen *)
|
||
|
Machine Language: d0 = OpenScreen(a0)
|
||
|
Modula-2: OpenScreen(newScreen: NewScreenPtr): ScreenPtr
|
||
|
Arguments: newScreen = NewScreen structure that describes screen to open
|
||
|
Result: screen = pointer to Screen structure; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
OpenWindow
|
||
|
Description: opens an Intuition window
|
||
|
Library: intuition.library
|
||
|
Offset: -$00CC (-204)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: window = OpenWindow(newWindow)
|
||
|
C: struct Window *OpenWindow(struct NewWindow *)
|
||
|
Machine Language: d0 = OpenWindow(a0)
|
||
|
Modula-2: OpenWindow(newWindow: NewWindowPtr): WindowPtr
|
||
|
Arguments: newWindow = NewWindow structure that describes window to
|
||
|
open
|
||
|
Result: window = pointer to Window structure; NULL if unsuccessful
|
||
|
-------------------------
|
||
|
OpenWorkBench
|
||
|
Description: opens the Workbench screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$00D2 (-210)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = OpenWorkBench( )
|
||
|
C: long OpenWorkBench(void)
|
||
|
Machine Language: d0 = OpenWorkBench( )
|
||
|
Modula-2: OpenWorkBench( ): BOOLEAN
|
||
|
Arguments: none
|
||
|
Result: success = TRUE if successful (value represents pointer to Work-
|
||
|
Bench screen-this may change in system versions greater than
|
||
|
1.3); FALSE (NULL) if unsuccessful
|
||
|
-------------------------
|
||
|
OrRectRegion
|
||
|
Description: performs a two-dimensional OR operation of a rectangle with a
|
||
|
region, leaving the result in the region
|
||
|
Library: graphics.library
|
||
|
Offset: -$01FE (-510)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: success = OrRectRegion(region, rectangle)
|
||
|
C: long OrRectRegion(struct Region *, struct Rectangle *)
|
||
|
Machine Language: d0 = OrRectRegion(a0, a1)
|
||
|
Modula-2: OrRectRegion(region: RegionPtr; rectangle: RectanglePtr):
|
||
|
BOOLEAN
|
||
|
Arguments: region = Region structure
|
||
|
rectangle = Rectangle structure
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
OrRegionRegion
|
||
|
Description: performs a two-dimensional OR operation of one region with a
|
||
|
second region, leaving the result in second region
|
||
|
Library: graphics.library
|
||
|
Offset: -$0264 (-612)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: success = OrRegionRegion(region1, region2)
|
||
|
C: long OrRegionRegion(struct Region *, struct Region *)
|
||
|
Machine Language: d0 = OrRegionRegion(a0, a1)
|
||
|
Modula-2: OrRegionRegion(region1, region2: RegionPtr): BOOLEAN
|
||
|
Arguments: region1 = Region structure
|
||
|
region2 = Region structure
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
Output
|
||
|
Description: gets the initial output file handle assigned to a program
|
||
|
Library: dos.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: file = Output( )
|
||
|
C: BPTR Output(void)
|
||
|
Machine Language: d0 = Output( )
|
||
|
Modula-2: Output( ): FileHandle
|
||
|
Arguments: none
|
||
|
Result: file = BCPL pointer to a file handle
|
||
|
-------------------------
|
||
|
OwnBlitter
|
||
|
Description: reserves the blitter for private use
|
||
|
Library: graphics.library
|
||
|
Offset: -$01C8 (-456)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: OwnBlitter( )
|
||
|
C: void OwnBlitter(void)
|
||
|
Machine Language: OwnBlitter( )
|
||
|
Modula-2: OwnBlitter( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ParentDir
|
||
|
Description: obtains the parent directory of a file or directory
|
||
|
Library: dos.library
|
||
|
Offset: -$00D2 (-210)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: lock = ParentDir(lock)
|
||
|
C: BPTR ParentDir(BPTR)
|
||
|
Machine Language: d0 = ParentDir(d1)
|
||
|
Modula-2: ParentDir(lock: FileLock): FileLock
|
||
|
Arguments: lock = BCPL pointer to lock associated with child file or directory
|
||
|
Result: lock = BCPL pointer to lock associated with parent directory
|
||
|
-------------------------
|
||
|
PeekCLMark
|
||
|
Description: gets byte located in mark position of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: byte = PeekCLMark(cList)
|
||
|
C: long PeekCLMark(long)
|
||
|
Machine Language: d0 = PeekCLMark(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor
|
||
|
Result: byte = byte located in mark position of character list
|
||
|
-------------------------
|
||
|
Permit
|
||
|
Description: permits task rescheduling halted by Forbid( )
|
||
|
Library: exec.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: Permit( )
|
||
|
C: void Permit(void)
|
||
|
Machine Language: Permit( )
|
||
|
Modula-2: Permit( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
PolyDraw
|
||
|
Description: draws a series of connected lines from current pen position to
|
||
|
points specified by a table of (x,y) coordinates
|
||
|
Library: graphics.library
|
||
|
Offset: -$0150 (-336)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: PolyDraw(rastPort, count, array)
|
||
|
C: long PolyDraw(struct RastPort *, long, short *)
|
||
|
Machine Language: PolyDraw(al, d0, a0)
|
||
|
Modula-2: PolyDraw(rastPort: RastPortPtr; count: INTEGER; array:
|
||
|
ADDRESS)
|
||
|
Arguments: rastPort = RastPort to draw lines in
|
||
|
count = number of coordinates in array
|
||
|
array = pointer to array of coordinates
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
printf
|
||
|
Description: prints a formatted string to the standard output (Lattice and Manx
|
||
|
users: if you link with lc.lib or c.lib, this is not the function you're
|
||
|
calling)
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: printf(string, values...)
|
||
|
C: void printf(char *, long...)
|
||
|
Machine Language: move.l #value,-(sp) ;may have several values
|
||
|
pea string
|
||
|
jsr _printf
|
||
|
add.l #8,sp ;(2 arguments * 4 bytes = 8)
|
||
|
Modula-2: not available
|
||
|
Arguments: string = string containing optional C formatting commands (%); if
|
||
|
you're passing longword values on the stack (as shown above) be
|
||
|
sure to follow the percent symbol with a lowercase L
|
||
|
values = values or addresses of strings to print; this routine
|
||
|
knows how many values are on the stack by checking the number
|
||
|
of formatting commands in the string argument
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
PrintIText
|
||
|
Description: prints text according to its IntuiText specifications
|
||
|
Library: intuition.library
|
||
|
Offset: -$00D8 (-216)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: PrintIText(rastPort, intuiText, leftEdge, topEdge)
|
||
|
C: void PrintIText(struct RastPort *, struct IntuiText *, long, long)
|
||
|
Machine Language: PrintIText(a0, a1, d0, d1)
|
||
|
Modula-2: PrintIText(rastPort: RastPortPtr; intuiText: IntuiTextPtr; leftEdge,
|
||
|
topEdge: INTEGER)
|
||
|
Arguments: rastPort = RastPort structure to receive text
|
||
|
intuiText = IntuiText structure containing text
|
||
|
leftEdge = horizontal position of text within RastPort
|
||
|
topEdge = vertical position of text within RastPort
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Procure
|
||
|
Description: obtains a message-based semaphore
|
||
|
Library: exec.library
|
||
|
Offset: -$021C (-540)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: success = Procure(semaphore, message)
|
||
|
C: long Procure(struct Semaphore *, struct Message *)
|
||
|
Machine Language: d0 = Procure(a0, a1)
|
||
|
Modula-2: Procure(semaphore: SemaphorePtr; message: MessagePtr):
|
||
|
BOOLEAN
|
||
|
Arguments: semaphore = Semaphore structure
|
||
|
message = Message structure to be used if desired semaphore is
|
||
|
unavailable
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
PutCLBuf
|
||
|
Description: converts contiguous data into a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = PutCLBuf(cList, buffer, length)
|
||
|
C: long PutCLBuf(long, char *, long)
|
||
|
Machine Language: d0 = PutCLBuf(a0, a1, d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
buffer = buffer containing data to be converted
|
||
|
length = size of buffer in bytes
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
PutCLChar
|
||
|
Description: adds a byte to the end of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = PutCLChar(cList, byte)
|
||
|
C: long PutCLChar(long, long)
|
||
|
Machine Language: d0 = PutCLChar(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
byte = byte to be added to end of character list
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
PutCLWord
|
||
|
Description: adds a word to the end of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = PutCLWord(cList, word)
|
||
|
C: long PutCLWord(long)
|
||
|
Machine Language: d0 = PutCLWord(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
word = word to be added to end of character list
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
PutDiskObject
|
||
|
Description: writes a Workbench DiskObject to disk as an .info file
|
||
|
Library: icon.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: Icon
|
||
|
Syntax: success = PutDiskObject(name, diskObj)
|
||
|
C: long PutDiskObject(char *, struct DiskObject *)
|
||
|
Machine Language: d0 = PutDiskObject(a0, a1)
|
||
|
Modula-2: PutDiskObject(name: STRPTR; diskObj: DiskObjectPtr): BOOLEAN
|
||
|
Arguments: name = name of object
|
||
|
diskObj = DiskObject structure (.info file)
|
||
|
Result: success = nonzero if successful
|
||
|
-------------------------
|
||
|
PutIcon
|
||
|
Description: writes a DiskObject to disk as an .info file
|
||
|
Library: icon.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: success = PutIcon(name, icon)
|
||
|
C: long PutIcon(char *, struct DiskObject *)
|
||
|
Machine Language: d0 = PutIcon(a0, a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: name = name of icon (.info file)
|
||
|
icon = DiskObject structure
|
||
|
Result: success = nonzero if successful
|
||
|
-------------------------
|
||
|
PutMsg
|
||
|
Description: gets next message from a message port
|
||
|
Library: exec.library
|
||
|
Offset: -$016E (-366)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: PutMsg(port, message)
|
||
|
C: void PutMsg(struct MsgPort *, struct Message *)
|
||
|
Machine Language: PutMsg(a0, a1)
|
||
|
Modula-2: PutMsg(port: MsgPortPtr; message: ADDRESS)
|
||
|
Arguments: port = message port to receive message
|
||
|
message = Message structure containing message to send
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
PutWBObject
|
||
|
Description: writes a WBObject to disk as an .info file
|
||
|
Library: icon.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: success = PutWBObject(name, object)
|
||
|
C: long PutWBObject(char *, struct WBObject *)
|
||
|
Machine Language: d0 = PutWBObject(a0, a1)
|
||
|
Modula-2: not available
|
||
|
Arguments: name = name of WBObject (.info file)
|
||
|
object = WBObject structure
|
||
|
Result: success = nonzero if successful
|
||
|
-------------------------
|
||
|
QBlit
|
||
|
Description: queues up a blitter request
|
||
|
Library: graphics.library
|
||
|
Offset: -$0114 (-276)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: QBlit(blitNode)
|
||
|
C: void QBlit(struct BlitNode *)
|
||
|
Machine Language: QBlit(a1)
|
||
|
Modula-2: QBlit(blitNode: bltnodePtr)
|
||
|
Arguments: blitNode = BlitNode structure containing link information and
|
||
|
address of your blitter routine
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
QBSlit
|
||
|
Description: queues and synchronizes a blitter request with the video beam
|
||
|
Library: graphics.library
|
||
|
Offset: -$0126 (-294)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: QBSlit(blitNode)
|
||
|
C: void QBSlit(struct BlitNode *)
|
||
|
Machine Language: QBSlit(a1)
|
||
|
Modula-2: QBSlit(blitNode: bltnodePtr)
|
||
|
Arguments: blitNode = BlitNode structure containing link information and
|
||
|
address of your blitter routine
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RangeRand
|
||
|
Description: generates a random integer within a specified range
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: rnd = RangeRand(range)
|
||
|
C: long RangeRand(long)
|
||
|
Machine Language: move.l range,-(sp)
|
||
|
jsr _RangRand ;rnd returned in d0
|
||
|
addq.l #4,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: range = highest integer acceptable
|
||
|
Result: rnd = random number between 0 and value of range argument
|
||
|
-------------------------
|
||
|
RASSIZE (macro)
|
||
|
Description: calculates the memory requirements for a raster bitmap of the
|
||
|
specified with and height
|
||
|
C Include File: include/graphics/gfx.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Graphics
|
||
|
Syntax: bytes = RASSIZE(width, height)
|
||
|
C: long RASSIZE(long, long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: RASSIZE(width, height: LONGCARD)
|
||
|
Arguments: width = width of hypothetical bitmap in pixels
|
||
|
height = height of hypothetical bitmap in pixels
|
||
|
Result: bytes = number of bytes required to contain raster bitmap
|
||
|
-------------------------
|
||
|
RawDoFmt
|
||
|
Description: formats data into a character stream using C formatting
|
||
|
commands (%)
|
||
|
Library: exec.library
|
||
|
Offset: -$020A (-522)
|
||
|
Modula-2 Module: Exec
|
||
|
Syntax: RawDoFmt(formatString, dataStream, putChProc, putChData)
|
||
|
C: void RawDoFmt(char *, APTR, void (*)(), APTR)
|
||
|
Machine Language: RawDoFmt(a0, a1, a2, a3)
|
||
|
Modula-2: RawDoFmt(formatString, dataStream: ADDRESS; putChProc:
|
||
|
PROC; putChData: ADDRESS)
|
||
|
Arguments: formatString = string with optional C formatting commands (%)
|
||
|
dataStream = stream of data that is interpreted according to the
|
||
|
formatString
|
||
|
putChProc = address of procedure to call with each character to
|
||
|
be output, where procedure is called as PutChProc(char,
|
||
|
putChData)
|
||
|
putChData = value to pass to PutChProc
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Read
|
||
|
Description: reads data from a file
|
||
|
Library: dos.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: actualLength = Read(file, buffer, length)
|
||
|
C: long Read(BPTR, char *, long)
|
||
|
Machine Language: d0 = Read(d1, d2, d3)
|
||
|
Modula-2: Read(file: FileHandle; buffer: ADDRESS; length: LONGINT):
|
||
|
LONGINT
|
||
|
Arguments: file = BCPL pointer to a file handle
|
||
|
buffer = address of memory block to receive data
|
||
|
length = number of bytes to read (must not exceed buffer size)
|
||
|
Result: actualLength = actual number of bytes received
|
||
|
-------------------------
|
||
|
ReadExpansionByte
|
||
|
Description: reads a byte nybble-by-nybble from a new-style expansion board
|
||
|
Library: expansion.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: byte = ReadExpansionByte(board, offset)
|
||
|
C: long ReadExpansionByte(long, long)
|
||
|
Machine Language: d0 = ReadExpansionByte(a0, d0)
|
||
|
Modula-2: ReadExpansionByte(board: ADDRESS; offset: LONGCARD):
|
||
|
INTEGER
|
||
|
Arguments: board = base address of expansion board
|
||
|
offset = logical offset from board base
|
||
|
Result: byte = data received; -1 if an error occurred
|
||
|
-------------------------
|
||
|
ReadExpansionRom
|
||
|
Description: reads a new-style expansion board's configuration ROM space
|
||
|
Library: expansion.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: error = ReadExpansionRom(board, configDev)
|
||
|
C: long ReadExpansionRom(long, long)
|
||
|
Machine Language: d0 = ReadExpansionRom(a0, a1)
|
||
|
Modula-2: ReadExpansionRom(board: ADDRESS; configDev: ADDRESS):
|
||
|
BOOLEAN
|
||
|
Arguments: board = base address of expansion board
|
||
|
configDev = ConfigDev structure to receive ROM data
|
||
|
Result: error = 0 if successful; nonzero if an error occurred
|
||
|
-------------------------
|
||
|
ReadPixel
|
||
|
Description: finds the color register (pen) used to color a specific pixel
|
||
|
Library: graphics.library
|
||
|
Offset: -$013E (-318)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: pen = ReadPixel(rastPort, x, y)
|
||
|
C: long ReadPixel(struct RastPort *, long, long)
|
||
|
Machine Language: d0 = ReadPixel(a0, d0, d1)
|
||
|
Modula-2: ReadPixel(rastPort: RastPortPtr; x, y: INTEGER): INTEGER
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
x = horizontal coordinate of pixel
|
||
|
y = vertical coordinate of pixel
|
||
|
Result: pen = pen number; -1 if pixel lies outside boundaries of rastport
|
||
|
-------------------------
|
||
|
RectFill
|
||
|
Description: fills a rectangular area using the current pen color, outline color,
|
||
|
secondary color, and pattern
|
||
|
Library: graphics.library
|
||
|
Offset: -$0132 (-306)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: RectFill(rastPort, xmin, ymin, xmax, ymax)
|
||
|
C: void RectFill(struct RastPort *, long, long, long, long)
|
||
|
Machine Language: RectFill(a0, d0, d1, d2, d3)
|
||
|
Modula-2: RectFill(rastPortPtr: RastPort; xmin, ymin, xmax, ymax: INTEGER)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
xmin = horizontal coordinate rectangle's upper left corner
|
||
|
ymin = vertical coordinate rectangle's upper left corner
|
||
|
xmax = horizontal coordinate rectangle's lower right corner
|
||
|
ymax = vertical coordinate rectangle's lower right corner
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RefreshGadgets
|
||
|
Description: redraws a gadget and all following gadgets in gadget list
|
||
|
Library: intuition.library
|
||
|
Offset: -$00DE (-222)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: RefreshGadgets(gadgets, window, requester)
|
||
|
C: void RefreshGadgets(struct Gadget *, struct Window *, struct Re-
|
||
|
quester *)
|
||
|
|
||
|
Machine Language: RefreshGadgets(a0, a1, a2)
|
||
|
Modula-2: RefreshGadgets(gadgets: GadgetPtr; window: WindowPtr; request-
|
||
|
er: RequesterPtr)
|
||
|
Arguments: gadgets = first gadget in list of gadgets to refresh
|
||
|
window = window containing gadgets
|
||
|
requester = requester containing gadget; NULL if gadget is not
|
||
|
part of a requester
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RefreshGList
|
||
|
Description: redraws a gadget and specified number of following gadgets in
|
||
|
gadget list
|
||
|
Library: intuition.library
|
||
|
Offset: -$01BO (-432)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: RefreshGList(gadgets, window, requester, numGadgets)
|
||
|
C: void RefreshGList(struct Gadget *, struct Window *, struct Re-
|
||
|
quester *, long)
|
||
|
Machine Language: RefreshGList(a0, a1, a2, d0)
|
||
|
Modula-2: RefreshGList(gadgets: GadgetPtr; window: WindowPtr; requester:
|
||
|
RequesterPtr; numGadgets: INTEGER)
|
||
|
Arguments: gadgets = first gadget in list of gadgets to refresh
|
||
|
window = window containing gadgets
|
||
|
requester = requester containing gadget; NULL if gadget is not
|
||
|
part of a requester
|
||
|
numGadgets = number of gadgets to refresh; -1 to refresh to
|
||
|
end of gadget list
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RefreshWindowFrame
|
||
|
Description: redraws a window's border, title bar, and gadgets
|
||
|
Library: intuition.library
|
||
|
Offset: -$01C8 (-456)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: RefreshWindowFrame(window)
|
||
|
C: void RefreshWindowFrame(struct Window *)
|
||
|
Machine Language: RefreshWindowFrame(a0)
|
||
|
Modula-2: RefreshWindowFrame(window: WindowPtr)
|
||
|
Arguments: window = window to refresh
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ReleaseConfigBinding
|
||
|
Description: allows others to bind drivers
|
||
|
Library: expansion.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: ReleaseConfigBinding( )
|
||
|
C: void ReleaseConfigBinding(void)
|
||
|
Machine Language: ReleaseConfigBinding( )
|
||
|
Modula-2: not available
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ReleaseSemaphore
|
||
|
Description: releases a signal semaphore for use by other tasks
|
||
|
Library: exec.library
|
||
|
Offset: -$023A (-5 70)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: ReleaseSemaphore(signalSemaphore)
|
||
|
C: void ReleaseSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: ReleaseSemaphore(a0)
|
||
|
Modula-2: ReleaseSemaphore(signalSemaphore: SignalSemaphorePtr)
|
||
|
Arguments: signalSemaphore = initialized SignalSemaphore structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ReleaseSemaphoreList
|
||
|
Description: releases a list of signal semaphores for other tasks
|
||
|
Library: exec.library
|
||
|
Offset: -$024C (-588)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: ReleaseSemaphoreList(list)
|
||
|
C: void ReleaseSemaphoreList(struct List *)
|
||
|
Machine Language: ReleaseSemaphoreList(a0)
|
||
|
Modula-2: ReleaseSemaphoreList(list: SignalSemaphorePtr)
|
||
|
Arguments: list = List structure representing a list of signal semaphores
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemakeDisplay
|
||
|
Description: redraws every intuition screen
|
||
|
Library: intuition.library
|
||
|
Offset: -$0180 (-384)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: RemakeDisplay( )
|
||
|
C: void RemakeDisplay(void)
|
||
|
Machine Language: RemakeDisplay( )
|
||
|
Modula-2: RemakeDisplay( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemBob (macro)
|
||
|
Description: removes a Bob from current GEL list
|
||
|
C Include File: include/graphics/gels.h
|
||
|
ML Include File: graphics/gels.i
|
||
|
Modula-2 Module: none
|
||
|
Syntax: RemBob(bob, rastPort)
|
||
|
C: void RemBob(struct Bob *, struct RastPort *)
|
||
|
Machine Language: RemBob(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: bob = Bob structure to remove
|
||
|
rastPort = controlling RastPort structure (not needed in
|
||
|
Modula-2)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemConfigDev
|
||
|
Description: removes a ConfigDev structure from the system
|
||
|
Library: expansion.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: ConfigVars
|
||
|
Syntax: RemConfigDev(configDev)
|
||
|
C: void RemConfigDev(long)
|
||
|
Machine Language: RemConfigDev(a0)
|
||
|
Modula-2: RemConfigDev(configDev: ConfigDevPtr)
|
||
|
Arguments: configDev = ConfigDev structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemDevice
|
||
|
Description: removes a device from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$01B6 (-438)
|
||
|
Modula-2 Module: Devices
|
||
|
Syntax: error= RemDevice(device)
|
||
|
C: long RemDevice(struct Device *)
|
||
|
Machine Language: d0 = RemDevice(a1)
|
||
|
Modula-2: RemDevice(device: DevicePtr)
|
||
|
Arguments: device = device node
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
RemFont
|
||
|
Description: removes a font from the system
|
||
|
Library: graphics.library
|
||
|
Offset: -$01E6 (-486)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: error = RemFont(textFont)
|
||
|
C: long RemFont(struct TextFont *)
|
||
|
Machine Language: d0 = RemFont(a1)
|
||
|
Modula-2: RemFont(textFont: TextFontPtr)
|
||
|
Arguments: textFont = TextFont structure to remove
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful (no value returned
|
||
|
by Modula-2)
|
||
|
-------------------------
|
||
|
RemHead
|
||
|
Description: removes a node from the head of a list
|
||
|
Library: exec.library
|
||
|
Offset: -$0102 (-258)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: node = RemHead(list)
|
||
|
C: struct Node *RemHead(struct List *)
|
||
|
Machine Language: d0 = RemHead(a0)
|
||
|
Modula-2: RemHead(list: ListPtr): NodePtr
|
||
|
Arguments: list = list header
|
||
|
Result: node = node removed; NULL if list is was already empty
|
||
|
-------------------------
|
||
|
RemIBob
|
||
|
Description: immediately removes a Bob from the GEL list and erases it from
|
||
|
the RastPort display
|
||
|
Library: graphics.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: RemIBob(bob, rastPort, viewPort)
|
||
|
C: void RemIBob(struct Bob *, struct RastPort *, struct ViewPort *)
|
||
|
Machine Language: RemIBob(a0, a1, a2)
|
||
|
Modula-2: RemIBob(bob: BobPtr; rastPort: RastPortPtr; viewPort:
|
||
|
ViewPortPtr)
|
||
|
Arguments: bob = Bob structure to remove from GEL list
|
||
|
rastPort = RastPort structure
|
||
|
viewPort = ViewPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemIntServer
|
||
|
Description: removes an interrupt server from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$00AE (-174)
|
||
|
Modula-2 Module: Interrupts/
|
||
|
Syntax: RemIntServer(intNum, interrupt)
|
||
|
C: void RemIntServer(long, struct Interrupt *)
|
||
|
Machine Language: RemIntServer(d0, a1)
|
||
|
Modula-2: RemIntServer(intNum: CARDINAL; interrupt: InterruptPtr)
|
||
|
Arguments: intNum = portia interrupt bit (0-4)
|
||
|
interrupt = interrupt server node
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemLibrary
|
||
|
Description: removes a library from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$0192 (-402)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: error= RemLibrary(library)
|
||
|
C: long RemLibrary(struct Library *)
|
||
|
Machine Language: d0 = RemLibrary(a1)
|
||
|
Modula-2: RemLibrary(Library: LibraryPtr)
|
||
|
Arguments: library = Library structure to remove
|
||
|
Result: error = 0 if successful; nonzero if unsuccessful
|
||
|
-------------------------
|
||
|
Remove
|
||
|
Description: removes a node from a list
|
||
|
Library: exec.library
|
||
|
Offset: -$00FC (-252)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: Remove(node)
|
||
|
C: void Remove(struct Node *)
|
||
|
Machine Language: Remove(a1)
|
||
|
Modula-2: Remove(node: NodePtr)
|
||
|
Arguments: node = node to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemoveGadget
|
||
|
Description: removes gadget from a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$00E4 (-228)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: position = RemoveGadget(window, gadget)
|
||
|
C: long RemoveGadget(struct Window *, struct Gadget *)
|
||
|
Machine Language: d0 = RemoveGadget(a0, a1)
|
||
|
Modula-2: RemoveGadget(window: WindowPtr; gadget: GadgetPtr):
|
||
|
INTEGER
|
||
|
Arguments: window = window that contains gadget
|
||
|
gadget = gadget to remove
|
||
|
Result: position = position in gadget list where gadget was located; -1 if
|
||
|
gadget was not found
|
||
|
-------------------------
|
||
|
RemoveGList
|
||
|
Description: removes a series of gadgets from a gadget list
|
||
|
Library: intuition.library
|
||
|
Offset: -$01BC (-444)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: position = RemoveGList(window, gadget, numGadgets)
|
||
|
C: long RemoveGList(struct Window *, Gadget *, long)
|
||
|
Machine Language: d0 = RemoveGList(a0, a1, d0)
|
||
|
|
||
|
Modula-2: RemoveGList(window: WindowPtr; gadget: GadgetPtr;
|
||
|
numGadgets: INTEGER): INTEGER
|
||
|
Arguments: window = window containing gadgets
|
||
|
gadget = first gadget in gadget list to remove
|
||
|
numGadgets = number of gadgets to remove
|
||
|
Result: position = position of removed gadget list; -1 if gadget was not
|
||
|
found
|
||
|
-------------------------
|
||
|
RemPort
|
||
|
Description: removes a message port from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$0168 (-360)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: RemPort(port)
|
||
|
C: void RemPort(struct MsgPort *)
|
||
|
Machine Language: RemPort(a1)
|
||
|
Modula-2: RemPort(port: MsgPortPtr)
|
||
|
Arguments: port = message port to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemResource
|
||
|
Description: removes a resource from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$01EC (-492)
|
||
|
Modula-2 Module: Resources
|
||
|
Syntax: RemResource(resource)
|
||
|
C: void RemResource(struct Resource *)
|
||
|
Machine Language: RemResource(a1)
|
||
|
Modula-2: RemResource(resource: ResourcePtr)
|
||
|
Arguments: resource = resource to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemSemaphore
|
||
|
Description: removes signal semaphore from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$025E (-606)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: RemSemaphore(signalSemaphore)
|
||
|
C: void RemSemaphore(struct SignalSemaphore *)
|
||
|
Machine Language: RemSemaphore(a1)
|
||
|
Modula-2: RemSemaphore(signalSemaphore: SignalSemaphorePtr)
|
||
|
Arguments: signalSemaphore = signal semaphore to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemTail
|
||
|
Description: removes node from the tail of a list
|
||
|
Library: exec.library
|
||
|
Offset: -$0108 (-264)
|
||
|
Modula-2 Module: Lists
|
||
|
Syntax: node = RemTail(list)
|
||
|
C: struct Node *RemTail(struct List *)
|
||
|
Machine Language: d0 = RemTail(a0)
|
||
|
Modula-2: RemTail(list: ListPtr): NodePtr
|
||
|
Arguments: list = list header
|
||
|
Result: node = pointer to removed node; NULL if list is already empty
|
||
|
-------------------------
|
||
|
RemTask
|
||
|
Description: removes a task from the system
|
||
|
Library: exec.library
|
||
|
Offset: -$0120 (-288)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: RemTask(task)
|
||
|
C: void RemTask(struct Task *)
|
||
|
Machine Language: RemTask(a1)
|
||
|
Modula-2: RemTask(task: TaskPtr)
|
||
|
Arguments: task = task to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemTOF
|
||
|
Description: removes a task from the TopOfFrame (vertical-blanking interval)
|
||
|
interrupt server chain
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: RemTOF(i)
|
||
|
C: void RemTOF(struct Isrvstr *)
|
||
|
Machine Language: pea i
|
||
|
jsr _RemTOF
|
||
|
addq.l #4,sp
|
||
|
Modula-2: not available
|
||
|
Arguments: i = Isrvstr structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
RemVSprite
|
||
|
Description: removes a VSprite from the GEL list
|
||
|
Library: graphics.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: RemVSprite(vSprite)
|
||
|
C: void RemVSprite(struct VSprite *)
|
||
|
Machine Language: RemVSprite(a0)
|
||
|
Modula-2: RemVSprite(vSprite: VSpritePtr)
|
||
|
Arguments: vSprite = VSprite to remove
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Rename
|
||
|
Description: renames a directory or file
|
||
|
Library: dos.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = Rename(oldName, newName)
|
||
|
C: long Rename(char *, char *)
|
||
|
Machine Language: d0 = Rename(d1, d2)
|
||
|
Modula-2: Rename(oldName, newName: STRPTR): BOOLEAN
|
||
|
Arguments: oldName = current name of file/directory (can include
|
||
|
drive/directory path)
|
||
|
newName = new name for file (can include drive/directory path)
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
ReplyMsg
|
||
|
Description: replies to a message
|
||
|
Library: exec.library
|
||
|
Offset: -$017A (-378)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: ReplyMsg(message)
|
||
|
C: void ReplyMsg(struct MsgPort *)
|
||
|
Machine Language: ReplyMsg(a1)
|
||
|
Modula-2: ReplyMsg(message: ADDRESS)
|
||
|
Arguments: message = message to reply to
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ReportMouse
|
||
|
Description: tells intuition whether or not to report the mouse movements as-
|
||
|
sociated with a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$00EA (-234)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ReportMouse(window, flag)
|
||
|
C: void ReportMouse(struct Window *, long)
|
||
|
Machine Language: ReportMouse(a0, d0)
|
||
|
Modula-2: ReportMouse(window: WindowPtr; flag: BOOLEAN)
|
||
|
Arguments: window = window to be affected
|
||
|
flag = TRUE to activate mouse movement reports; FALSE to stop
|
||
|
mouse movement reports
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Request
|
||
|
Description: activates a requester
|
||
|
Library: intuition.library
|
||
|
Offset: -$00F0 (-240)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = Request(requester, window)
|
||
|
C: long Request(struct Requester, struct Window *)
|
||
|
Machine Language: d0 = Request(a0, a1)
|
||
|
Modula-2: Request(requester: RequesterPtr; window: WindowPtr): BOOLEAN
|
||
|
Arguments: requester = requester to display
|
||
|
window = window in which requester will appear in
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
RethinkDisplay
|
||
|
Description: performs a complete overhaul on the Intuition display-screens,
|
||
|
ViewPorts, everything
|
||
|
Library: intuition.library
|
||
|
Offset: -$0186 (-390)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: RethinkDisplay( )
|
||
|
C: void RethinkDisplay(void)
|
||
|
Machine Language: RethinkDisplay( )
|
||
|
Modula-2: RethinkDisplay( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ScreenToBack
|
||
|
Description: moves specified screen to back of the display
|
||
|
Library: intuition.library
|
||
|
Offset: -$00F6 (-246)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ScreenToBack(screen)
|
||
|
C: void ScreenToBack(struct Screen *)
|
||
|
Machine Language: ScreenToBack(a0)
|
||
|
Modula-2: ScreenToBack(screen: ScreenPtr)
|
||
|
Arguments: screen = screen to move
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ScreenToFront
|
||
|
Description: moves specified screen to front of the display
|
||
|
Library: intuition.library
|
||
|
Offset: -$00FC (-252)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ScreenToFront(screen)
|
||
|
C: void ScreenToFront(struct Screen *)
|
||
|
Machine Language: ScreenToFront(a0)
|
||
|
Modula-2: ScreenToFront(screen: ScreenPtr)
|
||
|
Arguments: screen = screen to move
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ScrollLayer
|
||
|
Description: copies data from a SuperBitMap to a layer so as to reposition the
|
||
|
display over the bitmap
|
||
|
Library: layers.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: ScrollLayer(dummy, layer, dx, dy)
|
||
|
C: void ScrollLayer(struct Layer_Info *, struct Layer *, long, long)
|
||
|
Machine Language: ScrollLayer(a0, a1, d0, d1)
|
||
|
Modula-2: ScrollLayer(layer: LayerPtr; dx, dy: LONGINT)
|
||
|
Arguments: dummy = unused
|
||
|
layer = Layer structure
|
||
|
dx = offset by which to move layer horizontally
|
||
|
dy = offset by which to move layer vertically
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ScrollRaster
|
||
|
Description: scrolls the contents of a rectangular area of a RastPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$018C (-396)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: ScrollRaster(rastPort, dx, dy, x1, y1, x2, y2)
|
||
|
C: void ScrollRaster(struct RastPort *, long, long, long, long, long,
|
||
|
long)
|
||
|
Machine Language: ScrollRaster(a0, d0, d1, d2, d3, d4, d5)
|
||
|
Modula-2: ScrollRaster(rastPort: RastPortPtr; dx, dy: INTEGER; x1, y1, x2,
|
||
|
y2: INTEGER)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
dx = offset by which to scroll the rectangle
|
||
|
dy = offset by which to scroll the rectangle
|
||
|
x1 = horizontal position of the left edge of the rectangle
|
||
|
y1 = vertical position of the top edge of the rectangle
|
||
|
x2 = horizontal position of the right edge of the rectangle
|
||
|
y2 = vertical position of the bottom edge of the rectangle
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
ScrollVPort
|
||
|
Description: scrolls the contents of a rectangular area of a ViewPort by reinter-
|
||
|
preting the RasInfo information in a ViewPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$024C (-588)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: ScrollVPort(viewPort)
|
||
|
C: void ScrollVPort(struct ViewPort *)
|
||
|
Machine Language: ScrollVPort(a0)
|
||
|
Modula-2: ScrollVPort(viewPort: ViewPortPtr)
|
||
|
Arguments: viewPort = ViewPort structure to update
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Seek
|
||
|
Description: moves the file pointer to a specified position in a file
|
||
|
Library: dos.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: oldPosition = Seek(file, position, mode)
|
||
|
C: long Seek(BPTR, long, long)
|
||
|
Machine Language: d0 = Seek(d1, d2, d3)
|
||
|
Modula-2: Seek(file: FileHandle; position: LONGINT; mode: LONGINT):
|
||
|
LONGINT
|
||
|
Arguments: file = BCPL pointer to a file handle
|
||
|
position = offset by which to move file pointer
|
||
|
mode = flag specifying how to interpret position offset-
|
||
|
OFFSET_BEGINNING (-1), OFFSET_CURRENT (0), or
|
||
|
OFFSET_END (1)
|
||
|
Result: oldPosition = old file position; -1 if unsuccessful
|
||
|
-------------------------
|
||
|
SendIO
|
||
|
Description: sends an IO request
|
||
|
Library: exec.library
|
||
|
Offset: -$01CE (-462)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: SendIO(ioRequest)
|
||
|
C: void SendIO(struct IORequest *)
|
||
|
Machine Language: SendIO(a1)
|
||
|
Modula-2: SendIO(ioRequest: ADDRESS)
|
||
|
Arguments: IORequest = an initialized IORequest structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetAfPt (macro)
|
||
|
Description: sets area fill pattern
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetAfPt(rastPort, pattern, size)
|
||
|
C: void SetAfPt(struct RastPort *, char *, long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: SetAfPat(rastPort: RastPortPtr; pattern: ADDRESS; size:
|
||
|
CARDINAL)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pattern = pointer to the first word in an area-fill pattern
|
||
|
size = size of area pattern (size to the power of two equals the
|
||
|
number of words in pattern)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetAPen
|
||
|
Description: sets the primary pen color
|
||
|
Library: graphics.library
|
||
|
Offset: -0156 (-342)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetAPen(rastPort, pen)
|
||
|
C: void SetAPen(struct RastPort *, long)
|
||
|
Machine Language: SetAPen(a1, d0)
|
||
|
Modula-2: SetAPen(rastPort: RastPortPtr; pen: CARDINAL)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pen = pen number (0-255)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetBPen
|
||
|
Description: sets the secondary pen color
|
||
|
Library: graphics.library
|
||
|
Offset: -015C (-348)
|
||
|
Modula-2 Module: Drawing
|
||
|
Syntax: SetBPen(rastPort, pen)
|
||
|
C: void SetBPen(struct RastPort *, long)
|
||
|
Machine Language: SetBPen(al, d0)
|
||
|
Modula-2: SetBPen(rastPort: RastPortPtr; pen: CARDINAL)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pen = pen number (0-255)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetCollision
|
||
|
Description: sets a collision vector to point to a user-written routine
|
||
|
Library: graphics.library
|
||
|
Offset: -0090 (-144)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: SetCollision(number, routine, gelsInfo)
|
||
|
C: void SetCollision(long, _fgptr, struct GelsInfo *)
|
||
|
Machine Language: SetCollision(d0, a0, a1)
|
||
|
Modula-2: SetCollision(number: LONGCARD; routine: PROC; gelsInfo:
|
||
|
GelsInfoPtr)
|
||
|
Arguments: number = collision vector number
|
||
|
routine = pointer to user's collision routine
|
||
|
gelsInfo = GelsInfo structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetComment
|
||
|
Description: adds a comment to a file
|
||
|
Library: dos.library
|
||
|
Offset: -00B4 (-180)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = SetComment(name, comment)
|
||
|
C: long SetComment(char *, char *)
|
||
|
Machine Language: d0 = SetComment(d1, d2)
|
||
|
Modula-2: SetComment(name, comment: STRPTR): BOOLEAN
|
||
|
Arguments: name = filename of file to comment
|
||
|
comment = comment to add to file
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
SetCurrentBinding
|
||
|
Description: sets static board configuration area
|
||
|
Library: expansion.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: SetCurrentBinding(currentBinding, size)
|
||
|
C: void SetCurrentBinding(long, long)
|
||
|
Machine Language: SetCurrentBinding(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: currentBinding = CurrentBinding structure
|
||
|
size = size of user's BindDriver structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetDMRequest
|
||
|
Description: attaches a DMRequester (a requester activated when the mouse's
|
||
|
menu button is double clicked) to a window
|
||
|
Library: intuition.library
|
||
|
Offset: -0102 (-258)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = SetDMRequest(window, dmRequester)
|
||
|
C: long SetDMRequest(struct Window *, struct Requester *)
|
||
|
Machine Language: d0 = SetDMRequest(a0, a1)
|
||
|
Modula-2: SetDMRequest(window: WindowPtr; dmRequester: RequesterPtr)
|
||
|
Arguments: window = window to which the requester will be added
|
||
|
dmRequester = requester to attach
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful (nothing re-
|
||
|
turned by Modula-2)
|
||
|
-------------------------
|
||
|
SetDrMd
|
||
|
Description: sets a drawing mode for drawing routines
|
||
|
Library: graphics.library
|
||
|
Offset: -0162 (-354)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetDrMd(rastPort, mode)
|
||
|
C: void SetDrMd(struct RastPort *, long)
|
||
|
Machine Language: SetDrMd(a1, d0)
|
||
|
Modula-2: SetDrMd(rastPort: RastPortPtr; mode: DrawingModeSet)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
mode = drawing mode JAM1, JAM2, COMPLEMENT,
|
||
|
INVERSVID)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetDrPt (macro)
|
||
|
Description: sets a pattern to use for line drawing
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetDrPt(rastPort, pattern)
|
||
|
C: void SetDrPt(struct RastPort *, long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: SetDrPt(rastPort: RastPortPtr; pattern: BITSET)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pattern = 16-bit drawing pattern
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetExcept
|
||
|
Description: defines which signals cause an exception
|
||
|
Library: exec.library
|
||
|
Offset: -0138 (-312)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: oldSignals = SetExcept(newSignals, signalMask)
|
||
|
C: long SetExcept(long, long)
|
||
|
Machine Language: d0 = SetExcept(d0, d1)
|
||
|
Modula-2: SetExcept(newSignals, signalMask: SignalSet): SignalSet
|
||
|
Arguments: newSignals = new values for signals specified in signalMask
|
||
|
signalMask = set of signals to be affected
|
||
|
Result: oldSignals = prior exception signals
|
||
|
-------------------------
|
||
|
SetFont
|
||
|
Description: sets the font to be used for drawing text in a rastport
|
||
|
Library: graphics.library
|
||
|
Offset: -0042 (-66)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: SetFont(rastPort, font)
|
||
|
C: void SetFont(struct RastPort *, struct TextFont *)
|
||
|
Machine Language: SetFont(a1/ a0)
|
||
|
Modula-2: SetFont(rastPort: RastPortPtr; font: TextFontPtr)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
font = font descriptor obtained from OpenFont( ) function
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetFunction
|
||
|
Description: changes a function vector in a library
|
||
|
Library: exec.library
|
||
|
Offset: -01A4 (-420)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: oldFunc = SetFunction(library, offset, newFunc)
|
||
|
C: _fptr SetFunction(struct Library *, long,_fptr)
|
||
|
Machine Language: d0 = SetFunction(a1, a0, d0)
|
||
|
Modula-2: SetFunction(library: LibraryPtr; offset: INTEGER; newFunc:
|
||
|
PROC): PROC
|
||
|
Arguments: library = library to change
|
||
|
offset = offset of function vector to change
|
||
|
newFunc = address of new function
|
||
|
Result: oldFunc = address of old function
|
||
|
-------------------------
|
||
|
SetIntVector
|
||
|
Description: changes a system interrupt vector
|
||
|
Library: exec.library
|
||
|
Offset: -00A2 (-162)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: oldInt = SetIntVector(intNum, newInt)
|
||
|
C: struct Interrupt *SetIntVector(long, struct Interrupt *)
|
||
|
Machine Language: d0 = SetIntVector(d0, a1)
|
||
|
Modula-2: SetIntVector(intNum: CARDINAL; newInt: InterruptPtr):
|
||
|
InterruptPtr
|
||
|
Arguments: intNum = Portia interrupt bit number (0-14)
|
||
|
newInt = initialized Interrupt structure
|
||
|
Result: oldInt = old Interrupt structure
|
||
|
-------------------------
|
||
|
SetMenuStrip
|
||
|
Description: attaches a menu strip to a window
|
||
|
Library: intuition.library
|
||
|
Offset: -0108 (-264)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: SetMenuStrip(window, menu)
|
||
|
C: void SetMenuStrip(struct Window *, struct Menu *)
|
||
|
Machine Language: SetMenuStrip(a0, a1)
|
||
|
Modula-2: SetMenuStrip(window: WindowPtr; menu: MenuPtr)
|
||
|
Arguments: window = window to receive menu strip
|
||
|
menu = first menu in menu strip
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetOPen (macro)
|
||
|
Description: sets the color of the pen used for outlining figures and tums on
|
||
|
outlining
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetOPen(rastPort, pen)
|
||
|
C: void SetOPen(struct RastPort *, long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: SetOPen(rastPort: RastPortPtr; pen: CARDINAL)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pen = pen number (0-255)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetPointer
|
||
|
Description: sets the shape of a window's sprite mouse pointer
|
||
|
Library: intuition.library
|
||
|
Offset: -010E (-270)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: SetPointer(window, pointer, height, width, xOffset, yOffset)
|
||
|
C: void SetPointer(struct Window *, short *, long, long, long, long)
|
||
|
Machine Language: SetPointer(a0, a1, d0, d1, d2, d3)
|
||
|
Modula-2: SetPointer(window: WindowPtr; pointer: ADDRESS; height,
|
||
|
width: CARDINAL; xOffset, y: INTEGER)
|
||
|
Arguments: window = window to receive new pointer
|
||
|
pointer = sprite data defining new shape
|
||
|
height = height of sprite in lines
|
||
|
width = width of sprite in pixels (less than or equal to 16)
|
||
|
xOffset = horizontal offset of pointer hot spot
|
||
|
yOffset = vertical offset of pointer hot spot
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetPrefs
|
||
|
Description: changes Preferences' current settings
|
||
|
Library: intuition.library
|
||
|
Offset: -$0144 (-324)
|
||
|
Modula-2 Module: Preferences
|
||
|
Syntax: prefBuffer = SetPrefs(prefBuffer, size, inform)
|
||
|
C: struct Preferences *SetPrefs(struct Preferences *, long, long)
|
||
|
Machine Language: d0 = SetPrefs(a0, d0, d1)
|
||
|
Modula-2: SetPrefs(prefBuffer: ADDRESS; size: INTEGER; inform:
|
||
|
BOOLEAN)
|
||
|
Arguments: prefBuffer = buffer which contains your desired Preferences
|
||
|
settings
|
||
|
size = size of buffer in bytes
|
||
|
inform = TRUE if you want to send a NEWPREFS message to all
|
||
|
interested windows
|
||
|
Result: prefBuffer = pointer to your prefBuffer
|
||
|
-------------------------
|
||
|
SetProtection
|
||
|
Description: sets a file or directories protection bits
|
||
|
Library: dos.library
|
||
|
Offset: -00BA (-186)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: success = SetProtection(name, mask)
|
||
|
C: long SetProtection(char *, long)
|
||
|
Machine Language: d0 = SetProtection(d1, d2)
|
||
|
Modula-2: SetProtection(name: STRPTR; mask: ProtectionSet): BOOLEAN
|
||
|
Arguments: name = file or directory name
|
||
|
mask = protection bits to set
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
SetRast
|
||
|
Description: sets the entire rastport to a specified color
|
||
|
Library: graphics.library
|
||
|
Offset: -00EA (-234)
|
||
|
Modula-2 Module: Rasters
|
||
|
Syntax: SetRast(rastPort, pen)
|
||
|
C: void SetRast(struct RastPort *, long)
|
||
|
Machine Language: SetRast(a1, d0)
|
||
|
Modula-2: SetRast(rastPort: RastPortPtr; pen: CARDINAL)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
pen = color register used to color the rastport (0-31)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetRGB4
|
||
|
Description: sets the red, green, and blue values for a viewport's color register
|
||
|
Library: graphics.library
|
||
|
Offset: -0120 (-288)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: SetRGB4(viewPort, pen, red, green, blue)
|
||
|
C: void SetRGB4(struct ViewPort *, long, long, long, long)
|
||
|
Machine Language: SetRGB4(a0, d0, d1, d2, d3)
|
||
|
Modula-2: SetRGB4(viewPort: ViewPortPtr; pen: INTEGER; red, green, blue:
|
||
|
CARDINAL)
|
||
|
Arguments: viewPort = ViewPort structure
|
||
|
pen = color register to set (0-31)
|
||
|
red = red color level (0-15)
|
||
|
green = green color level (0-15)
|
||
|
blue = blue color level (0-15)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetRGB4CM
|
||
|
Description: sets the red, green, and blue values for a colormap's color register
|
||
|
Library: graphics.library
|
||
|
Offset: -0276 (-630)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: SetRGB4CM(colorMap, pen, red, green, blue)
|
||
|
C: void SetRGB4CM(struct ColorMap *, long, long, long, long)
|
||
|
Machine Language: SetRGB4CM(a0, d0, d1, d2, d3)
|
||
|
Modula-2: SetRGB4CM(colorMap: ColorMapPtr; pen: INTEGER; red, green,
|
||
|
blue: CARDINAL)
|
||
|
Arguments: colorMap = ColorMap structure
|
||
|
pen = color register to set (0-31)
|
||
|
red = red color level (0-15)
|
||
|
green = green color level (0-15)
|
||
|
blue = blue color level (0-15)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetSignal
|
||
|
Description: defines the state of a task's signals
|
||
|
Library: exec.library
|
||
|
Offset: -0132 (-306)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: oldSignals = SetSignal(newSignals, signalMask)
|
||
|
C: long SetSignal(long, long)
|
||
|
Machine Language: d0 = SetSignal(d0, d1)
|
||
|
Modula-2: SetSignal(newSignals, signalMask: SignalSet): SignalSet
|
||
|
Arguments: newSignals = new values for signals specified in signalMask
|
||
|
signalMask = set of signals to be affected
|
||
|
Result: oldSignals = prior values for signals
|
||
|
-------------------------
|
||
|
SetSoftStyle
|
||
|
Description: sets the style for the current font
|
||
|
Library: graphics.library
|
||
|
Offset: -005A (-90)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: newStyle = SetSoftStyle(rastPort, style, enable)
|
||
|
C: long SetSoftStyle(struct RastPort *, long, long)
|
||
|
Machine Language: d0 = SetSoftStyle(a1, d0, d1, a6)
|
||
|
Modula-2: SetSoftStyle(rastPort: RastPortPtr; style, enable: FontStyleSet):
|
||
|
FontStyleSet
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
style = new font style
|
||
|
enable = mask that determines which style bit can be changed;
|
||
|
can be derived from AskSoftStyle( ) function
|
||
|
Result: newStyle = resulting font style
|
||
|
-------------------------
|
||
|
SetSR
|
||
|
Description: gets and/or sets the processor's status register
|
||
|
Library: exec.library
|
||
|
Offset: -0090 (-144)
|
||
|
Modula-2 Module: Exec
|
||
|
Syntax: oldSR = SetSR(newSR, mask)
|
||
|
C: long SetSR(long, long)
|
||
|
Machine Language: d0 = SetSR(d0, d1)
|
||
|
Modula-2: SetSR(newSR: BITSET; mask: BITSET): BITSET
|
||
|
Arguments: newSR = new value for bits specified in mask
|
||
|
mask = bits to be affected
|
||
|
Result: oldSR = prior value of status register
|
||
|
-------------------------
|
||
|
SetTaskPri
|
||
|
Description: gets and sets the priority of a task
|
||
|
Library: exec.library
|
||
|
Offset: -012C (-300)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: oldPriority = SetTaskPri(task, newPriority)
|
||
|
C: long SetTaskPri(struct Task *, long)
|
||
|
Machine Language: d0 = SetTaskPri(a1, d0)
|
||
|
Modula-2: SetTaskPri(task: TaskPtr; newPriority: INTEGER): INTEGER
|
||
|
Arguments: task = task to be affected
|
||
|
newPriority = new priority value (0-8)
|
||
|
Result: oldPriority = old task priority (0-8)
|
||
|
-------------------------
|
||
|
SetWindowTitles
|
||
|
Description: sets the titles for both a window and its screen
|
||
|
Library: intuition.library
|
||
|
Offset: -0114 (-276)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: SetWindowTitles(window, windowTitle, screenTitle)
|
||
|
C: void SetWindowTitles(struct Window *, char *, char *)
|
||
|
Machine Language: SetWindowTitles(a0, a1, a2)
|
||
|
Modula-2: SetWindowTitles(window: WindowPtr; windowTitle, screenTitle:
|
||
|
STRPTR)
|
||
|
Arguments: window = window to be affected
|
||
|
windowTitle = new window title (-1 to keep as-is)
|
||
|
screenTitle = new screen title (-1 to keep as-is)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SetWrMsk (macro)
|
||
|
Description: sets the write mask for a rastport (locks and unlocks bitplanes)
|
||
|
C Include File: include/graphics/gfxmacros.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: SetWrMsk(rastPort, mask)
|
||
|
C: void SetWrMsk(struct RastPort *, long)
|
||
|
Arguments: cList = character list containing substring
|
||
|
index = starting position of substring
|
||
|
length = number of bytes to copy
|
||
|
Result: cList = new character list that contains the substring; -1 if there
|
||
|
is not enough memory
|
||
|
-------------------------
|
||
|
SHIFTITEM (macro)
|
||
|
Description: shifts a menu value to define a new value for the menu item
|
||
|
number
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: none
|
||
|
Syntax: newValue = SHIFTITEM(menuValue)
|
||
|
C: long SHIFTITEM(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: not available
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: newValue = the menuValue ANDed with $3F and shifted to the
|
||
|
left five times-((menuValue & 0x3F) << 5)
|
||
|
-------------------------
|
||
|
SHIFTMENU (macro)
|
||
|
Description: extracts the menu number from a value (identical to MENUNUM
|
||
|
macro)
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: none
|
||
|
Syntax: menuNumber= SHIFTMENU(menuValue)
|
||
|
C: long SHIFTMENU(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: not available
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: menuNumber = menu number (0-31); equals NOMENU if no
|
||
|
menu was selected
|
||
|
-------------------------
|
||
|
SHIFTSUB (macro)
|
||
|
Description: shifts a menu value to define a new value for the menu subitem
|
||
|
number
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: none
|
||
|
Syntax: newValue = SHIFTSUB(menuValue)
|
||
|
C: long SHIFTSUB(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: not available
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: newValue = the menuValue ANDed with $1F and shifted to the
|
||
|
left 11 times-((menuValue & 0x1F) << 11)
|
||
|
-------------------------
|
||
|
ShowTitle
|
||
|
Description: determines whether the screen title bar will be displayed in front
|
||
|
of a backdrop window
|
||
|
Library: intuition.library
|
||
|
Offset: -011A (-282)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: ShowTitle(screen, showIt)
|
||
|
C: void ShowTitle(struct Screen *, long)
|
||
|
Machine Language: ShowTitle(a0, d0)
|
||
|
Modula-2: ShowTitle(screen: ScreenPtr; showIt: BOOLEAN)
|
||
|
Arguments: screen = screen to be affected
|
||
|
showIt = flag that indicates whether or not to display the screen's
|
||
|
title bar in front of a backdrop window (TRUE means show the
|
||
|
title bar; FALSE means hide it)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Signal
|
||
|
Description: signals a task with specified signals
|
||
|
Library: exec.library
|
||
|
Offset: -0144 (-324)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: Signal(task, signals)
|
||
|
C: void Signal(struct Task *, long)
|
||
|
Machine Language: Signal(d0, d1)
|
||
|
Modula-2: Signal(task: TaskPtr; signals: SignalSet)
|
||
|
Arguments: task = task to be signaled
|
||
|
signals = signals to send
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SizeCList
|
||
|
Description: gets the size of a character list in bytes
|
||
|
Library: clist.library
|
||
|
Offset: -0036 (-54)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: size = SizeCList(cList)
|
||
|
C: long SizeCList(long)
|
||
|
Machine Language: d0 = SizeCList(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list in question
|
||
|
Result: size = number of bytes in character list
|
||
|
-------------------------
|
||
|
SizeLayer
|
||
|
Description: changes the size of a nonbackdrop layer
|
||
|
Library: layers.library
|
||
|
Offset: -0042 (-66)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: SizeLayer(dummy, layer, dx, dy)
|
||
|
C: long SizeLayer(struct Layer_Info *, struct Layer *, long, long)
|
||
|
Machine Language: d0 = SizeLayer(a0, a1, d0, d1)
|
||
|
Modula-2: SizeLayer(layer: LayerPtr; dx, dy: LONGINT): BOOLEAN
|
||
|
Arguments: dummy = unused
|
||
|
layer = a nonbackdrop Layer structure
|
||
|
dx = amount to add to layer's horizontal size (may be negative)
|
||
|
dy = amount to add to layer's vertical size (may be negative)
|
||
|
Result: TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
SizeWindow
|
||
|
Description: resizes a window
|
||
|
Library: intuition.library
|
||
|
Offset: -0120 (-288)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: SizeWindow(window, dx, dy)
|
||
|
C: void SizeWindow(struct Window *, long, long)
|
||
|
Machine Language: SizeWindow(a0, d0, d1)
|
||
|
Modula-2: SizeWindow(window: WindowPtr; dx, dy: INTEGER)
|
||
|
Arguments: window = window to be resized
|
||
|
dx = amount to add to window's horizontal size (may be
|
||
|
negative)
|
||
|
dy = amount to add to window's vertical size (may be negative)
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SortGList
|
||
|
Description: sorts the GEL list by vertical position of each element, prior to
|
||
|
displaying the GELs
|
||
|
Library: graphics.library
|
||
|
Offset: -0096 (-150)
|
||
|
Modula-2 Module: Gels
|
||
|
Syntax: SortGList(rastPort)
|
||
|
C: void SortGList(struct RastPort *)
|
||
|
Machine Language: SortGList(a1)
|
||
|
Modula-2: SortGList(rastPort: RastPortPtr)
|
||
|
Arguments: rastPort = RastPort structure containing the GelsInfo
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SPAbs
|
||
|
Description: obtains the absolute value of a floating-point number
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPAbs(fnum2)
|
||
|
C: float SPAbs(float)
|
||
|
Machine Language: d0 = SPAbs(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
Result: fnum1 = absolute value of fnum2 in floating-point format
|
||
|
-------------------------
|
||
|
SPAcos
|
||
|
Description: obtains the arcosine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0078 (-120)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPAcos(fnum2)
|
||
|
C: float SPAcos(float)
|
||
|
Machine Language: d0 = SPAcos(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing the cosine of an
|
||
|
angle
|
||
|
Result: fnum1 = floating-point value of fnum2 angle in radians
|
||
|
-------------------------
|
||
|
SPAdd
|
||
|
Description: adds two floating-point numbers
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPAdd(fnum2, fnum3)
|
||
|
C: float SPAdd(float, float)
|
||
|
Machine Language: d0 = SPAdd(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
fnum3 = floating-point number
|
||
|
Result: fnum1 = fnum2 plus fnum3 in floating-point format
|
||
|
-------------------------
|
||
|
SPAsin
|
||
|
Description: obtains the arcsine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPAsin(fnum2)
|
||
|
C: float SPAsin(float)
|
||
|
Machine Language: d0 = SPAsin(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing the sine of an angle
|
||
|
Result: fnum1 = floating-point value of fnum2 angle in radians
|
||
|
-------------------------
|
||
|
SPAtan
|
||
|
Description: obtains the arctangent of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPAtan(fnum2)
|
||
|
C: float SPAtan(float)
|
||
|
Machine Language: d0 = SPAtan(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing the tangent of an
|
||
|
angle
|
||
|
Result: fnum1 = floating-point value of fnum2 angle in radians
|
||
|
-------------------------
|
||
|
SPCmp
|
||
|
Description: compares two floating-point numbers
|
||
|
Library: mathffp.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: flag = SPCmp(fnum1, fnum2)
|
||
|
C: long SPCmp(float, float)
|
||
|
Machine Language: d0 = SPCmp(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum1 = floating-point number
|
||
|
fnum2 = floating-point number
|
||
|
Result: flag = -1 if fnum1<fnum2; +1 if fnum1>fnum2; 0 if
|
||
|
fnum1 = fnum2
|
||
|
-------------------------
|
||
|
SPCos
|
||
|
Description: obtains the cosine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$002A (-42)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPCos(fnum2)
|
||
|
C: float SPCos(float)
|
||
|
Machine Language: d0 = SPCos(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point cosine of fnum2
|
||
|
-------------------------
|
||
|
SPCosh
|
||
|
Description: obtains the hyperbolic cosine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0042 (-66)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPCosh(fnum2)
|
||
|
C: float SPCosh(float)
|
||
|
Machine Language: d0 = SPCosh(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point hyperbolic cosine of fnum2
|
||
|
-------------------------
|
||
|
SPDiv
|
||
|
Description: divides one floating-point number by another
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPDiv(fnum2, fnum3)
|
||
|
C: float SPDiv(float, float)
|
||
|
Machine Language: d0 = SPDiv(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point dividend
|
||
|
fnum3 = floating-point divisor
|
||
|
Result: fnum1 = floating-point format results of fnum2 divided by fnum3
|
||
|
-------------------------
|
||
|
SPExp
|
||
|
Description: obtains the exponent of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPExp(fnum2)
|
||
|
C: float SPExp(float)
|
||
|
Machine Language: d0 = SPExp(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
Result: fnum1 = floating-point value representing e (approx. 2.71728)
|
||
|
raised to the power of fnum2
|
||
|
-------------------------
|
||
|
SPFieee
|
||
|
Description: converts a single-precision IEEE number to a Motorola fast float-
|
||
|
ing point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$006C (-108)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum = SPFieee(ieeenum)
|
||
|
C: float SPFieee(long)
|
||
|
Machine Language: d0 = SPFieee(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: ieeenum = single-precision floating-point number
|
||
|
Result: fnum = Motorola fast floating point equivalent to fnum
|
||
|
-------------------------
|
||
|
SPFlt
|
||
|
Description: converts an integer to floating-point number
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum = SPFlt(inum)
|
||
|
C: float SPFlt(long)
|
||
|
Machine Language: d0 = SPFlt(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: inum = signed integer to be converted
|
||
|
Result: fnum = floating-point equivalent to inum
|
||
|
-------------------------
|
||
|
SplitCList
|
||
|
Description: splits a character list in two, breaking it at the mark (obtained via
|
||
|
the MarkList( ) function)
|
||
|
Library: clist.library
|
||
|
Offset: -008A (-138)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: tailCList = SplitCList(cList)
|
||
|
C: long SplitCList(long)
|
||
|
Machine Language: d0 = SplitCList(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list to split
|
||
|
Result: tailCList = new character list that contains the tail end of the
|
||
|
original character list; -1 if there is not enough memory
|
||
|
-------------------------
|
||
|
SPLog
|
||
|
Description: obtains the natural logarithm of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0054 (-84)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPLog(fnum2)
|
||
|
C: float SPLog(float)
|
||
|
Machine Language: d0 = SPLog(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
Result: fnum1 = floating-point natural logarithm (base e) of fnum2
|
||
|
-------------------------
|
||
|
SPLog10
|
||
|
Description: obtains the naparian logarithm (base 10) of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$007E (-126)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPLog10(fnum2)
|
||
|
C: float SPLoglO(float)
|
||
|
Machine Language: d0 = SPLog10(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
Result: fnum1 = floating-point naparian logarithm (base 10) of fnum2
|
||
|
-------------------------
|
||
|
SPMul
|
||
|
Description: multiplies one floating-point number by another
|
||
|
Library: mathffp.library
|
||
|
Offset: -$004E (-78)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPMul(fnum2, fnum3)
|
||
|
C float SPMul(float, float)
|
||
|
Machine Language: d0 = SPMul(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
fnum3 = floating-point number
|
||
|
Result: fnum1 = product of fnum2 and fnum3 in floating-point format
|
||
|
-------------------------
|
||
|
SPNeg
|
||
|
Description: negates the value of a floating-point number
|
||
|
Library: mathffp.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPNeg(fnum2)
|
||
|
C: float SPNeg(float)
|
||
|
Machine Language: d0 = SPNeg(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number to negate
|
||
|
Result: fnum1 = negative fnum2 in floating-point format
|
||
|
-------------------------
|
||
|
SPPow
|
||
|
Description: obtains the exponentiation of two floating-point numbers
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPPow(fnum2, fnum3)
|
||
|
C: float SPPow(float, float)
|
||
|
Machine Language: d0 = SPPow(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
fnum3 = floating-point number
|
||
|
Result: fnum1 = floating-point value of fnum2 raised to the power of
|
||
|
fnum3
|
||
|
-------------------------
|
||
|
sprintf
|
||
|
Description: outputs a formatted string into a string (Lattice and Manx users: if
|
||
|
you link with lc.lib or c.lib, this is not the function you're calling)
|
||
|
Library: amiga.lib (linked library)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: sprintf(destinationString, formatString, values...)
|
||
|
C: void sprintf(char *, char *, long...)
|
||
|
Machine Language: move.l #value,-(sp) ;may have several values
|
||
|
pea formatString
|
||
|
pea destinationString
|
||
|
jsr _printf
|
||
|
add.l #8,sp ;(2 arguments * 4 bytes = 8)
|
||
|
Modula-2: not available
|
||
|
|
||
|
Arguments: destinationString = address of string to receive output
|
||
|
formatString = string containing optional C formatting commands
|
||
|
(%); if you're passing longword values on the stack (as shown
|
||
|
above) be sure to follow the percent symbol with a lowercase L
|
||
|
values = values or addresses of strings to print; this routine
|
||
|
knows how many values are on the stack by checking the number
|
||
|
of formatting commands in formatString argument
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SPSin
|
||
|
Description: obtains the sine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0024 (-36)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPSin(fnum2)
|
||
|
C: float SPSin(float, float)
|
||
|
Machine Language: d0 = SPSin(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point sine of fnum2
|
||
|
-------------------------
|
||
|
SPSincos
|
||
|
Description: obtains the sine and cosine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPSincos(fnum2, fnum3)
|
||
|
C: float SPSincos(float, float *)
|
||
|
Machine Language: d0 = SPSincos(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
fnum3 = pointer to floating point number to receive the cosine of
|
||
|
fnum2
|
||
|
Result: fnum1 = floating-point sine of fnum2 (cosine is returned in
|
||
|
fnum3)
|
||
|
-------------------------
|
||
|
SPSinh
|
||
|
Description: obtains the hyperbolic sine of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPSinh(fnum2)
|
||
|
C: float SPSinh(float, float)
|
||
|
Machine Language: d0 = SPSinh(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point hyperbolic sine of fnum2
|
||
|
-------------------------
|
||
|
SPSqrt
|
||
|
Description: obtains the square root of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPSqrt(fnum2)
|
||
|
C: float SPSqrt(float)
|
||
|
Machine Language: d0 = SPSqrt(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
Result: fnum1 = floating-point square root of fnum2
|
||
|
-------------------------
|
||
|
SPSub
|
||
|
Description: subtracts one floating-point number from another
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPSub(fnum2, fnum3)
|
||
|
C: float SPSub(float, float)
|
||
|
Machine Language: d0 = SPSub(d1, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number
|
||
|
fnum3 = floating-point number
|
||
|
Result: fnum1 = fnum2 minus fnum3 in floating-point format
|
||
|
-------------------------
|
||
|
SPTan
|
||
|
Description: obtains the tangent of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPTan(fnum2)
|
||
|
C: float SPTan(float, float)
|
||
|
Machine Language: d0 = SPTan(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point tangent of fnum2
|
||
|
-------------------------
|
||
|
SPTanh
|
||
|
Description: obtains the hyperbolic tangent of a floating-point number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: fnum1 = SPTanh(fnum2)
|
||
|
C: float SPTanh(float, float)
|
||
|
Machine Language: d0 = SPTanh(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum2 = floating-point number representing an angle in radians
|
||
|
Result: fnum1 = floating-point hyperbolic tangent of fnum2
|
||
|
-------------------------
|
||
|
SPTieee
|
||
|
Description: converts a Motorola fast floating point number to a single-
|
||
|
precision IEEE number
|
||
|
Library: mathtrans.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: ieeenum = SPTieee(fnum)
|
||
|
C: float SPTieee(float)
|
||
|
Machine Language: d0 = SPTieee(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = Motorola fast floating point number
|
||
|
Result: ieeenum = single-precision floating-point equivalent to fnum
|
||
|
-------------------------
|
||
|
SPTst
|
||
|
Description: compares a floating-point number with zero
|
||
|
Library: mathffp.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: flag = SPTst(fnum)
|
||
|
C: long SPTst(float)
|
||
|
Machine Language: d0 = SPTst(d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: fnum = floating-point number
|
||
|
Result: flag = -1 if fnum<0; +1 if fnum>0; 0 if fnum=0
|
||
|
-------------------------
|
||
|
SubCList
|
||
|
Description: copies a substring from a character list
|
||
|
Library: clist.library
|
||
|
Offset: -0096 (-150)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: cList = SubCList(cList, index, length)
|
||
|
C: long SubCList(long, long, long)
|
||
|
Machine Language: d0 = SubCList(a0, d0, d1)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list containing substring
|
||
|
index = starting position of substring
|
||
|
length = number of bytes to copy
|
||
|
Result: cList = new character list that contains the substring; -1 if there
|
||
|
is not enough memory
|
||
|
-------------------------
|
||
|
SUBNUM (macro)
|
||
|
Description: extracts the menu subitem number from a value
|
||
|
C Include File: include/intuition/intuition.h
|
||
|
ML Include File: none
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: subNumber= SUBNUM(menuValue)
|
||
|
C: long SUBNUM(long)
|
||
|
Machine Language: not available
|
||
|
Modula-2: SUBNUM(menuValue: CARDINAL): CARDINAL
|
||
|
Arguments: menuValue = 16-bit packed number representing the menu num-
|
||
|
ber, item number, and subitem number
|
||
|
Result: itemNumber = item number (0-31); equals NOSUB if no menu
|
||
|
was selected
|
||
|
-------------------------
|
||
|
SumKickData
|
||
|
Description: computes the checksum for a Kickstart delta list
|
||
|
Library: exec.library
|
||
|
Offset: -0264 (-612)
|
||
|
Modula-2 Module: Resident
|
||
|
Syntax: SumKickData( )
|
||
|
C: void SumKickData(void)
|
||
|
Machine Language: SumKickData( )
|
||
|
Modula-2: SumKickData( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SumLibrary
|
||
|
Description: verifies a library's checksum; alerts user if checksum is incorrect
|
||
|
Library: exec.library
|
||
|
Offset: -01AA (-426)
|
||
|
Modula-2 Module: Libraries
|
||
|
Syntax: SumLibrary(library)
|
||
|
C: void SumLibrary(struct Library *)
|
||
|
Machine Language: SumLibrary(a1)
|
||
|
Modula-2: SumLibrary(
|
||
|
Library: LibraryPtr)
|
||
|
Arguments: library = library to verify
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SuperState
|
||
|
Description: engage supervisor mode using user-defined stack
|
||
|
Library: exec.library
|
||
|
Offset: -$0096 (-150)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: sysStack = SuperState( )
|
||
|
C: long SuperState(void)
|
||
|
Machine Language: d0 = SuperState( )
|
||
|
Modula-2: SuperState( ): ADDRESS
|
||
|
Arguments: none
|
||
|
Result: sysStack = pointer to system stack; NULL if already in supervisor
|
||
|
mode
|
||
|
-------------------------
|
||
|
SwapBitsRastPortClipRect
|
||
|
Description: engage supervisor mode using user-defined stack
|
||
|
Library: layers.library
|
||
|
Offset: -007E (-126)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: SwapBitsRastPortClipRect(rastPort, clipRect)
|
||
|
C: void SwapBitsRastPortClipRect(struct RastPort *, struct ClipRect *)
|
||
|
Machine Language: SwapBitsRastPortClipRect(a0, a1)
|
||
|
Modula-2: SwapBitsRastPortClipRect(rastPort: RastPortPtr; clipRect:
|
||
|
ClipRectPtr)
|
||
|
Arguments: rastPort = RastPort structure
|
||
|
clipRect = ClipRect to swap bits with
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
SyncSBitMap
|
||
|
Description: copies all bits from a layer's ClipRects into the SuperBitMap
|
||
|
Library: layers.library
|
||
|
Offset: -01BC (-444)
|
||
|
Modula-2 Module: Clip
|
||
|
Syntax: SyncSBitMap(layer)
|
||
|
C: void SyncSBitMap(struct Layer *)
|
||
|
Machine Language: SyncSBitMap(a0)
|
||
|
Modula-2: SyncSBitMap(layer: LayerPtr)
|
||
|
Arguments: layer = a locked layer that contains a SuperBitMap
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Text
|
||
|
Description: prints text in a RastPort using the current font
|
||
|
Library: graphics.library
|
||
|
Offset: -$003C (-60)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: Text(rastPort, string, length)
|
||
|
C: void Text(struct RastPort *, char *, long)
|
||
|
Machine Language: Text(a1, a0, d0)
|
||
|
Modula-2: Text(rastPort: RastPortPtr; string: STRPTR; length: CARDINAL)
|
||
|
Arguments: rastPort = RastPort where text is to be output
|
||
|
string = text to print
|
||
|
length = number of characters in string
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Textlength
|
||
|
Description: finds the length (in bits) that a string of characters would occupy
|
||
|
if printed to a RastPort using the current text font
|
||
|
Library: graphics.library
|
||
|
Offset: -$0036 (-54)
|
||
|
Modula-2 Module: Text
|
||
|
Syntax: size = TextLength(rastPort, string, length)
|
||
|
C: long TextLength(struct RastPort *, char *, long)
|
||
|
Machine Language: d0 = TextLength(a1, a0, d0)
|
||
|
Modula-2: TextLength(rastPort: RastPortPtr; string: STRPTR; length: CARDI-
|
||
|
NAL): CARDINAL
|
||
|
Arguments: rastPort = RastPort where text would be output
|
||
|
string = text to print
|
||
|
length = number of characters in string
|
||
|
Result: size = number of pixels (horizontally) required to print the speci-
|
||
|
fied text
|
||
|
-------------------------
|
||
|
ThinLayerInfo
|
||
|
Description: converts a 1.1 LayerInfo structure into a 1.0 LayerInfo structure,
|
||
|
thus returning the extra memory allocate by FattenLayerInfo (this
|
||
|
is an obsolete function)
|
||
|
Library: layers.library
|
||
|
Offset: -$00A2 (-162)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: ThinLayerInfo(layerInfo)
|
||
|
C: void ThinLayerInfo(struct Layer_Info *)
|
||
|
Machine Language: ThinLayerInfo(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: layerInfo = LayerInfo structure to convert
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Translate
|
||
|
Description: converts an English string into phonetics
|
||
|
Library: translator.library
|
||
|
Offset: -$001E (-30)
|
||
|
Modula-2 Module: Translator
|
||
|
Syntax: error = Translate(instring, inlen, outbuf, outlen)
|
||
|
C: long Translate(char *, long, char *, long)
|
||
|
Machine Language: d0 = Translate(a1, d0, a1, d1)
|
||
|
Modula-2: Translate(instring: STRPTR; inlen: LONGCARD; outbuf: STRPTR;
|
||
|
outlen: LONGCARD): LONGINT
|
||
|
Arguments: instring = English string to convert
|
||
|
inlen = number of characters in instring
|
||
|
outbuf = buffer to hold phonetic codes
|
||
|
outlen = size of outbuf in bytes
|
||
|
Result: error = 0 if successful; negative number representing position in
|
||
|
instring where function was forced to stop because the output
|
||
|
buffer overflowed
|
||
|
-------------------------
|
||
|
TypeOfMem
|
||
|
Description: determines the attributes of a given memory address
|
||
|
Library: exec.library
|
||
|
Offset: -$0216 (-534)
|
||
|
Modula-2 Module: Memory
|
||
|
Syntax: attributes = TypeOfMem(address)
|
||
|
C: long TypeOfMem(void *)
|
||
|
Machine Language: d0 = TypeOfMem(a0)
|
||
|
Modula-2: TypeOfMem(address: ADDRESS): MemReqSet
|
||
|
Arguments: address = memory address
|
||
|
Result: attributes = type of memory-MEMF_CHIP, MEMF_FAST,
|
||
|
MEMF_PUBLIC
|
||
|
-------------------------
|
||
|
UnGetCLChar
|
||
|
Description: adds a byte to the beginning of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = UnGetCLChar(cList, byte)
|
||
|
C: long UnGetCLChar(long, long)
|
||
|
Machine Language: d0 = UnGetCLChar(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
byte = byte to add to beginning of character list
|
||
|
Result: error = 0 if successful
|
||
|
-------------------------
|
||
|
UnGetCLWord
|
||
|
Description: adds a word to the beginning of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0060 (-96)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: error = UnGetCLWord(cList, word)
|
||
|
C: long UnGetCLWord(long, long)
|
||
|
Machine Language: d0 = UnGetCLWord(a0, d0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
word = word to add to beginning of character list
|
||
|
Result: error = 0 if successful; 1 if unsuccessful
|
||
|
-------------------------
|
||
|
UnLoadSeg
|
||
|
Description: removes a segment from memory
|
||
|
Library: dos.library
|
||
|
Offset: -$009C (-156)
|
||
|
Modula-2 Module: DOSLoader
|
||
|
Syntax: UnLoadSeg(segment)
|
||
|
C: void UnLoadSeg(BPTR)
|
||
|
Machine Language: UnLoadSeg(d1)
|
||
|
Modula-2: UnLoadSeg(segment: BPTR): BOOLEAN
|
||
|
Arguments: segment = BCPL pointer to a segment as returned by LoadSeg( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnLock
|
||
|
Description: unlocks a directory or file
|
||
|
Library: dos.library
|
||
|
Offset: -$005A (-90)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: UnLock(lock)
|
||
|
C: void UnLock(BPTR)
|
||
|
Machine Language: UnLock(d1)
|
||
|
Modula-2: UnLock(lock: FileLock)
|
||
|
Arguments: lock = BCPL pointer to a lock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnlockIBase
|
||
|
Description: releases the lock on IntuitionBase so Intuition can change the
|
||
|
structure as it pleases
|
||
|
Library: intuition.library
|
||
|
Offset: -$01A4 (-420)
|
||
|
Modula-2 Module: IntuitionBase
|
||
|
Syntax: UnLockIBase(lockNumber)
|
||
|
C: void UnLockIBase(long)
|
||
|
Machine Language: UnLockIBase(a0)
|
||
|
Modula-2: UnLockIBase(lockNumber: LONGCARD)
|
||
|
Arguments: lockNumber = Intuition lock value as returned by LockIBase( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnlockLayer
|
||
|
Description: unlocks a Layer so the graphics routines can use it
|
||
|
Library: layers.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: UnLockLayer(layer)
|
||
|
C: void UnLockLayer(struct Layer *)
|
||
|
Machine Language: UnLockLayer(a0)
|
||
|
Modula-2: UnLockLayer(layer: LayerPtr)
|
||
|
Arguments: layer = Layer structure to unlock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnlockLayerInfo
|
||
|
Description: unlocks a Layer_Info structure
|
||
|
Library: layers.library
|
||
|
Offset: -$008A (-138)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: UnlockLayerInfo(layerlnfo)
|
||
|
C: void UnlockLayerInfo(struct Layer_Info *)
|
||
|
Machine Language: UnlockLayerInfo(a0, a1)
|
||
|
Modula-2: UnlockLayerInfo(layerlnfo: LayerlnfoPtr)
|
||
|
Arguments: layerlnfo = Layer_Info structure to unlock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnlockLayerRom
|
||
|
Description: unlocks a Layer so the graphics routines can use it (this function
|
||
|
uses ROM code as opposed to LockLayerRom( )'s RAM-based
|
||
|
code)
|
||
|
Library: graphics.library
|
||
|
Offset: -$01B6 (-438)
|
||
|
Modula-2 Module: RomLayers
|
||
|
Syntax: UnLockLayerRom(layer)
|
||
|
C: void UnLockLayerRom(struct Layer *)
|
||
|
Machine Language: UnLockLayerRom(a5)
|
||
|
Modula-2: UnLockLayerRom(layer: LayerPtr)
|
||
|
Arguments: layer = Layer structure to unlock
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnlockLayers
|
||
|
Description: unlocks all layers so the graphics routines can use them
|
||
|
Library: layers.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: UnLockLayers(layerInfo)
|
||
|
C: void UnLockLayers(struct Layer_Info *)
|
||
|
Machine Language: UnLockLayers(a0)
|
||
|
Modula-2: UnLockLayers(layerInfo: LayerInfoPtr)
|
||
|
Arguments: layerInfo = Layer_Info structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
UnPutCLChar
|
||
|
Description: gets a byte from the end of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0048 (-72)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: byte= UnPutCLChar(cList)
|
||
|
C: long UnPutCLChar(long)
|
||
|
Machine Language: d0 = UnPutCLChar(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
Result: byte = byte from end of character list; -1 no data
|
||
|
-------------------------
|
||
|
UnPutCLWord
|
||
|
Description: gets a word from the end of a character list
|
||
|
Library: clist.library
|
||
|
Offset: -$0066 (-102)
|
||
|
Modula-2 Module: none
|
||
|
Syntax: word = UnPutCLWord(cList)
|
||
|
C: long UnPutCLWord(long)
|
||
|
Machine Language: d0 = UnPutCLWord(a0)
|
||
|
Modula-2: not available
|
||
|
Arguments: cList = character list descriptor, as returned by AllocCList( ) or
|
||
|
StrToCL( )
|
||
|
Result: word = word from end of character list; -1 if no data
|
||
|
-------------------------
|
||
|
UpFrontLayer
|
||
|
Description: moves a layer in front of all other layers
|
||
|
Library: layers.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: success = UpFrontLayer(dummy, layer)
|
||
|
C: long UpFrontLayer(struct Layer_Info *, struct Layer *)
|
||
|
Machine Language: d0 = UpFrontLayer(a0, a1)
|
||
|
Modula-2: UpfrontLayer(layer: LayerPtr): BOOLEAN
|
||
|
Arguments: dummy = unused
|
||
|
layer = pointer to Layer to move behind other layers
|
||
|
Result: success = TRUE if successful; FALSE if unsuccessful
|
||
|
-------------------------
|
||
|
UserState
|
||
|
Description: return to user state and system stack (do NOT call if computer is
|
||
|
already in user state)
|
||
|
Library: exec.library
|
||
|
Offset: -009C (-156)
|
||
|
Modula-2 Module: Interrupts
|
||
|
Syntax: UserState(sysStack)
|
||
|
C: void UserState(char *)
|
||
|
Machine Language: UserState(d0)
|
||
|
Modula-2: UserState(sysStack: ADDRESS)
|
||
|
Arguments: sysStack = system stack pointer as returned by SuperState( )
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Vacate
|
||
|
Description: releases a semaphore locked by Procure( )
|
||
|
Library: exec.library
|
||
|
Offset: -$0222 (-546)
|
||
|
Modula-2 Module: Semaphores
|
||
|
Syntax: Vacate(semaphore)
|
||
|
C: void Vacate(struct Semaphore *)
|
||
|
Machine Language: Vacate(a0)
|
||
|
Modula-2: Vacate(semaphore: SemaphorePtr)
|
||
|
Arguments: semaphore = Semaphore structure to release
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
VBeamPos
|
||
|
Description: returns the current position of the vertical video beam
|
||
|
Library: graphics.library
|
||
|
Offset: -$0180 (-384)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: pos = VBeamPos( )
|
||
|
C: long VBeamPos(void)
|
||
|
Machine Language: d0 = VBeamPos( )
|
||
|
Modula-2: VBeamPos( ): CARDINAL
|
||
|
Arguments: none
|
||
|
Result: pos = current beam position (0-511)
|
||
|
-------------------------
|
||
|
ViewAddress
|
||
|
Description: returns the address of Intuition's View structure
|
||
|
Library: intuition.library
|
||
|
Offset: -$0126 (-294)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: view = ViewAddress( )
|
||
|
C: struct View *ViewAddress(void)
|
||
|
Machine Language: d0 = ViewAddress( )
|
||
|
Modula-2: ViewAddress( ): ViewPtr
|
||
|
Arguments: none
|
||
|
Result: view = address of the Intuition View structure
|
||
|
-------------------------
|
||
|
ViewPortAddress
|
||
|
Description: returns the address of a window's ViewPort structure
|
||
|
Library: intuition.library
|
||
|
Offset: -$012C (-300)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: viewPort = ViewPortAddress(window)
|
||
|
C: struct ViewPort *ViewPortAddress(struct Window *)
|
||
|
Machine Language: d0 = ViewPortAddress(a0)
|
||
|
Modula-2: ViewPortAddress(window: WindowPtr): ViewPortPtr
|
||
|
Arguments: window = Window structure
|
||
|
Result: viewPort = address of window's ViewPort structure
|
||
|
-------------------------
|
||
|
Wait
|
||
|
Description: waits for one or more signals
|
||
|
Library: exec.library
|
||
|
Offset: -$013E (-318)
|
||
|
Modula-2 Module: Tasks
|
||
|
Syntax: signals = Wait(signalSet)
|
||
|
C: long Wait(long)
|
||
|
Machine Language: d0 = Wait(d0)
|
||
|
Modula-2: Wait(signalSet: SignalSet): SignalSet
|
||
|
Arguments: signalSet = set of signals to wait for
|
||
|
Result: signals = signals that have occurred
|
||
|
-------------------------
|
||
|
WaitBlit
|
||
|
Description: waits for the blitter to finish what it's doing
|
||
|
Library: graphics.library
|
||
|
Offset: -$00E4 (-228)
|
||
|
Modula-2 Module: Blitter
|
||
|
Syntax: WaitBlit( )
|
||
|
C: void WaitBlit(void)
|
||
|
Machine Language: WaitBlit( )
|
||
|
Modula-2: WaitBlit( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
WaitBOVP
|
||
|
Description: waits for the vertical beam to reach the bottom of a ViewPort
|
||
|
Library: graphics.library
|
||
|
Offset: -$0192 (-402)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: WaitBOVP(viewPort)
|
||
|
C: void WaitBOVP(struct ViewPort *)
|
||
|
Machine Language: WaitBOVP(a0)
|
||
|
Modula-2: WaitBOVP(viewPort: ViewPortPtr)
|
||
|
Arguments: viewPort = ViewPort structure
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
WaitForChar
|
||
|
Description: waits a specified amount of time for a character to become avail-
|
||
|
able from a virtual terminal
|
||
|
Library: dos.library
|
||
|
Offset: -$00CC (-204)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: avail = WaitForChar(file, timeout)
|
||
|
C: long WaitForChar(BPTR, long)
|
||
|
Machine Language: d0 = WaitForChar(d1, d2)
|
||
|
Modula-2: WaitForChar(file: FileHandle; timeout: LONGINT): BOOLEAN
|
||
|
Arguments: file = BCPL pointer to a file handle
|
||
|
timeout = number of microseconds to wait for character
|
||
|
Result: avail = TRUE if a character is available
|
||
|
-------------------------
|
||
|
WaitIO
|
||
|
Description: waits for an I/O request to be executed
|
||
|
Library: exec.library
|
||
|
Offset: -$01DA (-474)
|
||
|
Modula-2 Module: IO
|
||
|
Syntax: error = WaitIO(ioRequest)
|
||
|
C: long WaitIO(struct IORequest *)
|
||
|
Machine Language: d0 = WaitIO(a1)
|
||
|
Modula-2: WaitIO(ioRequest: ADDRESS): INTEGER
|
||
|
Arguments: ioRequest = IORequest block
|
||
|
Result: error = 0 if successful
|
||
|
-------------------------
|
||
|
WaitPort
|
||
|
Description: waits for a message
|
||
|
Library: exec.library
|
||
|
Offset: -$0180 (-384)
|
||
|
Modula-2 Module: Ports
|
||
|
Syntax: message = WaitPort(port)
|
||
|
C: struct Message *WaitPort(struct MsgPort *)
|
||
|
Machine Language: d0 = WaitPort(a0)
|
||
|
Modula-2: WaitPort(port: MsgPortPtr): ADDRESS
|
||
|
Arguments: port = message port to receive message
|
||
|
Result: message = pointer to first available message
|
||
|
-------------------------
|
||
|
WaitTOF
|
||
|
Description: waits for the next vertical blank
|
||
|
Library: graphics.library
|
||
|
Offset: -$010E (-270)
|
||
|
Modula-2 Module: Views
|
||
|
Syntax: WaitTOF( )
|
||
|
C: void WaitTOF(void)
|
||
|
Machine Language: WaitTOF( )
|
||
|
Modula-2: WaitTOF( )
|
||
|
Arguments: none
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
WBenchToBack
|
||
|
Description: moves the Workbench screen behind all other screens
|
||
|
Library: intuition.library
|
||
|
Offset: -$0150 (-336)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = WBenchToBack( )
|
||
|
C: long WBenchToBack(void)
|
||
|
Machine Language: d0 = WBenchToBack( )
|
||
|
Modula-2: WBenchToBack( ): BOOLEAN
|
||
|
Arguments: none
|
||
|
Result: success = TRUE if Workbench screen is open
|
||
|
-------------------------
|
||
|
WBenchToFront
|
||
|
Description: moves the Workbench screen in front of all other screens
|
||
|
Library: intuition.library
|
||
|
Offset: -$0156 (-342)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = WBenchToFront( )
|
||
|
C: long WBenchToFront(void)
|
||
|
Machine Language: d0 = WBenchToFront( )
|
||
|
Modula-2: WBenchToFront( ): BOOLEAN
|
||
|
Arguments: none
|
||
|
Result: success = TRUE if Workbench screen is open
|
||
|
-------------------------
|
||
|
WhichLayer
|
||
|
Description: finds the layer which contains the specified point
|
||
|
Library: layers.library
|
||
|
Offset: -$0084 (-132)
|
||
|
Modula-2 Module: Layers
|
||
|
Syntax: layer = WhichLayer(layerlnfo, x, y)
|
||
|
C: struct Layer *WhichLayer(struct Layer_Info *, long, long)
|
||
|
Machine Language: d0 = WhichLayer(a0, d0, d1)
|
||
|
Modula-2: WhichLayer(layerlnfo: LayerlnfoPtr; x, y: LONGCARD): LayerPtr
|
||
|
Arguments: layerlnfo = Layerlnfo structure
|
||
|
x = horizontal coordinate of point
|
||
|
y = vertical coordinate of point
|
||
|
Result: layer = pointer to top-most layer containing this point; NULL if
|
||
|
point is not in a layer
|
||
|
-------------------------
|
||
|
WindowLimits
|
||
|
Description: sets the minimum and maximum size of a window
|
||
|
Library: intuition.library
|
||
|
Offset: -$013E (-318)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: success = WindowLimits(window, minWidth, minHeight,
|
||
|
maxWidth, minHeight)
|
||
|
C: long WindowLimits(struct Window *, long, long, long, long)
|
||
|
Machine Language: d0 = WindowLimits(a0, d0, d1, d2, d3)
|
||
|
Modula-2: WindowLimits(window: WindowPtr; minWidth, minHeight,
|
||
|
maxWidth, maxHeight: LONGINT): BOOLEAN
|
||
|
Arguments: window = window to set size limits for
|
||
|
minWidth = window's new minimum width
|
||
|
minHeight = window's new minimum height
|
||
|
maxWidth = window's new maximum width
|
||
|
maxHeight = window's new minimum height
|
||
|
Result: success = TRUE if all limits are set; FALSE if any of the limits are
|
||
|
out of range, in which case only the legal limits are set
|
||
|
-------------------------
|
||
|
WindowToBack
|
||
|
Description: moves a window to the back of all other windows
|
||
|
Library: intuition.library
|
||
|
Offset: -$0132 (-306)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: WindowToBack(window)
|
||
|
C: void WindowToBack(struct Window *)
|
||
|
Machine Language: WindowToBack(a0)
|
||
|
Modula-2: WindowToBack(window: WindowPtr)
|
||
|
Arguments: window = window to move to back of display
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
WindowToFront
|
||
|
Description: moves a window in front of all other windows
|
||
|
Library: intuition.library
|
||
|
Offset: -$0138 (-312)
|
||
|
Modula-2 Module: Intuition
|
||
|
Syntax: WindowToFront(window)
|
||
|
C: void WindowToFront(struct Window *)
|
||
|
Machine Language: WindowToFront(a0)
|
||
|
Modula-2: WindowToFront(window: WindowPtr)
|
||
|
Arguments: window = window to move to front of display
|
||
|
Result: none
|
||
|
-------------------------
|
||
|
Write
|
||
|
Description: writes bytes of data to a file
|
||
|
Library: dos.library
|
||
|
Offset: -$0030 (-48)
|
||
|
Modula-2 Module: DOS
|
||
|
Syntax: length = Write(file, buffer, length)
|
||
|
C: long Write(BPTR, char *, long)
|
||
|
Machine Language: d0 = Write(d1, d2, d3)
|
||
|
Modula-2: Write(file: FileHandle; buffer: ADDRESS; length: LONGINT):
|
||
|
LONGINT
|
||
|
Arguments: file = BCPL pointer to a file handle
|
||
|
buffer = pointer to start of buffer containing data to write
|
||
|
length = number of bytes to write
|
||
|
Result: length = number of bytes successfully written; -1 if error
|
||
|
occurred
|
||
|
-------------------------
|
||
|
WriteExpansionByte
|
||
|
Description: writes a byte to a new-style memory expansion board-nybble by
|
||
|
nybble
|
||
|
Library: expansion.library
|
||
|
Offset: -$0072 (-114)
|
||
|
Modula-2 Module: Expansion
|
||
|
Syntax: error = WriteExpansionByte(board, offset, byte)
|
||
|
C: long WriteExpansionByte(long, long, long)
|
||
|
Machine Language: d0 = WriteExpansionByte(a0, d0, d1)
|
||
|
Modula-2: WriteExpansionByte(board: ADDRESS; offset: LONGCARD; byte:
|
||
|
BYTE): BOOLEAN
|
||
|
Arguments: board = base of a new-style expansion board
|
||
|
offset = logical offset from the configdev base
|
||
|
byte = byte to write to board
|
||
|
Result: error = 0 if successful
|
||
|
-------------------------
|
||
|
WritePixel
|
||
|
Description: colors a single pixel with the current foreground drawing pen
|
||
|
Library: graphics.library
|
||
|
Offset: -$0144 (-324)
|
||
|
Modula-2 Module: Pens
|
||
|
Syntax: error = WritePixel(rastPort, x, y)
|
||
|
C: long WritePixel(struct RastPort *, long, long)
|
||
|
Machine Language: d0 = WritePixel(a1, d0, d1 )
|
||
|
Modula-2: WritePixel(rastPort: RastPortPtr; x, y: INTEGER): INTEGER
|
||
|
Arguments: rastPort = RastPort structure containing pixel to color
|
||
|
x = horizontal coordinate of pixel
|
||
|
y = vertical coordinate of pixel
|
||
|
Result: error = 0 if successful; -1 if pixel is outside specified RastPort
|
||
|
-------------------------
|
||
|
XorRectRegion
|
||
|
Description: performs a 2d XOR operation of a rectangle with a region, leaving
|
||
|
the results in the region
|
||
|
Library: graphics.library
|
||
|
Offset: -$022E (-558)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: status = XorRectRegion(region, rectangle)
|
||
|
C: long XorRectRegion(struct Region *, struct Rectangle *)
|
||
|
Machine Language: d0 = XorRectRegion(a0, a1)
|
||
|
Modula-2: XorRectRegion(region: RegionPtr; rectangle: RectanglePtr):
|
||
|
BOOLEAN
|
||
|
Arguments: region = Region structure
|
||
|
rectangle = Rectangle structure
|
||
|
Result: status = TRUE if successful; FALSE if out of memory
|
||
|
-------------------------
|
||
|
XorRegionRegion
|
||
|
Description: performs a 2d XOR operation of one region with a second region,
|
||
|
leaving the results in the second region
|
||
|
Library: graphics.library
|
||
|
Offset: -$026A (-618)
|
||
|
Modula-2 Module: Regions
|
||
|
Syntax: status = XorRegionRegion(region1, region2)
|
||
|
C: long XorRegionRegion(struct Region *, struct Region *)
|
||
|
Machine Language: d0 = XorRegionRegion(a0, a1)
|
||
|
Modula-2: XorRegionRegion(region1, region2: RegionPtr): BOOLEAN
|
||
|
Arguments: region1 = Region structure
|
||
|
region2 = Region structure
|
||
|
Result: status = TRUE if successful; FALSE if out of memory
|
||
|
-------------------------
|
||
|
Amiga Hardware Registers
|
||
|
|
||
|
The Amiga's hardware is accessed via registers- locations within a chip
|
||
|
that control it's operation or return status information about the chip. A
|
||
|
register is accessed by R/W operations just like RAM.
|
||
|
|
||
|
Warning: You should never attempt to read a write-only register. Doing so
|
||
|
will place a random value in that register and possibly cause a lockup. For
|
||
|
the same reason, never use BCLR or BSET on a write-only register as these
|
||
|
two instructions perform a read prior to clearing or setting the specified
|
||
|
bit. Write-only registers will be annotated with a (*W), and read-only
|
||
|
registers with a (*R) in the Status header. A third type of register is a
|
||
|
Strobe register. These are used by the Amiga to signify that an event has
|
||
|
occurred. You should NEVER READ OR WRITE to a strobe register as the
|
||
|
operation may falsely trigger the strobe and confuse the Amiga.
|
||
|
|
||
|
SET/CLR Bit: Some registers contain a bit labeled "SET/CLR". This is a
|
||
|
special bit that allows you to set or clear the register's other bits
|
||
|
without using AND or OR. SET/CLR will always be bit 15. What happens to a
|
||
|
register that contains a SET/CLR bit depends on the way you set this bit.
|
||
|
If it is set to zero, any other bit that is written to with a one will be
|
||
|
cleared. If bit 15 is set to one, any other bit that is written to with a
|
||
|
one will be set to one. All bits written to with a zero remain unaffected.
|
||
|
So, to clear all the bits, use $7FFF. To set all bits, use $FFFF. The
|
||
|
SET/CLR bit is useful ONLY on write-only registers. On read only registers,
|
||
|
this bit always returns a value of zero.
|
||
|
|
||
|
Now that you realize how the bit operations work, here are the custon chip
|
||
|
register addresses and explanations:
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF000 BLTDDAT Blitter Destination Data (early read dummy address)
|
||
|
Status: DMA Only Agnus
|
||
|
Just before a word of data is moved into RAM by the
|
||
|
blitter, it's stored here. This register cannot be
|
||
|
accessed by the 68K or the copper. It's used
|
||
|
exclusively by the blitter DMA. Writing to it does
|
||
|
nothing. Reading returns a seemingly random number
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF002 DMACONR DMA Enable Read
|
||
|
Status: *R Agnus/Paula
|
||
|
0 AUD0EN 1 = Audio channel 0 DMA enabled
|
||
|
1 AUD1EN
|
||
|
2 AUD2EN
|
||
|
3 AUD3EN
|
||
|
4 DSKEN 1 = Disk DMA enabled
|
||
|
5 SPREN 1 = Sprite DMA enabled
|
||
|
6 BLTEN 1 = Blitter DMA enabled
|
||
|
7 COPEN 1 = Copper DMA enabled
|
||
|
8 BPLEN 1 = Bit-plane DMA enabled
|
||
|
9 DMAEN 0 = DMA for all channels disabled
|
||
|
10 BLTPRI 1 = Blitter has full priority over 68K
|
||
|
0 = Blitter has partial priority
|
||
|
11 UNUSED
|
||
|
12 UNUSED
|
||
|
13 BZERO 1 = If the last blitter operation output
|
||
|
zeroes only. No bits were set in
|
||
|
destination RAM.
|
||
|
14 BBUSY 1 = Blitter is busy ("blitting") See note
|
||
|
15 SETCLR UNUSED
|
||
|
|
||
|
Note: Because of timing problems with 68020/68030 processors, you must wait
|
||
|
a short while before testing BBUSY. A "btst #14,DMACONR" before the test
|
||
|
will provide the appropriate delay. (i.e.: BTST twice)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF004 VPOSR Vertical Beam Position Read
|
||
|
Status: *R Agnus
|
||
|
0 V8 The high bit of the vertical beam position
|
||
|
(1 = pos > 255)
|
||
|
1-14 UNUSED
|
||
|
15 LOF Interlace Long Frame Flag (1 = a long frame
|
||
|
is being drawn (even), 0 = a short frame
|
||
|
(odd))
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF006 VHPOSR Vertical/Horizontal Beam Position Read
|
||
|
Status: *R Agnus
|
||
|
0-7 H1-H8 Video beam's horizontal position in
|
||
|
increments of two lo-res pixels
|
||
|
8-15 V0-V7 Low 8 bits of video beam's horizontal pos
|
||
|
|
||
|
Note: If bit 3 in register BPLCON0 ($DFF100) is set, the Amiga returns the
|
||
|
light pen position and NOT the raster position! Also, the location and size
|
||
|
of the visible screen area changes accordingly with the DIWSTRT and DIWSTOP
|
||
|
(Display Window Start/Stop @ $DFF08E / $DFF090). These registers are
|
||
|
changed by Preferences each time you adjust the display-centering gadget.
|
||
|
Normal Visible Screen area is - horizontal : $40 - $E0
|
||
|
vertical : $2C - $F4
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF008 DSKDATR Disk Data Read (early read dummy address -Disk DMA)
|
||
|
SEE $DFF000 (BLTDDAT) for explanation.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF00A JOY0DAT Joystick/Mouse Port 0 Data
|
||
|
$DFF00C JOY1DAT Port 1 Data
|
||
|
Status: *R Denise
|
||
|
For Mouse Use:
|
||
|
0-7 Horizontal Position Counter
|
||
|
8-15 Vertical Position Counter
|
||
|
For Joystick Use:
|
||
|
0 EOR BIT 1 Down (1 = stick down)
|
||
|
1 Right(1 = stick right)
|
||
|
8 EOR BIT 9 Up (1 = stick up)
|
||
|
9 Left (1 = stick left)
|
||
|
For Paddle Use:
|
||
|
1 Right paddle fire button (1 = fire)
|
||
|
9 Left paddle fire button (1 = fire)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF00E CLXDAT Collision Data
|
||
|
Status: *R Denise
|
||
|
if set to one... 0 Even bit plane collided with odd bit plane
|
||
|
1 Odd plane collided with sprite 0 or 1
|
||
|
2 with sprite 2 or 3
|
||
|
3 4 or 5
|
||
|
4 6 or 7
|
||
|
5 Even plane collide with sprite 0 or 1
|
||
|
6 2 or 3
|
||
|
7 4 or 5
|
||
|
8 6 or 7
|
||
|
9 Sprite 0 or 1 collide with 2 or 3
|
||
|
10 0 or 1 4 or 5
|
||
|
11 0 or 1 6 or 7
|
||
|
12 2 or 3 4 or 5
|
||
|
13 2 or 3 6 or 7
|
||
|
14 4 or 5 6 or 7
|
||
|
15 UNUSED
|
||
|
|
||
|
Note: When you read this register, all bits are cleared, so be sure to save
|
||
|
it if you need it's contents if you want to check for more than one type of
|
||
|
collision. Bitplane collisions are extremely flexible. See CLXCON
|
||
|
($DFF098) for more info.D
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF010 ADKCONR Audio/Disk Control Read
|
||
|
Status: *R Paula
|
||
|
0 ATVOL0 1 = Audio channel 0 modulates channel 1 volume
|
||
|
1 ATVOL1 1 = 1 2
|
||
|
2 ATVOL2 1 = 2 3
|
||
|
3 ATVOL3 1 = Output of audio channel 3 disabled
|
||
|
4 ATPER0 1 = Audio channel 0 modulates channel 1 period
|
||
|
5 ATPER1 1 = 1 2
|
||
|
6 ATPER2 1 = 2 3
|
||
|
7 ATPER3 1 = Output of audio channel 3 disabled
|
||
|
8 FAST 1 = MFM:2 us per bit disk operation (normDOS)
|
||
|
0 = GCR:4 us per bit disk op (double density)
|
||
|
9 MSBSYNC 1 = GCR-format synchronization for disk
|
||
|
operations enabled (not used by DOS)
|
||
|
10 WORDSYNC 1 = Disk Controller is synchronizing on
|
||
|
the data word found in the DSKSYNC
|
||
|
register ($DFF07E) typically set to
|
||
|
$4489 for MFM.
|
||
|
11 UARTBRK 1 = RS232 break-signal is occuring on the
|
||
|
serial TxD line.
|
||
|
12 MFMPREC 1 = MFM selected
|
||
|
0 = GCR selected
|
||
|
13-14 PRECOMP Disk precompensation time (00=none,
|
||
|
01=140 nsec, 10=280 nsec, 11=560 nsec)
|
||
|
15 SETCLR UNUSED
|
||
|
|
||
|
Note: ADKCONR is a read version of ADKCON ($DFF09E). See that register for
|
||
|
a complete explanation of each bit.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF012 POT0DAT Pot (Paddle/Proportional Joystick) Port 0/1 Data Read
|
||
|
$DFF014 POT1DAT
|
||
|
Status: *R Paula
|
||
|
For Paddle Use:
|
||
|
0-7 Left Paddle Counter (0 = completely CCW)
|
||
|
8-15 Right Paddle Counter(0 = completely CCW)
|
||
|
For Proportional Joystick Use:
|
||
|
0-7 Horizontal Counter (0 = stick pushed left)
|
||
|
8-15 Vertical Counter (0 = stick pushed down)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF016 POTGOR Pot Port Data Read
|
||
|
Status: *R Paula
|
||
|
0 START Trigger bit for starting pot counters
|
||
|
(always reads zero)
|
||
|
1-7 UNUSED Reserved for Chip ID
|
||
|
8 DATLX Current state of pin 9 on game port 1 (0/1)
|
||
|
9 OUTLX Output enable for pin 9 on game port 1 (zero)
|
||
|
10 DATLY Current state of pin 5 on game port 1 (0/1)
|
||
|
11 OUTLY Output enable for pin 5 on game port 1 (zero)
|
||
|
12 DTARX Current state of pin 9 on game port 0 (0/1)
|
||
|
13 OUTRX Output enable for pin 9 on game port 0 (zero)
|
||
|
14 DATRY Current state of pin 5 on game port 0 (0/1)
|
||
|
15 OUTRY Output enable for pin 5 on game port 0 (zero)
|
||
|
|
||
|
Notes: This is the read address for the POTGO register ($DFF034). Most of
|
||
|
the bits in this register are write-only and always return a zero when read.
|
||
|
Only bits 8, 10, 12, and 14 return valid data. The remaining bits are
|
||
|
controlled via the POTGO register. (See for more info on these bits)
|
||
|
The Amiga's game ports are quite versatile. Pins 5 and 9 of either port
|
||
|
can be programmed to receive and send digital data. This register allows
|
||
|
you to read the current high-low state of these pins.
|
||
|
Simply read the desired pin's DATxx bit to determine its status. (0 =
|
||
|
0v, 1 = +5v) The positive voltage sent to these pins should never exceed 5
|
||
|
volts or 400 mA. ONLY THE VOLTAGE FROM PIN 7 SHOULD BE CONNECTED TO PIN 5
|
||
|
OR 9. PIN 7 CARRIES +5 VOLTS FROM THE AMIGA'S OWN POWER SUPPLY.
|
||
|
The right mouse button is wired to game port pins 8 and 9. When the
|
||
|
button is pressed, these two pins connect. Pin 8 is grounded, so any
|
||
|
voltage that 9 carries gets shorted to ground.
|
||
|
To sense whether the right mouse button is being pressed on a mouse
|
||
|
plugged into game port 0, you must first set pin 9 to output. (i.e.:
|
||
|
OUTLY = 1 or write $0C00 to POTGO. For a mouse plugged into port 1, use
|
||
|
OUTRY and DATRY instead.) Finally, wait about 300 msec for the voltage to
|
||
|
reach the game port - and then read the status of pin 9 via the DATLY bit in
|
||
|
POTGOR. If this bit equals one, the pin is not grounded, thus the button is
|
||
|
not pressed. If it equals zero, the pin is grounded, and the button has
|
||
|
been pressed.
|
||
|
Because Intuition automatically handles game port 0 mouse events, you'll
|
||
|
have to turn off multitasking if you wish to control this port directly via
|
||
|
the hardware. Even accessing port 1 may cause problems since any
|
||
|
manipulation of POTGO affects all of the bits. Such confusion usually
|
||
|
results in the Amiga thinking that the right mouse button is being clicked
|
||
|
when it really isn't.
|
||
|
Rather than calculate a 300 msec delay, you may write a #$C000 to POTGO
|
||
|
and wait for one vertical blanking period with the following:
|
||
|
WaitVertB:
|
||
|
move.l VPOSR,d0
|
||
|
and.l #$0001FF00,d0
|
||
|
bne WaitVertB
|
||
|
rts
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF018 SERDATR Serial Data Input and Status Read
|
||
|
Status: *R Paula
|
||
|
0-7 DB0-DB7 Byte of data read from serial port
|
||
|
8 DB8/STP Ninth data bit or stop bit
|
||
|
9 STP Stop bit if set up for 9 data bits
|
||
|
10 UNUSED
|
||
|
11 RxD Current status of serial port's RxD line
|
||
|
12 TSRE Transmit shift register empty (if 1)
|
||
|
13 TBE Transmit buffer empty (if 1)
|
||
|
14 RBF Receive buffer is full(if 1)
|
||
|
15 OVRUN Receive buffer overrun (if 1)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF01A DSKBYTR Disk Data Byte and Disk Status Read
|
||
|
Status: *R Paula
|
||
|
0-7 DATA Byte of data read from disk
|
||
|
8-11 UNUSED
|
||
|
12 WORDEQUAL Disk Sync pattern found (if 1)
|
||
|
13 DISKWRITE Disk controller writing (if 1)
|
||
|
Disk controller reading (if 0)
|
||
|
14 DMAOEN Disk DMA is active (if 1)
|
||
|
15 BYTEREADY Bits 0-7 of this register will hold new
|
||
|
data if bit 15 is set.
|
||
|
|
||
|
Notes: Considering the fact that disk data can be transferred to and from
|
||
|
memory automatically through DMA, it is neither necessary nor recommended
|
||
|
that you read data one byte at a time via 0-7, and 15.
|
||
|
Bit 12: WORDEQUAL holds a one for only 2 usec! (The time for one MFM bit
|
||
|
to pass under the head.) AmigaDos uses $4489 for the sync.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF01C INTENAR Interrupt Enable Read
|
||
|
Status: *R Paula
|
||
|
0 TBE 1 = Serial transmit buffer empty interrupt
|
||
|
enabled (level 1)
|
||
|
1 DSKBLK 1 = Disk block done int enabled (level 1)
|
||
|
2 SOFT 1 = Software interrupts enabled (level 1)
|
||
|
3 PORTS 1 = CIA-A and expansion port interrupts
|
||
|
enabled (level 2)
|
||
|
4 COPER 1 = Copper interrupt enabled (level 3)
|
||
|
5 VERTB 1 = Vertical Blank Int enabled (level 3)
|
||
|
6 BLIT 1 = Blitter ready int enabled (level 4)
|
||
|
7 AUD0 1 = Audio channel 1 int enabled (level 4)
|
||
|
8 AUD1 2
|
||
|
9 AUD2 3
|
||
|
10 AUD3 4
|
||
|
11 DBF 1 = Serial receive buffer full interrupt
|
||
|
enabled (level 5)
|
||
|
12 DSKSYN 1 = Disk sync pattern found int enab (lev 5)
|
||
|
13 EXTER 1 = CIA-B and expansion port int enab(lev 6)
|
||
|
14 INTEN Master interrupt off switch (0 = All
|
||
|
ints listed above disabled)
|
||
|
15 SETCLR UNUSED by INTENAR
|
||
|
|
||
|
Notes: The Amiga's hardware is capable of generating 14 interrupts on seven
|
||
|
levels. Level 1-6 are maskable, and level 7 is an NMI. This register tells
|
||
|
you which ints are enabled or disabled. To enable or disable an interrupt,
|
||
|
use this register's write address, INTENA ($DFF09A). To force an interrupt
|
||
|
to take place, use register INTREQ ($DFF09C). To actually find out what
|
||
|
type of interrupt is taking place, read INTREQR at $DFF01E.
|
||
|
When the uP receives an interrupt signal, it takes the level number,
|
||
|
multiplies it by two, and adds $FFFFF1 to the result. This calculation
|
||
|
produces the address of a byte long memory offset contained in ROM. The
|
||
|
memory offset is then multiplied by four to obtain the address of the
|
||
|
interrupt's auto vector - a location that contains the pointer to the
|
||
|
corresponding interrupt processing routine. Under the current version of
|
||
|
ROM, these four byte pointers are stored in locations $64, $68, $6C, $70,
|
||
|
$74, $78, and $7C, for the level 1-7 interrupts respectively.
|
||
|
To prioritize interrupts that share the same level number, Exec has
|
||
|
assigned each interrupt a pseudo priority number. Again, the higher this
|
||
|
number, the higher the priority:
|
||
|
Interrupt 680x0 Level Pseudo-Priority
|
||
|
--------- ----- -----
|
||
|
Software 1 1
|
||
|
Disk Block Done 1 2
|
||
|
Transmit Buffer Empty 1 3
|
||
|
CIA-A (exp bus pin 19) 2 1
|
||
|
Copper 3 1
|
||
|
Vertical Blank 3 2
|
||
|
Blitter Done 3 3
|
||
|
Audio Channel 2 4 1
|
||
|
Audio Channel 0 4 2
|
||
|
Audio Channel 3 4 3
|
||
|
Audio Channel 1 4 4
|
||
|
Read Buffer Full 5 1
|
||
|
Disk Sync Pattern Found 5 2
|
||
|
CIA-B (exp bus pin 22) 6 1
|
||
|
|
||
|
If you plan on handling interrupts completely on your own, note that
|
||
|
interrupt processing routines are always executed in SUPERVISOR mode. As a
|
||
|
minimum, your routine should clear the corresponding bit in the INTREQ
|
||
|
register to clear that interrupt. Use the 680x0 instruction RTE to return
|
||
|
from an interrupt.
|
||
|
To cause a raster interrupt to occur, simply make the copper wait for the
|
||
|
desired line, then store #$8010 in INTREQ:
|
||
|
wait 0,100 ; wait for line 100
|
||
|
move #$8010,INTREQ ; trigger interrupt
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF01E INTREQR Interrupt Request
|
||
|
Status: *R Paula
|
||
|
The bit by bit explanations are exactly the same
|
||
|
except that "enabled" is replaced with "requested".
|
||
|
See INTENAR ($DFF01C) for details.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF020 DSKPTH Disk Pointer
|
||
|
$DFF022 DSKPTL
|
||
|
Status: *W Agnus
|
||
|
This is where you store the starting address of your
|
||
|
disk data prior to activating disk DMA. DSKPT is
|
||
|
broken into a High and Low portion. Note that if your
|
||
|
Amiga does not have a 1MB Agnus, you cannot specify
|
||
|
an address above $7FFFF. Otherwise, it is $FFFFF.
|
||
|
The low bit is always interpreted as zero, so the
|
||
|
data must begin at an even location.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF024 DSKLEN Disk Data Length
|
||
|
Status: *W Paula
|
||
|
0-13 LENGTH Number of words to read or write
|
||
|
14 WRITE 1 = Activate write mode 0 = read mode
|
||
|
15 DMAENA 1 = Enable Disk DMA 0 = Disable Disk DMA
|
||
|
|
||
|
Notes: You must write the same value TWICE in a row in order for the value
|
||
|
to take effect. This double write rule was incorporated to safeguard
|
||
|
against accidental disk activity - programs that lose control and start
|
||
|
trashing memory can't just shove a number into this register and initiate
|
||
|
potentially harmful disk activity.
|
||
|
Since the length must be stored in 14 bits, the data cannot be longer
|
||
|
than 32766 bytes. The DMA hardware uses this length value as a counter.
|
||
|
Every time a word of data is transferred to or from disk, this counter is
|
||
|
decremented, and the address in the DSKPT register incremented. Transfer
|
||
|
stops when this value reaches zero.
|
||
|
Because of a bug in the Amiga Hardware, the last three bits of data are
|
||
|
missing. To remedy this, save one more word than necessary.
|
||
|
Before and after doing any disk operations, set this register to #$0000
|
||
|
to enable read mode and disable disk DMA.
|
||
|
Bit 15: Setting this bit initiates disk DMA. It will not start, however,
|
||
|
until the DMAENA bit in the ADKCON register ($DFF09E) is also set. You'll
|
||
|
have to set both of these bits in order to perform any DMA-controlled disk
|
||
|
operations. NEVER start disk DMA unless a previous operation is complete or
|
||
|
you may wind up trashing the data on the disk! To find out when a read or
|
||
|
write operation is complete, use the disk block done interrupt, which can be
|
||
|
detected through the use of the DSKBLK bit (1) in the INTEQR register at
|
||
|
$DFF01E.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF026 DSKDAT Disk DMA Write
|
||
|
Status: *W Paula
|
||
|
This is the data buffer used by the disk DMA when
|
||
|
transferring data. It is the write address of the
|
||
|
DSKDATR register ($DFF008).
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF028 REFPTR Refresh Pointer
|
||
|
Status: *W Agnus
|
||
|
The Amiga uses this register as a RAM refresh address
|
||
|
register. Do not modify the value there or you may
|
||
|
corrupt the contents of RAM! It is for diagnostic
|
||
|
purposes only.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF02A VPOSW Vertical Beam Position Write
|
||
|
Status: *W Agnus
|
||
|
This is the write address of the VPOSR register
|
||
|
located at $DFF004. Note the warnings that apply for
|
||
|
the refresh pointer as they also apply.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF02C VHPOSW Vertical/Horizontal Beam Position Write
|
||
|
Status: *W Agnus
|
||
|
This is the write address of the VHPOSR register
|
||
|
located at $DFF006. Note the warnings that apply for
|
||
|
the refresh pointer as they also apply.
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF02E COPCON Coprocessor Control
|
||
|
Status: *W Agnus
|
||
|
0 UNUSED
|
||
|
1 CDANG Copper Danger Bit (1 = Copper can access
|
||
|
blitter registers 0 = Copper cannot.)
|
||
|
2-15 UNUSED
|
||
|
|
||
|
Notes: A one value allows access to $DFF040+, and a zero value $DFF080+.
|
||
|
For instructions on the copper and its instruction set, see locations
|
||
|
$DFF080-$DFF08C.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF030 SERDAT Serial Data Output
|
||
|
Status: *W Paula
|
||
|
0-7 DB0-DB7 Byte of data to be output
|
||
|
8 DB8/STP Ninth data bit or stop bit
|
||
|
9 STP Stop Bit if sending nine data bits
|
||
|
10-15 UNUSED (See below)
|
||
|
|
||
|
Notes: To send data out the serial port, simply store it here. Upon
|
||
|
receiving a nonzero value, the contents of the register are shifted out the
|
||
|
serial port - low bit first, high bit last until its contents are empty
|
||
|
(equal zero). Since the start bit is sent automatically, DO NOT include it
|
||
|
as part of your data. Because you must send at least one stop bit, SERDAT
|
||
|
should never equal zero.
|
||
|
By convention, only 8 or 9 data bits should be stored in this register at
|
||
|
any on time. However, because this is a true 16 bit register, up to 15 data
|
||
|
bits and one stop bit can be output in just one shot - an interesting, if
|
||
|
questionably useful feature.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF032 SERPER Serial Period (Transfer Rate) and Data Bit Control
|
||
|
Status: *W Paula
|
||
|
0-14 RATE Bit transfer rate specified in increments of
|
||
|
279.4 nsec.
|
||
|
15 LONG Number of data bits to expect when receiving
|
||
|
data (1 = nine 0 = eight data bits)
|
||
|
|
||
|
Notes: The value stored in bits 0-14 determine how many bus cycles occur
|
||
|
between each bit sent or received through the serial port. So, if one bit
|
||
|
is to be sent every X bus cycles, use X-1. Serial transfer rates are
|
||
|
usually specified in baud rates, not bus cycles. Use this formula to
|
||
|
translate the baud rate into the period value this regiester expects:
|
||
|
Period = (3579546 / Baudrate) - 1
|
||
|
The period value for the six most common baud rates are:
|
||
|
Baud Rate Period
|
||
|
--------- ------
|
||
|
300 11931
|
||
|
600 5965
|
||
|
1200 2982
|
||
|
2400 1490
|
||
|
4800 745
|
||
|
9600 372
|
||
|
Bit 15: Affects incoming, not outgoing data length.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF034 POTGO Pot Port Data
|
||
|
Status: *W Paula
|
||
|
See POTGOR at $DFF016 for an explanation on how this
|
||
|
write register works.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF036 JOYTEST JOY0DAT and JOY1DAT Write
|
||
|
Status: *W Denise
|
||
|
This register allows you to set the contents of the
|
||
|
JOY0DAT and JOY1DAT registers at $DFF00A / $DFF00C.
|
||
|
The value stored here affects both registers,
|
||
|
allowing you to reset the mouse position counters for
|
||
|
both ports with just one instruction.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF038 STREQU Short Frame Vertical Blank Strobe
|
||
|
$DFF03A STRVBL Normal Vertical Blank Strobe
|
||
|
$DFF03C STRHOR Horizontal Sync Strobe
|
||
|
$DFF03E STRLONG Long Raster Strobe
|
||
|
Status: Strobe Denise (Denise/Paula on STRHOR)
|
||
|
Do not read to or write from any of these registers.
|
||
|
Doing so would falsely trigger the strobe and confuse
|
||
|
the Amiga.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF040-$DFF074 The Blitter Registers
|
||
|
|
||
|
The blitter takes care of almost all of the Amiga's bitmapped graphics
|
||
|
manipulation, from drawing lines to moving objects and filling outlined
|
||
|
areas. Intuition, for example, uses the blitter for such things as drawing
|
||
|
gadgets and printing text. And one of the best things about the blitter is
|
||
|
that it executes independently, allowing the Amiga to animate objects while
|
||
|
the uP is hard at work executing program instructions.
|
||
|
|
||
|
Copy Mode: The blitter's main task is to copy data from one area of
|
||
|
memory to another. This operation is specified as a blit. The blitter was
|
||
|
specifically designed to copy bitmap data, however, you can use the blitter
|
||
|
to copy whatever type of data you choose.
|
||
|
Data to be copied may come from up to three different locations in
|
||
|
memory, but you can have only one destination address. The blitter refers
|
||
|
to the source addresses as A, B, and C. The destination area is called D.
|
||
|
When using more than one source address, the blitter must combine the
|
||
|
data from the different sources before it can be written back out. To do
|
||
|
this, it performs any combination of eight different logic operations called
|
||
|
miniterms. Miniterms allow you to combine the bits from A, B, and C in 256
|
||
|
different ways before they reach their destination. This provides the
|
||
|
programmer with great flexibility when copying bitmapped images. Shapes can
|
||
|
be inverted, merged, "cookie cut", and so on. Bits 0-7 in the BLTCON0
|
||
|
register at $DFF040 control the miniterm settings.
|
||
|
The most common use for the blitter is to move rectangular areas of a
|
||
|
bitmapped screen. Because of the way screen bitmaps are laid out, it would
|
||
|
be impractical if all you could do was to copy consecutive bytes in memory.
|
||
|
Instead, you must be able to skip several bytes between each horizontal
|
||
|
screen line. That way, you don't have to copy objects that take up the
|
||
|
entire width of the screen.
|
||
|
The BLTAMOD-BLTDMOD registers ($DFF060-$DFF066) allow you to specify the
|
||
|
difference between the width of the object being copied and the width of the
|
||
|
bitmap. The BLTSIZE register at $DFF058 defines width and height of the
|
||
|
source and destination area. Together these registers allow the blitter to
|
||
|
copy any rectangular area of a bitmap.
|
||
|
The memory addresses of A, B, and C go in registers BLTAPT, BLTBPT, and
|
||
|
BLTCPT ($DFF050, $DFF04C, and $DFF048) respectively, and the D address goes
|
||
|
in register BLTDPT ($DFF054). When specifying A, B, C, or D, you must
|
||
|
provide the blitter with an even, word aligned address.
|
||
|
Because bitmapped objects don't always begin on a word aligned address,
|
||
|
and their width isn't always an even multiple of 16 (16 bits = 1 word), the
|
||
|
blitter can mask out certain bits in the first and last word of each
|
||
|
horizontal line copied from source A. This way, you can copy an area that
|
||
|
starts at any pixel location and is of any pixel width you desire. The
|
||
|
first word mask for source A goes in register BLTAFWM ($DFF044). The last
|
||
|
word mask goes in register BLTALWM ($DFF046). In effect, the first word of
|
||
|
each line is ANDed with BLTAFWM and the last word of each line is ANDed with
|
||
|
BLTALWM before they are written to destination RAM.
|
||
|
To move bitmapped images horizontally with pixel accuracy, it is
|
||
|
necessary to shift the image's data one bit at a time. Using bits 12-15 in
|
||
|
the BLTCON0 and BLTCON1 registers ($DFF040 and $DFF042), you can tell the
|
||
|
blitter to shift source A and/or source B data right 0-15 bits before it's
|
||
|
transferred to it's destination. The shifting takes place within the
|
||
|
blitter so it does not affect the area of memory actually being copied.
|
||
|
Shifting is not restricted by word boundaries; a word's low bit is
|
||
|
shifted into the high bit of the following word. If there is no previous
|
||
|
word of data being copied (i.e. if the current word is the very first word
|
||
|
of data being copied), zeroes are shifted into the word's high bits.
|
||
|
What happens when you need to shift something left, say a pixel? Well,
|
||
|
simply shift it right (16-x) times. The only difference is that your data
|
||
|
is one word further to the right. Optionaly, you could also run the blitter
|
||
|
in descending mode. In this mode, data is shifted left by the value stored
|
||
|
in bits 12-15 of the BLTCON0 and BLTCON1 registers. Here's another reason
|
||
|
for operating the blitter in descending mode:
|
||
|
The blitter is usually called upon to move objects around the screen.
|
||
|
Generally, a programmer will do this by copying an object's data from a
|
||
|
special buffer area in memory to the screen's bitmap. (Since the blitter
|
||
|
can only copy to one destination area at a time, you'll have to do a blitter
|
||
|
operation for each bit plane.) Next, a copy of the screen's background is
|
||
|
copied to the screen to erase the object. Finally, the object is copied to
|
||
|
a different location on the screen, thus making in move.
|
||
|
In the previous example, data was copied from two separate areas of
|
||
|
memory. Sometimes it's desirable to copy to and from areas that overlap.
|
||
|
However, this may cause problems because the blitter may copy a piece of
|
||
|
data into a memory location that hasn't been read yet, thus destroying it.
|
||
|
(i.e. If the destination and source overlap, and the destination is higher
|
||
|
in memory, bye-bye data!)
|
||
|
To avoid the problem of overlapping data, the blitter can be run in two
|
||
|
modes: ascending and descending. When should you use descendong mode?
|
||
|
Well, if the end of the source overlaps the start of the destination, use
|
||
|
descending mode. If the start of the source overlaps the end of the
|
||
|
destination, use ascending mode. If the source and destination don't
|
||
|
overlap, it doesn't matter what you use. The DESC bit (1) in the BLTCON1
|
||
|
register at $DFF042 determines the blitter's current mode.
|
||
|
To initiate a blitter copy operation, you should first select the blitter
|
||
|
copy mode by NOT setting the LINE bit (0) in the BLTCON1 register at
|
||
|
$DFF042. Second, tell the computer the address of your source data using
|
||
|
the BLTAPT, BLTBPT, BLTCPT, and the destination data at BLTDPT. (These
|
||
|
addresses should specify the starting or ending addresses of the data
|
||
|
depending on whether the blitter is running in ascending or descending mode,
|
||
|
respectively.) Third, use BLTCON0 to select the desired miniterms and tell
|
||
|
the computer which sources you're using (A, B, and/or C) and enable the
|
||
|
blitter's D destination channel. (If you don't enable D, data isn't going
|
||
|
anywhere!) Fourth, set up any other options you want such as shifting or
|
||
|
masking of data. Finally, write the width and height of the area to be
|
||
|
copied into the BLTSIZE register at $DFF058. Writing to BLTSIZE
|
||
|
automatically starts the blitter, so it SHOULD BE THE VERY LAST THING YOU
|
||
|
SET! During the blitter operation, the BBUSY bit (14) in the DMACONR
|
||
|
register is set equal to one. When the blitter is finished, this bit is
|
||
|
cleared.
|
||
|
The following happens during a blitter copy operation: Data is copied one
|
||
|
word at a time from the memory address specified by the BLTxPT registers to
|
||
|
the address found in BLTDPT. Every time a word is copied, the BLTxPT
|
||
|
registers are incremented (or decremented if in descending mode). When the
|
||
|
number of words to b copied matches the width in the BLTSIZE register, the
|
||
|
modulation value found in the BLTxMOD registers is added to the BLTxPT
|
||
|
registers and the copying continues on the next line. When the number of
|
||
|
lines copied equals the height in BLTSIZE, the operation is complete and the
|
||
|
blitter stops.
|
||
|
|
||
|
Fill Mode: The blitter offers a crude area-fill option that works in
|
||
|
tandem with the data-copy operation described above. Fill mode is activated
|
||
|
by BLTCON1's IFE (Inclusive Fill Enable) bit or EFE (Exclusive Fill Enable)
|
||
|
bit prior to turning on the blitter. After the blitter reads data from
|
||
|
memory and manipulates it according to the miniterm settings, the specified
|
||
|
fill operation is performed on the data before it is written to destination
|
||
|
memory. Fill operations work IN DESCENDING MODE ONLY! The figure below
|
||
|
illustrates the effect of each type of fill operation has on data:
|
||
|
|
||
|
After:
|
||
|
Before FCI = 0 FCI = 1
|
||
|
|
||
|
00011000 00011000 11111111
|
||
|
00100100 00111100 11100111
|
||
|
01000010 01111110 11000011
|
||
|
Fill 01000010 01111110 11000011
|
||
|
00100100 00111100 11100111
|
||
|
00011000 00011000 11111111
|
||
|
|
||
|
00011000 00001000 11110111
|
||
|
00100100 00011100 11100011
|
||
|
Exclusive 01000010 00111110 11000001
|
||
|
Fill 01000010 00111110 11000001
|
||
|
00100100 00011100 11100011
|
||
|
00011000 00001000 11110111
|
||
|
|
||
|
In all fills, the blitter evaluates data one bit at a time, starting at
|
||
|
the rightmost edge and moving to the left. Before the fill begins, however,
|
||
|
the blitter takes note of the FCI bit (2) of the BLTCON1 register. The
|
||
|
value of this bit becomes the initial fill value of the blitter's fill bit.
|
||
|
For the sake of clarity, let's assume FCI starts at zero.
|
||
|
Here's how inclusive fill works: As the blitter moves left, it changes
|
||
|
all zero bits to zero, because zero is the current value of the fill bit.
|
||
|
When the blitter encounters a 1 bit, it toggles the fill bit, changing it to
|
||
|
a one. Now the blitter changes the following 0 bits to 1, because that is
|
||
|
the current value of the fill bit. Every time the blitter encounters a 1
|
||
|
bit in the data, the fill bit changes value. The figure above illustrates
|
||
|
the difference between fills that start with FCI = 0 or FCI = 1.
|
||
|
Exclusive fills take one extra step when they encounter a 1 bot. In
|
||
|
addition to toggling the fill bit, the blitter replaces that 1 bit with the
|
||
|
new fill-bit value.
|
||
|
Both types of fills expect borders to be defined by a single 1 bit - one
|
||
|
bit to tell the blitter that it's inside an area, and the other to tell it
|
||
|
that it's outside. When the blitter encounters two one bits in a row, it
|
||
|
assumes that there is no space to be filled since there is no zero bit
|
||
|
between pixels. If the blitter encounters three 1 bits in a row, the
|
||
|
blitter assumes that it has gone in, out, then back in to an area to be
|
||
|
filled. (The fill bit has been toggled three times.) This happens when the
|
||
|
blitter runs across an odd number of adjacent bits.
|
||
|
To execute a fill operation, simply set up the blitter registers for a
|
||
|
standard copy operation, set either the IFE or EFE bit, set the FCI bit to
|
||
|
the desired value, set the DESC to put the blitter in descending mode, then
|
||
|
start the blitter by writing the area size to the BLTSIZE register. By
|
||
|
setting the blitter's source address equal to the destination address, you
|
||
|
can fill an area without having to copy data from one separate location to
|
||
|
another.
|
||
|
|
||
|
Line Mode: Besides copying data and filling areas, the blitter has one
|
||
|
more talent: drawing lines. In line mode, almost all of the blitter
|
||
|
registers change their functions.
|
||
|
The blitter draws lines at incredible speeds, much faster than the 68000.
|
||
|
Unfortunately, you can't just give the blitter two points and then tell it
|
||
|
to connect the dots. You need to perform some calculations first.
|
||
|
Let's say that you want to draw a line from point (x1,y1) to (x2,y2).
|
||
|
From these coordinates you need to figure out the horizontal and vertical
|
||
|
distance between the line's two end points. This is easily calculated using
|
||
|
the following two formulae:
|
||
|
dx = abs(x1-x2)
|
||
|
dy = abs(y1-y2)
|
||
|
Now you're ready to give the BLTCON1 register at $DFF042 some information
|
||
|
about the physical orientation of the line.
|
||
|
If (dx >= dy) and (x1 >= x2) set bit 2.
|
||
|
If (dx < dy) and (y1 >= y2) set bit 2.
|
||
|
If (dx >= dy) and (y1 >= y2) set bit 3.
|
||
|
If (dx < dy) and (x1 >= x2) set bit 3.
|
||
|
If (dx >=dy) set bit 4.
|
||
|
Together, these bits define the octant (position relative to the line's
|
||
|
starting position) in which the line will appear. The following shows how
|
||
|
the Amiga divides the screen into octants:
|
||
|
|
||
|
\ | / * = x1,y1
|
||
|
\ 3 | 1 / Note: The numbers shown in this figure
|
||
|
7 \ | / 6 represent the combined value of BLTCON1's
|
||
|
\ | / bits 2-4. If the line appears on the border
|
||
|
-----*----- of two octants, it does not matter which of
|
||
|
/ | \ the two octants you select.
|
||
|
5 / | \ 4
|
||
|
/ 2 | 0 \
|
||
|
/ | \
|
||
|
|
||
|
Next, you need to determine which value is larger: dx or dy. Let dmax
|
||
|
equal the greater value, and dmin the lesser value. Now use these values to
|
||
|
set the following registers:
|
||
|
dmax = max(dx,dy)
|
||
|
dmin = min(dx,dy)
|
||
|
BLTBMOD = 4* dmin
|
||
|
BLTAMOD = 4 * (dmax-dmin)
|
||
|
BLTAPTL = (4 * dmin) - (2 * dmax)
|
||
|
These formulae define the line's slope. If the result of the last
|
||
|
calculation BLTAPTL is negative, you must store a 1 in the SIGN bit (6) of
|
||
|
the BLTCON1 register.
|
||
|
Besides holding the line's octant number and the negative/positive status
|
||
|
of the line's slope, BLTCON1 affects the line's physical appearance. If
|
||
|
you're drawing lines to enclose an area that you plan to fill later using
|
||
|
blitter fill mode, you should set the ONEDOT bit (1) equal to one. This
|
||
|
tells the blitter to draw lines using only one pixel per raster, thus
|
||
|
providing a single pixel border for your object.
|
||
|
To create textured lines, BLTCON1's bits 12-15 work in conjunction with
|
||
|
the BLTBDAT register ($DFF072). The bit pattern found in BLTBDAT defines
|
||
|
the pixel pattern used to draw lines. For normal solid lines, set all of
|
||
|
BLTBDAT's bits to one. (i.e. $FFFF) Other values create dotted or dashed
|
||
|
lines. Bits 12-15 in BLTCON1 allow you to specify which bit in BLTBDAT,
|
||
|
0-15, defines the status of the first pixel in the line. For most practical
|
||
|
purposes, BLTCON1's bits 12-15 should be set equal to the value of x1's
|
||
|
lower 4 bits. (i.e. x1 AND $0F) This informs the blitter to start the line
|
||
|
off with the value found in BLTBDAT's MSB (15). IMPORTANT: ALWAYS SET
|
||
|
BLTCON1 PRIOR TO BLTBDAT!
|
||
|
BLTCON1's bit 5 should always be set to zero, as should bits 7 through
|
||
|
11. To tell the blitter that you want to draw lines instead of copy data,
|
||
|
the LINE bit (0) must be set to 1.
|
||
|
The Amiga needs certain information about the size and location of the
|
||
|
screen's bitmap before it can draw a line. First, store the byte-width
|
||
|
(number of pixels divided by 8) of the bitmap in the BLTCMOD and BLTDMOD
|
||
|
registers ($DFF060 and $DFF066). Next, you must put the address of the word
|
||
|
containing the starting point of the line into the BLTCPT and BLTDPT
|
||
|
registers. ($DFF048 and $DFF054)
|
||
|
Only one bitplane can be written to during a single blitter operation.
|
||
|
So, to draw a line of a particular color on a multiple bitplane screen, it
|
||
|
may be necessary to perform two or more line blits. In these cases, you set
|
||
|
the registers up for the first bitplane as usual, and perform the blit; then
|
||
|
for subsequent bitplanes, you simply reinitialize the registers with the
|
||
|
same values EXCEPT for the registers BLTCPT and BLTDPT, which must contain
|
||
|
the address of the line's starting point within the new bitplane.
|
||
|
As with blitter copy mode, you must set bits 0-7 in the BLTCON0 register
|
||
|
($DFF040) to choose a miniterm. Usually, you should store $CA here, but if
|
||
|
you prefer to XOR your line onto the screen (invert all the pixels found on
|
||
|
the line), store a $4A here.
|
||
|
BLTCON0's bits 8-11 should be set equal to $B. (This activates blitter
|
||
|
source A and C, and destination D.) Store x1's lower four bits (x1 AND $0F)
|
||
|
into BLTCON0's bits 12-15. The blitter uses this value to determine the bit
|
||
|
position of the line's starting point within the bitplane memory location
|
||
|
specified by registers BLTCPT and BLTDPT.
|
||
|
Now, set BLTADAT ($DFF074) equal to $8000. (Set this register only AFTER
|
||
|
you've set BLTCON0) Only two more registers must be set before you can
|
||
|
activate the blitter: BLTAFWM and BLTALWM. ($DFF044 and $DFF046) Store a
|
||
|
$FFFF into both.
|
||
|
Finally, you're ready to start the blitter by writing to the BLTSIZE
|
||
|
register ($DFF058). Use the following formula to determine the value that
|
||
|
you should store into this register:
|
||
|
BLTSIZE = (dmax * 64) + 66
|
||
|
Because writing to BLTSIZE turns on the blitter, this should be the last
|
||
|
register that you set.
|
||
|
|
||
|
General Guidelines: When programming the blitter at the hardware level
|
||
|
with multitasking turned on, you must be sure to grab the blitter for your
|
||
|
own exclusive use so other programs don't try to use it. Using the library
|
||
|
function call OwnBlitter() you can reserve the blitter for your own
|
||
|
personal use. The function call DisownBlitter() frees the blitter so other
|
||
|
programs can use it.
|
||
|
Before writing to any of the blitter registers, you must be sure the
|
||
|
blitter isn't currently in operation, even after a call to OwnBlitter(). To
|
||
|
ensure the blitter's dormancy, you can use the function call WaitBlit(), or
|
||
|
you can read the status of the BBUSY bit found in the DMACONR register at
|
||
|
$DFF002.
|
||
|
Under normal operation conditions, the Amiga's microprocessor has
|
||
|
priority over the blitter when it comes to accessing chip RAM. Because of
|
||
|
the way memory cycles are allocated, memory conflicts rarely occur between
|
||
|
the blitter and the 68000. However, if time is a critical factor, you can
|
||
|
give the blitter a higher priority than the 68000 by setting the BLTPRI bit
|
||
|
in the DMACON register ($DFF096).
|
||
|
The blitter can perform so many special operations on a word of data that
|
||
|
it's important to know the order in which these operations take place.
|
||
|
Masking via the BLTAFWM and BLTALWM register takes effect first (assuming
|
||
|
the data was obtained from A and is either the first or last word of a
|
||
|
horizontal line.); next the data is shifter, if a shift was specified my the
|
||
|
source's shift bits (ASHx or BSHx); the miniterm operations are performed
|
||
|
next; and finally, the data is filled according to the status of BLTCON1's
|
||
|
EFE, IFE, and FCI bits. Only after all this does the data reach its
|
||
|
destination.
|
||
|
As a general rule, you should always write zeroes to any unused bits in
|
||
|
a blitter register. On future versions of the Amiga blitter, these bits may
|
||
|
be used to perform new functions - functions that could freak your program
|
||
|
if mistakingly activated!
|
||
|
In the following register explanations, a lowercase letter (i.e.: a, b,
|
||
|
c) will be used to specify a normal miniterm descriptor, and a capital
|
||
|
letter it's NOTted equivalent. (i.e. A, B, C = NOT a, NOT b, NOT c) This
|
||
|
is for the miniterm descriptors only!
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF040 BLTCON0 Blitter Control Register 0
|
||
|
Status: *W Agnus
|
||
|
0 LF0 1 = Selects miniterm ABC
|
||
|
1 LF1 1 = Selects miniterm ABc
|
||
|
2 LF2 1 = Selects miniterm AbC
|
||
|
3 LF3 1 = Selects miniterm Abc
|
||
|
4 LF4 1 = Selects miniterm aBC
|
||
|
5 LF5 1 = Selects miniterm aBc
|
||
|
6 LF6 1 = Selects miniterm abC
|
||
|
7 LF7 1 = Selects miniterm abc
|
||
|
8 USED 1 = Enable DMA for D
|
||
|
9 USEC 1 = Enable DMA for C
|
||
|
10 USEB 1 = Enable DMA for B
|
||
|
11 USEA 1 = Enable DMA for A
|
||
|
12-15 ASH0-3 Preshift value for A
|
||
|
For Line Mode:
|
||
|
0-7 LF0-LF7 Miniterm value, usually $CA
|
||
|
8 USED Set to 1
|
||
|
9 USEC Set to 1
|
||
|
10 USEB Set to 0
|
||
|
11 USEA Set to 1
|
||
|
12-15 START0-3 Set to (x1 and #$0F)
|
||
|
|
||
|
Here's how BLTCON0's bits operate in normal copy mode:
|
||
|
Bits 0-7: Each of these bits controls a particular miniterm - a logical
|
||
|
operation performed on blitter source data before it reaches its
|
||
|
destination. To activate a miniterm, simply set its bit equal to one. You
|
||
|
may select as many or as few as you want.
|
||
|
Using miniterms, you can slice and dice data in a variety of ways.
|
||
|
Suppose you set bit zero equal to one. In this case, the miniterm is ABC.
|
||
|
What that means is that a one bit will be output to D only when:
|
||
|
A=0, B=0, and C=0! Any other combination results in a zero output.
|
||
|
Conversely, miniterm abc will output a one only when A, B, and C are equal
|
||
|
to one.
|
||
|
For more complex results, it's possible to activate more than one
|
||
|
miniterm at once. The resulting miniterms are added together (OR'ed) and
|
||
|
simplified. Thus: aBC + aBc can be simplified to aB. (If the values are
|
||
|
different as in the case of the C's, they cancel out.) You may expand aB in
|
||
|
the same way to aBC + aBc.
|
||
|
To fill an area of memory with zeroes, don't select any miniterms.
|
||
|
Consequently, you can fill memory with #$FF's by selecting all of the
|
||
|
miniterms. The following table contains the miniterm settings avaliable to
|
||
|
graphics.library function calls:
|
||
|
Miniterm Val Miniterm Logic Result of Most Useful Settings
|
||
|
------------ -------------- ------------------------------
|
||
|
#$00 always zero Clear Destination
|
||
|
#$10 aBC
|
||
|
#$20 aBc
|
||
|
#$30 aB Copy inverted source to destination
|
||
|
#$40 abC
|
||
|
#$50 aC Invert Destination
|
||
|
#$60 aBc + abC Merge (cookie cut) source with dest.
|
||
|
#$70 aB + aC
|
||
|
#$80 ABC Write 1s only where source & dest
|
||
|
overlap
|
||
|
#$90 abc + aBC
|
||
|
#$A0 ac
|
||
|
#$B0 ac + aB
|
||
|
#$C0 ab Direct copy of source to destination
|
||
|
#$D0 ab + aC
|
||
|
#$E0 ac + ab Combine (mix) source with destination
|
||
|
#$F0 always one Fill Destination
|
||
|
|
||
|
Note: Even if you try to set the lower four bits of a graphics.library
|
||
|
miniterm, the system will zero them out before actually writing this value
|
||
|
to the register's LFx bits.
|
||
|
If you set the blitter's sources the same way that the
|
||
|
graphics.library does - A points to a mask (usually $FFFF), B points to the
|
||
|
source data, and C points to the Destination data - you can use this table
|
||
|
to determine the miniterm settings for your own blitter routines.
|
||
|
When blitting with only one or two sources active, choose miniterms that
|
||
|
aren't affected by the value of the unused source(s).
|
||
|
|
||
|
Bit 8: This bit determines whether the blitter's destination DMA is
|
||
|
enabled. Seting this bit to one enabled the DMA, and 0 Disables it. If
|
||
|
destination DMA is disabled, nothing can be written during a blit. This
|
||
|
seemingly useless feature turns out to be quite useful feature for detecting
|
||
|
collisions between two images. Simply set up the blitter for sources A and
|
||
|
B to point to the two images, select miniterm logic ab ($C0), activate the
|
||
|
blitter, wait for the blitter to finish, and then check the BZERO bit (13)
|
||
|
of the DMACON register at $DFF002. If BZERO = 0, the images touch. Because
|
||
|
the BZERO bit is valid even if the data isn't written to memory, you don't
|
||
|
need to activate destination D for this type of collision detection to work.
|
||
|
|
||
|
Bits 9-10: These bits determine which of the blitter's sources: A, B,
|
||
|
and/or C are active during a blitter operation. Writing a one to any of
|
||
|
these bits turns on the DMA for the corresponding source. When the blitter
|
||
|
is turned on, data is read from the memory specified by the active source's
|
||
|
BLTxDAT register. For this reason, it is important to PREINITIALIZE the
|
||
|
BLTxDAT register of all unused sources before performing a blit. If you
|
||
|
don't want inactive sources to affect the results of a blit, choose
|
||
|
miniterms that ignore the values of such sources.
|
||
|
|
||
|
Bits 12-15: Prior to applying the value of source A to the selected
|
||
|
miniterm operation, the blitter shifts the value the number of times
|
||
|
specified in these bits. (If the blitter is in ascending mode, the data is
|
||
|
shifted right, otherwise, it is shifted left.) Obviously, shifting does not
|
||
|
occur if all of these bits are set to zero.
|
||
|
Whenever you tell the blitter to shift the data in source A, you must
|
||
|
store a modulo value that's one less than normal in the BLTAMOD and BLTDMOD
|
||
|
registers.
|
||
|
|
||
|
Line Mode - Here's how the register functions in line mode:
|
||
|
Bits 0-7: These bits control the miniterm setting used to combine the
|
||
|
line's bits (obtained from A) with the bits in the destination bitplane
|
||
|
(obtained from source C). Source B is used as a mask for generating
|
||
|
patterned lines. For normal lines, use a miniterm setting of #$CA. To draw
|
||
|
a line of inverted pixels, use miniterm value #$4A.
|
||
|
Bits 8-11: The blitter draws lines using source A as a point generator, B
|
||
|
as the static mask, and C for reading the current status of the destination
|
||
|
bitplane, and D for outputting the pixels. Because we don't want the mask
|
||
|
in source B to change, source B's DMA should be inactive. All of the
|
||
|
blitter's other channels must be active however. As a result, you should
|
||
|
always set these bits equal to #$B when using the blitter to draw lines.
|
||
|
Bits 12-15: These bits must equal the lower four bits of horizontal
|
||
|
coordinate x1. Although these are referred to as the START bits in line
|
||
|
mode, their contents still specify a shift value, as they do in copy mode.
|
||
|
Here's how it works: In line mode, you must initialize source A's data
|
||
|
register (BLTADAT) with a $8000. This puts a 1 bit in the leftmost position
|
||
|
in the word. The value stored in these START bits specifies how far that
|
||
|
data is to be shifted to the right. By shifting that bit right by the value
|
||
|
found in x1's lower 4 bits, you move the bit into the pixel position of the
|
||
|
line's starting point.
|
||
|
|
||
|
Now the cheat: Here's a quick and easy formula for calculating the value
|
||
|
that you must store in BLTCON0 when drawing lines:
|
||
|
3018 + ((x1 and #$0F) * 4096)
|
||
|
|
||
|
This specifies the miniterm value for a normal line and provides the
|
||
|
blitter with the bit position of x1 within the memory location found in
|
||
|
registers BLTCPT and BLTDPT. ($DFF048 and $DFF054) To XOR a line onto the
|
||
|
screen (invert any of the bits located within the line), subtract 128 from
|
||
|
the result of the above calculation.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF042 BLTCON1 Blitter Control Register 1
|
||
|
Status: *W Agnus
|
||
|
For Blitter Moves and Fills:
|
||
|
0 LINE 1 = activate line draw mode, 0 = normal copy
|
||
|
1 DESC 1 = descending operation, 1 = ascending op.
|
||
|
2 FCI Starting bit for fill mode
|
||
|
3 IFE Enables inclusive fill mode
|
||
|
4 EFE Enables exclusive fill mode
|
||
|
5-11 UNUSED Always set to zero.
|
||
|
12-15 BSH0-3 Preshift value for source B
|
||
|
|
||
|
For Line Mode:
|
||
|
0 LINE Set to one
|
||
|
1 ONEDOT 1 = Draw lines with only a single pixel per
|
||
|
raster
|
||
|
2 AUL Set if ((dx>=dy)and(x1>=x2) or
|
||
|
((dx<dy) and(y1>=y2))
|
||
|
3 SUD Set if ((dx>=dy)and(y1>=y2) or
|
||
|
((dx<dy) and(x1>=x2))
|
||
|
4 SUL Set if dx>=dy
|
||
|
5 UNUSED Always set to zero
|
||
|
6 SIGN Set if (4*dmin)<(2*dmax)
|
||
|
7-11 UNUSED Always set to zero
|
||
|
12-15 TEXTURE0-3 Set to (x1 and #$0F)
|
||
|
|
||
|
Here's how BLTCON1's bits operate in normal copy mode:
|
||
|
Bit 0: This bit activates line mode. It must be set to zero for copy
|
||
|
operations.
|
||
|
Bit 1: Storing a one here puts the blitter in descending mode. Do that
|
||
|
whenever your source and destination overlap and the destination data has a
|
||
|
higher address than the source. You should also use descending mode if you
|
||
|
plan on shifting data left. You MUST use descending mode for a blitter fill
|
||
|
operation. When descending mode is active, the BLTAPT, BLTBPT, and BLTCPT
|
||
|
registers ($DFF050, $DFF04C, and $DFF048) must point to the last word in the
|
||
|
memory area to be written to. Normally, in ascending mode, these registers
|
||
|
point to the start of the memory area.
|
||
|
Bit 2: The value of this bit determines the initial fill value used by
|
||
|
the blitter in fill mode. Fill mode is activated by setting either of the
|
||
|
following two bits.
|
||
|
Bit 3: Activates inclusive fill mode (See above)
|
||
|
Bit 4: Activates exclusive fill mode (See above) For normal copy
|
||
|
operations, both this bit and bit 3 should be set to zero. Fills are
|
||
|
performed on data only after it has been run through the selected miniterm.
|
||
|
Bits 12-15: Prior to applying the value of source B to the selected
|
||
|
miniterm operation, the blitter shifts the value the number of times
|
||
|
specified in these bits. (If the blitter's in ascending mode, data's shifted
|
||
|
right. If the blitter is in descending mode, the data is shifted left.)
|
||
|
Shifting does not occur if you write a zero to these bits.
|
||
|
Whenever you tell the blitter to shift the data in source B, you must
|
||
|
store a modulo value that is one less than normal in the BLTBMOD and BLTDMOD
|
||
|
registers.
|
||
|
|
||
|
Line Mode: To activate line mode, set bit zero of this register equal to
|
||
|
one. Setting the ONEDOT bit (1) tells the blitter to draw lines that have
|
||
|
only one pixel on each horizontal row. For clear, clean lines, you should
|
||
|
set this bit equal to zero. But if you are drawing objects that you plan to
|
||
|
fill later using the blitter fill operation, this bit should be set to one.
|
||
|
This way, the area to be filled in will be enclosed by single pixel walls,
|
||
|
just as the blitter expects them to be. Bit 5, and bits 7-11 should be set
|
||
|
to zero. The value of the remaining bits depends on the line's coordinates.
|
||
|
You might be interested to know that this register's TEXTURE bits are
|
||
|
actually used as a shift value, as they are in blitter copy mode. You see,
|
||
|
blitter source B is used as a mask for creating textured lines. Because a
|
||
|
line may start at any pixel position, it is necessary to shift the mask
|
||
|
found in BLTBDAT to align its high bit with the line's starting point. As
|
||
|
with bits 12-15 in the BLTCON0 register, the shift value for source B is
|
||
|
calculated from the lower four bits of x1.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF044 BLTAFWM Source A First Word Mask
|
||
|
Status: *W Agnus
|
||
|
This register allows you to mask out the bits found on the left edge of
|
||
|
the bitplane area specified for blitter source A. The first word of each
|
||
|
horizontal line is ANDed with the value stored in this register before it is
|
||
|
shifted, applied to the miniterm, and copied to memory. For example, to
|
||
|
ensure that the two leftmost pixels of an area are always set to zero, store
|
||
|
a $3FFF in this register. In descending mode, this and the following
|
||
|
register swap functions.
|
||
|
Line Mode: In line mode, you should always store a $FFFF here.
|
||
|
Otherwise, your line may appear broken.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF046 BLTALWM Source A Last Word Mask
|
||
|
Status: *W Agnus
|
||
|
This register allows you to mask out the bits found on the right edge of
|
||
|
the bitplane area specified for blitter source A. The last word of each
|
||
|
horizontal line is ANDed with the value stored in this register before it is
|
||
|
shifted, applied to the miniterm, and copied to memory. For example, to
|
||
|
ensure that the two rightmost pixels of an are are always set to zero, store
|
||
|
a $FFFC in this register. In descending mode, this and the previous
|
||
|
register swap functions.
|
||
|
Line mode: In line mode, you should always store a $FFFF here.
|
||
|
Otherwise, your line may appear broken.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF048 BLTCPTH Blitter Source C Pointer
|
||
|
$DFF04A BLTCPTL
|
||
|
Status: *W Agnus
|
||
|
This is where you store the address of source C's bitmap data prior to
|
||
|
activating the blitter. If you're blitting in ascending order, this address
|
||
|
should specify the starting address of your data. If you're blitting in
|
||
|
descending order, this address should specify the ending address of your
|
||
|
data - the address of the last word of data.
|
||
|
The low bit of this 32 bit register is always interpreted as zero, so
|
||
|
blitter bitmap data must begin on an even word boundary address. (Using
|
||
|
BLTxFWM and BLTxLWM mask registers, however, you can specify bitmapped areas
|
||
|
with pixel accuracy.) And, unless your Amiga has a 1MB Agnus, your data
|
||
|
cannot be located above $7FFF. (1MB Agnus, use $FFFFF)
|
||
|
Line mode: This register, as well as the BLTDPT register ($DFF054), must
|
||
|
contain the starting address of the line to be drawn. (i.e. the address of
|
||
|
the word that contains the first point of the line.) Using standard (x1,y1)
|
||
|
coordinates where (0,0) is the upper left corner of the bitplane, you can
|
||
|
calculate this address using the following formula:
|
||
|
Address = Bitplane + (y1 * BytesPerLine) + (2 * (x1/16))
|
||
|
where Bitplane is the starting address of the destination bitplane and Bytes
|
||
|
Per Line is the width of the bitplane in bytes (number of pixels divided by
|
||
|
eight). So, to draw a line in a 320 x 200 pixel bitplane found in memory at
|
||
|
16384 starting at coordinate (10,20), you would store a 17185 into this
|
||
|
register because 16384+(20*(320/8))+(2*(10/16)) equals 17185.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF04C BLTBPTH Blitter Source B Pointer
|
||
|
$DFF04E BLTBPTL
|
||
|
Status: *W Agnus
|
||
|
This is where you store the source B's bitmap data prior to activating
|
||
|
the blitter. See register BLTCPT ($DFF048) for details.
|
||
|
Line Mode: This register is not used in blitter line mode.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF050 BLTAPTH Blitter Source A Pointer
|
||
|
$DFF052 BLTAPTL
|
||
|
Status: *W Agnus
|
||
|
This is where you store the address of source A's bitmap data prior to
|
||
|
activating the blitter. See register BLTCPT ($DFF048) for details.
|
||
|
Line Mode: Only the low word of this register, BLTAPTL, us used in line
|
||
|
mode. Its value determines the slope of the line. Use the following
|
||
|
formula to calculate the value of this register:
|
||
|
BLTAPTL = (4 * dmin) - (2 * dmax)
|
||
|
where dmin equals min(abs(x1-x2),abs(y1-y2)) and dmax equals
|
||
|
max(abs(x1-x2),abs(y1-y2)). If this formula produces a negative number, you
|
||
|
must write a 1 to the SIGN bit (6) of the BLTCON1 register at $DFF042.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF054 BLTDPTH Blitter Destination Pointer
|
||
|
$DFF056 BLTDPTL
|
||
|
Status: *W Agnus
|
||
|
This is where you store the address of the chip RAM you're blitting into
|
||
|
(usually, this is a location within a bitmap). If you're blitting in
|
||
|
ascending order, this address should reflect the starting address of your
|
||
|
data. If you're blitting in descending order, it should reflect the ending
|
||
|
address of the destination data. This register has the same limitations as
|
||
|
the BLTAPT-BLTCPT registers. See location $DFF048 for details.
|
||
|
Line Draw Mode: This register, as well as the BLTCPT register at $DFF048
|
||
|
must contain the starting address of the line to be drawn - that is, the
|
||
|
address of the word that contains the first point in the line. See $DFF048
|
||
|
for more information.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF058 BLTSIZE Blitter Start and Size
|
||
|
Status: *W Agnus
|
||
|
For Blitter Moves and Fills:
|
||
|
0-5 W0-W5 Width of destination area in words
|
||
|
6-15 H0-H9 Height of destination area in pixels
|
||
|
|
||
|
For Line Mode:
|
||
|
0 Set to 0
|
||
|
1 Set to 1
|
||
|
2-5 Set to 0
|
||
|
6-15 Set to (dmax+1)
|
||
|
|
||
|
The value stored in this register tells the blitter how large your
|
||
|
destination area is. The lower six bits specify the width of this area in
|
||
|
words - pixels divided by 16. If these bits are set to zero, the blitter
|
||
|
assumes a width of 64 words, or 1024 pixels. The height of the area in
|
||
|
pixels goes into the upper nine bits. A 0 specifies a height of 1024
|
||
|
pixels. You can use the following formula to calculate the value of this
|
||
|
register:
|
||
|
BLTSIZE = (Height * 64) + (Pixelwidth / 16)
|
||
|
The maximum width or height is 1024 pixels. The minimum width is 16
|
||
|
pixels and the minimum height is one pixel.
|
||
|
Writing to this register activates the blitter. As a result, it should
|
||
|
be the last blitter register that you write to.
|
||
|
If you are shifting source A or source B data, you must specify a
|
||
|
horizontal width that is one greater than normal.
|
||
|
|
||
|
Line Mode: In line mode, the lower six bits must hold the value 2 while
|
||
|
the upper 9 bits must hold the value of dmax + 1. Use the following formula
|
||
|
to determine the value that you should store in this register:
|
||
|
BLTSIZE = (dmax * 64) + 66
|
||
|
where dmax equals max(abs(x1-x2),abs(y1-y2)).
|
||
|
Because writing to BLTSIZE turns on the blitter, it should be the last
|
||
|
register that you set.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF05A - $DFF05E Currently Unused
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF060 BLTCMOD Blitter Source C Modulo
|
||
|
Status: *W Agnus
|
||
|
Whenever the blitter finishes writing data to the last word in a
|
||
|
horizontal line, the contents of this register are added to the BLTCPT
|
||
|
register so that it points to the start of the next line. This allows the
|
||
|
blitter to copy areas within a bitmap that are smaller than the width of the
|
||
|
bitmap itself. If you're copying an area that is the same width of the
|
||
|
bitplane it is contained in or if you're copying consecutive bytes in
|
||
|
memory, simply write a zero to this register. Otherwise, this register
|
||
|
should contain the difference between the byte width of the bitplane
|
||
|
containing the area to be copied and the byte width of the area. Here's a
|
||
|
formula for determining the value that should be stored in this register:
|
||
|
BLTCMOD = (BitMapWidth / 8) - (2 * (AreaWidth / 16))
|
||
|
where BitMapWidth and AreaWidth are the pixel widths of the source bitmap
|
||
|
and the area to be copied respectively. Note that this register specifies
|
||
|
width in bytes whereas the BLTSIZE register specifies width in words. Also,
|
||
|
although this register reflects the bitmap's width in bytes, its low bit is
|
||
|
ignored, so the value here must specify an even number of bytes.
|
||
|
With a separate BLTxMOD register for each source, it's possible to
|
||
|
combine the data from three bitmaps of different widths.
|
||
|
|
||
|
Line Mode: For drawing lines, store the byte width (pixel width divided
|
||
|
by 8) of your bitmap in this register.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF062 BLTBMOD Blitter Source B Modulo
|
||
|
Status: *W Agnus
|
||
|
Copy Mode: See BLTCMOD above.
|
||
|
|
||
|
Line Mode: This register should contain the value 4 * dmin, where dmin
|
||
|
equals min(abs(x1-x2),abs(y1-y2)).
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF064 BLTAMOD Blitter Source A Modulo
|
||
|
Status: *W Agnus
|
||
|
Copy mode: See BLTCMOD above.
|
||
|
|
||
|
Line Mode: This register should contain the value 4 * (dmin - dmax) with
|
||
|
dmin and dmax defined as above.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF066 BLTDMOD Blitter Destination Modulo
|
||
|
Status: *W Agnus
|
||
|
Copy mode: See BLTCMOD above.
|
||
|
|
||
|
Line Mode: For drawing lines, store the byte width (pixel width divided
|
||
|
by 8) of your bitmap in this register. This is the same value you must
|
||
|
store in the BLTCMOD register.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF068 - $DFF06E Currently Unused
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF070 BLTCDAT Blitter C Source Data
|
||
|
Status: *W Agnus
|
||
|
The blitter uses this register as the data register for blitter source C
|
||
|
|
||
|
Line Mode: This register is not used in line mode.
|
||
|
|
||
|
Blitter Data Register Notes: The blitter uses these registers as a
|
||
|
temporary holding place for data that is read from memory. If a source's
|
||
|
DMA is enabled for a blitter operation, words are read from memory and then
|
||
|
stored in the corresponding BLTxDAT register. Here the data is manipulated
|
||
|
according to the mask registers, the shift bits, the miniterm operation, and
|
||
|
then it is written to destination RAM.
|
||
|
If a source's DMA is disabled, the data is not read from memory, but the
|
||
|
value found in the source's data register is still used to form the
|
||
|
blitter's output. For this reason, it's a good idea to initialize the data
|
||
|
register of an unused source prior to starting the blitter.
|
||
|
You can use the data registers to fill an area of memory with any word
|
||
|
long value. Simply set up the blitter so that none of the data registers
|
||
|
have DMA enabled, select a miniterm of A, write the desired value into the
|
||
|
BLTADAT register, set up the remaining registers as usual, and activate the
|
||
|
blitter.
|
||
|
If you plan to shift source A or B during a blitter operation, you must
|
||
|
be sure to initialize the shift bits prior to writing to the source's data
|
||
|
register. Otherwise, the number written to this register will be shifteed
|
||
|
according to the old shift value.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF072 BLTBDAT Blitter Source B Data
|
||
|
Status: *W Agnus
|
||
|
This is the data register for blitter source B.
|
||
|
|
||
|
Line Mode: Store the bit pattern with which you wish you5r line to be
|
||
|
drawn in this register. For normal solid lines, store a $FFFF here. Other
|
||
|
values produce dotter or dashed lines.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF074 BLTADAT Blitter Source A Data
|
||
|
Status: *W Agnus
|
||
|
This is the data register for blitter source A.
|
||
|
|
||
|
Line Mode: This register should be initialized with the value of $8000
|
||
|
for line mode.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF076 - $DFF07C Currently Unused
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF07E DSKSYNC Disk Sync Pattern
|
||
|
Status: *W Paula
|
||
|
Before reading data from a disk, it's often necessary to sync the
|
||
|
drive's heads on a particular bit pattern. This register allows you to do
|
||
|
just that.
|
||
|
When the WORDSYNC bit (10) in the ADKCON register ($DFF09E) is set, the
|
||
|
disk controller's DMA is enabled and the controller prepares to search the
|
||
|
disk for the sync pattern found in this register. The disk controller
|
||
|
doesn't start searching until this register is written to. When the sync
|
||
|
pattern is found, it is set to one for two or four usec (Depending on the
|
||
|
format selected: MFM or GCR) as soon as the sync pattern is located.
|
||
|
This event can also be used to trigger a level 6 interrupt.
|
||
|
In MFM format (the disk format used by AmigaDos), the sync pattern should
|
||
|
be a value that is impossible to create using MFM data coding. This way, it
|
||
|
can't be confused with actual data. AmigaDos uses the number $4489 as its
|
||
|
sync pattern. Here's how you might initiate the search for this value using
|
||
|
machine language:
|
||
|
|
||
|
ADKCON equ $DFF09E
|
||
|
DSKSYNC equ $DFF07E
|
||
|
move.w #$8400,ADKCON
|
||
|
move.w #$4489,DSKSYNC
|
||
|
|
||
|
For more information on low-level disk access, see the CIA-B's PRB
|
||
|
register at $BFD100.
|
||
|
----------------------------------------------------------------------------
|
||
|
Copper Registers:
|
||
|
|
||
|
The copper is designed to free the 680x0 from display tasks. It has
|
||
|
three instructions: WAIT, MOVE, and SKIP. It doesn't seem like you can do
|
||
|
much with only three instructions, but by using a variety of tricks and
|
||
|
subterfuges, a copper list can perform loops, take over the blitter, and
|
||
|
even generate an interrupt for the 68000.
|
||
|
|
||
|
WAIT. Wait mimics a loop structure which waits for a certain condition
|
||
|
to occur. Specifically, Wait waits for the x,y coordinates of the raster to
|
||
|
meet or exceed the coordinates you specify. Thus, wait allows you to
|
||
|
synchronize actions with the video. (i.e.: Color changes, raster
|
||
|
interrupts, etc.) Since a typical copper list executes every time the
|
||
|
screen is drawn, the color change will be rock steady.
|
||
|
The x,y coordinates are not simple pixel coordinates, but beam position
|
||
|
coordinates. See the descriptions of VPOSR ($DFF004), VHPOSR ($DF006),
|
||
|
VPOSW ($DFF02a), and VHPOSW ($DFF02C).
|
||
|
Here is what a Wait instruction looks like:
|
||
|
0 Always set to 0
|
||
|
1-7 horizontal compare enable bits
|
||
|
8-14 vertical compare enable bits
|
||
|
15 the blitter finished disable bit (usually 1)
|
||
|
16 Always set to 1
|
||
|
17-23 horizontal beam position
|
||
|
24-31 vertical beam position
|
||
|
|
||
|
Bits 1-7 describe which bits of the horizontal beam counter will be
|
||
|
compared with an x position for which you choose to wait. Normally, you
|
||
|
should set all of these bits to one.
|
||
|
Bits 8-14 describe the same for the y position.
|
||
|
Bit 15 should normally be set to one. If you set it to zero, the copper
|
||
|
Wait instruction will wait until the beam position meets or exceeds the
|
||
|
given position and the blitter has finished its operation.
|
||
|
Bits 17-23 indicate the horizontal beam position for which the wait is
|
||
|
waiting. Note that bits 1-7 are used to decide which bits are actually used
|
||
|
for the comparison.
|
||
|
Bits 24-31 indicate the same for the vertical - uses 8-14.
|
||
|
|
||
|
Because the horizontal beam position is maintained to a resolution of two
|
||
|
low resolution pixels, and because the LSB of that position is not used in
|
||
|
wait comparison, WAIT has a resolution of four lo-res or 8 hi-res pixels.
|
||
|
One potential problem with wait is that you cannot directly wait for a
|
||
|
line greater than 255. To do this, wait for 255. Then, wait for line
|
||
|
number x-255.
|
||
|
A version of the wait command is used to end copper lists. The command
|
||
|
code is $FFFFFFFE. (i.e. wait for y=255, x=254) The loop seems to be
|
||
|
infinite, and in fact is, however note that the copper list is reset DURING
|
||
|
EVERY VERTICAL BLANKING PERIOD!
|
||
|
|
||
|
MOVE. The Move instruction transfers data to a hardware register. The
|
||
|
instruction can store data into any register with an address of $80 or more.
|
||
|
Note that the register base of $DFF000 is implicit - it is not included in
|
||
|
the instruction. If the copper danger bit, CDANG is set ($DFF02E bit 1),
|
||
|
the instruction can store data into any register with an address of $40 or
|
||
|
more. Unless you need the copper to write to the blitter registers, you
|
||
|
should keep CDANG set to zero.
|
||
|
With the Move instruction, you can set up bitplane pointers, sprite
|
||
|
pointers, color registers, and so on. A complete, useful copper list will
|
||
|
have MANY move instructions because there are several DMA registers that
|
||
|
have to be reset every frame. For example, the bitplane registers must be
|
||
|
reset to keep them from continuing where they left off. Otherwise, you'd
|
||
|
see all of chip RAM rushing through the screen at great speed.
|
||
|
Keep in mind that Move is not instantaneous. Two Move instructions will
|
||
|
be separated by four low resolution pixels.
|
||
|
Here is the format for the Move command:
|
||
|
0-15 Data
|
||
|
16 Set to Zero
|
||
|
17-24 Register address
|
||
|
25-31 Unused - set to zero
|
||
|
|
||
|
Bits 0-15 are a word of data that you wish to transfer to the hardware
|
||
|
register. If you want to transfer a long word, you must use 2 move
|
||
|
instructions.
|
||
|
Bits 17-24 specify the offset from $DFF000 which you would like to
|
||
|
modify. The CDANG bit of the COPCON register determines which values are
|
||
|
considered legal by the copper.
|
||
|
|
||
|
SKIP. Most copper lists are composed only of WAIT and MOVE instructions.
|
||
|
The Skip command allows for conditional branching. It is a command that has
|
||
|
quite a bit of potential that has rarely been tapped.
|
||
|
Skip is a close relative of WAIT. As is the case with Wait, Skip decides
|
||
|
what to do based on the position of the video beam. Instead of waiting for
|
||
|
a beam position though, it alters copper list program flow based on the beam
|
||
|
position.
|
||
|
The Skip instruction looks like this:
|
||
|
0 Set to 1
|
||
|
1-7 horizontal compare enable bits
|
||
|
8-14 vertical compare enable bits
|
||
|
15 blitter-finished-disable bit
|
||
|
16 set to 1
|
||
|
17-23 horizontal beam position
|
||
|
24-31 vertical position
|
||
|
|
||
|
The Skip command skips the instruction that immediately follows it if the
|
||
|
beam counter meets or exceeds the value you specify. The instruction that
|
||
|
follows skip is typically a strobe to the COPJMP1 or COPJMP2 registers.
|
||
|
Writing to these registers causes a jump to the address in the COP1LC or
|
||
|
COP2LC registers, respectively.
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF080 COP1LCH Copper Program Counter 1
|
||
|
$DFF082 COP1LCL
|
||
|
$DFF084 COP2LCH Copper Program Counter 2
|
||
|
$DFF086 COP2LCL
|
||
|
Status: *W Agnus
|
||
|
The above registers are the copper location registers. COP1LC is the
|
||
|
default copper PC. Either of the above are loaded when the COPJMP registers
|
||
|
are strobed.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF088 COPJMP1 Copper Jump Strobes
|
||
|
$DFF08A COPJMP2
|
||
|
Status: Strobe Agnus
|
||
|
These locations, when written to, cause the respective copper PC (1 or 2)
|
||
|
to be loaded into the copper program counter. The operation system strobes
|
||
|
COPJMP1 during a vertical blank interrupt.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF08C COPINS Copper Instruction Identity
|
||
|
Status: *W Agnus
|
||
|
This location is of questionable use to the programmer. It is written to
|
||
|
by the hardware and is used to identify the current copper instruction.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF08E - $DFF094 Position of the screen display
|
||
|
These four registers define the position of the Amiga's screen. DIWSTRT
|
||
|
(Display Window Start) defines the screen's upper left corner while DIWSTOP
|
||
|
(Display Window Stop) defines the window's lower right corner. Anything
|
||
|
outside of this area is considered border area.
|
||
|
Before explaining how the next two registers, DDFSTRT and DDFSTOP, affect
|
||
|
the display, a brief explanation of bitplane DMA is in order. Bitplane data
|
||
|
describes what to draw, but it's the responsibility of bitplane DMA to grab
|
||
|
that data from chip RAM and give it to the video hardware via registers
|
||
|
BPL1DAT - BPL6DAT ($DFF110 - $DFF11A). Shortly after the video hardware
|
||
|
receives new data, it draws that data at the cirrent video beam position.
|
||
|
So where graphics appear onscreen is determined by when bitplane DMA gives
|
||
|
the video hardware its information. (Anytime bitplane DMA is inactive and
|
||
|
the BPLxDAT registers are empty, the Amiga displays the color specified by
|
||
|
the COLOR00 register.)
|
||
|
Vertically, bitplane DMA starts the moment it reaches the Y coordinate
|
||
|
found in DIWSTOP. Horizontal start and stop locations are a bit more
|
||
|
complicated, however, as the computer needs some more time before it can
|
||
|
display fetched data. On a lo-res display, it takes 8.5 color clocks. (A
|
||
|
color clock is equal to one memory access cycle, ehich is approximately 280
|
||
|
nsec in duration. The Amiga can output two lo-res pixels per color clock.)
|
||
|
Each horizontal line on the computer screen can be thought of as a time
|
||
|
line. Where along this line bitplane DMA is allowed to start is determined
|
||
|
by the DDFSTRT (Display Data Fetch Start) register. The DDFSTOP (Display
|
||
|
Data Fetch Stop) register tells the Amiga when the bitplane DMA should stop.
|
||
|
As you can imagine, unless these registers correspond with the horizontal
|
||
|
coordinates found in the DIW registers, your display will appear cropped
|
||
|
and/or garbled.
|
||
|
Finding the proper value for the DDFSTRT based on the horizontal
|
||
|
coordinate found in DIWSTRT is easy. Because the DIWSTRT register specifies
|
||
|
coordinates in lo-res pixels, and the DDFSTRT register is accurate to only
|
||
|
two lo-res pixels, you must first divide DIWSTRT's horizontal coordinate by
|
||
|
two; then, simply subtract the number of color clocks that you need - 4.5
|
||
|
for hi-res, and 8,5 for lo-res. Here oare the formulae you should use to
|
||
|
calculate the correct value for the DDFSTRT register:
|
||
|
DDFSTRT = HSTART / 2 - 4.5 for hi-res screens, and
|
||
|
DDFSTRT = HSTART / 2 - 8.5 for lo-res.
|
||
|
HSTART refers to bits 0-7 of the DIWSTRT register (its horizontal
|
||
|
coordinate).
|
||
|
Since the default value for HSTART is $81, DDFSTRT defaults to $3C for
|
||
|
hi-res, and $38 for lo-res.
|
||
|
Calculating the value for DDFSTOP is also easy. Its value depends on the
|
||
|
screen's width:
|
||
|
DDFSTOP = DDFSTRT + (4 * ((Width / 16) - 1)) for hi-res screens, and
|
||
|
DDFSTOP = DDFSTRT + (* * ((Width / 16) - 1)) for lo-res.
|
||
|
Width is the width of the screen in pixels. So, on a standard 640 pixel
|
||
|
hi-res screen, where DDFSTRT equals $3C, DDFSTOP should be set to $D4.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF08E DIWSTRT Display Window Start
|
||
|
Status: *W Agnus
|
||
|
0-7 HSTART Horizontal coord. of upper left corner
|
||
|
8-15 VSTART Vertical coordinate of lower right corner
|
||
|
Notes: Bits 0-7 default to $81, and 8-15 default to $2C.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF090 DIWSTOP Display Window Stop
|
||
|
Status: *W Agnus
|
||
|
0-7 HSTOP Horizontal coord. of lower right corner
|
||
|
8-15 VSTOP Vertical coord. of lower right corner.
|
||
|
Notes: For bits 0-7, the minimum HSTOP position in $100, which is 1/3 across
|
||
|
the screen. The value stored here represents an offset from this position.
|
||
|
So, the actual horizontal coordinate of the lower right corner of the screen
|
||
|
is $100 PLUS HSTOP! You can think of HSTOP as being a nine bit register
|
||
|
with bit 8 always set. The Default is $C1, which specifies a value of $1C1.
|
||
|
For bits 8-15, these bits hold the vertical coordinate of the lower right
|
||
|
corner of the screen. The minimum VSTOP position in $80. If the value here
|
||
|
is less than $80, VSTOP equals $100 PLUS your VSTOP value. Simply put,
|
||
|
whatever the state of bit 8 is, bit nine will be opposite! The default for
|
||
|
NTSC is $F4, and the PAL default is $2C which actually is $12C. VSTOP
|
||
|
always specifies the vertical position in noninterlace lines, no matter what
|
||
|
mode the computer is in.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF092 DDFSTRT Display Data Fetch Start
|
||
|
Status: *W Agnus
|
||
|
This register specifies the horizontal position that the video beam must
|
||
|
reach in order for bitplane DMA to start. It's value depends on your screen
|
||
|
resolution, and what you store in the HSTART bits (0-7) in the DIWSTRT
|
||
|
register at $DFF09E.
|
||
|
In hi-res, only bits 2-7 are active. (specifies an even multiple of 4)
|
||
|
In lo-res, only bits 3-7 are active (an even multiple of 8). Because of
|
||
|
certain hardware limitations, do not use DDFSTRT values less than $18. Ans,
|
||
|
because sprite DMA relies on color clocks that occur during raster positions
|
||
|
$16-$34, using DDFSTRT values below $38 will disable certain sprites. The
|
||
|
lower the number, the more sprites are disabled. Higher numbered sprites
|
||
|
will be disabled first.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF094 DDFSTOP Display Data Fetch Stop
|
||
|
Status: *W Agnus
|
||
|
This register specifies the horizontal position the video beam must reach
|
||
|
in order for bitplane DMA to stop. The bits used are the same as for
|
||
|
DDFSTRT. Because of certain hardware limitations, do not use values greater
|
||
|
than $D8.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF096 DMACON DMA Control
|
||
|
Status: *W Angus/Denise/Paula
|
||
|
This is the write register for DMACONR. The only difference is that
|
||
|
SET/CLR is active. Note that activating audio channel DMA starts the sound
|
||
|
on the specified channel. (See DMACONR at $DFF002)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF098 CLXCON Collision Control
|
||
|
Status: *W Denise
|
||
|
0 MVP1 Match value for bitplane 1 collisions
|
||
|
1 MVP2 2
|
||
|
2 MVP3 3
|
||
|
3 MVP4 4
|
||
|
4 MVP5 5
|
||
|
5 MVP6 6
|
||
|
6 ENBP1 Enable collision detection for bitplane 1
|
||
|
7 ENBP2 2
|
||
|
8 ENBP3 3
|
||
|
9 ENBP4 4
|
||
|
10 ENBP5 5
|
||
|
11 ENBP6 6
|
||
|
12 ENSP1 Enable collision detection for sprite 1
|
||
|
13 ENSP3 3
|
||
|
14 ENSP5 5
|
||
|
15 ENSP7 7
|
||
|
|
||
|
The Amiga can detect three types of graphic collisions: sprite - sprite,
|
||
|
sprite - bitplane, and bitplane - bitplane. The match value in bits 0-5
|
||
|
determine exactly what constitutes a collision: either a 0 or 1.
|
||
|
Through creative use of 0-5 and 6-11, you can specify that collision
|
||
|
takes place with only a certain color or within a range of colors.
|
||
|
Bits 6-11. These bits determine which bit planes are used in collision
|
||
|
detection. Oddly, the Amiga always seems to think that a bitplane collision
|
||
|
is taking place when all of these bits are set to zero.
|
||
|
Bits 12-15. Setting these bits allows you to check for collisions
|
||
|
between the specified sprite, and the next lower one.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF09A INTENA Interrupt Enable
|
||
|
Status: *W Paula
|
||
|
This is the write register for INTENAR at $DFF01C. Note that SET/CLR is
|
||
|
active, and that you must CLEAR the appropriate bit after servicing the
|
||
|
interrupt!
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF09E - $DFF0DE Audio Registers
|
||
|
Once you have a waveform sample loaded into chip RAM, turning that data
|
||
|
into sound is relatively simple. Just tell the computer where is, the
|
||
|
length in words, how fast to play the sound, set the volume, and then signal
|
||
|
that DMA for the desired sound. The Amiga will continue to play and repeat
|
||
|
your sound until you tell it to stop.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF09E ADKCON Audio/Disk Control (see ADKCONR at $DFF010)
|
||
|
Status: *W Paula
|
||
|
Notes on bit 12: MFM vs. GCR formatting:
|
||
|
Briefing put, MFM format inserts clock bits between each data bit written
|
||
|
to disk. If two consecutive data bits are zero, a 1 clock bit is inserted
|
||
|
between them. If either of two consecutive bits is a 1, a 0 clock pulse in
|
||
|
put between them. Using this coding method, the amount of data written to a
|
||
|
disk is doubled, but the accuracy of reading the data is increased. You
|
||
|
see, the disk controller has an easier time synchronizing on data that
|
||
|
changes states rather than data that repeats such as a long string of 1's or
|
||
|
0's.
|
||
|
GCR format handles synchronization problems by encoding every four bits
|
||
|
od data into five bits. The result is a binary number with no more than two
|
||
|
adjacent 0 bits and no more than eight adjacent 1 bits. (This format is
|
||
|
used on the Commodore 1541 drives on the C64.) The following table shows
|
||
|
the 5 bit GCR equivalents of the binary numbers 0000-1111.
|
||
|
Binary GCR
|
||
|
------ ---
|
||
|
0000 01010 Note that with GCR, no more than 8 on bits or
|
||
|
0001 01011 2 off bits are possible.
|
||
|
0010 10010
|
||
|
0011 10011
|
||
|
0100 01110
|
||
|
0101 01111
|
||
|
0110 10110
|
||
|
0111 10111
|
||
|
1000 01001
|
||
|
1001 11001
|
||
|
1010 11010
|
||
|
1011 11011
|
||
|
1100 01101
|
||
|
1101 11101
|
||
|
1110 11110
|
||
|
1111 10101
|
||
|
|
||
|
Notes on bit 13: These set the disk disk controller's precompensation
|
||
|
time, which directly affects the density of the data written to disk. The
|
||
|
faster the precompensation time, the higher the density. With AmigaDos,
|
||
|
density is highest on the inside tracks, probably due to the fact that these
|
||
|
is less physical space for these tracks.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0A0 AUD0LCH Channel 0 Waveform Address
|
||
|
$DFF0A2 AUD0LCL
|
||
|
Status: *W Agnus
|
||
|
The low byte of this register is always interpreted as zero, so your data
|
||
|
must begin on a word boundary. For a 512K Agnus, max address is $7FFFF, and
|
||
|
for a 1MB Agnus, it is $FFFFF.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0A4 AUD0LEN Channel 0 Waveform Length
|
||
|
Status: *W Paula
|
||
|
The length of your data in words is stored here. So, your data must be
|
||
|
an even number of bytes, and may not exceed 131,070 bytes. (i.e. 65536
|
||
|
times two.)
|
||
|
However, it is possible to play waveforms longer than 131,070 bytes due
|
||
|
to the fact that the Amiga buffers the contents of the AUDxLC and AUDxLEN
|
||
|
registers by using backup registers. So, you may change the AUDxLC and
|
||
|
AUDxLEN registers while the Amiga is playing a sound, and when it is
|
||
|
finished, it will start with the new data! Any of the Amiga's audio
|
||
|
channels can cause a level 4 interrupt just before your sound starts a new
|
||
|
waveform cycle. When this interrupt occurs, you know it's safe to change
|
||
|
the registers. One warning however: Interrupts caused by high-frequency
|
||
|
waveforms can occur quite rapidly. Even more rapidly than the operating
|
||
|
system can keep up! It's best to leave the audio interrupts alone, unless
|
||
|
you actually need them. Just wait a little while before changing the AUDxLC
|
||
|
and AUDxLEN registers and all will work fine.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0A6 AUD0PER Channel 0 Period
|
||
|
Status: *W Paula
|
||
|
A sound's frequency is determined by the value stored here. The lowest
|
||
|
value you should use is 124, since this is about as fast as the Amiga can
|
||
|
go. The highest value is 65535.
|
||
|
How you determine the period depends on how you get your waveform data.
|
||
|
If you use a digitizer and the frequency is in Samples-per-second, use this
|
||
|
equation: AUDxPER = 3579546 / Samples-per-second
|
||
|
If you have a group of data that you want played as an "instrument", use
|
||
|
this: AUDxPER = 3579546 / (Bytes-Length * Frequency to be played)
|
||
|
Of course, the frequency for a given note may be calculated by the old
|
||
|
standby: Frequency = Base * 2 ^ (1/12)
|
||
|
Which calculates the frequency for the next note once given a frequency.
|
||
|
Middle C comes in at 261.4 Hz.
|
||
|
If you don't want your sound to repeat, you should consider one more
|
||
|
thing: when to stop the sound. You see, the faster you play the sound, the
|
||
|
faster its going to finish. To figure out how long to let it play, use the
|
||
|
following equation:
|
||
|
uSec = .279365 * Period * Length
|
||
|
Where uSec, is of course, the time in microseconds it takes to play your
|
||
|
sound once.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0A8 AUD0VAL Channel 0 Volume
|
||
|
Status: *W Paula
|
||
|
This volume register can accept values between 0 and 64, where 0 is the
|
||
|
lowest setting (at -infinity dB), and 64 is loudest (at -0 dB).
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0AA AUD0DAT Channel 0 Data
|
||
|
Status: *W Paula
|
||
|
This is the data buffer used by channel 0. It's purpose is to output
|
||
|
sounds at a rate higher than the DMA can. To use it, you must disable
|
||
|
channel 0 DMA and shove the data in onw word at a time.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF0AC - $DFF0AE Unused
|
||
|
The Amiga reserves enough space for eight word-long addresses for each
|
||
|
channel, but uses only six. The remaining addresses are unused.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF0B0/2 AUD1LCH/L These registers function exactly the same as
|
||
|
$DFF0B4 AUD1LEN channel 0's. To Find channel 2's, add $20 to
|
||
|
$DFF0B6 AUD1PER the AUD0xxx value, and $30 for channel 3.
|
||
|
$DFF0B8 AUD1VOL
|
||
|
$DFF0BA AUD1DAT
|
||
|
$DFF0BC/E UNUSED
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF0E0 - $DFF0F6 Bitplane pointer registers
|
||
|
Status: *W Agnus
|
||
|
These registers point to the current word of data that is being displayed
|
||
|
from each bitplane. They are set up by the programmer, but increment as
|
||
|
each word of data is fetched from memory. Therefore, these registers must
|
||
|
be reset for each screen. This is usually done by the copper list, but may
|
||
|
also be written directly to by the programmer during the vertical blank
|
||
|
interrupt. The initial value stored here should be the starting address of
|
||
|
the bitplane. The value stored here must begin on a word boundary, and all
|
||
|
notes about 512K / 1MB Agnus chips apply here.
|
||
|
|
||
|
$DFF0E0 BPL1PTH/L Bitplane pointers for bitplanes 1-6... 32 bits long
|
||
|
$DFF0E4 BPL2PTH/L with bit zero ignored.
|
||
|
$DFF0E8 BPL3PTH/L
|
||
|
$DFF0EC BPL4PTH/L
|
||
|
$DFF0F0 BPL5PTH/L
|
||
|
$DFF0F4 BLT6PTH/L
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF0F8 - $DFF0FE Currently Unused.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $DFF100 - $DFF104 Bitplane Control Registers
|
||
|
These three register control the modes of the Amiga video display.
|
||
|
Within the bits of these registers are the means of creating just about any
|
||
|
Amiga screen possible. BPLCON0 ($DFF100) controls how the pixels are
|
||
|
displayed. Genlocking, interlace, dual playfield mode, HAM, Extra Half
|
||
|
Brite, and Hi-Res are all among its domain. BPLCON1 ($DFF102) controls the
|
||
|
hardware smooth scrolling of the Amiga. BPLCON2 ($DFF104) is the priority
|
||
|
register which determines how the playfield and sprites will interact. A
|
||
|
few terms will be described to facilitate the discussion of these registers:
|
||
|
|
||
|
Dual Playfield Mode: In this mode, the odd numbered bitplanes are grouped
|
||
|
into one playfield (1), and the even numbered bitplanes into the other. (2)
|
||
|
One playfield has priority over the other, which means that the backgroup's
|
||
|
playfield shows through only when the foreground's pixels color is 0.
|
||
|
Extra HalfBrite: In EHB, pixels may have any value in the range of 0-63.
|
||
|
Pixels in the range of 0-31 use the normal 32 color registers. Pixels 32-63
|
||
|
use the lower 32 color registers with the RGB values each shifter one bit
|
||
|
right. Thus, 32-63 are half as bright.
|
||
|
Genlock: This is a method of combining computer graphics with an external
|
||
|
video source. The external source shows through where pixel color 0 is.
|
||
|
Hold and Modify (HAM): In HAM mode, 16 color registers (4 bits) are used
|
||
|
normally. In 5 bitplane HAM mode, a bit set in the 5th bitplane signifies
|
||
|
that the pixel should use the color of the pixel immediately to the left,
|
||
|
but with the blue value corresponding to the value of the lower four
|
||
|
bitplanes. In 6 bitplane mode, the bits in the 5th and 6th bitplanes are
|
||
|
used to specify whether the lower sixteen color registers should be used
|
||
|
normally, or whether the pixel should be based on the pixel immediately to
|
||
|
the left, with the red, green, or blue intensity altered. HAM images are
|
||
|
the most photographic available on the Amiga. Six bitplane HAM is typical,
|
||
|
with five bitplane HAM a rarity.
|
||
|
Interlace: This is a method of doubling vertical resolution by displaying
|
||
|
alternating lines on alternating scans. See VPOSR at $DFF004.
|
||
|
Playfield: This is the name for the non-sprite graphics that appear on
|
||
|
the screen as a result of bitplane DMA. The name is a carryover from the
|
||
|
old Atari VCS. (gasp!)
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF100 BPLCON0 Bitplane Control Register 0
|
||
|
Status: *W Agnus/Denise
|
||
|
0 UNUSED
|
||
|
1 ERSY External sync. (1 = external, genlocked
|
||
|
0 = internal, normal)
|
||
|
2 LACE 1 = interlace enable
|
||
|
3 LPEN 1 = light pen enable
|
||
|
4-7 UNUSED
|
||
|
8 GAUD 1 = Genlock audio enable
|
||
|
9 COLOR 1 = Composite color enable on Amiga 1000,
|
||
|
0 = Monochrome display.
|
||
|
10 DBLPF 1 = Double (dual) playfield mode
|
||
|
11 HOMOD 1 = HAM active
|
||
|
12-14 BPU Number of bitplanes used. Zero = no bitplanes
|
||
|
You cannot use more than 4 for hi-res, and six
|
||
|
activates EHB mode.
|
||
|
15 HIRES 1 = Hi-res mode 0 = Lo-res mode.
|
||
|
|
||
|
Notes on bit 8: It has been alleged that audio data can be multiplexed on
|
||
|
the BKGD pen during vertical blanking, and bit 8 enables this feature. In
|
||
|
reality, however, this bit simply goes out on the pixel switch ZD during
|
||
|
blanking periods.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF102 BPLCON1 Bitplane Control Register 1
|
||
|
Status: *W Denise
|
||
|
0-3 PF1H Playfield 1 horizontal scroll
|
||
|
4-7 PF2H Playfield 2 horizontal scroll
|
||
|
This register allows you to fine scroll the screen horizontally.
|
||
|
Vertical scrolling is trivial. Simply increment or decrement the starting
|
||
|
address of each bitplane by the width of a screen line in bytes. Horizontal
|
||
|
scrolling is trickier. You can perform a coarse 16 pixel scroll by simply
|
||
|
incrementing or decrementing the starting address of the bitplane pointers
|
||
|
by one word, but to scroll at the pixel level, use this register.
|
||
|
In lo-res, the scrolling is in one pixel increments, and in hi-res, it is
|
||
|
two pixels. To set up a screen for horizontal scrolling, the screen must be
|
||
|
one word wider than normal. Do, you must add 2 to DDFSTRT's ($DFF030)
|
||
|
normal value. You must set the modulo registers (BPLxMOD $DFF108) to the
|
||
|
number of "extra" bytes in each line (those that would not exist if you
|
||
|
weren't doing horizontal scrolling) minus two. For example, if you're
|
||
|
displaying 40 bytes of an 80 byte wide screen, place the number 38 into the
|
||
|
appropriate BPLxMOD register.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF104 BPLCON2 Bitplane Control Register 2
|
||
|
Status: *W Denise
|
||
|
This register allows you to determine priorities between the graphic
|
||
|
elements that make up an Amiga screen, namely the eight sprites and two
|
||
|
playfields.
|
||
|
|
||
|
0-2 PF1P Playfield 1 vs. sprite priority
|
||
|
3-5 PF2P Playfield 2 vs. sprite priority
|
||
|
6 PF2PRI Playfield 1 vs. playfield 2 priority (1 = 2 in front,
|
||
|
0 = 1 in front.)
|
||
|
|
||
|
Notes: Bits 0-5 allow you to specify whether sprites should pass in front of
|
||
|
or behind a given set of bitplanes. The table below shows the allowable
|
||
|
values.
|
||
|
|
||
|
bit 2 bit 1 bit 0 (for playfield 1)
|
||
|
bit 5 bit 4 bit 3 (for playfield 2)
|
||
|
0 0 0 Playfield has top priority
|
||
|
0 0 1 Playfield appears behind sprites 0-1
|
||
|
0 1 0 Playfield appears behind sprites 0-3
|
||
|
0 1 1 Playfield appears behind sprites 0-5
|
||
|
1 0 0 Playfield appears behind all sprites
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF106 Zilch - Unused
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF108 BPL1MOD Bitplane Modulo 1
|
||
|
$DFF10A BPL2MOD Bitplane Modulo 2
|
||
|
Status: *W Agnus
|
||
|
These registers control how many bytes are added to the bitplane pointers
|
||
|
at the end of a video line. Normally, the value is zero. When the number
|
||
|
is greater than zero, you have an undisplayed segment of the screen to the
|
||
|
right of the visible area. You can bring this area into view by
|
||
|
incrementing the bitplane pointers, and modifying the smooth scroll
|
||
|
register BPLCON1 at $DFF102.
|
||
|
As an example, suppose the virtual screen you have is 80 bytes wide, by
|
||
|
the visible screen is 40. You'll need to specify 40 as the modulo.
|
||
|
There are two modulo registers, one for each playfield. Unless you are
|
||
|
using dual playfield mode, both of these registers should be set to the same
|
||
|
value. Note that the lowest bit is ignored, thus these registers must be
|
||
|
set to an even value.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $DFF10C - $DFF10E Currently Unused.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $DFF110 - $DFF11A Bitplane Data Registers
|
||
|
The Amiga hardware is currently able to display six bitplanes. If you
|
||
|
look carefully, however, there are gaps that would allow two extra bitplanes
|
||
|
to be inserted. These registers are typically written to by the bitplane
|
||
|
DMA, but they may also be written to by the programmer directly. The
|
||
|
parallel data from the six bitplanes is shifted out the left and converted
|
||
|
to a color. BPL1DAT is the trigger register. That means that you should
|
||
|
write to BPL2DAT - BPL6DAT first, then write to BPL1DAT to trigger the
|
||
|
serial conversion.
|
||
|
|
||
|
$DFF110 BPL1DAT Bitplane DMA trigger. Color Weight = 1
|
||
|
$DFF112 BPL2DAT Weight = 2
|
||
|
$DFF114 BPL3DAT Weight = 4
|
||
|
$DFF116 BPL4DAT Weight = 8
|
||
|
$DFF118 BPL5DAT Weight = 16
|
||
|
$DFF11A BPL6DAT Weight = 32 (i.e. HAM / EHB)
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $DFF11C - $DFF11E Currently Unused.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $DFF120 - $DFF17E Sprite Registers
|
||
|
The Amiga is known for the animation capabilities of the blitter, but it
|
||
|
also has powerful sprite hardware. Sprites have some advantages over the
|
||
|
blitter. Whereas the blitter must render its images to display memory,
|
||
|
sprites are rendered in a separate area of memory.
|
||
|
There are eight sprites. Each sprite is 16 pixels wide and an arbitrary
|
||
|
size high. The pixels are lo-res, even when displayed in hi-res or
|
||
|
interlaced mode. Each pixels can be one of three colors or transparent.
|
||
|
Sprites 0 and 1 share color registers 17 - 19. Sprites 2 and 3 share
|
||
|
21-23, 4 and 5 share 25-27, and 6 and 7 share 29 through 31. If your screen
|
||
|
uses 4 bitplanes or less, you won't have to worry about sprites sharing the
|
||
|
color registers with the playfield. Otherwise... you'll have to plan colors
|
||
|
carefully.
|
||
|
Note that the lower the sprite number, the higher its priority on the
|
||
|
screen. Sprite priorities relative to the playfield can be assigned. See
|
||
|
the bitplane control registers $DFF100 - $DFF106.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF120 SPR0PTH Sprite Pointer 0
|
||
|
$DFF122 SPR0PTL
|
||
|
Status: *W Agnus
|
||
|
This register holds the address of the Sprite 0 DMA data. The address
|
||
|
must be in chip RAM. This register acts as a DMA counter, so you must
|
||
|
initialize it during every vertical blank via the copper list or within a
|
||
|
vertical blank interrupt server.
|
||
|
The address which you set to this register should contain valid sprite
|
||
|
data in chip RAM. Use this format (each value is 32 bits):
|
||
|
|
||
|
Sprite Control Value
|
||
|
Image data for line 1
|
||
|
Image data for line 2
|
||
|
.....................
|
||
|
Image data for last line
|
||
|
|
||
|
Repeat this format for each occurrance of the sprite on the screen. For
|
||
|
instance, you might have the same sprite engine used in three different
|
||
|
vertical areas of the screen. In this case, you'd have the above format
|
||
|
three times. At the end of the data, store a $00000000.
|
||
|
Here is a sample adapted from the Amiga Hardware Reference Manual:
|
||
|
SPRITE:
|
||
|
DC.L $6D607200 ; VSTART, HSTART, and VSTOP
|
||
|
DC.L $099007E0 ; Sprite data... $6D
|
||
|
DC.L $13C80FF0 ; $6E
|
||
|
DC.L $23C41FF8 ; $70
|
||
|
DC.L $13C80FF0 ; $71
|
||
|
DC.L $099007E0 ; $72
|
||
|
DC.L $00000000 ; End of structure.
|
||
|
|
||
|
The Amiga is often said to have reusable sprite engines. This means that
|
||
|
the Amiga can display the same sprite in several different places. There is
|
||
|
one significant limitation to this ability: You must ensure that there is at
|
||
|
least one blank line vertically between the two instances of the same
|
||
|
sprite. For example, if you have a sprite that stops displaying on line 25,
|
||
|
you may display a second one on line 27 or greater.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF124 SPR1PTH/L Sprite Pointers 1-7
|
||
|
$DFF128 SPR2PTH/L
|
||
|
$DFF12C SPR3PTH/L
|
||
|
$DFF130 SPR4PTH/L
|
||
|
$DFF134 SPR5PTH/L
|
||
|
$DFF138 SPR6PTH/L
|
||
|
$DFF13C SPR7PTH/L
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF140 SPR0POS Sprite Position 0 & Control 0
|
||
|
$DFF142 SPR0CTL
|
||
|
Status: *W Agnus/Denise
|
||
|
These two 16-bit registers can be thought of as a single 32 bit register
|
||
|
which holds information about how sprite 0 is to be displayed. Info
|
||
|
included is vertical and horizontal starting locations, vertical stopping
|
||
|
location, and whether the sprite should be attached to its companion (0 and
|
||
|
1, 2 and 3, 4 and 5, 6 and 7).
|
||
|
The sprite control value consists of the following bits, the number of
|
||
|
which should be stored in the:
|
||
|
0 HSTART lowest bit
|
||
|
1 VSTOP highest bit
|
||
|
2 VSTART highest bit
|
||
|
3-6 Always 0
|
||
|
7 ATTACHMENT 1 = attached, 0 = not
|
||
|
8-15 VSTOP lowest 8 bits
|
||
|
16-23 HSTART highest 8 bits
|
||
|
24-31 VSTART lowest 8 bits
|
||
|
|
||
|
The HSTART value is your sprite's intended horizontal position.
|
||
|
Typically, the horizontal position 0 is 64 pixels to the left of the screen.
|
||
|
This number can change depending on your preferences settings. Suppose
|
||
|
that you want to position a sprite at the horizontal position which
|
||
|
corresponds to pixel 10. In this case, add 10 + 64, to get 74. Place 74 in
|
||
|
HSTART. If you're setting up your own copper list, you'll know the value to
|
||
|
add to your desired offset. If you're using a screen set up by the screen,
|
||
|
you can find the offset in the View structure.
|
||
|
The VSTART value is your sprite's intended vertical position. Typically,
|
||
|
the vertical position is 0-44 pixels above the top line of the screen. This
|
||
|
number can change depending on your preferences settings. Suppose you want
|
||
|
to position a sprite at the vertical position that corresponds with pixel
|
||
|
position 12. Simply add 12 + 44 to get 56. Place 56 in VSTART.
|
||
|
The VSTOP value is the line on which you want your sprite to stop
|
||
|
displaying. Simply add the height of the sprite to VSTART to get this
|
||
|
value.
|
||
|
The register's attachment bit (7) is ingored in even numbered sprites.
|
||
|
When you attach two sprites, set HSTART, VSTART, and VSTOP of the two
|
||
|
sprites to the same values.
|
||
|
Keep in mind that to modify this from within the copper, you will need to
|
||
|
use two Move instructions. This location is usually not written to by the
|
||
|
programmer. Instead, it is written to by sprite DMA.
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF144 SPR0DATA Sprite Data Register 0
|
||
|
$DFF146 SPR0DATB
|
||
|
Status: *W Denise
|
||
|
This location is usually not written to by the programmer. Instead, it
|
||
|
is written to by the sprite DMA. If you write to it directly, write to
|
||
|
SPR0DATB (high bit of 4 colors) first then to SPR0DATA. The data will then
|
||
|
be displayed on every line at the horizontal position specified in SPR0POS
|
||
|
and SPR0CTL until you write to SPR0DATA again. SPR0DATA acts as a switch to
|
||
|
turn the sprite on. SPR0CTL acts as the corresponding off switch. The
|
||
|
weight of the bits for color are as follows:
|
||
|
SPR0DATA 1
|
||
|
SPR0DATB 2
|
||
|
SPR1DATA 4 (if attached)
|
||
|
SPR1DATB 8 (if attached)
|
||
|
----------------------------------------------------------------------------
|
||
|
Note: Sprites 0,1 share colors as do 2,3; 4,5; and 6,7
|
||
|
|
||
|
$DFF148 SPR1POS (PIXEL VALUE 0 = TRANSPARENT
|
||
|
$DFF14A SPR1CTL 1 = COLOR REGISTER 17
|
||
|
$DFF14C SPR1DATA 2 = COLOR REGISTER 18
|
||
|
$DFF14E SPR1DATB 3 = COLOR REGISTER 19)
|
||
|
$DFF150 SPR2POS (SHARES 3'S COLOR REGISTERS...)
|
||
|
$DFF152 SPR2CTL
|
||
|
$DFF154 SPR2DATA
|
||
|
$DFF156 SPR2DATB
|
||
|
$DFF158 SPR3POS (PIXEL VALUE 0 = TRANSPARENT
|
||
|
$DFF15A SPR3CTL 1 = COLOR REGISTER 21
|
||
|
$DFF15C SPR3DATA 2 = COLOR REGISTER 22
|
||
|
$DFF15E SPR3DATB 3 = COLOR REGISTER 23)
|
||
|
$DFF160 SPR4POS (SHARES 5'S COLOR REGISTERS...)
|
||
|
$DFF162 SPR4CTL
|
||
|
$DFF164 SPR4DATA
|
||
|
$DFF166 SPR4DATB
|
||
|
$DFF168 SPR5POS (PIXEL VALUE 0 = TRANSPARENT
|
||
|
$DFF16A SPR5CTL 1 = COLOR REGISTER 25
|
||
|
$DFF16C SPR5DATA 2 = COLOR REGISTER 26
|
||
|
$DFF16E SPR5DATB 3 = COLOR REGISTER 27)
|
||
|
$DFF170 SPR6POS (SHARES 7'S COLOR REGISTERS...)
|
||
|
$DFF172 SPR6CTL
|
||
|
$DFF174 SPR6DATA
|
||
|
$DFF176 SPR6DATB
|
||
|
$DFF178 SPR7POS (PIXEL VALUE 0 = TRANSPARENT
|
||
|
$DFF17A SPR7CTL 1 = COLOR REGISTER 29
|
||
|
$DFF17C SPR7DATA 2 = COLOR REGISTER 30
|
||
|
$DFF17E SPR7DATB 3 = COLOR REGISTER 31)
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $DFF180 - $DFF1BE Color Registers
|
||
|
Each color register contains 12 bits of information, for a total of 4096
|
||
|
colors. The registers are set up as follows:
|
||
|
0-3 Blue intensity (0 = no blue, 15 = full blue)
|
||
|
4-7 Green intensity
|
||
|
8-11 Red intensity
|
||
|
12-15 Unused
|
||
|
|
||
|
There are seven colors which can be represented in 16 intensities. Those
|
||
|
colors are, along with their hexadecimal values:
|
||
|
|
||
|
Gray Red Green Blue Yellow Magenta Cyan
|
||
|
---- --- ----- ---- ------ ------- ----
|
||
|
FFF F00 0F0 00F FF0 F0F 0FF
|
||
|
|
||
|
Here is a table of common colors:
|
||
|
|
||
|
Black - 000 Blue - 00F Green - 0F0 Cyan - 0FF
|
||
|
Red - 0F0 Purple-F0F Orange- E70 Yellow-FF0
|
||
|
White - FFF LtGray-CCC MdGray- 888 DkGray-444
|
||
|
----------------------------------------------------------------------------
|
||
|
$DFF182 COLOR01 $DFF184 COLOR02 $DFF186 COLOR03 $DFF188 COLOR04
|
||
|
$DFF18A COLOR05 $DFF18C COLOR06 $DFF18E COLOR07 $DFF190 COLOR08
|
||
|
$DFF192 COLOR09 $DFF194 COLOR10 $DFF196 COLOR11 $DFF198 COLOR12
|
||
|
$DFF19A COLOR13 $DFF19C COLOR14 $DFF19E COLOR15 $DFF1A0 COLOR16
|
||
|
$DFF1A2 COLOR17 $DFF1A4 COLOR18 $DFF1A6 COLOR19 $DDD1A8 COLOR20
|
||
|
$DFF1AA COLOR21 $DFF1AC COLOR22 $DFF1AE COLOR23 $DFF1B0 COLOR24
|
||
|
$DFF1B2 COLOR25 $DFF1B4 COLOR26 $DFF1B6 COLOR27 $DFF1B8 COLOR28
|
||
|
$DFF1BA COLOR29 $DFF1BC COLOR30 $DFF1BE COLOR31
|
||
|
----------------------------------------------------------------------------
|
||
|
8520 CIA Chips - Location Range $BFD000-$BFDF00
|
||
|
CIA-B
|
||
|
Locations $BFD000-$BFDF00 are used to address the Amiga's second Complex
|
||
|
Interface Adaptor (CIA-B). Since the chip itself is identical to the CIA-A,
|
||
|
which is addressed at $BFE001, the discussion here will be limited to the
|
||
|
use the Amiga makes of this particular chip. For more general information
|
||
|
on the chip registers, see the corresponding entries for CIA-A. Unlike the
|
||
|
custom chip registers, the CIA registers are all one byte long and can be
|
||
|
both read from and written to.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFD000 PRA Peripheral Data Register for Data Port A
|
||
|
Status: R/W CIA-B
|
||
|
0 BUSY Centronics busy (parallel port pin 11)
|
||
|
1 POUT Centronics paper out (pin 12)
|
||
|
2 SEL Centronics select (pin 13)
|
||
|
3 DSR RS232 data set ready (serial port pin 6)
|
||
|
4 CTS RS232 clear to send (pin 5)
|
||
|
5 DCD RS232 carrier detect (pin 8)
|
||
|
6 RTS RS232 request to send (pin 4)
|
||
|
7 DTR RS232 data terminal ready (pin 20)
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFD100 PRB Peripheral Data Register for Data Port B
|
||
|
Status: R/W CIA-B
|
||
|
0 STEP Move drive head by one track in direction
|
||
|
specified by the DIR bit (set to 1, 0,
|
||
|
then 1 again to move head.)
|
||
|
1 DIR Direction to move drive head (1 = out to 0,
|
||
|
0 = in to track 79+)
|
||
|
2 SIDE Select drive head (1 = bottom, 0 = top)
|
||
|
3 SEL0 0 = Select DF0: 1 = not selected
|
||
|
4 SEL1 0 = Select DF1:
|
||
|
5 SEL2 0 = Select DF2:
|
||
|
6 SEL3 0 = Select DF3:
|
||
|
7 MTR Motor on/off status (1 = motor off,
|
||
|
0 = motor on)
|
||
|
|
||
|
Notes:
|
||
|
Bit 0: After moving the drive's head, it is important that you wait 3
|
||
|
microseconds before performing any other disk activities. Since software
|
||
|
timing loops will be shorter on accelerated Amigas, use the CIA timers.
|
||
|
Bit 1: You can check if the drive head of a selected drive is on track
|
||
|
0 by reading bit 4 of the CIA-A chip's PRA register located at $BFE001.
|
||
|
Bit 2: When you select the head, the value of this bit affects only
|
||
|
the currently selected drives.
|
||
|
Bits 3-6: You may select more than one drive at a time. Thus, you can
|
||
|
move the heads on more than one drive simultaneously.
|
||
|
Bit 7: This bit turns the motors on and off. The drive LED is
|
||
|
directly wired to the motor power. This bit should be set before you select
|
||
|
a drive. If a drive is already selected and you wish to change the state of
|
||
|
its motor, deselect the drive, set this bit, and then reselect the desired
|
||
|
drive.
|
||
|
When turning on the motor, you must wait for the motor to reach its
|
||
|
full rotation speed before performing any other disk activities. Bit 5 of
|
||
|
the CIA-A's PRA ($BFE001) is set equal to 0 whenever the drive has reached
|
||
|
full speed and is ready to receive another command.
|
||
|
Note that all of this assumes that you have disabled multitasking and
|
||
|
have taken full control of the computer.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFD200 DDRA Data Direction Register A
|
||
|
Status: R/W CIA-B
|
||
|
A bit set in this register causes the corresponding bit in PRA to be
|
||
|
defined as output. A bit clear causes it to be defined as input. Note that
|
||
|
bits 0-5 are normally clear, and bits 6-7 are set.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFD300 DDRB Data Direction Register B
|
||
|
Status: R/W CIA-B
|
||
|
This register controls the I/O of PRB. All bits MUST be set to 1.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $BFD400 - $BFD700 CIA-B Timers A & B L/H Bytes
|
||
|
According to some early Commodore-Amiga manuals, Timer A is reserved for
|
||
|
Commodore 8-bit serial bus communications - the bus system used by the C64
|
||
|
to talk to the 1541, 1571, 1581, as well as C64 compatible printers. For
|
||
|
all practical purposes, the Amiga has no use for these timers. Timer B is
|
||
|
also unused by the operating system. Feel free to use them yourself. For
|
||
|
more details, see the entry for the CIA-A Timer A & B registers at $BFE401
|
||
|
through $BFE701.
|
||
|
|
||
|
$BFD400 TALO Timer A Low Byte. R/W
|
||
|
$BFD500 TAHI Timer A High Byte. R/W
|
||
|
$BFD600 TBLO Timer B Low Byte. R/W
|
||
|
$BFD700 TBHI Timer B High Byte. R/W
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range: $BFD800-$BFDB00 CIA-B TOD Counters
|
||
|
This 24 bit timer serves as a horizontal blank counter for the
|
||
|
graphics.library , and is used to synchronize the output of graphics with
|
||
|
the position of the video beam.
|
||
|
The CIA-B chip's TICK line is connected to the Agnus chip's _HSYNC line,
|
||
|
so the TOD clock's counter is incremented once every horizontal blank, or
|
||
|
31500 times per second.
|
||
|
|
||
|
$BFD800 TODLO TOD counter low byte R/W CIA-B (0-7)
|
||
|
$BFD900 TODMID TOD counter mid byte R/W CIA-B (8-15)
|
||
|
$BFDA00 TODHI TOD counter high byte R/W CIA-B (16-23)
|
||
|
$BFDB00 TODHR UNUSED - Not connected to the Amiga
|
||
|
-----------------------------------------------------------------------------
|
||
|
$BFDC00 SDR Serial Data Register
|
||
|
Status: R/W CIA-B
|
||
|
The CIA chip has an on-chip serial port, which allows you to send or
|
||
|
receive a byte of data one bit at a time, with the MSB (7) shifted out
|
||
|
first.
|
||
|
The CIA-B's SP line, which carries bits to the Serial Data Register, is
|
||
|
connected to bit 0 of this chip's data port A, and in turn, to pin 11 of the
|
||
|
parallel port. The chip's CNT line, which carries the bits that are output
|
||
|
by the Serial Data Register, is connected to bit 1 of this chip's Data Port
|
||
|
A, and in turn, to pin 12 of the parallel port.
|
||
|
For more information about the use of this register, see the entry for
|
||
|
location $BFEC01. The Amiga's operating system does not use this register.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFDD00 ICR Interrupt Control Register
|
||
|
Status: R/W CIA-B
|
||
|
0 R - did Timer A count down to zero? (1 = yes)
|
||
|
W - enable or disable Timer A IRQ (1 = enabled 0 = disabled)
|
||
|
1 R - did Timer B count down to zero? (1 = yes)
|
||
|
W - enable or disable Timer B IRQ (1 = enabled 0 = disabled)
|
||
|
2 R - did TOD clock reach alarm time? (1 = yes)
|
||
|
W - enable or disable TOD alarm IRQ (1 = en 0 = dis)
|
||
|
3 R - did the serial data register finish a byte? (1 = yes)
|
||
|
W - enable or disable serial data register IRQ (1/0 = en/dis)
|
||
|
4 R - was a signal sent on the FLAG line? (1 = yes)
|
||
|
W - enable/disable flag IRQ (1/0 = en/dis)
|
||
|
5 UNUSED - always returns a zero
|
||
|
6 UNUSED - always returns a zero
|
||
|
7 R - did any CIA-A source cause an interrupt? (1 = yes)
|
||
|
W - set or clear bits of this register. (1 = bits written to
|
||
|
with a 1 will be set, 0 = bits written with a 1 will be
|
||
|
cleared.)
|
||
|
|
||
|
This register is used to control the 5 interrupt sources on the 8520 CIA
|
||
|
chip. For details on its operation, see $BFED01.
|
||
|
The main difference between the two CIA chips pertaining to this register
|
||
|
is that on CIA-B, the FLAG line is connected to the disk controller's
|
||
|
DSKINDEX line. And in order for the Amiga to recognize a CIA-B chip
|
||
|
interrupt, bit 13 or the INTENA register must be set to 1. See registers
|
||
|
INTENA and INTENAR at $DFF09A and $DFF01C for more information on Amiga
|
||
|
interrupts.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $BFDE00 - $BFDF00 CIA Control Registers A & B
|
||
|
See locations $BFEE01 and $BFEF01 for details.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFDE00 CRA Control Register A
|
||
|
Status: R/W CIA-B
|
||
|
0 START Start Timer A (1 = start, 0 = stop)
|
||
|
1 PBON Select Timer A output on Data Port B (1 = Timer B
|
||
|
output appears on bit 6 for Data Port B)
|
||
|
2 OUTMODE Data Port B output mode (1 = toggle bit 6, 0 = pulse
|
||
|
bit 6 every 10 microprocessor cycles)
|
||
|
3 RUNMODE Timer A run mode (1 = one shot, 0 = continuous)
|
||
|
4 LOAD Force latched value to be loaded to Timer A counter
|
||
|
(1 = force load strobe)
|
||
|
5 INMODE Timer A input mode (1 = count signals on CNT line at
|
||
|
pin 1 of keyboard port, 0 = count every 10 uP cycles)
|
||
|
6 SPMODE Serial Port ($BFEC01) mode (1 = output, 0 = input)
|
||
|
7 UNUSED
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFDF00 CRB Control Register B
|
||
|
Status: R/W CIA-B
|
||
|
0 START Start Timer B (1 = start, 0 = stop)
|
||
|
1 PBON Select Timer B output on Data Port B (1 = Timer B
|
||
|
output appears on bit 7 for Data Port B)
|
||
|
2 OUTMODE Data Port B output mode (1 = toggle bit 7, 0 = pulse
|
||
|
bit 7 every 10 microprocesor cycles(
|
||
|
3 RUNMODE Timer B run mode (1 = one shot, 0 = continuous)
|
||
|
4 LOAD Force latched value to be loaded to Timer B counter
|
||
|
(1 = force load strobe)
|
||
|
5-6 INMODE Timer B input mode
|
||
|
00 = count every 10 uP cycles
|
||
|
01 Count cycles on CNT line at pin 1 of keyboard port
|
||
|
10 Count each time that Timer A counts down to 0.
|
||
|
11 Count Timer A 0's when CNT pulses are present
|
||
|
7 ALARM Select TOD write status (1 = writing to TOD registers
|
||
|
sets counter, 0 = writing to TOD registers sets alarm)
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $BFE001-$BFE301 CIA Data Ports A and B
|
||
|
These registers allow the Amiga to communicate with the outside world.
|
||
|
Bits of data written to the PRA and PRB registers ($BFE001 and $BFE101) can
|
||
|
be sent to external devices, while bits of data those devices send can be
|
||
|
read here.
|
||
|
A bit can be set up for only input or output, not both at once. To
|
||
|
define the I/O status of a bit, you use the Data Direction Registers.
|
||
|
Register DDRA ($BFE201) controls data port A, and register DDRB ($BFE301)
|
||
|
controls data port B. 1 = output mode, and 0 = input mode. Note that DDRA
|
||
|
is preset by the Amiga on power up. Modifying the contents may cause the
|
||
|
computer to lock up.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE001 PRA Peripheral Data Register for Data Port A
|
||
|
Status: R/W CIA-A
|
||
|
0 OVL Memory overlay bit (Dont change! Keep 0)
|
||
|
1 LED Power LED/Cutoff filter (1 = LED dimmed and
|
||
|
cutoff filter inactive, 0 = LED/filter normal)
|
||
|
2 CHNG Disk Change (1 = no change, 0 = disk has
|
||
|
been removed)
|
||
|
3 WPRO 1 = Disk Write Protected 0 = Unprotected
|
||
|
4 TK0 1 = head not on trk 0, 0 = head on track 0.
|
||
|
5 RDY 1 = currently selected drive is ready for
|
||
|
commands, 0 = not ready.
|
||
|
6 FIR0 Fire button on port 1, pin 6 (0 = pressed)
|
||
|
7 FIR1 Fire button on port 2, pin 6 (0 = pressed)
|
||
|
|
||
|
Notes: On bits 6-7, you may also output data through pin 6 on either
|
||
|
game port. Simply set bit 6 or 7 (depending on which port you wish to
|
||
|
output data o) in the DDRA register to 1 for output and then toggle the same
|
||
|
bit in the PRA register. Setting the PRA bit to one outputs approximately 5
|
||
|
volts on that line. Setting the PRA bit equal to zero oulls the line low to
|
||
|
zero volts. It is common courtesy to set the data direction registers back
|
||
|
to their original value after using them.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE101 PRB Peripheral Data Register for Data Port B
|
||
|
Status: R/W CIA-A
|
||
|
0 D0 Parallel port pin 2
|
||
|
1 D1 Parallel port pin 3
|
||
|
2 D2 Parallel port pin 4
|
||
|
3 D3 Parallel port pin 5
|
||
|
4 D4 Parallel port pin 6
|
||
|
5 D5 Parallel port pin 7
|
||
|
6 D6 Parallel port pin 8
|
||
|
7 D7 Parallel port pin 9
|
||
|
|
||
|
Notes: This register is used exclusively by the Amiga's parallel port.
|
||
|
It controls the port's data lines, and is therefore responsible for all
|
||
|
parallel port transmissions.
|
||
|
For example, whenever the Amiga sends a character to a printer that's
|
||
|
connected to the parallel port, it uses this register. It just sets all the
|
||
|
bits in the DDRB equal to one and writes the byte of data to be output here.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE201 DDRA Data Direction Register A
|
||
|
Status: R/W CIA-A
|
||
|
0 Select bit 0 PRA I/O (Must be 1 = Output)
|
||
|
1 1 1
|
||
|
2 2 0 = Input
|
||
|
3 3 0
|
||
|
4 4 0
|
||
|
5 5 0
|
||
|
6 6 (Normally 0)
|
||
|
7 7 (Normally 0)
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE301 DDRB Data Direction Register B
|
||
|
Status: R/W CIA-A
|
||
|
A bit set or clear here makes the corresponding bit in the PRB set for
|
||
|
output or input, respectively.
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $BFE401 - $BFE701 CIA Timers A & B L/H Bytes
|
||
|
These four timer registers (two for each timer) have different functions
|
||
|
depending on whether you are reading from or writing to them. When you read
|
||
|
from these registers, you get the present value of the Timer Counter (which
|
||
|
counts down from its initial value to zero). When you write to these
|
||
|
registers, the value is stored in the Timer Latch, and from there it can be
|
||
|
used to load the Timer Counter using the LOAD bit of the CRA or CRB
|
||
|
registers (see $BFEE01 and $BFEF01).
|
||
|
These interval timers can hold a 16 bit value from 0 to 65535, in low
|
||
|
byte - high byte format. Once the Timer Counter is set to an initial value
|
||
|
and the timer is started, the timer will decrement every 10 uP cycles.
|
||
|
Since the clock speed of an NTSC Amiga is 7.159090 MHz, using every count
|
||
|
takes approximatels a millionth of a second. (10 / 7159090 =
|
||
|
0.0000013968256). The formula for calculating the amount of time it will
|
||
|
take for the timer to count down from its latch value to zero is:
|
||
|
Time = Latch Value / Count Speed
|
||
|
where Latch Value is the value written to the low and high timer registers,
|
||
|
and Count Speed is 715909 for NTSC, and 709379 for PAL.
|
||
|
When Timer A or B reaches 0, it will set bit 0 or 1 in the Interrupt
|
||
|
Control Register at $BFED01. If the timer interrupt has been enabled, an
|
||
|
interrupt will take place, and the high bit of the Interrupt Control
|
||
|
Register will be set to one. Alternately, if the PBON bit is set, the timer
|
||
|
will wirte data to bit 6 or 7 on Port B. After the timer gets to zero, it
|
||
|
will reload the Timer Latch value and either stop or count down again,
|
||
|
depending on whether it is in one-shot or continuous mode (determined by bit
|
||
|
3 of the Control Register).
|
||
|
Although usually a timer will be used to count every 10 uP cycles, Timer
|
||
|
A can also count external pulses on the CNT line, which is connected to the
|
||
|
Amiga's keyboard.
|
||
|
Timer B is even more versatile. In addition to these two sources, Timer
|
||
|
B can count the number of times that Timer A goes to zero. By setting Timer
|
||
|
A to count the uP clock, and Timer B to count the number of times Times A
|
||
|
reaches 0, you effectively link the two into one 32 bit timer that can count
|
||
|
for more than an hour before resetting.
|
||
|
In the Amiga, CIA-A Timer A is used to time the transfer of keyboard
|
||
|
data. Timer B is used by Exec (the core of the Amiga's multitasking
|
||
|
operating system) to synchronize task switching; it also serves as the
|
||
|
timer.device's UNIT_MICROHZ timer. As a result, neither Timer A or B is
|
||
|
available for general use.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE401 TALO Timer A Low Byte
|
||
|
$BFE501 TAHI Timer A High Byte
|
||
|
$BFE601 TBLO Timer B Low Byte
|
||
|
$BFE701 TBHI Timer B High Byte
|
||
|
Status: R/W CIA-A
|
||
|
----------------------------------------------------------------------------
|
||
|
Location Range $BFE801 - $BFEB01 CIA-A TOD Counters
|
||
|
In addition to two general purpose timers, the 8520 CIA has a special
|
||
|
purpose 24-bit counter that can count up to 16777215 ($FFFFFF). Unlike the
|
||
|
chip's other two timers, the TOD clock counts up, and when the TOD clock
|
||
|
reaches its maximum value, starts over at zero and continues counting. The
|
||
|
TOD clock can also be set to generate an interrupt whenever it reaches a
|
||
|
determined value.
|
||
|
The TOD clock increments its counter approximately 60 times per second
|
||
|
(50 for PAL) - the same frequency as the computer's power line tick.
|
||
|
The TOD registers can be used for two purposes, depending on whether you
|
||
|
are reading from or writing to them. If you are reading from them, you will
|
||
|
always be reading the timer's current value. There is a latching feature
|
||
|
associated with the high byte register that freezes the other two bytes
|
||
|
until you read the low byte. This is to keep inaccurate readings from
|
||
|
occurring. (Note that the timer will not continue to count until you read
|
||
|
the low byte!)
|
||
|
Writing to these registers sets either the counter or alarm time
|
||
|
depending on the setting of bit 7 of Control Register B (CRB, $BFEF01). If
|
||
|
that bit is set to 1, writing to the TOD registers sets the alarm. If the
|
||
|
bit is set to zero, writing to the TOD registers sets the clock. In either
|
||
|
case, as with reading the registers, there is a latch function. This
|
||
|
function stops the clock from updating when you write to the high byte
|
||
|
register. The clock will not start again until you write to the low byte
|
||
|
register.
|
||
|
The CIA-A's TOD clock serves as the timer.device's UNIT_VBLANK timer.
|
||
|
Unlike the Timer A driven UNIT_MICROHZ clock (which is also used by Exec),
|
||
|
UNIT_VBLANK is not slowed down if the computer is running several programs
|
||
|
at once.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFE801 TODLO TOD Counter Low Byte
|
||
|
$BFE901 TODMID TOD Counter Mid Byte
|
||
|
$BFEA01 TODHI TOD Counter High Byte
|
||
|
$BFEB01 TODHR UNUSED - Not connected to the Amiga
|
||
|
Status: R/W CIA-A
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFEC01 SDR Serial Data Register
|
||
|
Status: R/W CIA-A
|
||
|
The CIA chip has a built in serial port, which allows you to send or
|
||
|
receive a byte of data one bit at a time, with the MSB (7) shifted out
|
||
|
first. Control Register A at $BFEE01 allows you to choose input or output
|
||
|
modes. In input mode, a bit of data is read from the chip's SP line
|
||
|
whenever a signal on the CNT line appears. After 8 bits are received, and
|
||
|
the data has been placed in the SDR, an interrupt is generated to let you
|
||
|
know that the register should be read.
|
||
|
In output mode, you write data to the SDR, and it is sent out over the SP
|
||
|
line using Timer A for the baud rate generator. Whenever a byte of data is
|
||
|
written to using this register, transmission will start as long as Timer A
|
||
|
is running in continuous mode. Data is sent at half the Timer A rate, and
|
||
|
an output will appear on the CNT line whenever a bit is sent. After all 8
|
||
|
bits have been sent, an interrupt is generated to indicate that it is time
|
||
|
to load the next byte to send into the Serial Data Register.
|
||
|
The Amiga usus this register to receive data from the keyboard's KDAT
|
||
|
line (via pin 2 of the keyboard port), and the CNT line is connected to the
|
||
|
keyboard's KCLK line (via pin 1 of the keyboard port). Data is never sent
|
||
|
to the keyboard, so this register is always operating in input mode.
|
||
|
By reading this register directly, you can find the RAWKEY value of the
|
||
|
current key being pressed. A rawkey value specified the physical location
|
||
|
of the key on the keyboard. Normally, the Amiga's operating system reads
|
||
|
the value from the SDR and uses the computer's current keyboard map table
|
||
|
(such as USA1) to convert it to ASCII. Keymap tables are important because
|
||
|
different countries use different keyboard layouts. There are at least 15
|
||
|
different Amiga keyboard configurations in existance.
|
||
|
The number returned does not have the high bit (7) set during the key
|
||
|
press. However, when the key is released, bit 7 is set. Thus, a key's
|
||
|
release value is 128 greater than its depress value.
|
||
|
You should know the shift or control keys do not modify the rawkey
|
||
|
values. Instead, the shift or control keys send their own rawkey codes.
|
||
|
There are six special codes that can be sent via the SDR:
|
||
|
$78 - Control/Amiga/Amiga
|
||
|
$F9 - Ignore last character: transmission error
|
||
|
$FA - 10 character keyboard buffer is full
|
||
|
$FC - Keyboard self test failed
|
||
|
$FD - Header: Any following codes were keys pressed on power up
|
||
|
$FE - Termination code after the keys pressed on power up.
|
||
|
(i.e.: $FD xx xx ... $FE)
|
||
|
Using the console.device's RawKeyConvert() functiom, you can convert a
|
||
|
rawkey code to normal ASCII.
|
||
|
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFED01 ICR Interrupt Control Register
|
||
|
Status: R/W CIA-A
|
||
|
Notes: Bit layout is the same as the ICR at $BFDD00. This register is
|
||
|
used to control the five interrupt sources on the 8520 CIA chip. These
|
||
|
sources are Timer A, Timer B, the TOD clock, the SDR, and the chip's FLAG
|
||
|
line. Timer's A & B cause an interrupt when they count down to zero. The
|
||
|
TOD clock generates an alarm when it reaches the alarm time. The SDR
|
||
|
generates an interrupt when it compiles 8 bits of input or output. An
|
||
|
external signal pulling the CIA chip's FLAG line low will also cause an
|
||
|
interrupt (on CIA-A, the FLAG line is connected to the ACK line - pin 10 of
|
||
|
the parallel port).
|
||
|
Even if the conditions for an interrupt are satisfied, the interrupt must
|
||
|
still be enabled for the interrupt to occur. This is done by writing to the
|
||
|
ICR. What happens when you write to this register depends on the way you
|
||
|
set bit 7. If it is set to 0, any bit you write to with a 1 is cleared. If
|
||
|
it is set to a 1, any bit that you write to with a 1 is set, and the
|
||
|
corresponding interrupt is enabled. In either case, any bits written to
|
||
|
with a zero will be unaffected.
|
||
|
For example, to disable all interrupts from machine language, you could
|
||
|
MOVE.B #$7F,$BFED01. Don't try this with multitasking turned on, as it will
|
||
|
turn off Timer B, which handles task switching.
|
||
|
To turn on a Timer B interrupt, a program could MOVE.B #$82,$BFED01. Bit
|
||
|
7 is set to 1, and so is bit 1, so the interrupt which corresponds with bit
|
||
|
1 (Timer B) is enabled.
|
||
|
When you read this register, you can tell if any of the conditions for a
|
||
|
CIA interrupt were satisfied because the corresponding bit will be set to a
|
||
|
one. For example, if Timer A counter down to zero, you would read a #$01
|
||
|
from this register. If in addition the enable bit that corresponds to that
|
||
|
interrupt source is set to 1 and an interrupt occurs, bit 7 will also be
|
||
|
set. This allows a multi-interrupt system to read one bit and see if the
|
||
|
source of a particular interrupt is CIA-A. You should note, however, that
|
||
|
reading this register clears it, so you should preserve its contents if you
|
||
|
want to test more than one bit. In order for the Amiga to recognize a CIA-A
|
||
|
chip interrupt, bit 3 of the INTENA register must be set to 1. See
|
||
|
registers INTENA and INTENAR ($DFF09A, $DFF01C) for more information.
|
||
|
----------------------------------------------------------------------------
|
||
|
$BFEE01 CRA Control Register A
|
||
|
$BFEF01 CRB Control Register B
|
||
|
Status: R/W CIA-A
|
||
|
See $BFDE00 and $BFDF00 for information on the bit layout.
|
||
|
----------------------------------------------------------------------------
|
||
|
This completes "Mapping the Amiga" from Compute! Books. For information
|
||
|
on system structures, examine your C and assembler Include files. They
|
||
|
have much better information than the book.
|
||
|
Slates from Bansai
|
||
|
05/26/91
|
||
|
----------------------------------------------------------------------------
|
||
|
Want more cool warez call Spectral Forces 203.327.4104 <<<SPELLJAMMER WHQ>>>
|