Bug fix
authorRobert Pengelly <robertapengelly@hotmail.com>
Fri, 2 Aug 2024 07:04:41 +0000 (08:04 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Fri, 2 Aug 2024 07:04:41 +0000 (08:04 +0100)
build/chimaera.img
build/chimaera.vhd
src/apps/pcomm/cbreak.asm
src/apps/pcomm/history.asm
src/apps/pcomm/pcomm.asm

index f8cac9ef2c837c8b4d163e57b9c2c2a6778598ce..b02386d1b16436c8ed65d88b01c5ee59dfad7d54 100644 (file)
Binary files a/build/chimaera.img and b/build/chimaera.img differ
index ca7e58327122518c011c379439e90c4aa7063400..98393defcda3850b26f73fddcf38e0bdd68b54e7 100644 (file)
Binary files a/build/chimaera.vhd and b/build/chimaera.vhd differ
index 85ecd7d986c7f081b9eac6ea2cd1f35745495eba..e09ff3aeca51bd896e7b49fa0b3ec8484537af9b 100644 (file)
@@ -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
index 0b9b6959795b741c3bb16d09cd0863f6fe3d4194..2184d85255a4c31fd3b7a908c767a147771941b2 100644 (file)
@@ -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
index e4e366946c2947272ebfd76b5da67ae771f3104c..703de21e7836fcb84a807e56b20eab71010027c2 100644 (file)
@@ -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