ack/plat/cpm/libsys/build.lua
David Given 25b6712e63 Rework all the ackbuilder scripts not to use wildcards, because we can't expand
them without luaposix, which isn't available (easily) on OSX or Windows.
2022-07-14 23:57:54 +02:00

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"
}
}