.RP .TL New UCB .UX Edition of .I m11 Assembler .AU Jim Reeds .AI Statistics Department Univerity of California Berkeley .AB A new edition of the old Harvard .UX implementation of the .I Macro-11 assembler for PDP-11 computers is now available. This document gives, in terse form, a list of features in the new assembler. The reader is assumed to have some prior knowledge of Macro-11, for instance by having previously read the DEC Macro-11 manual. .AE .SH History .PP Harvard modified an old (circa 1974) DEC implementation of Macro-11 to run on .UX in the mid 1970's. They called it .I macro, but at Berkeley this program has been known as .I m11. I modified it further, borrowing features supported in current DEC assemblers. In the course of this work I found many bugs in the original .I m11 and many cases of disagreement between the DEC Macro-11 manuals and the .I m11 program. I have tried to fix as many of these as I could. .SH Assembler Directives .PP The following is a list of all the directives supported by .I m11. Most work as described in the DEC manuals. One directive implemented in all DEC assemblers but not documented is the .I .rem directive. Its use is illustrated by the following example: .DS call sub1 call sub2 \\.rem & mov #message,-(sp) call errpr tst (sp)+ & call sub3 .DE Here the text following the .I rem directive up through the second & sign is a comment. Any character may play the role of &. Another undocumented fact about all DEC Macro-11 assemblers is the fact that the .I .endm and .I .endr directives are complete synonyms and may be used interchangeably, as in .DS \\.macro call1 func, arg mov arg,-(sp) call func tst (sp)+ \\.endr .DE in violation of the rules given in the DEC manuals. The directives are: .DS ascii asciz asect blkb blkw byte csect dsabl enabl end endc endm endr eot error even flt2 flt4 globl ident if ifdf ifeq iff ifg ifge ifgt ifl ifle iflt ifndf ifne ifnz ift iftf ifz iif irp irpc limit list macr macro mcall mexit narg nchr nlist ntype odd page print psect radix rad50 rem rept sbttl title word .DE .SH Op Codes .PP The following is a list of op codes supported by .I m11. Consult the PDP Procssor Handbook for details. One new feature of recent DEC assemblers and of the new version of .I m11 is the use of the short-hand opcodes .I call and .I return, which are simply the .I jsr and .I rts opcodes with use of the .I pc enforced. .DS absd absf adc adcb add addd addf ash ashc asl aslb asr asrb bcc bcs beq bge bgt bhi bhis bic bicb bis bisb bit bitb ble blo blos blt bmi bne bpl bpt br bvc bvs call ccc cfcc clc cln clr clrb clrd clrf clv clz cmp cmpb cmpd cmpf cnz com comb dec decb div divd divf emt fadd fdiv fmul fsub halt inc incb iot jmp jsr ldcdf ldcfd ldcid ldcif ldcld ldclf ldd ldexp ldf ldfps ldsc ldub mark mfpd mfpi modd modf mov movb mtpd mtpi mul muld mulf neg negb negd negf nop reset return rol rolb ror rorb rti rts rtt sbc sbcb scc sec sen setd setf seti setl sev sez sob spl sta0 stb0 stcdf stcdi stcdl stcfd stcfi stcfl std stexp stf stfps stq0 stst sub subd subf swab sxt trap tst tstb tstd tstf wait xor .DE .SH .UX Command Line Arguments .PP .DS .DE .PP The list of valid arguments to the .I -cr flag is .DS s sy sym r re reg m ma mac p pe per pst c cs cse sec pse e er err .DE .SH Psect Attributes .PP Psect attributes are coded by bits in a byte. The various attribute arguments turn selected bits on and selected bits off. This attribute byte is interpreted by the loader. The following three kinds of program sections each have their own default attributes. These defaults can be changed by the system manager. The user can override them by using the .I -dp, .I -dc, and .I -da command line flags. .IP Blank .I csects and all .I .psects have the default attribute .I relocatable. .IP Named .I .csects have the default attributes .I overlaid, .I global, and .I relocatable. .IP The absolute .I .asect has the attributes .I overlaid and .I global. .PP The meaning of the bits is (in octal): .DS shareable 1 instructions 2 bss 4 defined 10 overlaid 20 relocatable 40 global 100 .DE .PP Each of the attribute key words turns some of these bits on and some off. The list is: .DS Keyword Synonym Turns On Turns Off rel 40 abs 40 gbl 100 lcl 100 ovr 20 con 20 shr ro 1 4 prv rw 5 bss b 4 3 ins i 2 4 dat d 6 hgh low .DE .PP The .I hgh and .I low attribute keywords are for compatability with DEC assemblers. They have no UNIX function. .SH Listing control arguments .DS seq loc bin src com bex md mc me meb cnd ld ttm toc sym .DE .SH Arguments to the .I .enabl and .I .dsabl directives .PP These args are: .DS pnc crf gbl fpt lc lsb cdr reg ama pic abs .DE .SH Arguments to Condtional Statements .PP The conditional directives .I .if, etc, take the following arguments: .DS eq ne z nz gt le g lt ge l df ndf b nb idn dif .DE .I .SH Differences Between Old Harvard Assembler and New Assembler .PP The new assembler does not convert macro definition text to upper case. This feature can be disabled by using the .I -um switch. .SH Differences Between DEC Macro-11 Assemblers and the New Assembler .PP The new assembler does not have keyword arguments to macros, as described in section 7.3.6 in the DEC Macro 11 manual. .PP The new assembler starts out with lower case enabled and it does not convert macro definition text to upper case. Both of these features can be turned off by specifying the .I -uc switch.