[A83] Re: Graph Buffer
[Prev][Next][Index][Thread]
[A83] Re: Graph Buffer
I am using the _line and _ipoint because I didn't know there where other
(simple) ways of doing this.
With simple I mean things like across the screen diagonally, which as far as
I know isn't possible when you set certain bits of the screen, for example
with direct input where it is possible to set 8 pixels at one time but not
diagonally. (right?)
Therefor it would be great for me if you could re-post you're fastline
routine, so I can learn as much as possible.
It would then also be great if you could add comment's so I can track how it
is working, if that isn't a problem for you at least
Don't worry about giving credit because I WILL !!! :)
>From: "Dan Englender" <dan@calc.org>
>Reply-To: assembly-83@lists.ticalc.org
>To: <assembly-83@lists.ticalc.org>
>Subject: [A83] Re: Graph Buffer
>Date: Thu, 16 Aug 2001 16:47:43 -0400
>
>
>"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
> >
> >
> >
> >
> >
>
>
>
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp