diff --git a/ponydos.asm b/ponydos.asm index 8a1cb8e..b9c4735 100644 --- a/ponydos.asm +++ b/ponydos.asm @@ -62,6 +62,7 @@ load_shell: push word 0x1000 pop es mov si, shell_name + xor dx, dx call 0:open_file xor bx, bx xor di, di ; read @@ -90,7 +91,7 @@ draw: ; Draw windows push cs ; Return segment push word mainloop ; Return offset - mov bx, [window_chain_head] + mov bx, [di - mouse_column + window_chain_head] mov ax, 0xf000 and ax, bx push ax ; Call segment @@ -100,7 +101,7 @@ draw: retf mainloop: - cmp byte [redraw], 0 + cmp byte [di - mouse_column + redraw], 0 jne draw mov bx, [di - mouse_column + mouse_x] @@ -299,6 +300,7 @@ shell_name db 'shell.bin', 0 ; out: ; ax = LBA of first sector, 0 if no space left ; cx = length in sectors +; dx = non-zero => do not create new file ; di = dirent address (in GLOBAL_DIRENTS) ; [Far calls only] open_file: @@ -354,6 +356,9 @@ open_file: retf .create_file: + test dx, dx + jnz .return + ; TODO: zero out the sector for this file? inc word [es:di] diff --git a/shell.asm b/shell.asm index 5387601..f24402d 100644 --- a/shell.asm +++ b/shell.asm @@ -44,6 +44,7 @@ process_event: initialize: ; Set wallpaper mov si, wallpaper_name + xor dx, dx call PONYDOS_SEG:SYS_OPEN_FILE mov bp, PONYDOS_SEG