home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / sys / apple2 / 20438 < prev    next >
Encoding:
Text File  |  1992-09-14  |  5.2 KB  |  91 lines

  1. Newsgroups: comp.sys.apple2
  2. Path: sparky!uunet!sun-barr!ames!data.nas.nasa.gov!mustang.mst6.lanl.gov!nntp-server.caltech.edu!toddpw
  3. From: toddpw@cco.caltech.edu (Todd P. Whitesel)
  4. Subject: Re: Accelerator stuff
  5. Message-ID: <1992Sep15.093106.13133@cco.caltech.edu>
  6. Sender: news@cco.caltech.edu
  7. Nntp-Posting-Host: punisher
  8. Organization: California Institute of Technology, Pasadena
  9. References: <1992Sep10.032455.4825@wl.com> <1992Sep13.085028.20950@pro-palmtree.socal.com> <1992Sep13.210815.27707@news.iastate.edu> <1992Sep14.041304.7483@cco.caltech.edu> <mattd-140992122917@city-lights.apple.com>
  10. Date: Tue, 15 Sep 1992 09:31:06 GMT
  11. Lines: 78
  12.  
  13. mattd@apple.com (Matt Deatherage) writes:
  14.  
  15. >The Zip's "timers-only" system means you can't be sure your timing-sensitive
  16. >code works correctly unless you hit a softswitch that triggers a timer in
  17. >the code at the appropriate intervals, or unless you explicitly turn off
  18. >the Zip.  Either way requires modifying existing timing-sensitive code, and
  19. >this was not a good idea.
  20.  
  21. Matt, you alone are able to take the engineering principle behind something and
  22. make it sound like it's the fundamental problem with it. AppleTalk and ProTerm
  23. (and imitation FTA demos, but they don't count) are the only things that really
  24. had problems, and then only at higher speeds that nobody had until Zip was
  25. about to ship the ZipGS. If Zip had added the SCC to their list of 5ms delays,
  26. none of this would ever have come up. But at the time, NO testing uncovered any
  27. problems, and Zip very reasonably wanted to accelerate interrupt processing
  28. as much as possible.
  29.  
  30. >The TWGS's "AppleTalk/IRQ" option slows down to Control Panel speed (2.5 or
  31. >1 MHz) whenever interrupts are disabled.  This has the advantage of making
  32. >_all_ timing sensitive code work as advertised, because anyone writing
  33. >timing-sensitive code knew they had to disable interrupts already.
  34.  
  35. Okay, but there is a lot of code that disables interrupts that really ought
  36. to be accelerated. Ask the GNO folks how much IRQ processing overhead the IIgs
  37. has and you'll get retching noises for an answer.
  38.  
  39. >It might slow down somewhat, but it's a darn sight better than Zip's
  40. >"AppleTalk delay" which slows the accelerator down about 30% of the time
  41. >(5 ms for every interrupt, incluing the 60 Hz VBL interrupt, which means
  42. >a minimum of 300 ms slowdown every second).  It also wouldn't have forced
  43.  
  44. Zip has never tried to hide the fact that the AppleTalk delay was a last
  45. minute kludge to make things work. 7 mhz is the first speed at which problems
  46. with AppleTalk show up, and Zip says that all their beta testing had to be
  47. done at 6.25 mhz (just like AE) because WDC could not deliver faster parts
  48. until shortly before they shipped. I figured this out the hard way (i.e. using
  49. my new Zip with the Caltech AppleTalk network) and Zip read me the necessary
  50. programmers' info over the phone so I could start working on a fix. The first
  51. version of ZipTalk only worked up to about 9mhz/32K, but the last version
  52. (which should be cleared on GEnie by the time you read this) works PERFECTLY.
  53. The whole point of ZipTalk was to eliminiate any need for the "AppleTalk Delay"
  54. and its performance hit.
  55.  
  56. >Apple to waste time rewriting the internal LocalTalk code to be speed
  57. >dependent at 1 MHz instead of 2.5 MHz, requiring more patch memory on ROM
  58. >3 and time that could have been spent on more productive things.
  59.  
  60. The LocalTalk code should have been 1-mhz based in the FIRST place. Apple
  61. warns developers not to write code that is timing dependent at 2.5 mhz;
  62. the least Apple can do is write code that follows its own guidelines. Besides,
  63. it couldn't cost _that_ much in engineering time unless the source was totally
  64. screwed up. Just looking at it with Orca/Disassembler and an SCC manual I was
  65. able to pinpoint the primary patch locations and the majority of the loop
  66. constants. With the actual source I don't think it would have taken ME very
  67. long at all, so it had to be EASY for somebody at Apple unless the guy who
  68. wrote the original code was a _complete_moron_ and I can't believe _that_.
  69.  
  70. >(And no, ZipTalk alone or the code I wrote that did the same thing and
  71. >sent to Zip a long time ago wouldn't have fixed it -- LocalTalk has to
  72. >send a "clear to send" packet as soon as it sees a "ready to send"
  73. >packet, and that's all done in the interrupt handler without dispatching
  74. >to the LAPRead or LAPWrite commands -- and patching out the interrupt
  75. >vector to slow down before doing it is not supportable or feasible due
  76. >to extreme AppleTalk timing constraints.)
  77.  
  78. What LAPRead command? $e1/20 does that. ZipTalk intercepts it (VRN #8) with:
  79.     LDA $E0C0FC    ;slot 7 is set to Normal speed (it can also use 6)
  80.     JMP $02AEFD    ;typical value, this passes to the original handler
  81. This adds 9 cycles (1 slow) to the AppleTalk IRQ manager and disables the Zip
  82. for 50 milliseconds, more than long enough for an entire LLAP packet. You may
  83. have noticed that not only is fully disabling the Zip too slow to do here, but
  84. that any attempt to get the 5.0.4 AppleTalk manager to return control via the
  85. IRQ manager convention documented in the IIgs Firmware Ref will FAIL if a
  86. packet is received -- so there is no point in doing that anyway because you
  87. cannot get control back without totally rearranging the stack (ick).
  88.  
  89. Todd Whitesel
  90. toddpw @ cco.caltech.edu
  91.