[SORCIM.CNV] [[Turn a Sorcim ACT86 file into a Digital Research ASM86 file.]] [read line, write line] (()()(0 1 2)( ((PWS)(or),); (<-->(^Z),); (<>,(%W,<9>.A86,(%|))(R)): (<0>;<1>!<2>,<0>;<1>[exclm]<2>): (;<0>,(%W,<9>.A86,;<0>(%|))(R)): (<0>;<1>,(%W,<9>.A86,(b,<0>);<1>(%|))(R)): (<0>,(%W,<9>.A86,(b,<0>)(%|))(R)): )) a [remove trailing tabs, spaces] (()()(0 1)( (<0> <>,(b,<0>) ); (<0>(^I)<>,(b,<0>)(^I)); ((and,<-->(^I)(or,rep,repz,repnz)<--><>,<0>),(c,<0>(R))); (<0>,(c,<0>)); )) b [transform] (()()(0 1 2 3)( (<0>ld(^I)<1><,><2>,<0>mov(^I)<1>,<2>): (<0>stob(^I)<1><,><2>,<0>mov(^I)byte ptr <2>,<1>): (<0>sto(^I)<1><,><2>,<0>mov(^I)<2>,<1>): (<0>(and,<:s:>,<1>)(^I)[<2>]<3>,<0><1>(^I)word ptr [<2>]<3>): (<0>(and,<:t:>,<1>b<>)(^I)[<2>]<3>,<0><1>(^I)byte ptr [<2>]<3>): (<0>(^I)[<1>]<>,<0>(^I)word ptr [<1>]): (<0>[<1>+(and,<:p:>,<2>)]<3>,<0><2>[<1>]<3>): (<0>[<1>-(and,<:p:>,<2>)]<3>,<0>-<2>[<1>]<3>): (<0>#(and,(or,-,)<:p:>,<1>)<2>,<0><1><2>); (<0>#(and,<[1]>SIZ,<1>)<2>,<0><1><2>); (<0>#(and,<:r:>,<1>)<2>,<0><(>offset <1><)><2>); (<0>#<1>,<0><1>); (<0>rep(^I)<1>,<0>repnz(^I)<1>): (<0>cmpsb<1>,<0>cmps(^I)byte [di],[si]<1>); (<0>lodsb<1>,<0>lods(^I)byte [si]<1>); (<0>movsb<1>,<0>movs(^I)byte [di],[si]<1>); (<0>scasb<1>,<0>scas(^I)byte [di]<1>); (<0>stosb<1>,<0>stos(^I)byte [di]<1>); (<0>stos<1>,<0>stos(^I)word [di]<1>); (<0>jc(^I)<1>,<0>jb(^I)<1>); (<0>jnc<1>,<0>jnb<1>); (<0>ror(^I)<1>,<0>ror(^I)<1>,1); (<0>rol(^I)<1>,<0>rol(^I)<1>,1); (<0>:(^I)(or,DB,db)(^I)<1>,<0>(^I)db(^I)<1>); (<0>:(^I)(or,DW,dw)(^I)<1>,<0>(^I)dw(^I)<1>); (<0>:(^I)(or,DS,ds)(^I)<1>,<0>(^I)rw(^I)<1>); ((and,<[1]>SIZ(^I)equ(^I)<--><>,<0>),<0>); (<0>(^I)equ(^I)0<1>,<0>(^I)equ(^I).0<1>); (<-->LINK,(^I)END); ((^I)(or,END,end),(^I)end); )) c [main program] (( ((IVL,0,9,)(ITR,(IVL,0,9,))) p ((or,(IVL,A,Z,),(IVL,a,z,),@,_)) q (<:q:>(ITR,(or,(IVL,0,9,),<:q:>))) r ((or,add,adc,sub,sbb,cmp)) s ((or,cmpb,notb)) t )( ((%R,<9>.ASM)) R )(9)( ((PWS)(or),); (<9>(or, ,.,<>),(%Or,<9>.ASM)(%Ow,<9>.A86)(a,(R))(%E)); )) [end]