1
0
mirror of https://github.com/PDP-10/its.git synced 2026-04-15 16:20:21 +00:00
Files
PDP-10.its/src/c/h6000.gt
2018-10-25 18:31:55 +02:00

282 lines
5.2 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
typenames (char,int,float,double);
memnames (reg,auto,ext,stat,param,label,intlit,floatlit,string,
ix0,ix1,ix2,ix3,ix4,ia,iq);
regnames (x0,x1,x2,x3,x4,a,q,f);
size 1(char),4(int,float),8(double);
align 1(char),4(int,float),8(double);
class x(x0,x1,x2,x3,x4), r(a,q);
conflict (a,f),(q,f);
saveareasize 16;
pointer p0(1), p1(4);
offsetrange p1 (,);
returnreg q(char,int,p0,p1), f(double);
type int(r), char(r), float(f), double(f), p0(r), p1(x);
.sw: a,,1[x4];
+p0: -p0: +i:-i:&:^: .OR: -p0p0:<<: >>: r,M,1;
+p1: M,M,x; x,r,1; x,intlit,1;
-p1: x,r,1; x,intlit,1;
=+i: =&: =^: =OR: M,r,1;
*i: /i: q,M,q[a];
+d: -d: *d: /d: f,M,f;
%: q,M,a[q];
=<<: =>>: M,a,q; M,q,a;
&u0: auto|ext|stat|string|ia|iq,,r;
&u1: M,,x;
.BNOT: .ic: .ci: r,,1;
-ui: M,,r;
.cf: .cd: .if: .id: a,,f;
.fc: .dc: .fi: .di: f,,q;
.fd: M,,f;
.df: -ud: f,,1;
.ip0: .p0i: r,,1; M,,r;
.ip1: .p0p1: r,,x; M,,x;
.p1i: .p1p0: x,,r; M,,r;
++bi: M,,1;
++ai: M,,a[q];
M,,q[a];
++ap1: --ap1: M,M,x;
==i: !=i: <i: >i: <=i: >=i:
==p0: !=p0: <p0: >p0: <=p0: >=p0: r,M,M;
==d: !=d: <d: >d: <=d: >=d: f,M,M;
==p1: !=p1: <p1: >p1: <=p1: >=p1: x,M,M;
macros
+i: " AD#R #S"
-i: " SB#R #S"
*i: " MPY #S"
/i: %: " DIV #S"
+d: " DFAD #S"
-d: " DFSB #S"
*d: " DFMP #S"
/d: " DFDV #S"
=+i: " AS#S #R"
&: " AN#F #S"
=&: " ANS#S #F"
^: " ER#F #S"
=^: " ERS#S #F"
.OR: " OR#F #S"
=OR: " ORS#S #F"
>>:
(,intlit,): " #FRS %o(#'S)"
(,~intlit,): " LXL5 #S\n #FRS 0,5"
<<:
(,intlit,): " #FLS %o(#'S)"
(,~intlit,): " LXL5 #S\n #FLS 0,5"
=>>:
" LD#R #F
#RRS 0,#SL
ST#R #F"
=<<:
" LD#R #F
#RLS 0,#SL
ST#R #F"
+p0:
(,~intlit,): " #FRS 16\n AD#F #S\n #FLS 16"
(,intlit,): " ADL#R %co(#'S)"
-p0:
(,~intlit,): " #FRS 16\n SB#F #S\n #FLS 16"
(,intlit,): " SBL#R %co(#'S)"
+p1:
(M,M,): " LXL#R #S\n ADLX#R #F"
(x,r,): " #SLS 18\n ST#S .TEMP\n ADX#F .TEMP"
(x,intlit,): " EAX#R %o(#'S),#R"
-p1:
(,r,): " #SLS 18\n ST#S .TEMP\n SBX#F .TEMP"
(,intlit,): " EAX#R -%o(#'S),#R"
-ui: " LC#R #F"
-ud: " FNEG"
++bi: " AOS #F"
++ai: " LD#R #F\n AOS #F"
++ap1:
" LDX#R #F
EAX5 %o(#'S),#1
STX5 #F"
--ap1:
" LDX#R #F
EAX5 -%o(#'S),#1
STX5 #F"
.BNOT: " ER#F =-1"
&u0:
(ia|iq,,r):
"%if(%o(#'F), AD#F %co(#'F)\n,)\"
(ia,,q): " LLR 36"
(iq,,a): " LLR 36"
(auto|stat,,r):
" EA#R %n(#3,0)
%if(%o(#'F), AD#R %co(#'F)\n,)\"
(ext|string,,r):
" EA#R #F"
&u1: " EAX#R #F"
==i: " CMP#F #S\n TZE #R"
!=i: " CMP#F #S\n TNZ #R"
<i: " CMP#F #S\n TMI #R"
>i: " CMP#F #S\n TZE *+2\n TPL #R"
<=i: " CMP#F #S\n TZE #R\n TMI #R"
>=i: " CMP#F #S\n TPL #R"
==d: " DFCMP #S\n TZE #R"
!=d: " DFCMP #S\n TNZ #R"
<d: " DFCMP #S\n TMI #R"
>d: " DFCMP #S\n TZE *+2\n TPL #R"
<=d: " DFCMP #S\n TZE #R\n TMI #R"
>=d: " DFCMP #S\n TPL #R"
==p0: " CMP#F #S\n TZE #R"
!=p0: " CMP#F #S\n TNZ #R"
<p0: " CMP#F #S\n TZE *+2\n TNC #R"
>p0: " CMP#F #S\n TZE *+2\n TRC #R"
<=p0: " CMP#F #S\n TZE #R\n TNC #R"
>=p0: " CMP#F #S\n TRC #R"
==p1: " CMPX#F #S\n TZE #R"
!=p1: " CMPX#F #S\n TNZ #R"
<p1: " CMPX#F #S\n TZE *+2\n TNC #R"
>p1: " CMPX#F #S\n TZE *+2\n TRC #R"
<=p1: " CMPX#F #S\n TZE #R\n TNC #R"
>=p1: " CMPX#F #S\n TRC #R"
-p0p0: " SBL#F #S\n #FRL 16"
.cc:
(auto,,): " EA#R 0,7\n"
(stat,,): " EA#R .STAT\n"
(ia,,q): " STA .TEMP\n LDQ .TEMP\n"
(iq,,a): " STQ .TEMP\n LDA .TEMP\n"
(auto|stat|indirect,,):
"%if(%o(#'F), AD#R %co(#'F)\n,)\
TSX5 .CTO#R"
(ext|string,,): " LD#R #F\n #RRL 27"
(r,,r): " EA#R 0,#FL\n #RRL 18"
(r,,auto|stat|indirect|string):
" EAX5 0,#FL\n"
(r,,auto): " EA#F 0,7\n"
(r,,stat): " EA#F .STAT\n"
(r,,auto|stat):
"%if(%o(#'R), AD#F %co(#'R)\n,)\
TSX4 .#FTOC"
(r,,string): " EA#F #R\n TSX4 .#FTOC"
(r,,ext): " #FLS 27\n ST#F #R\n #FRL 27"
(q,,ia):
"%if(%o(#'R), ADA %co(#'R)\n,)\
TSX4 .ATOC"
(a,,iq):
"%if(%o(#'R), ADQ %co(#'R)\n,)\
TSX4 .QTOC"
.ii:
(r,,M): " ST#F #R"
(M,,r): " LD#R #F"
(r,,r): " LLR 36"
.ff:
(f,,M): " FSTR #R"
(M,,f): " FLD #F"
.dd:
(f,,M): " DPSTR #R"
(M,,f): " DPLD #F"
.p0p0:
(r,,r): " LLR 36"
(r,,M): " ST#F #R"
(M,,r): " LD#R #F"
.p1p1:
(x,,x): " EAX#R 0,#F"
(x,,M): " STZ #R\n STX#F #R"
(M,,x): " LDX#R #F"
(x,,q): " EAQ 0,#F"
(q,,x): " EAX#R 0,QU"
(M,,q): " LDQ #F"
(q,,M): " STQ #R"
.ci: "\"
.ic: " AN#F =O377,DL"
.p0p1: .ip1:
(r,,x): " EAX#R 0,#FU"
(M,,x): " LDX#R #F"
.p1p0: .p1i:
(x,,r): " EA#R 0,#F"
(M,,r): " LD#R #F"
.ip0: .p0i:
(M,,r): " LD#R #F"
(r,,r): "\"
.fd: " FLD #F"
.df: " FRD"
.cf: .cd: .if: .id:
" LDQ 0,DL
LDE =35B25,DU
FNO"
.fi: .di: " UFA =71B25,DU"
.fc: .dc:
" UFA =71B25,DU
ANQ =O377,DL"
hd:
"$ GMAP
SYMREF .PROLG,.EPILG,.TEMP,.LSIWT,.TSWIT
SYMREF .CTOA,.CTOQ,.ATOC,.QTOC"
en: " SYMDEF #0"
ex: " SYMREF #0"
st: ".I#0 EQU *"
rt: " TRA .EPILG"
go: " TRA #R"
l: ".L#0 EQU *"
lc: " ZERO .L#0"
p:
"*
* FUNCTION %m(#1)
*
%i(#1) TSX0 .PROLG
ZERO .FS#0"
ca:
" TSX1 #F
ZERO #1/4,#0"
ep:
" TRA .EPILG
.FS#0 EQU #1/4"
ls:
" TSX5 .LSWIT
ZERO #R,#0"
ts:
" TSX5 .TSWIT
ZERO #0,#5
TRA #R"
o: "#1"
co: "=V20/#1,16/0"
ln: "%flush().N#0 EQU *"
eq: "%flush()#0 EQU *"
in: "%flush() DEC #0"
ad0: ad1: "%flush() ZERO #R"
sc: "%flush() ZERO .S#0"
end: "%flush() END"
f: "%flush() DEC %ff(#0)"
nf: "%flush() DEC -%ff(#0)"
d: "%flush() DEC %dd(#0)"
nd: "%flush() DEC -%dd(#0)"
al1: "%flush()\"
al2: "%flush() EVEN"
im: da: pu: pd: "\"