From be3ba9989c50bd199c08ed9a314245fc846894b6 Mon Sep 17 00:00:00 2001
From: Robert Pengelly <robertapengelly@hotmail.com>
Date: Fri, 27 Sep 2024 22:20:00 +0100
Subject: [PATCH] Search .bat as well as .com

---
 build/chimaera.img       | Bin 368640 -> 368640 bytes
 build/chimaera.vhd       | Bin 34120704 -> 34120704 bytes
 src/apps/pcomm/pcomm.asm |  84 ++++++++++++++++++++++++++++++++-------
 3 files changed, 69 insertions(+), 15 deletions(-)

diff --git a/build/chimaera.img b/build/chimaera.img
index 0e30930df07fd27292e33a6e4866c42e16f95c07..9a4a3d22bf331905e1a546ab24a0b505adf9d498 100644
GIT binary patch
delta 4540
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

delta 4469
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
CJ1hkN

diff --git a/build/chimaera.vhd b/build/chimaera.vhd
index e629017fef72e194369dd7d4c5682a699c76171d..fffe6cbd7c520ca227f411ae6a416957f86f3b73 100644
GIT binary patch
delta 6472
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
Z{DOHgTIsz3)9)CW7MQUZ@9bOD{{a+B;OqbZ

delta 6402
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

diff --git a/src/apps/pcomm/pcomm.asm b/src/apps/pcomm/pcomm.asm
index ff12bf4..395aec2 100644
--- a/src/apps/pcomm/pcomm.asm
+++ b/src/apps/pcomm/pcomm.asm
@@ -2238,20 +2238,26 @@ _process_line:
     mov     word ptr cs:[_need_ext],    1
     add     bx,     ax
     
+    mov     si,     offset _ext_table
+    mov     cx,     offset _ext_count
+
+.L106:
+
+    mov     dx,     di
+    
     push    di
+    push    cx
     
-    mov     al,     '.'
-    stosb
+    mov     ax,     cs:[si + 2]
+    mov     cx,     cs:[si]
     
-    mov     al,     'c'
-    stosb
-    
-    mov     al,     'o'
-    stosb
+    add     si,     offset _ext_size
+    push    si
     
-    mov     al,     'm'
-    stosb
+    mov     si,     ax
+    rep     movsb
     
+    push    dx
     jmp     .L25
 
 .L24:
@@ -2274,7 +2280,7 @@ _process_line:
     
     mov     word ptr cs:[_in_batch],    0
     
-    mov     ax,     offset _ext_batch
+    mov     ax,     offset _ext_bat
     push    ax
     
     call    _strcmp
@@ -2295,6 +2301,14 @@ _process_line:
     jc      .L107
     
     add     sp,     4
+    
+    cmp     word ptr cs:[_need_ext],    1
+    jne     .L101
+    
+    pop     si
+    pop     cx
+    pop     di
+    
     jmp     .L101
 
 .L104:
@@ -2313,9 +2327,16 @@ _process_line:
     mov     ax,     HEX (4B00)
     int     HEX (21)
     pop     bx
-    jnc     .L101
+    jc      .L103
+    
+    cmp     word ptr cs:[_need_ext],    1
+    jne     .L101
     
-    jmp     .L103
+    pop     si
+    pop     cx
+    pop     di
+    
+    jmp     .L101
 
 .L107:
 
@@ -2395,6 +2416,13 @@ _process_line:
     pop     bx
     pop     ax
     
+    cmp     word ptr cs:[_need_ext],    1
+    jne     .L101
+    
+    pop     si
+    pop     cx
+    pop     di
+    
     jmp     .L101
 
 .L97:
@@ -2407,6 +2435,18 @@ _process_line:
 
 .L98:
 
+    cmp     word ptr cs:[_need_ext],    1
+    jne     .L108
+    
+    pop     si
+    pop     cx
+    pop     di
+    
+    dec     cx
+    jnz     .L106
+
+.L108:
+
     mov     bx,     offset _err_invalid
     call    _writestr
     
@@ -2748,9 +2788,8 @@ _autoexec:                      db      "AUTOEXEC.BAT",     HEX (00)
 _batch_flags:                   db      "r",        HEX (00)
 
 _in_batch:                      dw      HEX (0000)
-_ext_batch:                     db      ".bat",     HEX (00)
-
 _ll_scratch:                    dw      HEX (0000)
+
 _fn_wild:                       db      "*.*",      HEX (00)
 
 _dta_addr:                      dw      HEX (0000)
@@ -2787,10 +2826,25 @@ global      _curr_drive
 _curr_drive:                    db      HEX (00)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Commands.
+;; Commands and extensions.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 %include    "cmdhash.gen"
+_ext_com:                       db      ".com",     HEX (00)
+_ext_bat:                       db      ".bat",     HEX (00)
+
 _cmd_size:                      equ     6
+_ext_size:                      equ     4
+
+align   4
+_ext_table:
+
+    dw      HEX (0004)
+    dw      offset _ext_com
+    
+    dw      HEX (0004)
+    dw      offset _ext_bat
+
+_ext_count:                     equ     ($ - _ext_table) / _ext_size
 
 align   4
 _cmd_table:
-- 
2.34.1