Initial import of ViperOS
This commit is contained in:
39
Apps/HelloWorld/linker.ld
Normal file
39
Apps/HelloWorld/linker.ld
Normal file
@@ -0,0 +1,39 @@
|
||||
ENTRY(__entry)
|
||||
|
||||
SECTIONS {
|
||||
. = 0x400000;
|
||||
|
||||
.text : {
|
||||
__entry = .;
|
||||
*(.text.startup)
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
}
|
||||
|
||||
.rodata : {
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
}
|
||||
|
||||
.bss : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
__bss_end = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.comment)
|
||||
*(.note)
|
||||
*(.eh_frame)
|
||||
*(.eh_frame_hdr)
|
||||
*(.reloc)
|
||||
*(.rela)
|
||||
*(.debug*)
|
||||
}
|
||||
}
|
||||
51
Apps/HelloWorld/main.py
Normal file
51
Apps/HelloWorld/main.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import vpsdk.vpui as vpui
|
||||
import vpsdk.window as window
|
||||
import vpsdk.process as process
|
||||
import vpsdk.dynlib as dynlib
|
||||
from stdint import *
|
||||
import t, c
|
||||
|
||||
@c.Attribute(t.attr.section(".text.startup"), t.attr.aligned(16))
|
||||
def _start() -> t.CInt | t.CExport:
|
||||
base: t.CUInt64T = dynlib.load_so("/LIBS/SLOG.SO")
|
||||
if base != 0:
|
||||
dynlib.so_call1("log_info", "Hello from dynamic library!")
|
||||
|
||||
root: vpui.Tk = vpui.Tk()
|
||||
root.title("Input Demo")
|
||||
root.set_style(window.STYLE_WIN7)
|
||||
root.geometry(290, 30, 300, 200)
|
||||
root.bg_color = t.CUInt32T(0x1E1E32)
|
||||
master: vpui.Tk | t.CPtr = c.Addr(root)
|
||||
|
||||
entry: vpui.Entry = vpui.Entry(master, 260, 28)
|
||||
root.pack(0, vpui.PACK_TOP, vpui.FILL_X, 0, 20, 10)
|
||||
result: vpui.Label = vpui.Label(master, "", t.CUInt32T(0x00FF00))
|
||||
root.pack(1, vpui.PACK_BOTTOM, 0, 0, 0, 10)
|
||||
|
||||
def _on_submit() -> t.CInt:
|
||||
text: t.CConst | str = entry.get()
|
||||
result.config(text)
|
||||
entry.delete(0, -1)
|
||||
return 0
|
||||
|
||||
lbl: vpui.Label = vpui.Label(master, "Name:", 0xFFFFFFFF)
|
||||
root.pack(2, vpui.PACK_TOP, 0, 0, 20, 0)
|
||||
btn: vpui.Button = vpui.Button(master, 100, 36, "Submit", c.Addr(_on_submit))
|
||||
root.pack(3, vpui.PACK_TOP, 0, 0, 0, 10)
|
||||
|
||||
root2: vpui.Tk = vpui.Tk()
|
||||
root2.title("Test No-Resp")
|
||||
root2.set_style(window.STYLE_WIN10)
|
||||
root2.geometry(200, 50, 300, 150)
|
||||
root2.bg_color = t.CUInt32T(0x1E1E32)
|
||||
master2: vpui.Tk | t.CPtr = c.Addr(root2)
|
||||
|
||||
lbl2: vpui.Label = vpui.Label(master2, "This window will NOT respond!", 0xFFFFFFFF)
|
||||
lbl2.place(10, 10)
|
||||
|
||||
root2.update()
|
||||
|
||||
root.mainloop()
|
||||
process.exit(0)
|
||||
return 0
|
||||
31
Apps/HelloWorld/project.json
Normal file
31
Apps/HelloWorld/project.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "HelloWorld",
|
||||
"version": "1.0.0",
|
||||
"source_dir": "./",
|
||||
"temp_dir": "./temp",
|
||||
"output_dir": "./output",
|
||||
"compiler": {
|
||||
"cmd": "llc",
|
||||
"flags": ["-filetype=obj", "-mtriple=x86_64-none-elf", "-relocation-model=static", "-O2"]
|
||||
},
|
||||
"linker": {
|
||||
"cmd": "ld.lld.exe",
|
||||
"flags": [
|
||||
"-m", "elf_x86_64",
|
||||
"-T", "linker.ld",
|
||||
"--oformat", "elf64-x86-64",
|
||||
"--strip-all"
|
||||
],
|
||||
"output": "helloworld.elf"
|
||||
},
|
||||
"includes": ["../.."],
|
||||
"target": {
|
||||
"triple": "x86_64-none-elf",
|
||||
"datalayout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
},
|
||||
"options": {
|
||||
"slice_level": 3,
|
||||
"target": "llvm",
|
||||
"strict_mode": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user