📄 lcd.lis
字号:
018D E602 lda 2,X
018F 87 psha
0190 E601 lda 1,X
0192 87 psha
0193 B600 lda *__r3
0195 87 psha
0196 B600 lda *__r2
0198 87 psha
0199 B600 lda *__r1
019B 87 psha
019C B600 lda *__r0
019E 87 psha
019F CD0000 jsr __cmp32
01A2 A708 ais #8
01A4 9303 ble X2
01A6 CC0240 jmp L21
01A9 X2:
01A9 3F00 clr *__r0
01AB E60B lda 11,X
01AD B700 sta *__r1
01AF B600 lda *__r0
01B1 40 nega
01B2 87 psha
01B3 B600 lda *__r1
01B5 40 nega
01B6 B700 sta *__r1
01B8 86 pula
01B9 A200 sbc #0
01BB B700 sta *__r0
01BD 4E0000 mov *__r1,*__r3
01C0 4E0000 mov *__r0,*__r2
01C3 3F00 clr *__r1
01C5 3F00 clr *__r0
01C7 3D00 tst *__r2
01C9 2A04 bpl X1
01CB 3300 com *__r1
01CD 3300 com *__r0
01CF X1:
01CF E604 lda 4,X
01D1 87 psha
01D2 E603 lda 3,X
01D4 87 psha
01D5 E602 lda 2,X
01D7 87 psha
01D8 E601 lda 1,X
01DA 87 psha
01DB B600 lda *__r3
01DD 87 psha
01DE B600 lda *__r2
01E0 87 psha
01E1 B600 lda *__r1
01E3 87 psha
01E4 B600 lda *__r0
01E6 87 psha
01E7 CD0000 jsr __cmp32
01EA A708 ais #8
01EC 9152 blt L21
01EE .dbline 97
01EE ; {
01EE .dbline 98
01EE ; if(GrE==1) LcdShGr1P(y,x);//显示该点
01EE E60C lda 12,X
01F0 A101 cmp #1
01F2 260D bne L23
01F4 .dbline 98
01F4 E605 lda 5,X
01F6 87 psha
01F7 F6 lda ,X
01F8 87 psha
01F9 CD0378 jsr _LcdShGr1P
01FC A702 ais #2
01FE 95 tsx
01FF 203F bra L24
0201 L23:
0201 .dbline 100
0201 ; //清除该点
0201 ; else if(y<=31) LcdShGr16P(y,(x/16),0);
0201 F6 lda ,X
0202 A11F cmp #31
0204 221C bhi L25
0206 .dbline 100
0206 450000 ldhx #0
0209 89 pshx
020A 8B pshh
020B 95 tsx
020C AF02 aix #2
020E E605 lda 5,X
0210 AE10 ldx #16
0212 8C clrh
0213 52 div
0214 95 tsx
0215 AF02 aix #2
0217 87 psha
0218 F6 lda ,X
0219 87 psha
021A CD03E5 jsr _LcdShGr16P
021D A704 ais #4
021F 95 tsx
0220 201E bra L26
0222 L25:
0222 .dbline 101
0222 ; else LcdShGr16P(y-32,x/16+8,0);
0222 450000 ldhx #0
0225 89 pshx
0226 8B pshh
0227 95 tsx
0228 AF02 aix #2
022A E605 lda 5,X
022C AE10 ldx #16
022E 8C clrh
022F 52 div
0230 95 tsx
0231 AF02 aix #2
0233 AB08 add #8
0235 87 psha
0236 F6 lda ,X
0237 A020 sub #32
0239 87 psha
023A CD03E5 jsr _LcdShGr16P
023D A704 ais #4
023F 95 tsx
0240 L26:
0240 L24:
0240 .dbline 102
0240 ; }
0240 L21:
0240 .dbline 103
0240 L18:
0240 .dbline 92
0240 6C05 inc 5,X
0242 L20:
0242 .dbline 92
0242 E609 lda 9,X
0244 EB0A add 10,X
0246 B700 sta *__r0
0248 E605 lda 5,X
024A B100 cmp *__r0
024C 2203 bhi X3
024E CC00DE jmp L17
0251 X3:
0251 L14:
0251 .dbline 91
0251 7C inc ,X
0252 L16:
0252 .dbline 91
0252 E608 lda 8,X
0254 EB0A add 10,X
0256 B700 sta *__r0
0258 F6 lda ,X
0259 B100 cmp *__r0
025B 2203 bhi X4
025D CC00D5 jmp L13
0260 X4:
0260 .dbline 105
0260 ; }
0260 ; //LcdShGr1P(Cy,Cx);//显示圆心
0260 ; Wtite_Command(0b00110000);//基本指令
0260 A630 lda #48
0262 87 psha
0263 CD041B jsr _Wtite_Command
0266 A701 ais #1
0268 95 tsx
0269 .dbline -2
0269 L12:
0269 A706 ais #6
026B .dbline 0 ; func end
026B 81 rts
026C .dbsym l y 0 c
026C .dbsym l mistake 1 L
026C .dbsym l x 5 c
026C .dbsym l GrE 12 c
026C .dbsym l GrCilMV 11 c
026C .dbsym l CR 10 c
026C .dbsym l Cx 9 c
026C .dbsym l Cy 8 c
026C .dbend
026C .dbfunc e LcdShGrRe _LcdShGrRe fV
026C ; RC -> 0,X
026C ; LC -> 2,X
026C ; TBC -> 4,X
026C ; i -> 6,X
026C ; y -> 7,X
026C ; Px -> 8,X
026C ; GrE -> 12,X
026C ; ln -> 11,X
026C _LcdShGrRe::
026C .dbline -1
026C A7F7 ais #-9
026E 95 tsx
026F .dbline 114
026F ; }
026F ;
026F ; /*LcdShGrRe:在Lcd的指定行上显示或取消矩型边框------------------------------*
026F ; *功 能:在Lcd上指定行上显示或取消矩型边框 *
026F ; *参 数:ln为指定的行数(0-3), GrE确定图形是否有效 *
026F ; *返 回:无 *
026F ; *-------------------------------------------------------------------------*/
026F ; void LcdShGrRe(INT8U ln,INT8U GrE)
026F ; {
026F .dbline 119
026F E60B lda 11,X
0271 2704 beq L30
0273 A102 cmp #2
0275 2604 bne L28
0277 L30:
0277 .dbline 119
0277 ; INT8U Px,y; //行页号坐标,列坐标
0277 ; INT8U i; //循环变量
0277 ; INT16S LC,RC,TBC; //左,右和上下边框色
0277 ; //[确定ln所在行的起始坐标(左上角)]
0277 ; if((ln==0)||(ln==2)) y=0;
0277 6F07 clr 7,X
0279 2004 bra L29
027B L28:
027B .dbline 120
027B ; else y=16;
027B A610 lda #16
027D E707 sta 7,X
027F L29:
027F .dbline 121
027F ; if(ln<=1) Px=0;
027F E60B lda 11,X
0281 A101 cmp #1
0283 2204 bhi L31
0285 .dbline 121
0285 6F08 clr 8,X
0287 2004 bra L32
0289 L31:
0289 .dbline 122
0289 ; else Px=8;
0289 A608 lda #8
028B E708 sta 8,X
028D L32:
028D .dbline 124
028D ; //[确定有无边框(有GrE决定)]
028D ; if(GrE==1) //有表框
028D E60C lda 12,X
028F A101 cmp #1
0291 2618 bne L33
0293 .dbline 125
0293 ; {TBC=65535;LC=32768;RC=1;}
0293 .dbline 125
0293 A6FF lda #-1
0295 E704 sta 4,X
0297 A6FF lda #-1
0299 E705 sta 5,X
029B .dbline 125
029B A680 lda #-128
029D E702 sta 2,X
029F A600 lda #0
02A1 E703 sta 3,X
02A3 .dbline 125
02A3 4F clra
02A4 F7 sta ,X
02A5 A601 lda #1
02A7 E701 sta 1,X
02A9 .dbline 125
02A9 200B bra L34
02AB L33:
02AB .dbline 127
02AB ; else //无边框
02AB ; {TBC=0;LC=0;RC=0;}
02AB .dbline 127
02AB 6F05 clr 5,X
02AD 6F04 clr 4,X
02AF .dbline 127
02AF 6F03 clr 3,X
02B1 6F02 clr 2,X
02B3 .dbline 127
02B3 6F01 clr 1,X
02B5 7F clr ,X
02B6 .dbline 127
02B6 L34:
02B6 .dbline 128
02B6 ; Wtite_Command(0b00110110);//扩展指令,绘图开
02B6 A636 lda #54
02B8 87 psha
02B9 CD041B jsr _Wtite_Command
02BC A701 ais #1
02BE 95 tsx
02BF .dbline 130
02BF ; //[在Lcd上指定行上显示矩型边框]
02BF ; for(i=0;i<=7;i++,Px++)
02BF 6F06 clr 6,X
02C1 202A bra L38
02C3 L35:
02C3 .dbline 131
02C3 .dbline 132
02C3 E605 lda 5,X
02C5 87 psha
02C6 E604 lda 4,X
02C8 87 psha
02C9 E608 lda 8,X
02CB 87 psha
02CC E607 lda 7,X
02CE 87 psha
02CF CD03E5 jsr _LcdShGr16P
02D2 A704 ais #4
02D4 95 tsx
02D5 .dbline 133
02D5 E605 lda 5,X
02D7 87 psha
02D8 E604 lda 4,X
02DA 87 psha
02DB E608 lda 8,X
02DD 87 psha
02DE E607 lda 7,X
02E0 AB0F add #15
02E2 87 psha
02E3 CD03E5 jsr _LcdShGr16P
02E6 A704 ais #4
02E8 95 tsx
02E9 .dbline 134
02E9 L36:
02E9 .dbline 130
02E9 6C06 inc 6,X
02EB 6C08 inc 8,X
02ED L38:
02ED .dbline 130
02ED E606 lda 6,X
02EF A107 cmp #7
02F1 23D0 bls L35
02F3 .dbline 135
02F3 ; {
02F3 ; LcdShGr16P(y,Px,TBC); //显示上边框
02F3 ; LcdShGr16P(y+15,Px,TBC); //显示下边框
02F3 ; }
02F3 ; for(i=1,y++,Px--;i<=14;i++,y++)
02F3 A601 lda #1
02F5 E706 sta 6,X
02F7 6C07 inc 7,X
02F9 6A08 dec 8,X
02FB 2029 bra L42
02FD L39:
02FD .dbline 136
02FD .dbline 137
02FD E601 lda 1,X
02FF 87 psha
0300 F6 lda ,X
0301 87 psha
0302 E608 lda 8,X
0304 87 psha
0305 E607 lda 7,X
0307 87 psha
0308 CD03E5 jsr _LcdShGr16P
030B A704 ais #4
030D 95 tsx
030E .dbline 138
030E E603 lda 3,X
0310 87 psha
0311 E602 lda 2,X
0313 87 psha
0314 E608 lda 8,X
0316 A007 sub #7
0318 87 psha
0319 E607 lda 7,X
031B 87 psha
031C CD03E5 jsr _LcdShGr16P
031F A704 ais #4
0321 95 tsx
0322 .dbline 139
0322 L40:
0322 .dbline 135
0322 6C06 inc 6,X
0324 6C07 inc 7,X
0326 L42:
0326 .dbline 135
0326 E606 lda 6,X
0328 A10E cmp #14
032A 23D1 bls L39
032C .dbline 140
032C ; {
032C ; LcdShGr16P(y,Px,RC); //显示右边框
032C ; LcdShGr16P(y,Px-7,LC); //显示左边框
032C ; }
032C ; Wtite_Command(0b00110000);//基本指令
032C A630 lda #48
032E 87 psha
032F CD041B jsr _Wtite_Command
0332 A701 ais #1
0334 95 tsx
0335 .dbline -2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -