More PCOMM fixes
authorRobert Pengelly <robertapengelly@hotmail.com>
Mon, 19 Aug 2024 16:25:23 +0000 (17:25 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Mon, 19 Aug 2024 16:25:23 +0000 (17:25 +0100)
build/chimaera.img
build/chimaera.vhd
src/apps/pcomm/dir.asm
src/apps/pcomm/pcomm.asm

index 0639fe09e9d60d9f2d8784a98848b692e8b8a2dd..8e2c89e7b051f5c104df4a9ec0efe8b6c14be85c 100644 (file)
Binary files a/build/chimaera.img and b/build/chimaera.img differ
index 6762e5e82c76b763fd4f00d8c7dde4da1a856946..213446b12cf7e70253f5cd8cba9d3dd230ce2ee3 100644 (file)
Binary files a/build/chimaera.vhd and b/build/chimaera.vhd differ
index 387de8fc35b9a4b694f919fa82aaebbb97cd7a1b..7fe82080a0ac45a84fe9999bf0b0ff821811055a 100644 (file)
@@ -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:
 
index 214fc72ec93784f6d9f16c6b4357a4eb37c58274..ced250f86b8849c7bec2d5f7756583a9e7b1681b 100644 (file)
@@ -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: