diff src/tft.asm @ 582:b455b31ce022

work on 2.97 stable
author heinrichsweikamp
date Mon, 26 Feb 2018 16:40:28 +0100
parents 4927ba3bd3b5
children ca4556fb60b9
line wrap: on
line diff
--- a/src/tft.asm	Sun Feb 25 18:25:38 2018 +0100
+++ b/src/tft.asm	Mon Feb 26 16:40:28 2018 +0100
@@ -1,6 +1,6 @@
 ;=============================================================================
 ;
-;   File tft.asm
+;   File tft.asm													## V2.97
 ;
 ;   Managing the TFT screen
 ;
@@ -17,56 +17,43 @@
 #include "eeprom_rs232.inc"
 
 ;=============================================================================
-; TFT_frame needs to backup coordinates.
-        CBLOCK  tmp
-            save_top                
-            save_height 
-            save_left   
-            save_width
-        	ds_line                 ; Current line (0..239).
-        	ds_column               ; Current columnx2 (0..159)
-        	ds_pixel:2              ; Current pixel color.
-        	ds_count                ; Repetition count.
-        ENDC
-
-;=============================================================================
 ; Basic bit-level macros
 
-RD_H		macro
-			bsf tft_rd,0
-			endm
+RD_H	macro
+		bsf tft_rd,0
+		endm
 
-RD_L		macro
-			bcf tft_rd,0
-			endm
+RD_L	macro
+		bcf tft_rd,0
+		endm
 
-RS_H		macro
-			bsf tft_rs,0
-			endm
+RS_H	macro
+		bsf tft_rs,0
+		endm
 
-RS_L		macro
-			bcf tft_rs,0
-			endm
+RS_L	macro
+		bcf tft_rs,0
+		endm
 
-NCS_H		macro
-			bsf tft_cs,0
-			endm
+NCS_H	macro
+		bsf tft_cs,0
+		endm
 
-NCS_L		macro
-			bcf tft_cs,0
-			endm
+NCS_L	macro
+		bcf tft_cs,0
+		endm
 
-WR_H		macro
-			bsf tft_nwr,0
-			endm
+WR_H	macro
+		bsf tft_nwr,0
+		endm
 
-WR_L		macro
-			bcf tft_nwr,0
-			endm
+WR_L	macro
+		bcf tft_nwr,0
+		endm
 
 ;=============================================================================
-; Byte-leve macros
-;
+; Byte-level macros
+
 Index_out		macro low_b
 				movlw low_b
 				rcall TFT_CmdWrite
@@ -80,96 +67,95 @@
 				endm
 
 
-basic   CODE
-;
-;
+basic	CODE
+
 ;;=============================================================================
 ;; TFT_write_flash_image
 ;;
 ;; Inputs:  FSR2 = EEPROM address / 256
-;;          win_left, win_top : imagte CENTER position
+;;          win_left, win_top : image CENTER position
 ;; Outputs: win_height, win_width.
-;;          image copyed on screen.
+;;          image copied on screen.
 ;; Trashed: PROD, hi, lo
 ;;
 ;	global	TFT_write_flash_image
 ;TFT_write_flash_image:
-;    ; Get back the full 24bit EEPROM address
-;    clrf    ext_flash_address+0
-;    movff   FSR2L,ext_flash_address+1
-;    movf    FSR2H,W
-;    iorlw   0x30
-;    movwf   ext_flash_address+2
+;	; Get back the full 24bit EEPROM address
+;	clrf	ext_flash_address+0
+;	movff	FSR2L,ext_flash_address+1
+;	movf	FSR2H,W
+;	iorlw	0x30
+;	movwf	ext_flash_address+2
 ;
-;    ; Read header: width and height
-;    global  TFT_write_flash_image_addr
+;	; Read header: width and height
+;	global	TFT_write_flash_image_addr
 ;TFT_write_flash_image_addr:
 ;	call	ext_flash_read_block_start
-;	movff   SSP2BUF,win_width+0
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
-;	btfss	SSP2STAT, BF                ; Next byte ready ?
-;	bra		$-2                         ; NO: wait...
-;   	movff   SSP2BUF,win_width+1
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
-;	btfss	SSP2STAT, BF                ; Next byte ready ?
-;	bra		$-2                         ; NO: wait...
-;	movff   SSP2BUF,win_height
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
-;	btfss	SSP2STAT, BF                ; Next byte ready ?
-;	bra		$-2                         ; NO: wait...
-;	movff   SSP2BUF,WREG                ; drop 4th byte.
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
-;	btfss	SSP2STAT, BF                ; Next byte ready ?
-;	bra		$-2                         ; NO: wait...
+;	movff	SSP2BUF,win_width+0
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Next byte ready ?
+;	bra		$-2						; NO: wait...
+;	movff	SSP2BUF,win_width+1
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Next byte ready ?
+;	bra		$-2						; NO: wait...
+;	movff	SSP2BUF,win_height
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Next byte ready ?
+;	bra		$-2						; NO: wait...
+;	movff   SSP2BUF,WREG			; drop 4th byte.
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Next byte ready ?
+;	bra		$-2						; NO: wait...
 ;
-;    ; Sanity check on header to avoid badly uploaded images.
-;    iorwf   WREG                        ; Check height < 256
-;    bnz     TFT_write_flash_image_failed
-;    movf    win_width+1,W               ; Check width < 512
-;    andlw   0xFE
-;    bnz     TFT_write_flash_image_failed
+;	; Sanity check on header to avoid badly uploaded images.
+;	iorwf	WREG					; Check height < 256
+;	bnz		TFT_write_flash_image_failed
+;	movf	win_width+1,W			; Check width < 512
+;	andlw	0xFE
+;	bnz		TFT_write_flash_image_failed
 ;
-;    ; Center image on win_top, win_left values
-;    bcf     STATUS,C                    ; Clear carry
-;    rrcf    win_height,W                ; And get height/2
-;    subwf   win_top,F                   ; top -= height/2
-;    rrcf    win_width+1,W               ; Get 9th bit into carry
-;    rrcf    win_width+0,W               ; Get width/2 (in 0..320 range)
-;    bcf     STATUS,C
-;    rrcf    WREG,W                      ; Get width/2 in 0..160 range
-;    subwf   win_leftx2,F                ; left -= width/2
+;	; Center image on win_top, win_left values
+;	bcf		STATUS,C				; Clear carry
+;	rrcf	win_height,W			; And get height/2
+;	subwf	win_top,F				; top -= height/2
+;	rrcf	win_width+1,W			; Get 9th bit into carry
+;	rrcf	win_width+0,W			; Get width/2 (in 0..320 range)
+;	bcf		STATUS,C
+;	rrcf	WREG,W					; Get width/2 in 0..160 range
+;	subwf	win_leftx2,F			; left -= width/2
 ;
-;	rcall	TFT_box_write		    	; Inputs : win_top, win_leftx2, win_height, win_width(in 1..320 range)
+;	rcall	TFT_box_write			; Inputs : win_top, win_leftx2, win_height, win_width(in 1..320 range)
 ;
-;    ; Compute number of pixels to move (result on 17 bits !)
-;    clrf    TBLPTRU
-;    movf    win_width+0,W
-;    mulwf   win_height                  ; Result in PRODL:H
-;    movf    win_width+1,W
-;    bz      TFT_write_flash_image_1     ; width > 8bits ?
-;    movf    win_height,W                ; YES: add extra
-;    addwf   PRODH,F
-;    rlcf    TBLPTRU                     ; And carry into upper register.
+;	; Compute number of pixels to move (result on 17 bits !)
+;	clrf	TBLPTRU
+;	movf	win_width+0,W
+;	mulwf	win_height				; Result in PRODL:H
+;	movf	win_width+1,W
+;	bz		TFT_write_flash_image_1	; width > 8bits ?
+;	movf	win_height,W			; YES: add extra
+;	addwf	PRODH,F
+;	rlcf	TBLPTRU					; And carry into upper register.
 ;TFT_write_flash_image_1:
-;    incf    PRODH,F                     ; Pre-condition nested loops
-;    incf    TBLPTRU,F
+;	incf	PRODH,F					; pre-condition nested loops
+;	incf	TBLPTRU,F
 ;
-;    ; Write pixels
-;	Index_out 0x22						; Frame Memory Data Write start
-;	RS_H								; Data
+;	; Write pixels
+;	Index_out 0x22					; Frame Memory Data Write start
+;	RS_H							; Data
 ;
 ;TFT_write_flash_image_loop:
-;	btfss	SSP2STAT, BF				; Buffer full?
-;	bra		$-2                         ; NO: wait...
-;	movff	SSP2BUF,PORTH			    ; Read lo
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Buffer full?
+;	bra		$-2						; NO: wait...
+;	movff	SSP2BUF,PORTH			; Read lo
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
 ;
-;	btfss	SSP2STAT, BF				; Buffer full?
-;	bra		$-2                         ; NO: wait...
-;	movff	SSP2BUF,PORTA               ; And read hi
-;	movwf	SSP2BUF						; Write to buffer to initiate new read
+;	btfss	SSP2STAT, BF			; Buffer full?
+;	bra		$-2						; NO: wait...
+;	movff	SSP2BUF,PORTA			; And read hi
+;	movwf	SSP2BUF					; Write to buffer to initiate new read
 ;	WR_L
-;	WR_H								; Write 1 Pixel
+;	WR_H							; Write 1 Pixel
 ;
 ;	decfsz	PRODL,F
 ;	bra		TFT_write_flash_image_loop
@@ -178,76 +164,75 @@
 ;	decfsz	TBLPTRU,F
 ;	bra		TFT_write_flash_image_loop
 ;
-;	btfss	SSP2STAT, BF				; Buffer full?
-;	bra		$-2	                        ; No, wait
-;	movf	SSP2BUF,W                   ; Read dummy byte
+;	btfss	SSP2STAT, BF			; Buffer full?
+;	bra		$-2						; No, wait
+;	movf	SSP2BUF,W				; Read dummy byte
 ;
-;	bsf		flash_ncs					; CS=1
-;	movlw	0x00                        ; NOP, to stop window mode
-;	bra     TFT_CmdWrite				; This routine "returns"
+;	bsf		flash_ncs				; CS=1
+;	movlw	0x00					; NOP, to stop window mode
+;	bra		TFT_CmdWrite			; This routine "returns"
 ;
 ;	;---- Draw a 4x4 red square in place of missing images...
 ;TFT_write_flash_image_failed:
-;    movlw   -1
-;    addwf   win_leftx2,F
-;    movlw   -2
-;    addwf   win_top,F
-;    movlw   2
-;    movwf   win_width+0
-;    clrf    win_width+1
-;    movlw   4
-;    movwf   win_height
-;    movlw   color_red
-;    rcall   TFT_set_color
-;    goto    TFT_box
+;	movlw	-1
+;	addwf	win_leftx2,F
+;	movlw	-2
+;	addwf	win_top,F
+;	movlw	2
+;	movwf	win_width+0
+;	clrf	win_width+1
+;	movlw	4
+;	movwf	win_height
+;	movlw	color_red
+;	rcall	TFT_set_color
+;	goto	TFT_box
 ;
 ;;=============================================================================
-;
 
-    global  TFT_CmdWrite
+	global	TFT_CmdWrite
 TFT_CmdWrite:
-	RS_L				; Command
-	clrf	PORTA		; Upper
-	bcf	INTCON,GIE
-	movwf	PORTH		; Lower
+	RS_L							; Command
+	clrf	PORTA					; Upper
+	bcf		INTCON,GIE
+	movwf	PORTH					; Lower
 	WR_L
-	WR_H				; Tick
-	bsf	INTCON,GIE
-	return;
+	WR_H							; Tick
+	bsf		INTCON,GIE
+	return
 
-    global  TFT_DataWrite
+	global	TFT_DataWrite
 TFT_DataWrite:
-	RS_H				; Data
-	bcf	INTCON,GIE
-	movwf 	PORTH		; Lower
+	RS_H							; Data
+	bcf		INTCON,GIE
+	movwf 	PORTH					; Lower
 	WR_L
-	WR_H				; Tick
-	bsf	INTCON,GIE
+	WR_H							; Tick
+	bsf		INTCON,GIE
 	return
 
 ;=============================================================================
-;
-    global  TFT_ClearScreen
+
+	global	TFT_ClearScreen
 TFT_ClearScreen:
-	Index_out 0x50				; Window Horizontal Start Address
-	Parameter_out 0x00, 0x00	; 0-239
-	Index_out 0x51				; Window Horizontal End Address
-	Parameter_out 0x00, 0xEF	; 0-239
-	Index_out 0x52				; Window Vertical Start Address
-	Parameter_out 0x00, 0x00	; 0-319
-	Index_out 0x53				; Window Vertical End Address
-	Parameter_out 0x01, 0x3F	; 0-319
-	Index_out 0x20				; Frame Memory Horizontal Address
-	Parameter_out 0x00, 0x00	; 0-239
-	Index_out 0x21				; Frame Memory Vertical Address
-	Parameter_out 0x01, 0x3F	; 0-319
+	Index_out 0x50					; Window Horizontal Start Address
+	Parameter_out 0x00, 0x00		; 0-239
+	Index_out 0x51					; Window Horizontal End Address
+	Parameter_out 0x00, 0xEF		; 0-239
+	Index_out 0x52					; Window Vertical Start Address
+	Parameter_out 0x00, 0x00		; 0-319
+	Index_out 0x53					; Window Vertical End Address
+	Parameter_out 0x01, 0x3F		; 0-319
+	Index_out 0x20					; Frame Memory Horizontal Address
+	Parameter_out 0x00, 0x00		; 0-239
+	Index_out 0x21					; Frame Memory Vertical Address
+	Parameter_out 0x01, 0x3F		; 0-319
 
-	Index_out 0x22				; Frame Memory Data Write start
+	Index_out 0x22					; Frame Memory Data Write start
 
-	RD_H						; Not Read
-	RS_H						; Data
-	NCS_L						; Not CS
-	clrf	PORTH				; Data Lower
+	RD_H							; Not Read
+	RS_H							; Data
+	NCS_L							; Not CS
+	clrf	PORTH					; Data Lower
 
 	movlw	d'10'
 	movwf	tft_temp3
@@ -256,32 +241,32 @@
 	movwf	tft_temp2
 TFT_ClearScreen3:
 	clrf	tft_temp1				; 30*10*256=76800 Pixels -> Clear complete 240*320
-	bcf	INTCON,GIE
+	bcf		INTCON,GIE
 TFT_ClearScreen4:
 	WR_L
 	WR_H							; Tick
 	decfsz	tft_temp1,F
 	bra		TFT_ClearScreen4
-	bsf	INTCON,GIE
+	bsf		INTCON,GIE
 	decfsz	tft_temp2,F
 	bra		TFT_ClearScreen3
 	decfsz	tft_temp3,F
 	bra		TFT_ClearScreen2
-	
-	movlw	0x00                        ; NOP, to stop window mode
-        bra	TFT_CmdWrite		    ; And return
-;	return
+
+	movlw	0x00					; NOP, to stop window mode
+	bra		TFT_CmdWrite			; And return
+
 
 ;=============================================================================
-; 
-    global  TFT_DisplayOff
+
+	global	TFT_DisplayOff
 TFT_DisplayOff:
-	clrf	CCPR1L				; PWM OFF
+	clrf	CCPR1L					; PWM OFF
 	clrf	PORTA
-    clrf	PORTH
-	RD_L	; LOW
+	clrf	PORTH
+	RD_L							; LOW
 	nop
-	RS_L	; LOW
+	RS_L							; LOW
 	bcf		tft_nwr
 	nop
 	bcf		tft_cs
@@ -295,7 +280,8 @@
 ; -----------------------------
 ; TFT boot
 ; -----------------------------
-    global  TFT_boot
+
+	global	TFT_boot
 TFT_boot:
 	clrf	PORTA
 	clrf	PORTH
@@ -320,66 +306,66 @@
 	WAITMS	d'5'
 	bsf		tft_nreset
 	WAITMS	d'150'
-	bsf		lightsen_power  		; Supply power to light sensor
+	bsf		lightsen_power			; Supply power to light sensor
 
-; Data Transfer Synchronization
+	; Data Transfer Synchronization
 	Parameter_out 0x00, 0x00
 	Parameter_out 0x00, 0x00
-	
+
 	; Get screentype from Bootloader-Info
-	movlw   0x7B
-	movwf   TBLPTRL
-	movlw   0xF7
-	movwf   TBLPTRH
-	movlw   0x01
-	movwf   TBLPTRU
-	TBLRD*+			; Reads .110 for cR and USB OSTC3, .0 for BLE (2 and 3), and .2 for display1 OSTC
+	movlw	0x7B
+	movwf	TBLPTRL
+	movlw	0xF7
+	movwf	TBLPTRH
+	movlw	0x01
+	movwf	TBLPTRU
+	TBLRD*+							; Reads .110 for cR and USB OSTC3, .0 for BLE (2 and 3), and .2 for display1 OSTC
 	movlw	0x02
 	cpfseq	TABLAT
-	bra     TFT_boot_0      ; Display0
+	bra		TFT_boot_0				; Display0
 
 TFT_boot_1:
-; Init through config table...
-    movlw   0x74
-    movwf   TBLPTRL
-    movlw   0xF7
-    movwf   TBLPTRH
-    movlw   0x01
-    movwf   TBLPTRU
-    bsf     screen_type
-    bra     TFT_boot_com
+	; Init through config table...
+	movlw	0x74
+	movwf	TBLPTRL
+	movlw	0xF7
+	movwf	TBLPTRH
+	movlw	0x01
+	movwf	TBLPTRU
+	bsf		screen_type
+	bra		TFT_boot_com
 
 TFT_boot_0:
-; Init through config table...
-    movlw   LOW     display0_config_table
-    movwf   TBLPTRL
-    movlw   HIGH    display0_config_table
-    movwf   TBLPTRH
-    movlw   UPPER   display0_config_table
-    movwf   TBLPTRU
-    bcf     screen_type
-    
+	; Init through config table...
+	movlw	LOW   display0_config_table
+	movwf	TBLPTRL
+	movlw	HIGH  display0_config_table
+	movwf	TBLPTRH
+	movlw	UPPER display0_config_table
+	movwf	TBLPTRU
+	bcf		screen_type
+
 TFT_boot_com:
-    rcall   display0_init_loop
+	rcall	display0_init_loop
 
-    Index_out 0x03
-    btfsc   flip_screen             ; 180° rotation ?
-    bra     TFT_boot2               ; Yes
+	Index_out 0x03
+	btfsc	flip_screen				; 180° rotation ?
+	bra		TFT_boot2				; Yes
 
-    btfss   screen_type             ; display1?
-    bra     TFT_boot1a              ; no
-    Parameter_out 0x10, 0x00        ; display1
-    bra     TFT_boot3
+	btfss	screen_type				; display1?
+	bra		TFT_boot1a				; no
+	Parameter_out 0x10, 0x00		; display1
+	bra		TFT_boot3
 TFT_boot1a:
-    Parameter_out 0x50, 0x20        ; display0
-    bra     TFT_boot3
+	Parameter_out 0x50, 0x20		; display0
+	bra		TFT_boot3
 TFT_boot2:
-    btfss   screen_type             ; display1?
-    bra     TFT_boot2a              ; no
-    Parameter_out 0x10, 0x30        ; display1
-    bra     TFT_boot3
+	btfss	screen_type				; display1?
+	bra		TFT_boot2a				; no
+	Parameter_out 0x10, 0x30		; display1
+	bra		TFT_boot3
 TFT_boot2a:
-    Parameter_out 0x50, 0x10        ; display0
+	Parameter_out 0x50, 0x10		; display0
 TFT_boot3:
 	Index_out 0x22
 	rcall	TFT_ClearScreen
@@ -388,48 +374,48 @@
 	return
 
 display0_config_table:
-    ; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
-    db  0xA4,0x00,0x01,0xFF,.002,0x00
-    db  0x09,0x00,0x01,0x92,0x04,0x00
-    db  0x93,0x04,0x02,0x94,0x00,0x02
-    db  0x07,0x00,0x00,0x10,0x04,0x30
-    db  0x11,0x02,0x37,0x12,0x11,0x8D
-    db  0x13,0x11,0x00,0x01,0x01,0x00
-    db  0x02,0x02,0x00,0x03,0x50,0x20
-    db  0x0A,0x00,0x08,0x0D,0x00,0x00
-    db  0x0E,0x00,0x30,0xFF,.151,0x00
-    db  0x12,0x11,0xBD,0x20,0x00,0x00
-    db  0x21,0x00,0x00,0x30,0x06,0x02
-    db  0x31,0x56,0x0D,0x32,0x05,0x07
-    db  0x33,0x06,0x09,0x34,0x00,0x00
-    db  0x35,0x09,0x06,0x36,0x57,0x05
-    db  0x37,0x0D,0x06,0x38,0x02,0x06
-    db  0x39,0x00,0x00,0xFF,0x00,0x00
+	; Reg, Dat0, Dat1 or 0xFF,0x00,0x00 for end
+	db  0xA4,0x00,0x01,0xFF,.002,0x00
+	db  0x09,0x00,0x01,0x92,0x04,0x00
+	db  0x93,0x04,0x02,0x94,0x00,0x02
+	db  0x07,0x00,0x00,0x10,0x04,0x30
+	db  0x11,0x02,0x37,0x12,0x11,0x8D
+	db  0x13,0x11,0x00,0x01,0x01,0x00
+	db  0x02,0x02,0x00,0x03,0x50,0x20
+	db  0x0A,0x00,0x08,0x0D,0x00,0x00
+	db  0x0E,0x00,0x30,0xFF,.151,0x00
+	db  0x12,0x11,0xBD,0x20,0x00,0x00
+	db  0x21,0x00,0x00,0x30,0x06,0x02
+	db  0x31,0x56,0x0D,0x32,0x05,0x07
+	db  0x33,0x06,0x09,0x34,0x00,0x00
+	db  0x35,0x09,0x06,0x36,0x57,0x05
+	db  0x37,0x0D,0x06,0x38,0x02,0x06
+	db  0x39,0x00,0x00,0xFF,0x00,0x00
 
 display0_init_loop:
-    TBLRD*+
-    movlw   0xFF
-    cpfseq  TABLAT
-    bra     display0_config_write    ; Write Config pair to Display
-    ; Delay ms or quit (return)
-    TBLRD*+
-    tstfsz  TABLAT                  ; End of config?
-    bra     $+4                     ; No
-    return                          ; Done.
-    movf    TABLAT,W
-    call    WAITMSX                 ; Wait WREG milliseconds
-    TBLRD*+                         ; Dummy read (Third byte of delay command)
-    bra     display0_init_loop      ; Loop
+	TBLRD*+
+	movlw	0xFF
+	cpfseq	TABLAT
+	bra		display0_config_write	; Write Config pair to Display
+	; Delay ms or quit (return)
+	TBLRD*+
+	tstfsz	TABLAT					; End of config?
+	bra		$+4						; No
+	return							; Done.
+	movf	TABLAT,W
+	call	WAITMSX					; Wait WREG milliseconds
+	TBLRD*+							; Dummy read (Third byte of delay command)
+	bra		display0_init_loop		; Loop
 
-display0_config_write:              ; With command in WREG
-    movf    TABLAT,W
-    rcall   TFT_CmdWrite            ; Write command
-    TBLRD*+                         ; Get config0
-    movff   TABLAT,PORTA
-    TBLRD*+                         ; Get config1
-    movf    TABLAT,W
-    rcall   TFT_DataWrite           ; Write config
-    bra     display0_init_loop      ; Loop
+display0_config_write:				; With command in WREG
+	movf	TABLAT,W
+	rcall	TFT_CmdWrite			; Write command
+	TBLRD*+							; Get config0
+	movff	TABLAT,PORTA
+	TBLRD*+							; Get config1
+	movf	TABLAT,W
+	rcall	TFT_DataWrite			; Write config
+	bra		display0_init_loop		; Loop
 
 
 ;=============================================================================
@@ -437,81 +423,80 @@
 ;
 ; Trashes: WREG, PRODL
 ; Typical usage:
-;    clrf    CCPR1L            ; Backlight off
-;   [draw splash screen]
-;   call     TFT_DisplayFadeIn
-;
-        global  TFT_Display_FadeIn
+;	clrf	CCPR1L					; Backlight off
+;	[draw splash screen]
+;	call	TFT_DisplayFadeIn
+
+	global	TFT_Display_FadeIn
 TFT_Display_FadeIn:
-    	movlw	CCP1CON_VALUE			; See hwos.inc
-        movwf	CCP1CON
-		bsf		tft_is_dimming	; TFT is dimming, ignore ambient sensor!
-        clrf    CCPR1L          ; Backlight off - to be sure
-		movff	max_CCPR1L,PRODL
+	movlw	CCP1CON_VALUE			; See hwos.inc
+	movwf	CCP1CON
+	bsf		tft_is_dimming			; TFT is dimming, ignore ambient sensor!
+	clrf	CCPR1L					; Backlight off - to be sure
+	movff	max_CCPR1L,PRODL
 TFT_Display_FadeIn_0:
-        incf    CCPR1L,F        ; Duty cycle
-        WAITMS  d'2'
-        decfsz  PRODL,F
-        bra     TFT_Display_FadeIn_0 
-		bcf		tft_is_dimming	; dimming done.
-        return
+	incf	CCPR1L,F				; Duty cycle
+	WAITMS	d'2'
+	decfsz	PRODL,F
+	bra		TFT_Display_FadeIn_0 
+	bcf		tft_is_dimming			; dimming done.
+	return
 
 ;=============================================================================
 ; Smooth lighting-off of the display:
 ; Trashes: WREG, PRODL
-        global  TFT_Display_FadeOut
+
+	global	TFT_Display_FadeOut
 TFT_Display_FadeOut:
-		movff	max_CCPR1L,PRODL
-		bsf		tft_is_dimming	; TFT is dimming, ignore ambient sensor!
+	movff	max_CCPR1L,PRODL
+	bsf		tft_is_dimming			; TFT is dimming, ignore ambient sensor!
 TFT_Display_FadeOut_0:
-        movff   PRODL,CCPR1L    ; Duty cycle
-        WAITMS  d'1'
-        decfsz  PRODL,F
-        bra     TFT_Display_FadeOut_0 
-        clrf    CCPR1L
-        return
+	movff	PRODL,CCPR1L			; Duty cycle
+	WAITMS	d'1'
+	decfsz	PRODL,F
+	bra		TFT_Display_FadeOut_0 
+	clrf	CCPR1L
+	return
 
 ;=============================================================================
 
-        global  box_std_block, box_black_block, box_color_block
+	global  box_std_block, box_black_block, box_color_block
 
-box_std_block:                          ; Use white color
-        setf    WREG
-        bra     box_common
-box_black_block:                        ; Use black color
-        clrf    WREG
+box_std_block:						; Use white color
+	setf	WREG
+	bra	box_common
+box_black_block:					; Use black color
+	clrf	WREG
 box_common:
 box_color_block:
-        rcall   TFT_set_color
-        VARARGS_BEGIN
-            VARARGS_GET8    win_top
-            VARARGS_GET8    win_height
-            VARARGS_GET8    win_leftx2
-            VARARGS_GET8    win_width
-        VARARGS_END
-        bra    TFT_box
+	rcall	TFT_set_color
+	VARARGS_BEGIN
+	VARARGS_GET8 win_top
+	VARARGS_GET8 win_height
+	VARARGS_GET8 win_leftx2
+	VARARGS_GET8 win_width
+	VARARGS_END
+	bra		TFT_box
 
 ;-----------------------------------------------------------------------------
 
-        global  box_frame_std, box_frame_common, box_frame_color, box_frame_color16
+	global	box_frame_std, box_frame_common, box_frame_color, box_frame_color16
 
 box_frame_std:
-        setf    WREG
-        rcall   TFT_set_color
-
+	setf	WREG
+	rcall	TFT_set_color
 box_frame_common:
-        VARARGS_BEGIN
-            VARARGS_GET8    win_top
-            VARARGS_GET8    win_height
-            VARARGS_GET8    win_leftx2
-            VARARGS_GET8    win_width
-        VARARGS_END
-        bra    TFT_frame
-
+	VARARGS_BEGIN
+	VARARGS_GET8 win_top
+	VARARGS_GET8 win_height
+	VARARGS_GET8 win_leftx2
+	VARARGS_GET8 win_width
+	VARARGS_END
+	bra		TFT_frame
 box_frame_color:
-      	rcall	TFT_set_color
+	rcall	TFT_set_color
 box_frame_color16:
-		bra		box_frame_common
+	bra		box_frame_common
 
 ;;=============================================================================
 ;; Init for half_pixel_write
@@ -519,172 +504,176 @@
 ;; Inputs: win_leftx2
 ;; Outputs: win_color:2
 ;; Trashed: WREG, PROD
-;        global init_pixel_write
+;
+;	global	init_pixel_write
 ;init_pixel_write:
-;        movf   win_leftx2,W
-;        mullw   2
-;        rcall   pixel_write_col320      ; Start Address Vertical (.0 - .319)
-;        setf    WREG
-;        bra     TFT_set_color
+;	movf	win_leftx2,W
+;	mullw	2
+;	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
+;	setf	WREG
+;	bra	TFT_set_color
 
 ;-----------------------------------------------------------------------------
 ; Writes two half-pixels at position (win_top,win_leftx2)
 ; Inputs: win_leftx2, win_top, win_color:2
 ; Trashed: WREG, PROD
-    global  pixel_write
+
+	global	pixel_write
 pixel_write:
-        movf   win_leftx2,W
-        mullw   2						; win_leftx2 x 2 -> PRODH:PRODL
-        rcall   pixel_write_col320      ; Start Address Vertical (.0 - .319)
-        rcall   half_pixel_write        ; Write this half-one.
-
-        movf   win_leftx2,W	        ; Address of next one
-        mullw   2
-        infsnz  PRODL                   ; +1
-        incf    PRODH
-    	rcall   pixel_write_col320
-    	bra     half_pixel_write        ; Note: Cmd 0x20 is mandatory, because
-    	                                ; of the autoincrement going vertical
+	movf	win_leftx2,W
+	mullw	2						; win_leftx2 x 2 -> PRODH:PRODL
+	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
+	rcall	half_pixel_write		; Write this half-one.
+	movf	win_leftx2,W			; Address of next one
+	mullw	2
+	infsnz	PRODL					; +1
+	incf	PRODH
+	rcall	pixel_write_col320
+	bra		half_pixel_write		; Note: Cmd 0x20 is mandatory, because
+									; of the auto-increment going vertical
 
 	global	pixel_write_col320
 pixel_write_col320:
-        btfsc   screen_type             ; display1?
-        bra     pixel_write_col320_d1   ; Yes
-        ; Display0
-    	btfss  flip_screen              ; 180° rotation?
-        bra    pixel_write_noflip_H     ; No
-        bra    pixel_write_flip_H       ; Yes
-pixel_write_col320_d1:                  ; Display1
-    	btfsc  flip_screen              ; 180° rotation?
-        bra    pixel_write_noflip_H     ; Yes for d1
-pixel_write_flip_H: ; Flip d0
-        movf    PRODL,W                 ; 16bits 319 - PROD --> PROD
-        sublw   LOW(.319)               ; 319-W --> W
-        movwf   PRODL
-        movf    PRODH,W
-        btfss   STATUS,C                ; Borrow = /CARRY
-        incf    WREG
-        sublw   HIGH(.319)
-        movwf   PRODH
+	btfsc	screen_type				; display1?
+	bra		pixel_write_col320_d1	; Yes
+	; Display0
+	btfss	flip_screen				; 180° rotation?
+	bra		pixel_write_noflip_H	; No
+	bra		pixel_write_flip_H		; Yes
+pixel_write_col320_d1:				; Display1
+	btfsc	flip_screen				; 180° rotation?
+	bra	pixel_write_noflip_H		; Yes for d1
+pixel_write_flip_H:					; Flip d0
+	movf	PRODL,W					; 16bits 319 - PROD --> PROD
+	sublw	LOW(.319)				; 319-W --> W
+	movwf	PRODL
+	movf	PRODH,W
+	btfss	STATUS,C				; Borrow = /CARRY
+	incf	WREG
+	sublw	HIGH(.319)
+	movwf	PRODH
 
 pixel_write_noflip_H:
-		Index_out 0x21					; Frame Memory Vertical Address
-		bra     TFT_DataWrite_PROD      ; and return...
+	Index_out 0x21					; Frame Memory Vertical Address
+	bra		TFT_DataWrite_PROD		; and return...
 
 ;-----------------------------------------------------------------------------
 ; Writes one half-pixel at position (win_top,win_leftx2).
 ; Inputs: win_leftx2, win_top, win_color:2
 ; Trashed: WREG, PROD
-        global  half_pixel_write
+
+	global	half_pixel_write
 half_pixel_write:
-    	movf  	win_top,W               ; d'0' ... d'239'
-    ; Variant with Y position in WREG.
+	movf	win_top,W				; d'0' ... d'239'
+	; Variant with Y position in WREG.
 half_pixel_write_1:
-    	btfss   flip_screen             ; 180° rotation?
-    	sublw   .239                    ; 239-Y --> Y
-        mullw   1                       ; Copy row to PRODL (PRODH=0)
-		Index_out 0x20                  ; Frame Memory Horizontal Address
-		rcall   TFT_DataWrite_PROD
+	btfss	flip_screen				; 180° rotation?
+	sublw	.239					; 239-Y --> Y
+	mullw	.1						; Copy row to PRODL (PRODH=0)
+	Index_out 0x20					; Frame Memory Horizontal Address
+	rcall	TFT_DataWrite_PROD
 
-		Index_out 0x22                  ; Frame Memory Data Write start
-		RS_H				; Data
-		bcf	INTCON,GIE
-		movff	win_color1,PORTA		; Upper
-		movff	win_color2,PORTH		; Lower
-		WR_L
-		WR_H				; Tick
-		bsf	INTCON,GIE
-    	return
+	Index_out 0x22					; Frame Memory Data Write start
+	RS_H							; Data
+	bcf		INTCON,GIE
+	movff	win_color1,PORTA		; Upper
+	movff	win_color2,PORTH		; Lower
+	WR_L
+	WR_H							; Tick
+	bsf		INTCON,GIE
+	return
 
 ;-----------------------------------------------------------------------------
 ; Writes a vertical line of half-pixel at position (win_top,win_leftx2,win_height).
 ; Inputs: win_leftx2, win_top, win_height, win_color:2
 ; Trashed: WREG, PROD, TABLAT, TBLPTRL
+
 	global	half_vertical_line
 half_vertical_line:
-        clrf    TABLAT                  ; Loop index.
+	clrf	TABLAT					; Loop index.
 
 half_vertical_line_loop:
-        movf	win_leftx2,W	        ; Init X position.
-        mullw   2
-        movf    TABLAT,W                ; Get loop index
-        andlw   1                       ; Just low bit
-        xorwf   PRODL,F                 ; And use it to jitter current X position
-        rcall   pixel_write_col320      ; Start Address Vertical (.0 - .319)
+	movf	win_leftx2,W			; Init X position.
+	mullw	.2
+	movf	TABLAT,W				; Get loop index
+	andlw	.1						; Just low bit
+	xorwf	PRODL,F					; And use it to jitter current X position
+	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
 
-        movf    win_height,W            ; Index reached height (Bank0 read) ?
-        xorwf   TABLAT,W
-        btfsc   STATUS,Z                ; Equals ?
-        return                          ; Yes: done.
-        movf    win_top,W              ; Y = top + index (Bank0 read)
-        addwf   TABLAT,W
-        rcall   half_pixel_write_1
-        incf    TABLAT,F                ; index++
-        bra     half_vertical_line_loop
+	movf	win_height,W			; Index reached height (Bank0 read) ?
+	xorwf	TABLAT,W
+	btfsc	STATUS,Z				; Equals ?
+	return							; Yes: done.
+	movf	win_top,W				; Y = top + index (Bank0 read)
+	addwf	TABLAT,W
+	rcall	half_pixel_write_1
+	incf	TABLAT,F				; index++
+	bra		half_vertical_line_loop
 
 ;-----------------------------------------------------------------------------
 ; Writes a horizontal line of half-pixel at position (win_top,win_leftx2,win_width).
 ; Inputs: win_leftx2, win_top, win_width, win_color:2
 ; Trashed: WREG, PROD, TABLAT, TBLPTRL
+
 	global	half_horizontal_line
 half_horizontal_line:
-        clrf    TABLAT                  ; Loop index.
+	clrf	TABLAT					; Loop index.
 
 half_horizontal_line_loop:
-        movf   win_leftx2,W	        ; Init X position.
-        mullw   2
-        rcall   pixel_write_col320      ; Start Address Vertical (.0 - .319)
-        movf    win_width,W             ; Index reached height (Bank0 read) ?
-        xorwf   TABLAT,W
-        btfsc   STATUS,Z                ; Equals ?
-        return                          ; Yes: done.
-        movf    win_top,W               ; Y = top + index (Bank0 read)
-        addwf   TABLAT,W
-        rcall   half_pixel_write_1
-        incf    TABLAT,F                ; index++
-        bra     half_horizontal_line_loop
+	movf	win_leftx2,W			; Init X position.
+	mullw	.2
+	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
+	movf	win_width,W				; Index reached height (Bank0 read) ?
+	xorwf	TABLAT,W
+	btfsc	STATUS,Z				; Equals ?
+	return							; Yes: done.
+	movf	win_top,W				; Y = top + index (Bank0 read)
+	addwf	TABLAT,W
+	rcall	half_pixel_write_1
+	incf	TABLAT,F				; index++
+	bra		half_horizontal_line_loop
 
 
 ;-----------------------------------------------------------------------------
 ; TFT Data Cmd via W
-;
-    global  TFT_DataWrite_PROD
+
+	global	TFT_DataWrite_PROD
 TFT_DataWrite_PROD:
-;	RD_H				; Keep high
-	RS_H				; Data
-	bcf	INTCON,GIE
-	movff	PRODH,PORTA	; Move high byte to PORTA
-	movff	PRODL,PORTH	; Move low byte to PORTH
+;	RD_H							; Keep high
+	RS_H							; Data
+	bcf		INTCON,GIE
+	movff	PRODH,PORTA				; Move high byte to PORTA
+	movff	PRODL,PORTH				; Move low byte to PORTH
 	WR_L
-	WR_H                ; Tick
-	bsf	INTCON,GIE
+	WR_H							; Tick
+	bsf		INTCON,GIE
 	return
 
 TFT_DataRead_PROD:
-    Index_out 0x22                  ; Frame Memory Data Read start
+	Index_out 0x22					; Frame Memory Data Read start
 TFT_CmdRead_PROD:
-    setf    TRISA                   ; PortA as input.
-    setf    TRISH                   ; PortH as input.
-	RS_H				; Data
-	WR_H                ; Not write
-	RD_L                ; Read!
-    nop
-    nop
-    nop
-	RD_H				; Tick
-    nop
-    nop
-    nop
-	RD_L                ; Read!
-    nop
- ;   nop
- ;   nop
-    movff   PORTA,PRODH
-    movff   PORTH,PRODL
-	RD_H				; Tick
-    nop
-    clrf    TRISA                   ; PortA as output
-    clrf    TRISH                   ; PortH as output
+	setf	TRISA					; PortA as input.
+	setf	TRISH					; PortH as input.
+	RS_H							; Data
+	WR_H							; Not write
+	RD_L							; Read!
+	nop
+	nop
+	nop
+	RD_H							; Tick
+	nop
+	nop
+	nop
+	RD_L							; Read!
+	nop
+	;nop
+	;nop
+	movff	PORTA,PRODH
+	movff	PORTH,PRODL
+	RD_H							; Tick
+	nop
+	clrf	TRISA					; PortA as output
+	clrf	TRISH					; PortH as output
 	return
 
 ;=============================================================================
@@ -692,235 +681,234 @@
 ; Inputs : win_top, win_leftx2, win_height, win_width.
 ; Output : PortA/PortH commands.
 ; Trashed: PROD
-;
-        global  TFT_box_write
+
+	global	TFT_box_write
 TFT_box_write:
-	movf	win_leftx2,W            ; Compute left = 2*leftx2 --> PROD
+	movf	win_leftx2,W			; Compute left = 2*leftx2 --> PROD
 	mullw	2
 
-        global  TFT_box_write_16bit_win_left
-TFT_box_write_16bit_win_left:           ; With column in PRODL:PRODH
-        btfsc   screen_type             ; display1?
-        bra     TFT_box_write_16bit_win_left_d1 ; Yes
-        ; Display0
-    	btfsc  flip_screen              ; 180° rotation?
-    	bra    DISP_box_flip_H          ; Yes
-        bra     TFT_box_write_16bit_win_left_com    ; No
-TFT_box_write_16bit_win_left_d1:        ; Display1
-    	btfss  flip_screen              ; 180° rotation?
-    	bra    DISP_box_flip_H          ; No for d1
-        ; Yes for d1
+	global	TFT_box_write_16bit_win_left
+TFT_box_write_16bit_win_left:					; With column in PRODL:PRODH
+	btfsc	screen_type							; display1?
+	bra		TFT_box_write_16bit_win_left_d1		; Yes
+	; Display0
+	btfsc	flip_screen							; 180° rotation?
+	bra		DISP_box_flip_H						; Yes
+	bra		TFT_box_write_16bit_win_left_com	; No
+TFT_box_write_16bit_win_left_d1:				; Display1
+	btfss	flip_screen							; 180° rotation?
+	bra		DISP_box_flip_H						; No for d1
+	; Yes for d1
 TFT_box_write_16bit_win_left_com:
-        ;---- Normal horizontal window ---------------------------------------
-	Index_out 0x52				; Window Vertical Start Address
-	rcall   TFT_DataWrite_PROD          ; Output left
-	Index_out 0x21				; Frame Memory Vertical Address
-	rcall   TFT_DataWrite_PROD			; Output left
+	;---- Normal horizontal window ---------------------------------------
+	Index_out 0x52					; Window Vertical Start Address
+	rcall	TFT_DataWrite_PROD		; Output left
+	Index_out 0x21					; Frame Memory Vertical Address
+	rcall	TFT_DataWrite_PROD		; Output left
 
-	movf	win_width+0,W   	    ; right = left + width - 1
+	movf	win_width+0,W			; right = left + width - 1
 	addwf	PRODL,F
 	movf	win_width+1,W
 	addwfc	PRODH,F
-	decf	PRODL,F			    ; decrement result
-	btfss   STATUS,C
+	decf	PRODL,F					; decrement result
+	btfss	STATUS,C
 	decf	PRODH,F
 
-	Index_out 0x53				; Window Vertical End Address
-	rcall   TFT_DataWrite_PROD
-	bra     DISP_box_noflip_H
+	Index_out 0x53					; Window Vertical End Address
+	rcall	TFT_DataWrite_PROD
+	bra		DISP_box_noflip_H
 
-        ;---- Flipped horizontal window --------------------------------------
+	;---- Flipped horizontal window --------------------------------------
 DISP_box_flip_H:
-        movf    PRODL,W                 ; 16bits 319 - PROD --> PROD
-        sublw   LOW(.319)               ; 319-W --> W
-        movwf   PRODL
-        movf    PRODH,W
-        btfss   STATUS,C                ; Borrow = /CARRY
-        incf    WREG
-        sublw   HIGH(.319)
-        movwf   PRODH
+	movf	PRODL,W					; 16bits 319 - PROD --> PROD
+	sublw	LOW(.319)				; 319-W --> W
+	movwf	PRODL
+	movf	PRODH,W
+	btfss	STATUS,C				; Borrow = /CARRY
+	incf	WREG
+	sublw	HIGH(.319)
+	movwf	PRODH
 
-  	Index_out 0x53				; Window Vertical Start Address
-	rcall   TFT_DataWrite_PROD  ; Output left
-	Index_out 0x21				; Frame Memory Vertical Address
-	rcall   TFT_DataWrite_PROD	; Output left
+	Index_out 0x53					; Window Vertical Start Address
+	rcall	TFT_DataWrite_PROD		; Output left
+	Index_out 0x21					; Frame Memory Vertical Address
+	rcall	TFT_DataWrite_PROD		; Output left
 
-        movf    win_width+0,W           ; 16bits PROD - width --> PROD
-        subwf   PRODL,F                 ; PRODL - WREG --> PRODL
-        movf    win_width+1,W
-        subwfb  PRODH,F
-        infsnz  PRODL                   ; PROD+1 --> PROD
-        incf    PRODH
+	movf	win_width+0,W			; 16bits PROD - width --> PROD
+	subwf	PRODL,F					; PRODL - WREG --> PRODL
+	movf	win_width+1,W
+	subwfb	PRODH,F
+	infsnz	PRODL					; PROD+1 --> PROD
+	incf	PRODH
 
-	Index_out 0x52				; Window Vertical End Address
-	rcall   TFT_DataWrite_PROD
+	Index_out 0x52					; Window Vertical End Address
+	rcall	TFT_DataWrite_PROD
 
 DISP_box_noflip_H:
-    	btfss   flip_screen             ; 180° rotation ?
-    	bra     TFT_box_noflip_V        ; No.
+	btfss	flip_screen				; 180° rotation ?
+	bra		TFT_box_noflip_V		; No.
 
-   ;---- Flipped vertical window -----------------------------------------
-	movff	win_top,PRODH           ; top --> PRODH (first byte)
-	movf    win_height,W
-	addwf   PRODH,W
+	;---- Flipped vertical window -----------------------------------------
+	movff	win_top,PRODH			; top --> PRODH (first byte)
+	movf	win_height,W
+	addwf	PRODH,W
 	decf	WREG
-	movwf	PRODL                   ; top+height-1 --> PRODL (second byte)
+	movwf	PRODL					; top+height-1 --> PRODL (second byte)
 
-	Index_out 0x50				; Window Horizontal Start Address
+	Index_out 0x50					; Window Horizontal Start Address
 	movf	PRODH,W
-	rcall	TFT_DataWrite		; Lower (and tick)
-
-	Index_out 0x51				; Window Horizontal End Address
-	movf	PRODL,W
-	rcall	TFT_DataWrite		; Lower (and tick)
+	rcall	TFT_DataWrite			; Lower (and tick)
 
-	Index_out 0x20				; Frame Memory Horizontal Address
+	Index_out 0x51					; Window Horizontal End Address
+	movf	PRODL,W
+	rcall	TFT_DataWrite			; Lower (and tick)
+
+	Index_out 0x20					; Frame Memory Horizontal Address
 	movf	PRODH,W
-	bra	TFT_DataWrite		; Lower (and tick) and return
-;	return
-
+	bra		TFT_DataWrite			; Lower (and tick) and return
 
 TFT_box_noflip_V:
-        ;---- Normal vertical window ----------------------------------------
-	movff   win_top,PRODL
-	movf    win_height,W
-	addwf   PRODL,W
-	sublw   .240                 ; 240 - top - height
-	movwf   PRODH                ; First byte
+	;---- Normal vertical window ----------------------------------------
+	movff	win_top,PRODL
+	movf	win_height,W
+	addwf	PRODL,W
+	sublw	.240					; 240 - top - height
+	movwf	PRODH					; First byte
 
 	movf	PRODL,W
-	sublw   .239                ; 239-top
-	movwf   PRODL               ; --> second byte.
+	sublw	.239					; 239-top
+	movwf	PRODL					; --> second byte.
 
-	Index_out 0x50				; Window Horizontal Start Address
+	Index_out 0x50					; Window Horizontal Start Address
 	movf	PRODH,W
-	rcall	TFT_DataWrite		; Lower (and tick)
+	rcall	TFT_DataWrite			; Lower (and tick)
 
-	Index_out 0x51				; Window Horizontal End Address
+	Index_out 0x51					; Window Horizontal End Address
 	movf	PRODL,W
-	rcall	TFT_DataWrite		; Lower (and tick)
+	rcall	TFT_DataWrite			; Lower (and tick)
 
-	Index_out 0x20				; Frame Memory Horizontal Address
+	Index_out 0x20					; Frame Memory Horizontal Address
 	movf	PRODL,W
-	bra	TFT_DataWrite		; Lower (and tick)  and return
-;	return
+	bra		TFT_DataWrite			; Lower (and tick) and return
+
 
 ;=============================================================================
 ; TFT_frame : draw 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
-    global  TFT_frame
-TFT_frame:
-    movff   win_top,save_top            ; Backup everything.
-    movff   win_height,save_height
-    movff   win_leftx2,save_left
-    movff   win_width,save_width
 
-    ;---- TOP line -----------------------------------------------------------
-    movlw   1                           ; row ~ height=1
-    movwf   win_height
-    rcall   TFT_box
+	global	TFT_frame
+TFT_frame:
+	movff	win_top,save_top		; Backup everything.
+	movff	win_height,save_height
+	movff	win_leftx2,save_left
+	movff	win_width,save_width
 
-    ;---- BOTTOM line --------------------------------------------------------
-    movff   save_top,PRODL               ; Get back top,
-    movff   save_height,WREG             ; and height
-    addwf   PRODL,W                      ; top+height
-    decf    WREG                         ; top+height-1
-    movwf   win_top			 ; top+height-1 --> top
-    rcall   TFT_box                        
+	;---- TOP line -----------------------------------------------------------
+	movlw	.1						; row ~ height=1
+	movwf	win_height
+	rcall	TFT_box
 
-    ;---- LEFT column --------------------------------------------------------
-    movff   save_top,win_top             ; Restore top/height.
-    movff   save_height,win_height
-    movlw   1                               ; column ~ width=1
-    movwf   win_width+0
-    rcall   TFT_box
+	;---- BOTTOM line --------------------------------------------------------
+	movff	save_top,PRODL			; Get back top,
+	movff	save_height,WREG		; and height
+	addwf	PRODL,W					; top+height
+	decf	WREG					; top+height-1
+	movwf	win_top					; top+height-1 --> top
+	rcall	TFT_box
 
-    ;---- RIGHT column -------------------------------------------------------
-    movff   save_left,WREG
-    movff   save_width,PRODL
-    addwf   PRODL,W
-    decf    WREG
-    movwf   win_leftx2
-    rcall    TFT_box
-    
-    ;---- Restore everything -------------------------------------------------
-    movff   save_left,win_leftx2
-    movff   save_width,win_width
-    return
+	;---- LEFT column --------------------------------------------------------
+	movff	save_top,win_top		; Restore top/height.
+	movff	save_height,win_height
+	movlw	.1						; column ~ width=1
+	movwf	win_width+0
+	rcall	TFT_box
+
+	;---- RIGHT column -------------------------------------------------------
+	movff	save_left,WREG
+	movff	save_width,PRODL
+	addwf	PRODL,W
+	decf	WREG
+	movwf	win_leftx2
+	rcall	TFT_box
+
+	;---- Restore everything -------------------------------------------------
+	movff	save_left,win_leftx2
+	movff	save_width,win_width
+	return
 
 ;=============================================================================
 ; TFT_box : fills current box with current color.
 ; Inputs:  win_top, win_leftx2, win_height, win_width, win_color1, win_color2
 ; Outputs: (none)
 ; Trashed: WREG, PROD
-    global  TFT_box
 
+	global	TFT_box
 TFT_box:
-    ;---- Define Window ------------------------------------------------------
-    bcf     STATUS,C
-    rlcf    win_width+0,F
-    rlcf    win_width+1,F		    ; x2
-    rcall   TFT_box_write               ; Setup box
+	;---- Define Window ------------------------------------------------------
+	bcf		STATUS,C
+	rlcf	win_width+0,F
+	rlcf	win_width+1,F			; x2
+	rcall	TFT_box_write			; Setup box
 
-    global  TFT_box_16bit_win_left
+	global	TFT_box_16bit_win_left
 TFT_box_16bit_win_left:
-    bcf     STATUS,C
-    rrcf    win_width+1,F               ; width /= 2
-    rrcf    win_width+0,F
+	bcf		STATUS,C
+	rrcf	win_width+1,F			; width /= 2
+	rrcf	win_width+0,F
 
-    ;---- Fill Window --------------------------------------------------------
-    Index_out 0x22						; Frame Memory Data Write start
+	;---- Fill Window --------------------------------------------------------
+	Index_out 0x22					; Frame Memory Data Write start
 
-    clrf	PRODH                       ; Column counter.
-    RS_H				; Data
+	clrf	PRODH					; Column counter.
+	RS_H							; Data
 
-TFT_box2:                              ; Loop height times
+TFT_box2:							; Loop height times
 	movff	win_height,PRODL
 
-TFT_box3:                              ; loop width times
+TFT_box3:							; loop width times
 	bcf	INTCON,GIE
-	movff	win_color1,PORTA			; Upper
-	movff	win_color2,PORTH			; Lower
+	movff	win_color1,PORTA		; Upper
+	movff	win_color2,PORTH		; Lower
 	WR_L
-	WR_H				; Tick
-;
-;	movff	win_color1,PORTA			; Upper
-;	movff	win_color2,PORTH			; Lower
+	WR_H							; Tick
+
+;	movff	win_color1,PORTA		; Upper
+;	movff	win_color2,PORTH		; Lower
 	WR_L
-	WR_H				; Tick
-	bsf	INTCON,GIE
-	decfsz	PRODL,F                     ; row loop finished ?
-	bra	TFT_box3                   ; No: continue.
+	WR_H							; Tick
+	bsf		INTCON,GIE
+	decfsz	PRODL,F					; row loop finished ?
+	bra		TFT_box3				; No: continue.
 
-    incf    PRODH,F                     ; column count ++
+	incf	PRODH,F					; column count ++
 
-    movf    win_bargraph,W             ; current column == bargraph ?
-    cpfseq  PRODH
-    bra     TFT_box4                   ; No: just loop.
-    ; Yes: switch to black
-    clrf    win_color1
-    clrf    win_color2
+	movf	win_bargraph,W			; current column == bargraph ?
+	cpfseq	PRODH
+	bra		TFT_box4				; No: just loop.
+	; Yes: switch to black
+	clrf	win_color1
+	clrf	win_color2
 TFT_box4:
-    movf    win_width+0,W               ; compare ?
-    xorwf   PRODH,W
-    bnz     TFT_box2                    ; Loop not finished.
+	movf	win_width+0,W			; compare ?
+	xorwf	PRODH,W
+	bnz		TFT_box2				; Loop not finished.
 
-    movlw	0x00                        ; NOP, to stop window mode
-    rcall   TFT_CmdWrite
+	movlw	0x00					; NOP, to stop window mode
+	rcall	TFT_CmdWrite
 
-    ; Reset bargraph mode...
-    setf	win_bargraph
-    return
+	; Reset bargraph mode...
+	setf	win_bargraph
+	return
 
 ;=============================================================================
 ;Converts 8Bit RGB b'RRRGGGBB' into 16Bit RGB b'RRRRRGGGGGGBBBBB'
-    global  TFT_set_color
 
+	global	TFT_set_color
 TFT_set_color:
 	movwf	tft_temp1				; Get 8Bit RGB b'RRRGGGBB'
-	movwf   tft_temp2               ; Copy
+	movwf	tft_temp2				; Copy
 
 	; Mask Bit 7,6,5,4,3,2
 	movlw	b'00000011'
@@ -935,7 +923,7 @@
 	movlw	b'11111000'
 	movwf	tft_temp3				; Blue done.
 
-	movff	tft_temp1,	tft_temp2	; Copy
+	movff	tft_temp1,tft_temp2		; Copy
 	; Mask Bit 7,6,5,1,0
 	movlw	b'00011100'
 	andwf	tft_temp2,F
@@ -957,7 +945,7 @@
 	movlw	b'00100000'
 	dcfsnz	tft_temp2,F
 	movlw	b'00111111'
-	movwf	tft_temp4			
+	movwf	tft_temp4
 
 	rrcf	tft_temp4,F
 	rrcf	tft_temp3,F
@@ -966,10 +954,10 @@
 	rrcf	tft_temp3,F
 
 	rrcf	tft_temp4,F
-	rrcf	tft_temp3,W		; tft_temp3 (b'GGGBBBBB') done.
-	movwf	win_color2		; Set Color registers...
+	rrcf	tft_temp3,W				; tft_temp3 (b'GGGBBBBB') done.
+	movwf	win_color2				; Set Color registers...
 
-	movff	tft_temp1,	tft_temp2	; Copy
+	movff	tft_temp1,tft_temp2		; Copy
 	clrf	tft_temp1
 
 	rrcf	tft_temp4,F
@@ -979,7 +967,7 @@
 	rrcf	tft_temp1,F
 
 	rrcf	tft_temp4,F
-	rrcf	tft_temp1,F		; Green done.
+	rrcf	tft_temp1,F				; Green done.
 
 	; Mask Bit 4,3,2,1,0
 	movlw	b'11100000'
@@ -1006,7 +994,7 @@
 	movlw	b'00100000'
 	dcfsnz	tft_temp2,F
 	movlw	b'00111111'
-	movwf	tft_temp4			
+	movwf	tft_temp4
 
 	rrcf	tft_temp4,F
 	rrcf	tft_temp1,F
@@ -1021,88 +1009,88 @@
 	rrcf	tft_temp1,F
 
 	rrcf	tft_temp4,F
-	rrcf	tft_temp1,W		; Red done.
-	movwf	win_color1		; Set Color registers...
+	rrcf	tft_temp1,W				; Red done.
+	movwf	win_color1				; Set Color registers...
 	return
 
 ;=============================================================================
 ; Dump screen contents to the UART
 
-    global  TFT_dump_screen
+	global	TFT_dump_screen
 TFT_dump_screen:
-    bsf         no_sensor_int
-	movlw	    'l'
-	movwf	    TXREG                   ; Send command echo.
-    call		rs232_wait_tx           ; wait for UART
-    ;---- Send DISPLAY box command for the full screen window -------------------
-	Index_out 0x50				; Window Horizontal Start Address
-	Parameter_out 0x00, 0x00	; 0-239
-	Index_out 0x51				; Window Horizontal End Address
-	Parameter_out 0x00, 0xEF	; 0-239
-	Index_out 0x52				; Window Vertical Start Address
-	Parameter_out 0x00, 0x00	; 0-319
-	Index_out 0x53				; Window Vertical End Address
-	Parameter_out 0x01, 0x3F	; 0-319
+	bsf		no_sensor_int
+	movlw	'l'
+	movwf	TXREG					; Send command echo.
+	call	rs232_wait_tx			; wait for UART
+	;---- Send DISPLAY box command for the full screen window -------------------
+	Index_out 0x50					; Window Horizontal Start Address
+	Parameter_out 0x00, 0x00		; 0-239
+	Index_out 0x51					; Window Horizontal End Address
+	Parameter_out 0x00, 0xEF		; 0-239
+	Index_out 0x52					; Window Vertical Start Address
+	Parameter_out 0x00, 0x00		; 0-319
+	Index_out 0x53					; Window Vertical End Address
+	Parameter_out 0x01, 0x3F		; 0-319
 
-    clrf        ds_column
-    rcall       dump_screen_pixel_reset
+	clrf	ds_column
+	rcall	dump_screen_pixel_reset
 dump_screen_1:
-    btg         LEDr                 ; LED activity toggle
-    ; Dump even column
-	movlw	    .240                 ; 240 lines, once.
-	movwf	    ds_line
+	btg		LEDr					; LED activity toggle
+	; Dump even column
+	movlw	.240					; 240 lines, once.
+	movwf	ds_line
 dump_screen_2:
-	Index_out   0x20				; Frame Memory Horizontal Address
-    movff       ds_line,WREG        ; d'0' ... d'239'
-   	mullw       1                   ; Copy row to PRODH:L
-	rcall       TFT_DataWrite_PROD
+	Index_out	0x20				; Frame Memory Horizontal Address
+	movff	ds_line,WREG			; d'0' ... d'239'
+	mullw	.1						; Copy row to PRODH:L
+	rcall	TFT_DataWrite_PROD
 
-    movff       ds_column,WREG     ; Init X position.
-    mullw       2
-    rcall       pixel_write_col320  ; Start Address Vertical (.0 - .319)
+	movff	ds_column,WREG			; Init X position.
+	mullw	2
+	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
 
-    rcall       TFT_DataRead_PROD      ; read pixel
-    rcall       dump_screen_pixel
+	rcall	TFT_DataRead_PROD		; read pixel
+	rcall	dump_screen_pixel
 
-    decfsz	    ds_line,F
-    bra		    dump_screen_2
-    rcall       dump_screen_pixel_flush
+	decfsz	ds_line,F
+	bra		dump_screen_2
+	rcall	dump_screen_pixel_flush
 
-    ; Dump odd column
-	movlw	    .240                    ; 240 lines, twice.
-	movwf	    ds_line
+	; Dump odd column
+	movlw	.240					; 240 lines, twice.
+	movwf	ds_line
 dump_screen_3:
-	Index_out   0x20				; Frame Memory Horizontal Address
-    movff   	ds_line,WREG        ; d'0' ... d'239'
-   	mullw       1                   ; Copy row to PRODH:L
-	rcall       TFT_DataWrite_PROD
+	Index_out	0x20				; Frame Memory Horizontal Address
+	movff	ds_line,WREG			; d'0' ... d'239'
+	mullw	1						; Copy row to PRODH:L
+	rcall	TFT_DataWrite_PROD
 
-    movff       ds_column,WREG     ; Init X position.
-    mullw       2
-    movlw       .1
-    addwf       PRODL,F
-    movlw       0
-    addwfc      PRODH,F             ; +1
-    rcall       pixel_write_col320  ; Start Address Vertical (.0 - .319)
+	movff	ds_column,WREG			; Init X position.
+	mullw	2
+	movlw	.1
+	addwf	PRODL,F
+	movlw	0
+	addwfc	PRODH,F					; +1
+	rcall	pixel_write_col320		; Start Address Vertical (.0 - .319)
 
-    rcall       TFT_DataRead_PROD      ; read pixel
-    rcall       dump_screen_pixel
+	rcall	TFT_DataRead_PROD		; read pixel
+	rcall	dump_screen_pixel
 
-    decfsz	    ds_line,F
-    bra		    dump_screen_3
-    rcall       dump_screen_pixel_flush
+	decfsz	ds_line,F
+	bra		dump_screen_3
+	rcall	dump_screen_pixel_flush
 
-    incf        ds_column,F
-    movlw       .160
-    cpfseq      ds_column
-    bra		    dump_screen_1
+	incf	ds_column,F
+	movlw	.160
+	cpfseq	ds_column
+	bra		dump_screen_1
 
-    bcf         no_sensor_int
-    clrf        RCREG1              ; Clear receive buffer
-	bcf         RCSTA1,CREN         ; Clear receiver status
-	bsf         RCSTA1,CREN
-    bsf         enable_screen_dumps ; =1: Ignore vin_usb, wait for "l" command (Screen dump)
-    return
+	bcf		no_sensor_int
+	clrf	RCREG1					; Clear receive buffer
+	bcf		RCSTA1,CREN				; Clear receiver status
+	bsf		RCSTA1,CREN
+	bsf		enable_screen_dumps		; =1: Ignore vin_usb, wait for "l" command (Screen dump)
+	return
 
 
 ;=============================================================================
@@ -1114,81 +1102,81 @@
 ;       0ccccccc    : BLACK pixel, repeated ccccccc+1 times (1..128).
 ;       11cccccc    : WHITE pixel, repeated cccccc+1 times (1..64).
 ;       10cccccc HIGH LOW : color pixel (H:L) repeated ccccc+1 times (1..64).
-;
+
 dump_screen_pixel:
-    movf        PRODH,W                 ; Compare pixel-high
-    xorwf       ds_pixel+1,W
-    bnz         dump_screen_pixel_1     ; Different -> dump.
+	movf	PRODH,W					; Compare pixel-high
+	xorwf	ds_pixel+1,W
+	bnz		dump_screen_pixel_1		; Different -> dump.
 
-    movf        PRODL,W                 ; Compare pixel-low
-    xorwf       ds_pixel+0,W
-    bnz         dump_screen_pixel_1     ; Different -> dump.
+	movf	PRODL,W					; Compare pixel-low
+	xorwf	ds_pixel+0,W
+	bnz		dump_screen_pixel_1		; Different -> dump.
 
-    incf        ds_count,F              ; Same color: just increment.
-    return
+	incf	ds_count,F				; Same color: just increment.
+	return
 
-dump_screen_pixel_1:                    ; Send (pixel,count) tuple
-    movf        ds_count,W              ; Is count zero ?
-    bz          dump_screen_pixel_2     ; Yes: skip sending.
+dump_screen_pixel_1:				; Send (pixel,count) tuple
+	movf	ds_count,W				; Is count zero ?
+	bz		dump_screen_pixel_2		; Yes: skip sending.
 
-    movf        ds_pixel+1,W            ; This is a BLACK pixel ?
-    iorwf       ds_pixel+0,W    
-    bz          dump_screen_pix_black   ; YES.
+	movf	ds_pixel+1,W			; This is a BLACK pixel ?
+	iorwf	ds_pixel+0,W
+	bz		dump_screen_pix_black	; YES.
 
-    movf        ds_pixel+1,W            ; This is a white pixel ?
-    andwf       ds_pixel+0,W
-    incf        WREG
-    bz          dump_screen_pix_white   ; YES.
+	movf	ds_pixel+1,W			; This is a white pixel ?
+	andwf	ds_pixel+0,W
+	incf	WREG
+	bz		dump_screen_pix_white	; YES.
 
-    ; No: write the pixel itself...
-    movlw       .64                     ; Max color pixel on a single byte.
-    cpfsgt      ds_count                ; Skip if count > 64
-    movf        ds_count,W              ; W <- min(64,count)
-    subwf       ds_count,F              ; ds_count <- ds_count-W
-    decf        WREG                    ; Save as 0..63
-    iorlw       b'10000000'             ; MARK as a color pixel.
+	; No: write the pixel itself...
+	movlw	.64						; Max color pixel on a single byte.
+	cpfsgt	ds_count				; Skip if count > 64
+	movf	ds_count,W				; W <- min(64,count)
+	subwf	ds_count,F				; ds_count <- ds_count-W
+	decf	WREG					; Save as 0..63
+	iorlw	b'10000000'				; MARK as a color pixel.
 
-    movwf       TXREG
-    call		rs232_wait_tx           ; wait for UART
-    movff       ds_pixel+1,TXREG
-    call		rs232_wait_tx           ; wait for UART
-    movff       ds_pixel+0,TXREG
-    call		rs232_wait_tx           ; wait for UART
-    bra         dump_screen_pixel_1
+	movwf	TXREG
+	call	rs232_wait_tx			; wait for UART
+	movff	ds_pixel+1,TXREG
+	call	rs232_wait_tx			; wait for UART
+	movff	ds_pixel+0,TXREG
+	call	rs232_wait_tx			; wait for UART
+	bra		dump_screen_pixel_1
 
 dump_screen_pixel_2:
-    movff       PRODH,ds_pixel+1        ; Save new pixel color
-    movff       PRODL,ds_pixel+0
-    movlw       1
-    movwf       ds_count                ; And set count=1.
-    return
+	movff	PRODH,ds_pixel+1		; Save new pixel color
+	movff	PRODL,ds_pixel+0
+	movlw	1
+	movwf	ds_count				; And set count=1.
+	return
 
 dump_screen_pix_black:
-    movlw       .128                    ; Max black pixel on a single byte.
-    cpfsgt      ds_count                ; Skip if count > 128
-    movf        ds_count,W              ; W <- min(128,count)
-    subwf       ds_count,F              ; ds_count <- ds_count-W
-    decf        WREG                    ; Save as 0..127
+	movlw	.128					; Max black pixel on a single byte.
+	cpfsgt	ds_count				; Skip if count > 128
+	movf	ds_count,W				; W <- min(128,count)
+	subwf	ds_count,F				; ds_count <- ds_count-W
+	decf	WREG					; Save as 0..127
 dump_screen_pix_3:
-    movwf       TXREG
-    call        rs232_wait_tx
-    bra         dump_screen_pixel_1     ; More to dump ?
+	movwf	TXREG
+	call	rs232_wait_tx
+	bra		dump_screen_pixel_1		; More to dump ?
 
 dump_screen_pix_white:
-    movlw       .64                     ; Max white pixel on a single byte.
-    cpfsgt      ds_count                ; Skip if count > 64
-    movf        ds_count,W              ; W <- min(64,count)
-    subwf       ds_count,F              ; ds_count <- ds_count-W
-    decf        WREG                    ; Save as 0..63
-    iorlw       b'11000000'             ; MARK as a compressed white.
-    bra         dump_screen_pix_3
+	movlw	.64						; Max white pixel on a single byte.
+	cpfsgt	ds_count				; Skip if count > 64
+	movf	ds_count,W				; W <- min(64,count)
+	subwf	ds_count,F				; ds_count <- ds_count-W
+	decf	WREG					; Save as 0..63
+	iorlw	b'11000000'				; MARK as a compressed white.
+	bra		dump_screen_pix_3
 
 dump_screen_pixel_flush:
-    clrf        PRODH
-    clrf        PRODL
-    rcall       dump_screen_pixel_1     ; Send it
+	clrf	PRODH
+	clrf	PRODL
+	rcall	dump_screen_pixel_1		; Send it
 dump_screen_pixel_reset:
-    clrf        ds_count                ; But clear count.
-    return
+	clrf	ds_count				; But clear count.
+	return
 
-    end
\ No newline at end of file
+	END