diff --git a/programs/develop/tinypad/trunk/tinypad.asm b/programs/develop/tinypad/trunk/tinypad.asm index 1893430fd..5e5fec0e9 100644 --- a/programs/develop/tinypad/trunk/tinypad.asm +++ b/programs/develop/tinypad/trunk/tinypad.asm @@ -107,6 +107,7 @@ __section @CODE ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: mov [s_search.size],ecx rep movsb + strip_quotes @PARAMS cmp byte[@PARAMS],0 jz no_params diff --git a/programs/macros.inc b/programs/macros.inc index 1266f87ca..fb0138017 100644 --- a/programs/macros.inc +++ b/programs/macros.inc @@ -613,3 +613,40 @@ EVM_STACK2 = 1000000000b EVM_MOUSE_FILTER = 0x80000000 EVM_CURSOR_FILTER = 0x40000000 + +macro strip_quotes buffer { + local .done + local .shift + local .find_end + push eax esi edi + mov edi, buffer + cmp byte [edi], '"' + jne .done + + ;; shift string left by 1 to remove first quote + mov esi, edi + inc esi +.shift: + mov al, [esi] + mov [edi], al + inc esi + inc edi + test al, al + jnz .shift + + ;; now find the last quote (if any) and nullify it + mov edi, buffer +.find_end: + mov al, [edi] + test al, al + jz .done + cmp al, '"' + jne @f + mov byte [edi], 0 + jmp .done +@@: + inc edi + jmp .find_end +.done: + pop edi esi eax +} diff --git a/programs/media/kiv/kiv.asm b/programs/media/kiv/kiv.asm index 06b4506a4..b9209d09e 100644 --- a/programs/media/kiv/kiv.asm +++ b/programs/media/kiv/kiv.asm @@ -47,6 +47,7 @@ START: invoke sort.START, 1 + strip_quotes __params mov ecx, 1 ; for 15.4: 1 = tile cmp word[__params], '\T' jz set_bgr