summaryrefslogtreecommitdiff
path: root/roms/lcd_no_ram.asm
blob: 7616dcfb2ab7696a726f94b6c8e5cc0a568c17f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
PORTB = $6000
PORTA = $6001
DDRB  = $6002
DDRA  = $6003

E     = %10000000
RW    = %01000000
RS    = %00100000

 .org #$f800

reset:
 lda #%11111111			; set output on all pins of PORTB
 sta DDRB

 lda #%11100000			; set output on LCD control pins of PORTA
 sta DDRA

 lda #%00111000			; set 8-bit, 2-line display, 5x8 font
 sta PORTB

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #E				; clear RS/RW, set E, send instruction
 sta PORTA

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #%00001110			; display on, cursor on, no blink
 sta PORTB

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #E				; clear RS/RW, set E, send instruction
 sta PORTA

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #%00000001			; clear display
 sta PORTB

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #E				; clear RS/RW, set E, send instruction
 sta PORTA

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #%00000010			; return home
 sta PORTB

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #E				; clear RS/RW, set E, send instruction
 sta PORTA

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #%00000110			; set entry mode: increment, no shift
 sta PORTB

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #E				; clear RS/RW, set E, send instruction
 sta PORTA

 lda #$0			; clear RS/RW/E
 sta PORTA

 lda #'6'			; data to send
 sta PORTB

 lda #RS			; clear RW, E, set RS for data
 sta PORTA

 lda #( E | RS )		; clear RW, set E/RS, send data
 sta PORTA

 lda #RS			; clear RS, E, keep RS
 sta PORTA

 lda #'5'			; data to send
 sta PORTB

 lda #RS			; clear RW, E, set RS for data
 sta PORTA

 lda #( E | RS )		; clear RW, set E/RS, send data
 sta PORTA

 lda #RS			; clear RS, E, keep RS
 sta PORTA

 lda #'0'			; data to send
 sta PORTB

 lda #RS			; clear RW, E, set RS for data
 sta PORTA

 lda #( E | RS )		; clear RW, set E/RS, send data
 sta PORTA

 lda #RS			; clear RS, E, keep RS
 sta PORTA

 lda #'2'			; data to send
 sta PORTB

 lda #RS			; clear RW, E, set RS for data
 sta PORTA

 lda #( E | RS )		; clear RW, set E/RS, send data
 sta PORTA

 lda #RS			; clear RS, E, keep RS
 sta PORTA

end:
 jmp end

 .org #$fffc
 .word reset
 .word $0000