| 
 
注册时间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的文件列表样本程序。
 | 
 |