[A83] Re: Graph Buffer


[Prev][Next][Index][Thread]

[A83] Re: Graph Buffer




"I'm pretty sure than Dan borrowed that routine [fastline] from somewhere
else, and perhaps made a few alterations"
...*grumble* You think I would borrow someone's routine and not give them
credit?  Of course I wrote fastline (with no borrowing involved).  Anyhow, I
think I posted the routine somewhere before, and it's not really any better
than the other released ones, but I can dig it up if necessary.

Really though, for many cases, the built-in TIOS routines will work just
fine (and fast enough).  I suggest that whoever it was (long thread by now)
who was wondering just try the TIOS ones.  Only afterwards, if there's speed
problems, go hunting for other routines.

-Dan Englender

----- Original Message -----
From: <Jkhum98@aol.com>
To: <assembly-83@lists.ticalc.org>
Sent: Thursday, August 16, 2001 3:11 PM
Subject: [A83] Re: Graph Buffer


>
> The _IPoint and _ILine routines of the TI-OS are quite slow, compared to
> routines written by other programmers for the purpose of gaining speed.
This
> is most likely achieved with optimized integer math and bit operations,
since
> perhaps the TI-OS uses some floating point math for its point and line
> functions.
>        ION's getpix routine will let you pass an x and y pixel coordinate
for
> the screen as parameters in A and E, respectively, and return to you the
byte
> on plotsscreen in HL, and the bit for that pixel, set in A. After getpix,
you
> can do "or (hl) / ld (hl), a" to set the bit, "xor (hl) / ld (hl), a" to
> invert the bit, and "CPL / and (hl) / ld (hl), a" to clear the bit. If you
> don't want to program for ION at the moment, to access the library routine
> from there, I'm sure that you can borrow the short source code to the
routine
> and put it in your program, with proper credit given. I always give credit
> for those library routines.
>        There have been some Fastline routines written that are available,
> probably at ticalc somewhere. I don't really understand how they function
> internally, but usually the inputs are just HL and DE for (x1,y1) and
> (x2,y2), but don't quote me on that, and several of the routines may be
> different in their input. But the output is the same; it goes to
plotsscreen
> directly. Some routines even do clipping of the lines at the edges of the
> screen. MirageOS has a nice fastline routine available for programmers,
and
> I'm pretty sure than Dan borrowed that routine from somewhere else, and
> perhaps made a few alterations and extensions such as "fastlinewhite",
> "fastlinexor", stuff like that. Maybe he can tell you where it came from,
or
> we can post the routine.
>        I've written a nice filled rectangle routine that does bit shifting
of
> bytes in several loops with byte masks and such; However, it is optimized
for
> speed and not size, so its about 200 bytes; something that most programs
> might not want to include in their source directly, but that we had space
for
> in MirageOS. This routine is made as an alternative to doing a loop of
lines,
> so it works sequentially in bytes rightwards/downwards in the graph
buffer,
> instead of doing individual pixels as fastline does. I've been told that
it
> has a bug somewhere when using a particular coordinate, so I will have to
> solve that before MirageOS v2.0. But besides that I could post it if you
> want. Hope this info helps, cya.
>
> -Jason Kovacs
>
>
> In a message dated 8/16/01 11:48:24 AM Central Daylight Time,
> typerfuture@hotmail.com writes:
>
>
> > AHA!!! I'll try that, thank you very very much !!!
> >
> > Just a small question arises though, you say "...if you want the TI-OS
to
> > draw points and lines..." implying there are other (better?) ways to
> > drawing
> > lines and points. Are there any ??? (I'm (currently) not using ION)
> >
> >
> >
> >
> >
> > >From: Jkhum98@aol.com
> > >Reply-To: assembly-83@lists.ticalc.org
> > >To: assembly-83@lists.ticalc.org
> > >Subject: [A83] Re: Graph Buffer
> > >Date: Wed, 15 Aug 2001 15:00:56 EDT
> > >
> > >In a message dated 8/15/01 11:45:46 AM Central Daylight Time,
> > >typerfuture@hotmail.com writes:
> > >
> > >
> > > > I know that the _grbufcpy_v romcall copy's from the graph buffer to
the
> > > > screen, but how can I write to the Graph-buffer in the first place?
> > > >
> > > > After looking at a program in AsmGuru I thought it was a mode-flag
with
> > > > textwrite (don't know the exact syntax anymore) and I tried this but
it
> > > > didn't seem the make any difference to the program...
> > >
> > >When using Vputs-type romcalls, you can do "SET textwrite,
(IY+sGrFlags)"
> > >to
> > >have that small-font text be written to the graph buffer, and then copy
> > >plotsscreen to the LCD with _grbufcpy_v (named _grbufcpy for the 83+).
If
> > >you want to use TI-OS romcalls to draw points and lines with _IPoint
and
> > >_ILine and such, then you do "RES plotloc, (IY+plotflags)" to have
those
> > >pixels be set to plotsscreen also. You must Reset textwrite before
> > >returning
> > >to the TI-OS or else it wont render correctly in some places, but
plotloc
> > >doesnt seem to matter if its Set/Reset upon leaving. If you are using
> > >common
> > >routines like ION's putsprite, largesprite, and getpix, those will all
work
> > >with the buffer and not send any data to the LCD until you call
_grbufcpy.
> > >
> > >-Jason Kovacs
>
>
>
>
>





References: