-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlcd2.s
More file actions
executable file
·160 lines (122 loc) · 1.47 KB
/
Copy pathlcd2.s
File metadata and controls
executable file
·160 lines (122 loc) · 1.47 KB
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
HOME = $02
CLEAR = $01
ENTRY = $06
SETDDRADDR = $80
FUNCSET = $2F
DISPON = $0f
org $8000
reset:
lda #$ff ; Set data direction bits for port B to output
sta $6002 ; Port B's data direction register address
lda #$00 ; Write 0 to Port B pins
sta $6000
main:
jsr initlcd
ldx #"S"
jsr writelcddata
ldx #$81
jsr writelcdcmd
ldx #"h"
jsr writelcddata
ldx #$82
jsr writelcdcmd
ldx #"i"
jsr writelcddata
ldx #$83
jsr writelcdcmd
ldx #"t"
jsr writelcddata
end:
nop
nop
nop
nop
jmp end
initlcd:
pha
txa
pha
php
ldx #$02
jsr writelcdcmd
ldx #$2f
jsr writelcdcmd
ldx #$0f
jsr writelcdcmd
ldx #$01
jsr writelcdcmd
ldx #$80
jsr writelcdcmd
plp
pla
tax
pla
rts
writelcdcmd:
;; opcode passed in X
lda #%01000000 ; E = 1
sta $6000
txa
lsr
lsr
lsr
lsr
ora #$40
sta $6000
lda #%00000000 ; E = 0
sta $6000
lda #%01000000 ; E = 1
sta $6000
txa
and #$0f
ora #$40
sta $6000
lda #%00000000 ; E = 0
sta $6000
jsr delay
rts
writelcddata:
;; data passed in X
lda #%01100000 ; E = 1, RS = 1
sta $6000
txa
lsr
lsr
lsr
lsr
ora #$60
sta $6000
lda #%00000000 ; E = 0
sta $6000
lda #%01000000 ; E = 1
sta $6000
txa
and #$0f
ora #$60
sta $6000
lda #%00000000 ; E = 0
sta $6000
jsr delay
rts
delay:
pha
php
lda #0
delayloop:
sec
adc #0
cmp 128
bne delayloop
plp
pla
rts
nmi:
rti
irq:
inc $0200 ; Increment counter
lda $6001
rti
org $FFFA
word nmi
word reset
word irq