home *** CD-ROM | disk | FTP | other *** search
- ;*** DIRECTORY PROGRAM - BY ├RAIG ┬RUCE
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:XLS"
-
- JMP MAIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- LIBWORK = 80
-
- CHR├╥ = $0D
- CHR├LS = 147
- CHR╤UOTE = $22
- TRUE = $FF
- FALSE = $00
-
- ARG = 2
- NAME = 4
- STRING = 8
- DIR╞CB = 16
- DIR├OLUMNS = 17
- DIR├UR├OL = 18
- DIR╠ONG = 19
- DIR╙PACES = 20
- DIRLINE╠EN = 21
- DIR├H├OLS = 22
- DIR╨AGED = 23
- DIR╙HOWN = 24
- DIR├LS = 25
- DIR╞ILES = 32
- DIR┬YTES = 36
- DIR╞REE = 40
- WORK = 64
-
- MAIN = *
- LDA #FALSE
- STA DIR╠ONG
- STA DIR╨AGED
- STA DIR╙HOWN
- STA DIR├LS
-
- LDA #0
- LDY #0
- STA ARG+0
- STY ARG+1
-
- NEXT┴RG = *
- JSR STOPKEY
- BCC +
- JMP STOPPED
- + INC ARG+0
- BNE +
- INC ARG+1
- + LDA ARG+0
- LDY ARG+1
- JSR GETARG
- LDA ZP+0
- ORA ZP+1
- BEQ MAIN┼XIT
- LDY #0
- LDA (ZP),Y
- CMP #"-"
- BNE NAME┴RG
- JSR HANDLE╧PTION
- JMP NEXT┴RG
-
- NAME┴RG = *
- LDA ZP+0
- LDY ZP+1
- STA NAME+0
- STY NAME+1
- JSR LS
- LDA #TRUE
- STA DIR╙HOWN
- JMP NEXT┴RG
-
- MAIN┼XIT = *
- LDA DIR╙HOWN
- BNE +
- LDA #<DEFAULT─IR
- LDY #>DEFAULT─IR
- STA NAME+0
- STY NAME+1
- JSR LS
- + RTS
-
- DEFAULT─IR = *
- .BYTE ".",":",0
-
- HANDLE╧PTION = *
- LDY #0
- STY WORK+2
- LDA ZP+0
- LDY ZP+1
- STA WORK+0
- STY WORK+1
-
- NEXT╧PTION = *
- INC WORK+2
- LDY WORK+2
- LDA (WORK),Y
- BNE +
- RTS
- + CMP #"?"
- BNE +
- LDA #<USAGE═SG
- LDY #>USAGE═SG
- JSR EPUTS
- LDA #0
- LDX #0
- JMP EXIT
- + CMP #"L"
- BNE +
- LDA #TRUE
- STA DIR╠ONG
- JMP NEXT╧PTION
- + CMP #"C"
- BNE +
- LDA #TRUE
- STA DIR├LS
- JMP NEXT╧PTION
- + JMP NEXT╧PTION
-
- USAGE═SG = *
- .ASC "USAGE: LS [-][L][?][C] [DIRECTORY ...]"
- .BYTE CHR├╥
- .ASC "OPTS: L=LONG FORM, ?=HELP, C=CLEAR SCREEN"
- .BYTE CHR├╥,0
-
- STOPPED = *
- LDA #<STOPPED═SG
- LDY #>STOPPED═SG
- JSR EPUTS
- LDA #1
- LDX #0
- JMP EXIT
- STOPPED═SG = *
- .ASC "<╙TOPPED>"
- .BYTE CHR├╥,0
-
- ERROR = *
- LDA #<ERROR═SG1
- LDY #>ERROR═SG1
- JSR EPUTS
- LDA NAME+0
- LDY NAME+1
- JSR EPUTS
- LDA #<ERROR═SG2
- LDY #>ERROR═SG2
- JMP EPUTS
-
- ERROR═SG1 = *
- .ASC "┼RROR READING DIRECTORY "
- .BYTE CHR╤UOTE,0
- ERROR═SG2 = *
- .BYTE CHR╤UOTE,CHR├╥,0
-
- ;===DIR===
-
- LS = *
- LDA DIR├LS
- BEQ +
- LDA #CHR├LS
- JSR PUTCHAR
- + LDA DIR╠ONG
- BNE DIR
-
- TRUE╠S = *
- LDX #1
- JSR DEVINFO
- STX DIR├H├OLS
- CMP #0
- BNE +
- TXA
- LDX #$FF
- - INX
- SBC #20
- BCS -
- TXA
- BNE LS╙ET├OLS
-
- + LDA #1
- LS╙ET├OLS = *
- STA DIR├OLUMNS
- JMP DIR├OMMON
-
- DIR = *
- LDX #1
- JSR DEVINFO
- STX DIR├H├OLS
- LDA #1
- STA DIR├OLUMNS
-
- DIR├OMMON = *
- LDA #0
- STA DIR├UR├OL
- LDX #3
- - STA DIR┬YTES,X
- STA DIR╞ILES,X
- DEX
- BPL -
-
- DIR╟OT╬AME = *
- LDA NAME+0
- LDY NAME+1
- STA ZP+0
- STY ZP+1
- JSR DIROPEN
- BCC +
- JMP ERROR
- + STA DIR╞CB
- LDX DIR╞CB
- JSR DIRREAD
- BCS DIR┼XIT
- BEQ DIR┼XIT
- JSR STOPKEY
- BCC +
- JMP STOPPED
- + LDA DIR╠ONG
- BPL DIR╬EXT
- JSR DIR─ISPLAY╚EADING
-
- DIR╬EXT = *
- LDX DIR╞CB
- JSR DIRREAD
- BCS DIR┼XIT
- BEQ DIR┼XIT
- JSR STOPKEY
- BCC +
- JSR DIR┼XIT
- JMP STOPPED
- + LDA ACE─IRENT╬AME+0
- BEQ DIR╘RAILER┼XIT
- LDA ACE─IRENT╒SAGE
- AND #%00010000
- BNE DIR╬EXT
- JSR DIR─ISPLAY
- JMP DIR╬EXT
-
- DIR╘RAILER┼XIT = *
- LDA DIR╠ONG
- BPL DIR┼XIT
- JSR DIR─ISPLAY╘RAILER
- JMP DIR┼XIT
-
- DIR┼XIT = *
- LDA DIR├UR├OL
- BEQ +
- LDA #CHR├╥
- JSR PUTCHAR
- + LDA DIR╞CB
- JMP DIRCLOSE
-
- DIR─ISPLAY = *
- BIT ACE─IRENT╞LAGS
- BMI ++
- INC DIR╞ILES+0
- BNE +
- INC DIR╞ILES+1
- BNE +
- INC DIR╞ILES+2
- BNE +
- INC DIR╞ILES+3
- + LDX #0
- LDY #4
- CLC
- - LDA DIR┬YTES,X
- ADC ACE─IRENT┬YTES,X
- STA DIR┬YTES,X
- INX
- DEY
- BNE -
- + BIT DIR╠ONG
- BMI +
- JMP DIR─ISPLAY╙HORT
- + JSR DIR╙ETUP─IRLINE
- LDA #<DIRLINE
- LDY #>DIRLINE
- STA ZP+0
- STY ZP+1
- LDA DIRLINE╠EN
- LDY #0
- LDX #STDOUT
- JMP WRITE
-
- ;* 000000000011111111112222222222333333333344444444445555555555
- ;* POS: 012345678901234567890123456789012345678901234567890123456789
- DIRLINE .ASC "DRWX*E-T 00-╪XX-00 12:00A 12345678 *╙┼╤ 1234567890123456"
- .BYTE CHR├╥,0
- DIR╞LAG╬AMES .ASC "DRWX*E-T"
- DIR─ATE╙TR .ASC " 00-╪XX-00 12:00A "
- DIR─ATE┼ND = *
-
- DIR╙ETUP─IRLINE = *
- ;** FLAGS
- LDX #0
- LDA ACE─IRENT╞LAGS
- - ASL
- PHA
- LDA #"-"
- BCC +
- LDA DIR╞LAG╬AMES,X
- + STA DIRLINE+0,X
- PLA
- INX
- CPX #8
- BCC -
-
- ;** DATE
- JSR PUT╔N─ATE
- LDX #DIR─ATE┼ND-DIR─ATE╙TR-1
- - LDA DIR─ATE╙TR,X
- STA DIRLINE+8,X
- DEX
- BPL -
-
- ;** BYTES
- LDX #3
- - LDA ACE─IRENT┬YTES,X
- STA DIR╞REE,X
- DEX
- BPL -
- LDA #<UTOA╬UMBER
- LDY #>UTOA╬UMBER
- STA ZP+0
- STY ZP+1
- LDA #8
- LDX #DIR╞REE
- JSR UTOA
- LDY #28
- LDA DIR├H├OLS
- CMP #60
- BCS +
- LDY #8
- + LDX #0
- - LDA UTOA╬UMBER,X
- STA DIRLINE,Y
- INY
- INX
- CPX #8
- BCC -
- LDA #" "
- STA DIRLINE,Y
- INY
-
- ;** UNCLOSED FLAG
- LDA DIRLINE+4
- CMP #"-"
- BNE +
- LDA #" "
- + STA DIRLINE,Y
- INY
-
- ;** FILETYPE
- LDX #0
- - LDA ACE─IRENT╘YPE,X
- ORA #$80
- STA DIRLINE,Y
- INY
- INX
- CPX #3
- BCC -
- LDA #" "
- STA DIRLINE,Y
- INY
- STA DIRLINE,Y
- INY
-
- ;** FILENAME
- LDX #0
- - LDA ACE─IRENT╬AME,X
- BEQ +
- STA DIRLINE,Y
- INY
- INX
- BNE -
- + LDA #CHR├╥
- STA DIRLINE,Y
- INY
- LDA #0
- STA DIRLINE,Y
- STY DIRLINE╠EN
- RTS
-
- DIR─ISPLAY╙HORT = *
- LDA #<ACE─IRENT╬AME
- LDY #>ACE─IRENT╬AME
- JSR PUTS
- INC DIR├UR├OL
- LDA DIR├UR├OL
- CMP DIR├OLUMNS
- BCC +
- LDA #0
- STA DIR├UR├OL
- LDA #CHR├╥
- JMP PUTCHAR
- + LDY #$FF
- - INY
- LDA ACE─IRENT╬AME,Y
- BNE -
- STY DIR╙PACES
- LDA #20
- SBC DIR╙PACES
- STA DIR╙PACES
- - LDA #" "
- JSR PUTCHAR
- DEC DIR╙PACES
- BNE -
- RTS
-
- DIR─ISPLAY╚EADING = *
- LDA #<DIR╚EADING═SG
- LDY #>DIR╚EADING═SG
- JSR PUTS
- LDA #<ACE─IRENT╬AME
- LDY #>ACE─IRENT╬AME
- JSR PUTS
- LDA #CHR├╥
- JSR PUTCHAR
- RTS
-
- DIR╚EADING═SG = *
- .ASC "─IR: "
- .BYTE 0
-
- DIR─ISPLAY╘RAILER = *
- LDX #3
- - LDA ACE─IRENT┬YTES,X
- STA DIR╞REE,X
- DEX
- BPL -
- LDX #0
- LDY #0
- - LDA DIR╘RAILING═SG,X
- BEQ +
- CMP #4
- BCC STORE╬UM
- STA TRAIL┬UF,Y
- INX
- INY
- BNE -
- + LDA #<TRAIL┬UF
- LDX #>TRAIL┬UF
- STA ZP+0
- STX ZP+1
- TYA
- LDY #0
- LDX #STDOUT
- JMP WRITE
-
- STORE╬UM = *
- STX WORK+0
- STY WORK+1
- SEC
- SBC #1
- ASL
- ASL
- ADC #DIR╞ILES
- TAX
- LDA #<UTOA╬UMBER
- LDY #>UTOA╬UMBER
- STA ZP+0
- STY ZP+1
- LDA #1
- JSR UTOA
- LDX #0
- LDY WORK+1
- - LDA UTOA╬UMBER,X
- BEQ +
- STA TRAIL┬UF,Y
- INX
- INY
- BNE -
- + LDX WORK+0
- INX
- JMP --
-
- DIR╘RAILING═SG = *
- .ASC "FILES="
- .BYTE 1
- .ASC " BYTES="
- .BYTE 2
- .ASC " FREE="
- .BYTE 3
- .BYTE CHR├╥
- .BYTE 0
-
- TRAIL┬UF .BUF 64
-
- PUT╔N─ATE = *
- ;** YEAR
- LDA ACE─IRENT─ATE+1
- LDX #9
- JSR PUT─IGITS
- ;** MONTH
- LDA ACE─IRENT─ATE+2
- CMP #$10
- BCC +
- SEC
- SBC #$10-10
- + TAX
- LDA MONTH╙TR+0,X
- STA DIR─ATE╙TR+5
- LDA MONTH╙TR+13,X
- STA DIR─ATE╙TR+6
- LDA MONTH╙TR+26,X
- STA DIR─ATE╙TR+7
- ;** DAY
- LDA ACE─IRENT─ATE+3
- LDX #2
- JSR PUT─IGITS
- ;** HOUR
- LDA ACE─IRENT─ATE+4
- LDX #"A"
- CMP #$00
- BNE +
- LDA #$12
- JMP PUT╚OUR
- + CMP #$12
- BCC PUT╚OUR
- LDX #"P"
- CMP #$12
- BEQ PUT╚OUR
- SEI
- SED
- SEC
- SBC #$12
- CLD
- CLI
- PUT╚OUR = *
- STX DIR─ATE╙TR+18
- LDX #13
- JSR PUT─IGITS
- ;** MINUTE
- LDA ACE─IRENT─ATE+5
- LDX #16
- JSR PUT─IGITS
- RTS
-
- PUT─IGITS = * ;( .┴=NUM, .╪=OFFSET )
- PHA
- LSR
- LSR
- LSR
- LSR
- ORA #$30
- STA DIR─ATE╙TR,X
- PLA
- AND #$0F
- ORA #$30
- STA DIR─ATE╙TR+1,X
- RTS
-
- MONTH╙TR = *
- .ASC "╪╩╞═┴═╩╩┴╙╧╬─"
- .ASC "XAEAPAUUUECOE"
- .ASC "XNBRRYNLGPTVC"
-
- ;******** STANDARD LIBRARY ********
- PUTS = *
- LDX #STDOUT
- FPUTS = *
- STA ZP
- STY ZP+1
- LDY #$FF
- - INY
- LDA (ZP),Y
- BNE -
- TYA
- LDY #0
- JMP WRITE
- EPUTS = *
- LDX #STDERR
- JMP FPUTS
-
- PUTCHAR = *
- LDX #STDOUT
- PUTC = *
- STA PUTC┬UFFER
- LDA #<PUTC┬UFFER
- LDY #>PUTC┬UFFER
- STA ZP
- STY ZP+1
- LDA #1
- LDY #0
- JMP WRITE
- PUTC┬UFFER .BUF 1
-
- GETARG = *
- STY ZP+1
- ASL
- STA ZP
- ROL ZP+1
- CLC
- LDA ACE┴RGV
- ADC ZP
- STA ZP
- LDA ACE┴RGV+1
- ADC ZP+1
- STA ZP+1
- LDY #0
- LDA (ZP),Y
- TAX
- INY
- LDA (ZP),Y
- STX ZP
- STA ZP+1
- RTS
-
- UTOA╬UMBER .BUF 11
-
- ;===BSS===
-
- BSS = *
-