📄 picdream.asm
字号:
; LE 22/08/1997
; Edited with PFE and assembled with MPASM
; Tristan@Club-Internet.fr or F1CJN @ F6KBF.FRPA (by packet radio)
; 5*7 new routines
; 7 characters visible scrolling long text on upper line, yes the pic do it !
; 8 Grey level bars in the middle of the screen
; 4 digits clock in the bottom
; setup of the clock with two push buttons
; the 625 lines TV screen looks like this
; By Alain FORT and Peter KNIGHT
; Free for public domain by Internet
;
; *************
; * T E X T * this line is scrolling to the left
; * grey bars *
; * 12:00 * (This is the clock)
; *************
;
;
TITLE "PICDREAM"
LIST P=16C84
#Define W 0
#Define F 1
cblock 0x00
INDF,RTCC,PCL,Status,FSR,PortA,PortB
endc
cblock 0x08
EEData,EEAdr,PClath,IntCon
endc
cblock 0x00
C,DC,Z,PD,TO,RP0,RP1,IRP
endc
; Page 1 registers
Roption EQU 01H
TrisA EQU 05H
TrisB EQU 06H
RAMbase EQU 0CH
#define Sync PortA,0 ; Synchro out at RA0 (PIN 17)
; 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
Label DECFSZ Delay
GOTO Label
ENDM
SKIPCC MACRO
BTFSC Status,C
ENDM
SKIPNZ MACRO
BTFSC Status,Z
ENDM
LIST
CBLOCK RAMbase
Delay,Count,Count2,Count3,SubSec ; 5 various registers
HrT,HrU,MiT,MiU,SeU ; 5 clock registers
CA0,CA1,CA2,CA3,CA4,CA5,CA6 ; 6 caracters pointers
Ta0,Ta1,Ta2,Ta3,Ta4,Ta5,Ta6,TNB,TNB1 ; 7 caracter lines pointers
Ptrtxt ; 1 text pointer
ENDC
ORG 0
GOTO Main
ORG 4
RETURN
; Table of caracters
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' ; ....***.
;B0 D'70'
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00001000' ; ....*...
RETLW B'00000100' ; .....*..
RETLW B'00000010' ; ......*.
;B3 D'75'
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000010' ; ......*.
RETLW B'00000100' ; .....*..
RETLW B'00001000' ; ....*...
CarSP equ $-Tbase
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
RETLW B'00000000' ; ........
CarA equ $-Tbase
RETLW B'00001110' ; ....***.
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00011111' ; ...*****
CarH equ $-Tbase
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' ; ...*...*
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'00010000' ; ...*....
CarE equ $-Tbase
RETLW B'00011111' ; ...*****
RETLW B'00010000' ; ...*....
RETLW B'00010000' ; ...*....
RETLW B'00011100' ; ...***..
RETLW B'00010000' ; ...*....
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' ; ...*...*
CarG equ $-Tbase
RETLW B'00001110' ; ....***.
RETLW B'00010001' ; ...*...*
RETLW B'00010000' ; ...*....
RETLW B'00010011' ; ...*..**
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
CarQ equ $-Tbase
RETLW B'00001110' ; ....***.
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00010101' ; ...*.*.*
RETLW B'00010011' ; ...*..**
CarS equ $-Tbase
RETLW B'00001110' ; ....***.
RETLW B'00010001' ; ...*...*
RETLW B'00010000' ; ...*....
RETLW B'00001110' ; ....***.
RETLW B'00000001' ; .......*
RETLW B'00010001' ; ...*...*
CarC equ $-Tbase
RETLW B'00001110' ; ....***.
RETLW B'00010001' ; ...*...*
RETLW B'00010000' ; ...*....
RETLW B'00010000' ; ...*....
RETLW B'00010000' ; ...*....
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'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
CarN equ $-Tbase
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00011001' ; ...**..*
RETLW B'00010101' ; ...*.*.*
RETLW B'00010011' ; ...*..**
CarY equ $-Tbase
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00001010' ; ....*.*.
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
CarR equ $-Tbase
RETLW B'00011110' ; ...****.
RETLW B'00010001' ; ...*...*
RETLW B'00010001' ; ...*...*
RETLW B'00011110' ; ...****.
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' ; ...*....
CarT equ $-Tbase
RETLW B'00011111' ; ...*****
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
RETLW B'00000100' ; .....*..
Main
BSF Status,RP0 ; adressing bank 1
MOVLW B'11110'
MOVWF TrisA
MOVLW B'11000000'
MOVWF TrisB ; ports B as outputs except RB7 and RB6
BCF Roption,7 ; we need the integrated pull-up resistors
BCF Status,RP0 ; adressing bank 0 for the rest of the program
CLRF SeU ;Initialisation clock at 00.00
CLRF MiU
CLRF MiT
CLRF HrU
CLRF HrT
CLRF Count3
; Frame starts here.
;
; Frame must be exactly 312.5 Lignes long, each Ligne 64 cycles.
; That ensures frame rate of exactly 50Hz to crystal accuracy.
;5 Long Equalisation pulses
Frame ;Main Loop
BCF Sync ; 1 ;30us Sync
DNOP ; 3
MOVLW 4 ; 4
MOVWF Count ; 5
Loop1 MOVLW 8 ; 6 6
Delay3W ;30 30
BSF Sync ;31 31 ;2us Black
NOP ;32 32
BCF Sync ; 1 1 ;30us Sync
NOP ; 2 2
DECFSZ Count ; - -
GOTO Loop1 ; 5
MOVLW 8 ; 5
Delay3W ; 29
NOP ; 30
BSF Sync ; 31 ;2us Black
NOP ; 32
; Now 5 short equalisation pulses, 4 on interlace
BCF Sync ; 1 ;2us Sync
NOP ; 2
BSF Sync ; 3 ;30us Black
MOVLW 4 ; 4
BTFSC SubSec,0 ; ; 3 on interlace (SubSec odd)
MOVLW 3 ; 6
MOVWF Count ; 7
Loop2 MOVLW 8 ; 8 8 8 8
Delay3W ;32 32 32 32
BCF Sync ; 1 1 1 1 ;2us Sync
NOP ; 2 2 2 2
BSF Sync ; 3 3 3 3 ;30us Black
NOP ; 4 4 4 4
DECFSZ Count ; - - - -
GOTO Loop2 ; 7 7 7
CLRF TNB ; 7 RAZ de TBN a chaque trame
MOVLW 8 ; 8
Delay3W ; 32
; 304 visible Lines
; 41 black Lines
BCF Sync ; 1
MOVLW D'41' ; 2
CALL BlkLns ;64
; **** INIT TEXTE ****** line 42
BCF Sync
Call Preptxt3
; **** INIT TEXTE CONTINUED ****** line 43
BCF Sync
Call Preptxt4
;********** DISPLAY TEXTE ********* ( + 60 lines) = 103
BCF Sync ; 1
CALL DisTxt ;64
; 15 black lines = 118
BCF Sync ; 1
MOVLW D'15' ; 2
CALL BlkLns ;64
; ***** GREY BARS ***** 60 lines = 178
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64 ligne 10
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64 Line 20
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64 Line 30
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64 Line 40
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64 Line 50
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
CALL BARRE ;64
BCF Sync ;1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -