From 37f0752b6cae739b747e536669f1ff9e6a85c10e Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Mon, 7 Oct 2024 02:55:21 +0100 Subject: [PATCH] Bug fixes --- build/chimaera.img | Bin 368640 -> 368640 bytes build/chimaera.vhd | Bin 34120704 -> 34120704 bytes src/apps/pcomm/pcomm.asm | 94 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/build/chimaera.img b/build/chimaera.img index 293338885c19c1740cfbc5453ddd019c791051c7..817367399c1e491b3533ece11a0907124b2d402f 100644 GIT binary patch delta 5194 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 delta 5000 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 WzftgI;VXe}0Q@@@=xPC8vi}Ew*}&fb diff --git a/build/chimaera.vhd b/build/chimaera.vhd index 47cb4229bc2a31d9a99814d3c412c28169595b47..08934ea055ebc816fdc3b45db052c7a65729368f 100644 GIT binary patch delta 7142 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 XawYMWobsB`u;`q|v>R}~e_s7R1%*j^ diff --git a/src/apps/pcomm/pcomm.asm b/src/apps/pcomm/pcomm.asm index 2e21d9e..ae475c1 100644 --- a/src/apps/pcomm/pcomm.asm +++ b/src/apps/pcomm/pcomm.asm @@ -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 -- 2.34.1