|
|
researchv10 Norman
/* a9 -- pdp-11 assembler pass 1 */
#include "as2.h"
/* key to types
/*
/* T_UNDEF 0 undefined
/* T_ABS 1 absolute
/* T_TEXT 2 text
/* T_DATA 3 data
/* T_BSS 4 bss
/* T_FLOPD 5 flop freg,dst (movfo, = stcfd)
/* T_BRANCH 6 branch
/* T_JSR 7 jsr
/* T_RTS 010 rts
/* T_SYS 011 sys
/* T_MOVF 012 movf (=ldf,stf)
/* T_DOUBLE 013 double operand (mov)
/* T_FLOPF 014 flop fsrc,freg (addf)
/* T_SINGLE 015 single operand (clr)
/* T_BYTE 016 .byte
/* T_STRING 017 string (.ascii, "<")
/* T_EVEN 020 .even
/* T_IF 021 .if
/* T_ENDIF 022 .endif
/* T_GLOBL 023 .globl
/* T_REG 024 register
/* T__TEXT 025 .text
/* T__DATA 026 .data
/* T__BSS 027 .bss
/* T_MUL 030 mul,div, etc
/* T_SOB 031 sob
/* T_COMM 032 .comm
/* T_ESTTXT 033 estimated text
/* T_ESTDAT 034 estimated data
/* T_JBR 035 jbr
/* T_JXX 036 jeq, jne, etc
*/
struct expr symtab[] = {
{T_TEXT, 000000}, /* . */
{T_ABS, 000000}, /* .. */
{T_REG, 000000}, /* r0 */
{T_REG, 000001}, /* r1 */
{T_REG, 000002}, /* r2 */
{T_REG, 000003}, /* r3 */
{T_REG, 000004}, /* r4 */
{T_REG, 000005}, /* r5 */
{T_REG, 000006}, /* sp */
{T_REG, 000007}, /* pc */
#if eae!=0
{T_ABS, 0177570}, /* csw */
{T_ABS, 0177300}, /* div */
{T_ABS, 0177302}, /* ac */
{T_ABS, 0177304}, /* mq */
{T_ABS, 0177306}, /* mul */
{T_ABS, 0177310}, /* sc */
{T_ABS, 0177311}, /* sr */
{T_ABS, 0177312}, /* nor */
{T_ABS, 0177314}, /* lsh */
{T_ABS, 0177316}, /* ash */
#endif
{T_DOUBLE, 0010000}, /* mov */
{T_DOUBLE, 0110000}, /* movb */
{T_DOUBLE, 0020000}, /* cmp */
{T_DOUBLE, 0120000}, /* cmpb */
{T_DOUBLE, 0030000}, /* bit */
{T_DOUBLE, 0130000}, /* bitb */
{T_DOUBLE, 0040000}, /* bic */
{T_DOUBLE, 0140000}, /* bicb */
{T_DOUBLE, 0050000}, /* bis */
{T_DOUBLE, 0150000}, /* bisb */
{T_DOUBLE, 0060000}, /* add */
{T_DOUBLE, 0160000}, /* sub */
{T_BRANCH, 0000400}, /* br */
{T_BRANCH, 0001000}, /* bne */
{T_BRANCH, 0001400}, /* beq */
{T_BRANCH, 0002000}, /* bge */
{T_BRANCH, 0002400}, /* blt */
{T_BRANCH, 0003000}, /* bgt */
{T_BRANCH, 0003400}, /* ble */
{T_BRANCH, 0100000}, /* bpl */
{T_BRANCH, 0100400}, /* bmi */
{T_BRANCH, 0101000}, /* bhi */
{T_BRANCH, 0101400}, /* blos */
{T_BRANCH, 0102000}, /* bvc */
{T_BRANCH, 0102400}, /* bvs */
{T_BRANCH, 0103000}, /* bhis */
{T_BRANCH, 0103000}, /* bec */
{T_BRANCH, 0103000}, /* bcc */
{T_BRANCH, 0103400}, /* blo */
{T_BRANCH, 0103400}, /* bcs */
{T_BRANCH, 0103400}, /* bes */
{T_JBR, 0000400}, /* jbr */
{T_JXX, 0001000}, /* jne */
{T_JXX, 0001400}, /* jeq */
{T_JXX, 0002000}, /* jge */
{T_JXX, 0002400}, /* jlt */
{T_JXX, 0003000}, /* jgt */
{T_JXX, 0003400}, /* jle */
{T_JXX, 0100000}, /* jpl */
{T_JXX, 0100400}, /* jmi */
{T_JXX, 0101000}, /* jhi */
{T_JXX, 0101400}, /* jlos */
{T_JXX, 0102000}, /* jvc */
{T_JXX, 0102400}, /* jvs */
{T_JXX, 0103000}, /* jhis */
{T_JXX, 0103000}, /* jec */
{T_JXX, 0103000}, /* jcc */
{T_JXX, 0103400}, /* jlo */
{T_JXX, 0103400}, /* jcs */
{T_JXX, 0103400}, /* jes */
{T_SINGLE, 0005000}, /* clr */
{T_SINGLE, 0105000}, /* clrb */
{T_SINGLE, 0005100}, /* com */
{T_SINGLE, 0105100}, /* comb */
{T_SINGLE, 0005200}, /* inc */
{T_SINGLE, 0105200}, /* incb */
{T_SINGLE, 0005300}, /* dec */
{T_SINGLE, 0105300}, /* decb */
{T_SINGLE, 0005400}, /* neg */
{T_SINGLE, 0105400}, /* negb */
{T_SINGLE, 0005500}, /* adc */
{T_SINGLE, 0105500}, /* adcb */
{T_SINGLE, 0005600}, /* sbc */
{T_SINGLE, 0105600}, /* sbcb */
{T_SINGLE, 0005700}, /* tst */
{T_SINGLE, 0105700}, /* tstb */
{T_SINGLE, 0006000}, /* ror */
{T_SINGLE, 0106000}, /* rorb */
{T_SINGLE, 0006100}, /* rol */
{T_SINGLE, 0106100}, /* rolb */
{T_SINGLE, 0006200}, /* asr */
{T_SINGLE, 0106200}, /* asrb */
{T_SINGLE, 0006300}, /* asl */
{T_SINGLE, 0106300}, /* aslb */
{T_SINGLE, 0000100}, /* jmp */
{T_SINGLE, 0000300}, /* swab */
{T_JSR, 0004000}, /* jsr */
{T_RTS, 000200}, /* rts */
{T_SYS, 0104400}, /* sys */
{T_ABS, 0000241}, /* clc */
{T_ABS, 0000242}, /* clv */
{T_ABS, 0000244}, /* clz */
{T_ABS, 0000250}, /* cln */
{T_ABS, 0000261}, /* sec */
{T_ABS, 0000262}, /* sev */
{T_ABS, 0000264}, /* sez */
{T_ABS, 0000270}, /* sen */
{T_ABS, 0170000}, /* cfcc */
{T_ABS, 0170001}, /* setf */
{T_ABS, 0170011}, /* setd */
{T_ABS, 0170002}, /* seti */
{T_ABS, 0170012}, /* setl */
{T_SINGLE, 0170400}, /* clrf */
{T_SINGLE, 0170700}, /* negf */
{T_SINGLE, 0170600}, /* absf */
{T_SINGLE, 0170500}, /* tstf */
{T_MOVF, 0172400}, /* movf */
{T_FLOPF, 0177000}, /* movif */
{T_FLOPD, 0175400}, /* movfi */
{T_FLOPF, 0177400}, /* movof */
{T_FLOPD, 0176000}, /* movfo */
{T_FLOPF, 0172000}, /* addf */
{T_FLOPF, 0173000}, /* subf */
{T_FLOPF, 0171000}, /* mulf */
{T_FLOPF, 0174400}, /* divf */
{T_FLOPF, 0173400}, /* cmpf */
{T_FLOPF, 0171400}, /* modf */
{T_FLOPF, 0176400}, /* movie */
{T_FLOPD, 0175000}, /* movei */
{T_SINGLE, 0170100}, /* ldfps */
{T_SINGLE, 0170200}, /* stfps */
{T_REG, 000000}, /* fr0 */
{T_REG, 000001}, /* fr1 */
{T_REG, 000002}, /* fr2 */
{T_REG, 000003}, /* fr3 */
{T_REG, 000004}, /* fr4 */
{T_REG, 000005}, /* fr5 */
{T_MUL, 072000}, /* als */
{T_MUL, 073000}, /* alsc */
{T_MUL, 070000}, /* mpy */
#if (eae-1)!=0
{T_MUL, 070000}, /* mul */
{T_MUL, 071000}, /* div */
{T_MUL, 072000}, /* ash */
{T_MUL, 073000}, /* ashc */
#endif
{T_MUL, 071000}, /* dvd */
{T_JSR, 074000}, /* xor */
{T_SINGLE, 006700}, /* sxt */
{T_SYS, 006400}, /* mark */
{T_SOB, 077000}, /* sob */
{T_BYTE, 000000}, /* .byte */
{T_EVEN, 000000}, /* .even */
{T_IF, 000000}, /* .if */
{T_ENDIF, 000000}, /* .endif */
{T_GLOBL, 000000}, /* .globl */
{T__TEXT, 000000}, /* .text */
{T__DATA, 000000}, /* .data */
{T__BSS, 000000}, /* .bss */
{T_COMM, 000000}, /* .comm */
};
short *dotrel = &symtab[0].typ;
short *dot = &symtab[0].val;
short *dotdot = &symtab[1].val;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.