home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol167 / sorcim.cnv < prev    next >
Encoding:
Text File  |  1984-04-29  |  2.0 KB  |  76 lines

  1.  
  2. [SORCIM.CNV]
  3.  
  4. [[Turn a Sorcim ACT86 file into a Digital Research ASM86 file.]]
  5.  
  6.  
  7.  
  8. [read line, write line]
  9. (()()(0 1 2)(
  10.     ((PWS)(or),);
  11.     (<-->(^Z),);
  12.     (<>,(%W,<9>.A86,(%|))(R)):
  13.     (<0>;<1>!<2>,<0>;<1>[exclm]<2>):
  14.     (;<0>,(%W,<9>.A86,;<0>(%|))(R)):
  15.     (<0>;<1>,(%W,<9>.A86,(b,<0>);<1>(%|))(R)):
  16.     (<0>,(%W,<9>.A86,(b,<0>)(%|))(R)):
  17.   )) a
  18.  
  19. [remove trailing tabs, spaces]
  20. (()()(0 1)(
  21.     (<0> <>,(b,<0>) );
  22.     (<0>(^I)<>,(b,<0>)(^I));
  23.     ((and,<-->(^I)(or,rep,repz,repnz)<--><>,<0>),(c,<0>(R)));
  24.     (<0>,(c,<0>));
  25.   )) b
  26.  
  27. [transform]
  28. (()()(0 1 2 3)(
  29.     (<0>ld(^I)<1><,><2>,<0>mov(^I)<1>,<2>):
  30.     (<0>stob(^I)<1><,><2>,<0>mov(^I)byte ptr <2>,<1>):
  31.     (<0>sto(^I)<1><,><2>,<0>mov(^I)<2>,<1>):
  32.     (<0>(and,<:s:>,<1>)(^I)[<2>]<3>,<0><1>(^I)word ptr [<2>]<3>):
  33.     (<0>(and,<:t:>,<1>b<>)(^I)[<2>]<3>,<0><1>(^I)byte ptr [<2>]<3>):
  34.     (<0>(^I)[<1>]<>,<0>(^I)word ptr [<1>]):
  35.     (<0>[<1>+(and,<:p:>,<2>)]<3>,<0><2>[<1>]<3>):
  36.     (<0>[<1>-(and,<:p:>,<2>)]<3>,<0>-<2>[<1>]<3>):
  37.     (<0>#(and,(or,-,)<:p:>,<1>)<2>,<0><1><2>);
  38.     (<0>#(and,<[1]>SIZ,<1>)<2>,<0><1><2>);
  39.     (<0>#(and,<:r:>,<1>)<2>,<0><(>offset <1><)><2>);
  40.     (<0>#<1>,<0><1>);
  41.     (<0>rep(^I)<1>,<0>repnz(^I)<1>):
  42.     (<0>cmpsb<1>,<0>cmps(^I)byte [di],[si]<1>);
  43.     (<0>lodsb<1>,<0>lods(^I)byte [si]<1>);
  44.     (<0>movsb<1>,<0>movs(^I)byte [di],[si]<1>);
  45.     (<0>scasb<1>,<0>scas(^I)byte [di]<1>);
  46.     (<0>stosb<1>,<0>stos(^I)byte [di]<1>);
  47.     (<0>stos<1>,<0>stos(^I)word [di]<1>);
  48.     (<0>jc(^I)<1>,<0>jb(^I)<1>);
  49.     (<0>jnc<1>,<0>jnb<1>);
  50.     (<0>ror(^I)<1>,<0>ror(^I)<1>,1);
  51.     (<0>rol(^I)<1>,<0>rol(^I)<1>,1);
  52.     (<0>:(^I)(or,DB,db)(^I)<1>,<0>(^I)db(^I)<1>);
  53.     (<0>:(^I)(or,DW,dw)(^I)<1>,<0>(^I)dw(^I)<1>);
  54.     (<0>:(^I)(or,DS,ds)(^I)<1>,<0>(^I)rw(^I)<1>);
  55.     ((and,<[1]>SIZ(^I)equ(^I)<--><>,<0>),<0>);
  56.     (<0>(^I)equ(^I)0<1>,<0>(^I)equ(^I).0<1>);
  57.     (<-->LINK,(^I)END);
  58.     ((^I)(or,END,end),(^I)end);
  59.   )) c
  60.  
  61. [main program]
  62. ((
  63.     ((IVL,0,9,)(ITR,(IVL,0,9,))) p
  64.     ((or,(IVL,A,Z,),(IVL,a,z,),@,_)) q
  65.     (<:q:>(ITR,(or,(IVL,0,9,),<:q:>))) r
  66.     ((or,add,adc,sub,sbb,cmp)) s
  67.     ((or,cmpb,notb)) t
  68.   )(
  69.     ((%R,<9>.ASM)) R
  70.   )(9)(
  71.     ((PWS)(or),);
  72.     (<9>(or, ,.,<>),(%Or,<9>.ASM)(%Ow,<9>.A86)(a,(R))(%E));
  73.   ))
  74.  
  75. [end]
  76.