

Codigo:
;----[START OF PPRINT SUBROUTINE]-----------------------------------------------------------
if($ > 2047)
set@page setup@lcd
endif
Call setup@lcd ; Setup the LCD if it hasn"t been setup already
Movwf _PCHAR#DATA
Movwf PP3 ; Save contents of WREG
Movlw 32
Subwf _PCHAR#DATA,F ; Subtract the ASCII offset for the FONT table
; Calculate if we require the new PFONT shift values and how many lines to print
Movfw _GLCD_YPOS ; Have we calculated the info for this line already?
Subwf _GLCD_YPOS#TEMP,W
set@page OVER@PRINT_CALC
Btfsc STATUS,Z
; Goto P@STRT ; No so do the calcs
Goto OVER@PRINT_CALC ; Yes so just print
;P@STRT
Movlw 7 ; Work out how much to shift data
Andwf _GLCD_YPOS,W
Movwf _PSHIFT#LEFT
Movfw _PSHIFT#LEFT ; Calc the lines to print
Addwf _PFONT#HT,W
Movwf PP5
Movfw _GLCD_FLAG ; Clear the control flags
Andlw B"00000111" ; But leave the modifier flags alone
Movwf _GLCD_FLAG
Movlw 9
Subwf _PFONT#HT,W ; Is this > 8 pixels high
Btfsc STATUS,C
; Goto IFTHENEXIT@L1
Bsf TWO_BYTE@FONT ; Yes
;IFTHENEXIT@L1
Movlw 17 ; Is this > 16 pixels high
Subwf _PFONT#HT,W
Btfsc STATUS,C
; Goto IFTHENEXIT@L2
Bsf THREE_BYTE@FONT ; Yes
;IFTHENEXIT@L2
Movlw 9 ; 2 Lines to be printed?
Subwf PP5,W
Btfsc STATUS,C
; Goto IFTHENEXIT@L3
Bsf PYLINE2@REQ ; Yes
;IFTHENEXIT@L3
Movlw 17 ; 3 Lines to be printed?
Subwf PP5,W
Btfsc STATUS,C
; Goto IFTHENEXIT@L4
Bsf PYLINE3@REQ ; Yes
;IFTHENEXIT@L4
Movlw 25 ; 4 Lines to be printed?
Subwf PP5,W
Btfsc STATUS,C
; Goto IFTHENEXIT@L5
Bsf PYLINE4@REQ ; Yes
;IFTHENEXIT@L5
Movfw _PFONT#HT ; Work out no rotates for masks
Sublw 32
Movwf _PPRINT#TEMP2
Movlw 255
Movwf _OVERWRITE#MASK ; _OVERWRITE#MASK = $FFFFFFFF
Movwf _OVERWRITE#MASKH
Movwf _OVERWRITE#MASKHH
Movwf _OVERWRITE#MASKHHH
Incf _PPRINT#TEMP2,F
RR_LOOP@L1 ; Rotate mask first right
Decf _PPRINT#TEMP2,F
set@page RREXIT@L1
Btfsc STATUS,Z
Goto RREXIT@L1
Clrc
Rrf _OVERWRITE#MASKHHH,F
Rrf _OVERWRITE#MASKHH,F
Rrf _OVERWRITE#MASKH,F
Rrf _OVERWRITE#MASK,F
if($ > 2047)
set@page RR_LOOP@L1
endif
Goto RR_LOOP@L1
RREXIT@L1
Movfw _PSHIFT#LEFT
Movwf _PPRINT#TEMP2
Incf _PPRINT#TEMP2,F ; Then left
RL_LOOP@L1
Decf _PPRINT#TEMP2,F
set@page RLEXIT@L1
Btfsc STATUS,Z
Goto RLEXIT@L1
Clrc
Rlf _OVERWRITE#MASK,F
Rlf _OVERWRITE#MASKH,F
Rlf _OVERWRITE#MASKHH,F
Rlf _OVERWRITE#MASKHHH,F
if($ > 2047)
set@page RL_LOOP@L1
endif
Goto RL_LOOP@L1
RLEXIT@L1
Comf _OVERWRITE#MASK,F ; LASTLY INVERT
Comf _OVERWRITE#MASKH,F
Comf _OVERWRITE#MASKHH,F
Comf _OVERWRITE#MASKHHH,F
Movfw _GLCD_YPOS
Movwf _GLCD_YPOS#TEMP ; Make note for next time
Codigo:
/* "1" charwidth: 16 */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0xC0, 0x00, 0x00, /* [ ** ] */
0x00, 0xC0, 0x00, 0x00, /* [ ** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x03, 0xC0, 0x00, 0x00, /* [ **** ] */
0x0F, 0xC0, 0x00, 0x00, /* [ ****** ] */
0x0F, 0xC0, 0x00, 0x00, /* [ ****** ] */
0x0F, 0xC0, 0x00, 0x00, /* [ ****** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x01, 0xC0, 0x00, 0x00, /* [ *** ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
/* "2" charwidth: 18 */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x01, 0xE0, 0x00, 0x00, /* [ **** ] */
0x07, 0xF8, 0x00, 0x00, /* [ ******** ] */
0x0F, 0xFC, 0x00, 0x00, /* [ ********** ] */
0x1E, 0x1E, 0x00, 0x00, /* [ **** **** ] */
0x1C, 0x0E, 0x00, 0x00, /* [ *** *** ] */
0x38, 0x07, 0x00, 0x00, /* [ *** *** ] */
0x38, 0x07, 0x00, 0x00, /* [ *** *** ] */
0x00, 0x07, 0x00, 0x00, /* [ *** ] */
0x00, 0x07, 0x00, 0x00, /* [ *** ] */
0x00, 0x0E, 0x00, 0x00, /* [ *** ] */
0x00, 0x1E, 0x00, 0x00, /* [ **** ] */
0x00, 0x7C, 0x00, 0x00, /* [ ***** ] */
0x01, 0xF8, 0x00, 0x00, /* [ ****** ] */
0x03, 0xE0, 0x00, 0x00, /* [ ***** ] */
0x07, 0x80, 0x00, 0x00, /* [ **** ] */
0x0F, 0x00, 0x00, 0x00, /* [ **** ] */
0x1E, 0x00, 0x00, 0x00, /* [ **** ] */
0x1C, 0x00, 0x00, 0x00, /* [ *** ] */
0x38, 0x00, 0x00, 0x00, /* [ *** ] */
0x38, 0x00, 0x00, 0x00, /* [ *** ] */
0x7F, 0xFF, 0x80, 0x00, /* [ **************** ] */
0x7F, 0xFF, 0x80, 0x00, /* [ **************** ] */
0x7F, 0xFF, 0x80, 0x00, /* [ **************** ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
/* "3" charwidth: 18 */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x01, 0xE0, 0x00, 0x00, /* [ **** ] */
0x07, 0xF8, 0x00, 0x00, /* [ ******** ] */
0x0F, 0xFC, 0x00, 0x00, /* [ ********** ] */
0x1E, 0x1E, 0x00, 0x00, /* [ **** **** ] */
0x1C, 0x0E, 0x00, 0x00, /* [ *** *** ] */
0x38, 0x07, 0x00, 0x00, /* [ *** *** ] */
0x38, 0x07, 0x00, 0x00, /* [ *** *** ] */
0x00, 0x07, 0x00, 0x00, /* [ *** ] */
0x00, 0x0E, 0x00, 0x00, /* [ *** ] */
0x00, 0xFE, 0x00, 0x00, /* [ ******* ] */
0x00, 0xFC, 0x00, 0x00, /* [ ****** ] */
0x00, 0xFE, 0x00, 0x00, /* [ ******* ] */
0x00, 0x0F, 0x00, 0x00, /* [ **** ] */
0x00, 0x07, 0x00, 0x00, /* [ *** ] */
0x00, 0x03, 0x80, 0x00, /* [ *** ] */
0x00, 0x03, 0x80, 0x00, /* [ *** ] */
0x70, 0x03, 0x80, 0x00, /* [ *** *** ] */
0x70, 0x03, 0x80, 0x00, /* [ *** *** ] */
0x38, 0x07, 0x00, 0x00, /* [ *** *** ] */
0x3C, 0x0F, 0x00, 0x00, /* [ **** **** ] */
0x1F, 0xFE, 0x00, 0x00, /* [ ************ ] */
0x0F, 0xFC, 0x00, 0x00, /* [ ********** ] */
0x03, 0xF0, 0x00, 0x00, /* [ ****** ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
0x00, 0x00, 0x00, 0x00, /* [ ] */
Codigo:
dim Courier_New_32 as 0x1200 " posicion del primer word del inicio de la fuente en flash
asm
org Courier_New_32 ; Le decimos al compilador que se ponga en el puntero
; "0" charwidth: 26 */
data 0x00, 0x7F, 0x00, 0x00 ; [ ******* ] */
data 0x01, 0xFF, 0xC0, 0x00 ; [ *********** ] */
data 0x03, 0xFF, 0xE0, 0x00 ; [ ************* ] */
data 0x03, 0xFF, 0xE0, 0x00 ; [ ************* ] */
data 0x07, 0xC1, 0xF0, 0x00 ; [ ***** ***** ] */
data 0x0F, 0x80, 0xF8, 0x00 ; [ ***** ***** ] */
data 0x0F, 0x00, 0x78, 0x00 ; [ **** **** ] */
data 0x0F, 0x00, 0x78, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x1E, 0x00, 0x3C, 0x00 ; [ **** **** ] */
data 0x0F, 0x00, 0x78, 0x00 ; [ **** **** ] */
data 0x0F, 0x00, 0x78, 0x00 ; [ **** **** ] */
data 0x0F, 0x80, 0xF8, 0x00 ; [ ***** ***** ] */
data 0x07, 0xC1, 0xF0, 0x00 ; [ ***** ***** ] */
data 0x03, 0xFF, 0xE0, 0x00 ; [ ************* ] */
data 0x03, 0xFF, 0xE0, 0x00 ; [ ************* ] */
data 0x01, 0xFF, 0xC0, 0x00 ; [ *********** ] */
data 0x00, 0x7F, 0x00, 0x00 ; [ ******* ] */
; "1" charwidth: 26 */
data 0x00, 0x06, 0x00, 0x00 ; [ ** ] */
data 0x00, 0x3E, 0x00, 0x00 ; [ ***** ] */
data 0x03, 0xFE, 0x00, 0x00 ; [ ********* ] */
data 0x0F, 0xFE, 0x00, 0x00 ; [ *********** ] */
data 0x0F, 0xFE, 0x00, 0x00 ; [ *********** ] */
data 0x0F, 0xFE, 0x00, 0x00 ; [ *********** ] */
data 0x07, 0x1E, 0x00, 0x00 ; [ *** **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x00, 0x1E, 0x00, 0x00 ; [ **** ] */
data 0x07, 0xFF, 0xF8, 0x00 ; [ **************** ] */
data 0x0F, 0xFF, 0xFC, 0x00 ; [ ****************** ] */
data 0x0F, 0xFF, 0xFC, 0x00 ; [ ****************** ] */
data 0x07, 0xFF, 0xF8, 0x00 ; [ **************** ] */
endasm
Codigo:
asm
;-----[READ FROM MEMORY A BYTE OF DATA]-------------------------
Posiciona_puntero
movf Direccion,W
bsf STATUS,RP1 ; BANK 2
movwf EEADR
bcf STATUS,RP1 ; BANK 0
movf Direccion + 1,W
bsf STATUS,RP1 ; BANK 2
movwf EEADRH
call readpdata2
return
; Enter here to perform a pre-inc read
Lee_data_flash
Bsf STATUS,RP1 ; BANK 2
Incf EEADR,F ; Increment the address
Skpnz
Incf EEADRH,F
; Enter here to perform a normal read EEADR/EEADRH has to be pre-loaded
readpdata2
Bsf STATUS,RP0
Bsf STATUS,RP1 ; BANK 3
Bsf EECON1,EEPGD ; Instigate the read
Bsf EECON1,RD
Goto $ + 1 ; Waste 2 cycles
Bcf STATUS,RP0 ; Back down to BANK 2
Movfw EEDATA ; the low data into wreg
bcf STATUS,RP1 ; BANK 0
return
endasm