Re: A89: LCD memory manipulation (in asm)


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

Re: A89: LCD memory manipulation (in asm)




On Thu, Jan 18, 2001, Miles Raymond wrote:
> 
> Yes, I know that I can probably do everything a lot easier in C, but don't
> ask me why I'm still sticking w/ asm...

Because GCC generates such *bloated* code!


> The default memory width is set to 240bits (30bytes), the size of the
> TI-92(+) LCD, and I'd like to know how to change it to 192bits (24bytes)...

	move.w	#$3480,$600012	; 192x128
or
	move.w	#$349C,$600012	; 192x100

The first byte (N=$34) is the width, (64-N)*16 pixels.  The second byte
(M=$80 or $9C) is the height, 256-M lines.


> Then I believe to shift the actual start of the LCD by (16,16), I can just
> add 16*192+16 to set the screen and it's respective memory up like:

HW1:  You can't do that and still use $004C00 for the upper left corner.
This is the best you can get:

	move.w	#$09B8,$600010	; visible area start at $004DC0=$09B8*8
	; the full 192x132 buffer starts at $004C3E and
	; the visible 160(192)x100 buffer starts at $004DC0

HW2:  The frame buffer address (the upper left corner of the visible part of
the screen) is fixed to $004C00 for all practical purposes.  One solution
is to locate the 192x132 buffer at $004A7E.  The supervisor stack lives
here, but it might work anyway.  :)

-- 
Johan Eilert



Follow-Ups: References: