Skip to content

Commit 1fe660f

Browse files
mbrukneragurtovoy
authored andcommitted
fix: have DIR return normally, not breaking program flow, and report
free blocks
1 parent ae3b0dc commit 1fe660f

1 file changed

Lines changed: 40 additions & 16 deletions

File tree

  • source/system.f256/module.interfaces/kernel/commands/files

source/system.f256/module.interfaces/kernel/commands/files/dir.asm

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
; ************************************************************************************************
2121

2222
Command_Dir: ;; [dir]
23+
phy
2324
lda KNLDefaultDrive ; set drive to list.
2425
sta kernel.args.directory.open.drive
2526
stz kernel.args.directory.open.path_len
@@ -33,15 +34,29 @@ _CDEventLoop:
3334
bra _CDEventLoop
3435

3536
_CDProcessEvent
36-
lda KNLEvent.type
37+
lda KNLEvent.type
3738
cmp #kernel.event.directory.CLOSED
38-
beq _CDExit
39+
beq _CDSuccess
3940

4041
jsr _CDMessages ; handle various messages
4142
bra _CDEventLoop
43+
_CDSuccess:
44+
ply
45+
lda #0
46+
clc
47+
rts
48+
_CDExit:
49+
ply
50+
jmp WarmStart
51+
4252
;
4353
; Dispatch messages
44-
;
54+
;
55+
_CDEVErr:
56+
lda KNLEvent.directory.stream
57+
sta kernel.args.directory.close.stream
58+
jmp kernel.Directory.Close
59+
4560

4661
_CDMessages:
4762
cmp #kernel.event.directory.OPENED
@@ -55,9 +70,10 @@ _CDMessages:
5570
cmp #kernel.event.directory.EOF
5671
beq _CDEVEOF
5772
cmp #kernel.event.directory.ERROR
58-
beq _CDEVEOF
73+
beq _CDEVErr
5974
rts
6075

76+
6177
_CDEVRead:
6278
lda KNLEvent.directory.stream
6379
sta kernel.args.directory.read.stream
@@ -75,8 +91,11 @@ _CDEVVolume:
7591
jsr EXTPrintCharacter
7692
bra _CDEVRead
7793

78-
_CDExit:
79-
jmp WarmStart
94+
_CDEVEOF:
95+
lda KNLEvent.directory.stream
96+
sta kernel.args.directory.close.stream
97+
jsr kernel.Directory.Close
98+
rts
8099

81100

82101
_CDEVFile:
@@ -91,12 +110,12 @@ _CDEVFile:
91110
sec
92111
adc #16
93112
tax
94-
_CDEVTab:
113+
_CDEVTab:
95114
lda #32
96115
jsr EXTPrintCharacter
97116
dex
98117
bpl _CDEVTab
99-
jsr _CDReadExtended
118+
jsr _CDReadExtended
100119
lda lineBuffer
101120
ldx lineBuffer+1
102121
jsr ConvertInt16
@@ -109,17 +128,22 @@ _CDEVTab:
109128
_CDEVFMessage:
110129
.text " block(s).",13,0
111130
_CDEVFree:
131+
jsr _CDReadExtended
132+
lda lineBuffer
133+
ldx lineBuffer+1
134+
jsr ConvertInt16
135+
jsr PrintStringXA
136+
ldx #_CDEVFreeMessage >> 8
137+
lda #_CDEVFreeMessage & $FF
138+
jsr PrintStringXA
112139
bra _CDEVEOF
113140

114-
_CDEVEOF:
115-
lda KNLEvent.directory.stream
116-
sta kernel.args.directory.close.stream
117-
jmp kernel.Directory.Close
118-
141+
_CDEVFreeMessage:
142+
.text " blocks free.",13,0
119143

120144
;
121145
; IN: A = # of bytes to read
122-
;
146+
;
123147
_CDReadData:
124148

125149
sta kernel.args.recv.buflen
@@ -151,8 +175,8 @@ _CDReadExtended:
151175
.send code
152176

153177
.section storage
154-
.send storage
155-
178+
.send storage
179+
156180
; ************************************************************************************************
157181
;
158182
; Changes and Updates

0 commit comments

Comments
 (0)