diff --git a/data/common/settings/assoc.ini b/data/common/settings/assoc.ini index f8bf1f9bf..0558ddae4 100644 --- a/data/common/settings/assoc.ini +++ b/data/common/settings/assoc.ini @@ -190,8 +190,8 @@ gbc=/kolibrios/emul/gameboy min=/kolibrios/emul/pokemini nc=/kolibrios/utils/cnc_editor/cnc_editor ch8=/kolibrios/emul/chip8/chip8 -md=/kolibrios/emul/dgen/dgen -gen=/kolibrios/emul/dgen/dgen +md=/kolibrios/emul/dgen/dgen_open +gen=/kolibrios/emul/dgen/dgen_open rom=/kolibrios/emul/uxn zip=$Unz diff --git a/programs/emulator/dgen-sdl-1.33/Tupfile.lua b/programs/emulator/dgen-sdl-1.33/Tupfile.lua index e6d5557cd..745e5e68b 100644 --- a/programs/emulator/dgen-sdl-1.33/Tupfile.lua +++ b/programs/emulator/dgen-sdl-1.33/Tupfile.lua @@ -65,3 +65,6 @@ tup.append_table(OBJS, ) link_gcc("dgen") + +tup.include(HELPERDIR .. "/use_fasm.lua") +tup.rule({"dgen_open.asm", extra_inputs = {"../../quotkinizer.inc"}}, FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "dgen_open") diff --git a/programs/emulator/dgen-sdl-1.33/dgen_open.asm b/programs/emulator/dgen-sdl-1.33/dgen_open.asm new file mode 100644 index 000000000..1ad9a4dad --- /dev/null +++ b/programs/emulator/dgen-sdl-1.33/dgen_open.asm @@ -0,0 +1,8 @@ +; Wrapper for DGEN +; Wraps command line arguments in quotes and launches dgen. + +format binary as "" + +TARGET equ '/kolibrios/emul/dgen/dgen' + +include '../../quotkinizer.inc' diff --git a/programs/quotkinizer.inc b/programs/quotkinizer.inc new file mode 100644 index 000000000..2ec78cb71 --- /dev/null +++ b/programs/quotkinizer.inc @@ -0,0 +1,59 @@ +; wraps command line arguments in quotes and launches a target. +; TARGET equ 'target_name' must be defined before including this file. + +org 0x0 +use32 + +db 'MENUET01' +dd 1 +dd start +dd i_end +dd m_end +dd m_end +dd params +dd 0 + +start: + cmp byte [params], 0 + je .launch + + mov esi, params + mov edi, new_params + mov byte [edi], '"' + inc edi + +.copy: + lodsb + test al, al + jz .done + stosb + jmp .copy + +.done: + mov byte [edi], '"' + inc edi + mov byte [edi], 0 + + mov dword [fi + 8], new_params + +.launch: + mov eax, 70 + mov ebx, fi + int 0x40 + + mov eax, -1 + int 0x40 + +fi: + dd 7, 0, 0, 0, 0 + db 0 + dd target_path + +target_path db TARGET, 0 + +i_end: + +params rb 1024 +new_params rb 1024 + +m_end: