;---------------------------------------
; LS (LIST) V1.1   22/2/1991
; Display current directory
;---------------------------------------

pam      = $2000
dirlen   = 96
filemode = 24

indr1    = $02
dircurr  = $09
indr3    = $12
convmode = $40
c2flaga  = $5e
c2prot   = $5f
stdonum  = $61
dwork    = $68
c2tmp    = $5d

openfnum = $0906
close    = $0909
chrout   = $090c
dirread  = $0927
convert  = $0930
strout   = $100f
decout   = $1012
flagchk  = $101e

petasc   = 5

;---------------------------------------
         *= $c000

c2o      ldx #255
         stx c2tmp
         stx c2flaga

         lda #1
         ldx stdonum
         jsr openfnum
         jsr cr

         lda #65
         jsr flagchk
         bcs c2a
         inc c2flaga

c2a      inc c2tmp
         lda c2tmp
         tax
         cmp #dirlen
         bne c2b
         jmp printmem

c2b      ldy #0
         jsr dirread    ;chk if here
         cmp dircurr
         bne c2a
         lda indr1
         sta indr3
         lda indr1+1
         sta indr3+1
         ldy #4
         lda (indr3),y
         and #3
         beq c2a          ;chk if there

         ldy #5       ;Handle dot files,
         lda (indr3),y ;depending on "a"
         cmp #"."      ;flag
         bne c2k
         lda c2flaga
         bne c2a

c2k      ldy #2
         lda (indr3),y
         sta dwork
         iny
         lda (indr3),y
         sta dwork+1
         iny
         lda (indr3),y
         jsr printprot
         bcc *+5
         jmp c2bug
         jsr decout
         jsr space
         bcs c2bug
         jsr printname
         bcs c2bug
         jmp c2a

printprot sta c2prot
         ldx stdonum
         jsr cr
         ldx #45
         ldy #filemode
         lda (indr3),y
         beq pprotz
         ldx #35
pprotz   txa
         jsr ascout
         ldy #45
         lda c2prot
         and #3
         cmp #1
         bne pprot1
         ldy #"d"
pprot1   tya
         jsr ascout
         ldy #45
         lda c2prot
         and #16
         beq pprot2
         ldy #"r"
pprot2   tya
         jsr ascout
         lda c2prot
         ldy #45
         and #8
         beq pprot3
         ldy #"w"
pprot3   tya
         jsr ascout
         lda c2prot
         ldy #45
         and #4
         beq pprot4
         ldy #"x"
pprot4   tya
         jsr ascout
         jmp space

printname ldx stdonum
         ldy #5
pname1   lda (indr3),y
         bne pname2
         lda #32
pname2   jsr ascout
         bcs c2bug
         iny
         cpy #21
         bne pname1
         clc
c2bug    rts

printmem ldy #0
         sty dwork
         sty dwork+1
pmem2    lda pam,y
         cmp #1
         bne pmem1
         inc dwork+1
pmem1    iny
         bne pmem2
         ldx stdonum
         jsr cr
         jsr cr
         jsr space
         jsr space
         bcs c2bug
         jsr decout
         bcs c2bug

         lda #<memtxt
         sta indr3
         lda #>memtxt
         sta indr3+1
         lda stdonum
         jsr strout
         bcs c2bug
         lda stdonum
         jsr close
         bcs *+4
         lda #0
         rts

memtxt   .text " bytes free"
         .byte 13,64


space    lda #32
         .byte $2c
cr       lda #13

ascout   ldx #petasc
         stx convmode
         jsr convert
         ldx stdonum
         jmp chrout


