
######natbcpl/vax/mlib.mar#
;.Mlib.for.the.VAX.under.VMS.--.Under.development#0A
#0A;.Implemented.by.Martin.Richards.(c).7.September
.2009#0A#09#0A;.C.Linkage.on.the.Vax:#0A;...On.entr
y.0(SP)...is.the.return.address#0A;............4(SP
)...is.the.first.argument#0A;............8(SP)...is
.the.second.argument#0A;............etc#0A;#0A;...?
??.must.be.preserved#0A;#0A;...result.in.R0#0A#0A#0A
#09#2EALIGN.LONG#0A#0A........#2Eentry.callstart,^<
r2,r3,r4,r5,r6,r7,r8>#0A#0A.MOVL.4(SP),R11....;.M/C
.address.of.G#0A.MOVL.8(SP),R10....;.M/C.address.of
.P#0A#0A;.Register.usage.while.executing.BCPL.compi
led.code#0A#0A;.R11...The.G.pointer#0A;.R10...The.P
.pointer#0A;.R9....#3D.zero#0A;.R8....A..First.argu
ment.at.a.function.call#0A;.R7....B#0A;.R6....C#0A;
.R2....entry.address.at.call#0A;.R1....P.increment.
in.byte.at.function.call#0A#0A...clrl.r9#0A#0A...;.
make.sure.global.3.(sys).is.defined#0A...MOVAL.sys,
.4*3(R11)#0A...;.make.sure.global.6.(changeco).is.d
efined#0A...MOVL.changeco,.4*6(R11)#0A...;.make.sur
e.global.5.(muldiv).is.defined#0A...MOVL.muldiv,.4*
5(R11)#0A#0A...;.BCPL.call.of.clihook(stackupb)#0A.
..MOVL.stackupb,R8#0A...CLRL.R1#0A...MOVL.4*4(R11),
R2....;.clihook#0A...JSB..(R2)#0A...MOVL.R8,R0....;
.return.the.result.of.start#0A...#0A;.and.then.retu
rn#0A...RET#0A#0A...#09#2EALIGN.LONG#0A#0A...;.res.
#3D.sys(n,.x,.y,.z)..the.BCPL.callable.sys.function
#0Asys:#0A.PUSHL.R10........;.save.old.P#0A.PUSHL.R
2.........;.save.entry.point#0A.ADDL..R1,R10.....;.
Increment.P#0A.MOVL..R8,(R10)...;.P!0..:#3D.arg1#0A
#0A.PUSHL.R11#0A.PUSHL.R10#0A.CALLS..#232,dosys...;
.calling.dosys(p,.g)#0A.MOVL.R0,R8........;.put.res
ult.in.Cintcode.A.register#0A#0A.TSTL.(SP)+........
;.return.sequence#0A.MOVL.(SP)+,R10#0A.RSB#0A#0Acha
ngeco:#0A.MOVL.R10,0(R1)...;.NP!0.:#3D.P#0A.MOVL.R1
,R10......;.P....:#3D.NP#0A.popl.R1#0A.MOVL.R1,4(R1
0)...;.P!1..:#3D.return.address#0A.MOVL.R2,8(R10)..
.;.P!2..:#3D.entry.address#0A.MOVL.R8,12(R10)..;.P!
3..:#3D.arg1#0A#0A.MOVL.(R10),R1#0A.MOVL.4*7(R11),R
2#0A.MOVL.R1,(,R2,4)........;.!currco.:#3D.!p#0A.MO
VL.4(R10),R2..........;.pc.:#3D.p!1#0A.MOVL.16(R10)
,R1#0A.MOVL.R1,4*7(R11)........;.currco.:#3D.cptr#0A
.MOVL.0(,R1,4),R10.......;.p.:#3D.!cptr#0A.JMP.(R2)
#0A#0Amuldiv:#0A.PUSHL.R10#0A.PUSHL.R2#0A.ADDL..R1,
R10#0A#0A.MOVL.4(R10),R7#0A.MOVL.8(R10),R6#0A.EMUL.
R8,R7,#230,R4...;.R8.*.R7.#3D>.R4,.R5#0A.EDIV.R6,R4
,R8,.4*10(R11)...;.(R4,R5)/R6.#3D>.R8,.rem->result2
#0A#0A.TSTL.(SP)+........;.return.sequence#0A.MOVL.
(SP)+,R10#0A.RSB#0A#0A

######cintcode/com/sial-vax.b#
/*#0AThis.is.an.sial.to.vax.code.generator#0Aimplem
ented.by.Martin.Richards.(c).7.August.2009#0A#0AVax
.register.usage#0A#0AR11...G,.m/c.address.of.global
.0#0AR10...P,.m/c.address.of.the.current.function.s
tack.frame#0AR9....#3D0.(to.simplify.indirection.an
d.logical.right.shift)#0AR8....Sial.A.register#0AR7
....Sial.B.register#0AR6....Sial.C.register#0AR2...
.Function.entry.point.at.time.of.call#0AR1....P.poi
nter.increment#0A#0A#0AP.stack.frame#0A#0A#2E#2E#2E
...<args.and.locals>.#2E#2E#2E#0A........^#0A......
..|#0A........P.(#3DR10)#0A#0ASP.stack.frame#0A#0A.
.....<old.P>.<entry.address>.<return.address>..#2E#2E
#2E#0A.......^#0A.......|#0A.......SP#0A#0ABCPL.Cal
ling.sequence#0A#0A....KPG.k.n....#3D>......First.a
rgument,.if.any,.in.A.(R8)#0A......................
.MOVL..4*n(R11),R2......;.E..:#3D.G!n#0A...........
............MOVL..#234*k,R1..........;.R1.:#3D.4*k#0A
.......................JSR...(R2).............;.J.t
o.function#0A#0A#0A....ENTRY.n.Lm.C1.#2E#2E#2E.Cn.#3D
>#0A..............................................;
.first.arg,.if.any,.in.A.(#3DR8)#0A................
..............................;.sp!0.#3D.<return.ad
dress>#0A.......................PUSHL.R10..........
....;.push.<old.P>#0A.......................PUSHL.R
2...............;.push.<entry.point>#0A............
...........ADDL.R1,R10............;.P.:#3D.P.+.R1.(
#3Dk)#0A.......................MOVL.R8,(R10).......
...;.Store.first.arg,.if.any#0A....................
..........................;.Other.args.in.P!1,.P!2,
.#2E#2E#2E#0A#0A....RTN.....#3D>.........TSTL.(SP)+
.............;.pop.<entry.point>#0A................
.......MOVL.(SP)+,R10.........;.P.:#3D.<old.P>#0A..
.....................RSB....................;.PC.:#3D
.<return.address>#0A#0A#0A*/#0A#0ASECTION."sial-vax
"#0A#0AGET."libhdr"#0AGET."sial#2Eh"#0A#0AGLOBAL.{#0A
sialin:ug#0Aasmout#0Astdin#0Astdout#0Amodstarted#0A
#0Ardf;.rdp;.rdg;.rdk;.rdw;.rdl;.rdc#0Ardcode#0A#0A
pval;.gval;.kval;.wval;.lval;.mval#0A#0Ascan#0Acvf;
.cvfp;.cvfg;.cvfk;.cvfw;.cvfl#0A#0Asectname;.modlet
ter;.charv;.labnumber#0A}#0A#0ALET.start().#3D.VALO
F#0A{.LET.argv.#3D.VEC.20#0A..LET.v....#3D.VEC.20#0A
..LET.cv...#3D.VEC.256/bytesperword#0A#0A..sectname
.:#3D.v#0A..sectname%0.:#3D.0#0A..modstarted.:#3D.F
ALSE#0A#0A..modletter.:#3D.'A'#0A..charv.:#3D.cv#0A
..labnumber.:#3D.0#0A#0A..asmout.:#3D.0#0A..stdout.
:#3D.output()#0A..IF.rdargs("FROM,TO/K",.argv,.20)#3D
0.DO#0A..{.writes("Bad.args.for.sial-vax*n")#0A....
RESULTIS.20#0A..}#0A..IF.argv!0#3D0.DO.argv!0.:#3D.
"prog#2Esial"#0A..IF.argv!1#3D0.DO.argv!1.:#3D."pro
g#2Emar"#0A..sialin.:#3D.findinput(argv!0)#0A..IF.s
ialin#3D0.DO#0A..{.writef("Trouble.with.file.%s*n",
.argv!0)#0A....RESULTIS.20#0A..}#0A..asmout.:#3D.fi
ndoutput(argv!1)#0A...#0A..UNLESS.asmout.DO#0A..{.w
ritef("Trouble.with.file.%s*n",.argv!1)#0A.....RESU
LTIS.20#0A..}#0A...#0A..writef("Converting.%s.to.%s
*n",.argv!0,.argv!1)#0A..selectinput(sialin)#0A..se
lectoutput(asmout)#0A#0A..writef(";.Code.generated.
by.sial-vax*n*n")#0A#0A..scan()#0A..endread()#0A..U
NLESS.asmout#3Dstdout.DO.endwrite()#0A..selectoutpu
t(stdout)#0A..writef("Conversion.complete*n")#0A..R
ESULTIS.0#0A}#0A#0AAND.nextlab().#3D.VALOF#0A{.labn
umber.:#3D.labnumber+1#0A..RESULTIS.labnumber#0A}#0A
#0A//.argument.may.be.of.form.Ln#0AAND.rdcode(let).
#3D.VALOF#0A{.LET.a,.ch,.neg.#3D.0,.?,.FALSE#0A#0A.
.ch.:#3D.rdch().REPEATWHILE.ch#3D'*s'.|.ch#3D'*n'#0A
#0A..IF.ch#3Dendstreamch.RESULTIS.-1#0A#0A..UNLESS.
ch#3Dlet.DO.error("Bad.item,.looking.for.%c.found.%
c*n",.let,.ch)#0A#0A..ch.:#3D.rdch()#0A#0A..IF.ch#3D
'-'.DO.{.neg.:#3D.TRUE;.ch.:#3D.rdch().}#0A#0A..WHI
LE.'0'<#3Dch<#3D'9'.DO.{.a.:#3D.10*a.+.ch.-.'0';.ch
.:#3D.rdch()..}#0A#0A..RESULTIS.neg.->.-a,.a#0A}#0A
#0AAND.rdf().#3D.rdcode('F')#0AAND.rdp().#3D.VALOF.
{.pval.:#3D.rdcode('P');.RESULTIS.pval.}#0AAND.rdg(
).#3D.VALOF.{.gval.:#3D.rdcode('G');.RESULTIS.gval.
}#0AAND.rdk().#3D.VALOF.{.kval.:#3D.rdcode('K');.RE
SULTIS.kval.}#0AAND.rdw().#3D.VALOF.{.wval.:#3D.rdc
ode('W');.RESULTIS.wval.}#0AAND.rdl().#3D.VALOF.{.l
val.:#3D.rdcode('L');.RESULTIS.lval.}#0AAND.rdm().#3D
.VALOF.{.mval.:#3D.rdcode('M');.RESULTIS.mval.}#0AA
ND.rdc().#3D.rdcode('C')#0A#0AAND.error(mess,.a,.b,
.c).BE#0A{.LET.out.#3D.output()#0A..UNLESS.out#3Dst
dout.DO#0A..{.selectoutput(stdout)#0A....writef(mes
s,.a,.b,.c)#0A....selectoutput(out)#0A..}#0A..write
f(mess,.a,.b,.c)#0A}#0A#0AAND.scan().BE#0A{.LET.op.
#3D.rdf()#0A#0A..IF.op#3D-1.RETURN.//.EOF.reached#0A
#0A..UNLESS.modstarted.DO#0A..{.WHILE.op#3Df_sectio
n.|.op#3Df_modstart.TEST.op#3Df_section#0A....THEN.
{.cvfs("SECTION").//.Name.of.section#0A...........F
OR.i.#3D.0.TO.charv%0.DO.sectname%i.:#3D.charv%i#0A
...........op.:#3D.rdf()#0A.........}#0A....ELSE.{.
cvf("MODSTART").//.Start.of.module#0A...........op.
:#3D.rdf()#0A.........}#0A#0A....//.If.there.is.no.
section.name.this.module.is.called.MAIN#0A....IF.se
ctname%0#3D0.DO#0A....{.LET.s.#3D."MAIN"#0A......FO
R.i.#3D.0.TO.s%0.DO.sectname%i.:#3D.s%i#0A....}#0A#0A
....writef("*n.#2EPSECT.%s,LONG",.sectname)#0A....w
ritef("*n.#2ETITLE.%s.generated.by.sial-vax",.sectn
ame)#0A....writef("*n%s::",.sectname)#0A....writef(
"*n.#2EEXTRN.#2EFINISH")#0A....writef("*n.#2ELONG.1
000$")#0A....modstarted.:#3D.TRUE#0A..}#0A#0A..SWIT
CHON.op.INTO#0A#0A..{.DEFAULT:.......error(";.Bad.o
p.%n*n",.op);.LOOP#0A#0A....CASE.-1:.......RETURN#0A
......#0A....CASE.f_lp:.....cvfp("LP").//.a.:#3D.P!
n#0A...................writef("*n.MOVL.%n(R10),R8",
.4*pval)#0A...................ENDCASE#0A....CASE.f_
lg:.....cvfg("LG").//.a.:#3D.G!n#0A................
...writef("*n.MOVL.%n(R11),R8",.4*gval)#0A.........
..........ENDCASE#0A....CASE.f_ll:.....cvfl("LL")./
/.a.:#3D.!Ln#0A...................writef("*n.MOVL.%
n$,R8",.lval)#0A...................ENDCASE#0A#0A...
.CASE.f_llp:....cvfp("LLP").//.a.:#3D.@.P!n#0A.....
..............writef("*n.MOVAL.%n(R10),R8",.4*pval)
#0A...................writef("*n.DIVL2.#234,R8")#0A
...................ENDCASE#0A....CASE.f_llg:....cvf
g("LLG").//.a.:#3D.@.G!n#0A...................write
f("*n.MOVAL.%n(R11),R8",.4*gval)#0A................
...writef("*n.DIVL2.#234,R8")#0A...................
ENDCASE#0A....CASE.f_lll:....cvfl("LLL").//.a.:#3D.
@.!Ln#0A...................writef("*n.MOVAL.%n$,R8"
,.lval)#0A...................writef("*n.DIVL2.#234,
R8")#0A...................ENDCASE#0A....CASE.f_lf:.
....cvfl("LF").//.a.:#3D.byte.address.of.Ln#0A.....
..............writef("*n.MOVAL.%n$,R8",.lval)#0A...
................ENDCASE#0A....CASE.f_lw:.....cvfm("
LW")#0A...................writef("*n.MOVL.%n$,R8",.
mval+10000)#0A...................ENDCASE#0A#0A....C
ASE.f_l:......cvfk("L").//.a.:#3D.n#0A.............
......IF.kval#3D0.DO.{.writef("*n.CLRL.R8");.ENDCAS
E.}#0A...................writef("*n.MOVL.#23%n,R8",
.kval)#0A...................ENDCASE#0A....CASE.f_lm
:.....cvfk("LM").//.a.:#3D.-n#0A...................
writef("*n.MOVL.#23-%n,R8",.kval)#0A...............
....ENDCASE#0A#0A....CASE.f_sp:.....cvfp("SP").//.P
!n.:#3D.a#0A...................writef("*n.MOVL.R8,%
n(R10)",.4*pval)#0A...................ENDCASE#0A...
.CASE.f_sg:.....cvfg("SG").//.G!n.:#3D.a#0A........
...........writef("*n.MOVL.R8,%n(R11)",.4*gval)#0A.
..................ENDCASE#0A....CASE.f_sl:.....cvfl
("SL").//.!Ln.:#3D.a#0A...................writef("*
n.MOVL.R8,%n$",.lval)#0A...................ENDCASE#0A
#0A....CASE.f_ap:.....cvfp("AP").//.a.:#3D.a.+.P!n#0A
...................writef("*n.ADDL2.%n(R10),R8",.4*
pval)#0A...................ENDCASE#0A....CASE.f_ag:
.....cvfg("AG").//.a.:#3D.a.+.G!n#0A...............
....writef("*n.ADDL2.%n(R11),R8",.4*gval)#0A.......
............ENDCASE#0A....CASE.f_a:......cvfk("A").
//.a.:#3D.a.+.n#0A...................IF.kval#3D0.EN
DCASE#0A...................IF.kval#3D1..DO.{.writef
("*n.INCL.R8");.ENDCASE.}#0A...................IF.k
val#3D-1.DO.{.writef("*n.DECL.R8");.ENDCASE.}#0A...
................writef("*n.ADDL2.#23%n,R8",.kval)#0A
...................ENDCASE#0A....CASE.f_s:......cvf
k("S")..//.a.:#3D.a.-.k#0A...................IF.kva
l#3D0.ENDCASE#0A...................IF.kval#3D1..DO.
{.writef("*n.DECL.R8");.ENDCASE.}#0A...............
....IF.kval#3D-1.DO.{.writef("*n.INCL.R8");.ENDCASE
.}#0A...................writef("*n.SUBL2.#23%n,R8",
.kval)#0A...................ENDCASE#0A#0A....CASE.f
_lkp:....cvfkp("LKP").//.a.:#3D.P!n!k#0A...........
........writef("*n.MOVL.%n(R10),R1",.4*pval)#0A....
...............writef("*n.MOVL.%n(R9)[R1],R8",.4*kv
al)#0A...................ENDCASE#0A....CASE.f_lkg:.
...cvfkg("LKG").//.a.:#3D.G!n!k#0A.................
..writef("*n.MOVL.%n(R11),R1",.4*gval)#0A..........
.........writef("*n.MOVL.%n(R9)[R1],R8",.4*kval)#0A
...................ENDCASE#0A....CASE.f_rv:.....cvf
("RV")..//.a.:#3D.!.a#0A...................writef("
*n.MOVL.(R9)[R8],R8")#0A...................ENDCASE#0A
....CASE.f_rvp:....cvfp("RVP").//.a.:#3D.P!n!a#0A..
.................writef("*n.ADDL2.%n(R10),R8",.4*pv
al)#0A...................writef("*n.MOVL.(R9)[R8],R
8")#0A...................ENDCASE#0A....CASE.f_rvk:.
...cvfk("RVK").//.a.:#3D.a!k#0A...................w
ritef("*n.MOVL.%n(R9)[R8],R8",.4*kval)#0A..........
.........ENDCASE#0A....CASE.f_st:.....cvf("ST").//.
!a.:#3D.b#0A...................writef("*n.MOVL.R7,(
R9)[R8]")#0A...................ENDCASE#0A....CASE.f
_stp:....cvfp("STP").//.P!n!a.:#3D.b#0A............
.......writef("*n.MOVL.%n(R10),R1",.4*pval)#0A.....
..............writef("*n.ADDL2.R8,R1")#0A..........
.........writef("*n.MOVL.R7,(R9)[R1]")#0A..........
.........ENDCASE#0A....CASE.f_stk:....cvfk("STK")./
/.a!k.:#3D.b#0A...................writef("*n.MOVL.R
7,%n(R9)[R8]",.4*kval)#0A...................ENDCASE
#0A....CASE.f_stkp:...cvfkp("STKP")..//.P!n!k.:#3D.
a#0A...................writef("*n.MOVL.%n(R10),R1",
.4*pval)#0A...................writef("*n.MOVL.R8,%n
(R9)[R1]",.4*kval)#0A...................ENDCASE#0A.
...CASE.f_skg:....cvfkg("SKG").//.G!n!k.:#3D.a#0A..
.................writef("*n.MOVL.%n(R11),R1",.4*gva
l)#0A...................writef("*n.MOVL.R8,%n(R9)[R
1]",.4*kval)#0A...................ENDCASE#0A....CAS
E.f_xst:....cvf("XST").//.!b.:#3D.a#0A.............
......writef("*n.MOVL.R8,(R9)[R7]")#0A.............
......ENDCASE#0A#0A....CASE.f_k:......cvfp("K").//.
Call..a(b,#2E#2E#2E).incrementing.P.by.n#0A........
...........writef("*n.MOVL.R8,R2")...//.R1.#3D.<ent
ry.point>#0A...................writef("*n.MOVL.R7,R
8")...//.R8.#3D.<first.arg>,.if.any#0A.............
......writef("*n.MOVL.#23%n,R1",.4*pval).//.R1.#3D.
increment#0A...................writef("*n.JSR.(R2)"
).....//.Subroutine.jump#0A...................ENDCA
SE#0A....CASE.f_kpg:....cvfpg("KPG").//.Call.Gg(a,#2E
#2E#2E).incrementing.P.by.k#0A...................wr
itef("*n.MOVL.%n(R11),R2",.4*gval)#0A..............
.....writef("*n.MOVL.#23%n,R1",.4*pval)#0A.........
..........writef("*n.JSR.(R2)")#0A.................
..ENDCASE#0A#0A....CASE.f_neg:....cvf("NEG").//.a.:
#3D.-.a#0A...................writef("*n.MNEGL.R8,R8
").#0A...................ENDCASE#0A....CASE.f_not:.
...cvf("NOT").//.a.:#3D.~.a#0A...................wr
itef("*n.MCOML.R8,R8").#0A...................ENDCAS
E#0A....CASE.f_abs:....cvf("ABS").//.a.:#3D.ABS.a#0A
.................{.LET.lab.#3D.nextlab()#0A........
...........writef("*n.TSTL..R8")#0A................
...writef("*n.BGEL..%n$",.lab)#0A..................
.writef("*n.MNEGL.R8,R8")#0A...................writ
ef("*n%n$:",.lab)#0A...................ENDCASE#0A..
...............}#0A#0A....CASE.f_xdiv:...cvf("XDIV"
).//.a.:#3D.a./.b#0A...................writef("*n.D
IVL2.R7,R8")#0A...................ENDCASE#0A....CAS
E.f_xrem:...cvf("XREM").//.a.:#3D.a.REM.b#0A.......
............writef("*n.MOVL..R8,R3")#0A............
.......writef("*n.ASHQ..#23-32,R2")#0A.............
......writef("*n.EDIV..R7,R2,R8,R4")#0A............
.......writef("*n.MOVL..R4,R8")#0A.................
..ENDCASE#0A....CASE.f_xsub:...cvf("XSUB").//.a.:#3D
.a.-.b#0A...................writef("*n.SUBL2.R7,R8"
)#0A...................ENDCASE#0A#0A....CASE.f_mul:
....cvf("MUL").//.a.:#3D.b.*.a;.c.:#3D.?#0A........
...........writef("*n.MULL2.R7,R8")#0A.............
......ENDCASE#0A....CASE.f_div:....cvf("DIV")..//.a
.:#3D.b./.a;.c.:#3D.?#0A...................writef("
*n.DIVL3..R8,R7,R8")#0A...................ENDCASE#0A
....CASE.f_rem:....cvf("REM").//.a.:#3D.b.REM.a;.c.
:#3D.?#0A...................writef("*n.MOVL..R7,R3"
)#0A...................writef("*n.ASHQ..#23-32,R2")
#0A...................writef("*n.EDIV..R8,R2,R7,R4"
)#0A...................writef("*n.MOVL..R4,R8")#0A.
..................ENDCASE#0A....CASE.f_add:....cvf(
"ADD").//.a.:#3D.b.+.a#0A...................writef(
"*n.ADDL2.R7,R8")#0A...................ENDCASE#0A..
..CASE.f_sub:....cvf("SUB").//.a.:#3D.b.-.a#0A.....
..............writef("*n.SUBL3.R8,R7,R8")#0A.......
............ENDCASE#0A#0A....CASE.f_eq:.....cvf("EQ
").//.a.:#3D.b.#3D.a#0A.................{.LET.lab.#3D
.nextlab()#0A...................writef("*n.CLRL.R4"
)#0A...................writef("*n.CMPL.R7,R8")#0A..
.................writef("*n.BNEQ.%n$",.lab)#0A.....
..............writef("*n.DECL.R4")#0A..............
.....writef("*n%n$:",.lab)#0A...................wri
tef("*n.MOVL.R4,R8")#0A...................ENDCASE#0A
.................}#0A....CASE.f_ne:.....cvf("NE")./
/.a.:#3D.b.~#3D.a#0A.................{.LET.lab.#3D.
nextlab()#0A...................writef("*n.CLRL.R4")
#0A...................writef("*n.CMPL.R7,R8")#0A...
................writef("*n.BEQL.%n$",.lab)#0A......
.............writef("*n.DECL.R4")#0A...............
....writef("*n%n$:",.lab)#0A...................writ
ef("*n.MOVL.R4,R8")#0A...................ENDCASE#0A
.................}#0A....CASE.f_ls:.....cvf("LS")./
/.a.:#3D.b.<.a#0A.................{.LET.lab.#3D.nex
tlab()#0A...................writef("*n.CLRL.R4")#0A
...................writef("*n.CMPL.R7,R8")#0A......
.............writef("*n.BGEQ.%n$",.lab)#0A.........
..........writef("*n.DECL.R4")#0A..................
.writef("*n%n$:",.lab)#0A...................writef(
"*n.MOVL.R4,R8")#0A...................ENDCASE#0A...
..............}#0A....CASE.f_gr:.....cvf("GR").//.a
.:#3D.b.>.a#0A.................{.LET.lab.#3D.nextla
b()#0A...................writef("*n.CLRL.R4")#0A...
................writef("*n.CMPL.R7,R8")#0A.........
..........writef("*n.BLEQ.%n$",.lab)#0A............
.......writef("*n.DECL.R4")#0A...................wr
itef("*n%n$:",.lab)#0A...................writef("*n
.MOVL.R4,R8")#0A...................ENDCASE#0A......
...........}#0A....CASE.f_le:.....cvf("LE").//.a.:#3D
.b.<#3D.a#0A.................{.LET.lab.#3D.nextlab(
)#0A...................writef("*n.CLRL.R4")#0A.....
..............writef("*n.CMPL.R7,R8")#0A...........
........writef("*n.BGTR.%n$",.lab)#0A..............
.....writef("*n.DECL.R4")#0A...................writ
ef("*n%n$:",.lab)#0A...................writef("*n.M
OVL.R4,R8")#0A...................ENDCASE#0A........
.........}#0A....CASE.f_ge:.....cvf("GE").//.a.:#3D
.b.>#3D.a#0A.................{.LET.lab.#3D.nextlab(
)#0A...................writef("*n.CLRL.R4")#0A.....
..............writef("*n.CMPL.R7,R8")#0A...........
........writef("*n.BLSS.%n$",.lab)#0A..............
.....writef("*n.DECL.R4")#0A...................writ
ef("*n%n$:",.lab)#0A...................writef("*n.M
OVL.R4,R8")#0A...................ENDCASE#0A........
.........}#0A....CASE.f_eq0:....cvf("EQ0").//.a.:#3D
.a.#3D.0#0A.................{.LET.lab.#3D.nextlab()
#0A...................writef("*n.CLRL.R4")#0A......
.............writef("*n.TSTL.R8")#0A...............
....writef("*n.BNEQ.%n$",.lab)#0A..................
.writef("*n.DECL.R4")#0A...................writef("
*n%n$:",.lab)#0A...................writef("*n.MOVL.
R4,R8")#0A...................ENDCASE#0A............
.....}#0A....CASE.f_ne0:....cvf("NE0").//.a.:#3D.a.
~#3D.0#0A.................{.LET.lab.#3D.nextlab()#0A
...................writef("*n.CLRL.R4")#0A.........
..........writef("*n.TSTL.R8")#0A..................
.writef("*n.BEQL.%n$",.lab)#0A...................wr
itef("*n.DECL.R4")#0A...................writef("*n%
n$:",.lab)#0A...................writef("*n.MOVL.R4,
R8")#0A...................ENDCASE#0A...............
..}#0A....CASE.f_ls0:....cvf("LS0").//.a.:#3D.a.<.0
#0A...................writef("*n.ASHL.#23-32,R8")#0A
...................ENDCASE#0A....CASE.f_gr0:....cvf
("GR0").//.a.:#3D.a.>.0#0A...................writef
("*n.SUBL3.#231,R8,R4")#0A...................writef
("*n.ORL2.R8,R4")#0A...................writef("*n.A
SHL.#23-32,R4,R8")#0A...................writef("*n.
MCOML.R8,R8")#0A...................ENDCASE#0A....CA
SE.f_le0:....cvf("LE0").//.a.:#3D.a.<#3D.0#0A......
.............writef("*n.SUBL3.#231,R8,R4")#0A......
.............writef("*n.ORL2.R8,R4")#0A............
.......writef("*n.ASHL.#23-32,R4,R8")#0A...........
........ENDCASE#0A....CASE.f_ge0:....cvf("GE0").//.
a.:#3D.a.>#3D.0#0A...................writef("*n.ASH
L.#23-32,R8")#0A...................writef("*n.MCOML
.R8,R8")#0A...................ENDCASE#0A#0A....CASE
.f_lsh:....cvf("LSH").//.a.:#3D.b.<<.a;.b.:#3D.?#0A
...................writef("*n.ASHL.R8,R7,R8")#0A...
................ENDCASE#0A....CASE.f_rsh:....cvf("R
SH").//.a.:#3D.b.>>.a;.b.:#3D.?#0A.................
..writef("*n.MNEGL.R8,R4")#0A...................wri
tef("*n.MOVL.R7,R8")#0A...................writef("*
n.ASHQ.R4,R8,R8")#0A...................ENDCASE#0A..
..CASE.f_and:....cvf("AND").//.a.:#3D.b.&.a.#0A....
...............writef("*n.ANDL2.R7,R8").#0A........
...........ENDCASE#0A....CASE.f_or:.....cvf("OR")./
/.a.:#3D.b.|.a.#0A...................writef("*n.ORL
2.R7,R8").#0A...................ENDCASE#0A....CASE.
f_xor:....cvf("XOR").//.a.:#3D.b.NEQV.a#0A.........
..........writef("*n.XORL2.R7,R8").#0A.............
......ENDCASE#0A....CASE.f_eqv:....cvf("EQV").//.a.
:#3D.b.EQV.a.#0A...................writef("*n.XORL2
.R7,R8").#0A...................writef("*n.MNOTL.R8,
R8").#0A...................ENDCASE#0A#0A....CASE.f_
gbyt:...cvf("GBYT").//.a.:#3D.b.%.a#0A.............
......writef("*n.MULL3.#234,R7,R4").#0A............
.......writef("*n.MOVZBL.(R4)[R8],R8").#0A.........
..........ENDCASE#0A....CASE.f_xgbyt:..cvf("XGBYT")
.//.a.:#3D.a.%.b.#0A...................writef("*n.M
ULL3.#234,R8,R4").#0A...................writef("*n.
MOVZBL.(R4)[R7],R8").#0A...................ENDCASE#0A
....CASE.f_pbyt:...cvf("PBYT").//.b.%.a.:#3D.c#0A..
.................writef("*n.MULL3.#234,R7,R4").#0A.
..................writef("*n.MOVB.R6,(R4)[R8]").#0A
...................ENDCASE#0A....CASE.f_xpbyt:..cvf
("XPBYT").//.a.%.b.:#3D.c.#0A...................wri
tef("*n.MULL3.#234,R8,R4").#0A...................wr
itef("*n.MOVB.R6,(R4)[R7]").#0A...................E
NDCASE#0A#0A//.swb.......Kn.Ld.K1.L1.#2E#2E#2E.Kn.L
n...Binary.chop.switch,.Ld.default#0A....CASE.f_swb
:....cvswb()#0A...................ENDCASE#0A#0A//.s
wl.......Kn.Ld.L1.#2E#2E#2E.Ln.........Label.vector
.switch,.Ld.default#0A....CASE.f_swl:....cvswl()#0A
...................ENDCASE#0A#0A....CASE.f_xch:....
cvf("XCH").//.swap.a.and.b#0A...................wri
tef("*n.MOVL.R8,R4")#0A...................writef("*
n.MOVL.R7,R8")#0A...................writef("*n.MOVL
.R4,R8")#0A...................ENDCASE#0A....CASE.f_
atb:....cvf("ATB").//.b.:#3D.a#0A..................
.writef("*n.MOVL.R8,R7")#0A...................ENDCA
SE#0A....CASE.f_atc:....cvf("ATC").//.c.:#3D.a#0A..
.................writef("*n.MOVL.R8,R6")#0A........
...........ENDCASE#0A....CASE.f_bta:....cvf("BTA").
//.a.:#3D.b#0A...................writef("*n.MOVL.R7
,R8")#0A...................ENDCASE#0A....CASE.f_btc
:....cvf("BTC").//.c.:#3D.b#0A...................wr
itef("*n.MOVL.R7,R6")#0A...................ENDCASE#0A
....CASE.f_atblp:..cvfp("ATBLP").//.b.:#3D.a;.a.:#3D
.P!n#0A...................writef("*n.MOVL.R8,R7")#0A
...................writef("*n.MOVL.%n(R10),R8",.4*p
val)#0A...................ENDCASE#0A....CASE.f_atbl
g:..cvfg("ATBLG").//.b.:#3D.a;.a.:#3D.G!n#0A.......
............writef("*n.MOVL.R8,R7")#0A.............
......writef("*n.MOVL.%n(R11),R8",.4*gval)#0A......
.............ENDCASE#0A....CASE.f_atbl:...cvfk("ATB
L").//.b.:#3D.a;.a.:#3D.k#0A...................writ
ef("*n.MOVL.R8,R7")#0A...................writef("*n
.MOVL.#23%n,R8",.kval)#0A...................ENDCASE
#0A#0A....CASE.f_j:......cvfl("J").//.jump.to.Ln#0A
...................writef("*n.JMP.%n$",.lval)#0A...
................ENDCASE#0A....CASE.f_rtn:....cvf("R
TN").//.procedure.return#0A...................write
f("*n.TSTL.(SP)+")......//.Pop.entry.point#0A......
.............writef("*n.MOVL.(SP)+,R10")..//.P.:#3D
.old.P#0A...................writef("*n.RSB").......
......//.return#0A...................ENDCASE#0A....
CASE.f_goto:...cvf("GOTO").//.jump.to.a#0A.........
..........writef("*n.JMP.(R8)")#0A.................
..ENDCASE#0A#0A....CASE.f_ikp:....cvfkp("IKP").//.a
.:#3D.P!n.+.k;.P!n.:#3D.a#0A...................writ
ef("*n.MOVL.%n(R10),R8",.4*pval)#0A................
...TEST.kval#3D1#0A...................THEN.writef("
*n.INCL.R8")#0A...................ELSE.TEST.kval#3D
-1#0A........................THEN.writef("*n.DECL.R
8")#0A........................ELSE.writef("*n.ADDL2
.#23%n,R8",.kval)#0A...................writef("*n.M
OVL.R8,%n(R10)",.4*pval)#0A...................ENDCA
SE#0A....CASE.f_ikg:....cvfkg("IKG").//.a.:#3D.G!n.
+.k;.G!n.:#3D.a#0A...................writef("*n.MOV
L.%n(R11),R8",.4*gval)#0A...................TEST.kv
al#3D1#0A...................THEN.writef("*n.INCL.R8
")#0A...................ELSE.TEST.kval#3D-1#0A.....
...................THEN.writef("*n.DECL.R8")#0A....
....................ELSE.writef("*n.ADDL2.#23%n,R8"
,.kval)#0A...................writef("*n.MOVL.R8,%n(
R11)",.4*gval)#0A...................ENDCASE#0A....C
ASE.f_ikl:....cvfkl("IKL").//.a.:#3D.!Ln.+.k;.!Ln.:
#3D.a#0A...................writef("*n.MOVL.%n$,R8",
.lval)#0A...................TEST.kval#3D1#0A.......
............THEN.writef("*n.INCL.R8")#0A...........
........ELSE.TEST.kval#3D-1#0A.....................
...THEN.writef("*n.DECL.R8")#0A....................
....ELSE.writef("*n.ADDL2.#23%n,R8",.kval)#0A......
.............writef("*n.MOVL.R8,%n$",.lval)#0A.....
..............ENDCASE#0A....CASE.f_ip:.....cvfp("IP
").//.a.:#3D.P!n.+.a;.P!n.:#3D.a#0A................
...writef("*n.ADDL2.%n(R10),R8",.4*pval)#0A........
...........writef("*n.MOVL.R8,%n(R10)",.4*pval)#0A.
..................ENDCASE#0A....CASE.f_ig:.....cvfg
("IG").//.a.:#3D.G!n.+.a;.G!n.:#3D.a#0A............
.......writef("*n.ADDL2.%n(R11),R8",.4*gval)#0A....
...............writef("*n.MOVL.R8,%n(R11)",.4*gval)
#0A...................ENDCASE#0A....CASE.f_il:.....
cvfl("IL").//.a.:#3D.!Ln.+.a;.!Ln.:#3D.a#0A........
...........writef("*n.ADDL2.%n$,R8",.lval)#0A......
.............writef("*n.MOVL.R8,%n$",.lval)#0A.....
..............ENDCASE#0A#0A....CASE.f_jeq:....cvfl(
"JEQ").//.Jump.to.Ln.if.b.#3D.a#0A.................
..writef("*n.CMPL.R8,R7")#0A...................writ
ef("*n.BEQL.%n$",.lval)#0A...................ENDCAS
E#0A....CASE.f_jne:....cvfl("JNE").//.Jump.to.Ln.if
.b.~#3D.a#0A...................writef("*n.CMPL.R8,R
7")#0A...................writef("*n.BNEQ.%n$",.lval
)#0A...................ENDCASE#0A....CASE.f_jls:...
.cvfl("JLS").//.Jump.to.Ln.if.b.<.a#0A.............
......writef("*n.CMPL.R8,R7")#0A...................
writef("*n.BLSS.%n$",.lval)#0A...................EN
DCASE#0A....CASE.f_jgr:....cvfl("JGR").//.Jump.to.L
n.if.b.>.a#0A...................writef("*n.CMPL.R8,
R7")#0A...................writef("*n.BGTR.%n$",.lva
l)#0A...................ENDCASE#0A....CASE.f_jle:..
..cvfl("JLE").//.Jump.to.Ln.if.b.<#3D.a#0A.........
..........writef("*n.CMPL.R8,R7")#0A...............
....writef("*n.BLEQ.%n$",.lval)#0A.................
..ENDCASE#0A....CASE.f_jge:....cvfl("JGE").//.Jump.
to.Ln.if.b.>#3D.a#0A...................writef("*n.C
MPL.R8,R7")#0A...................writef("*n.BGEQ.%n
$",.lval)#0A...................ENDCASE#0A#0A....CAS
E.f_jeq0:...cvfl("JEQ0").//.Jump.to.Ln.if.a.#3D.0#0A
...................writef("*n.TSTL.R8")#0A.........
..........writef("*n.BEQL.%n$",.lval)#0A...........
........ENDCASE#0A....CASE.f_jne0:...cvfl("JNE0")./
/.Jump.to.Ln.if.a.~#3D.0#0A...................write
f("*n.TSTL.R8")#0A...................writef("*n.BNE
Q.%n$",.lval)#0A...................ENDCASE#0A....CA
SE.f_jls0:...cvfl("JLS0").//.Jump.to.Ln.if.a.<.0#0A
...................writef("*n.TST.R8")#0A..........
.........writef("*n.BLSS.%n$",.lval)#0A............
.......ENDCASE#0A....CASE.f_jgr0:...cvfl("JGR0").//
.Jump.to.Ln.if.a.>.0#0A...................writef("*
n.TSTL.R8")#0A...................writef("*n.BGRT.%n
$",.lval)#0A...................ENDCASE#0A....CASE.f
_jle0:...cvfl("JLE0").//.Jump.to.Ln.if.a.<#3D.0#0A.
..................writef("*n.TSTL.R8")#0A..........
.........writef("*n.BLEQ.%n$",.lval)#0A............
.......ENDCASE#0A....CASE.f_jge0:...cvfl("JGE0").//
.Jump.to.Ln.if.a.>#3D.0#0A...................writef
("*n.TSTL.R8")#0A...................writef("*n.BGEQ
.%n$",.lval)#0A...................ENDCASE#0A....CAS
E.f_jge0m:..cvfm("JGE0M").//.Jump.to.Mn.if.a.>#3D.0
#0A...................writef("*n.TSTL.R8")#0A......
.............writef("*n.BGRT.%n$",.mval+10000)#0A..
.................ENDCASE#0A#0A....//.The.following.
five.opcodes.are.never.generated.by#0A....//.the.BC
PL.compiler#0A....CASE.f_brk:....cvf("BRK").//.Brea
kpoint.instruction#0A...................writef("*n.
unimplemented")#0A...................ENDCASE#0A....
CASE.f_nop:....cvf("NOP").//.No.operation#0A.......
............ENDCASE#0A....CASE.f_chgco:..cvf("CHGCO
").//.Change.coroutine#0A...................writef(
"*n.unimplemented")#0A...................ENDCASE#0A
....CASE.f_mdiv:...cvf("MDIV").//.a.:#3D.Muldiv(P!3
,.P!4,.P!5).#0A...................writef("*n.unimpl
emented")#0A...................ENDCASE#0A....CASE.f
_sys:....cvf("SYS").//.System.function#0A..........
.........writef("*n.unimplemented")#0A.............
......ENDCASE#0A#0A....CASE.f_modend:...cvf("MODEND
").//.End.of.module#0A.....................writef("
*n1000$:").#0A.....................writef("*n.#2EEN
D*n").#0A.....................modletter.:#3D.modlet
ter+1#0A.....................modstarted.:#3D.FALSE#0A
.....................ENDCASE#0A....CASE.f_global:..
.cvglobal().//.Global.initialisation.data#0A.......
..............ENDCASE#0A....CASE.f_string:...cvstri
ng().//.String.constant#0A.....................ENDC
ASE#0A....CASE.f_const:....cvconst().//.Large.integ
er.constant#0A.....................ENDCASE#0A#0A...
.CASE.f_static:...cvstatic().//.Static.variable.or.
table#0A.....................ENDCASE#0A....CASE.f_m
lab:.....cvfm("MLAB").//.Destination.of.jge0m#0A...
..................writef("*n%n$:",.mval+10000)#0A..
...................ENDCASE#0A....CASE.f_lab:......c
vfl("LAB").//.Program.label#0A.....................
writef("*n%n$:",.lval)#0A.....................ENDCA
SE#0A....CASE.f_lstr:.....cvfm("LSTR").//.a.:#3D.Mn
...(pointer.to.string)#0A.....................write
f("*n.MOVAL.%n$,R8",.mval+10000)#0A................
.....writef("*n.DIVL2.S^4,R8")#0A..................
...ENDCASE#0A....CASE.f_entry:....cventry().//.Star
t.of.a.function#0A.....................ENDCASE#0A..
}#0A#0A..newline()#0A}.REPEAT#0A#0AAND.cvf(s)...BE.
writef(";.%s",.s)#0AAND.cvfp(s)..BE.writef(";.%t7.P
%n",.s,.rdp())#0AAND.cvfkp(s).BE.writef(";.%t7.K%n.
P%n",.s,.rdk(),.rdp())#0AAND.cvfg(s)..BE.writef(";.
%t7.G%n",.s,.rdg())#0AAND.cvfkg(s).BE.writef(";.%t7
.K%n.G%n",.s,.rdk(),.rdg())#0AAND.cvfkl(s).BE.write
f(";.%t7.K%n.L%n",.s,.rdk(),.rdl())#0AAND.cvfpg(s).
BE.writef(";.%t7.P%n.G%n",.s,.rdp(),.rdg())#0AAND.c
vfk(s)..BE.writef(";.%t7.K%n",.s,.rdk())#0AAND.cvfw
(s)..BE.writef(";.%t7.W%n",.s,.rdw())#0AAND.cvfl(s)
..BE.writef(";.%t7.L%n",.s,.rdl())#0AAND.cvfm(s)..B
E.writef(";.%t7.M%n",.s,.rdm())#0A#0AAND.cvswl().BE
#0A{.LET.n.#3D.rdk()#0A..LET.l.#3D.rdl()#0A..LET.la
b.#3D.nextlab()#0A..writef(";.SWL.K%n.L%n",.n,.l)#0A
..writef("*n.TSTL.R8")#0A..writef("*n.BLSS.%n$",.l)
#0A..writef("*n.CMPL.#23%n,R8",.n)#0A..writef("*n.B
GRT.%n$",.l)#0A..writef("*n.JMP.@L%n(R9)[R8]",.lab)
#0A..writef("*n.#2EALIGN.LONG")#0A..writef("*n%n$:"
,.lab)#0A..FOR.i.#3D.1.TO.n.DO#0A..{.writef("*n;.%n
$",.rdl())#0A....writef("*n.#2ELONG.%n$",.lval)#0A.
.}#0A}#0A#0AAND.cvswb().BE#0A{.LET.n.#3D.rdk()#0A..
LET.l.#3D.rdl()#0A..writef(";.SWB.K%n.L%n",.n,.l)..
//.A.naive.implementation.of.swb#0A..FOR.i.#3D.1.TO
.n.DO.#0A..{.LET.k.#3D.rdk()#0A....LET.l.#3D.rdl()#0A
....writef("*n;.K%n.L%n",.k,.l)#0A....writef("*n.CM
PL.#23%n,R8",.k)#0A....writef("*n.BGEQ.%n$",.l)#0A.
.}#0A..writef("*n.JMP.%n$",.l)#0A}#0A#0AAND.cvgloba
l().BE#0A{.LET.n.#3D.rdk()#0A..writef(";.GLOBAL.K%n
*n",.n)#0A..IF.sectname%0#3D0.FOR.i.#3D.0.TO.4.DO.s
ectname%i.:#3D."prog"%i#0A..writef("*n#2Eglobl.%s*n
",.sectname)#0A..writef("%s::*n",.sectname)#0A..FOR
.i.#3D.1.TO.n.DO#0A..{.LET.g.#3D.rdg()#0A....LET.n.
#3D.rdl()#0A....writef(";.G%n.L%n*n",.g,.n)#0A....w
ritef(".MOVL.%n$,%n(R8)*n",.n,.4*g)#0A..}#0A..write
f(";.G%n",.rdg())#0A..writef("*n.RSB*n")#0A}#0A#0AA
ND.cvglobal1().BE#0A{.LET.n.#3D.rdk()#0A..writef("*
n;.GLOBAL.K%n",.n)#0A..IF.sectname%0#3D0.FOR.i.#3D.
0.TO.4.DO.sectname%i.:#3D."prog"%i#0A..writef("*n#2E
ALIGN.LONG")#0A..writef("*n#2ELONG.-1")#0A..FOR.i.#3D
.1.TO.n.DO#0A..{.LET.g.#3D.rdg()#0A....LET.n.#3D.rd
l()#0A....writef("*n;.G%n.L%n*n",.g,.n)#0A....write
f("*n.#2ELONG.%i4,.%n$",.g,.n)#0A..}#0A..writef("*n
;.G%n",.rdg())#0A..writef("*n.#2ELONG.%i4",.gval)#0A
}#0A#0AAND.rdchars().#3D.VALOF#0A{.LET.n.#3D.rdk()#0A
..charv%0.:#3D.n#0A..FOR.i.#3D.1.TO.n.DO.charv%i.:#3D
.rdc()#0A..RESULTIS.n#0A}#0A#0AAND.cvstring().BE#0A
{.LET.lab.#3D.rdm()#0A..LET.n.#3D.rdchars()#0A..wri
tef(";.STRING..M%n.K%n",.lab,.n)#0A..FOR.i.#3D.1.TO
.n.DO.writef(".C%n",.charv%i)#0A..writef("*n.#2EALI
GN.LONG")#0A..writef("*n%n$:",.lab+10000)#0A..FOR.i
.#3D.0.TO.n.DO.writef("*n.#2EBYTE.%n",.charv%i)#0A}
#0A#0AAND.cvconst().BE#0A{.LET.lab.#3D.rdm()#0A..LE
T.w.#3D.rdw()#0A..writef(";.CONST...M%n.W%n",.lab,.
w)#0A..writef("*n.#2EALIGN.LONG")#0A..writef("*n%n$
:",.lab+10000)#0A..writef("*n.#2ELONG.%n",.w)#0A}#0A
#0AAND.cvstatic().BE#0A{.LET.lab.#3D.rdl()#0A..LET.
n.#3D.rdk()#0A..writef(";.STATIC..L%n.K%n",.lab,.n)
#0A..writef("*n.#2EALIGN.LONG")#0A..writef("*n%n$:"
,.lab)#0A..FOR.i.#3D.1.TO.n.DO.{.writef("*n;.W%n",.
rdw())#0A......................writef("*n.#2ELONG.%
n",.wval)#0A....................}#0A}#0A#0AAND.cvfs
(s).BE#0A{.LET.n.#3D.rdchars()#0A..writef(";.%t7.K%
n",.s,.n)#0A..FOR.i.#3D.1.TO.n.DO.writef(".C%n",.ch
arv%i)#0A}#0A#0AAND.cventry().BE#0A{.LET.n.#3D.rdch
ars()#0A..LET.op.#3D.rdf()#0A..LET.lab.#3D.rdl()#0A
..writef("*n*n;.Entry.to:.%s*n",.charv)#0A..writef(
";.%t7.K%n",."ENTRY",.n)#0A..FOR.i.#3D.1.TO.n.DO.wr
itef(".C%n",.charv%i)#0A..newline()#0A..TEST.op#3Df
_lab.THEN.writef(";.LAB.....L%n*n",.lab)#0A........
........ELSE.writef(";.Bad.op.F%n.L%n*n",.op,.lab)#0A
..FOR.i.#3D.n+1.TO.11.DO.charv%i.:#3D.'.'#0A..IF.n>
11.DO.charv!0.:#3D.11#0A..writef("*n.#2ELONG.^X%x8"
,charv!0)#0A..writef("*n.#2ELONG.^X%x8",charv!1)#0A
..writef("*n.#2ELONG.^X%x8",charv!2)#0A#0A..writef(
"*n%n$:",.lab)#0A..writef("*n.PUSHL.R10")........//
.Save.old.Pointer#0A..writef("*n.PUSHL.R2")........
.//.Save.entry.point#0A..writef("*n.ADDL.R1,R10")..
....//.P.:#3D.P.+.increment#0A..writef("*n.MOVL.R8,
(R10)")....//.Save.first.argument#0A}#0A

######+#
