diff src/tft.inc @ 604:ca4556fb60b9

bump to 2.99beta, work on 3.00 stable
author heinrichsweikamp
date Thu, 22 Nov 2018 19:47:26 +0100
parents b7eb98dbd800
children c40025d8e750
line wrap: on
line diff
--- a/src/tft.inc	Thu Oct 11 21:06:29 2018 +0200
+++ b/src/tft.inc	Thu Nov 22 19:47:26 2018 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File tft.inc
+;   File tft.inc														V2.99c
 ;
 ;   Declaring interfaces to the TFT screen and its Oxxx controler
 ;
@@ -14,185 +14,217 @@
 ;=============================================================================
 
 ; Writes two half-pixels at position (win_top,win_leftx2)
-; Inputs: win_leftx2, win_top, win_color:2
+; Inputs : win_leftx2, win_top, win_color:2
+; Outputs: (none)
 ; Trashed: WREG, PROD
-    extern  pixel_write
+	extern	pixel_write
 
 ;-----------------------------------------------------------------------------
-; Writes one half-pixel at position (win_top,win_leftx2).
-; Inputs: win_leftx2, win_top, win_color:2
+; Writes one half-pixel at position (win_top,win_leftx2)
+; Inputs : win_leftx2, win_top, win_color:2
+; Outputs: (none)
 ; Trashed: WREG, PROD
-    extern  half_pixel_write
+	extern	half_pixel_write
 
 ;-----------------------------------------------------------------------------
-; TFT_frame : draw a frame around current box with current color.
-; Inputs:  win_top, win_leftx2, win_height, win_width, win_color1, win_color2
+; Draws a frame around current box with current color
+; Inputs :  win_top, win_leftx2, win_height, win_width, win_color1, win_color2
 ; Outputs: (none)
 ; Trashed: WREG, PROD, aa_start:2, aa_end:2, win_leftx2, win_width:1
-    extern  TFT_frame
+	extern	TFT_frame
 
 ;-----------------------------------------------------------------------------
-	extern	TFT_DisplayOff              ; Power-off everything (need a boot next)
-    extern  TFT_boot                    ; Initialize screen hardware
-    extern  TFT_Display_FadeIn          ; Smooth lighting
-    extern  TFT_Display_FadeOut         ; Smooth darkening
-    extern  TFT_ClearScreen
-    extern  TFT_box_write
-    extern  TFT_box_write_16bit_win_left; With column in PRODL:PRODH
-    extern  TFT_box
-    extern  TFT_box_16bit_win_left      ; With column in PRODL:PRODH
-    extern  TFT_DataWrite_PROD
-    extern  TFT_set_color
+	extern	TFT_DisplayOff					; Power-off everything (need a boot next)
+	extern	TFT_boot						; Initialize screen hardware
+	extern	TFT_Display_FadeIn				; Smooth lighting
+	extern	TFT_Display_FadeOut				; Smooth darkening
+	extern	TFT_ClearScreen
+	extern	TFT_box_write
+	extern	TFT_box_write_16bit_win_left	; With column in PRODL:PRODH
+	extern	TFT_box
+	extern	TFT_box_16bit_win_left			; With column in PRODL:PRODH
+	extern	TFT_DataWrite_PROD
+	extern	TFT_set_color
 ;	extern	init_pixel_write
 	extern	pixel_write
 	extern	pixel_write_col320
 	extern	half_vertical_line
-	extern  half_horizontal_line
-    extern  TFT_dump_screen
+	extern	half_horizontal_line
+
+ IFDEF _screendump
+	extern	TFT_dump_screen
+	extern	TFT_dump_screen_check
+ ENDIF
 
 ;=============================================================================
-; Low level macros (for aa_wordprocessor and color_processor).
+; Low level macros (for aa_wordprocessor and color_processor)
 ;
-            extern  TFT_CmdWrite
-Index_out	macro low_b
-			movlw low_b
-			call  TFT_CmdWrite
-			endm
+	extern	TFT_CmdWrite
+Index_out		macro	low_b
+					movlw	low_b
+					call	TFT_CmdWrite
+				endm
 
 ;=============================================================================
-; A shortcut for TFT_box and TFT_frame call sequences.
+; A shortcut for TFT_box and TFT_frame call sequences
 ;
-        extern  box_frame_std, box_frame_common, box_frame_color, box_frame_color16
-        extern  box_std_block, box_black_block, box_color_block
+	extern	box_frame_std, box_frame_common, box_frame_color, box_frame_color16
+	extern	box_std_block, box_black_block, box_color_block
 
-; Erase a given screen area.
-WIN_BOX_BLACK macro   top, bottom, left, right
-        call    box_black_block
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Erase a given screen area
+WIN_BOX_BLACK	macro	top, bottom, left, right
+					call	box_black_block
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-; Fill a given screen area with standard color (White).
-WIN_BOX_STD macro   top, bottom, left, right
-        call    box_std_block
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Fill a given screen area with standard color (white)
+WIN_BOX_STD		macro	top, bottom, left, right
+					call	box_std_block
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-; Fill a given screen area with color from WREG (8bits rrrgggbb)
-WIN_BOX_COLOR macro   top, bottom, left, right
-        call    box_color_block
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Fill a given screen area with color from WREG (8 bits rrrgggbb)
+WIN_BOX_COLOR	macro	top, bottom, left, right
+					call	box_color_block
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-; Draw a frame in standard color (White).
-WIN_FRAME_STD macro   top, bottom, left, right
-        call    box_frame_std
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Draw a frame in standard color (white)
+WIN_FRAME_STD	macro	top, bottom, left, right
+					call	box_frame_std
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-; Draw a frame with color from WREG (8bits rrrgggbb)
-WIN_FRAME_COLOR macro   top, bottom, left, right
-        call    box_frame_color
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Draw a frame with color from WREG (8 bits rrrgggbb)
+WIN_FRAME_COLOR	macro	top, bottom, left, right
+					call	box_frame_color
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-; Draw a frame with color from win_color (16bits in TFT format)
-WIN_FRAME_COLOR16 macro   top, bottom, left, right
-        call    box_frame_color16
-        db      top, (bottom)-(top)+1, left, (right)-(left)+1
-        endm
+; Draw a frame with color from win_color (16 bits in TFT format)
+WIN_FRAME_COLOR16 macro	top, bottom, left, right
+					call	box_frame_color16
+					db		top, (bottom)-(top)+1, left, (right)-(left)+1
+				endm
 
-WIN_FONT 	macro	win_font_input
-			movlw	win_font_input
-			movff	WREG,win_font
-			endm
-			
-WIN_TOP 	macro 	win_top_input
-			movlw	win_top_input
-			movff	WREG,win_top
-			endm
+WIN_FONT		macro	win_font_input
+					movlw	win_font_input
+					movff	WREG,win_font
+				endm
+
+WIN_TOP			macro	win_top_input
+					movlw	win_top_input
+					movff	WREG,win_top
+				endm
 
-WIN_HEIGHT 	macro 	h
-			movlw	h
-			movff	WREG,win_height
-			endm
-			
-WIN_LEFT 	macro 	win_left_input
-			movlw	win_left_input
-			movff	WREG,win_leftx2
-			endm
-			
-WIN_WIDTH 	macro 	w
-			movlw	w
-			movff	WREG,win_width
-			endm
+WIN_HEIGHT		macro	h
+					movlw	h
+					movff	WREG,win_height
+				endm
+
+WIN_LEFT		macro	win_left_input
+					movlw	win_left_input
+					movff	WREG,win_leftx2
+				endm
 
-WIN_COLOR	macro 	win_color_input
-			movlw	win_color_input
-			call	TFT_set_color
-			endm
+WIN_WIDTH		macro	w
+					movlw	w
+					movff	WREG,win_width
+				endm
+
+WIN_COLOR		macro	win_color_input
+					movlw	win_color_input
+					call	TFT_set_color
+				endm
 
-;=============================================================================
-; TFT_write_flash_image
-;
-; Inputs:  cx, cy : Image center (in 0..160 x 0..240 range)
-;          image  : flash image header's address
-; Outputs: win_top, win_left, win_height, win_width
-;          image copyed on screen.
-; Trashed: PROD, hi, lo
-; 
-;    extern  TFT_write_flash_image
-;    extern  TFT_write_flash_image_addr
-TFT_WRITE_FLASH_IMAGE macro cx, cy, image
-    If LOW(image) != 0
-        Error "Image "image" mis-aligned"
-    Endif
-    If (UPPER(image) & 0xF0) != 0x30
-        Error "Image "image" not in image flash memory"
-    Endif
-    If (cx < 0) || (cx > 160)
-        Error "Image center's X "cx" not in 0..160 range".
-    Endif
-    If (cy < 0) || (cy > 240)
-        Error "Image center's Y "cy" not in 0..240 range".
-    Endif
-            ; Once we know image is aligned, we can use the compact (4bytes)
-            ; 12bit registers to pass the address:
-            lfsr    FSR2, ((image)>>8) & 0xFFF
-            WIN_LEFT    cx
-            WIN_TOP     cy
-            call    TFT_write_flash_image
-            endm
+;;=============================================================================
+;; TFT_write_flash_image
+;;
+;; Inputs : cx, cy : Image center (in 0..160 x 0..240 range)
+;;          image  : flash image header's address
+;; Outputs: win_top, win_left, win_height, win_width
+;;          image copyed on screen.
+;; Trashed: PROD, hi, lo
+;; 
+;;    extern  TFT_write_flash_image
+;;    extern  TFT_write_flash_image_addr
+;TFT_WRITE_FLASH_IMAGE	macro	cx, cy, image
+;	If LOW(image) != 0
+;		Error "Image "image" mis-aligned"
+;	Endif
+;	If (UPPER(image) & 0xF0) != 0x30
+;		Error "Image "image" not in image flash memory"
+;	Endif
+;	If (cx < 0) || (cx > 160)
+;		Error "Image center's X "cx" not in 0..160 range".
+;	Endif
+;	If (cy < 0) || (cy > 240)
+;		Error "Image center's Y "cy" not in 0..240 range".
+;	Endif
+;		; Once we know image is aligned, we can use the compact (4 bytes)
+;		; 12 bit registers to pass the address:
+;		lfsr	FSR2, ((image)>>8) & 0xFFF
+;		WIN_LEFT cx
+;		WIN_TOP  cy
+;		call	TFT_write_flash_image
+;	endm
 
 ;=============================================================================
 ; TFT_write_prom_image
-;
-TFT_WRITE_PROM_IMAGE    macro   icon
-            extern  icon, color_image
-            movlw   LOW(icon)
-            movwf   TBLPTRL
-            movlw   HIGH(icon)
-            movwf   TBLPTRH
-            movlw   UPPER(icon)
-            movwf   TBLPTRU
-            call    color_image
-            endm
+
+; image referenced by a label
+TFT_WRITE_PROM_IMAGE_BY_LABEL	macro	image_label
+		extern	image_label
+		movlw	LOW   (image_label)
+		movwf	TBLPTRL
+		movlw	HIGH  (image_label)
+		movwf	TBLPTRH
+		movlw	UPPER (image_label)
+		movwf	TBLPTRU
+		extern	color_image
+		call	color_image
+	endm
+
+; image referenced by an address
+TFT_WRITE_PROM_IMAGE_BY_ADDR	macro	image_address
+		movlw	LOW   (image_address)
+		movwf	TBLPTRL
+		movlw	HIGH  (image_address & 0xFFFF)
+		movwf	TBLPTRH
+		movlw	UPPER (image_address)
+		movwf	TBLPTRU
+		extern	color_image
+		call	color_image
+	endm
+
+; custom colors referenced by label
+TFT_WRITE_PROM_IMAGE_CUST_COLOR	macro	colors_label
+		movlw	LOW   (colors_label)
+		movwf	TBLPTRL
+		movlw	HIGH  (colors_label)
+		movwf	TBLPTRH
+		movlw	UPPER (colors_label)
+		movwf	TBLPTRU
+		extern	get_colors
+		call	get_colors
+		bsf		use_custom_colors		; will suppress read-in of the colors that come with the image
+	endm
 
 ;=============================================================================
-; Macro to provides our own interface code.
+; Macro to provide our own interface code
 ;
-PIXEL_WRITE macro   colRegister, rowRegister
-        movff   colRegister,win_leftx2
-        movff   rowRegister,win_top
-        call    pixel_write
-        endm
+PIXEL_WRITE			macro	colRegister,	rowRegister
+						movff	colRegister,win_leftx2
+						movff	rowRegister,win_top
+						call	pixel_write
+					endm
 
-;INIT_PIXEL_WRITE macro colRegister
-;        movff   colRegister,win_leftx2
-;        call    init_pixel_write
-;        endm
+;INIT_PIXEL_WRITE	macro	colRegister
+;						movff	colRegister,win_leftx2
+;						call	init_pixel_write
+;					endm
 
-HALF_PIXEL_WRITE macro rowRegister
-        movff   rowRegister,win_top
-        call    half_pixel_write
-        endm
-	
+HALF_PIXEL_WRITE	macro	rowRegister
+						movff	rowRegister,win_top
+						call	half_pixel_write
+					endm