From: Robert Pengelly Date: Fri, 2 Aug 2024 07:04:41 +0000 (+0100) Subject: Bug fix X-Git-Url: https://git.candlhat.org/?a=commitdiff_plain;h=ceeb56353468d5912e654f4cb4b2d1f84bb8f7c6;p=chimaera.git Bug fix --- diff --git a/build/chimaera.img b/build/chimaera.img index f8cac9e..b02386d 100644 Binary files a/build/chimaera.img and b/build/chimaera.img differ diff --git a/build/chimaera.vhd b/build/chimaera.vhd index ca7e583..98393de 100644 Binary files a/build/chimaera.vhd and b/build/chimaera.vhd differ diff --git a/src/apps/pcomm/cbreak.asm b/src/apps/pcomm/cbreak.asm index 85ecd7d..e09ff3a 100644 --- a/src/apps/pcomm/cbreak.asm +++ b/src/apps/pcomm/cbreak.asm @@ -12,10 +12,11 @@ global _cbreak_handler _cbreak_handler: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Preserve the extra segment and the ax register. + ;; Preserve registers. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; push es push ax + push bx ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Make sure the extra segment is the same as the code segment. @@ -72,10 +73,20 @@ _cbreak_handler: .L1: + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; Reset the console to the prompt state. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; call _prompt + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; Restore registers. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + pop bx pop ax pop es + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; Clear the carry flag and return. + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; clc retf 2 diff --git a/src/apps/pcomm/history.asm b/src/apps/pcomm/history.asm index 0b9b695..2184d85 100644 --- a/src/apps/pcomm/history.asm +++ b/src/apps/pcomm/history.asm @@ -195,7 +195,7 @@ _history_up: push ax push dx - call _malloc + call _xmalloc add sp, 4 mov bx, ax @@ -263,7 +263,7 @@ _history_up: jz .L5 xor ah, ah - mov al, [_curr_col] + mov al, cs:[_curr_col] push cx push dx diff --git a/src/apps/pcomm/pcomm.asm b/src/apps/pcomm/pcomm.asm index e4e3669..703de21 100644 --- a/src/apps/pcomm/pcomm.asm +++ b/src/apps/pcomm/pcomm.asm @@ -45,6 +45,15 @@ _main: mov cs:[_history_idx], ax mov di, offset _scratch + + push di + push cx + + xor al, al + rep stosb + + pop cx + pop di .L11: @@ -744,8 +753,8 @@ _main: mov bx, offset _app_path call _writestr - call _crlf + jmp .L5 .L1: @@ -1086,6 +1095,7 @@ global _prompt _prompt: push ax + push bx push cx push dx push si @@ -1160,6 +1170,7 @@ _prompt: pop si pop dx pop cx + pop bx pop ax ret