[net.micro.apple] Apple //e extended 80 col. card

ee163abs@sdccs7.UUCP (05/27/84)

I have an Apple //e with the Standard 80 col. card.  I am thinking of 
getting an extended 80 col. card and I would like to have some feedback
on which one I should buy.

By the way, as most of you know, the regular 80 col. card for the //e that Apple
makes is too slow to keep up with 1200 baud modem without a specialized driver
program.  Please indicate if you have any knowledge of how quick the 
card(s) are.

Thanks,
Ron Breger
(..sdcsvax!sdccs7!ee163abs)

james@umcp-cs.UUCP (06/01/84)

The standard //e Extended 80-col card is just
as slow as the regular 80-col card.

ags@pucc-i (Seaman) (06/06/84)

>  I talked with someone at Apple at Chicago Userfest who said he has
>  the new 80 col. ROM in his //e.  He didn't seem to think that it speeded
>  up display any.  I have a friend (a developer) who has the ROM who 
>  though it speeded
>  up scrolling.  My friend also said that turning off the
>  cursor speeds up display quite a bit (if you look at the ROM code you
>  see that the cursor is displayed twice for each character printed).

Why scrolling is slow:

   Turning the cursor on and off is not the problem.  That operation takes
only a few microseconds, and you have something like 8.3 milliseconds between
characters at 1200 baud.  Besides, when you scroll the screen you are only
worrying about the cursor twice (before and after), just as with any other
output operation to the screen.

   Let's do some arithmetic.  To scroll the screen on the Apple, you need
to pick up 1840 memory-mapped characters (23 rows, 80 columns) and move them
to new locations, after which you clear the 24th row to blanks.  At the
very least you need 1840 fetches, 1920 stores, and 1920 increment instructions.
On the 1.023-MHz 6502 you have already used up 5.5 milliseconds, which leaves
only 2.8 milliseconds for testing, branching, and recomputing base addresses
along the way. That certainly is not enough time for a "test and branch" after
every character.

It might actually be possible if you do some clever loop unrolling, but 
that is going to take up a LOT of ROM space and it only solves ONE of the 
problems you have to face in order to function at 1200 baud.  What are you
going to do about the BELL character, which chews up something like a 
tenth of a second in buzz loops, just to tweak the speaker occasionally?
What are you going to do about form feeds, or their cousins the "clear
to end of line" and "clear to end of screen" operations, or the "reverse 
scroll" operation?  The answer is NOT to write faster code.

The answer is to use interrupts, so that you can continue with your scrolling
operations and not have to worry about losing incoming characters.  You may
get a few characters behind while scrolling, but you catch up very quickly
when all you have to do is store characters into the text page.

Those bells sound a bit funny when they get interrupted enough times.
-- 

Dave Seaman			"My hovercraft is full of eels."
..!pur-ee!pucc-i:ags