Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!columbia!rutgers!sri-spam!sri-unix!hplabs!pyramid!decwrl!sun!imagen!atari!dyer From: dyer@atari.UUcp (Landon Dyer) Newsgroups: net.micro.atari16 Subject: Re: Bug in GEMDOS (was TVX bug) Message-ID: <438@atari.UUcp> Date: Thu, 9-Oct-86 22:14:02 EDT Article-I.D.: atari.438 Posted: Thu Oct 9 22:14:02 1986 Date-Received: Sat, 11-Oct-86 21:05:11 EDT References: <402@unmvax.UUCP> Organization: Atari Corp., Sunnyvale CA Lines: 43 Keywords: The real story (console I/O in GEMDOS) The real culprit is what I would refer to as a "semi-circular" buffer in GEMDOS's character I/O routines. When you read with Cconin(), you must read ALL the characters that are available before using Cconout() or Cconws(). If you don't, the buffer will overflow and cause a crash. (The program at the end of this posting demonstrates the problem quite dramatically). The BIOS has no such problem. My philosophy is (and always has been) to avoid the GEMDOS console, aux and printer functions, and go directly to the BIOS. > /* > * holdkey --- semi-circular buffer test > * > * Test: > * Run it. Hold down RETURN until auto-repeat starts. Keep > * holding RETURN down. The system should crash (the exact > * exception varies). > * > * Status: > * Fixed. > * > */ > #include > > main() > { > for (;;) > { > Cconws("Keep holding RETURN down. A crash should happen soon.\r\n"); > Cconin(); > } > } -- -Landon Dyer, Atari Corp. {sun,lll-lcc,imagen}!atari!dyer /-----------------------------------------------\ | The views represented here do not necessarily | "If Business is War, then | reflect those of Atari Corp., or even my own. | I'm a Prisoner of Business!" \-----------------------------------------------/