A83: Re: Check this Pixel Routine. =)


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

A83: Re: Check this Pixel Routine. =)




Just a minor change, everything else looks like it should work though.
Sorry about not responding sooner, I just don't much time lately.

Joe Wingbermuehle
http://www.usmo.com/~joewing/

----- Original Message -----
From: <Jkhum98@aol.com>
To: <assembly-83@lists.ticalc.org>
Sent: Saturday, December 19, 1998 6:35 PM
Subject: A83: Check this Pixel Routine. =)


>
>I put together this Routine that plots a Pixel to the Graph Buffer.  The
>purpose I had in "writing" it was to utilize the GetPix Routine that is in
>ZLIB. I do not take much credit for it because Joe did the hard part in
>writing GetPix, but I wanted to Organize this so that a value could be
>inputted to make it either plot the pixel White, plot it Black, or XOR
it...
>Can somebody look over it and see it will actually work?  Also, somebody
give
>suggestions on a better way to do this, but keep in mind this is the path I
>want to take because I like programming for SOS and wanted to make use of
that
>Library Routine. Thanks in advance for any responses... =)
> --Jason K.
>
>;------------------------------------------- ;
>; SOS Pixel Plotting Routine - By Jason K. ;
>;------------------------------------------- ;
>; Input:  D = X,  E = Y,  C = Pixel Color. ;
>; (0-Clear,  1-Plot,  2-XOR Pixel). ;
>; Output: Pixel is Plotted to Graph Buffer. ;
>;------------------------------------------- ;
>
>PIXEL:
> push de ; Save the Coordinates
> ld a, c ; Load this to check which Color
> cp 0
> call z, PIXEL_WHITE
> cp 1
> call z, PIXEL_BLACK
> cp 2
> call z, PIXEL_XORIT
> pop de ; Retrieve Coords for other Routines
> ret
>
>PIXEL_WHITE:
> ld a, d ; 'a' now has X Coordinate
> call GETPIX ; Call the Pixel Routine from ZLIB

  cpl  ; compliment output so that we have a pixel mask

> AND (hl) ; 'AND' to clear pixel
> ld (hl), a ; Write the new byte to Graph Buffer
> ld a, 0 ; Reload this for use with the CPs above
> ret
>
>PIXEL_BLACK:
> ld a, d ; 'a' now has X Coordinate
> call GETPIX ; Call the Pixel Routine from ZLIB
> OR (hl) ; 'OR' to plot pixel
> ld (hl), a ; Write the new byte to Graph Buffer
> ld a, 1 ; Reload this for use with the CPs above
> ret
>
>PIXEL_XORIT:
> ld a, d ; 'a' now has X Coordinate
> call GETPIX ; Call the Pixel Routine from ZLIB
> XOR (hl) ; 'XOR' to toggle pixel
> ld (hl), a ; Write the new byte to Graph Buffer
> ret ; No need to reload A, done with CPs.
>
>
>*NOTE* here is the Information for the GetPix Routine:
> Getpix (lib C) - Get byte/bit for a pixel.
> Input:  a=x coordinate  e=y coordinate
> Output: a holds bit of pixel
> hl->byte of pixel on the graph buffer.
> Registers destroyed: af bc de hl
>
>