6788
This commit is contained in:
parent
fecb649b9a
commit
985e85cc56
|
@ -44,6 +44,9 @@ open: # filename: (addr array byte), write?: boolean, out: (addr handle buffere
|
||||||
89/<- %ecx 0/r32/eax
|
89/<- %ecx 0/r32/eax
|
||||||
# restore edx
|
# restore edx
|
||||||
5a/pop-to-edx
|
5a/pop-to-edx
|
||||||
|
# if fd < 0 return
|
||||||
|
3d/compare-eax-with 0/imm32
|
||||||
|
7c/jump-if-< $open:end/disp8
|
||||||
# allocate a buffered-file
|
# allocate a buffered-file
|
||||||
(allocate Heap 0x1010 *(ebp+0x10)) # file-buffer-size + 16 for other fields
|
(allocate Heap 0x1010 *(ebp+0x10)) # file-buffer-size + 16 for other fields
|
||||||
# var out-addr/edi: (addr buffered-file)
|
# var out-addr/edi: (addr buffered-file)
|
||||||
|
|
|
@ -27,6 +27,7 @@ fn main args-on-stack: (addr array addr array byte) -> exit-status/ebx: int {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn interactive args: (addr array addr array byte) -> exit-status/ebx: int {
|
fn interactive args: (addr array addr array byte) -> exit-status/ebx: int {
|
||||||
|
$interactive:body: {
|
||||||
# initialize fs from args[1]
|
# initialize fs from args[1]
|
||||||
var filename/eax: (addr array byte) <- first-arg args
|
var filename/eax: (addr array byte) <- first-arg args
|
||||||
var file-storage: (handle buffered-file)
|
var file-storage: (handle buffered-file)
|
||||||
|
@ -34,6 +35,14 @@ fn interactive args: (addr array addr array byte) -> exit-status/ebx: int {
|
||||||
open filename, 0, file-storage-addr
|
open filename, 0, file-storage-addr
|
||||||
var _fs/eax: (addr buffered-file) <- lookup file-storage
|
var _fs/eax: (addr buffered-file) <- lookup file-storage
|
||||||
var fs/esi: (addr buffered-file) <- copy _fs
|
var fs/esi: (addr buffered-file) <- copy _fs
|
||||||
|
# if no file, exit
|
||||||
|
{
|
||||||
|
compare fs, 0
|
||||||
|
break-if-!=
|
||||||
|
print-string-to-real-screen "file not found\n"
|
||||||
|
exit-status <- copy 1
|
||||||
|
break $interactive:body
|
||||||
|
}
|
||||||
#
|
#
|
||||||
enable-screen-grid-mode
|
enable-screen-grid-mode
|
||||||
enable-keyboard-immediate-mode
|
enable-keyboard-immediate-mode
|
||||||
|
@ -53,6 +62,7 @@ fn interactive args: (addr array addr array byte) -> exit-status/ebx: int {
|
||||||
enable-screen-type-mode
|
enable-screen-type-mode
|
||||||
exit-status <- copy 0
|
exit-status <- copy 0
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn render screen: (addr paginated-screen), fs: (addr buffered-file) {
|
fn render screen: (addr paginated-screen), fs: (addr buffered-file) {
|
||||||
start-drawing screen
|
start-drawing screen
|
||||||
|
|
Loading…
Reference in New Issue