25b6712e63
them without luaposix, which isn't available (easily) on OSX or Windows.
169 lines
3.6 KiB
Lua
169 lines
3.6 KiB
Lua
acklibrary {
|
|
name = "internal",
|
|
hdrs = {
|
|
"./asm.h",
|
|
"./cpmsys.h",
|
|
}
|
|
}
|
|
|
|
local bdos_calls = {
|
|
[ 0] = "cpm_exit",
|
|
[ 1] = "cpm_conin",
|
|
[ 2] = "cpm_conout",
|
|
[ 3] = "cpm_auxin",
|
|
[ 4] = "cpm_auxout",
|
|
[ 5] = "cpm_lstout",
|
|
[ 6] = "cpm_conio",
|
|
[ 7] = "cpm_get_iobyte",
|
|
[ 8] = "cpm_set_iobyte",
|
|
[ 9] = "cpm_printstring",
|
|
[10] = "cpm_readline",
|
|
[11] = "cpm_const",
|
|
[12] = "cpm_get_version",
|
|
[13] = "cpm_reset_disk_system",
|
|
[14] = "cpm_select_drive",
|
|
[15] = "cpm_open_file",
|
|
[16] = "cpm_close_file",
|
|
[17] = "cpm_findfirst",
|
|
[18] = "cpm_findnext",
|
|
[19] = "cpm_delete_file",
|
|
[20] = "cpm_read_sequential",
|
|
[21] = "cpm_write_sequential",
|
|
[22] = "cpm_make_file",
|
|
[23] = "cpm_rename_file",
|
|
[24] = "cpm_get_login_vector",
|
|
[25] = "cpm_get_current_drive",
|
|
[26] = "cpm_set_dma",
|
|
[27] = "cpm_get_allocation_vector",
|
|
[28] = "cpm_write_protect_drive",
|
|
[29] = "cpm_get_readonly_vector",
|
|
[30] = "cpm_set_file_attributes",
|
|
[31] = "cpm_get_dpb",
|
|
[32] = "cpm_get_set_user",
|
|
[33] = "cpm_read_random",
|
|
[34] = "cpm_write_random",
|
|
[35] = "cpm_seek_to_end",
|
|
[36] = "cpm_seek_to_seq_pos",
|
|
[37] = "cpm_reset_drives",
|
|
[40] = "cpm_write_random_filled",
|
|
}
|
|
|
|
local bios_calls = {
|
|
[ 6] = "cpm_bios_const",
|
|
[ 9] = "cpm_bios_conin",
|
|
[12] = "cpm_bios_conout",
|
|
[15] = "cpm_bios_list",
|
|
[18] = "cpm_bios_punch",
|
|
[21] = "cpm_bios_reader",
|
|
[24] = "cpm_bios_home",
|
|
-- Special: [27] = "cpm_bios_seldsk",
|
|
[30] = "cpm_bios_settrk",
|
|
[33] = "cpm_bios_setsec",
|
|
[36] = "cpm_bios_setdma",
|
|
[39] = "cpm_bios_read",
|
|
[42] = "cpm_bios_write",
|
|
[45] = "cpm_bios_listst",
|
|
-- Special: [48] = "cpm_bios_sectran",
|
|
}
|
|
|
|
local trap_calls = {
|
|
"EARRAY",
|
|
"EBADGTO",
|
|
"EBADLAE",
|
|
"EBADLIN",
|
|
"EBADMON",
|
|
"EBADPC",
|
|
"EBADPTR",
|
|
"ECASE",
|
|
"ECONV",
|
|
"EFDIVZ",
|
|
"EFOVFL",
|
|
"EFUND",
|
|
"EFUNFL",
|
|
"EHEAP",
|
|
"EIDIVZ",
|
|
"EILLINS",
|
|
"EIOVFL",
|
|
"EIUND",
|
|
"EMEMFLT",
|
|
"EODDZ",
|
|
"ERANGE",
|
|
"ESET",
|
|
"ESTACK",
|
|
"EUNIMPL",
|
|
}
|
|
|
|
local generated = {}
|
|
for n, name in pairs(bdos_calls) do
|
|
generated[#generated+1] = normalrule {
|
|
name = name,
|
|
ins = { "./make_bdos_call.sh" },
|
|
outleaves = { name..".s" },
|
|
commands = {
|
|
"%{ins[1]} "..n.." "..name.." > %{outs}"
|
|
}
|
|
}
|
|
end
|
|
for n, name in pairs(bios_calls) do
|
|
generated[#generated+1] = normalrule {
|
|
name = name,
|
|
ins = { "./make_bios_call.sh" },
|
|
outleaves = { name..".s" },
|
|
commands = {
|
|
"%{ins[1]} "..n.." "..name.." > %{outs}"
|
|
}
|
|
}
|
|
end
|
|
for _, name in pairs(trap_calls) do
|
|
generated[#generated+1] = normalrule {
|
|
name = name,
|
|
ins = { "./make_trap.sh" },
|
|
outleaves = { name..".s" },
|
|
commands = {
|
|
"%{ins[1]} "..name:lower().." "..name.." > %{outs}"
|
|
}
|
|
}
|
|
end
|
|
|
|
acklibrary {
|
|
name = "lib",
|
|
srcs = {
|
|
"./_bdos.s",
|
|
"./_bios_raw.s",
|
|
"./_bios.s",
|
|
"./bios_sectran.s",
|
|
"./bios_seldsk.s",
|
|
"./brk.c",
|
|
"./close.c",
|
|
"./cpm_overwrite_ccp.s",
|
|
"./cpm_printstring0.s",
|
|
"./cpm_read_random_safe.c",
|
|
"./creat.c",
|
|
-- "./errno.s",
|
|
"./fcb.c",
|
|
"./fd.c",
|
|
"./getpid.c",
|
|
"./_hol0.s",
|
|
"./_inn2.s",
|
|
"./isatty.c",
|
|
"./kill.c",
|
|
"./lseek.c",
|
|
"./open.c",
|
|
"./read.c",
|
|
"./signal.c",
|
|
"./time.c",
|
|
"./_trap.s",
|
|
"./write.c",
|
|
generated
|
|
},
|
|
deps = {
|
|
"lang/cem/libcc.ansi/headers+headers",
|
|
"plat/cpm/include+headers",
|
|
"+internal",
|
|
},
|
|
vars = {
|
|
plat = "cpm"
|
|
}
|
|
}
|
|
|