home *** CD-ROM | disk | FTP | other *** search
-
- [ASMBL.REC]
- [CNVRT assembler of intermediate code for "C"]
- [Harold V. McIntosh, 20 June 1983]
-
- {
- {
- [find/make FCB] (Jj'TTY:'EQZD;(':'UQD':'ED\64-%;0%;)
- ('.'U<(8a;@b;)Q|D>;Z'.DAT'IJj:)
- '.'FJDZ(3a;@b;)Q|JZDI
- 32(dpGm$r0=npGpGd0&$Sm@znpGQ&$rrS0;
- r12wQmwnEn;n:)D;) f
- [blank fill by count] (Zz(d' 'I:;)JZ;) b
- [zero fill] (cmpw0%(f:;)w;) 0
- [zero FCB & buffer] ($m33@0130@0nn&0||pLnS;) z
- [set default input file] (0,30$S'5C'H12wA' 'Ew4@0n0|0|pL31$S
- 'TTY:'31$rrS; B9aQD(3a' 'E
- 'DAT';Q;)|mw31@zn31$rrS31@r;) i
- [open for read] (@hr15K(255='NO FILE'I;L;)L;) r
- [open for write] (@hpGpG4+1&SrpG19k22k^^r128&S;) w
- [set DMA address] ($rpG^^r^^26k;) h
- [open] (m@f0=n@@;nLL;) O
- [read] (''(AL@f(0=pG@r;'TTY:'(='T');))
- ('T'='';L31pG$rr12w'TTY:'Ew;w)
- L@&'> 'TL(@#I;:);
- $r(pG^^rpGmr(0=(npGpGm128&S^^26kpGr
- 20K0=L;LL1npGpGm129+26%&SS;)npGmr;;)
- pG130&-n+&dm(u13%=;10%(=)pGI(26%=;
- L);ndm:)L^^rn&S;LpG^^r0&S:);) R
- [write] (Jj'='U<(A@f'TTY:'(=)(0=pG@w;;))>'='ED
- ZqtD; >'='EDZ<@g;) W
- [write to disk] ($r(pG^^rpGpGmrpGm- 130+n&maQD>Z<nSn^^
- 26kpGr21kpG^^r128&S:JZQD>nSnSL;);) g
- [close all files] (31pGm($r0=;pG4+r(0=L;LJj26%I<npGm@gpG
- ^^rpGr127(N^^26kpGr21k;L;)r16k;)ndpGm:)
- nL;;) c
- [PVR] (pG@'= '|TL$r(0='undef';yG;)TL;) _
- [cr, lf] (2573TL;)&
- [insert cr, lf] (2573I;)|
- [read console] (R13%='';08%(=)(T@#|;08%T' 'TLTLL@#;);)#
- [type comment] (@TD;)C
- [display at logon] ('cnvrt/icuap/1983'TL@&;)D
- [write workspace] (@&JZqt;)T
- (@@;) }%
- [integer arithmetic] {(+;)+ (-;)- (*;)* (/&L;)/
- (pGm/L1=nL1;0=n;n&:)|
- ((pGmJj(U);QD(O)I;npGmEDZQD(O)IjnpGmI;
- n@@#I)nLJZ;;) } #
- [save & init variables] (pGpGm$rm0&$S;) (
- [reinitialize variable] (pG$r0=L;LnL0&$S;) :
- [undefine variable] ($r0=;LnL;) )
- [compare/define variable] (pG$r0=ZQzml&$S;&LyGEz;) ]
- [body of variable search] (pG$r(0=)yG(E;&L)z&L@=L;pG$r(0=;LL)
- Z<((&pGm&n(F;''mZz<)jJQmpGl&$S
- zZ<@=>;J>);nLA:0&$SL>)>LL;) >
- [body of variable search] (pG$r(0=)yGEz@=L;pG$r(0=;LL)
- Z<((jJQmpGl&$S
- zZ<@=>;J>);nLA:0&$S>)>L;) <
- [insert variable] ($ryGI;) [
-
- [generic assignment]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J'+=@&'Ez@1(('@[2]in'(Fz;Zz<)Z<>;J>);A:)JZDz<'/pob/poa/*a#'I1@['/+[b]a/pu[b]'I'C'@%Z>'[2]in'I;);
- @;(J'+=@&'Ez@1(('@&[2]in'(Fz;Zz<)Z<>;J>);A:)JZDz<'poa/pob/lb[b]/xab/*a#'I1@['/+[b]a/pu[b]'I'C'@%Z>'[2]in'I;);
- @;(J'-=@&'Ez@1(('@[2]in'(Fz;Zz<)Z<>;J>);A:)JZDz<'/pob/poa/*a#'I1@['/-[b]a/pu[b]'I'C'@%Z>'[2]in'I;);
- @;(J'-=@&'Ez@1(('@&[2]in'(Fz;Zz<)Z<>;J>);A:)JZDz<'poa/pob/lb[b]/xab/*a#'I1@['/-[b]a/pu[b]'I'C'@%Z>'[2]in'I;);
- @;(J {[vbl] ('@&'Ez@2'in@'Ez@2'in'Ez;) = ('@&'0@>;)}[vbl] JZDz<'/pob/poa'Iz<0@[@bZ>'/pua'I'C'@%Z>'[2]in'I;);
- @;(J {[vbl] ('@&'Ez@2'in@&'Ez@2'in'Ez;) = ('@&'0@>;)}[vbl] JZDz<'/poa/pob/lb[b]/xab'Iz<0@[@bZ>'/pua'I'C'@%Z>'[2]in'I;);
- @;(JJZD'can'I39%I't store'I;);
- ;)} 0@) 1@) nn$S nn$S;)} a
-
- [code for assignment options]
- {((
- (J'='EzJZD'/sa[b]'I;);
- (J'+='EzJZD'/+a[b]/sa[b]'I;);
- (J'-='EzJZD'/-a[b]/sa[b]'I;);
- ;) ;)} b
-
- [generic binary]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J'-@'Ez@1(('@'(Fz;Zz<)Z<@1>;J>);A:)JZD'[2]in'Iz<'/poa/pob/div#'I1@['/pua'I'C'@%Z>;);
- @;(J {[vbl] ('@[2]in@[2]in'Ez;) = ('@[2]in@[2]in'0@>;)}[vbl] JZD'[2]in'Iz<'/poa/pob'Iz<0@[@dZ>'C'@%Z>'/pua'I;);
- @;(J {[vbl] ('@&[2]in@[2]in'Ez;) = ('@&[2]in@[2]in'0@>;)}[vbl] JZD'[2]in'Iz<'/pob/la[b]/pob'Iz<0@[@dZ>'/pua'I'C'@%Z>;);
- @;(J {[vbl] ('@[2]in@&[2]in'Ez;) = ('@[2]in@&[2]in'0@>;)}[vbl] JZD'[2]in'Iz<'/poa/pob/lb[b]'Iz<0@[@dZ>'/pua'I'C'@%Z>;);
- @;(J {[vbl] ('@&[2]in@&[2]in'Ez;) = ('@&[2]in@&[2]in'0@>;)}[vbl] JZD'[2]in'Iz<'/pob/la[b]/pob/lb[b]'Iz<0@[@dZ>'/pua'I'C'@%Z>;);
- ;)} 0@) 1@) nn$S nn$S;)} c
-
- [code for binary options]
- {((
- (J'+'EzJZD'/+ab'I;);
- (J'-'EzJZD'/-ab'I;);
- (J'*'EzJZD'/*ab'I;);
- ;) ;)} d
-
- [generic unary]
- {
- ( [and] Z<( [or] Z<('+'Ez; J'-'Ez; J'!'Ez;>)> [or] jJ><0@](A);>)> [and] ;) A
- ( [and] Z<( [or] Z<('pri'Ez; J'prd'Ez; J'poi'Ez; J'pod'Ez;>)> [or] jJ><0@](A);>)> [and] ;) B
- (0@( 1@( {(0@: 1@: ;); (
- @;(J'&@&'Ez0@]JZD0@[;);
- @;(J'&'EzJZDz<'excess &'I'C'@%Z>;);
- @;(J'*@&*'Ez0@]JZD'&'I0@[z<'/pob/pu[b]'I'C'@%Z>;);
- @;(J@A'@&[2]in'EzJZD'[2]in'Iz<'/pob/pu[b]'I'C'@%Z>z<z<0@[@fZ>'C'@%Z>;);
- @;(J@B'@&[2]in'EzJZD'[2]in'Iz<z<0@[@fZ>'C'@%Z>;);
- @;(J@A'@[2]in'EzJZD'[2]in'Iz<z<0@[@fZ>'C'@%Z>;);
- @;(J@B'@&*['Ez {[vbl] (']'Ez;) = (']'1@>;)}[vbl] JZD'[2]in'Iz<z<0@['@'I1@[@gZ>'C'@%Z>;);
- @;(J@B'@&['Ez(('*'(Fz;Zz<)Z< {[vbl] (']'Ez;) = (']'1@>;)}[vbl] >;J>);A:)JZD'[2]in'Iz<z<0@['@'I1@[@gZ>'C'@%Z>;);
- @;(J {[vbl] ('@[2]in'Ez;) = ('@[2]in'0@>;)}[vbl] JZD'[2]in'Iz<z<0@[@fZ>'C'@%Z>;);
- ;)} 0@) 1@) nn$S nn$S;)} e
-
- [code for unary options]
- {((
- (J'pri'EzJZD'/pob/i[b]/pu[b]'I;);
- (J'prd'EzJZD'/pob/d[b]/pu[b]'I;);
- (J'poi'EzJZD'/pob/pu[b]/i[b]'I;);
- (J'pod'EzJZD'/pob/pu[b]/d[b]'I;);
- (J'!'EzJZD'/poa/-a#1/sbb ax,ax/pua'I;);
- (J'-'EzJZD'/poa/neg ax/pua'I;);
- (J'~'EzJZD'/poa/not ax/pua'I;);
- ;) ;)} f
-
- [auto increment and decrement]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J'pri@'Ez0@]JZD'/pob/la[b]/+a#'I0@['/sa[b]/pua'I;);
- @;(J'prd@'Ez0@]JZD'/pob/la[b]/-a#'I0@['/sa[b]/pua'I;);
- @;(J'poi@'Ez0@]JZD'/pob/la[b]/pua/+a#'I0@['/sa[b]'I;);
- @;(J'pod@'Ez0@]JZD'/pob/la[b]/pua/-a#'I0@['/sa[b]'I;);
- ;)} 0@) 1@) nn$S nn$S;)} g
-
- [assemble fetches]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J' 'Ez {[vbl] (','Ez((' '(Fz;Zz<)Z< {[vbl] ( {[vbl] (','Ez;) = (1@<;)}[vbl] ;) = (0@<;)}[vbl] >;J>);A:);) = (0@<;)}[vbl] JZD'&'I1@[z<'/la#'I0@['/pua'I'C'@%Z>;);
- @;(J' 'Ez {[vbl] (','Ez;) = (0@<;)}[vbl] JZD'&[2]int'Iz<'/la#'I0@['/pua'I'C'@%Z>;);
- ;)} 0@) 1@) nn$S nn$S;)} h
-
- [assemble index]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J'&[2]in@&['Ez(('*'(Fz;Zz<)Z< {[vbl] (']'Ez1@];) = (']'0@>;)}[vbl] >;J>);A:)JZD'&['I0@[']'I1@[z<'/pob/la[b]/pob/*a#'I0@['/+ba/pub'I'C'@%Z>;);
- @;(J'[2]in@&['Ez(('*'(Fz;Zz<)Z< {[vbl] (']'Ez1@];) = (']'0@>;)}[vbl] >;J>);A:)JZD'&['I0@[']'I1@[z<'/poa/pob/*a#'I0@['/+ba/pub'I'C'@%Z>;);
- @;(JJZD'not indexable'I;);
- ;)} 0@) 1@) nn$S nn$S;)} i
-
- [assemble function]
- {(0@( 1@( {(0@: 1@: ;); (
- @;(J'&()'Ez {[vbl] ('@'Ez;) = ('@'0@>;)}[vbl] JZD0@[z<'/pob/call [bx]'I'C'@%Z>;);
- ;)} 0@) 1@) nn$S nn$S;)} j
-
- [option menu]
- {
- [pointer weights] ( [or] Z<('*'Ez [and] Z<('*'Ez jJ><1@](A);>)> [and] ; J'*['Ez {[vbl] (']'Ez;) = (']'1@>;)}[vbl] ; J'['Ez(('*'(Fz;Zz<)Z< {[vbl] (']'Ez;) = (']'1@>;)}[vbl] >;J>);A:);>)> [or] ;) 1
- [pointer compatible] ( [or] Z<('*'Ez((']'(Fz;Zz<)Z<>;J>);A:); J'[2]'Ez; J(('*2]'(Fz;Zz<)Z<>;J>);A:);>)> [or] ;) 2
- (0@( 1@( 2@( 3@( {(0@: 1@: 2@: 3@: ;); (
- @;(J';'EzJZD;);
- @;(J':'Ez0@]JZDz<0@['C'@%Z>z<'R'@%Z>0@[;):
- @;(J'/fetch'Ez {[vbl] (':prog:'Ez {[vbl] (':dict:'Ez2@];) = (':dict:'1@>;)}[vbl] ;) = (':prog:'0@>;)}[vbl] JZD'::prog:'Iz<0@[','I2@[@hZ>'@'I1@[':dict:'I2@[;):
- @;(J'/define'Ez {[vbl] (':prog:'Ez {[vbl] (':dict:'Ez2@];) = (':dict:'1@>;)}[vbl] ;) = (':prog:'0@>;)}[vbl] JZD'::prog:'I1@[':dict:'I0@[2@[;):
- @;(J'/assign 'Ez {[vbl] (':prog:'Ez {[vbl] ('@'Ez {[vbl] ('@'Ez3@];) = ('@'2@>;)}[vbl] ;) = ('@'1@>;)}[vbl] ;) = (':prog:'0@>;)}[vbl] JZD'::prog:'Iz<0@['@'I1@['@'I2@[@aZ>'@'I3@[;):
- @;(J'/binary 'Ez {[vbl] (':prog:'Ez {[vbl] ('@'Ez {[vbl] ('@'Ez3@];) = ('@'2@>;)}[vbl] ;) = ('@'1@>;)}[vbl] ;) = (':prog:'0@>;)}[vbl] JZD'::prog:'Iz<0@['@'I1@['@'I2@[@cZ>'@'I3@[;):
- @;(J'/unary 'Ez {[vbl] (':prog:'Ez {[vbl] ('@'Ez2@];) = ('@'1@>;)}[vbl] ;) = (':prog:'0@>;)}[vbl] JZD'::prog:'Iz<0@['@'I1@[@eZ>'@'I2@[;):
- @;(J'/index:prog:'Ez {[vbl] ('@'Ez {[vbl] ('@'Ez2@];) = ('@'1@>;)}[vbl] ;) = ('@'0@>;)}[vbl] JZD'::prog:'Iz<0@['@'I1@[@iZ>'@'I2@[;):
- @;(J'/function:prog:'Ez {[vbl] ('@'Ez {[vbl] ('@'Ez2@];) = ('@'1@>;)}[vbl] ;) = ('@'0@>;)}[vbl] JZD'::prog:'Iz<0@['@'I1@[@jZ>'@'I2@[;):
- @;(J'/char'Ez0@]JZD'/define a[1]ch, b[1]ch, c[3*1]ch, d*[1]ch,'I0@[;):
- @;(J'/int'Ez0@]JZD'/define i[2]in, j*[2]in, k[8*2]in, o**[8*3*2]in, l()[2]in,'I0@[;):
- @;(J'/float'Ez0@]JZD'/define p[4]fl, q***[4]fl, r()[4]fl,'I0@[;):
- @;(J'/clear'EzJZD'::prog:@'Iz<'|'@%Z>':dict:'I;):
- @;(J((':prog:'(Fz;Zz<)Z<0@]>;J>);A:)JZDz<'nope'I'C'@%Z>'::prog:'I0@[;):
- ;)} 0@) 1@) 2@) 3@) nn$S nn$S nn$S nn$S;)} w
-
- [main program]
- {((
- (JJZDz<z<'R'@%Z>':prog:@'Iz<'|'@%Z>':dict:'I@wZ>;);
- ;) ;)} ~
- ('i'@%'D'@%'R'@%@~JZqt'c'@%;) }
-
- [end]
-