home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / as / as19.s < prev    next >
Encoding:
Text File  |  1975-07-17  |  6.5 KB  |  348 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. / system calls
  78.  
  79. <exit\0\0\0\0>;        01;0000001
  80. <fork\0\0\0\0>;        01;0000002
  81. <read\0\0\0\0>;        01;0000003
  82. <write\0\0\0>;        01;0000004
  83. <open\0\0\0\0>;        01;0000005
  84. <close\0\0\0>;        01;0000006
  85. <wait\0\0\0\0>;        01;0000007
  86. <creat\0\0\0>;        01;0000010
  87. <link\0\0\0\0>;        01;0000011
  88. <unlink\0\0>;        01;0000012
  89. <exec\0\0\0\0>;        01;0000013
  90. <chdir\0\0\0>;        01;0000014
  91. <time\0\0\0\0>;        01;0000015
  92. <makdir\0\0>;        01;0000016
  93. <chmod\0\0\0>;        01;0000017
  94. <chown\0\0\0>;        01;0000020
  95. <break\0\0\0>;        01;0000021
  96. <stat\0\0\0\0>;        01;0000022
  97. <seek\0\0\0\0>;        01;0000023
  98. <tell\0\0\0\0>;        01;0000024
  99. <mount\0\0\0>;        01;0000025
  100. <umount\0\0>;        01;0000026
  101. <setuid\0\0>;        01;0000027
  102. <getuid\0\0>;        01;0000030
  103. <stime\0\0\0>;        01;0000031
  104. <fstat\0\0\0>;        01;0000034
  105. <mdate\0\0\0>;        01;0000036
  106. <stty\0\0\0\0>;        01;0000037
  107. <gtty\0\0\0\0>;        01;0000040
  108. <nice\0\0\0\0>;        01;0000042
  109. <signal\0\0>;        01;0000060
  110.  
  111. / double operand
  112.  
  113. <mov\0\0\0\0\0>;    13;0010000
  114. <movb\0\0\0\0>;        13;0110000
  115. <cmp\0\0\0\0\0>;    13;0020000
  116. <cmpb\0\0\0\0>;        13;0120000
  117. <bit\0\0\0\0\0>;    13;0030000
  118. <bitb\0\0\0\0>;        13;0130000
  119. <bic\0\0\0\0\0>;    13;0040000
  120. <bicb\0\0\0\0>;        13;0140000
  121. <bis\0\0\0\0\0>;    13;0050000
  122. <bisb\0\0\0\0>;        13;0150000
  123. <add\0\0\0\0\0>;    13;0060000
  124. <sub\0\0\0\0\0>;    13;0160000
  125.  
  126. / branch
  127.  
  128. <br\0\0\0\0\0\0>;    06;0000400
  129. <bne\0\0\0\0\0>;    06;0001000
  130. <beq\0\0\0\0\0>;    06;0001400
  131. <bge\0\0\0\0\0>;    06;0002000
  132. <blt\0\0\0\0\0>;    06;0002400
  133. <bgt\0\0\0\0\0>;    06;0003000
  134. <ble\0\0\0\0\0>;    06;0003400
  135. <bpl\0\0\0\0\0>;    06;0100000
  136. <bmi\0\0\0\0\0>;    06;0100400
  137. <bhi\0\0\0\0\0>;    06;0101000
  138. <blos\0\0\0\0>;        06;0101400
  139. <bvc\0\0\0\0\0>;    06;0102000
  140. <bvs\0\0\0\0\0>;    06;0102400
  141. <bhis\0\0\0\0>;        06;0103000
  142. <bec\0\0\0\0\0>;    06;0103000
  143. <bcc\0\0\0\0\0>;    06;0103000
  144. <blo\0\0\0\0\0>;    06;0103400
  145. <bcs\0\0\0\0\0>;    06;0103400
  146. <bes\0\0\0\0\0>;    06;0103400
  147.  
  148. / jump/branch type
  149.  
  150. <jbr\0\0\0\0\0>;    35;0000400
  151. <jne\0\0\0\0\0>;    36;0001000
  152. <jeq\0\0\0\0\0>;    36;0001400
  153. <jge\0\0\0\0\0>;    36;0002000
  154. <jlt\0\0\0\0\0>;    36;0002400
  155. <jgt\0\0\0\0\0>;    36;0003000
  156. <jle\0\0\0\0\0>;    36;0003400
  157. <jpl\0\0\0\0\0>;    36;0100000
  158. <jmi\0\0\0\0\0>;    36;0100400
  159. <jhi\0\0\0\0\0>;    36;0101000
  160. <jlos\0\0\0\0>;        36;0101400
  161. <jvc\0\0\0\0\0>;    36;0102000
  162. <jvs\0\0\0\0\0>;    36;0102400
  163. <jhis\0\0\0\0>;        36;0103000
  164. <jec\0\0\0\0\0>;    36;0103000
  165. <jcc\0\0\0\0\0>;    36;0103000
  166. <jlo\0\0\0\0\0>;    36;0103400
  167. <jcs\0\0\0\0\0>;    36;0103400
  168. <jes\0\0\0\0\0>;    36;0103400
  169.  
  170. / single operand
  171.  
  172. <clr\0\0\0\0\0>;    15;0005000
  173. <clrb\0\0\0\0>;        15;0105000
  174. <com\0\0\0\0\0>;    15;0005100
  175. <comb\0\0\0\0>;        15;0105100
  176. <inc\0\0\0\0\0>;    15;0005200
  177. <incb\0\0\0\0>;        15;0105200
  178. <dec\0\0\0\0\0>;    15;0005300
  179. <decb\0\0\0\0>;        15;0105300
  180. <neg\0\0\0\0\0>;    15;0005400
  181. <negb\0\0\0\0>;        15;0105400
  182. <adc\0\0\0\0\0>;    15;0005500
  183. <adcb\0\0\0\0>;        15;0105500
  184. <sbc\0\0\0\0\0>;    15;0005600
  185. <sbcb\0\0\0\0>;        15;0105600
  186. <tst\0\0\0\0\0>;    15;0005700
  187. <tstb\0\0\0\0>;        15;0105700
  188. <ror\0\0\0\0\0>;    15;0006000
  189. <rorb\0\0\0\0>;        15;0106000
  190. <rol\0\0\0\0\0>;    15;0006100
  191. <rolb\0\0\0\0>;        15;0106100
  192. <asr\0\0\0\0\0>;    15;0006200
  193. <asrb\0\0\0\0>;        15;0106200
  194. <asl\0\0\0\0\0>;    15;0006300
  195. <aslb\0\0\0\0>;        15;0106300
  196. <jmp\0\0\0\0\0>;    15;0000100
  197. <swab\0\0\0\0>;        15;0000300
  198.  
  199. / jsr
  200.  
  201. <jsr\0\0\0\0\0>;    07;0004000
  202.  
  203. / rts
  204.  
  205. <rts\0\0\0\0\0>;    010;000200
  206.  
  207. / simple operand
  208.  
  209. <sys\0\0\0\0\0>;    011;104400
  210.  
  211. / flag-setting
  212.  
  213. <clc\0\0\0\0\0>;    01;0000241
  214. <clv\0\0\0\0\0>;    01;0000242
  215. <clz\0\0\0\0\0>;    01;0000244
  216. <cln\0\0\0\0\0>;    01;0000250
  217. <sec\0\0\0\0\0>;    01;0000261
  218. <sev\0\0\0\0\0>;    01;0000262
  219. <sez\0\0\0\0\0>;    01;0000264
  220. <sen\0\0\0\0\0>;    01;0000270
  221.  
  222. / floating point ops
  223.  
  224. <cfcc\0\0\0\0>;        01;170000
  225. <setf\0\0\0\0>;        01;170001
  226. <setd\0\0\0\0>;        01;170011
  227. <seti\0\0\0\0>;        01;170002
  228. <setl\0\0\0\0>;        01;170012
  229. <clrf\0\0\0\0>;        15;170400
  230. <negf\0\0\0\0>;        15;170700
  231. <absf\0\0\0\0>;        15;170600
  232. <tstf\0\0\0\0>;        15;170500
  233. <movf\0\0\0\0>;        12;172400
  234. <movif\0\0\0>;        14;177000
  235. <movfi\0\0\0>;        05;175400
  236. <movof\0\0\0>;        14;177400
  237. <movfo\0\0\0>;        05;176000
  238. <addf\0\0\0\0>;        14;172000
  239. <subf\0\0\0\0>;        14;173000
  240. <mulf\0\0\0\0>;        14;171000
  241. <divf\0\0\0\0>;        14;174400
  242. <cmpf\0\0\0\0>;        14;173400
  243. <modf\0\0\0\0>;        14;171400
  244. <movie\0\0\0>;        14;176400
  245. <movei\0\0\0>;        05;175000
  246. <ldfps\0\0\0>;        15;170100
  247. <stfps\0\0\0>;        15;170200
  248. <fr0\0\0\0\0\0>;    24;000000
  249. <fr1\0\0\0\0\0>;    24;000001
  250. <fr2\0\0\0\0\0>;    24;000002
  251. <fr3\0\0\0\0\0>;    24;000003
  252. <fr4\0\0\0\0\0>;    24;000004
  253. <fr5\0\0\0\0\0>;    24;000005
  254.  
  255. / 11/45 operations
  256.  
  257. <als\0\0\0\0\0>;    30;072000
  258. <alsc\0\0\0\0>;        30;073000
  259. <mpy\0\0\0\0\0>;    30;070000
  260. .if eae-1
  261. <mul\0\0\0\0\0>;    30;070000
  262. <div\0\0\0\0\0>;    30;071000
  263. <ash\0\0\0\0\0>;    30;072000
  264. <ashc\0\0\0\0>;        30;073000
  265. .endif
  266. <dvd\0\0\0\0\0>;    30;071000
  267. <xor\0\0\0\0\0>;    07;074000
  268. <sxt\0\0\0\0\0>;    15;006700
  269. <mark\0\0\0\0>;        11;006400
  270. <sob\0\0\0\0\0>;    31;077000
  271.  
  272. / specials
  273.  
  274. <.byte\0\0\0>;        16;000000
  275. <.even\0\0\0>;        20;000000
  276. <.if\0\0\0\0\0>;    21;000000
  277. <.endif\0\0>;        22;000000
  278. <.globl\0\0>;        23;000000
  279. <.text\0\0\0>;        25;000000
  280. <.data\0\0\0>;        26;000000
  281. <.bss\0\0\0\0>;        27;000000
  282. <.comm\0\0\0>;        32;000000
  283.  
  284. ebsymtab:
  285.  
  286.  
  287. start:
  288.     sys    signal; 2; 1
  289.     ror    r0
  290.     bcs    1f
  291.     sys    signal; 2; aexit
  292. 1:
  293.     mov    sp,r5
  294.     mov    (r5)+,r0
  295.     cmpb    *2(r5),$'-
  296.     bne    1f
  297.     tst    (r5)+
  298.     dec    r0
  299.     br    2f
  300. 1:
  301.     clr    unglob
  302. 2:
  303.     movb    r0,nargs
  304.     mov    r5,curarg
  305.     jsr    r5,fcreat; a.tmp1
  306.     movb    r0,pof
  307.     jsr    r5,fcreat; a.tmp2
  308.     movb    r0,fbfil
  309.     jsr    pc,setup
  310.     jmp    go
  311.  
  312. setup:
  313.     mov    $symtab,r1
  314. 1:
  315.     clr    r3
  316.     mov    $8,r2
  317.     mov    r1,-(sp)
  318. 2:
  319.     movb    (r1)+,r4
  320.     beq    2f
  321.     add    r4,r3
  322.     swab    r3
  323.     sob    r2,2b
  324. 2:
  325.     clr    r2
  326.     div    $hshsiz,r2
  327.     ashc    $1,r2
  328.     add    $hshtab,r3
  329. 4:
  330.     sub    r2,r3
  331.     cmp    r3,$hshtab
  332.     bhi    3f
  333.     add    $2*hshsiz,r3
  334. 3:
  335.     tst    -(r3)
  336.     bne    4b
  337.     mov    (sp)+,r1
  338.     mov    r1,(r3)
  339.     add    $12.,r1
  340.     cmp    r1,$ebsymtab
  341.     blo    1b
  342.     rts    pc
  343.  
  344. /overlay buffer
  345. inbuf    = setup
  346. .    =inbuf+512.
  347.  
  348.