📄 test1.lst
字号:
Wed Nov 5 2003 14:52 Page 1
***************************************
** Zardoz 65C816 Macro Assembler **
** **
** Version 3.01 - Apr 20 1997 **
***************************************
1 ;//*************************************************************************
2 pw 128
3 CHIP W65C02S
4 .INCLUDE ST22XX.INC
5 .INCLUDE ST2202.DEF
6 ;//*****************Define Data*********************
7 000000FF Stack_Point .equ $ff ;STACK POINT.
8 00000091 Ptr .equ $91
9 00000091 PtrL .equ $91
10 00000092 PtrH .equ $92
11 00000093 Tmp .equ $93
12 00000093 Tmp1 .equ $93
13 00000093 TmpL .equ $93
14 00000094 Tmp2 .equ $94
15 00000094 TmpH .equ $94
16 00000095 Tmp3 .equ $95
17 00000096 Tmp4 .equ $96
18 00000097 LCD_Ptr .equ $97
19 00000097 LCD_PtrL .equ $97
20 00000098 LCD_PtrH .equ $98
21 00000099 CursorX .equ $99
22 0000009A CursorY .equ $9a
23 0000009B StackTmp .equ $9b
24 0000009C Flag .equ $9c
25 0000009D Flag1 .equ $9d
26 0000009E Buff .equ $9e
27 0000009E Buff1 .equ $9e
28 0000009F Buff2 .equ $9f
29
30 000000A0 LCD_SEG .EQU 160
31 00000050 LCD_COM .EQU 80
32 00000200 LCD_START .EQU $0200
33 ;//***********************************************
34 ;PS0 .SECTION
35 ORG $4000
36 00:4000: 4C 30 40 BASETIMER_VT: JMP BASETIMER_ISR
37 00:4003: 4C 38 40 PORT_VT: JMP PORT_ISR
38 00:4006: 4C 31 40 TIMER1_VT: JMP TIMER1_ISR
39 00:4009: 4C 32 40 TIMER0_VT: JMP TIMER0_ISR
40 00:400C: 4C 33 40 DAC_VT: JMP DAC_ISR
41 00:400F: 4C 34 40 INTX_VT: JMP INTX_ISR
42 00:4012: 4C 36 40 NMI_VT: JMP NMI_ISR
43 00:4015: 4C 3D 40 RESET_VT: JMP RESET_ISR
44 00:4018: 4C 37 40 BRK_VT: JMP BRK_ISR
45 00:401B: 4C 35 40 LCDFR_VT: JMP LCDFR_ISR
46
47 00:401E: 4C 33 40 IR14 JMP DAC_ISR ;14;4;FFE0
48 00:4021: 4C 39 40 URX_VT JMP URX_ISR ;13;4;FFE2
49 00:4024: 4C 3A 40 UTX_VT JMP UTX_ISR ;12;4;FFE4
50 00:4027: 4C 3B 40 SRX_VT JMP SRX_ISR ;11;4;FFE6
51 00:402A: 4C 3C 40 STX_VT JMP STX_ISR ;10;4;FFE8
52 00:402D: 4C 35 40 IR07 JMP LCDFR_ISR ;07;5;FFEA
Wed Nov 5 2003 14:52 Page 2
53 BASETIMER_ISR:
54 00:4030: 40 RTI
55 TIMER1_ISR:
56 00:4031: 40 RTI
57 TIMER0_ISR:
58 00:4032: 40 RTI
59 DAC_ISR:
60 00:4033: 40 RTI
61 INTX_ISR:
62 00:4034: 40 RTI
63 LCDFR_ISR:
64 00:4035: 40 RTI
65 NMI_ISR:
66 00:4036: 40 RTI
67 BRK_ISR:
68 00:4037: 40 RTI
69 PORT_ISR:
70 00:4038: 40 RTI
71 URX_ISR:
72 00:4039: 40 RTI
73 UTX_ISR:
74 00:403A: 40 RTI
75 SRX_ISR:
76 00:403B: 40 RTI
77 STX_ISR:
78 00:403C: 40 RTI
79 ;//*******************Main Program**************************
80 RESET_ISR:
81 00:403D: 78 sei
82 00:403E: A2 FF ldx #Stack_Point
83 00:4040: 9A txs
84 00:4041: 20 5E 40 jsr INITIAL_LCD
85 00:4044: 9C 00 02 stz LCD_START
86 00:4047: 20 8D 40 jsr FILL_SCREEN
87 ?loop
88 00:404A: 20 34 41 jsr TEST_LCD_160X80
89 00:404D: A9 1E lda #30
90 00:404F: 20 6D 41 jsr DELAY_TIME
91 00:4052: 20 52 41 jsr TEST_LCD_160X801
92 00:4055: A9 1E lda #30
93 00:4057: 20 6D 41 jsr DELAY_TIME
94 00:405A: 80 EE bra ?loop
95 STOP
+ 95 00:405C: 80 FE bra $
96
97 ;--------------------------OK-----------INITIAL_LCD
98 INITIAL_LCD:
99 00:405E: 48 PHA
100 00:405F: A9 02 LDA #>LCD_START ;lcd start address
101 00:4061: 85 41 STA <LSSAH
102 00:4063: A9 00 LDA #<LCD_START
103 00:4065: 85 40 STA <LSSAL
104 00:4067: A9 0A LDA #LCD_SEG/16
105 00:4069: 85 42 STA <LVPW ;lcd virtual page width
106 00:406B: A9 14 LDA #LCD_SEG/8 ;lcd x length
107 00:406D: 85 43 STA <LXMAX
108 00:406F: A9 28 LDA #LCD_COM/2 ;lcd y length
109 00:4071: 85 44 STA <LYMAX
Wed Nov 5 2003 14:52 Page 3
110 00:4073: 64 45 STZ <LPAN ;no panning
111 00:4075: 64 47 STZ <LCTR ;power on lcd,display on
112 00:4077: A9 08 LDA #08H ;no reverse display
113 00:4079: 85 48 STA <LCKR ;CP=OSCK/4,1-bit transmission
114 00:407B: A9 04 LDA #04H
115 00:407D: 85 49 STA <LFRA ;Frame Rate Adjust
116 00:407F: A9 FF LDA #FFH
117 00:4081: 85 4E STA <PCL ;PL=output
118 00:4083: A9 00 lda #00
119 00:4085: 85 4A STa <LAC ;AC occur after every frame
120 00:4087: A9 00 LDA #00
121 00:4089: 85 4B STA <LPWM ;contrast
122 00:408B: 68 PLA
123 00:408C: 60 RTS
124 ;--------------------------OK-------------------------------FILL SCREEN
125 FILL_SCREEN: ;fill screen with value
126 00:408D: 48 PHA ;at LCD_START
127 00:408E: 64 36 STZ <DMR
128 00:4090: A9 02 LDA #>LCD_START
129 00:4092: 85 29 STA <DMSH
130 00:4094: A9 00 LDA #<LCD_START
131 00:4096: 85 28 STA <DMSL
132 00:4098: A9 02 LDA #>LCD_START+1
133 00:409A: 85 2B STA <DMDH
134 00:409C: A9 01 LDA #<LCD_START+1
135 00:409E: 85 2A STA <DMDL
136 00:40A0: A9 06 LDA #>LCD_SEG*LCD_COM/8
137 00:40A2: 85 2D STA <DCNTH
138 00:40A4: A9 3F LDA #<LCD_SEG*LCD_COM/8-1
139 00:40A6: 85 2C STA <DCNTL
140 00:40A8: 68 PLA
141 00:40A9: 60 RTS
142 ;---------------------OK------------------Draw8x8Font
143 Draw8x8Font
144 PUSH_ALL
+ 144 00:40AA: 48 pha
+ 144 00:40AB: DA phx
+ 144 00:40AC: 5A phy
+ 144 00:40AD: 85 9B sta <StackTmp
+ 144 00:40AF: A5 92 lda <PtrH
+ 144 00:40B1: 48 pha
+ 144 00:40B2: A5 91 lda <PtrL
+ 144 00:40B4: 48 pha
+ 144 00:40B5: A5 94 lda <TmpH
+ 144 00:40B7: 48 pha
+ 144 00:40B8: A5 93 lda <TmpL
+ 144 00:40BA: 48 pha
+ 144 00:40BB: A5 9B lda <StackTmp
145
146 00:40BD: 0A asl a ;a*8 to index table
147 00:40BE: 0A asl a
148 00:40BF: 0A asl a
149 00:40C0: 85 91 sta <PtrL
150
151 00:40C2: A9 6D lda #<CourierFont8x8 ;a=low address of CourierFont8x8
152 00:40C4: 18 clc ;PtrL=character index low address
153 00:40C5: 65 91 adc <PtrL
154 00:40C7: 85 91 sta <PtrL
Wed Nov 5 2003 14:52 Page 4
155
156 00:40C9: A9 41 lda #>CourierFont8x8
157 00:40CB: 64 92 stz <PtrH
158 00:40CD: 65 92 adc <PtrH
159 00:40CF: 85 92 sta <PtrH ;PtrH=character index high address
160
161 00:40D1: A9 02 lda #>LCD_START
162 00:40D3: 85 94 sta <TmpH
163 00:40D5: A9 00 lda #<LCD_START
164 00:40D7: 18 clc
165 00:40D8: 65 99 adc <CursorX ;X direction LCD character start
166 00:40DA: 85 93 sta <TmpL ;low address
167 00:40DC: 90 02 bcc ?3
168 00:40DE: E6 94 inc <TmpH
169 ?3
170 00:40E0: A5 9A lda <CursorY ;Y direction LCD character start
171 00:40E2: 0A asl a ;low address
172 00:40E3: A8 tay
173 .iftrue LCD_SEG=320
174 lda Mul320Tab,y
175 .endif
176 .iftrue LCD_SEG=160
177 00:40E4: B9 BF 41 lda Mul160Tab,y
178 .endif
179 .iftrue LCD_SEG=112
180 lda Mul112Tab,y
181 .endif
182
183 00:40E7: 18 clc
184 00:40E8: 65 93 adc <TmpL
185 00:40EA: 85 93 sta <TmpL
186 00:40EC: 90 02 bcc ?4
187 00:40EE: E6 94 inc <TmpH
188 ?4
189 .iftrue LCD_SEG=320
190 lda Mul320Tab+1,y
191 .endif
192 .iftrue LCD_SEG=160
193 00:40F0: B9 C0 41 lda Mul160Tab+1,y
194 .endif
195 .iftrue LCD_SEG=112
196 lda Mul112Tab+1,y
197 .endif
198 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
199 00:40F3: 18 clc
200 00:40F4: 65 94 adc <TmpH
201 00:40F6: 85 94 sta <TmpH
202 00:40F8: A0 00 ldy #0h ;Display character
203 ?1
204 00:40FA: B1 91 lda (Ptr),y
205 00:40FC: 92 93 sta (Tmp)
206
207 00:40FE: A9 14 lda #LCD_SEG/8
208 00:4100: 18 clc
209 00:4101: 65 93 adc <TmpL
210 00:4103: 85 93 sta <TmpL
211 00:4105: 90 02 bcc ?2
212 00:4107: E6 94 inc <TmpH
Wed Nov 5 2003 14:52 Page 5
213 ?2
214 00:4109: C8 iny
215 00:410A: C0 08 cpy #8
216 00:410C: D0 EC bne ?1
217
218 00:410E: A5 99 lda <CursorX ;x,y position point to
219 00:4110: 1A inc a ;low-byte character
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -