168 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			168 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"
 | |
|     }
 | |
| }
 | |
| 
 |