Skip to content

Instantly share code, notes, and snippets.

@abenkovskii
Created May 6, 2017 10:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abenkovskii/53ae64af9a0c2f632e0e2df9469c3e05 to your computer and use it in GitHub Desktop.
Save abenkovskii/53ae64af9a0c2f632e0e2df9469c3e05 to your computer and use it in GitHub Desktop.
include io.asm
stack segment stack
dw 128 dup (?)
stack ends
tolower macro s, callback
tolower_setvar macro val
tolower_append macro c
tolower_setvar <val&&&c>
endm
tolower_call macro
callback <val>
endm
endm
tolower_setvar
irpc c, <s>
if 'A' le '&c' and '&c' le 'Z'
irpc l, abcdefghijklmnopqrstuvwxyz
if '&c' - 'A' eq '&l' - 'a'
tolower_append <l>
exitm
endif
endm
else
tolower_append <c>
endif
endm
tolower_call
endm
loosecompare macro s1, s2, onidn, ondif
loosecompare_1 macro ss1, ss2
ifidn <ss1>, <ss2>
onidn
else
ondif
endif
endm
loosecompare_0 macro s
tolower <s2>, <loosecompare_1 <s>>
endm
tolower <s1>, loosecompare_0
endm
code segment
assume ss:stack, cs:code
start:
loosecompare Ax ax <outch 'y'> <outch 'n'>
loosecompare Ax asdsfasfd <outch 'y'> <outch 'n'>
loosecompare ABC abc <outch 'y'> <outch 'n'>
loosecompare ABc aBC <outch 'y'> <outch 'n'>
loosecompare AbCd ABC <outch 'y'> <outch 'n'>
finish
code ends
end start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment