cmdline support

This commit is contained in:
Luxferre
2026-06-19 08:09:18 +03:00
parent e79d71d323
commit bcceaf6aae
5 changed files with 151 additions and 9 deletions
+29
View File
@@ -781,6 +781,35 @@ END {
LVA = e_entry
}
# Setup command-line arguments on the stack
n = 0
if(length(CMD_OPTS) > 0) n = split(CMD_OPTS, args, "\001")
else {
n = 1
args[1] = "amach"
}
sp = getreg(2)
for(i = n; i >= 1; i--) {
len = length(args[i])
sp = sp - (len + 1)
for(j = 1; j <= len; j++)
MEM[uint32(sp + j - 1)] = ord(substr(args[i], j, 1))
MEM[uint32(sp + len)] = 0
argv_ptr[i] = sp
}
sp = sp - (sp % 16)
sp = sp - 4 * (n + 3)
sp = sp - (sp % 16)
write_word(sp, n)
for(i = 1; i <= n; i++) write_word(sp + 4 * i, argv_ptr[i])
write_word(sp + 4 * (n + 1), 0)
write_word(sp + 4 * (n + 2), 0)
setreg(2, sp)
memsize = pc - LVA
pc = LVA
while(pc > -1) {