HDTenEightyP/NetNews huggingface dataset:
From: jesup@cbmvax.commodore.com (Randell Jesup)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: IBM floppy drives on AMigas
Date: 26 Aug 92 02:39:46 GMT
Reply-To: jesup@cbmvax.commodore.com (Randell Jesup)
Organization: Commodore, West Chester, PA

ezanto@mail1.cis.umn.edu (Eric Michael Zanto) writes:
>
>I have a Toshiba 3.5" floppy drive and was wondering what I can do to get it to work on my Amiga.  Is it possible to do such a thing?

	I'm assuming it's a 3.5" 1MB floppy (720K IBM format).

	It may be possible to get it to work as a second internal drive.  To
make it work as an external drive requires "ID" circuitry to identify it to
the system.  The Hardware manual has that info.  Also, double-check all the
pinouts, though they're probably the same.

	If you do hook it up, there's no guarantee it will work, since drives
do vary and we have to qualify models to make sure they meet our specs, but
it probably will.  The one thing that may not work is the disk removal
detection circuitry.  This will probably require using "diskchange" to tell the
system a disk has been removed or inserted.

-- 
"Rev on the redline, you're on your own; seems like a lifetime, but soon it's
 gone..."  Foreigner
-
Randell Jesup, Jack-of-quite-a-few-trades, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com  BIX: rjesup  
Disclaimer: Nothing I say is anything other than my personal opinion.
From: gstark@misvax.mis.arizona.edu
Newsgroups: comp.sys.amiga.programmer
Subject: lpatch/lcompare from SAS
Date: 28 Aug 92 02:52:16 GMT
Organization: University of Arizona UNIX Users Group


I was told by SAS that I need to use a program called "lcompare" to
generate files usable by "lpatch" if I want to generate binary diffs. 
Where-o-where can I find lcompare?  I did an archie search but it turned
up nothing.  From what I gathered from SAS lcompare/lpatch are
distributable.  Is this true?  If so, perhaps someone could tell me where I
could FTP it from?  

-Gavin
From: barrett@gleep.cs.umass.edu (Daniel Barrett)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: SimpleRexx 2.0
Date: 28 Aug 92 00:28:28 GMT
Reply-To: barrett@gleep.cs.umass.edu (Daniel Barrett)
Organization: BLAZEMONGER INCORPORATED

>In article <1992Aug27.120316.2063@cas.org> vjh21@cas.org (Vince Herried) writes:
>>Some time back I ordered from CATS the 2.0 native developers disks
>>and the programmers guide to AREXX.

In article <BtnqH7.3C1@watserv1.uwaterloo.ca> giguere@csg.uwaterloo.ca (Eric Giguere) writes:
>You _should_ have also received a diskette with the complete source code
>to all the programs in the manual.

	There was a screwup, and the manuals were shipped without disks.
Just call Commodore's "Department C" and ask for your disk.  That's what
I did, and they sent it out the same day.

                                                        Dan

 //////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
| Dan Barrett -- Dept of Computer Science, Lederle Graduate Research Center |
| University of Massachusetts, Amherst, MA  01003  --  barrett@cs.umass.edu |
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////
From: mueller@schaefer.math.wisc.edu (Carl Douglas Mueller)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: SAS/C 6.0 upgrade notices
Date: 23 Aug 92 20:53:26 GMT
Reply-To: mueller@schaefer.UUCP (Carl Douglas Mueller)
Distribution: na
Organization: Univ. of Wisconsin Dept. of Mathematics

In article <92236.143018TEW105@psuvm.psu.edu> TEW105@psuvm.psu.edu writes:
>Has anyone received the 6.0 upgrade notice yet?
>I haven't heard anything from SAS since I bought 5.1 (and I did return my
>card) except from one or two product catalogs, which I got after I called them
>and inquired about the a and b upgrades, at which point I had to give them
>my name, address, serial number, etc. because that didn't seem to have it then
>and it seems they managed to lose it again.

Well, I haven't gotten my upgrade notice yet.  I too am a registered user 
of 5.1.  When I saw the ADs in Amiga World and Amazing Computing, I immediately
wrote to SAS to ask for info (maybe a week or ten days ago).  I have gotten
nothing back.

            Carl Mueller (mueller@math.wisc.edu)
Newsgroups: comp.sys.amiga.programmer
From: dostie@ccrs.emr.ca (M Dostie)
Subject: Space...the Final Frontier
Summary: Scrolling
Keywords: starfield
Organization: Canada Centre for Remote Sensing, Ottawa
Date: Mon, 31 Aug 1992 13:46:52 GMT

Could someone give me a run-down on how the scrolling star-field displays
used in every DEMO known and many games works? Does it use BOBS? or
VSprites? Which scrolling routines are used? How is the screen laid out?
How does the images get wrapped-around on the screen? Are we using double
buffering or dual playfields? 

If you have an example piece of C code that would be most instructional
...

	Thanks,

		Mark Dostie
		dostie@mda.ca
-- 
---------------------------------------------	
		Mark Dostie
		Systems Support and Integration
		MDA / CCRS contract
Newsgroups: comp.sys.amiga.programmer,comp.sys.amiga.misc,comp.sys.amiga.applications
From: gblock@csd4.csd.uwm.edu (Gregory R Block)
Subject: Once again...  Some questions:
Originator: gblock@csd4.csd.uwm.edu
Organization: Computing Services Division, University of Wisconsin - Milwaukee
Date: Wed, 2 Sep 1992 07:41:58 GMT

     I know how this sounds, but:  I need to open all 255 clipboard units
using 2.0's iffparse OpenClipboard.

     As a rough guess, how much memory is this going to eat?  Each
clipboard unit is opened and then a cliphook is set up to a procedure
to weed through which ones are active, and when they change...

(I can't believe I just asked that...  ;)

A few other questions:
     Where can one get the HotLinks development
kit?  I need to add copy to/from HotLinks support, and I've got to
figure out how to do it quickly.

     What's the best, fastest, and most system-compliant way to figure
out if a clipboard unit is empty?

     How does one create an ANNO or an AUTH chunk?

     Are there any clipboard bugs that I should know about right away
using IFFParse?  I remember something about reads and writes above
unit 0 having problems...

Greg

--
(: (: (: (: Have you overdosed on smileys today?  Why NOT!?! :) :) :) :) :)
(: "...and here's Clinton giving the correct spelling of bong-resin..."  :)
(:	gblock@csd4.csd.uwm.edu			Gregory R. Block         :)
-- 
(: (: (: (: Have you overdosed on smileys today?  Why NOT!?! :) :) :) :) :)
(: "...and here's Clinton giving the correct spelling of bong-resin..."  :)
(:	gblock@csd4.csd.uwm.edu			Gregory R. Block         :)
(: (: (: (: (: (: (: (: (: (: (: (: (:) :) :) :) :) :) :) :) :) :) :) :) :)
From: paulk@terapin.com (Paul Kienitz)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: Locking Window Input -- How?
Date: 2 Sep 92 19:20:57 GMT
Organization: BBS

> What you are doing is likely bad user-interface design, and
> certainly bad software design.
 
Probably the nearest thing to a friendly way to make sure no other
window activates when yours is active is to steal all the input with
an event handler until you want to let the system work normally again.
From: hemmer@hemmer.adsp.sub.org (Franz Hemmer)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: Quick ?
Date: 28 Aug 92 08:32:45 GMT
Reply-To: cbmehq!cbmden!hemmer@cbmvax.commodore.com (Franz Hemmer)
Organization: InterActivsion
X-NewsSoftware: GRn 1.16e (7/4/92) by Mike Schwartz & Michael B. Smith

In article <1992Aug27.045116.22134@jato.jpl.nasa.gov> jdickson@jato.jpl.nasa.gov (Jeff Dickson) writes:

> 	I was led to believe that the names of the files in a directory are
> stored within the directory file itself. But if this is truely the case,
> then why is a listing of that directory with the "QUICK" option hardly any
> quicker than without? 

The QUICK option of List reduces the output to the file or directory names,
not including size, data etc. as usual. The List program still goes through
exactly the same amount of information, it only outputs less. So QUICK has
nothing to do with the execution time.

A disk structure starts with the root block. From there every directory and
file on a disk can be derived (through linkage). Directories and files are
chained together through a hashing mechanism, which you can read about in
the AmigaDOS 3rd Edition manual from Bantam Books (ISBN 0-553-35403-5).

> 	I'd like to use the ExAll function, but I'm not savy on how large a
> buffer to supply. Ideally, the buffer would only be as large as need be. So
> for instance, if I were interested in only obtaining the names contained in
> a directory would fib_Size reflect at least how large that buffer needed to
> be?

fib_Size reflects the size of the file examined. It has nothing to do with the
amount of buffer you need to hold for the entire directory. When you examine
a directory you need to allocate `sizeof (struct FileInfoBlock)' for each file
or directory encountered. If you're only interested in part of the information
contained in the FileInfoBlock say the size of the file, one FileInfoBlock
allocation will suffice. You can then copy the size values to your own size
buffer, or just add them up (or whatever your purpose is :-). All information
about the file or directory can then be found in the FileInfoBlock structure.

> 	Any help much appreciated.

Hope this clarified a bit.

-- 
*-------------------------------------------------------------------------*
|         _   UseNet: (uunet|rutgers|pyramid)!cbmvax!cbmehq!cbmden!hemmer |
|         \\ _                         CBMNET: hemmer@hemmer.adsp.sub.org |
| InterActi\X/ision - The name of precision                               |
| Best regards                         >> Carpe Diem! - Seize the day! << |
| Franz Hemmer - Software Developer located in Silkeborg, Denmark, Europe |
*-------------------------------------------------------------------------*
Newsgroups: comp.sys.amiga.programmer
From: mlelstv@specklec.mpifr-bonn.mpg.de (Michael van Elst)
Subject: Re: Double buffering and flicker..
Keywords: WaitBOVP() and WaitTOF()...
Organization: Max-Planck-Institut f"ur Radioastronomie
Date: Fri, 28 Aug 1992 08:46:47 GMT

In <1992Aug27.150303.32479@news.th-darmstadt.de> rb345@rbhp25.rbg.informatik.th-darmstadt.de (Matthias Meixner) writes:
>Try RemakeDisplay() instead of LoadView(), maybe this will help you, but i don't
>know if this will fix the flicker.

RemakeDisplay recalculates the intuition copper lists and calls LoadView to
install them. It probably won't show any of his graphics :-)

Regards,
-- 
Michael van Elst
UUCP:     universe!local-cluster!milky-way!sol!earth!uunet!unido!mpirbn!p554mve
Internet: p554mve@mpirbn.mpifr-bonn.mpg.de
                                "A potential Snark may lurk in every tree."
From: wild@nessie.cs.id.ethz.ch (Markus Wild)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: gcc 2.2.2
Date: 3 Sep 92 21:19:06 GMT
Organization: Swiss Federal Institute of Technology (ETH), Zurich, CH

In article <1992Sep2.045534.22777@ultb.isc.rit.edu> tsm2124@ritvax.isc.rit.edu writes:
>Can someone tell me where I can ftp gcc 2.2.2?
>

wuarchive.wustl.edu:systems/amiga/incoming/devel/gcc222.lha	*and*
		    systems/amiga/incoming/devel/gcc222-fix1.lha

In the fix, use the fix1.bak file where the README file mentiones fix1.
CED played a bad game with me that night... 

-Markus



-- 
Markus M. Wild    -  wild@nessie.cs.id.ethz.ch  |  wild@amiga.physik.unizh.ch 
Vital papers will demonstrate their vitality by spontaneously moving
from where you left them to where you can't find them.
From: paulk@terapin.com (Paul Kienitz)
Newsgroups: comp.sys.amiga.programmer
Subject: benchmarks: SAS 6.0 vs Aztec 5.2b
Date: 29 Aug 92 16:08:40 PST
Organization: BBS

Doug Walker posted these numbers in comp.sys.amiga.programmer:
 
> OK, one more try... I found that I wasn't really cranking up
> the optimization as far as it would go, so I did it again.
> This time I set the inlining function up as high as it would
> go, which increased the code size significantly but bought
> some additional speed.
> 
> The V5.10 numbers are the same, the V6 numbers are new.  All numbers
> were generated on an Amiga 3000/25.
> 
>    V5.10, 68000:   6362.7 Dhrystones/sec
>    V5.10, 68030:   7287.4       "
> 
>    V6.0,  68000    8321.8       "
>    V6.0,  68030    9202.5       "
> 
> Then I did the same set of tests on an Amiga 3000 with a 68040
> board installed:
> 
>    V5.10, 68000:   20761.2 Dhrystones/sec
>    V5.10, 68040:   24477.2      "
>    
>    V6.0,  68000:   25603.8      "
>    V6.0,  68040:   28301.9      "
> 
> Note that since the Dhrystone benchmark doesn't use floating
> point, there would be no difference between code compiled for
> the 68030 or 68040.  The only difference between SAS/C code
> generated for the '030 and the '040 is that floating point
> instructions which must be emulated on an '040 are not
> generated.
 
========
 
Here are my numbers for Aztec C 5.2b, using the same source Doug
Walker used for the above, slightly tweaked here and there...
these were the best I could manage:
 
  long ints, for 68000:   5849.5
  long ints, for 68020:   6422.9
  short ints, both cases: 6594.9
 
This is on an A3000/25 with SCRAM and all caches and bursts enabled.
Compiling typically took 9.6 seconds total, linking 2.4 seconds --
Aztec still has the edge in producing results quickly, even if it no
longer has an edge in producing results that are quick.  Doug told me
SAS takes 13.6 seconds to compile without optimization, 27 seconds
with.
 
Looks like SAS 6.0 produces code that is a minimum of twenty-five
percent faster and often FORTY percent faster than what comes out of
Aztec C 5.2b.
From: jdickson@jato.jpl.nasa.gov (Jeff Dickson)
Newsgroups: comp.sys.amiga.programmer
Subject: Re: gameport device vs. input device
Date: 28 Aug 92 21:18:58 GMT
Organization: Jet Propulsion Laboratory

In article <1992Aug28.203427.9520@galileo.cc.rochester.edu> rjw@merlin.cvs.rochester.edu (Robert Wilson) writes:
>In article <1992Aug28.182725.1768@jato.jpl.nasa.gov> jdickson@jato.jpl.nasa.gov (Jeff Dickson) writes:
>>In article <1992Aug28.174032.4126@galileo.cc.rochester.edu> rjw@merlin.cvs.rochester.edu (Robert Wilson) writes:
>>>I'm trying to use the input device to pick up character input, and the 
>>>gameport device to pick up mouse input from both ports.  This is for a 
>>>psych. experiment, so the gameports have to be on equal standing: hence
>>>my need for using the gameport device.
>>>
>>>** My question: is it possible to make the input device unaware of the 
>>>gameports?  I want all mouse events to go the gameport device, and only
>>>to the gameport device.
>>
>>The input device task opens the gameport device when it begins and packages
>>any and all mouse events that occur into IECLASS_RAWMOUSE input events. Key-
>>board activity too causes IECLASS_RAWKEY input events to be generated. You
>>can become a handler of the input device chain (See the RKM Libraries and
>>Devices chapter on the Input Device).  As far an equal standing goes, they're
>>both packaged as input events and you can see them in the order they occurred.
>
>Thank you for the prompt reply.  I have code already that handles the mouse
>via the input device, but as far as I can tell (having read the sections you
>mentioned) the input device only picks up events from one port at a time.
>This means that the data flows as follows:
>
>GAMEPORT 0: mouse->gameport dev 0->input dev->my program
>GAMEPORT 1: mouse->gameport dev 1->my program
>
>Things I'm afraid may slow down my processing an event on gameport 0:
>    1) the event being queued behind non-mouse events
>    2) the input device taking a while to process the event
>
>I need millisecond accuracy.  If anyone can tell me that the input device won't
>slow things down that much, I'll be happy to go on; but right now it seems that
>data from gameport 1 could go processed faster than data from gameport 0.
>
>If anyone can tell me how to get around the input device, or show that my
>fears are unfounded, I'd really appreciate it.
>
>-Robert
> rjw@cvs.rochester.edu

	I can't imagine that the delays incurred by the input device
processing mouse and keyboard events would be so great on a more-less
dry system (nothing going on) to have unruley effects on the accuracy.
Also, the input device task runs at a fairly high priority. This gives
it an edge over typical stuff (i.e. Shells). Filesystems too run at a
high priority, so maintaining this accuracy might be a problem if too
much DOS activity is drummed up in the interim.

jeff
From: gene@zach.fit.edu (Van Sant/ADVISOR Tamir)
Newsgroups: comp.sys.amiga.programmer
Subject: RE: PROBLEM WITH AMOS
Date: 28 Aug 92 22:57:42 GMT
Organization: Florida Institute of Technology, Melbourne USA



Newsgroups: comp.sys.amiga.programmer
Expires: 
Followup-To: see subject 
Distribution: comp.sys.amiga.programmer 
Organization: Florida Institute of Technology, Melbourne USA

In article <64543@cup.portal.com> Avi@cup.portal.com (Avi - Schwartz) writes:
>>hello. This little Amos programm has a very fatal bug(guru):
>>set buffer 200:dim a(200,200)
>>for i=0 to 200
>>for j=0 to 200
>>a(i,j)=1
>>next
>>next
>>
>>can you help me??
>>
>>
>>-- DLG Pro v0.992

Memory allocation error.  You just grabbed 40,000 integer elements
at 4 bytes each, i.e. 120k memory.  I suspect your running on a 1 meg
machine.  If you went gonzo on the text buffer size, (or perhaps even
if you didn't) your still using lots of ram for workbench and the
AMOS environmet itself.  Simple solution, buy a RAM board,(cheap).
Or trim the environmet down, (lose WB, etc.)

On the bright side: there is nothing wrong with your code }-)

>======================================================================
>Avi Schwartz /  Portal: Avi /  BIX: Avi / Internet: Avi@cup.portal.com
>======================================================================
Newsgroups: comp.sys.amiga.programmer
From: dingebre@imp.sim.es.com (David Ingebretsen)
Subject: SUSHI uploaded, thank you CATS
Followup-To: comp.sys.amiga.programmer
Reply-To: dingebre@imp.sim.es.com (David Ingebretsen)
Organization: Evans & Sutherland Computer Corp., Salt Lake City, UT
Date: Tue, 25 Aug 1992 21:34:45 GMT


Carolyn Scheppner at CATS just emailed me a new version of SUSHI. I have
uploaded it to amiga.physik (/amiga/devel) and hubcap.clemson.edu
(/pub/amiga/incoming/program.tools). 

Here is the readme file:

Sushi 37.7
 
Sushi is a tool to intercept the raw serial output of Enforcer 2.8b,
Enforcer.megastack 26.f, Mungwall, and all tool and application debugging
output that uses kprintf.  This makes it possible to use serial debugging
on a single Amiga, without interfering with attached serial hardware
such as modems and serial printers.  Sushi also provides optional
signalling and buffer access to an external display/watcher program.


THANK YOU CAROLYN AND ALL THOSE AT CATS FOR YOUR SUPPORT!!!


-- 
	David

	Disclaimer: The content of this message in no way reflects the
	            opinions of my employer, nor are my actions
		    encouraged, supported, or acknowledged by my
		    employer.
Newsgroups: comp.sys.amiga.programmer
From: mjl@newton.auto.tuwien.ac.at (Martin J. Laubach)
Subject: Re: SAS/C 6.0 Details (LONG!)
Organization: Technical University of Vienna
Date: Wed, 26 Aug 1992 12:43:01 GMT

|> So, when I switch to V6.0 I'll have to set all my library pointers to NULL
|> after CloseLibrary(), in order to avoid autoterm() to close it again ?

  No. You'd only need to do this if your code opens and closes the libraries
yet does not define the library base -- quite unlikely, I'd say.

	mjl
Newsgroups: comp.sys.amiga.programmer
From: scholkows@cc.curtin.edu.au
Subject: How to redirect printer device??
Organization: Curtin University of Technology
Date: Mon, 31 Aug 1992 02:04:32 GMT

HI,
	Does enybody know if there is a way of redirecting the output of the 
printer device to a file...  Eg make a file which you can later "copy" to 
another printer which is hooked up to an IBM??

Any help will be apriciated..

MArtin

-- 
-------------------------------------------------------------------------------
 Internet: SCHOLKOWS@cc.curtin.edu.au
 Bitnet: SCHOLKOWS%cc.curtin.edu.au@cunyvm.bitnet
 UUCP  : uunet!munnari.oz!cc.curtin.edu.au!SCHOLKOWS
-------------------------------------------------------------------------------
From: addison@pollux.usc.edu (Richard Addison)
Newsgroups: comp.sys.amiga.programmer
Subject: Yet Another SAS/C thread
Date: 30 Aug 1992 15:27:04 -0700
Organization: University of Southern California, Los Angeles, CA
NNTP-Posting-Host: pollux.usc.edu

I have a few questions I haven't seen asked about SAS/C version 6.

Does lmk still change all file names to lower case?  [This was actually
something fairly recent, like 5.10b but not 5.10a.]


Does the builtin memcmp() work in all cases?  It generally creates code
like this:

	bra.s	$2
$1:	cmp.b	(A0)+,(A1)+
$2:	dbeq	D0,$1

The problem that could occur is that the Zero condition flag could be
true before the branch instruction.  This would cause memcmp() to
report that the two regions of memory as being equal regardless of
reality.


Does cpr support debugging multiple tasks more reliably?  [I've worked
around the problems by detaching all but one task.]


Has the compiler/cpr bug with being unable to recognize some symbols
within some static functions been fixed?


On large executables, cpr could complain about invalid debugging
information.  Has this been fixed?


Do the cpr watch commands support the same sorts of display controls
as the dump commands?


Does cpr remember the size and placement of the informational windows
when you close and reopen them?


I've already sent in my order for the update, so these questions are
mostly for curiosity.  Thanks.


-- 
Richard

Newsgroups: comp.sys.amiga.programmer
From: chris@.IMD.Sterling.COM (Chris Olson)
Subject: Need help with GadTools....
Organization: Sterling Software
Date: Tue, 1 Sep 1992 13:55:13 GMT
X-Md4-Signature: aab2086f91ba494f7590562cec0cdf53

Greetings, and welcome to my problem...

I have been working on a program which is going to use a simple descriptive
text file to define the gadgets.  Everything is working just fine until I
get to the CreateGadgetA call, which fails.  I don't know why.  I've had the
program dump out the structures involved:

   Gadget creation failed.

   kind = 12 (STRING_KIND)
   struct NewGadget newgad = {
      ng_LeftEdge = 60
      ng_TopEdge = 10
      ng_Width = 160
      ng_Height = 12
      ng_GadgetText = "Name:"
      ng_TextAttr = 0x00279B54 { "topaz", 8, FS_NORMAL, FPF_ROMFONT }
      ng_GadgetID = 1
      ng_Flags = 0x00000001
      ng_VisualInfo = 0x002644EC
      ng_UserData = 0x00000000
   };
   tags {
      0x8008002D = 0x0027E720 "No Name"
      0x8008002E = 0x0000003C 60
      0x00000000
   };

   The only item of this structure that I have not verified is the VisualInfo,
but that had been used by my menu creation routines without any probelm.  Here's
the relevant code for the gadget creations:

   .
   .
   .
   struct Gagdet *gad;
   struct Gadget *glist = NULL;

   gad = CreateContext(&glist);
   if (gad == NULL) {
      fprintf(stderr, "Creation failed...\n");
      return NULL;
   }
   .
   .
   .
   gad = CreateGadgetA(kind, gad, &newgad, taglist);
   if (gad == NULL) {
      fprintf(stderr, "Gadget creation failed.\n\n");
      dump_newgad();
      dump_tags();
      return NULL;
   }
   .
   .
   .

Note that 'kind', 'newgad' and 'taglist' are static globals.

Anybody got a clue as to why this is failing on a regular basis, or maybe
a working example of a call to CreateGadgetA with a string_kind?  Any clues as
to what is happening?  Any help would be greatly appreciated.

		AtDhVaAnNkCsE,
			Chris Olson
--- 
    ____/    /           __/            chris@IMD.Sterling.COM
   /        __  /   __/   /    ___/
  /        /   /   /     /  ___  /      "It's intuitively obvious to the most
______/ __/ __/ __/   __/ ______/        casual observer..."