[comp.sys.amiga.programmer] Short Hello World

jms@tardis.Tymnet.COM (Joe Smith) (05/06/91)

In article <1991May5.011748.11595@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>> OpenLib=-408
>> Output=-60
>> Write=-48
>>   jsr    OpenLib(a6)
>>   jsr    Output(a6)
>>   jmp    write(a6)
>
>You've managed, in a 15 line program, to include 3 "magic numbers"
>that are dependent on the release of dos.library, so that your code need
>not merely be reassembled for an operating system upgrade, but rewritten.

I was about to post an article saying "don't be absurd, Kent.  If
Commodore were to change the library offsets, existing binaries would
stop working, therefore the offsets are engraved in stone; they will
never change."

But then I remembered that some of them HAVE changed.  OpenLibrary used to
be -408, now it is -552.  Offset -408 is still supported, however, as
OldOpenLibrary.  Using the old definitions is works, the program won't get
the newest features.

>Doing the linker's job for it is _not_ a smart move, as the first
>three lines clearly demonstrate.

Using the most recent *.h or *.i files is just as good as letting the linker
get the definitions out of amiga.lib.
-- 
Joe Smith (408)922-6220 | SMTP: jms@tardis.tymnet.com or jms@gemini.tymnet.com
BT Tymnet Tech Services | UUCP: ...!{ames,pyramid}!oliveb!tymix!tardis!jms
PO Box 49019, MS-C51    | BIX: smithjoe | CA license plate: "POPJ P," (PDP-10)
San Jose, CA 95161-9019 | humorous dislaimer: "My Amiga 3000 speaks for me."

peterk@cbmger.UUCP (Peter Kittel GERMANY) (05/06/91)

In article <1991May4.134045.7550@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>In article <1200@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>>In article <1991May2.102554.8679@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>
>>>Ok, assembler strikes back with this: (56 codesize, 92 executable)
>>
>>Shame on you, you cheated! You do an OpenLib without a CloseLib!
>>Perhaps this explains the difference.
>>
>I did not! It's ok to close a disk-library, but DosLib is in ROM, and
>Closing it is the same as adding NOP's to the code. Anyway, with a
>closelib it will be 60/96 bytes. Still shorter!
>If you don't agree with me, reply in Amiga.programmer...

Well, we had a lengthy discussion on this in the German sub.sys.amiga
group. We came to the conclusion that it would really be dangerous!
Because, if your Amiga runs long enough and runs such programs in a
tight loop, the use counter of the library will be increased every time.
And, after *some* (:-) time, it will wrap around to zero. And, if it
happens that you have a tight memory situation just in this moment and
exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
but sure possible :-).

You see, there was a related discussion whether you should check for
success of opening dos.library (or which lib was it?) at all, because
theoretically you always will succeed. But also there it was concluded
that you better use the safe way.

-- 
Best regards, Dr. Peter Kittel  // E-Mail to  \\  Only my personal opinions... 
Commodore Frankfurt, Germany  \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk

kilian@cinnet.com (Kilian Jacob) (05/07/91)

From article <1804@tardis.Tymnet.COM>, by jms@tardis.Tymnet.COM (Joe Smith):
> In article <1991May5.011748.11595@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>>dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>> OpenLib=-408

[deleted]

> But then I remembered that some of them HAVE changed.  OpenLibrary used to
> be -408, now it is -552.  Offset -408 is still supported, however, as
> OldOpenLibrary.  Using the old definitions is works, the program won't get
> the newest features.
>
I think OldOpenLibrary() is used here on purpose. This way you can omit
the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
version (or higher) is need in this example using OldOpenLibrary is perfectly
ok -- saves 2 bytes!! :-)

-- /<ilian
-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

dvljrt@cs.umu.se (Joakim Rosqvist) (05/07/91)

In article <1205@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>In article <1991May4.134045.7550@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>In article <1200@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>>>In article <1991May2.102554.8679@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>>
>>>>Ok, assembler strikes back with this: (56 codesize, 92 executable)
>>>
>>>Shame on you, you cheated! You do an OpenLib without a CloseLib!
>>>Perhaps this explains the difference.
>>>
>>I did not! It's ok to close a disk-library, but DosLib is in ROM, and
>>Closing it is the same as adding NOP's to the code. Anyway, with a
>>closelib it will be 60/96 bytes. Still shorter!
>>If you don't agree with me, reply in Amiga.programmer...
>
>Well, we had a lengthy discussion on this in the German sub.sys.amiga
>group. We came to the conclusion that it would really be dangerous!
>Because, if your Amiga runs long enough and runs such programs in a
>tight loop, the use counter of the library will be increased every time.
>And, after *some* (:-) time, it will wrap around to zero. And, if it
>happens that you have a tight memory situation just in this moment and
>exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
>but sure possible :-).
>
>
Normally, I would take that as a flame, but my FlameCnt for the 
"Hello World" posting just wrapped around  :-)

/$DR.HEX$

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/08/91)

peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>In article <1991May4.134045.7550@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>In article <1200@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>>>In article <1991May2.102554.8679@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>>
>>>>Ok, assembler strikes back with this: (56 codesize, 92 executable)
>>>
>>>Shame on you, you cheated! You do an OpenLib without a CloseLib!
>>>Perhaps this explains the difference.
>>>
>>I did not! It's ok to close a disk-library, but DosLib is in ROM, and
>>Closing it is the same as adding NOP's to the code. Anyway, with a
>>closelib it will be 60/96 bytes. Still shorter!
>>If you don't agree with me, reply in Amiga.programmer...
>
>Well, we had a lengthy discussion on this in the German sub.sys.amiga
>group. We came to the conclusion that it would really be dangerous!
>Because, if your Amiga runs long enough and runs such programs in a
>tight loop, the use counter of the library will be increased every time.
>And, after *some* (:-) time, it will wrap around to zero. And, if it
>happens that you have a tight memory situation just in this moment and
>exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
>but sure possible :-).
>
>You see, there was a related discussion whether you should check for
>success of opening dos.library (or which lib was it?) at all, because
>theoretically you always will succeed. But also there it was concluded
>that you better use the safe way.
>
>-- 
>Best regards, Dr. Peter Kittel  // E-Mail to  \\  Only my personal opinions... 
>Commodore Frankfurt, Germany  \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk


not to mention that there is SOME RAM overhead for opening a library anyways,
if you happen to have all memory allocated and then try to open a library.. it
won't succeed, that is a MUCH more common occurance.  I think commodore should
DEFINATELY squelch this rumor that rom calls will always succeed.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

micja@ida.liu.se (Michael Jansson) (05/08/91)

In article <1205@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:

[Stuff deleted about small 'Hello'-programs]

>Well, we had a lengthy discussion on this in the German sub.sys.amiga
>group. We came to the conclusion that it would really be dangerous!
>Because, if your Amiga runs long enough and runs such programs in a
>tight loop, the use counter of the library will be increased every time.
>And, after *some* (:-) time, it will wrap around to zero. And, if it
>happens that you have a tight memory situation just in this moment and
>exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
>but sure possible :-).

That is not really true (unless I got it all backwards). A library will
stay resident until there is a shortage of memory AND the Expunge
function (every library has one), which is called when Exec attempts to
remove the un-used library, returns the segment of the library itself.
In other words - The library is only flushed if the library admits it,
which might not be the case for the ROM-based libraries (my guess is that
they are un-removable since they are never loaded with LoadSeg).

I have used this feature in a library of mine. The library will eat a lot
of memory, which can be returned to the system if needed.  I managed to do
this by writing a neat little garbage collector and put it where the
Expunge function should be. I also bookkeep the number of users of the
library separately, i.e. not in the library structure that Exec knows of,
so that Exec will be convinced that the library is unused when it is not.
So what will this give me? Exec will attempt to remove the library
whenever there is a shortage of memory which will result in a call to my
new Expunge function, that will return some memory without removing
itself, i.e. an automatic GC. It works too! (At least so far ;-).


[Other stuff deleted]

>-- 
>Best regards, Dr. Peter Kittel  // E-Mail to  \\  Only my personal opinions... 
>Commodore Frankfurt, Germany  \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk


--
##########################################################
#   Michael Jansson             |   \_/
#   Internet: mij@IDA.LIU.SE    |    V                   _|_
#   UUCP: uunet!liuida!mij      |    |    Absolut Software|
#   BITNET: mij@SELIUIDA        |   ~~~  

kilian@cinnet.com (Kilian Jacob) (05/09/91)

From article <1205@cbmger.UUCP>, by peterk@cbmger.UUCP (Peter Kittel GERMANY):
> In article <1991May4.134045.7550@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>In article <1200@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>>>In article <1991May2.102554.8679@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>>
>>>>Ok, assembler strikes back with this: (56 codesize, 92 executable)
>>>
>>>Shame on you, you cheated! You do an OpenLib without a CloseLib!
>>>Perhaps this explains the difference.
>>>
>>I did not! It's ok to close a disk-library, but DosLib is in ROM, and
>>Closing it is the same as adding NOP's to the code. Anyway, with a
>>closelib it will be 60/96 bytes. Still shorter!
>>If you don't agree with me, reply in Amiga.programmer...
> 
> Well, we had a lengthy discussion on this in the German sub.sys.amiga
> group. We came to the conclusion that it would really be dangerous!
> Because, if your Amiga runs long enough and runs such programs in a
> tight loop, the use counter of the library will be increased every time.
> And, after *some* (:-) time, it will wrap around to zero. And, if it
> happens that you have a tight memory situation just in this moment and
> exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
> but sure possible :-).
> 
To be exact: You'll have to call that program about 65000 times
(Library.OpenCnt is a UWORD.) and then wait for a low memory situation.
If you call that program 20 times a day, it'll take at least 10 years.
I think my A500 would die before that happenes.. :-)

> theoretically you always will succeed. But also there it was concluded
> that you better use the safe way.


Agreed.

-- /<ilian

-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (05/09/91)

In article <1205@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>In article <1991May4.134045.7550@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>In article <1200@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes:
>>>In article <1991May2.102554.8679@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>>
>>>>Ok, assembler strikes back with this: (56 codesize, 92 executable)
>>>
>>>Shame on you, you cheated! You do an OpenLib without a CloseLib!
>>>Perhaps this explains the difference.
>>>
>>I did not! It's ok to close a disk-library, but DosLib is in ROM, and
>>Closing it is the same as adding NOP's to the code. Anyway, with a
>>closelib it will be 60/96 bytes. Still shorter!
>>If you don't agree with me, reply in Amiga.programmer...
>
>Well, we had a lengthy discussion on this in the German sub.sys.amiga
>group. We came to the conclusion that it would really be dangerous!
>Because, if your Amiga runs long enough and runs such programs in a
>tight loop, the use counter of the library will be increased every time.
>And, after *some* (:-) time, it will wrap around to zero. And, if it
>happens that you have a tight memory situation just in this moment and
>exec flushes all unused libs: POOF! I admit, not an everyday scenario, 
>but sure possible :-).
>
>You see, there was a related discussion whether you should check for
>success of opening dos.library (or which lib was it?) at all, because
>theoretically you always will succeed. But also there it was concluded
>that you better use the safe way.
>
>-- 
>Best regards, Dr. Peter Kittel  // E-Mail to  \\  Only my personal opinions... 
>Commodore Frankfurt, Germany  \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk

Another note:

You probably want to also use a specific version number, especially if you
want to do 2.0 specific things.  For example, the 2.0 Dos library lets you
do SetFunction(), while the 1.3 doesn't.

--
****************************************************
* I want games that look like Shadow of the Beast  *
* but play like Leisure Suit Larry.                *
****************************************************

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/09/91)

In article <1991May7.001146.1830@cinnet.com> kilian@cinnet.com (Kilian Jacob) writes:
>
>I think OldOpenLibrary() is used here on purpose. This way you can omit
>the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
>version (or higher) is need in this example using OldOpenLibrary is perfectly
>ok -- saves 2 bytes!! :-)
>
>-- /<ilian
>--
>Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
>UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

    Certainly less code ... two bytes, but not faster since OldOpenLibrary()
    most likely just calls OpenLibrary() after loading a #0 into D0.

    sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
    instructions are both one word long.

					-Matt
--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/09/91)

kilian@cinnet.com (Kilian Jacob) writes:
>From article <1804@tardis.Tymnet.COM>, by jms@tardis.Tymnet.COM (Joe Smith):
>> In article <1991May5.011748.11595@zorch.SF-Bay.ORG> xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) writes:
>>>dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>>> OpenLib=-408
>
>[deleted]
>
>> But then I remembered that some of them HAVE changed.  OpenLibrary used to
>> be -408, now it is -552.  Offset -408 is still supported, however, as
>> OldOpenLibrary.  Using the old definitions is works, the program won't get
>> the newest features.
>>
>I think OldOpenLibrary() is used here on purpose. This way you can omit
>the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
>version (or higher) is need in this example using OldOpenLibrary is perfectly
>ok -- saves 2 bytes!! :-)
>
>-- /<ilian
>-- 
>Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
>UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian


But NOT guaranteed to continue to be supported.  they COULD remove
OldOpenLibrary in the next OS release.  They tell you not to use it.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

dvljrt@cs.umu.se (Joakim Rosqvist) (05/10/91)

>    sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
>    instructions are both one word long.
>
>					-Matt
Actually, it is slower. sub.l d0,d0 takes 8 cycles and moveq #0,d0 takes 4.

/$DR.HEX$

baxter_a@wehi.dn.mu.oz (05/11/91)

In article <1991May8.180919.8732@cinnet.com>, kilian@cinnet.com (Kilian Jacob) writes:
>> 
> To be exact: You'll have to call that program about 65000 times
> (Library.OpenCnt is a UWORD.) and then wait for a low memory situation.
> If you call that program 20 times a day, it'll take at least 10 years.
                          ^^^^^^^^^^^^^^

Lattice C used to always leave the library open and I got the count to 48 
in about 1/2 an hour. 

Many people leave their machines on for extended periods, often running
automatic macros than might run a function up to 10 times a second. 

I think the library should probably be closed.

Regards Alan

sschaem@starnet.uucp (Stephan Schaem) (05/11/91)

 And to add to sub.l Dn,Dn... Moveq is faster on the 68000 4 compared to
 8, 4 compared to 6 on a 68010, and same timing on a 68020...
 a word size sub on data registers is the same has clr.w... on all above
 680x0.

 Conclusion.Dont use sub.l dn,dn or sub.w dn,dn use moveq #0,dn and
 clr.w dn.... 

							Stephan.

kilian@cinnet.com (Kilian Jacob) (05/12/91)

Subject: Re: Short Hello World

>You miss the point, Kilian; the programs run the same, but if the jump
>table changes (another posting noted that the 400 is already a
>deprecated address for the old version of a superseded funcion), having
>the jump table constants hard coded in your program means you have to
>change your code for it to run again; using the ones the manufacturer
>supplies in the header files (I shouldn't have said linker, I had my
>mind on something Mike Schwartz said earlier), all you need to do is
>rerun the assembly, and you're up and running again.

>Yes, you're doing exactly the same thing the header file is doing, but
>that's just the point; _you_ are doing it, but you are not the one who
>controls where those jump points are located, so you should be using
>the mechanism that lets the "owner" of those values tell you what they
>are, and that is the names as defined in the appropriate include file.
>
>Kent, the man from xanth.
><xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

Ok - I see the point: If you use the .i files you would only have to reassemble
your program (using the *new* .i files).

Well, theoratically, you're right. In reality, though, there is no reason to
change (or interchange, to be excact) library vector offsets. The only
reason I see why OldOpenLibrary() one day might not have the offset -408 is
that Commdore dicided to get rid of it. In that case neither program (the
one that uses the .i files nor the one that doesn't) would work by simply
reassemblying it. In both cases you would have to insert a sub.l d0,d0
before the function call and use OpenLibrary() instead.
   This might happen in two case: Either Commodore runs out of
space in the Kickstart ROM and thus needs to get rid of obsolete functions
(rather small chances that they remove OldOpenLibrary() -- it only takes up
a couple of bytes.) or Commodore exceeds the limit of max. 5461 functions
per library (2^15 bytes / 6 bytes per offset). Well, howmany functions are
there in the current version of the exec.library? :-)

-- /<ilian


-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/13/91)

In article <1991May11.072139.781@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
> And to add to sub.l Dn,Dn... Moveq is faster on the 68000 4 compared to
> 8, 4 compared to 6 on a 68010, and same timing on a 68020...
> a word size sub on data registers is the same has clr.w... on all above
> 680x0.
>
> Conclusion.Dont use sub.l dn,dn or sub.w dn,dn use moveq #0,dn and
> clr.w dn....
>
>							Stephan.

    Uh, actually, you don't want to use CLR either if you can help it
    because CLR always *reads* the ea before writing a 0 to it.  This
    true all the way through 020's at least.

    For word operations it isn't too bad, but take a look at clr.l D0 ...
    6 cycles on a 68000.  MOVEQ is faster.  And on memory CLR.<anything>
    is horrific since it reads the memory location before writing it.

    Before people get huffy about CLR, please remember that Motorola has
    gotten CLR's instruction timings wrong in every other edition of
    their handbook.

				    -Matt

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

bart@asgard.pub.uu.oz.au (John Butcher) (05/13/91)

In article <dillon.7447@overload.Berkeley.CA.US>, Matthew Dillon writes:

>     sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
>     instructions are both one word long.

What you say is right, but the reasons behind it are worng.
Instruction length != instruction timing :
sub.l d0,d0 == 6 ( or is it 8 ?? )
moveq.l #0,d0 == 4

>     Matthew Dillon	    dillon@Overload.Berkeley.CA.US
>     891 Regal Rd.	    uunet.uu.net!overload!dillon
>     Berkeley, Ca. 94708
>     USA

-----------------------------------------------------------------------------
 John Butcher : bart@asgard.pub.uu.oz.au
                ..!munnari!eyrie.oz.au!asgard!bart
"To understand recursion you must understand recursion" - Andrew Koenig      

rbabel@babylon.rmt.sub.org (Ralph Babel) (05/13/91)

In article <dillon.7621@overload.Berkeley.CA.US>,
dillon@overload.Berkeley.CA.US (Matthew Dillon) writes:

> Uh, actually, you don't want to use CLR either if you can help it
> because CLR always *reads* the ea before writing a 0 to it.  This
> true all the way through 020's at least.

Only the 68000 and the 68008 are affected. BTW: Does DICE
offer an option to avoid the CLR instruction (e.g. on
volatile objects)?

Ralph

kilian@cinnet.com (Kilian Jacob) (05/14/91)

From article <4872@orbit.cts.com>, by chucks@pnet51.orb.mn.org (Erik Funkenbusch):
> kilian@cinnet.com (Kilian Jacob) writes:
[deleted]
>>I think OldOpenLibrary() is used here on purpose. This way you can omit
>>the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
>>version (or higher) is need in this example using OldOpenLibrary is perfectly
>>ok -- saves 2 bytes!! :-)
> 
> But NOT guaranteed to continue to be supported.  they COULD remove
> OldOpenLibrary in the next OS release.  They tell you not to use it.
>
Why why should they remove it? It only takes up a couple of bytes.

BTW: Who is 'they' ? Does *Commodore* say OldOpenLibrary should not be used?

-- /<ilian
 
-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

kilian@cinnet.com (Kilian Jacob) (05/14/91)

From article <dillon.7447@overload.Berkeley.CA.US>, by dillon@overload.Berkeley.CA.US (Matthew Dillon):
> In article <1991May7.001146.1830@cinnet.com> kilian@cinnet.com (Kilian Jacob) writes:
>>
>>I think OldOpenLibrary() is used here on purpose. This way you can omit
>>the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
>>version (or higher) is need in this example using OldOpenLibrary is perfectly
>>ok -- saves 2 bytes!! :-)
> 
>     Certainly less code ... two bytes, but not faster since OldOpenLibrary()
>     most likely just calls OpenLibrary() after loading a #0 into D0.
>
Yes, that's what I figured. But since you usually open the library just once
(within a program), speed isn't an issue.

>     sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
>     instructions are both one word long.
> 
> 					-Matt
Oops. Thanks for pointing that out.

-- /<ilian

-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

brett@visix.com (Brett Bourbin) (05/14/91)

In article <dillon.7621@overload.Berkeley.CA.US>, dillon@overload.Berkeley.CA.US (Matthew Dillon) writes:

|>     Uh, actually, you don't want to use CLR either if you can help it
|>     because CLR always *reads* the ea before writing a 0 to it.  This
|>     true all the way through 020's at least.

Doesn't this also introduce problems with the custom chips, since you can
say something like "clear the COPPER 1 STROBE" with the CLR.W cop1xxx(AX)
command.  This would read the register before writing the zero.  I am not
sure about the COPPER STROBE, but I know some write-only registers get
very picky when you try to read them.

|>     Matthew Dillon	    dillon@Overload.Berkeley.CA.US
-- 
                                __
  Brett Bourbin          \  / /(_  /\/   11440 Commerce Park Drive
    ..!uunet!visix!brett  \/ / __)/ /\   Reston, Virginia 22091
    brett@visix.com       Software Inc   (703) 758-2733

sschaem@starnet.uucp (Stephan Schaem) (05/14/91)

 Are you telling me that clr.w d0 dont take 4 cycle?!
 And If I use clr its when I dont want to modify any register and dont
 care about speed but size...


							Stephan.

markv@kuhub.cc.ukans.edu (05/14/91)

>> But NOT guaranteed to continue to be supported.  they COULD remove
>> OldOpenLibrary in the next OS release.  They tell you not to use it.
>>
> Why why should they remove it? It only takes up a couple of bytes.

Ehh, if you've listened to some of the discussion earlier, space in
the 512K ROMs is tighter than all getout.  So Commodore could very
well want to kill it.
 
> BTW: Who is 'they' ? Does *Commodore* say OldOpenLibrary should not be used?

Yes, it is officially "obsolete".  Besides, if you are happy with any
version of a library, just OpenLibrary("foo.library", 0L).  *And*
since you only open a library once per program, by the time you read
the executable off the disk, wait a few bazillion cycles for user
interaction, etc. I don't suspect the extra few cycles
make one bit of difference.
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Gooderum			Only...		\    Good Cheer !!!
Academic Computing Services	       ///	  \___________________________
University of Kansas		     ///  /|         __    _
Bix:	  mgooderum	      \\\  ///  /__| |\/| | | _   /_\  makes it
Bitnet:   MARKV@UKANVAX		\/\/  /    | |  | | |__| /   \ possible...
Internet: markv@kuhub.cc.ukans.edu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (05/15/91)

In article <1991May14.041050.20607@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
>
> Are you telling me that clr.w d0 dont take 4 cycle?!
> And If I use clr its when I dont want to modify any register and dont
> care about speed but size...
>
>
>							Stephan.

clr.w d0 takes 4 cycles, but clr.l d0 takes 6.
moveq.l #0,d0 takes 4 cycles.

--
****************************************************
* I want games that look like Shadow of the Beast  *
* but play like Leisure Suit Larry.                *
****************************************************

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/15/91)

In article <19216341.ARN0401@asgard.pub.uu.oz.au> bart@asgard.pub.uu.oz.au (John Butcher) writes:
>In article <dillon.7447@overload.Berkeley.CA.US>, Matthew Dillon writes:
>
>>     sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
>>     instructions are both one word long.
>
>What you say is right, but the reasons behind it are worng.
>Instruction length != instruction timing :
>sub.l d0,d0 == 6 ( or is it 8 ?? )
>moveq.l #0,d0 == 4

    Huh?  I said that sub.l D0,D0 is not faster than moveq.l #0,D0 on a
    68000 even though they are the same size.

    I NEVER said that instruction length == instruction timing.  In fact,
    my original statement says the exact reverse.

>-----------------------------------------------------------------------------
> John Butcher : bart@asgard.pub.uu.oz.au
>		 ..!munnari!eyrie.oz.au!asgard!bart
>"To understand recursion you must understand recursion" - Andrew Koenig

					-Matt

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/15/91)

kilian@cinnet.com (Kilian Jacob) writes:
>From article <4872@orbit.cts.com>, by chucks@pnet51.orb.mn.org (Erik Funkenbusch):
>> kilian@cinnet.com (Kilian Jacob) writes:
>[deleted]
>>>I think OldOpenLibrary() is used here on purpose. This way you can omit
>>>the moveq.l #0,d0 (or sub.l d0,d0 -- faster, I believe). Since no specific
>>>version (or higher) is need in this example using OldOpenLibrary is perfectly
>>>ok -- saves 2 bytes!! :-)
>> 
>> But NOT guaranteed to continue to be supported.  they COULD remove
>> OldOpenLibrary in the next OS release.  They tell you not to use it.
>>
>Why why should they remove it? It only takes up a couple of bytes.
>
>BTW: Who is 'they' ? Does *Commodore* say OldOpenLibrary should not be used?

Yes, "they" are commodore, and they have said not to use it for quite some
time.  ever since 1.2 i think, or was it 1.1?  i don't remember, but it is no
longer supported and NOT guaranteed to continue to be there.  supose they get
short on rom space for 3.0.. guess what will probably go, all the unsupported
functions.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

sschaem@starnet.uucp (Stephan Schaem) (05/15/91)

 Yea, like CBM will KILL all early software written for the amiga do
 win 8 bytes! (Hope people jok when they talk about CBM
 replacing/removing a library function )
 Oldopenlibrary is 'slower' and how cares about using 2 more byte of
 code to use OpenLibrary...?

							Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/15/91)

 Maybe I wasn't clear? I said moveq	#0,Dn and clr.w dn... (Or sub.w
 d0,d0, depand if you want to get that X condition code untouched or
 not)....
 The above to clear data register in .l and .w 'mode'.
 For Adress sub.l sub.w... Hope this clarify.

 Everybody has 680x0 timings! And hopefully know them by heart:-)


							Stephan.

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/16/91)

In article <07867.AA07867@babylon.rmt.sub.org> rbabel@babylon.rmt.sub.org (Ralph Babel) writes:
>In article <dillon.7621@overload.Berkeley.CA.US>,
>dillon@overload.Berkeley.CA.US (Matthew Dillon) writes:
>
>> Uh, actually, you don't want to use CLR either if you can help it
>> because CLR always *reads* the ea before writing a 0 to it.	This
>> true all the way through 020's at least.
>
>Only the 68000 and the 68008 are affected. BTW: Does DICE
>offer an option to avoid the CLR instruction (e.g. on
>volatile objects)?
>
>Ralph

    DICE only uses CLR in a few cases such as when pushing 0 on the stack
    (as a space optimization).  Beyond that, it never uses CLR except
    on registers sometimes.

					    -Matt
--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/16/91)

In article <1991May14.041050.20607@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
>
> Are you telling me that clr.w d0 dont take 4 cycle?!
> And If I use clr its when I dont want to modify any register and dont
> care about speed but size...
>
>
>							Stephan.

    CLR.W   D0	    ; 4
    CLR.L   D0	    ; 6
    MOVEQ   #0,D0   ; 4

    CLR.W   memory  ; 4+4+4=12	    (not incl. effective addr calc)
    CLR.L   memory  ; 4+8+8=20

    Remember, the 68000 handbook is *wrong*

					-Matt

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/16/91)

In article <1991May15.103610.12158@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:

    Yea, like CBM will KILL all early software written for the amiga do
    win 8 bytes! (Hope people jok when they talk about CBM
    replacing/removing a library function )

Nope, we're not joking. With 2.0, there are lots of replacements for
"old" library entries, and CBM is universally telling people not to
use the old version of the call.

Now, go down the road to the next major OS release (3.0?). Judging
from past experience, that's 5+ years away. That means that the only
correctly written software that would be broken by deleting the old
entries (or better - at least at that point - replacing them with an
error return) is five or more years old. That kind of software is
either 1) run by someone who's not fallen for the "have to have the
latest and greatest" trap, and so probably won't upgrade their OS, or
2) been orphaned for at least five years. The latter is part of life.

	<mike
--
When logic and proportion have fallen softly dead,	Mike Meyer
And the white knight is talking backwards,		mwm@pa.dec.com
And the red queen's off her head,			decwrl!mwm
Remember what the dormouse said.

sschaem@starnet.uucp (Stephan Schaem) (05/16/91)

 So should we expect to recompile our code every 5 years?! Because CBM
 will remove some function we used and dont support anymore!
 I cant beleive it even if it come from CBM :-)
 And the size 'excuse' is pretty funny when you think the major part of
 what is in ROM is written in C.

 And What 1.x calls CBM said not to use anymore because it might
 desapear?
 Dont you think they gave alternate function? Some people might NOT
 want to do 2.0 softare compatible only...


								Stephan.

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/16/91)

sschaem@starnet.uucp (Stephan Schaem) writes:
>
> Yea, like CBM will KILL all early software written for the amiga do
> win 8 bytes! (Hope people jok when they talk about CBM
> replacing/removing a library function )
> Oldopenlibrary is 'slower' and how cares about using 2 more byte of
> code to use OpenLibrary...?
>
>							Stephan.


Yes, commodore probably WILL eventually kill most code from early 1.0 days. 
who runs anything that hasn't been updated to at least 1.1?  very few people
do and only then for nostalgia reasons, witness a comment made several days
ago on this net about Mind Walker.  I think it's a good idea personally, they
are trying to phase out BCPL as well.  on day anything written with BPTR's
will not work either.  that's part of the reason commodore is pushing 2.0 so
hard, and why they AREN"T pushing backward 1.3 compatibility.  not just
because it's new, but when everyone's moved over to 2.0 they can kill ALOT of
old mistakes.  I don't think 1.3 compatibility should be an issue for the 3000
since they are now selling them hand over fist, if it doesn't work under 2.0
people won't buy it.  developers will quickly learn that they should follow
the rules.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

markv@kuhub.cc.ukans.edu (05/16/91)

>  So should we expect to recompile our code every 5 years?! Because CBM
>  will remove some function we used and dont support anymore!

Whoa!  This all was started in particular by a certain
OldOpenLibrary() call.  This function was obsolete with 1.2!!!!  (How
many here remember 1.1?  I even remember 1.0, sheese).  So
OldOpenLibrary() has been obsolete for about 3 years already.  And
other OSs make certain things eventually obsolete also.  How many
programs that were written for DOS 1.1 work these days (try not many).
OSs evolve, and sometimes you need to leave things behind to move to
the future.

>  I cant beleive it even if it come from CBM :-)
>  And the size 'excuse' is pretty funny when you think the major part of
>  what is in ROM is written in C.

Well, most of the ROM is actually in assembler because of size.  And
the specific example is admittidly a bit rediculous.  A more realistic
one is the support for BCPL in 2.0.  The new dos library has no BCPL, but
2.0 still supports it.  That support *is* taking a *lot* of code.

>  And What 1.x calls CBM said not to use anymore because it might
>  desapear?

Well, if you read the Autodocs there are functions that say OBSOLETE,
and tell you the new one to use instead.  This is pretty obvious to
me.  For 2.0, you'd should get rid of BCPLisms, and use the new calls
for one.  Also there are certain internal functions that Commodore has
said dont use ever that may go away (AlohaWorkbench() and Intuition()
come to mind).

>  Dont you think they gave alternate function? Some people might NOT
>  want to do 2.0 softare compatible only...
 
Well, if your using the OS, then it isn't hard to be 2.0 "aware" but
still work under 1.3.  Some of the things that are hacks under 1.3,
but supported under 2.0 are probably better off just done in 2.0, esp.
from the programmers point of view (hardware scrolling of Intuition
screens for instance). 

My net thought is, Follow the rules and things will work for a long
time.  Granted, (esp. pre 2.0) many things weren't possible with the 
rules, but they are still a hack, so by doing such things, your
accepting the possibility that youre on thin ice.

Also, if you've ever worked on other micro OSs, you wouldn't complain so
much.  The Mac OS has already been mentioned, but even DOS is bad.
The things you have to do to make TSRs *really* work, the epheremal
"List of Lists", hidden fields in the PSP,  the elusive DOS data
segment pointer (which can be used to make DOS reentrant, suprise!),
etc.  We have it easy.

> 								Stephan.
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Gooderum			Only...		\    Good Cheer !!!
Academic Computing Services	       ///	  \___________________________
University of Kansas		     ///  /|         __    _
Bix:	  mgooderum	      \\\  ///  /__| |\/| | | _   /_\  makes it
Bitnet:   MARKV@UKANVAX		\/\/  /    | |  | | |__| /   \ possible...
Internet: markv@kuhub.cc.ukans.edu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (05/17/91)

In article <1991May13.220559.11706@visix.com> brett@visix.com (Brett Bourbin) writes:
>In article <dillon.7621@overload.Berkeley.CA.US>, dillon@overload.Berkeley.CA.US (Matthew Dillon) writes:
>
>|>     Uh, actually, you don't want to use CLR either if you can help it
>|>     because CLR always *reads* the ea before writing a 0 to it.  This
>|>     true all the way through 020's at least.
>
>Doesn't this also introduce problems with the custom chips, since you can
>say something like "clear the COPPER 1 STROBE" with the CLR.W cop1xxx(AX)
>command.  This would read the register before writing the zero.  I am not
>sure about the COPPER STROBE, but I know some write-only registers get
>very picky when you try to read them.
>
>|>     Matthew Dillon	    dillon@Overload.Berkeley.CA.US
>-- 
>                                __
>  Brett Bourbin          \  / /(_  /\/   11440 Commerce Park Drive
>    ..!uunet!visix!brett  \/ / __)/ /\   Reston, Virginia 22091
>    brett@visix.com       Software Inc   (703) 758-2733

I've tested clr.w on the copper strobes and it works.  

--
****************************************************
* I want games that look like Shadow of the Beast  *
* but play like Leisure Suit Larry.                *
****************************************************

jsmoller@jsmami.UUCP (Jesper Steen Moller) (05/17/91)

In article <MWM.91May15151039@raven.pa.dec.com> mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
> 
> In article <1991May15.103610.12158@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
> 
>     Yea, like CBM will KILL all early software written for the amiga do
>     win 8 bytes! (Hope people jok when they talk about CBM
>     replacing/removing a library function )
> 
> Nope, we're not joking. With 2.0, there are lots of replacements for
> "old" library entries, and CBM is universally telling people not to
> use the old version of the call.

I don't think CBM would remove OldOpenLibrary, as programs written for
pre-1.2 should continue to work without recompilation if properly
designed. Also, as OldOpenLibrary is in the very middle of the exec.library
vector table (6 bytes) and probable does:
    moveq.l #$00,D0
    JMP     _LVOOpenLibrary(A6)

it would be plain silly to remove it - they could win only 6 bytes...
 
> Now, go down the road to the next major OS release (3.0?). Judging
> from past experience, that's 5+ years away. That means that the only
> correctly written software that would be broken by deleting the old
> entries (or better - at least at that point - replacing them with an
> error return) is five or more years old.

I think deleting or changing functions radically like above is rude
and in conflict with the original design. I can tolerate something
like GetScreenData() being "crippled" for 2.0 (I can see why, too...)
but making correctly written software malfuntion (except because of
new hardware, mabye) is more than I can take. I'd rather go back to
the C= 64 then - things didn't change back then...

> That kind of software is
> either 1) run by someone who's not fallen for the "have to have the
> latest and greatest" trap, and so probably won't upgrade their OS, or
> 2) been orphaned for at least five years. The latter is part of life.

Or 3) run by someone who written something really great but somehow
deleted the source and forgot the hexadecimal values of the 680x0
instructions (I still what the 6510 opcode $A2 was used for...)
 
> 	<mike

Jesper

--                     __
Jesper Steen Moller   ///  VOICE: +45 31 62 46 45
Maglemosevej 52  __  ///  USENET: cbmehq!cbmdeo!jsmami!jsmoller
DK-2920 Charl    \\\///  FIDONET: 2:231/84.45
Denmark           \XX/

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/17/91)

sschaem@starnet.uucp (Stephan Schaem) writes:
>
>
> So should we expect to recompile our code every 5 years?! Because CBM
> will remove some function we used and dont support anymore!
> I cant beleive it even if it come from CBM :-)
> And the size 'excuse' is pretty funny when you think the major part of
> what is in ROM is written in C.
>
> And What 1.x calls CBM said not to use anymore because it might
> desapear?
> Dont you think they gave alternate function? Some people might NOT
> want to do 2.0 softare compatible only...
>
>
>								Stephan.


no, OldOpenLibrary was a 1.0 call, in 1.1, or 1.2 it was replaced by
OpenLibrary and everyone has been told since to use that and NOT
OldOpenLibrary.  I think this is a prime example of commodore not effectivly
making it's point.  I think it will take something as drastic as following up
on all it's threats to convice people that there are good reasons why they
should follow the rules.  It's like a father threatening to spank a kid when
the kid KNOWS his father has never laid a hand on him.  This is the reason
that Most Mac programmers follow the rules closely because apple has all too
often pulled the carpet out from under them if they don't, course apple also
changes their rules too, but that's another story.  back to the point,
OpenLibrary is NOT a 2.0 only call.  it's perfectly acceptable in 1.2, and 1.3
and 2.0 which is the OS that 99.99999999% of all amiga users use. 
re-compiling your code every 5 years is called maintainance.  you can't expect
your programs to run forever, otherwise we're no better than MS-DOS machines.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

sschaem@starnet.uucp (Stephan Schaem) (05/18/91)

 Lets hope not! Lets hope they will optimize the rom instead of removing
 oldfunction.Or go to 1 meg if really needed!
 And the original OpenLibrary was a mistake from CBM and should have
 never been without vesion... And removing it or replacing it would be
 another mistake.
 Come on how short could they be to remove a function that take them 6
 bytes! (+6 for lib jump).
 Doesn't make ANY sens.
 What they could do (Without removing/repacing!) is to make function
 fail with corect FAIL return code. (That would not make OldOpenLibrary
 shorter!)
 And from what I heard they have extra code in 2.0 to support earlyer
 verion function, more easyer to beleive...

								Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/18/91)

 I dont remember saying clr MEM was faster... AndI will still use clr
 mem when I dont want to modify register.
 (Because its still faster).


							Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/18/91)

 If CBM start to say that they can remove old function its not what I
 think a 'good' move.What function will be next.
 I already said the OldOpenLibrary should have never existed, but
 now its there...
 I will beleive it when CBM start doing it.

 I never said exec or other are not in ASM, but I still beleive that
 most of the OS in from C.
 (Exec is the best part I have seen, and it would be good if the entire
 ROM was done this way.)

 I'm simply against removale of library function, for any reason.
 Something acceptable would be to leave the function but make then
 return FAIL code or 'do nothing'.
 Like making OldOpenLibrary alway return 'FALSE' (Bad example since
 there is no point doing it.).

 I have used the SGI graphics library (Very little, and very similare
 the the amiga :-) and from what I know all machine since the 4D
 series started there are all binary compatible... But might change from
 a MAJOR architecture desing change (Like for CBM).

							Stephan.

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/18/91)

In article <jsmoller.5278@jsmami.UUCP> jsmoller@jsmami.UUCP (Jesper Steen Moller) writes:
   > Nope, we're not joking. With 2.0, there are lots of replacements for
   > "old" library entries, and CBM is universally telling people not to
   > use the old version of the call.

   I don't think CBM would remove OldOpenLibrary, as programs written for
   pre-1.2 should continue to work without recompilation if properly
   designed. Also, as OldOpenLibrary is in the very middle of the exec.library
   vector table (6 bytes) and probable does:
       moveq.l #$00,D0
       JMP     _LVOOpenLibrary(A6)

   it would be plain silly to remove it - they could win only 6 bytes...

No, it's _not_ just six bytes. It's ~six bytes for _every_ backwards
compatable function. There's also all the code spent on supporting
various hacks. There's various things that support BCPL. Any piece of
it may be small, and can be justified just like the above. Taken as a
whole, it's _not_ small. Pulling any of it will break old code;
pulling all but OldOpenLibrary will probably break nearly everything.
Why leave in OldOpenLibrary for the small percentage that don't break
because of some of the other things?

   I think deleting or changing functions radically like above is rude
   and in conflict with the original design.

Rude? Yes - but it's not as rude as not doing OS updates because you
can't break old programs. In conflict with the original design?
Immaterial. There's a new design, and the people who control the code
think it's better (I agree, but that's also immaterial). If you like
the old design better than the new one, don't run the new version of
the OS. That way, _nothing_ breaks.

   > That kind of software is
   > either 1) run by someone who's not fallen for the "have to have the
   > latest and greatest" trap, and so probably won't upgrade their OS, or
   > 2) been orphaned for at least five years. The latter is part of life.

   Or 3) run by someone who written something really great but somehow
   deleted the source and forgot the hexadecimal values of the 680x0
   instructions (I still what the 6510 opcode $A2 was used for...)

That's orphaned code. Orphaned code is code with nobody who's willing
to fix bugs or make enhancements, and that's what you've just
described.

In article <1991May16.042906.4763@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:

    So should we expect to recompile our code every 5 years?! Because CBM
    will remove some function we used and dont support anymore!

No, you don't have to recompile your code every 5 years. You can
always opt not to upgrade to the new OS. Of course, for anything
non-trivial, some time during that five years you should have changed
the code to take advantage of the features of the new OS.

Me, I recompile with new compiler releases (unless it's in assembler,
of course), or when I upgrade processors (Hmm - I guess if you code in
largely in assembler, that doesn't win anything without a rewrite
anyway...).

    And the size 'excuse' is pretty funny when you think the major part of
    what is in ROM is written in C.

Yeah - we've just seen it demonstrated that the obvious C code is less
than 10% larger than hand-tweaked assembler code (check out the first
few notes under this subject) that provides the same functionality,
and _much_ smaller than untweaked-assembler. I guess CBM should spend
all their time tweaking assembler to make it smaller rather than
fixing bugs...

BTW, one of my critical applications is an orphan. If it hadn't run
under 2.0, I would have lost. If CBM breaks OldOpenLibrary, I may lose
(given the code quality, I probably don't, but I should check that).
And I'll still be plugging for OldOpenLibrary to go away. If
OpenScreen and OpenWindow go away, I'll lose. I'll still be pushing
for CBM to do that. I expect that all the people who've been crying
for demand paging or resource tracking or a protected environment will
also be doing so. Those broken eggs are the cost of the omelette they
want.

	<mike



--
I know the world is flat.				Mike Meyer
Don't try tell me that it's round.			mwm@pa.dec.com
I know the world stands still.				decwrl!mwm
Don't try to make it turn around.

bart@asgard.pub.uu.oz.au (John Butcher) (05/18/91)

In article <dillon.7675@overload.Berkeley.CA.US>, Matthew Dillon writes:

Matt>     sub.l D0,D0 is not faster than moveq.l #0,D0 on a 68000.  The two
Matt>     instructions are both one word long.

Me>       What you say is right, but the reasons behind it are worng.
( wrong even ;-)

Me>       Instruction length != instruction timing :
Me>       sub.l d0,d0 == 6 ( or is it 8 ?? )
Me>       moveq.l #0,d0 == 4

Matt>     Huh?  I said that sub.l D0,D0 is not faster than moveq.l #0,D0 on a
Matt>     68000 even though they are the same size.
Matt> 
Matt>     I NEVER said that instruction length == instruction timing.  In fact,
Matt>     my original statement says the exact reverse.


Ah ha, now I know what you ware getting at, it's all crytal clear, what I
understood the original 2 lines to mean were something along the lines of
"Instruction 1 is not faster than Instruction 2 because they are both 1 word
long, and hence the same speed", which is not what you meant ! - I dont
agree that your original comment meant exactly the opposite of what I said it
did however - it was not clear what you were saying about timing except that
sub.l is slower than moveq.l
Anyway, it isnt really important, since we both agree that length != time,
and sub.l is slower than moveq.l

-----------------------------------------------------------------------------
 John Butcher : bart@asgard.pub.uu.oz.au
                ..!munnari!eyrie.oz.au!asgard!bart
``Life!  Don't talk to me about life.''  -  Marvin the Paranoid Android      

sschaem@starnet.uucp (Stephan Schaem) (05/18/91)

 I dont see BPTR has mutch of a problem at ALL! (Well duplicate sructure
 take some place).
 Simply have 2 set of Dos routines, simply do the call and change APTR
 to BPTR... That will cost you a couple of byte ad backward
 compatability.
 And if you think that many software (Including part of the rom) are
 written in C, some LSR and LSL shouldn't be a problem.
 And if CBM dont support BPTR in dos structure and call, every single
 programe I use will BREAK! And I dont want that to happen.
 Same with Rom function, how many software do you think use OpenLibrary
 instead of OldOpenLibrayr...

 If all this is serious its a BIG mistake.

 Another thing about BPTR: I dont think BPTR are that mutch of a
 problem.Not a speed problem, and a gain if you think of C not a
 code size problem.

							Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/18/91)

 I will check about that code size... From the C code I ported from 
 the IRIS and them done in assembly they got 1000% smaller.
 and 400% faster. (Same algorithem in both version.)
 I was using lattice 4.0, but the C version used Printf... I will try
 with 5.1 and without printf.

 From what I saw of Lattice 5.1 I was impressed from the WB interface,
 but defenetly not from the generated code.
 Even from all that I will switch to C, not on the amiga but on a R3000
 based machine.

							Stephan

riley@THEORY.TC.CORNELL.EDU (Daniel S. Riley) (05/19/91)

In article <MWM.91May17124038@raven.pa.dec.com> mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
>BTW, one of my critical applications is an orphan. If it hadn't run
>under 2.0, I would have lost. If CBM breaks OldOpenLibrary, I may lose
>(given the code quality, I probably don't, but I should check that).
>And I'll still be plugging for OldOpenLibrary to go away. If
>OpenScreen and OpenWindow go away, I'll lose. I'll still be pushing
>for CBM to do that. I expect that all the people who've been crying
>for demand paging or resource tracking or a protected environment will
>also be doing so. Those broken eggs are the cost of the omelette they
>want.

What should CBM do with the LVOs for deleted functions?

I'd be in favor of CBM eventually deleting unused functions.  I'd be
opposed to CBM reusing those LVOs--reassigning LVOs would just lead to
massive confusion--in which case deleted functions would continue to
take up some space in the jump tables.

The obvious advantages are that the deleted functions could all be
pointed to a moveq #0,d0/move.l d0,a0/rts somewhere (or an alert
routine) so deleted functions would fail instead of invoking some
entirely different routine, and anyone who *really* wants to could
SetFunction() the routines in question back into some sort of
existence (for personal use only).

The obvious disadvantages are that it would take up some small amount
of space, and anyone who *really* wants to could SetFunction() the
routines in question back into some sort of existence (yes, I regard
this as an advantage *and* a disadvantage).

Comments?
-- 

-Dan Riley (riley@theory.tn.cornell.edu, cornell!batcomputer!riley)
-Wilson Lab, Cornell University

sschaem@starnet.uucp (Stephan Schaem) (05/19/91)

 This is not just a case of recompiling... The idea of having function
 deseapear is the problem.
 Because it doesn't involve recompiling but reprograming.
 An example would be with openwindow for example.
 In my libraries All my defined structed have (Like nodes)  Type/ID, 
 including structure version... That allow my friend to NEVER recompile
 his programes when ever I give him a new library version.
 Of course this is a very diferent environment, but those are the rules
 I beleive in.

 Just imagine (For the openwindow) that CBM removed it and put
 OpenWindowTagList instead! That's what I'm talking about...
 If This is a improvment and you say it should evolve, removing
 Openwindow is somthing logical?
 I cant really speak about that subject since I dont know mutch about
 those 2.0 function.(I know that taglist are an option, like library
 version...)

 I would prefere that CBM create a NEW OS based on the curent 2.0.

 Shouldn'y hurt more than removing all those function that CBM recomand
 bot to use anymore, like you say.


							Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/19/91)

 Leaving the 'removed' function on a disk based library is good things.
 If some have to be removed...
 But what do you think CBM will do? I still dont think they will do
 something like that.


								Stephan.

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/19/91)

In article <1991May18.172039.7477@batcomputer.tn.cornell.edu> riley@THEORY.TC.CORNELL.EDU (Daniel S. Riley) writes:

   What should CBM do with the LVOs for deleted functions?

Three phases:

	1) Version X.0: Announce "xyzzy is obsolete". It still works,
		but you shouldn't use it.
	2) Version (X+1).0: The Xyzzy enry now behaves as per:

   The obvious advantages are that the deleted functions could all be
   pointed to a moveq #0,d0/move.l d0,a0/rts somewhere (or an alert
   routine) so deleted functions would fail instead of invoking some
   entirely different routine, and anyone who *really* wants to could
   SetFunction() the routines in question back into some sort of
   existence (for personal use only).

Actually, you probably need two routines; there are some oddball
library entries that fail with -1. But that's the right idea.

	3) Version (x+2).0: the LVO for xyzzy is recycled.

Remember that version numbers are partially driven by marketing. These
are things at 5+ year intervals. The amiga hasn't been around long
enough for anything to have reached stage 3. OldOpenLIbrary is pretty
much the only thing that's reached stage 2. I can see holding off on
it until the stuff from the 1.x->2.0 conversion reaches stage 2,
though.

In article <1991May18.172039.7477@batcomputer.tn.cornell.edu> riley@THEORY.TC.CORNELL.EDU (Daniel S. Riley) writes:

    This is not just a case of recompiling... The idea of having function
    deseapear is the problem.

    Just imagine (For the openwindow) that CBM removed it and put
    OpenWindowTagList instead! That's what I'm talking about...


Gee, that's just a case of recompiling, assuming it's done right. All
CBM needs to do is add the line

#define	OpenWindow(x)	OpenWindowTagList(x, NULL)

to intution.h, and I can recompile my code without changing a line. So
can anyone else who's followd the rules.

    If This is a improvment and you say it should evolve, removing
    Openwindow is somthing logical?

Yup; some time during the next century.

    I would prefere that CBM create a NEW OS based on the curent 2.0.

You haven't been paying attention. They did. It's called AmigaDOS 2.0.
CBM also went to great lengths to make it backwards compatable with
the old OS.

    Shouldn'y hurt more than removing all those function that CBM recomand
    bot to use anymore, like you say.

No, it'll hurt a lot more. People are complaining about not being able
to get 2.0 now. Imagine how they'd feel if 2.0 were a "new" OS that
wasn't largely backwards compatable - that could well kill the Amiga.
Why should doing it now, rather than five years from now with
"NewADOS" of having an AmigaDOS 2.0 change that?

    In my libraries All my defined structed have (Like nodes)  Type/ID, 
    including structure version... That allow my friend to NEVER recompile
    his programes when ever I give him a new library version.

Admirable goal. How long have you been supporting those libraries? And
how long do you plan on supporting them? Since you got upset about
having to recompile your code every five years, I assume you've been
doing it for at least 10 years. That's starting to get almost
noticable. Get back to me in another 10, and let me know if the same
library is still in use, and whether you've changed it since. Also be
interested in knowing wether it's running on 10-year-old hardware or
not.

	<mike
--
He was your reason for living				Mike Meyer
So you once said					mwm@pa.dec.com
Now your reason for living				decwrl!mwm
Has left you half dead

jesup@cbmvax.commodore.com (Randell Jesup) (05/20/91)

In article <4852@orbit.cts.com> chucks@pnet51.orb.mn.org (Erik Funkenbusch) writes:
>not to mention that there is SOME RAM overhead for opening a library anyways,
>if you happen to have all memory allocated and then try to open a library.. it
>won't succeed, that is a MUCH more common occurance.  I think commodore should
>DEFINATELY squelch this rumor that rom calls will always succeed.

	Some libraries, including ROM libraries I believe, do allocations on
open.  Some even allocate entire new lib/device bases on open.  If you fail
to close them, you may lose valuable resources (and they can fail).  Even
if they don't currently allocate ram, they may tomorrow.

	Follow the rules and you won't get burned.  Work around the rules or
try to find loopholes in the rules and you will.

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.commodore.com  BIX: rjesup  
Disclaimer: Nothing I say is anything other than my personal opinion.
Thus spake the Master Ninjei: "To program a million-line operating system
is easy, to change a man's temperament is more difficult."
(From "The Zen of Programming")  ;-)

jesup@cbmvax.commodore.com (Randell Jesup) (05/20/91)

kes.2644@amiga0.SF-Bay.ORG>
Sender: 
Reply-To: jesup@cbmvax.commodore.com (Randell Jesup)
Followup-To: 
Distribution: 
Organization: Commodore, West Chester, PA
Keywords: 

In article <mykes.2644@amiga0.SF-Bay.ORG> mykes@amiga0.SF-Bay.ORG (Mike Schwartz) writes:
>In article <1991May13.220559.11706@visix.com> brett@visix.com (Brett Bourbin) writes:
>>Doesn't this also introduce problems with the custom chips, since you can
>>say something like "clear the COPPER 1 STROBE" with the CLR.W cop1xxx(AX)
>>command.  This would read the register before writing the zero.  I am not
>>sure about the COPPER STROBE, but I know some write-only registers get
>>very picky when you try to read them.

>I've tested clr.w on the copper strobes and it works.  

	Empirical programming, Mike!  Just because it works on your machine
doesn't mean it'll work on the machine someone down the street just bought,
let alone on the next generation of graphics chips.  When you read a write-
only register on a chip without a R/W line, it will latch a random value
from the bus.  This value may change from machine to machine, model to model,
or chip-rev to chip-rev.

	Stick to the guidelines - don't use clr on write-only registers.

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.commodore.com  BIX: rjesup  
Disclaimer: Nothing I say is anything other than my personal opinion.
Thus spake the Master Ninjei: "To program a million-line operating system
is easy, to change a man's temperament is more difficult."
(From "The Zen of Programming")  ;-)

sschaem@starnet.uucp (Stephan Schaem) (05/20/91)

 WRONG Solution! CBM will save 8 bytes of ROM space will every call
 you make will be 4 byte bigger.8 Byte once, 4 byte or more for each
 programe on your disk (and rom?)... What sound more logical?
 Keeping OpenWindow and save space EVERYWHERE or remove it and recompile
 every single programe written and making the ROM bigger and using more
 disk space (Small numbers of course).

 And speaking of my library, I dont have millions of people using it
 everyday... And I took the oportunity to trash all the path code for
 old structure version (The library is used for structure/object
 oriented programing.).
 And It might run on a Silicon Graphics before the end of the year, so
 it might surlly use a diferent hardware configuration. (And from that
 be able to port GUI programe from both system...)

 Anyway, this is just an idea that I dont like (Removing absolete
 library function).I really think it could be avoided with very little
 code (Like OldOpenLibrary, and the OpenWindow example).

 The 5 year I mentioned is an exageration:-) The best example I thinking
 of is CED.

								Stephan.

jayward@eecs.cs.pdx.edu (Jay Ward) (05/21/91)

riley@THEORY.TC.CORNELL.EDU (Daniel S. Riley) writes:

>What should CBM do with the LVOs for deleted functions?

>I'd be in favor of CBM eventually deleting unused functions.  I'd be
>opposed to CBM reusing those LVOs--reassigning LVOs would just lead to
>massive confusion--in which case deleted functions would continue to
>take up some space in the jump tables.

We're missing the point here totally...  I've heard it preached up and down
here on the net:  'Follow the rules!  If you follow the rules you won't get
burned'.  So now what do we want to do?  Trash all of the routines that we
shouldn't be using today, but were perfectly legal in yesteryear. Is this
the ultimate form of corporate hippocracy, or am I missing something?
Someone please enlighten me.

>-Dan Riley (riley@theory.tn.cornell.edu, cornell!batcomputer!riley)
>-Wilson Lab, Cornell University


----------------------------------------------------------------------------
Jay Ward --> jayward@eecs.cs.pdx.edu | Down : Seattle, Utah
      Live from the Rip City!        | To Go: L.A., Eastern Conf. Champs.
----------------------------------------------------------------------------

kilian@cinnet.com (Kilian Jacob) (05/21/91)

>In article <1991May11.211913.21863@cinnet.com> you write:
>>Well, theoratically, you're right. In reality, though, there is no reason to
>>change (or interchange, to be excact) library vector offsets. The only
>>reason I see why OldOpenLibrary() one day might not have the offset -408 is
>>that Commdore dicided to get rid of it. In that case neither program (the
>>one that uses the .i files nor the one that doesn't) would work by simply
>>reassemblying it. In both cases you would have to insert a sub.l d0,d0
>>before the function call and use OpenLibrary() instead.
>
>What you say may never happen has already happened the OpenLibrary
>vector used to point where OldOpenLibrary now points.  (Surprising,

Come on! :-) What I ment was changing the vector offset of a function and
using its original offset for a different function (or not using it at all).
In the case of OpenLibrary, the offset -408 performs the same action in all
OS version. (It doesn't matter whether it's called OpenLibrary (v1.0) or
OldOpenLibrary (v1.1+).)

>but this is where the "Old" comes from!)  But it was documented as
>doing what the new OpenLibrary does.  The new one was added rather
>than changing the existing vector so that existing binaries wouldn't
>fail.
>
>So the source for a program compiled into an old binary (where
>OpenLibrary pointed to OldOpenLibrary) would fail when OldOpenLibrary
>is deleted but would work if recompiled to use the new OpenLibrary
>vector.
>
Well, that depends on the program. The "hello word" program for example would
work in neither fashion (includes vs hard coded LVO's), because it doesn't
specify any version number.:

original short hello world source code:

	OpenLibrary equ -408
	..
	move.l $4,a6
	move.l #DOSBASE(pc),a1
	jsr OpenLibrary(a6)
	...
DOSBASE	dc.b "dos.library",0

This works under any OS version as long as the offset -408 points to the
OldOpenLibrary (version 1.0 OpenLibrary) function.

short hello world using include files:

include "dos/dos.i"
	...
	move.l $4,a6
	move.l #DOSBASE(pc),a1
	jsr _LVOOpenLibrary(a6)

This actually only works properly using the v1.0 include files, since the new
(v1.1+) OpenLibrary (-552) requires a version number in d0. (You would have
to do a moveq.l #0,d0 [or sub.l d0,d0] before you call OpenLibrary -- re-read
my original post. That's what I already wrote.) 

My point is that you can't substitute OpenLibrary (-552) for OldOpenLibrary
(-408) 100%, as you suggest. Thus, compatiblity is no reason to use include
files instead of hard coding LVO's. If you could use the new version without
modifying your source code (here: having to pass a second parameter), it
(new OpenLibrary) would still have the old offset (as it is true for newer
versions of other OS functions). In such case, obviously, whether to use
includes or hard code LVO's doesn't matter either.

>Also ROM space may not be the only reason for removing the
>OldOpenLibrary call.
>

Well, I also mentioned the size limitations of the Library jump table ;-)
-- what other reason are there?

Later,

-- /<ilian

-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

kilian@cinnet.com (Kilian Jacob) (05/21/91)

From article <1991May17.170132.23862@starnet.uucp>, by sschaem@starnet.uucp (Stephan Schaem):
> 
>  Lets hope not! Lets hope they will optimize the rom instead of removing
>  oldfunction.Or go to 1 meg if really needed!
>  And the original OpenLibrary was a mistake from CBM and should have
>  never been without vesion... And removing it or replacing it would be
>  another mistake.
>  Come on how short could they be to remove a function that take them 6
>  bytes! (+6 for lib jump).
>  Doesn't make ANY sens.
>  What they could do (Without removing/repacing!) is to make function
>  fail with corect FAIL return code. (That would not make OldOpenLibrary
>  shorter!)
>  And from what I heard they have extra code in 2.0 to support earlyer
>  verion function, more easyer to beleive...
> 
> 								Stephan.
-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

kilian@cinnet.com (Kilian Jacob) (05/21/91)

Subject: Re: Short Hello World
Newsgroups: comp.sys.amiga.programmer,alt.sources.amiga
References: <1991May17.170132.23862@starnet.uucp>

From article <1991May17.170132.23862@starnet.uucp>, by sschaem@starnet.uucp (Stephan Schaem):
> 
>  Lets hope not! Lets hope they will optimize the rom instead of removing
>  oldfunction.Or go to 1 meg if really needed!
>  And the original OpenLibrary was a mistake from CBM and should have
>  never been without vesion... And removing it or replacing it would be
>  another mistake.
>  Come on how short could they be to remove a function that take them 6
>  bytes! (+6 for lib jump).
>  Doesn't make ANY sens.

You're absolutely right. If they get rid of  OldOpenLibrary they probably save
6 bytes of ROM code and 6 bytes of used RAM. And that's only if they use the
offset -408 for a new exec function!!

I bet the ROM code of the exec.library looks about like this

...

Functions:
	dc.l	Open
	dc.l	Close
	dc.l	Expunge
	dc.l	ExtFunc
	...
	dc.l	OldOpenLibrary ; 4 bytes: address of the function in ROM
	...		       
	dc.l	OpenLibrary
	...

... 

OldOpenLibrary:
	moveq.l #0,d0 ; any version number -- this takes up two bytes
OpenLibrary:
	...           ; just continue using the new OpenLibrary code
	rts
...


Bis dann,

-- /<ilian
-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/21/91)

In article <1991May20.143242.10424@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:

Sorry, you're wrong. Code written for 2.0 should be using
OpenWindowTagList (or one of the stubs pointing to it), not
OpenWindow. The #define may make the code a few bytes bigger, but it
also makes it follow CBMs recommendations. Not following those
recommendations is what leads to code that breaks on the next release.

The #define is really a compatability hack, and I'd cram it into
something called "compat.h".

So, will your friend run his amiga binaries on the Iris? If not, then
what's the point of preserving the library entries between the two?
After all, you've got to recompile anyway.

	<mike
--
The sun is shining slowly.				Mike Meyer
The birds are flying so low.				mwm@pa.dec.com
Honey, you're my one and only.				decwrl!mwm
So pay me what you owe me.

peter@cbmvax.commodore.com (Peter Cherna) (05/22/91)

In article <MWM.91May21105143@raven.pa.dec.com> mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
>In article <1991May20.143242.10424@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
>Sorry, you're wrong. Code written for 2.0 should be using
>OpenWindowTagList (or one of the stubs pointing to it), not
>OpenWindow.

If you are losing any sleep over whether continuing to call OpenWindow()
is wrong now that OpenWindowTagList() exists, you're wasting your time.
I would tend to believe that (old) OpenWindow() will continue to exist for
a long time to come.

Just look, on balance, at what it costs to keep (old) OpenWindow()
[or OldOpenLibrary()] for that matter:

- code space (these are both tiny routines that call the modern replacements)
- code complexity (few ROM routines are this simple)
- possibility that an application depends on its existence (guaranteed
  for OpenWindow(), pretty high for OldOpenLibrary())

Benefit to Commodore for removing OpenWindow() or OldOpenLibrary():
	NEARLY NONE

Cost to Commodore for removing OpenWindow() or OldOpenLibrary():
	PRETTY SIGNIFICANT (wantonly breaking existing apps)

It doesn't take much to realize that when stuff is made obsolete,
it frequently means the new one is better, not that the old one
is going away, unless there's some compelling reason.

>	<mike

     Peter
--
Peter Cherna, Operating Systems Development Group, Commodore-Amiga, Inc.
{uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
"If all you have is a hammer, everything looks like a nail."

dillon@overload.Berkeley.CA.US (Matthew Dillon) (05/22/91)

In article <1991May20.143242.10424@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
> WRONG Solution! CBM will save 8 bytes of ROM space will every call
> you make will be 4 byte bigger.8 Byte once, 4 byte or more for each
> programe on your disk (and rom?)... What sound more logical?
> Keeping OpenWindow and save space EVERYWHERE or remove it and recompile
> every single programe written and making the ROM bigger and using more
> disk space (Small numbers of course).

    Look everyone, this discussion on OldOpenLibrary() and what Commodore
    may and may not do is great, but you are all building on rumor. NOBODY
    at C= has *EVER* said that old LVO's will go away.

    So nobody get huffy.

					-Matt

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

dvljrt@cs.umu.se (Joakim Rosqvist) (05/22/91)

In article <1991May21.030058.9972@cinnet.com> kilian@cinnet.com (Kilian Jacob) writes:
>
>Subject: Re: Short Hello World
>Newsgroups: comp.sys.amiga.programmer,alt.sources.amiga
>References: <1991May17.170132.23862@starnet.uucp>
>
>
>OldOpenLibrary:
>	moveq.l #0,d0 ; any version number -- this takes up two bytes
>OpenLibrary:
>	...           ; just continue using the new OpenLibrary code
>	rts
>
>-- /<ilian

Unfortunately, they are not as smart as you. They use:

OldOpenLibrary:
	  moveq.l #0,d0 
	  jsr     OpenLibrary(a6)
	  rts

6 bytes more than necessary!


/$DR.HEX$

--------------------------------------------
Email to:  dvljrt@cs.umu.se
2 Windows on the screen?  Oh no, not me.  I just Logout & Go.

m0154@tnc.UUCP (GUY GARNETT) (05/22/91)

>you can't expect your programs to run forever, otherwise we're no
>better than MS-DOS machines.

I should probably point out that under v1.xx of Ms-DOS, all disk
access was done through "FCB's"; ie: CP/M style File Control Blocks,
In general, programming FCB's was barely easier than doing direct BIOS
level disk I/O (in other words, a real pain).

When MicroSoft released v2.00, the mentioned that programmers should
no longer use the FCB based I/O routines, but should use the
file-handle oriented routines (which treat a file as a stream of
bytes, just like UNIX and AmigaDOS).

While I believe that FCB calls are still legal under Ms-DOS, many of
the more modern features of that operating system are not available to
FCB-based programs (features like subdirectories, for example).


Operating systems grow and change; old methods become obsolete as new
ways of doing things are developed.  An operating system which does
not grow and change this way becomes stagnant and then dies.  Programs
also have to grow and change, or they too will die.

Wildstar

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/22/91)

sschaem@starnet.uucp (Stephan Schaem) writes:
>
> Leaving the 'removed' function on a disk based library is good things.
> If some have to be removed...
> But what do you think CBM will do? I still dont think they will do
> something like that.
>
>
>								Stephan.


The point isn't weather they will or won't.  the point is that the old
functions are doing things that commodore doesn't want people doing any more. 
commodore has flagged them as obsolete and has told EVERYONE not to use them
anymore.  leaving the old functions in there, will just tell people it's ok to
use them.  it would be trivial to point all the old functions to a common
error return id, and suddenly none of the old code (or new code that people
chose to ignore commodore, "they wouldn't do that") works anymore.  take your
chances, but don't whine when it doesn't work anymore.

you've been warned people.

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/22/91)

jayward@eecs.cs.pdx.edu (Jay Ward) writes:
>riley@THEORY.TC.CORNELL.EDU (Daniel S. Riley) writes:
>
>>What should CBM do with the LVOs for deleted functions?
>
>>I'd be in favor of CBM eventually deleting unused functions.  I'd be
>>opposed to CBM reusing those LVOs--reassigning LVOs would just lead to
>>massive confusion--in which case deleted functions would continue to
>>take up some space in the jump tables.
>
>We're missing the point here totally...  I've heard it preached up and down
>here on the net:  'Follow the rules!  If you follow the rules you won't get
>burned'.  So now what do we want to do?  Trash all of the routines that we
>shouldn't be using today, but were perfectly legal in yesteryear. Is this
>the ultimate form of corporate hippocracy, or am I missing something?
>Someone please enlighten me.

It's called evolution.  you may see it as hipocracy, but the point is not that
software won't just suddenly break.  if you follow the rules, everything is
GUARANTEED to work for at LEAST one OS upgrade.  one OS upgrade is all you
should need to fix whatever has become obsolete.  following the rules is not
so that your program will work until the end of time, but it does mean that it
won't break on the next release of the os.

>
>>-Dan Riley (riley@theory.tn.cornell.edu, cornell!batcomputer!riley)
>>-Wilson Lab, Cornell University
.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

Charlie_Gibbs@mindlink.bc.ca (Charlie Gibbs) (05/22/91)

>6 bytes more than necessary!

     I wonder how many hundreds of kilobytes have passed through
the net arguing about six bytes.  Heck, I was seldom so concerned
even when I was programming 16K boxes!

     Lighten up, folks, and heed this warning: MS-DOS.

     That's what you wind up with when you become obsessed with
backward compatibility.  The 80x86 family is so horrible mostly
because Intel wanted an easy conversion from the 8080.  Hence its
segment registers and 64K (let alone 640K) limits.

     MS-DOS itself, being no more than a glorified CP/M, has
inherited its own share of warts (and I've discovered a lot of
them the hard way).

     It never ceases to amaze me that millions of people spend so
much time kludging their way around such a brain-damaged system.
What amazes me even more, though, is that they discuss such things
with a straight face, while denouncing other things that consume
a fraction of the time they spend on this stuff.

     I'd much rather have a couple of sloppily-written pieces of
software break five years from now -- and that only if the authors
don't clean up their act in the meantime -- than to have to carry
along a lot of excess baggage from the past.  Come on, guys, let
the Commodore folks continue to do what they're doing.  I'd rather
they did it their way then have another IBM/Intel/Microsoft fiasco.

Charlie_Gibbs@mindlink.bc.ca
Intel put the "backward" in "backward compatibility."

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/22/91)

In article <21779@cbmvax.commodore.com> peter@cbmvax.commodore.com (Peter Cherna) writes:
   If you are losing any sleep over whether continuing to call OpenWindow()
   is wrong now that OpenWindowTagList() exists, you're wasting your time.
   I would tend to believe that (old) OpenWindow() will continue to exist for
   a long time to come.

How long is "a long time to come"? Five years? Ten years? Until
development on the Amiga stops (which could well be shorter than the
previous two)? And why have CBM employees said that those writing 2.0
code shouldn't be shouldn't be using OpenWindow()?

   It doesn't take much to realize that when stuff is made obsolete,
   it frequently means the new one is better, not that the old one
   is going away, unless there's some compelling reason.

On the other hand, realizing what happens to systems that retain
compatability for everything that they ever supported takes looking at
one. I don't really recommend doing that; it's not a pretty sight.
Even trying to stay source-level backwards compatable while adding
modern features leads to odd things over the course of a decade.

Planning for the best implies assuming that some of the backwards
compatability hacks in 2.0 will vanish in the future. Once you assume
any of them will vanish, you might as well assume all of them will
vanish, and code accordingly.

Of course, it may be that you'll have an AmigaDOS with 20 years of
backwards compatability built into it. I won't - I'll have moved on to
a modern OS (one that's less than 15 years old) years before that.

	<mike
--
Il brilgue: les toves lubricilleux			Mike Meyer
Se gyrent en vrillant dans le guave,			mwm@pa.dec.com
Enmimes sont les gougebosqueux,				decwrl!mwm
Et le momerade horsgrave.

peter@cbmvax.commodore.com (Peter Cherna) (05/23/91)

In article <1991May22.132222.29285@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>Unfortunately, they are not as smart as you. They use:
>
>OldOpenLibrary:
>	  moveq.l #0,d0 
>	  jsr     OpenLibrary(a6)
>	  rts
>
>6 bytes more than necessary!

You think so?  What happens if someone SetFunction()s OpenLibrary()?
The way that "saves" 6 bytes means that OldOpenLibrary() doesn't
go through the SetFunction().  The "wasteful" way works perfectly,
and is REQUIRED for proper system operation.

I'd be careful who you call smart or not smart.  Smart isn't knowing
how to save six bytes.  Smart is knowing WHEN.

>Email to:  dvljrt@cs.umu.se

     Peter
--
Peter Cherna, Operating Systems Development Group, Commodore-Amiga, Inc.
{uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
"If all you have is a hammer, everything looks like a nail."

darren@cbmvax.commodore.com (Darren Greenwald) (05/23/91)

In article <1991May22.132222.29285@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>In article <1991May21.030058.9972@cinnet.com> kilian@cinnet.com (Kilian Jacob) writes:
>>
>>Subject: Re: Short Hello World
>>
>>OldOpenLibrary:
>>	moveq.l #0,d0 ; any version number -- this takes up two bytes
>>OpenLibrary:
>>	...           ; just continue using the new OpenLibrary code
>>	rts
>>
>>-- /<ilian
>
>Unfortunately, they are not as smart as you. They use:
>
>OldOpenLibrary:
>	  moveq.l #0,d0 
>	  jsr     OpenLibrary(a6)
>	  rts
>
>6 bytes more than necessary!
>
>
>/$DR.HEX$
>
What about ramlib which SetFunctions the OpenLibrary() vector so that
libraries can be opened off of disk (after dos is up, and running)?
It would require far more code to SetFunction both vectors than it
does to have OldOpenLibrary() jump through the OpenLibrary() vector.

d88-skl@dront.nada.kth.se (Stellan Klebom) (05/23/91)

In article <1991May22.132222.29285@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>Unfortunately, they are not as smart as you. They use:
>
>OldOpenLibrary:
>	  moveq.l #0,d0 
>	  jsr     OpenLibrary(a6)
>	  rts
>
>6 bytes more than necessary!
>
>
>/$DR.HEX$

Fortunatly they are smarter than you! ;) If it was done in any other way, then
the SetFuction() ability would be lost...

        Stellan

-------------------------------------------------------------------------------
Stellan Klebom         E-Mail: d88-skl@nada.kth.se, meLazy@lysator.liu.se

robart@agora.rain.com (Robert Barton) (05/23/91)

> Unfortunately, they are not as smart as you. They use:

> OldOpenLibrary:
>           moveq.l #0,d0 
>           jsr     OpenLibrary(a6)
>           rts

> 6 bytes more than necessary!

  Actually, it looks like they are smarter than both of you.  By using the
official function call method (jsr to an offset from a6) they are able to
handle the possibility that someone may have done a SetFunction() on the
OpenLibrary routine.  Having the OldOpenLibrary code just fall through to
the ROM OpenLibrary code wouldn't allow this.

peter@cbmvax.commodore.com (Peter Cherna) (05/23/91)

ommodore <MWM.91May22111829@raven.pa.dec.com>
Sender: 
Reply-To: peter@cbmvax.commodore.com (Peter Cherna)
Followup-To: 
Distribution: 
Organization: Commodore-Amiga, Inc.  West Chester, PA.
Keywords: 

In article <MWM.91May22111829@raven.pa.dec.com> mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) writes:
>How long is "a long time to come"? Five years? Ten years? Until
>development on the Amiga stops (which could well be shorter than the
>previous two)? And why have CBM employees said that those writing 2.0
>code shouldn't be shouldn't be using OpenWindow()?

If you're going to write 2.0-only code, you'll almost certainly
want to take advantage of what OpenWindowTags() has to offer.  But I'd
be surprised if anyone at CBM has recommended against using OpenWindow().
But, there are a lot of people working at CBM, and their words are
not policed, but their words are not policy either.

I'm not in a position to state policy, but I can tell you that I'd
be surprised if OpenWindow() stopped working between now and the
next significant upgrade of any major product.

>On the other hand, realizing what happens to systems that retain
>compatability for everything that they ever supported takes looking at
>one. I don't really recommend doing that; it's not a pretty sight.
>Even trying to stay source-level backwards compatable while adding
>modern features leads to odd things over the course of a decade.

You seem to be implying that maintaining compatibility is universally
damaging to the integrity of the system.  Whenever we consider having
to migrate people over to a new method, some thought is given to
how expensive it is to support the old method.  Plenty of compatibility
measures (even some that cover blatant application bugs) do not in
any way compromise the integrity, maintainability, or any other aspect
of the future of the system.  A well designed system such as the Amiga
is more resilient in that regard than older computers where things
like ROM-jumping was the norm.

>Planning for the best implies assuming that some of the backwards
>compatability hacks in 2.0 will vanish in the future. Once you assume
>any of them will vanish, you might as well assume all of them will
>vanish, and code accordingly.

Sure, some of the hacks may vanish.  However, a good example of a hack
that won't need to vanish is one Intuition routine (I forget which)
that explicitly preserves A1.  Why does it preserve A1?  Because it
turned out that under 1.3, A1 was unmodified, and some application assumed
that.  Well, that's a pretty serious application bug.  What does it cost
the OS to preserve A1?  Absolutely nothing (the code even came out to be
the same size).  I wouldn't bet my life that that kludge will remain in,
and I expect the affected developer to correct the mistake for his next
release.  But I wouldn't be sweating bullets if I owned and used that
application.

There are hacks in there which are considerably uglier, and have impact
on system performance, and those indeed risk vanishing over time.

However, support for OpenWindow() in 2.0 is not a hack.  OpenWindow()
is a well-defined entry point and has been since time immemorial.  We
certainly have a greater obligation to support defined features than
undefined side-effects.

And when you consider the implementation of OpenWindow(), it looks
something like this:

struct Window *OpenWindow( struct NewWindow *nw )
{
    struct TagItem *tlist = NULL;

    if ( nw->Flags & NW_EXTENDED )
    {
	tlist = ( ( struct ExtNewWindow * ) nw )->Extension );
    }
    return( OpenWindowTagList( nw, tlist ) );
}

Absolutely nothing in there compromises the future of the OS, and
the OS will not be left behind in the dust because of things like
this.  And it's still a viable thing to write code that works under
both 1.3 and 2.0.  Thus OpenWindow() is still very much a current
function.

For OldOpenLibrary(), the case is different.  Nobody NEEDS to use
OldOpenLibrary(), since nobody should still be running AmigaDOS 1.0.
So anybody that thinks they really _want_ to use OldOpenLibrary()
is just plain silly.  But worrying about whether it might vanish
any time soon is far sillier.

>Of course, it may be that you'll have an AmigaDOS with 20 years of
>backwards compatability built into it. I won't - I'll have moved on to
>a modern OS (one that's less than 15 years old) years before that.

Please trust us to chart a successful future for AmigaDOS.  We
do have half a clue as to what can stay and what needs to go to
keep AmigaDOS up-to-date, fun and efficient to use and program.

>	<mike

     Peter
--
Peter Cherna, Operating Systems Development Group, Commodore-Amiga, Inc.
{uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
"If all you have is a hammer, everything looks like a nail."

sschaem@starnet.uucp (Stephan Schaem) (05/23/91)

 I think I said that I have removed all the 'support' structure code
 because the library just split and is changing: making it a new
 librarys...
 I wont run 680x0 binary file on a MIPS RISCS, but is interested in
 doing a 68000->R3000 'converter'.(I still want to programe with a macro
 assembler with motorola instruction set instead of C :-)
 Only my low level library functions are doing hardware call, and
 use only exec (Transparent to the software).And after the library is
 ported and the 68000->R3000 is done (No promesse:-) I should have ZERO
 problem to port code I write from both machine fully ussing a GUI...

 Also , for me, not using the GFX library dont let me stuck with the
 curent 'limitation'.
 I could write anther set of the GFX function for a 24 bit device, and
 actually open screens on any video device supported by the library.
 (CBM could do the same, but will they do it....)


								Stephan.

mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/23/91)

In article <21825@cbmvax.commodore.com> peter@cbmvax.commodore.com (Peter Cherna) writes:

   I'm not in a position to state policy, but I can tell you that I'd
   be surprised if OpenWindow() stopped working between now and the
   next significant upgrade of any major product.

So would I. I was talking about OpenWindow (and the like) possibly
going away in > 5 years time. At this point, unless you're doing
2.0-only software, I'd expect people to use OpenWindow and the
appropriate flag bits so they can get tags. However, I also expect
that sometime between now and the next major release from CBM this
will change, as most software will become "2.0-only".

   >On the other hand, realizing what happens to systems that retain
   >compatability for everything that they ever supported takes looking at
   >one. I don't really recommend doing that; it's not a pretty sight.
   >Even trying to stay source-level backwards compatable while adding
   >modern features leads to odd things over the course of a decade.

   You seem to be implying that maintaining compatibility is universally
   damaging to the integrity of the system.

I don't know about universally. I've just never seen anyone manage to
both 1) migrate to a clean implementation of a new design and 2)
maintain a high degree of backwards compatibility. AmigaDOS isn't old
enough to have real problems yet. I'd rather not see it get into such
problems.

   A well designed system such as the Amiga
   is more resilient in that regard than older computers where things
   like ROM-jumping was the norm.

Fortunately, I've managed to avoid all those systems where ROM-jumping
was anything more than a non-portable hack by people who didn't know
better. Even if you protect the OS so people can't read/write it, 20
years of compatability code adds up. In the worst cases, it
reverberates through the entire system. In the best, it adds weight to
the OS for no other puprose than supporting old code.

Given time and a fanatical devotion to backwards compatibility, you
get to the point where you breaking binaries causes people to consider
someone else's hardware, as the cost of buying new hardware is trivial
compared to the cost of upgrading and/or recompiling old applications.

   Sure, some of the hacks may vanish.  However, a good example of a hack
   that won't need to vanish is one Intuition routine (I forget which)
   that explicitly preserves A1.  Why does it preserve A1?  Because it
   turned out that under 1.3, A1 was unmodified, and some application assumed
   that.  Well, that's a pretty serious application bug.  What does it cost
   the OS to preserve A1?  Absolutely nothing (the code even came out to be
   the same size).

In the curernt implementation, it costs absolutely nothing (assuming
the source is in assembler; if it's in C, there are probably
contortion made to avoid stomping on A1). What happens when you want
to replace all the data structures with a spiffy new thing that was
published in '95, and discover you really want that extra register.

   However, support for OpenWindow() in 2.0 is not a hack.  OpenWindow()
   is a well-defined entry point and has been since time immemorial.  We
   certainly have a greater obligation to support defined features than
   undefined side-effects.

I never said it was. I said that it was tagged as obsolete, may go
away in the future, and that a CBM employee had recommended that it
not be used.

   For OldOpenLibrary(), the case is different.  Nobody NEEDS to use
   OldOpenLibrary(), since nobody should still be running AmigaDOS 1.0.
   So anybody that thinks they really _want_ to use OldOpenLibrary()
   is just plain silly.  But worrying about whether it might vanish
   any time soon is far sillier.

Um - why is OldOpenLibrary _now_ any different from OpenWindow in the
1995, or whenever the next major release after that (i.e. - the one
with a major design revamp, the latets fad in UIs added, and lots of
tools to make programmer easier) comes out?

What started this was people saying "OldOpenLibrary will never go
away, so it's safe to use." I disagree - CBM has never promised us
that old library entries wouldn't go away. I happen to think that
making them go away at the right time (see other articles in this
thread) is good for the OS. The attitude expressed in that quote will
prevent them from going away, by encouraging applications that use
them.

   Please trust us to chart a successful future for AmigaDOS.  We
   do have half a clue as to what can stay and what needs to go to
   keep AmigaDOS up-to-date, fun and efficient to use and program.

As if I had a choice. I either do that, or choose another OS.

	<mike
--
Look at my hopes,					Mike Meyer
Look at my dreams.					mwm@pa.dec.com
The currency we've spent,				decwrl!mwm
I love you. You pay my rent.

dvljrt@cs.umu.se (Joakim Rosqvist) (05/23/91)

>>Unfortunately, they are not as smart as you. They use:
>>
>>OldOpenLibrary:
>>	  moveq.l #0,d0 
>>	  jsr     OpenLibrary(a6)
>>	  rts
>>
>>6 bytes more than necessary!
>
>You think so?  What happens if someone SetFunction()s OpenLibrary()?
>The way that "saves" 6 bytes means that OldOpenLibrary() doesn't
>go through the SetFunction().  The "wasteful" way works perfectly,
>and is REQUIRED for proper system operation.
>
>I'd be careful who you call smart or not smart.  Smart isn't knowing
>how to save six bytes.  Smart is knowing WHEN.
>

Alright, but they could at least use:

OldOpenLibrary:
	  moveq   #0,d0
	  jmp     OpenLibrary(a6)



/$DR.HEX$

--------------------------------------------
Email to:  dvljrt@cs.umu.se
2 Windows on the screen?  Oh no, not me.  I just Logout & Go.

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (05/24/91)

dillon@overload.Berkeley.CA.US (Matthew Dillon) writes:
>In article <1991May20.143242.10424@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>>
>> WRONG Solution! CBM will save 8 bytes of ROM space will every call
>> you make will be 4 byte bigger.8 Byte once, 4 byte or more for each
>> programe on your disk (and rom?)... What sound more logical?
>> Keeping OpenWindow and save space EVERYWHERE or remove it and recompile
>> every single programe written and making the ROM bigger and using more
>> disk space (Small numbers of course).
>
>    Look everyone, this discussion on OldOpenLibrary() and what Commodore
>    may and may not do is great, but you are all building on rumor. NOBODY
>    at C= has *EVER* said that old LVO's will go away.

Right, but the original point being made was that when commodore says you
shouldn't use a vector anymore, you shouldn't use it.  despite weather you
think commodore will or won't take it away, the point being that once they are
made obsolete commodore can do anything it wants with them, and nobody who
continues to use them has a right to bitch if something DOES happen.  Like i
said someday cbm probably will remove some things, for instance they've
already removed a whole library.  the clist.library from 1.0.  all programs
using that are now broken.  the precedent is there, but people still choose to
ignore it.  "naw, commodore will continue to always support MY code." is the
basic thoughts..

>
>    So nobody get huffy.
>
>					-Matt
>
>--
>
>    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
>    891 Regal Rd.	    uunet.uu.net!overload!dillon
>    Berkeley, Ca. 94708
>    USA

.--------------------------------------------------------------------------.
| UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks | "I know he's come back |
| ARPA: crash!orbit!pnet51!chucks@nosc.mil        | from the dead, but do  |
| INET: chucks@pnet51.orb.mn.org                  | you really think he's  |
|-------------------------------------------------| moved back in?"        |
| Amiga programmer at large, employment options   | Lou Diamond Philips in |
| welcome, inquire within.                        | "The First Power".     |
`--------------------------------------------------------------------------'

jesup@cbmvax.commodore.com (Randell Jesup) (05/24/91)

In article <4969@orbit.cts.com> chucks@pnet51.orb.mn.org (Erik Funkenbusch) writes:
>The point isn't weather they will or won't.  the point is that the old
>functions are doing things that commodore doesn't want people doing any more. 
>commodore has flagged them as obsolete and has told EVERYONE not to use them
>anymore.

	In some cases this is more true than others.  An example of something
that may NOT be supported "forever" is Forbid-locking the Dos device list.
Forbid-locking of that list is and always has been broken.  Under 2.0, the
new functions do Forbid/Permits for compatibility, but they include the
warning that that may well go away in some future major release.  The time
from now to then gives everyone a chance to get ready and upgrade.  There's
no guarantee that we'll remove the Forbid/Permit when we say it's no longer
a supported practice, but don't count on that.

>you've been warned people.

	Another idea we've had on the back burner for at least the last 3
years is the infamous "sysmung" version of the system for developers.  This
would be a version with all the cruelty toys like mungwall built in, extensive
parameter error checking, and with all kludges removed and restrictions
enforced.  Who want's to bet their software will pass it?  (actually, with
enforcer, mungwall, and memoration probably a LOT more than would have a year
ago).  This would be way too slow and large for general use, however.

	If someone has time burning a hole in their pockets, it'd be fairly
easy to do subsets of this for specific libraries/etc.

-- 
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.
"No matter where you go, there you are."  - Buckaroo Banzai

sschaem@starnet.uucp (Stephan Schaem) (05/25/91)

 The point is, what is supported now might not be supported in the
 future... So you follow CBM rules but you still get scewed up.
 Myself I dont beleive CBM will do it, its to stupid.

 CBM done something wrong with the original OpenLibrary, ok...
 And its going nowhere projecting what CBM will do with those kind of
 library function!

							Stephan.

sschaem@starnet.uucp (Stephan Schaem) (05/25/91)

 Still, jsr follow by an rts is whatever you want to call it:-)
 Remind me of forth functions... Anyway if CBM dont want to support
 oldopen they could have done it some time ago, but imagine the mess!


							Stephan.,

riley@theory.TC.Cornell.EDU (Daniel S. Riley) (05/26/91)

In article <1991May23.055836.8362@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
> I wont run 680x0 binary file on a MIPS RISCS, but is interested in
> doing a 68000->R3000 'converter'.(I still want to programe with a macro
> assembler with motorola instruction set instead of C :-)

This should be reallll interesting...

If you ever do write this 'converter', I recommend doing a few benchmarks.
Unless you spend a lot of time working on optimization, I suspect you'll
find that a decent C compiler/optimizer beats your converted 68000 code by
a fair margin.  The MIPS C compiler knows all about the cpu pipelining,
instruction overlaps, register scoreboarding, branch delay slots, and on
and on.  Will your converter?

-- 

-Dan Riley (riley@theory.tc.cornell.edu, cornell!batcomputer!riley)
-Wilson Lab, Cornell University

sschaem@starnet.uucp (Stephan Schaem) (05/27/91)

 Why not?
 If I wanted to write in C I wouldn't even think of doing this...
 I know C is fast, I played with it on a IRIS 4D GT.
 I think also its something very interesting, I should get a machine
 around september and see from then.
 I dont know enought about the IP7 and above to think about
 multiprocessing, but I wouldn't miss instruction overlap and have
 plan in the design for concurent code execution.

 I think of the Motorola instruction/addressing has a language like any
 other...

 I hope I will be able the continue on that subject in a few month!


							Stephan.

m0154@tnc.UUCP (GUY GARNETT) (05/28/91)

>> doing a 68000 -> R3000 'convertor' ...
> find that a decent C compiler/optimizer beats your converted 68000
> code by a fair margin.

Of course, you could have the convertor emit C code so that the R3000
optimizer could work on it.  Not a perfect solution, but it would
work.

Wildstar

kilian@cinnet.com (Kilian Jacob) (05/29/91)

From article <1991May22.221820.4348@nada.kth.se>, by d88-skl@dront.nada.kth.se (Stellan Klebom):
> In article <1991May22.132222.29285@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes:
>>Unfortunately, they are not as smart as you. They use:
>>
>>OldOpenLibrary:
>>	  moveq.l #0,d0 
>>	  jsr     OpenLibrary(a6)
>>	  rts
>>
>>6 bytes more than necessary!
>>
>>
>>/$DR.HEX$
> 
> Fortunatly they are smarter than you! ;) If it was done in any other way, then
> the SetFuction() ability would be lost...
>

The questions is whether you want OpenLibary changed via SetFunction()
affect OldOpenLibrary(), too. I think the answer is no. To me it makes more
sense to change OldOpenLibrary itself if you want it to change.

-- /<ilian
 
-- 
Kilian Jacob - Cincinnati, Ohio - VOICE: (513)-489-1891
UUCP: kilian@cinnet.com or {uceng.uc.edu, ukma!spca6, uunet!sdrc}!cinnet!kilian

sschaem@starnet.uucp (Stephan Schaem) (05/29/91)

 I'm not doing that for speed :-) A 33mhz R3000 can wait some extra
 cycle and the heavy stuff will be handle by the GFX engines...
 Their board work fine on a PC, driven by an intel! YEUK! To bad its not
 available for the amiga :-(
 All that I know is, its going to be fun to port my amiga GUI to the SGI
 series... And thats all my looking for, Fun :-)

							Stephan.

peter@cbmvax.commodore.com (Peter Cherna) (05/29/91)

In article <1991May29.040700.16292@cinnet.com> kilian@cinnet.com (Kilian Jacob) writes:
>The questions is whether you want OpenLibary changed via SetFunction()
>affect OldOpenLibrary(), too. I think the answer is no. To me it makes more
>sense to change OldOpenLibrary itself if you want it to change.

The answer is yes, OldOpenLibrary() needs to be affected by any SetFunction()
of OpenLibrary(), because it's supposed to be equivalent to
OpenLibrary(library,0L).  In every normal Amiga system, OpenLibrary()
is SetFunction()ed, because Exec doesn't know about loading disk-based
libraries.  A module called ramlib comes along after Dos is running
and takes care of that extra job by SetFunction()ing OpenLibrary()
and OpenDevice().

>-- /<ilian

     Peter
--
Peter Cherna, Operating Systems Development Group, Commodore-Amiga, Inc.
{uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
"If all you have is a hammer, everything looks like a nail."