From: Robert Pengelly Date: Mon, 19 Aug 2024 16:25:23 +0000 (+0100) Subject: More PCOMM fixes X-Git-Url: https://git.candlhat.org/?a=commitdiff_plain;h=0933ff5424923273fbf788979ace52ae801a6da5;p=chimaera.git More PCOMM fixes --- diff --git a/build/chimaera.img b/build/chimaera.img index 0639fe0..8e2c89e 100644 Binary files a/build/chimaera.img and b/build/chimaera.img differ diff --git a/build/chimaera.vhd b/build/chimaera.vhd index 6762e5e..213446b 100644 Binary files a/build/chimaera.vhd and b/build/chimaera.vhd differ diff --git a/src/apps/pcomm/dir.asm b/src/apps/pcomm/dir.asm index 387de8f..7fe8208 100644 --- a/src/apps/pcomm/dir.asm +++ b/src/apps/pcomm/dir.asm @@ -448,10 +448,17 @@ _walk_dir.char_ok: _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: diff --git a/src/apps/pcomm/pcomm.asm b/src/apps/pcomm/pcomm.asm index 214fc72..ced250f 100644 --- a/src/apps/pcomm/pcomm.asm +++ b/src/apps/pcomm/pcomm.asm @@ -201,6 +201,32 @@ _main: .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 @@ -277,6 +303,28 @@ _main: ;; 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: @@ -291,6 +339,21 @@ _main: 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: