Bug fixes
authorRobert Pengelly <robertapengelly@hotmail.com>
Mon, 7 Oct 2024 01:55:21 +0000 (02:55 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Mon, 7 Oct 2024 01:55:21 +0000 (02:55 +0100)
build/chimaera.img
build/chimaera.vhd
src/apps/pcomm/pcomm.asm

index 293338885c19c1740cfbc5453ddd019c791051c7..817367399c1e491b3533ece11a0907124b2d402f 100644 (file)
Binary files a/build/chimaera.img and b/build/chimaera.img differ
index 47cb4229bc2a31d9a99814d3c412c28169595b47..08934ea055ebc816fdc3b45db052c7a65729368f 100644 (file)
Binary files a/build/chimaera.vhd and b/build/chimaera.vhd differ
index 2e21d9e70da0cf7af4582e5e3b4fa92e3f314a35..ae475c1744bc2dbaa5d81226045df5bac2ae1cf5 100644 (file)
@@ -80,6 +80,8 @@ _main:
     
     mov     ax,     [_scratch_list]
     xor     di,     di
+    
+    mov     word ptr [bp - 2],      ax
 
 .L112:
 
@@ -143,6 +145,15 @@ _main:
     call    _free
     add     sp,     2
     
+    mov     bx,     [_scratch_list]
+    
+    cmp     bx,     word ptr [bp - 2]
+    je      .L126
+    
+    mov     ax,     bx
+
+.L126:
+
     mov     [_scratch_list],    ax
     mov     word ptr [bp - 2],      ax
     
@@ -2380,6 +2391,30 @@ _process_line:
 .L123:
 
     push    es
+    push    bx
+    
+    mov     ax,     [_scratch_list]
+    
+    and     ax,     ax
+    jz      .L127
+    
+    push    es
+    push    bx
+    
+    mov     es,     ax
+    xor     bx,     bx
+    
+    mov     ax,     es:[bx + 4]
+    pop     bx
+    pop     es
+
+.L127:
+
+    push    ax
+    
+    xor     ax,     ax
+    mov     [_scratch_list],    ax
+    
     push    di
     
     call    _strlen
@@ -2414,6 +2449,32 @@ _process_line:
     call    _strcpy
     add     sp,     4
     
+    mov     ax,     [_scratch_list]
+    
+    and     ax,     ax
+    jnz     .L125
+    
+    pop     ax
+    mov     [_scratch_list],    ax
+    
+    jmp     .L119
+
+.L125:
+
+    mov     es,     ax
+    xor     bx,     bx
+    
+    mov     ax,     es:[bx + 4]
+    
+    and     ax,     ax
+    jnz     .L125
+    
+    pop     ax
+    mov     es:[bx + 4],    ax
+
+.L119:
+
+    pop     bx
     pop     es
 
 .L120:
@@ -2922,6 +2983,12 @@ _read_batch.parse:
     jz      _read_batch.close
     
     mov     word ptr [bp - 2],      ax
+    
+    mov     ax,     [_scratch_list]
+    mov     word ptr [bp - 6],      ax
+    
+    xor     ax,     ax
+    mov     [_scratch_list],        ax
 
 _read_batch.read_line:
 
@@ -3041,13 +3108,38 @@ _read_batch.free:
     mov     ax,     word ptr [bp - 2]
     
     and     ax,     ax
-    jz      _read_batch.done
+    jz      _read_batch.append
     
     push    ax
     
     call    _load_line_destroy_internal_data
     add     sp,     2
 
+_read_batch.append:
+
+    mov     ax,     [_scratch_list]
+    
+    and     ax,     ax
+    jnz     _read_batch.find_last
+    
+    mov     ax,     word ptr [bp - 6]
+    mov     [_scratch_list],    ax
+    
+    jmp     _read_batch.done
+
+_read_batch.find_last:
+
+    mov     es,     ax
+    xor     bx,     bx
+    
+    mov     ax,     es:[bx + 4]
+    
+    and     ax,     ax
+    jnz     _read_batch.find_last
+    
+    mov     ax,     word ptr [bp - 6]
+    mov     es:[bx + 4],        ax
+
 _read_batch.done:
 
     pop     ds