玄狼剑 发表于 2008-4-2 19:37:04

精简&除bug以后的nc3000电量检测函数

原函数近400字节,除去无法正常显示100%的bug和精简以后,只有200多字节~


.INCLUDE "head.txt"
.INCLUDE "define.txt"
;.org $46BF
MAIN:
;UPDATETEXT
INT CLEARTEXT
LDX #$0D
LOOPA:
LDA WORDA-1,X
STA _TEXTBUF+2,X
DEX
BNE LOOPA
LDX #$08
LOOPB:
LDA WORDB-1,X
STA _TEXTBUF+46,X
DEX
BNE LOOPB
SEI
LDA _BATTERYDET
ORA #$C0
STA _BATTERYDET
LDX #$FF
LOOPC:
INX
CPX #$1F
BCS END
LDA _BATTERYDET
AND #$E0
STA _BATTERYDET
TXA
ORA _BATTERYDET
STA _BATTERYDET
JSR DELAY20
JSR DELAY20
JSR DELAY20
LDA _BATTERYDET
AND #$20
BEQ LOOPC
END:
CLI
TXA
STA _TMPA
JSR CHANGEDATA
JSR DRAWPIC
INT WAIT_KEY
RTS


CHANGEDATA:
SEC
SBC #$06
ASL
ASL
STA _TOASCII_I
INT TOASCII
LDA _TOASCII_O
CMP #$30
BEQ NEXTA
;H EXIST
STA _TEXTBUF+55
LDA _TOASCII_O+1
STA _TEXTBUF+56
NEXTA:
LDA _TOASCII_O+1
CMP #$30
BEQ NEXTB
STA _TEXTBUF+56
NEXTB:
LDA _TOASCII_O+2
STA _TEXTBUF+57
LDA #$25 ;%
STA _TEXTBUF+58
INT REFRESH
RTS


DRAWPIC:
LDA #$14
STA _XA
LDA #$1F
SEC
SBC _TMPA
ASL
CLC
ADC #$14
LDX #$20
LDY #$43
INT BLOCK
LDA #$13
STA _XA
LDX #$21
LDY #$44
INT SQUARE
LDA #$17
STA _XA
LDA #$10
LDX #$1D
LDY #$13
INT SQUARE
LDA #$1E
STA _XA
LDA #$1F
TAY
LDX #$20
INT LINE
LDA #$1E
STA _XA
LDA #$2B
TAY
LDX #$20
INT LINE
LDA #$1E
STA _XA
LDA #$37
TAY
LDX #$20
INT LINE
RTS


WORDA:
.DB "BATTERY CHECK"
_TMPA
.db $00
WORDB:
.DB "BATTERY:"


jljeee 发表于 2008-4-2 23:01:58

看不懂……

yan 发表于 2008-4-3 12:39:34

不错,不错。

POTO 发表于 2008-6-20 10:55:46

太好了!

dragon_ 发表于 2008-6-20 11:50:51

Nc3000的也太麻烦了吧……:loveliness:
页: [1]
查看完整版本: 精简&除bug以后的nc3000电量检测函数