home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / as / as19.s < prev    next >
Encoding:
Text File  |  1979-01-10  |  5.9 KB  |  330 lines

  1. /
  2. /
  3.  
  4. / a9 -- pdp-11 assembler pass 1
  5.  
  6. eae = 0
  7.  
  8. / key to types
  9.  
  10. /    0    undefined
  11. /    1    absolute
  12. /    2    text
  13. /    3    data
  14. /    4    bss
  15. /    5    flop freg,dst (movfo, = stcfd)
  16. /    6    branch
  17. /    7    jsr
  18. /    10    rts
  19. /    11    sys
  20. /    12    movf (=ldf,stf)
  21. /    13    double operand (mov)
  22. /    14    flop fsrc,freg (addf)
  23. /    15    single operand (clr)
  24. /    16    .byte
  25. /    17    string (.ascii, "<")
  26. /    20    .even
  27. /    21    .if
  28. /    22    .endif
  29. /    23    .globl
  30. /    24    register
  31. /    25    .text
  32. /    26    .data
  33. /    27    .bss
  34. /    30    mul,div, etc
  35. /    31    sob
  36. /    32    .comm
  37. /    33    estimated text
  38. /    34    estimated data
  39. /    35    jbr
  40. /    36    jeq, jne, etc
  41.  
  42.     .data
  43. symtab:
  44. / special variables
  45.  
  46. <.\0\0\0\0\0\0\0>; dotrel:02; dot:000000
  47. <..\0\0\0\0\0\0>;    01; dotdot:000000
  48.  
  49. / register
  50.  
  51. <r0\0\0\0\0\0\0>;    24;000000
  52. <r1\0\0\0\0\0\0>;    24;000001
  53. <r2\0\0\0\0\0\0>;    24;000002
  54. <r3\0\0\0\0\0\0>;    24;000003
  55. <r4\0\0\0\0\0\0>;    24;000004
  56. <r5\0\0\0\0\0\0>;    24;000005
  57. <sp\0\0\0\0\0\0>;    24;000006
  58. <pc\0\0\0\0\0\0>;    24;000007
  59.  
  60. .if eae
  61.  
  62. /eae & switches
  63.  
  64. <csw\0\0\0\0\0>;    01;177570
  65. <div\0\0\0\0\0>;    01;177300
  66. <ac\0\0\0\0\0\0>;    01;177302
  67. <mq\0\0\0\0\0\0>;    01;177304
  68. <mul\0\0\0\0\0>;    01;177306
  69. <sc\0\0\0\0\0\0>;    01;177310
  70. <sr\0\0\0\0\0\0>;    01;177311
  71. <nor\0\0\0\0\0>;    01;177312
  72. <lsh\0\0\0\0\0>;    01;177314
  73. <ash\0\0\0\0\0>;    01;177316
  74.  
  75. .endif
  76.  
  77. / double operand
  78.  
  79. <mov\0\0\0\0\0>;    13;0010000
  80. <movb\0\0\0\0>;        13;0110000
  81. <cmp\0\0\0\0\0>;    13;0020000
  82. <cmpb\0\0\0\0>;        13;0120000
  83. <bit\0\0\0\0\0>;    13;0030000
  84. <bitb\0\0\0\0>;        13;0130000
  85. <bic\0\0\0\0\0>;    13;0040000
  86. <bicb\0\0\0\0>;        13;0140000
  87. <bis\0\0\0\0\0>;    13;0050000
  88. <bisb\0\0\0\0>;        13;0150000
  89. <add\0\0\0\0\0>;    13;0060000
  90. <sub\0\0\0\0\0>;    13;0160000
  91.  
  92. / branch
  93.  
  94. <br\0\0\0\0\0\0>;    06;0000400
  95. <bne\0\0\0\0\0>;    06;0001000
  96. <beq\0\0\0\0\0>;    06;0001400
  97. <bge\0\0\0\0\0>;    06;0002000
  98. <blt\0\0\0\0\0>;    06;0002400
  99. <bgt\0\0\0\0\0>;    06;0003000
  100. <ble\0\0\0\0\0>;    06;0003400
  101. <bpl\0\0\0\0\0>;    06;0100000
  102. <bmi\0\0\0\0\0>;    06;0100400
  103. <bhi\0\0\0\0\0>;    06;0101000
  104. <blos\0\0\0\0>;        06;0101400
  105. <bvc\0\0\0\0\0>;    06;0102000
  106. <bvs\0\0\0\0\0>;    06;0102400
  107. <bhis\0\0\0\0>;        06;0103000
  108. <bec\0\0\0\0\0>;    06;0103000
  109. <bcc\0\0\0\0\0>;    06;0103000
  110. <blo\0\0\0\0\0>;    06;0103400
  111. <bcs\0\0\0\0\0>;    06;0103400
  112. <bes\0\0\0\0\0>;    06;0103400
  113.  
  114. / jump/branch type
  115.  
  116. <jbr\0\0\0\0\0>;    35;0000400
  117. <jne\0\0\0\0\0>;    36;0001000
  118. <jeq\0\0\0\0\0>;    36;0001400
  119. <jge\0\0\0\0\0>;    36;0002000
  120. <jlt\0\0\0\0\0>;    36;0002400
  121. <jgt\0\0\0\0\0>;    36;0003000
  122. <jle\0\0\0\0\0>;    36;0003400
  123. <jpl\0\0\0\0\0>;    36;0100000
  124. <jmi\0\0\0\0\0>;    36;0100400
  125. <jhi\0\0\0\0\0>;    36;0101000
  126. <jlos\0\0\0\0>;        36;0101400
  127. <jvc\0\0\0\0\0>;    36;0102000
  128. <jvs\0\0\0\0\0>;    36;0102400
  129. <jhis\0\0\0\0>;        36;0103000
  130. <jec\0\0\0\0\0>;    36;0103000
  131. <jcc\0\0\0\0\0>;    36;0103000
  132. <jlo\0\0\0\0\0>;    36;0103400
  133. <jcs\0\0\0\0\0>;    36;0103400
  134. <jes\0\0\0\0\0>;    36;0103400
  135.  
  136. / single operand
  137.  
  138. <clr\0\0\0\0\0>;    15;0005000
  139. <clrb\0\0\0\0>;        15;0105000
  140. <com\0\0\0\0\0>;    15;0005100
  141. <comb\0\0\0\0>;        15;0105100
  142. <inc\0\0\0\0\0>;    15;0005200
  143. <incb\0\0\0\0>;        15;0105200
  144. <dec\0\0\0\0\0>;    15;0005300
  145. <decb\0\0\0\0>;        15;0105300
  146. <neg\0\0\0\0\0>;    15;0005400
  147. <negb\0\0\0\0>;        15;0105400
  148. <adc\0\0\0\0\0>;    15;0005500
  149. <adcb\0\0\0\0>;        15;0105500
  150. <sbc\0\0\0\0\0>;    15;0005600
  151. <sbcb\0\0\0\0>;        15;0105600
  152. <tst\0\0\0\0\0>;    15;0005700
  153. <tstb\0\0\0\0>;        15;0105700
  154. <ror\0\0\0\0\0>;    15;0006000
  155. <rorb\0\0\0\0>;        15;0106000
  156. <rol\0\0\0\0\0>;    15;0006100
  157. <rolb\0\0\0\0>;        15;0106100
  158. <asr\0\0\0\0\0>;    15;0006200
  159. <asrb\0\0\0\0>;        15;0106200
  160. <asl\0\0\0\0\0>;    15;0006300
  161. <aslb\0\0\0\0>;        15;0106300
  162. <jmp\0\0\0\0\0>;    15;0000100
  163. <swab\0\0\0\0>;        15;0000300
  164.  
  165. / jsr
  166.  
  167. <jsr\0\0\0\0\0>;    07;0004000
  168.  
  169. / rts
  170.  
  171. <rts\0\0\0\0\0>;    010;000200
  172.  
  173. / simple operand
  174.  
  175. <sys\0\0\0\0\0>;    011;104400
  176.  
  177. / flag-setting
  178.  
  179. <clc\0\0\0\0\0>;    01;0000241
  180. <clv\0\0\0\0\0>;    01;0000242
  181. <clz\0\0\0\0\0>;    01;0000244
  182. <cln\0\0\0\0\0>;    01;0000250
  183. <sec\0\0\0\0\0>;    01;0000261
  184. <sev\0\0\0\0\0>;    01;0000262
  185. <sez\0\0\0\0\0>;    01;0000264
  186. <sen\0\0\0\0\0>;    01;0000270
  187.  
  188. / floating point ops
  189.  
  190. <cfcc\0\0\0\0>;        01;170000
  191. <setf\0\0\0\0>;        01;170001
  192. <setd\0\0\0\0>;        01;170011
  193. <seti\0\0\0\0>;        01;170002
  194. <setl\0\0\0\0>;        01;170012
  195. <clrf\0\0\0\0>;        15;170400
  196. <negf\0\0\0\0>;        15;170700
  197. <absf\0\0\0\0>;        15;170600
  198. <tstf\0\0\0\0>;        15;170500
  199. <movf\0\0\0\0>;        12;172400
  200. <movif\0\0\0>;        14;177000
  201. <movfi\0\0\0>;        05;175400
  202. <movof\0\0\0>;        14;177400
  203. <movfo\0\0\0>;        05;176000
  204. <addf\0\0\0\0>;        14;172000
  205. <subf\0\0\0\0>;        14;173000
  206. <mulf\0\0\0\0>;        14;171000
  207. <divf\0\0\0\0>;        14;174400
  208. <cmpf\0\0\0\0>;        14;173400
  209. <modf\0\0\0\0>;        14;171400
  210. <movie\0\0\0>;        14;176400
  211. <movei\0\0\0>;        05;175000
  212. <ldfps\0\0\0>;        15;170100
  213. <stfps\0\0\0>;        15;170200
  214. <fr0\0\0\0\0\0>;    24;000000
  215. <fr1\0\0\0\0\0>;    24;000001
  216. <fr2\0\0\0\0\0>;    24;000002
  217. <fr3\0\0\0\0\0>;    24;000003
  218. <fr4\0\0\0\0\0>;    24;000004
  219. <fr5\0\0\0\0\0>;    24;000005
  220.  
  221. / 11/45 operations
  222.  
  223. <als\0\0\0\0\0>;    30;072000
  224. <alsc\0\0\0\0>;        30;073000
  225. <mpy\0\0\0\0\0>;    30;070000
  226. .if eae-1
  227. <mul\0\0\0\0\0>;    30;070000
  228. <div\0\0\0\0\0>;    30;071000
  229. <ash\0\0\0\0\0>;    30;072000
  230. <ashc\0\0\0\0>;        30;073000
  231. .endif
  232. <dvd\0\0\0\0\0>;    30;071000
  233. <xor\0\0\0\0\0>;    07;074000
  234. <sxt\0\0\0\0\0>;    15;006700
  235. <mark\0\0\0\0>;        11;006400
  236. <sob\0\0\0\0\0>;    31;077000
  237.  
  238. / specials
  239.  
  240. <.byte\0\0\0>;        16;000000
  241. <.even\0\0\0>;        20;000000
  242. <.if\0\0\0\0\0>;    21;000000
  243. <.endif\0\0>;        22;000000
  244. <.globl\0\0>;        23;000000
  245. <.text\0\0\0>;        25;000000
  246. <.data\0\0\0>;        26;000000
  247. <.bss\0\0\0\0>;        27;000000
  248. <.comm\0\0\0>;        32;000000
  249.  
  250. ebsymtab:
  251.  
  252.  
  253. start:
  254.     sys    signal; 2; 1
  255.     ror    r0
  256.     bcs    1f
  257.     sys    signal; 2; aexit
  258. 1:
  259.     mov    (sp)+,r0
  260.     tst    (sp)+
  261. 1:
  262.     mov    (sp),r1
  263.     cmpb    (r1),$'-
  264.     bne    1f
  265.     tst    (sp)+
  266.     dec    r0
  267.     cmpb    1(r1),$'u
  268.     bne    2f
  269.     movb    $'g,unglob
  270.     br    1b
  271. 2:
  272.     tstb    1(r1)
  273.     bne    2f
  274.     movb    $'g,unglob
  275.     br    1b
  276. 2:
  277.     cmpb    1(r1),$'o
  278.     bne    1f
  279.     mov    (sp),outfp
  280.     tst    (sp)+
  281.     dec    r0
  282.     br    1b
  283. 1:
  284.     movb    r0,nargs
  285.     tst    -(sp)
  286.     mov    sp,curarg
  287.     jsr    r5,fcreat; a.tmp1
  288.     movb    r0,pof
  289.     jsr    r5,fcreat; a.tmp2
  290.     movb    r0,fbfil
  291.     jsr    pc,setup
  292.     jmp    go
  293.  
  294. setup:
  295.     mov    $symtab,r1
  296. 1:
  297.     clr    r3
  298.     mov    $8,r2
  299.     mov    r1,-(sp)
  300. 2:
  301.     movb    (r1)+,r4
  302.     beq    2f
  303.     add    r4,r3
  304.     swab    r3
  305.     sob    r2,2b
  306. 2:
  307.     clr    r2
  308.     div    $hshsiz,r2
  309.     ashc    $1,r2
  310.     add    $hshtab,r3
  311. 4:
  312.     sub    r2,r3
  313.     cmp    r3,$hshtab
  314.     bhi    3f
  315.     add    $2*hshsiz,r3
  316. 3:
  317.     tst    -(r3)
  318.     bne    4b
  319.     mov    (sp)+,r1
  320.     mov    r1,(r3)
  321.     add    $12.,r1
  322.     cmp    r1,$ebsymtab
  323.     blo    1b
  324.     rts    pc
  325.  
  326. /overlay buffer
  327. inbuf    = setup
  328. .    =inbuf+512.
  329.  
  330.