diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
commit | 2a4088119cf41175457414dfa59bd4064b8f0562 (patch) | |
tree | 64fe184e399f9870ebd481a90eec34d51e5dff68 /archive/3.transect/ex7.k2 | |
parent | 23fd294d85959c6b476bcdc35ed6ad508cc99b8f (diff) | |
download | mu-2a4088119cf41175457414dfa59bd4064b8f0562.tar.gz |
5852
Diffstat (limited to 'archive/3.transect/ex7.k2')
-rw-r--r-- | archive/3.transect/ex7.k2 | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/archive/3.transect/ex7.k2 b/archive/3.transect/ex7.k2 deleted file mode 100644 index 3ede2c5e..00000000 --- a/archive/3.transect/ex7.k2 +++ /dev/null @@ -1,64 +0,0 @@ -# example showing file syscalls -# -# Create a file, open it for writing, write a character to it, close it, open -# it for reading, read a character from it, close it, delete it, and return -# the character read. - -var stream : int = 0 -var a : char = 97 -var b : char = 0 -var filename : (array char) = ".foo" - -fn main [ - call create, filename - *stream <- call open, filename, 1/wronly - call write, *stream, a, 1 - call close, *stream - stream <- call open, filename, 0/rdonly - call read, *stream, b, 1 - call close, *stream - call unlink, filename - var result/EBX : char - result/EBX <- copy b # TODO: copy char to int? - call exit-EBX -] - -fn read fd : int, x : (address array byte), size : int [ - EBX <- copy fd - ECX <- copy x - EDX <- copy size - EAX <- copy 3/read - syscall -] - -fn write fd : int, x : (address array byte), size : int [ - EBX <- copy fd - ECX <- copy x - EDX <- copy size - EAX <- copy 4/write - syscall -] - -fn open name : (address array byte) [ - EBX <- copy name - EAX <- copy 5/open - syscall -] - -fn close name : (address array byte) [ - EBX <- copy name - EAX <- copy 6/close - syscall -] - -fn unlink name : (address array byte) [ - EBX <- copy name - EAX <- copy 10/unlink - syscall -] - -# like exit, but assumes the code is already in EBX -fn exit-EBX [ - code/EAX <- copy 1/exit - syscall -] |