75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
/*
|
|
* Copyright (c) 2023 : Ognjen 'xolatile' Milan Robovic
|
|
*
|
|
* Xop is free software! You will redistribute it or modify it under the terms of the GNU General Public License by Free Software Foundation.
|
|
* And when you do redistribute it or modify it, it will use either version 3 of the License, or (at yours truly opinion) any later version.
|
|
* It is distributed in the hope that it will be useful or harmful, it really depends... But no warranty what so ever, seriously. See GNU/GPLv3.
|
|
*/
|
|
|
|
// #include <xolatile/xtandard.eax>
|
|
|
|
fast
|
|
procedure highlight
|
|
in s32 offset
|
|
in u8 buffer
|
|
|
|
s32 byte
|
|
begin
|
|
loop
|
|
if byte = 0x90
|
|
then
|
|
fastcall echo_new_line
|
|
fastcall terminal_style EFFECT_NORMAL COLOUR_YELLOW
|
|
fastcall echo_byte [buffer + offset]
|
|
fastcall terminal_style -1 -1
|
|
else
|
|
fastcall echo_byte [buffer + offset]
|
|
end if
|
|
inc offset
|
|
if offset = size
|
|
then
|
|
break
|
|
end if
|
|
end loop
|
|
end procedure
|
|
|
|
unix
|
|
program xop
|
|
s32 file = -1
|
|
s32 size = 0
|
|
s32 offset = 0
|
|
|
|
u8 buffer = 0
|
|
begin
|
|
if ! argc = 2
|
|
then
|
|
fastcall fatal_failure 1 "xop: xop input"
|
|
end if
|
|
|
|
fastcall file_open [argv + 1] O_RDONLY
|
|
mov file rax
|
|
fastcall file_size file
|
|
mov size rax
|
|
|
|
fastcall allocate size // ????
|
|
mov buffer rax
|
|
|
|
fastcall fale buffer size
|
|
|
|
fastcall file_close file
|
|
mov file rax
|
|
|
|
fastcall highlight offset buffer
|
|
|
|
fastcall echo_new_line
|
|
|
|
fastcall deallocate buffer
|
|
mov buffer rax
|
|
|
|
machine
|
|
0x90
|
|
end machine
|
|
|
|
exit 0
|
|
end program
|