; 13/02/1999 ; Published with PFE and assembled with MPASM ; Indicatif F1CJN ; Email: Tristan@Club-Internet.fr ; Copyright: STRONG Alain and National Association of Télevision Amateur (ANTA) ; Updated by WB8LGA made hardware inprovements (added 74hc4051 ) ; the gave better mixing of the video and Charters.Uses MPLAB IDE ; added scroll pause so the scrolling text can pause when in the center of screen. ; have add so there is 3 screen posistion ,top middle and bottom for the text ; changed the French text in this listing to English. ; My email: cbeener@columbus.rr.com TITLE "Video-OSD" ; PIC On Screen Display LIST P=16F84A ; 16F84A Runs at 4 MHz INCLUDE "p16f84a.inc" __CONFIG _PWRTE_ON & _RC_OSC & _WDT_OFF ; uses 4 MHz crystal ERRORLEVEL -224 ; supress annoying message from tris ERRORLEVEL -302 ; supress message from page change ERRORLEVEL -206 ;if a micro ; Page 1 registers Roption EQU 01H TrisA EQU 05H TrisB EQU 06H RAMbase EQU 0CH #define INTER1 PORTB,5 ; text 3 RB5 (PIN 11) Scrolling message 60 Sec #define INTER2 PORTB,6 ; text 2 RB6 (PIN 12) Text1 #define INTER3 PORTB,7 ; text 1 RB7 (PIN 13) Text2 #define Hsync PORTA,3 ; comp sync horz RA3 (PIN 2) #define VFRAME PORTA,2 ; Vertical sync on RA2 (PIN 1) #define INTER4 PORTA,1 ; 0 = text at bottom 1= text at top #define INTER5 PORTA,0 ; DNOP - Double NOP. Delay of 2 cycles, takes only one instruction DNOP MACRO LOCAL Label Label GOTO Label+1 ENDM ; Delay3W - Delay 3 * W cycles, three instructions Delay3W MACRO LOCAL Label MOVWF Delay ; 1  \ Label DECFSZ Delay,F ; n+1 } 3n GOTO Label ; 2n-2/ ENDM ;STATUS macro instruction SKIPCC MACRO BTFSC STATUS,C ENDM LIST cblock RAMbase ;0x0C Delay CA0 CA1 CA2 CA3 CA4 CA5 CA6 ;characters pointers CA7 CA8 CA9 CA10 Ta0 Ta1 Ta2 Ta3 dd1 Ta4 Ta5 Ta6 Ta7 Ta8 Ta9 dd2 Ta10 TNB TNB1 ;characterr lines pointers PTRTXT ;text pointer DD LIGNE dd3 Trames DelayScroll ScrollTime ENDC ORG 0 GOTO INIT ORG 4 RETFIE ; Table of characters Table ADDWF PCL,F Tbase equ $ Car0 equ $-Tbase CarO equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car1 equ $-Tbase RETLW B'00000100' ; .....*.. RETLW B'00001100' ; ....**.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00001110' ; ....***. Car2 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00000001' ; .......* RETLW B'00000010' ; ......*. RETLW B'00000100' ; .....*.. RETLW B'00001000' ; ....*... RETLW B'00011111' ; ...***** Car3 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ;....*...* RETLW B'00000001' ; .......* RETLW B'00000110' ; .....**. RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car4 equ $-Tbase RETLW B'00000010' ; ......*. RETLW B'00000110' ; .....**. RETLW B'00001010' ; ....*.*. RETLW B'00010010' ; ...*..*. RETLW B'00011111' ; ...***** RETLW B'00000010' ; ......*. RETLW B'00000010' ; ......*. Car5 equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00011110' ; ...****. RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car6 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car7 equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000010' ; ......*. RETLW B'00000010' ; ......*. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. Car8 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. Car9 equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001111' ; ....**** RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* RETLW B'00001110' ; ....***. CarSP equ $-Tbase RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ CarDot equ $-Tbase RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00000000' ; ........ RETLW B'00011000' ; ...**... RETLW B'00011000' ; ...**... CarA equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011111' ; ...***** CarU equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001110' ;.....***. CarD equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarB equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ;....****. CarS equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00001110' ; ....***. RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* CarC equ $-Tbase RETLW B'00011110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarG equ $-Tbase RETLW B'00011110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010011' ; ...*..** RETLW B'00010001' ; ...*...* RETLW B'00001110' ;.....***. CarR equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ; ...****. CarH equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011111' ; ...***** RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarP equ $-Tbase RETLW B'00011110' ; ...****. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011110' ; ...****. CarL equ $-Tbase RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010001' ; ...*...* CarE equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00011100' ; ...***.. RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00011111' ; ...***** CarN equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00011001' ; ...**..* RETLW B'00010101' ; ...*.*.* RETLW B'00010101' ; ...*.*.* RETLW B'00010101' ; ...*.*.* RETLW B'00010011' ; ...*..** RETLW B'00010001' ; ...*...* CarI equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00001110' ; ....***. CarK equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010010' ; ...*..*. RETLW B'00010100' ; ...*.*.. RETLW B'00011000' ; ...**... RETLW B'00010100' ; ...*.*.. RETLW B'00010010' ; ...*..*. CarM equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00011011' ; ...**.** RETLW B'00010101' ; ...*.*.* RETLW B'00010101' ; ...*.*.* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarT equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. RETLW B'00000100' ; .....*.. CarV equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* CarX equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00001010' ; ....*.*. RETLW B'00000100' ; .....*.. RETLW B'00001010' ; ....*.*. CarW equ $-Tbase RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010101' ; ...*.*.* RETLW B'00011011' ; ...**.** RETLW B'00010001' ; ...*...* CarZ equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00000001' ; ...... * RETLW B'00000010' ; ..... *. RETLW B'00000100' ; .... *.. RETLW B'00001000' ; ....*... RETLW B'00010000' ; ...*.... CarF equ $-Tbase RETLW B'00011111' ; ...***** RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00011100' ; ...***.. RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... RETLW B'00010000' ; ...*.... CarJ equ $-Tbase RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00000001' ; .......* RETLW B'00010001' ; ...*...* CarQ equ $-Tbase RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010101' ; ...*.*.* RETLW B'00001110' ; ....***. RETLW B'00000001' ; ......*. INIT CLRW MOVWF LIGNE BSF STATUS,RP0 ; DATA OF THE TEXTS MOVLW B'10111' MOVWF TrisA ; RA3 =S RA2=E RA1=E RA0=E MOVLW B'11100000' ; RB7 and RB6 in entry, others at exit MOVWF TrisB BCF Roption,7 ; entries with pull-up BCF STATUS,RP0 ; one addresses the bank 0 for the continuation of the program movlw D'22' movwf ScrollTime ;***************************************************************************************** ;* PROGRAM PRINCIPAL * ;***************************************************************************************** MAIN ; call Pause NOP M2 BTFSC VFRAME ; VFRAME with 0 ? GOTO M2 ; not one buckles incf DelayScroll,F M3 BTFSS VFRAME ; VFRAME with 1 ? GOTO M3 BSF Hsync ; stop clock BCF Hsync ; go clock MOVLW D'6' ; delai=30 microsecondes approximately Delay3W ; INCF Trames,f ; increment meter of screens S1 BSF Hsync ; stop clock BCF Hsync ; one puts Hsync with 0 in begining watch not CALL PRETXT1 BSF Hsync ;stop the l'clock BCF Hsync ;one puts Hsync with 0 in clock beginning not ; CALL PRETXT2 DNOP BSF Hsync BCF Hsync ;start CALL DLIGNE1 ; LINES NOIRES1 BSF Hsync ;stop BCF Hsync CALL DISTXT ; POSTING TEXT BSF Hsync GOTO M2 ; return to the beginning (detection weaves) ;***************************************************************************************** ;* UNDER PROGRAMS OF COUNTING OF LINES NOT AFFICHEES * ;***************************************************************************************** DLIGNE1 BTFSS INTER4 GOTO DFIN1 BTFSS INTER5 GOTO DFIN2 DFIN0 BSF Hsync ; stop DNOP BCF Hsync ;on met Vert sync 0 in beginning horazonial point INCF LIGNE,F DNOP DNOP MOVF LIGNE,W ADDLW -D'100' ; wait for x number of Horz line SKIPCC ; to reduce "the 220" to have the higher text GOTO DFIN GOTO DLIGNE1 ; not waiting line is turned over DFIN1 BSF Hsync ; stop DNOP BCF Hsync ;on met Vert sync 0 in beginning horazonial point INCF LIGNE,F DNOP DNOP MOVF LIGNE,W ADDLW -D'20' ; wait for x number of Horz line SKIPCC ; to reduce "the 220" to have the higher text GOTO DFIN GOTO DFIN1 ; not waiting line is turned over DFIN2 BSF Hsync ; stop DNOP BCF Hsync ;on met Vert sync 0 in beginning horazonial point INCF LIGNE,F DNOP DNOP MOVF LIGNE,W ADDLW -D'195' ; wait for x number of Horz line SKIPCC ; to reduce "the 220" to have the higher text GOTO DFIN GOTO DFIN2 ; not waiting line is turned over DFIN CLRF LIGNE ; strong current of the meter of lines DFIN3 RETURN ;***************************************************************************************** ;* UNDER PROGRAMME Of POSTING OF The TEXT * ;***************************************************************************************** DISTXT BCF Hsync ; 7 beginning h 1 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 1 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 2 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 2 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 3 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 3 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 4 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 4 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 5 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 5 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 6 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 6 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 7 CALL INCLINE BSF Hsync ; stop BCF Hsync ; 7 beginning h 7 CALL INCLINE2 BSF Hsync ; stop BCF Hsync ; 1 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 2 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 3 beginning h CALL SHOWLINE BSF Hsync ; stop BCF Hsync ; 4 beginning h CALL SHOWLINE BSF Hsync ; stop RETURN ; ;***************************************************************************************** ;* UNDER PROGRAMME Of POSTING Of A LINE * ;***************************************************************************************** SHOWLINE MOVF TNB1,W ; 1 old TNB (without more one) ADDWF CA0,W ; 2 Incline (continuation) CALL Table ; 8 Calculation of Ta0, result in W DNOP DNOP DNOP DNOP DNOP DNOP DNOP DNOP MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta1,W ;character 2 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta2,W ;character 3 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta3,W ;character 4 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta4,W ;character 5 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta5,W ;character 6 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta6,W ;character 7 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta7,W ;character 8 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta8,W ;character 9 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta9,W ;character 10 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB MOVF Ta10,W ;character 11 MOVWF PORTB RLF PORTB,F RLF PORTB,F RLF PORTB,F RLF PORTB,F CLRF PORTB RETURN INCLINE MOVF TNB,W ; MOVWF TNB1 ADDWF CA6,W ; Addition of TNB to the result CALL Table ; Call dela line a number TNB MOVWF Ta6 ; Table TA0 MOVF TNB,W ADDWF CA1,W CALL Table MOVWF Ta1 MOVF TNB,W ADDWF CA2,W CALL Table MOVWF Ta2 MOVF TNB,W ADDWF CA3,W CALL Table MOVWF Ta3 MOVF TNB,W ADDWF CA4,W CALL Table MOVWF Ta4 RETURN INCLINE2 MOVF TNB,W ADDWF CA5,W CALL Table MOVWF Ta5 MOVF TNB,W ADDWF CA7,W CALL Table MOVWF Ta7 MOVF TNB,W ADDWF CA8,W CALL Table MOVWF Ta8 MOVF TNB,W ADDWF CA9,W CALL Table MOVWF Ta9 MOVF TNB,W ADDWF CA10,W CALL Table MOVWF Ta10 INCF TNB,F ; One incremente the vertical pointer RETURN ; ;***************************************************************************************** ;* WHAT PROGRAM TO PREPARATION for displaying * ;***************************************************************************************** Pause MOVF PTRTXT,W SUBLW (P1-Texte) BTFSC STATUS,Z GOTO PAUSE_START MOVF PTRTXT,W SUBLW (P2-Texte) BTFSC STATUS,Z GOTO PAUSE_START MOVF PTRTXT,W SUBLW (P3-Texte) BTFSC STATUS,Z GOTO PAUSE_START MOVF PTRTXT,W SUBLW (P4-Texte) BTFSC STATUS,Z GOTO PAUSE_START MOVF PTRTXT,W SUBLW (P5-Texte) BTFSC STATUS,Z GOTO PAUSE_START MOVLW D'22' MOVWF ScrollTime return PAUSE_START MOVLW D'100' MOVWF ScrollTime return PRETXT1 BTFSC INTER1 ; test interrupt RB5 if = 0 step of scroll GOTO PRS ; RB5=1 Scroll Texte1 BTFSC INTER2 ; test interrupt RB6 si = 0 GOTO PR3 ; RB6=1 BTFSC INTER3 ; test interrupt RB7 if = 0 step of scroll GOTO PR2 ; RB7=1 Fixed Texte1 GOTO PR1 ; RB7=0 Fixed text (spaces one it screen) PRS movf ScrollTime,w subwf DelayScroll,w btfss STATUS,Z goto GT5 clrf DelayScroll call Pause INCF PTRTXT,F ; scrolling one deplace of a notch ; CLRF Trames ; RAZ time meter GOTO GT5 PR3 BTFSS INTER3 ; test interrupteur RB7 si = 0 Text 2 GOTO PR1 ; Text2 fixed PR5 MOVLW (ITexte-Texte) ; on point on Text 3-1 fixed MOVWF PTRTXT GOTO GT5 PR4 MOVLW (MTexte-Texte) ; on point on Text 3-1 fixed MOVWF PTRTXT GOTO GT5 PR2 ; ADDLW (CTexte); compare to text length ; SKIPCC MOVLW (NTexte-Texte) ;CHARLES D'79' ; on point on Text2-1 fixed MOVWF PTRTXT GOTO GT5 PR1 ; ADDLW -(DTexte-DTexte); compare to text length ; SKIPCC MOVLW (CTexte-Texte) ;D'63' ; on point on Texte1-1 fixed MOVWF PTRTXT GOTO GT5 PR0 MOVLW D'9' ; Text fixed (nothing one it screen) on point your text MOVWF PTRTXT GT5 MOVLW HIGH Texte ;prepare to read the text page at 300 MOVWF PCLATH MOVF PTRTXT,W ;first character CALL Texte MOVWF CA0 INCF PTRTXT,F MOVF PTRTXT,W ;Second character CALL Texte MOVWF CA1 INCF PTRTXT,F MOVF PTRTXT,W ;3e character CALL Texte MOVWF CA2 INCF PTRTXT,F MOVF PTRTXT,W ;4e character CALL Texte MOVWF CA3 INCF PTRTXT,F ; RETURN PRETXT2 MOVF PTRTXT,W ;5e character CALL Texte MOVWF CA4 INCF PTRTXT,F MOVF PTRTXT,W ; 6e character CALL Texte MOVWF CA5 INCF PTRTXT,F MOVF PTRTXT,W ;7e character CALL Texte MOVWF CA6 INCF PTRTXT,F MOVF PTRTXT,W ; 8e character CALL Texte MOVWF CA7 INCF PTRTXT,F MOVF PTRTXT,W ;9e character CALL Texte MOVWF CA8 INCF PTRTXT,F MOVF PTRTXT,W ;10e character CALL Texte MOVWF CA9 INCF PTRTXT,F MOVF PTRTXT,W ;11e character CALL Texte MOVWF CA10 MOVLW -D'10' ; 10 for a shift of 11 characters ADDWF PTRTXT,F ; veiled MOVF PTRTXT,W movwf DD ADDLW -(FTexte-STexte);CTexte-STexte comparison with the length of the text movwf DD ; SKIPCC BTFSC STATUS,C CLRF PTRTXT ;RAZ point at the end of scrolling ar CLRF PCLATH ; RAZ PClath for to be able to count table characters in page 0 CLRF TNB ; TNB initialisation ; goto test RETURN ;***************************************************************************************** ;* DATA OF THE TEXTS * ;***************************************************************************************** Org 300 Texte ADDWF PCL,F STexte RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP P1 RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarW RETLW CarB RETLW Car8 RETLW CarL RETLW CarG P2 RETLW CarA RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarC RETLW CarH RETLW CarA RETLW CarR RETLW CarL RETLW CarE P3 RETLW CarS MTexte RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarM RETLW CarA RETLW CarR RETLW CarE RETLW CarN RETLW CarG RETLW CarO P4 RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW Car1 RETLW Car4 RETLW Car7 RETLW CarDot RETLW Car4 RETLW Car5 RETLW CarM RETLW CarH RETLW CarZ RETLW CarSP ITexte P5 RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarC RETLW CarQ RETLW CarSP RETLW CarA RETLW CarT RETLW CarV RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP FTexte equ $-10 ; necessary to the scroll because 11 characters on the screen RETLW CarSP CTexte equ $ ADDWF PCL,F RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarW RETLW CarB RETLW Car8 RETLW CarL RETLW CarG RETLW CarA RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP NTexte ADDWF PCL,F RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarC RETLW CarH RETLW CarA RETLW CarR RETLW CarL RETLW CarE RETLW CarS RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP RETLW CarSP END incf DelayScroll btfss DelayScroll,6 goto GT5 clrf DelayScroll