_walk_dir.check_path:
- ;cmp byte ptr es:[di - 1], '\\'
- ;jne _walk_dir.null
- ;
- ;dec di
+ cmp byte ptr es:[di - 1], '\\'
+ jne _walk_dir.null
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; When PCOMM is run under FreeDOS, a path like A:\FREEDOS\ results in
+ ;; a path not found error so as a workaround add a wildcard after it.
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ mov si, offset _fn_wild
+
+ mov cx, 3
+ rep movsb
_walk_dir.null:
.L40:
+ mov ax, '.'
+
+ push ax
+ push bx
+
+ call _strrchr
+ add sp, 4
+
+ and ax, ax
+ jnz .L56
+
+ push si
+ push cx
+
+ mov si, offset _fn_wild
+
+ mov cx, 3
+ rep movsb
+
+ pop cx
+ pop si
+
+ jmp .L38
+
+.L56:
+
mov al, '*'
stosb
;; have the asterisk character.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dec ax
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; If the value in ax is less than 2 then we don't want to compare
+ ;; anymore characters.
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ cmp ax, 2
+ jb .L55
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; Do we have a period and another asterisk?
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ cmp byte ptr [bx - 2], '.'
+ jne .L55
+
+ cmp byte ptr [bx - 3], '*'
+ jne .L55
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; Yep, so decrement ax by another 2.
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ dec ax
+ dec ax
.L55:
inc ax
inc ax
+ mov si, bx
+ sub si, offset _temp
+
+ cmp si, 2
+ jb .L52
+
+ cmp byte ptr [bx - 2], '.'
+ jne .L52
+
+ cmp byte ptr [bx - 3], '*'
+ jne .L52
+
+ inc ax
+ inc ax
+
jmp .L52
.L53: