home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / sys / amiga / programm / 15908 < prev    next >
Encoding:
Internet Message Format  |  1992-11-16  |  5.4 KB

  1. Path: sparky!uunet!wupost!uwm.edu!rutgers!cbmvax!peter
  2. From: peter@cbmvax.commodore.com (Peter Cherna)
  3. Newsgroups: comp.sys.amiga.programmer
  4. Subject: Re: New hardware reference guide?
  5. Message-ID: <37062@cbmvax.commodore.com>
  6. Date: 16 Nov 92 14:37:23 GMT
  7. References: <37026@cbmvax.commodore.com> <1992Nov15.153046.4994@imada.ou.dk>
  8. Reply-To: peter@cbmvax.commodore.com (Peter Cherna)
  9. Organization: Commodore-Amiga, Inc.  West Chester, PA.
  10. Lines: 99
  11.  
  12. In article <1992Nov15.153046.4994@imada.ou.dk> breese@monet.imada.ou.dk (Bjoern Reese) writes:
  13. >In article <37026@cbmvax.commodore.com> chrisg@cbmvax.commodore.com (Chris  
  14. >Green) writes:
  15. >> In article <1992Nov13.083504.58455@qut.edu.au> podesta@qut.edu.au writes:
  16. >> >Come on now!! How many advanced system software, that was written on a
  17. >> >1.3 A500 with no harddrive will work on a A4000???
  18. >>     A LOT.
  19. >
  20. >Ahhh! But not all? That's interesting.
  21. >
  22. >Does anybody have any info (what software did break, and what
  23. >was the possible cause?)
  24.  
  25. Sure.  There are lots of reasons stuff that ran under 1.3 on A500's
  26. breaks on the A4000.  Here is a partial list, off the top of my head:
  27.  
  28. - Breaks under ECS or higher (writing to chip registers that were
  29.   undefined under the original chipset, writing non-zero values
  30.   to reserved bits of existing registers, failing to handle non-zero
  31.   values in reserved bits when reading existing registers)
  32. - Breaks under AA or higher (same basic kinds of reasons, also
  33.   making bad assumptions about the chipset)
  34. - Breaks with fast RAM installed (forgetting to request MEMF_CHIP
  35.   when necessary)
  36. - Breaks on a 1MB chip-RAM system with no fast RAM (assumes if memory
  37.   > 512K, then some MEMF_FAST must be available).
  38. - Breaks on a 2MB chip-RAM system with no fast RAM (eg. A1200).  Same
  39.   reason as above.
  40. - Breaks on 68020 and up, 68030 and up, or 68040 and up.  The usual
  41.   reasons are:
  42.     - Software timing-loops or other processor speed dependencies
  43.     - Use of "MOVE SR" instruction (priviledged on 68010)
  44.     - Self-modifying code fails to work due to presence of caches
  45.       (depending on the code path and cache size, you might work
  46.       on the 020 and 030 but not the 040, for example)
  47.     - Use of high 8 bits of address pointer to store type-data
  48.       (all Amiga pointers must be 32-bit accurate)
  49.     - Has an enforcer hit (this is generally fatal on 68040 and up)
  50. - Breaks due to dependency on undocumented side-effect of the OS.  Some
  51.   examples:
  52.     - Depending on certain registers defined as "trash" actually
  53.       being preserved across a function call.
  54.     - Assuming values of "trash" registers, eg. "noticing" that
  55.       A1 points to the RastPort on the return from a certain
  56.       graphics call.
  57.     - Taking the return code from the wrong register (eg. D1 or A0).
  58.     - Depending on "slowness" of the OS.  New releases often have
  59.       faster routines, and one source of problem is a race condition
  60.       or a missing WaitBlit() that you survive only by virtue of
  61.       having a slower CPU or an older (less optimized) OS.
  62.     - Poking read-only members of structures or private structures
  63.       (eg. writing to IntuitionBase)
  64.     - Passing the wrong flag to a function or a structure.  (The
  65.       best example of this is placing the IDCMP flag ACTIVEWINDOW
  66.       into the NewWindow.Flags field by mistake.  V35 added a NewWindow
  67.       flag with that numeric value.  This caused massive enforcer hits
  68.       and software death -- we put in a kludge to protect against this
  69.       case).
  70.     - Passing non-zero values in reserved fields (eg. BitMap->Pad byte).
  71. - Breaks due to "abuse of system".  Examples include:
  72.     - Incorrectly or incompletely taking over the system
  73.     - Not using system-supplied mechanisms (one application
  74.       "knew" that under 1.3, audio.device was third (or whereever, it
  75.       doesn't matter what the exact position was) on the device list.
  76.       Rather than call OpenDevice(), it just took the third device
  77.       pointer.
  78.     - Assuming the ROM size or location.  (jumping to the start of the
  79.       ROM in order to reset the computer amounts to jumping to middle
  80.       of the ROM now that the ROM is 512K large).
  81.     - We have well-defined requirements on floppies, as far as
  82.       the settle-times, track-to-track times, etc.  Some programmers
  83.       empirically determine that they can shave (say) 3 ms off every
  84.       seek.  Not all drives sold for the Amiga can handle this.
  85.     - Similarly, violating the timing and handshaking requirements
  86.       of the keyboard.
  87.  
  88. There are plenty of other reasons, but these are a pretty good sampling.
  89. Virtually _all_ of these were addressed in some form or other, even
  90. in the original 1.0 RKMs.
  91.  
  92. In fairness, you have to add to the list such OS-related problems as:
  93. - Changes in poorly-defined areas of the system.  Occasionally, the
  94.   exact behavior of a function changes due to the fact that we are
  95.   unaware how certain non-documented or under-documented aspects
  96.   have been used in the field.
  97. - Accidental changes in behavior of a system function.  Sometimes
  98.   in extending, enhancing, or speeding up a function, a small behavioral
  99.   aspect might be altered.  If this aspect was part of the function's
  100.   definition, then that would consitute a bug.  If not, then it
  101.   may not technically be a bug, but it can kill software.
  102.  
  103. >Bjoern Reese                   |     Email: breese@imada.ou.dk
  104.  
  105.      Peter
  106. --
  107. Peter Cherna, User Interface Development Group, Commodore-Amiga, Inc.
  108. {uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
  109. My opinions do not necessarily represent the opinions of my employer.
  110. "I believe it's bad luck to be superstitious."
  111.