- 注册时间
- 2004-8-29
- 最后登录
- 1970-1-1
|
;样本程序
;用6502simulator编译后再用文件转换工具转换为WQX格式即
.ORG $4010
JMP main
int .MACRO int_p
.DB $00
.DW int_p
.ENDM
.INCLUDE "./filelist.h"
blocknum .DB "0000000000000000"
workdir .DB "0000000000000000"
choice .DB "0000000000000000"
depth .DB $00
root .DB "/..",$00
main
LDA $08d2-FileD
PHA
LDA $08d3-FileD
PHA
LDA $08c8-FileD
PHA
JSR ScanDir
PLA
STA $08c8-FileD
PLA
STA $08d3-FileD
PLA
STA $08d2-FileD
RTS
ScanDir
LDX #$ff
sdloop1 INX
LDA root,x
STA $088d-FileD,x
BNE sdloop1
int $050d
LDA #$00
STA depth
sdloop
LDA depth
ASL
TAX
LDA $08e6-FileD
STA blocknum,x
LDA $08e7-FileD
STA blocknum+1,x
LDA $08d2-FileD
STA workdir,x
LDA $08d3-FileD
STA workdir+1,x
LDA #$00
STA CurFirst
STA CurRow
sdloop2
LDA depth
ASL
TAX
LDA blocknum,x
STA $08e6-FileD
LDA blocknum+1,x
STA $08e7-FileD
LDA workdir,x
STA $08d2-FileD
LDA workdir+1,x
STA $08d3-FileD
filelist
BCS sdl1
BEQ sdl1
int $050d
BCS sdl3
LDA depth
ASL
TAX
LDA CurRow
STA choice+1,x
LDA CurFirst
STA choice,x
INC depth
JMP sdloop
sdl1
LDA depth
BNE sdl2
RTS
sdl2
DEC depth
LDA depth
ASL
TAX
LDA choice,x
STA CurFirst
LDA choice+1,x
STA CurRow
JMP sdloop2
sdl3
int $c72a
LDX #$ff
sdloop3 INX
LDA $088d-FileD,x
STA $02c0,x
BNE sdloop3
LDX #$0c
sdloop4
LDA Msg,x
STA $02d4,x
DEX
BPL sdloop4
int $c719
int $c006
JMP sdloop2
Msg .DB "这是一个文件!"
;#####################################################
;"filelist.h"
FileD =$00 ;改为$6b即为TC1K
filelist: .MACRO
JSR _filelist
.ENDM
;******************address define**********
_flbufbegin =$cf00
NumTable =_flbufbegin
FileTable =NumTable+$100
FileTableADD2 =FileTable+2
_fltempbegin =$0d00
CurFirst =_fltempbegin
CurRow =CurFirst+1
FileNum =CurRow+1
Tag =FileNum+1
;##########################################
_filelist
LDA $0a
PHA
AND #$f0
ORA #$01
STA $0a
LDA $08e6-FileD
STA $0888-FileD
LDA $08e7-FileD
STA $0889-FileD
LDA #$00
STA $088a-FileD
STA $088b-FileD
STA $09d2-FileD
LDA #$10
STA $09d3-FileD
LDA #<FileTable
STA $f0
LDA #>FileTable
STA $f1
int $0505
LDA #'<'
STA FileTable+2
LDA #'-'
STA FileTable+3
STA FileTable+4
LDA #$00
STA FileTable+5
STA FileTable
GetFileNum
LDA #$00
STA $40
STA $41
LDA #<FileTable
STA $80
LDA #>FileTable
STA $81
_fllabel1
LDY #$00
LDA ($80),y
INY
AND ($80),y
EOR #$ff
BEQ _fllabel8
LDA Tag
BEQ _fllabel5
_fllabel2
INY
CPY #$10
BEQ _fllabel5
LDA ($80),y
BEQ _fllabel5
CMP #'.'
BNE _fllabel2
LDX #$ff
_fllabel3
INX
INY
LDA Suffix,x
BEQ _fllabel4
CMP ($80),y
BEQ _fllabel3
BNE _fllabel6
_fllabel4
CPY #$10
BEQ _fllabel5
LDA ($80),y
BNE _fllabel6
_fllabel5
LDX $41
LDA $40
STA NumTable,x
INC $41
_fllabel6
CLC
LDA $80
ADC #$10
STA $80
BCC _fllabel7
INC $81
_fllabel7
INC $40
BNE _fllabel1
PLA
STA $0a
LDA #$ff
SEC
RTS ;overflow
_fllabel8
LDA $41
STA FileNum
FLPrint
LDA #$ff
STA $03b4
int $c72a
CLC
LDA CurFirst
STA $40
ADC CurRow
TAX
BNE _fllabel9
.DB $2c
_fllabel9
LDA #$40
STA $41
INX
CPX FileNum
BNE _fllabel10
LDA #$00
.DB $2c
_fllabel10
LDA #$80
ORA $41
STA $0390
LDA #$c0
STA $82
LDA #$02
STA $83
LDA #$05
STA $41
_flloop1
LDY #$00
STY $81
LDX $40
LDA NumTable,x
ASL
ROL $81
ASL
ROL $81
ASL
ROL $81
ASL
ROL $81
CLC
ADC #<FileTableADD2
STA $80
LDA $81
ADC #>FileTableADD2
STA $81
_fllabel11
LDA ($80),y
BEQ _fllabel13
LDX Tag
BEQ _fllabel12
CMP #'.'
BEQ _fllabel13
_fllabel12
STA ($82),y
INY
CPY #$0e
BNE _fllabel11
_fllabel13
LDA #$20
STA ($82),y
CLC
LDA $82
ADC #$14
STA $82
BCC _fllabel14
INC $83
_fllabel14
INC $40
LDA $40
CMP FileNum
BCS _fllabel15
DEC $41
BNE _flloop1
_fllabel15
LDX #$00
LDY CurRow
int $c71d
int $c719
_flwaitkey
int $c006
LDX #$09
_fllabel16
CMP KeyTable,x
BEQ _fllabel17
DEX
BPL _fllabel16
JMP _flwaitkey
_fllabel17
TXA
ASL
TAX
LDA OpeTable,x
STA $80
LDA OpeTable+1,x
STA $81
JMP ($0080)
KeyTable .DB $17,$16,$14,$15,$13,$0e,$19,$1c,$1b,$0d
OpeTable .DW _flleft,_flright,_flup,_fldown,_flpageup,_flpagedown,_flhelp,_flf1,_flesc,_flenter
_flleft
_flup
LDA $0390
AND #$40
BEQ _upl3
LDA CurRow
BEQ _upl2
DEC CurRow
JMP FLPrint
_upl2
DEC CurFirst
_upl3
JMP FLPrint
_flright
_fldown
LDA $0390
AND #$80
BEQ _downl3
LDA CurRow
CMP #$04
BEQ _downl2
INC CurRow
JMP FLPrint
_downl2
INC CurFirst
_downl3
JMP FLPrint
_flhelpmsg .DB "======文件列表======"
.DB "用方向键或换页键切换"
.DB "要选择的文件,用<MR> "
.DB "键来确认选择. "
.DB "<F1>键切换<普通/过滤"
.DB ">浏览模式.",$00,$00
_flhelp
LDA #<_flhelpmsg
STA $a6
LDA #>_flhelpmsg
STA $a7
int $cb09
JMP FLPrint
_flf1
LDA Tag
BNE _f1l1
LDA #$ff
.DB $2c
_f1l1
LDA #$00
STA Tag
LDA #$00
STA CurFirst
STA CurRow
JMP GetFileNum
_flenter
CLC
LDA CurFirst
ADC CurRow
BNE _enterl1
PLA
STA $0a
LDA #$00
CLC
RTS
_enterl1
TAX
LDA NumTable,x
LDY #$00
STY $81
ASL
ROL $81
ASL
ROL $81
ASL
ROL $81
ASL
ROL $81
CLC
ADC #<FileTableADD2
STA $80
LDA $81
ADC #>FileTableADD2
STA $81
_enterl2
LDA ($80),y
BEQ _enterl3
STA $088d-FileD,y
INY
CPY #$0e
BNE _enterl2
_enterl3
LDA #$00
STA $088d-FileD,y
PLA
STA $0a
CLC
RTS
_flesc
PLA
STA $0a
LDA #$00
SEC
RTS
_flpageup
LDA $0390
AND #$40
BEQ _flpul2
SEC
LDA CurFirst
BEQ _flpul3
SBC #$05
BCC _flpul1
.DB $2c
_flpul1
LDA #$00
STA CurFirst
_flpul2
JMP FLPrint
_flpul3
STA CurRow
BEQ _flpul2
_flpagedown
LDA $0390
AND #$80
BEQ _flpdl1
CLC
LDA CurFirst
ADC #$05
CMP FileNum
BCS _flpdl2
STA CurFirst
LDA CurFirst
ADC CurRow
CMP FileNum
BCS _flpdl2
_flpdl1
JMP FLPrint
_flpdl2
LDA FileNum
SBC CurFirst
TAX
DEX
STX CurRow
JMP FLPrint
Suffix .DB "bin",$00 //后缀名
里面有编译好的NC3K的文件列表样本程序。 |
|