Browse Source

Fix in svim buffers

special_first_anniversary_edition
Rhodez-x 5 years ago
parent
commit
c8127c356e
1 changed files with 15 additions and 12 deletions
  1. +15
    -12
      lib/svim.nasm

+ 15
- 12
lib/svim.nasm View File

@ -151,7 +151,7 @@ svim:
mov dl, [global_disk_identifier] ;Drive number
int 0x13
mov bx, .fileindex_for_open_file
mov bx, .buffer_for_svim
add bx, 510
mov ax, [bx]
mov [.buffer_counter_svim], ax
@ -161,6 +161,9 @@ svim:
call print
.svim_loop:
xor bx, bx
xor cx, cx
xor dx, dx
mov ax, 0x1000 ; BIOS call to wait for key
int 0x16
cmp ax, 0x1c0d ; enter key
@ -171,8 +174,8 @@ svim:
.no_enter:
cmp ax, 0x11b ; ESC key
je .end_svim
cmp ax, 0x3c00 ; f2 key
je .f_key_pushed
;cmp ax, 0x3c00 ; f2 key
;je .f_key_pushed
cmp ax, 0x0e08 ; backspace
je .backspace_pushed
mov bx, ax
@ -197,7 +200,7 @@ svim:
;DL Drive
;ES:BX Buffer Address Pointer
mov ax, [.buffer_counter_svim]
mov bx, .fileindex_for_open_file
mov bx, .buffer_for_svim
add bx, 510
mov [bx], ax
@ -229,16 +232,17 @@ svim:
ret
.backspace_pushed:
pusha
mov bx, [.buffer_counter_svim]
cmp bx, 0
je .svim_loop
;print_format .debug_buffer_counter, bx
mov cx, bx
sub cx, 1
mov bx, .buffer_for_svim
add bx, cx
mov BYTE [bx], 0
mov [.buffer_counter_svim], cx
;print_format .debug_buffer_counter, cx
; Go back one space
mov ax, 0x0e08 ; ah=0x0e means teletype output. al=0x08 means backspace character.
int 0x10
@ -250,22 +254,21 @@ svim:
; Go back one space again as the above print of NULL pushes the cursor forward again.
mov ax, 0x0e08
int 0x10
popa
jmp .svim_loop
.f_key_pushed:
mov al, 0x01 ;arg: index 1
call os_change_screen
jmp .svim_loop
;.f_key_pushed:
;mov al, 0x01 ;arg: index 1
;call os_change_screen
;jmp .svim_loop
;.load_buffer_svim:
.debug_buffer_counter db 'Buffer count: %d', 13, 10, 0
.welcome_svim db 'Vim like text editor for SingOS, ESC to exit', 0
.welcome_svim_select_file db 'svim - Open file: ', 0
.welcome_svim_enter_fileindex db 'Enter fileindex: ', 0
.seperate_line db '________________________________________________________________________________', 13, 10, 0
.seperate_line db '________________________________________________________________________________', 0
.fileindex_for_open_file dw 0
.buffer_for_svim times 512 dw 0 ; db 'this is the buffer', 0, times 32 db 0
.buffer_counter_svim dw 0

Loading…
Cancel
Save