易码技术论坛

 找回密码
 加入易码
搜索
查看: 633046|回复: 11

[源码] Eastsun的文件列表

[复制链接]
发表于 2007-5-18 10:39:10 | 显示全部楼层
把文件列表中的帮助和其他一些没有用的功能去掉了,又是文件列表宏减少了200多字节代码
发表于 2007-5-18 12:02:14 | 显示全部楼层
好啊!
支持!这个应该可以用6502sdk编译
发表于 2007-5-18 12:49:01 | 显示全部楼层
呵呵,不错丫~
嗯,文件按后缀名过滤的功能没了?
发表于 2007-5-20 12:20:41 | 显示全部楼层
文件按后缀名过滤的功能没了
的确!
 楼主| 发表于 2007-5-21 18:22:04 | 显示全部楼层
引用第3楼Eastsun2007-05-18 12:49发表的“”:
呵呵,不错丫~
嗯,文件按后缀名过滤的功能没了?
个人认为这个功能比较狭窄,就把它去掉了,不要怪我哦!....
 楼主| 发表于 2007-5-21 18:32:40 | 显示全部楼层
现在搞汇编的越来越少了,这些好东西快要被当做古董了......
发表于 2007-5-26 17:08:00 | 显示全部楼层
是啊!
发表于 2007-5-26 17:16:03 | 显示全部楼层
好正点,人好多~~~~
发表于 2007-5-31 23:21:00 | 显示全部楼层
好...研究中..........
发表于 2007-5-31 23:21:22 | 显示全部楼层
我也准备也个NC3K的FILELIST,
发表于 2007-7-19 18:16:19 | 显示全部楼层
选定文件操作后再回去还是读原来文件夹的NAND块
  可是删除文件后文件夹所在的NAND块变了啊,么办类
 楼主| 发表于 2007-5-18 10:37:13 | 显示全部楼层 |阅读模式
  ;请用ZHAOFEIXXX的编译器编译,只能用于TC808,我做了详细的注解.........






.include "head.txt"
num_ber=$cf00
rootdir:
.db "/.."
.db $00
;进入根目录
root:
ldx #$05
enterroot:
lda rootdir-1,x
sta $0823,x
dex
bne enterroot
int $050d
;初使化目录层数
lda #$00
sta dirnum+48
addrp:
;保存当前目录信息以便在信息发生改变时读取
lda dirnum+48
asl
tax
;保存目录所占的块
lda $087d
sta dirnum,x
lda $087e
sta dirnum+1,x
;保存目录号
lda $0869
sta dirnum+16,x
lda $086a
sta dirnum+17,x
;初使化反显框
lda #$00
sta $0d00
sta $0d01
setblock:
;读取目录信息
lda dirnum+48
asl
tax
;读取目录块
lda dirnum,x
sta $087d
lda dirnum+1,x
sta $087e
;读取目录号
lda dirnum+16,x
sta $0869
lda dirnum+17,x
sta $086a
;转到文件列表程序
jsr getblock
;判断用户操作或判断异常,当carry被置时,说明程序发生异常或用户按了跳出
bcs outpro
;没有发生异常或没有按退出键
;判断用户是选择了出口,还是选定了目录或文件
beq outpro
;用户选择了目录或文件
;判断用户选定的是否为目录
int $050d
;carry位被置,说明用户选定的是个文件,否则是个目录
bcs filename
;是目录,保存当前选择框位置
lda dirnum+48
asl
tax
lda $0d01
sta dirnum+33,x
lda $0d00
sta dirnum+32,x
;目录层数+1
inc dirnum+48
;转到读取目录文件
jmp addrp
outpro:
;发生异常或用户按了退出键
;判断目录层数是否为0
lda dirnum+48
bne notout
;为0,退出,不为0,返回上级目录
rts
notout:
;返回上级目录,目录层数减一
dec dirnum+48
lda dirnum+48
asl
tax
lda dirnum+32,x
sta $0d00
lda dirnum+33,x
sta $0d01
;读取文件列表
jmp setblock
;这里就是使用者可以自己写的地方了
filename:
int $c72a
ldx #$00
filemade:
lda $0824,x
sta $02c0,x
beq fileprint
inx
jmp filemade
fileprint:
int $c719
jsr getchar
jmp setblock
  
  
main:
lda $0869
pha
lda $086a
pha
lda $085f
pha
jsr root
pla
sta $085f
pla
sta $086a
pla
sta $0869
rts
getblock:
lda $0a
pha
lda $0a
and #$f0
ora #$01
sta $0a
;读取文件夹所占块
lda $087d
sta $081d
lda $087e
sta $081e
lda #$00
sta $081f
sta $0820
sta $ed
sta $0969
lda #$10
sta $096a
lda #$d0
sta $ee
int $0505
lda #$2e
sta $d002
sta $d003
lda #$00
sta $d004
;统计文件个数
lda #$00
sta $40
sta $41
sta $80
lda #$d0
sta $81
filenum:
ldy #$00
lda ($80),y
iny
and ($80),y
eor #$ff
beq sure_num
ldx $41
lda $40
sta num_ber,x
inc $41
clc
lda $80
adc #$10  
sta $80
lda #$00
adc $81
sta $81
inc $40
bne filenum
pla
sta $0a
lda #$ff
sec
rts
sure_num:
lda $41
sta $0d02
;将文件名显示到屏幕
mark:
lda #$ff
sta $03b4
int $c72a
clc
lda $0d00
sta $40
adc $0d01
tax
.db $d0,$01
bit $40a9
sta $41
inx
cpx $0d02
.db $d0,$03
lda #$00
bit $80a9
ora $41
sta $0390
lda #$c0
sta $84
lda #$02
sta $85
ldx #$05
stx $41
setmode:
ldy #$00
ldx $40
lda num_ber,x
ldx #$10
int $ca03
clc
lda $80
adc #$02
sta $80
lda $81
adc #$d0
sta $81
getname:
lda ($80),y
beq filelong
sta ($84),y
iny
cpy #$0e
bne getname
filelong:
lda #$20
sta ($84),y
clc
lda $84
adc #$14
sta $84
lda #$00
adc $85
sta $85
inc $40
lda $40
cmp $0d02
bcs print
dec $41
bne setmode
print:
ldx #$00
ldy $0d01
int $C71d
int $c719
;按键跳转判断
getkey:
jsr getchar
ldx #$07
condition:
cmp key,x
beq branch
dex
bpl condition
jmp getkey
branch:
txa
asl
tax
lda side,x
sta $80
lda side+1,x
sta $81
jmp ($0080)
key:
.db $14,$15,$17,$16,$13,$0e,$0d,$1b
side:
.dw up,down,up,down,pageup,pagedown,ensure,exit     
;读取按键
getchar:
lda #$00
sta $03f7
lda $c7
bpl getchar
and #$7f
pha
lda #$00
sta $c7
pla
rts
;----------------------
up:
lda $0390
and #$40
beq blow
lda $0d01
beq pageblow
dec $0d01
jmp mark
pageblow:
dec $0d00
blow:
jmp mark
;------------------------
down:
lda $0390
and #$80
beq over
lda $0d01
cmp #$04
beq pageover
inc $0d01
jmp mark
pageover:
inc $0d00
over:
jmp mark
;----------------------
pageup:
lda $0390
and #$40
beq addup
sec
lda $0d00
beq notup
sbc #$05
bcc fill
.db $2c
fill:
lda #$00
sta $0d00
addup:
jmp mark
notup:
sta $0d01
jmp mark
;--------------------
pagedown:
lda $0390
and #$80
beq addown
clc
lda $0d00
adc #$05
cmp $0d02
bcs notdown
sta $0d00
lda $0d00
adc $0d01
cmp $0d02
bcs notdown
addown:
jmp mark
notdown:
lda $0d02
sbc $0d00
tax
dex
stx $0d01
jmp mark
;------------------
exit:
pla
sta $0a
lda #$00
sec
rts
;------------------
ensure:
clc
lda $0d00
adc $0d01
bne without
pla
sta $0a
lda #$00
clc
rts
;将文件名发送到系统文件名处
without:
tax
lda num_ber,x
ldx #$10
int $ca03
clc
lda $80
adc #$02
sta $80
lda $81
adc #$d0
sta $81
seek:
lda ($80),y
beq seekover
sta $0824,y
iny
cpy #$0e
bne seek
seekover:
lda #$00
sta $0824,y
pla
sta $0a
clc
rts
dirnum:
.dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000

mylist.rar

2 KB, 下载次数: 265

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-18 23:38 , Processed in 0.013114 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表