35 lines
828 B
Plaintext
35 lines
828 B
Plaintext
global _start
|
|
|
|
: syscall ( num:eax -- result:eax ) syscall ;
|
|
|
|
: exit ( status:edi -- noret ) 60 syscall ;
|
|
: bye ( -- noret ) 0 exit ;
|
|
: die ( err:eax -- noret ) neg exit ;
|
|
|
|
: unwrap ( result:eax -- value:eax ) dup 0 cmp ' die xl ;
|
|
: ordie ( result -- ) unwrap drop ;
|
|
|
|
: open ( pathname:edi flags:esi mode:edx -- fd:eax ) 2 syscall unwrap ;
|
|
: close ( fd:edi -- ) 3 syscall ordie ;
|
|
|
|
: mkdir ( pathname:edi mode:esi -- ) 83 syscall ordie ;
|
|
|
|
00001 const for-writing
|
|
00100 const create
|
|
01000 const truncate
|
|
|
|
: create-file ( pathname -- )
|
|
create for-writing or truncate or
|
|
0640 open close ;
|
|
|
|
: make-directory ( pathname -- ) 0750 mkdir ;
|
|
|
|
: create-output-file ( -- ) s" output.txt" drop create-file ;
|
|
: make-docs-directory ( -- ) s" docs" drop make-directory ;
|
|
|
|
: _start ( -- noret )
|
|
create-output-file
|
|
make-docs-directory
|
|
bye
|
|
;
|