home *** CD-ROM | disk | FTP | other *** search
- From: markz@ssc.UUCP (Mark Zenier)
- Newsgroups: alt.sources
- Subject: Frankenstein Cross Assemblers, TI TMS7000 flavor, Part 1 of 1
- Message-ID: <617@ssc.UUCP>
- Date: 6 Dec 90 07:26:41 GMT
-
- ---- Cut Here and feed the following to sh ----
- #!/bin/sh
- # This is Frankasm/As7000, a shell archive (shar 3.43)
- # made 12/04/1990 08:46 UTC by markz@ssc.uucp
- # Source directory /usr/mark/frank.shar
- #
- # existing files will NOT be overwritten unless -c is specified
- # This format requires very little intelligence at unshar time.
- # "if test", "echo", "true", and "sed" may be needed.
- #
- # This shar contains:
- # length mode name
- # ------ ---------- ------------------------------------------
- # 952 -r--r----- as7000.1
- # 6878 -r--r----- as7000.doc
- # 3991 -r--r----- as7000.tst
- # 7347 -r--r----- as7000.tut
- # 36162 -r--r--r-- as7000.y
- #
- # ============= as7000.1 ==============
- if test -f 'as7000.1' -a X"$1" != X"-c"; then
- echo 'x - skipping as7000.1 (File already exists)'
- else
- echo 'x - extracting as7000.1 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'as7000.1' &&
- X.TH AS7000 1L
- X.SH NAME
- Xas7000 \- cross assembler for microcomputers
- X.SH SYNOPSIS
- Xas7000 [-p cpu] [-l listfile] [-o hexfile] [-d] [-s symbolfile] input
- X.SH DESCRIPTION
- XThe as7000 command assembles the input file into a
- Xtext output file representing the program memory for a microcomputer.
- X
- XOptions
- X.IP "-p cpu"
- XIgnored by this program.
- X.IP "-l listfile"
- XOutput a file formated with the memory address, data, and source input lines.
- X.IP "-o hexfile"
- XOutput the memory data image in a form accepted by most prom programmers.
- X.IP "-h hexfile"
- XSame as \-o.
- X.IP \-d
- XSave the intermediate data file (see FILE) and abort the execution at the
- Xend of processing.
- X.IP "-s symbolfile"
- XPrint the symbol table values and names, one per line in the specified file.
- X.SH FILES
- X/usr/tmp/frtXXXXXX
- X.SH SEE ALSO
- XFrankenstein Cross Assemblers Users Manual (file base.doc)
- XAppendix for as7000 Frankenstein Assembler (file as7000.doc)
- X.SH NOTES
- XThere is only one input file.
- SHAR_EOF
- true || echo 'restore of as7000.1 failed'
- fi
- # ============= as7000.doc ==============
- if test -f 'as7000.doc' -a X"$1" != X"-c"; then
- echo 'x - skipping as7000.doc (File already exists)'
- else
- echo 'x - extracting as7000.doc (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'as7000.doc' &&
- X.HM A 1 1 1 1 1 1
- X.H 1 "Appendix for as7000 Frankenstein Assembler"
- X.H 2 "Pseudo Operations"
- X.H 3 "Standard Pseudo Operation Mnemonics"
- X.VL 40 5 1
- X.LI "End"
- XEND
- X.LI "File Inclusion"
- XINCL
- XINCLUDE
- X.LI "If"
- XIF
- X.LI "Else"
- XELSE
- X.LI "End If"
- XENDI
- X.LI "Equate"
- XEQU
- X.LI "Set"
- XSET
- X.LI "Org"
- XORG
- X.LI "Reserve Memory"
- XRESERVE
- XRMB
- X.LI "Define Byte Data"
- XBYTE
- XDB
- XFCB
- X.LI "Define Word Data"
- XDW
- XFDB
- XWORD
- X.LI "Define String Data"
- XFCC
- XSTRING
- X.LI "Define Character Set Translation"
- XCHARSET
- X.LI "Define Character Value"
- XCHARDEF
- XCHD
- X.LI "Use Character Translation"
- XCHARUSE
- X.LE
- X.H 2 "Instructions"
- X.H 3 "Differences with the TI defined Syntax"
- X.DS
- X.TS
- X;
- Xl l.
- XTI syntax as7000 syntax
- X.sp
- Xop % immediate , register op # immediate , register
- Xop % immed , register, jump dest op # immed , register , jump dest
- Xop @ label op label
- Xop @ label ( B ) op expr ( B )
- Xop *register op [ register ]
- Xmovd % immed ( B ) , register movd # immed (B), register
- X.sp
- XConstants
- X.sp
- X?0101010 %01010101
- X>89ab $89ab
- X'''' "'"
- X.sp
- XComments
- X.sp
- Xafter the last operand everything following a semicolon
- X.sp
- XSymbols
- X.sp
- XR0-R255 equ with value between 0 and $ff
- XR0-R255 0 to 255, Not Recommended !
- XP0-P255 equ with value between $100 and $1ff
- XP0-P255 256 to 511, Not Recommended !
- X.sp
- X.TE
- X.DE
- X.H 3 "Instruction List"
- X.TS H
- X;
- Xl l l.
- XOpcode Syntax Selection Criteria
- X.sp
- X.TH
- X.sp
- XADC '#' expr ',' expr
- XADC '#' expr ',' expr DSTA
- XADC '#' expr ',' expr DSTB
- XADC expr ',' expr
- XADC expr ',' expr DSTA
- XADC expr ',' expr DSTB
- XADC expr ',' expr SRCB DSTA
- X.sp
- XADD '#' expr ',' expr
- XADD '#' expr ',' expr DSTA
- XADD '#' expr ',' expr DSTB
- XADD expr ',' expr
- XADD expr ',' expr DSTA
- XADD expr ',' expr DSTB
- XADD expr ',' expr SRCB DSTA
- X.sp
- XAND '#' expr ',' expr
- XAND '#' expr ',' expr DSTA
- XAND '#' expr ',' expr DSTB
- XAND expr ',' expr
- XAND expr ',' expr DSTA
- XAND expr ',' expr DSTB
- XAND expr ',' expr SRCB DSTA
- X.sp
- XANDP '#' expr ',' expr
- XANDP expr ',' expr SRCA
- XANDP expr ',' expr SRCB
- X.sp
- XBR '[' expr ']'
- XBR expr '(' REG ')' SRCB
- XBR expr
- X.sp
- XBTJO '#' expr ',' expr ',' expr
- XBTJO '#' expr ',' expr ',' expr DSTA
- XBTJO '#' expr ',' expr ',' expr DSTB
- XBTJO expr ',' expr ',' expr
- XBTJO expr ',' expr ',' expr DSTA
- XBTJO expr ',' expr ',' expr DSTB
- XBTJO expr ',' expr ',' expr SRCB DSTA
- X.sp
- XBTJOP '#' expr ',' expr ',' expr
- XBTJOP expr ',' expr ',' expr SRCA
- XBTJOP expr ',' expr ',' expr SRCB
- X.sp
- XBTJZ '#' expr ',' expr ',' expr
- XBTJZ '#' expr ',' expr ',' expr DSTA
- XBTJZ '#' expr ',' expr ',' expr DSTB
- XBTJZ expr ',' expr ',' expr
- XBTJZ expr ',' expr ',' expr DSTA
- XBTJZ expr ',' expr ',' expr DSTB
- XBTJZ expr ',' expr ',' expr SRCB DSTA
- X.sp
- XBTJZP '#' expr ',' expr ',' expr
- XBTJZP expr ',' expr ',' expr SRCA
- XBTJZP expr ',' expr ',' expr SRCB
- X.sp
- XCALL '[' expr ']'
- XCALL expr '(' REG ')' SRCB
- XCALL expr
- X.sp
- XCLR expr
- XCLR expr DSTA
- XCLR expr DSTB
- X.sp
- XCLRC
- X.sp
- XCMP '#' expr ',' expr
- XCMP '#' expr ',' expr DSTA
- XCMP '#' expr ',' expr DSTB
- XCMP expr ',' expr
- XCMP expr ',' expr DSTA
- XCMP expr ',' expr DSTB
- XCMP expr ',' expr SRCB DSTA
- X.sp
- XCMPA '[' expr ']'
- XCMPA expr '(' REG ')' SRCB
- XCMPA expr
- X.sp
- XDAC '#' expr ',' expr
- XDAC '#' expr ',' expr DSTA
- XDAC '#' expr ',' expr DSTB
- XDAC expr ',' expr
- XDAC expr ',' expr DSTA
- XDAC expr ',' expr DSTB
- XDAC expr ',' expr SRCB DSTA
- X.sp
- XDEC expr
- XDEC expr DSTA
- XDEC expr DSTB
- X.sp
- XDECD expr
- XDECD expr DSTA
- XDECD expr DSTB
- X.sp
- XDINT
- X.sp
- XDJNZ expr ',' expr
- XDJNZ expr ',' expr DSTA
- XDJNZ expr ',' expr DSTB
- X.sp
- XDSB '#' expr ',' expr
- XDSB '#' expr ',' expr DSTA
- XDSB '#' expr ',' expr DSTB
- XDSB expr ',' expr
- XDSB expr ',' expr DSTA
- XDSB expr ',' expr DSTB
- XDSB expr ',' expr SRCB DSTA
- X.sp
- XEINT
- X.sp
- XIDLE
- X.sp
- XINC expr
- XINC expr DSTA
- XINC expr DSTB
- X.sp
- XINV expr
- XINV expr DSTA
- XINV expr DSTB
- X.sp
- XJC expr
- X.sp
- XJEQ expr
- X.sp
- XJGE expr
- X.sp
- XJGT expr
- X.sp
- XJHS expr
- X.sp
- XJL expr
- X.sp
- XJLT expr
- X.sp
- XJMP expr
- X.sp
- XJN expr
- X.sp
- XJNC expr
- X.sp
- XJNE expr
- X.sp
- XJNZ expr
- X.sp
- XJP expr
- X.sp
- XJPZ expr
- X.sp
- XJZ expr
- X.sp
- XLDA '[' expr ']'
- XLDA expr '(' REG ')' SRCB
- XLDA expr
- X.sp
- XLDSP
- X.sp
- XMOV '#' expr ',' expr
- XMOV '#' expr ',' expr DSTA
- XMOV '#' expr ',' expr DSTB
- XMOV expr ',' expr
- XMOV expr ',' expr DSTA
- XMOV expr ',' expr DSTB
- XMOV expr ',' expr SRCA
- XMOV expr ',' expr SRCA DSTB
- XMOV expr ',' expr SRCB
- XMOV expr ',' expr SRCB DSTA
- X.sp
- XMOVD '#' expr '(' REG ')' ',' expr
- XMOVD '#' expr ',' expr
- XMOVD expr ',' expr
- X.sp
- XMOVP '#' expr ',' expr
- XMOVP expr ',' expr DSTA
- XMOVP expr ',' expr DSTB
- XMOVP expr ',' expr SRCA
- XMOVP expr ',' expr SRCB
- X.sp
- XMPY '#' expr ',' expr
- XMPY '#' expr ',' expr DSTA
- XMPY '#' expr ',' expr DSTB
- XMPY expr ',' expr
- XMPY expr ',' expr DSTA
- XMPY expr ',' expr DSTB
- XMPY expr ',' expr SRCB DSTA
- X.sp
- XNOP
- X.sp
- XOR '#' expr ',' expr
- XOR '#' expr ',' expr DSTA
- XOR '#' expr ',' expr DSTB
- XOR expr ',' expr
- XOR expr ',' expr DSTA
- XOR expr ',' expr DSTB
- XOR expr ',' expr SRCB DSTA
- X.sp
- XORP '#' expr ',' expr
- XORP expr ',' expr SRCA
- XORP expr ',' expr SRCB
- X.sp
- XPOP STATUS
- XPOP expr
- XPOP expr DSTA
- XPOP expr DSTB
- X.sp
- XPUSH STATUS
- XPUSH expr
- XPUSH expr DSTA
- XPUSH expr DSTB
- X.sp
- XRETI
- X.sp
- XRETS
- X.sp
- XRL expr
- XRL expr DSTA
- XRL expr DSTB
- X.sp
- XRLC expr
- XRLC expr DSTA
- XRLC expr DSTB
- X.sp
- XRR expr
- XRR expr DSTA
- XRR expr DSTB
- X.sp
- XRRC expr
- XRRC expr DSTA
- XRRC expr DSTB
- X.sp
- XSBB '#' expr ',' expr
- XSBB '#' expr ',' expr DSTA
- XSBB '#' expr ',' expr DSTB
- XSBB expr ',' expr
- XSBB expr ',' expr DSTA
- XSBB expr ',' expr DSTB
- XSBB expr ',' expr SRCB DSTA
- X.sp
- XSETC
- X.sp
- XSTA '[' expr ']'
- XSTA expr '(' REG ')' SRCB
- XSTA expr
- X.sp
- XSTSP
- X.sp
- XSUB '#' expr ',' expr
- XSUB '#' expr ',' expr DSTA
- XSUB '#' expr ',' expr DSTB
- XSUB expr ',' expr
- XSUB expr ',' expr DSTA
- XSUB expr ',' expr DSTB
- XSUB expr ',' expr SRCB DSTA
- X.sp
- XSWAP expr
- XSWAP expr DSTA
- XSWAP expr DSTB
- X.sp
- XTRAP expr
- X.sp
- XTSTA
- X.sp
- XTSTB
- X.sp
- XXCHB expr
- XXCHB expr DSTA
- XXCHB expr DSTB
- X.sp
- XXOR '#' expr ',' expr
- XXOR '#' expr ',' expr DSTA
- XXOR '#' expr ',' expr DSTB
- XXOR expr ',' expr
- XXOR expr ',' expr DSTA
- XXOR expr ',' expr DSTB
- XXOR expr ',' expr SRCB DSTA
- X.sp
- XXORP '#' expr ',' expr
- XXORP expr ',' expr SRCA
- XXORP expr ',' expr SRCB
- X.TE
- X.H 3 "Selection Criteria Keywords"
- X.VL 25 5
- X.LI DSTA
- XThe instruction will use a short form if the A register is used as the
- Xdestination register.
- X.LI DSTB
- XThe instruction will use a short form if the B register is used as the
- Xdestination register.
- X.LI SRCA
- XThe instruction will use a short form if the A register is used as the
- Xsource register.
- X.LI SRCB
- XThe instruction will use a short form if the B register is used as the
- Xsource register.
- X.LE
- X.H 3 "Apostrophes"
- XThe apostrophes in the syntax field are a notation used for the
- Xparser generator and are not put in the assembler source statement.
- X.H 2 "Notes"
- X.H 3 "Reserved Symbols"
- X.H 4 "Machine Dependent Reserved Symbols"
- XA
- XB
- XST
- Xa
- Xb
- Xst
- X.H 4 "Standard Reserved Symbols"
- XAND
- XDEFINED
- XEQ
- XGE
- XGT
- XHIGH
- XLE
- XLOW
- XLT
- XMOD
- XNE
- XNOT
- XOR
- XSHL
- XSHR
- XXOR
- Xand
- Xdefined
- Xeq
- Xge
- Xgt
- Xhigh
- Xle
- Xlow
- Xlt
- Xmod
- Xne
- Xnot
- Xor
- Xshl
- Xshr
- Xxor
- X.TC 1 1 7
- SHAR_EOF
- true || echo 'restore of as7000.doc failed'
- fi
- # ============= as7000.tst ==============
- if test -f 'as7000.tst' -a X"$1" != X"-c"; then
- echo 'x - skipping as7000.tst (File already exists)'
- else
- echo 'x - extracting as7000.tst (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'as7000.tst' &&
- Ximm equ $55
- Xlabel equ $3456
- Xport equ $102
- Xrd equ $78
- Xrs equ $34
- X adc b,a
- X adc rs,a
- X adc rs,b
- X adc rs,rd
- X adc #imm,a
- X adc #imm,b
- X adc #imm,rd
- X add b,a
- X add rs,a
- X add rs,b
- X add rs,rd
- X add #imm,a
- X add #imm,b
- X add #imm,rd
- X and b,a
- X and rs,a
- X and rs,b
- X and rs,rd
- X and #imm,a
- X and #imm,b
- X and #imm,rd
- X andp a,port
- X andp b,port
- X andp #imm,port
- X br label
- X br label(b)
- X br [rs]
- X btjo b,a,jmpdst
- X btjo rs,a,jmpdst
- X btjo rs,b,jmpdst
- X btjo rs,rd,jmpdst
- X btjo #imm,a,jmpdst
- X btjo #imm,b,jmpdst
- X btjo #imm,rd,jmpdst
- X btjop a,port,jmpdst
- X btjop b,port,jmpdst
- X btjop #imm,port,jmpdst
- X btjz b,a,jmpdst
- X btjz rs,a,jmpdst
- X btjz rs,b,jmpdst
- X btjz rs,rd,jmpdst
- X btjz #imm,a,jmpdst
- X btjz #imm,b,jmpdst
- X btjz #imm,rd,jmpdst
- X btjzp a,port,jmpdst
- X btjzp b,port,jmpdst
- X btjzp #imm,port,jmpdst
- X call label
- X call label(b)
- X call [rs]
- X clr a
- X clr b
- X clr rd
- X clrc
- X cmp b,a
- X cmp rs,a
- X cmp rs,b
- X cmp rs,rd
- X cmp #imm,a
- X cmp #imm,b
- X cmp #imm,rd
- X cmpa label
- X cmpa label(b)
- X cmpa [rs]
- X dac b,a
- X dac rs,a
- X dac rs,b
- Xjmpdst dac rs,rd
- X dac #imm,a
- X dac #imm,b
- X dac #imm,rd
- X dec a
- X dec b
- X dec rd
- X decd a
- X decd b
- X decd rd
- X dint
- X djnz a,jmpdst
- X djnz b,jmpdst
- X djnz rd,jmpdst
- X dsb b,a
- X dsb rs,a
- X dsb rs,b
- X dsb rs,rd
- X dsb #imm,a
- X dsb #imm,b
- X dsb #imm,rd
- X eint
- X idle
- X inc a
- X inc b
- X inc rd
- X inv a
- X inv b
- X inv rd
- X jc jmpdst
- X jeq jmpdst
- X jge jmpdst
- X jgt jmpdst
- X jhs jmpdst
- X jl jmpdst
- X jlt jmpdst
- X jmp jmpdst
- X jn jmpdst
- X jnc jmpdst
- X jne jmpdst
- X jnz jmpdst
- X jp jmpdst
- X jpz jmpdst
- X jz jmpdst
- X lda label
- X lda label(b)
- X lda [rs]
- X ldsp
- X mov a,b
- X mov a,rd
- X mov b,a
- X mov b,rd
- X mov rs,a
- X mov rs,b
- X mov rs,rd
- X mov #imm,a
- X mov #imm,b
- X mov #imm,rd
- X movd rs,rd
- X movd #imm(b),rd
- X movd #imm,rd
- X movp a,port
- X movp b,port
- X movp port,a
- X movp port,b
- X movp #imm,port
- X mpy b,a
- X mpy rs,a
- X mpy rs,b
- X mpy rs,rd
- X mpy #imm,a
- X mpy #imm,b
- X mpy #imm,rd
- X nop
- X or b,a
- X or rs,a
- X or rs,b
- X or rs,rd
- X or #imm,a
- X or #imm,b
- X or #imm,rd
- X orp a,port
- X orp b,port
- X orp #imm,port
- X pop a
- X pop b
- X pop rd
- X pop st
- X push a
- X push b
- X push rd
- X push st
- X reti
- X rets
- X rl a
- X rl b
- X rl rd
- X rlc a
- X rlc b
- X rlc rd
- X rr a
- X rr b
- X rr rd
- X rrc a
- X rrc b
- X rrc rd
- X sbb b,a
- X sbb rs,a
- X sbb rs,b
- X sbb rs,rd
- X sbb #imm,a
- X sbb #imm,b
- X sbb #imm,rd
- X setc
- X sta label
- X sta label(b)
- X sta [rs]
- X stsp
- X sub b,a
- X sub rs,a
- X sub rs,b
- X sub rs,rd
- X sub #imm,a
- X sub #imm,b
- X sub #imm,rd
- X swap a
- X swap b
- X swap rd
- X trap 00
- X trap 01
- X trap 02
- X trap 03
- X trap 04
- X trap 05
- X trap 06
- X trap 07
- X trap 08
- X trap 09
- X trap 10
- X trap 11
- X trap 12
- X trap 13
- X trap 14
- X trap 15
- X trap 16
- X trap 17
- X trap 18
- X trap 19
- X trap 20
- X trap 21
- X trap 22
- X trap 23
- X tsta
- X tstb
- X xchb a
- X xchb b
- X xchb rd
- X xor b,a
- X xor rs,a
- X xor rs,b
- X xor rs,rd
- X xor #imm,a
- X xor #imm,b
- X xor #imm,rd
- X xorp a,port
- X xorp b,port
- X xorp #imm,port
- SHAR_EOF
- true || echo 'restore of as7000.tst failed'
- fi
- # ============= as7000.tut ==============
- if test -f 'as7000.tut' -a X"$1" != X"-c"; then
- echo 'x - skipping as7000.tut (File already exists)'
- else
- echo 'x - extracting as7000.tut (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'as7000.tut' &&
- X00000055 imm 00003456 label 00000102 port
- X00000078 rd 00000034 rs 000000a5 jmpdst
- X 0x55 imm equ $55
- X 0x3456 label equ $3456
- X 0x102 port equ $102
- X 0x78 rd equ $78
- X 0x34 rs equ $34
- X0000 69 adc b,a
- X0001 19 34 adc rs,a
- X0003 39 34 adc rs,b
- X0005 49 34 78 adc rs,rd
- X0008 29 55 adc #imm,a
- X000a 59 55 adc #imm,b
- X000c 79 55 78 adc #imm,rd
- X000f 68 add b,a
- X0010 18 34 add rs,a
- X0012 38 34 add rs,b
- X0014 48 34 78 add rs,rd
- X0017 28 55 add #imm,a
- X0019 58 55 add #imm,b
- X001b 78 55 78 add #imm,rd
- X001e 63 and b,a
- X001f 13 34 and rs,a
- X0021 33 34 and rs,b
- X0023 43 34 78 and rs,rd
- X0026 23 55 and #imm,a
- X0028 53 55 and #imm,b
- X002a 73 55 78 and #imm,rd
- X002d 83 02 andp a,port
- X002f 93 02 andp b,port
- X0031 a3 55 02 andp #imm,port
- X0034 8c 34 56 br label
- X0037 ac 34 56 br label(b)
- X003a 9c 34 br [rs]
- X003c 66 67 btjo b,a,jmpdst
- X003e 16 34 64 btjo rs,a,jmpdst
- X0041 36 34 61 btjo rs,b,jmpdst
- X0044 46 34 78 5d btjo rs,rd,jmpdst
- X0048 26 55 5a btjo #imm,a,jmpdst
- X004b 56 55 57 btjo #imm,b,jmpdst
- X004e 76 55 78 53 btjo #imm,rd,jmpdst
- X0052 86 02 50 btjop a,port,jmpdst
- X0055 96 02 4d btjop b,port,jmpdst
- X0058 a6 55 02 49 btjop #imm,port,jmpdst
- X005c 67 47 btjz b,a,jmpdst
- X005e 17 34 44 btjz rs,a,jmpdst
- X0061 37 34 41 btjz rs,b,jmpdst
- X0064 47 34 78 3d btjz rs,rd,jmpdst
- X0068 27 55 3a btjz #imm,a,jmpdst
- X006b 57 55 37 btjz #imm,b,jmpdst
- X006e 77 55 78 33 btjz #imm,rd,jmpdst
- X0072 87 02 30 btjzp a,port,jmpdst
- X0075 97 02 2d btjzp b,port,jmpdst
- X0078 a7 55 02 29 btjzp #imm,port,jmpdst
- X007c 8e 34 56 call label
- X007f ae 34 56 call label(b)
- X0082 9e 34 call [rs]
- X0084 b5 clr a
- X0085 c5 clr b
- X0086 d5 78 clr rd
- X0088 b0 clrc
- X0089 6d cmp b,a
- X008a 1d 34 cmp rs,a
- X008c 3d 34 cmp rs,b
- X008e 4d 34 78 cmp rs,rd
- X0091 2d 55 cmp #imm,a
- X0093 5d 55 cmp #imm,b
- X0095 7d 55 78 cmp #imm,rd
- X0098 8d 34 56 cmpa label
- X009b ad 34 56 cmpa label(b)
- X009e 9d 34 cmpa [rs]
- X00a0 6e dac b,a
- X00a1 1e 34 dac rs,a
- X00a3 3e 34 dac rs,b
- X00a5 4e 34 78 jmpdst dac rs,rd
- X00a8 2e 55 dac #imm,a
- X00aa 5e 55 dac #imm,b
- X00ac 7e 55 78 dac #imm,rd
- X00af b2 dec a
- X00b0 c2 dec b
- X00b1 d2 78 dec rd
- X00b3 bb decd a
- X00b4 cb decd b
- X00b5 db 78 decd rd
- X00b7 06 dint
- X00b8 ba eb djnz a,jmpdst
- X00ba ca e9 djnz b,jmpdst
- X00bc da 78 e6 djnz rd,jmpdst
- X00bf 6f dsb b,a
- X00c0 1f 34 dsb rs,a
- X00c2 3f 34 dsb rs,b
- X00c4 4f 34 78 dsb rs,rd
- X00c7 2f 55 dsb #imm,a
- X00c9 5f 55 dsb #imm,b
- X00cb 7f 55 78 dsb #imm,rd
- X00ce 05 eint
- X00cf 01 idle
- X00d0 b3 inc a
- X00d1 c3 inc b
- X00d2 d3 78 inc rd
- X00d4 b4 inv a
- X00d5 c4 inv b
- X00d6 d4 78 inv rd
- X00d8 e3 cb jc jmpdst
- X00da e2 c9 jeq jmpdst
- X00dc e5 c7 jge jmpdst
- X00de e4 c5 jgt jmpdst
- X00e0 e3 c3 jhs jmpdst
- X00e2 e7 c1 jl jmpdst
- X00e4 e1 bf jlt jmpdst
- X00e6 e0 bd jmp jmpdst
- X00e8 e1 bb jn jmpdst
- X00ea e7 b9 jnc jmpdst
- X00ec e6 b7 jne jmpdst
- X00ee e6 b5 jnz jmpdst
- X00f0 e4 b3 jp jmpdst
- X00f2 e5 b1 jpz jmpdst
- X00f4 e2 af jz jmpdst
- X00f6 8a 34 56 lda label
- X00f9 aa 34 56 lda label(b)
- X00fc 9a 34 lda [rs]
- X00fe 0d ldsp
- X00ff c0 mov a,b
- X0100 d0 78 mov a,rd
- X0102 62 mov b,a
- X0103 d1 78 mov b,rd
- X0105 12 34 mov rs,a
- X0107 32 34 mov rs,b
- X0109 42 34 78 mov rs,rd
- X010c 22 55 mov #imm,a
- X010e 52 55 mov #imm,b
- X0110 72 55 78 mov #imm,rd
- X0113 98 34 78 movd rs,rd
- X0116 a8 00 55 78 movd #imm(b),rd
- X011a 88 00 55 78 movd #imm,rd
- X011e 82 02 movp a,port
- X0120 92 02 movp b,port
- X0122 80 02 movp port,a
- X0124 91 02 movp port,b
- X0126 a2 55 02 movp #imm,port
- X0129 6c mpy b,a
- X012a 1c 34 mpy rs,a
- X012c 3c 34 mpy rs,b
- X012e 4c 34 78 mpy rs,rd
- X0131 2c 55 mpy #imm,a
- X0133 5c 55 mpy #imm,b
- X0135 7c 55 78 mpy #imm,rd
- X0138 00 nop
- X0139 64 or b,a
- X013a 14 34 or rs,a
- X013c 34 34 or rs,b
- X013e 44 34 78 or rs,rd
- X0141 24 55 or #imm,a
- X0143 54 55 or #imm,b
- X0145 74 55 78 or #imm,rd
- X0148 84 02 orp a,port
- X014a 94 02 orp b,port
- X014c a4 55 02 orp #imm,port
- X014f b9 pop a
- X0150 c9 pop b
- X0151 d9 78 pop rd
- X0153 08 pop st
- X0154 b8 push a
- X0155 c8 push b
- X0156 d8 78 push rd
- X0158 0e push st
- X0159 0b reti
- X015a 0a rets
- X015b be rl a
- X015c ce rl b
- X015d de 78 rl rd
- X015f bf rlc a
- X0160 cf rlc b
- X0161 df 78 rlc rd
- X0163 bc rr a
- X0164 cc rr b
- X0165 dc 78 rr rd
- X0167 bd rrc a
- X0168 cd rrc b
- X0169 dd 78 rrc rd
- X016b 6b sbb b,a
- X016c 1b 34 sbb rs,a
- X016e 3b 34 sbb rs,b
- X0170 4b 34 78 sbb rs,rd
- X0173 2b 55 sbb #imm,a
- X0175 5b 55 sbb #imm,b
- X0177 7b 55 78 sbb #imm,rd
- X017a 07 setc
- X017b 8b 34 56 sta label
- X017e ab 34 56 sta label(b)
- X0181 9b 34 sta [rs]
- X0183 09 stsp
- X0184 6a sub b,a
- X0185 1a 34 sub rs,a
- X0187 3a 34 sub rs,b
- X0189 4a 34 78 sub rs,rd
- X018c 2a 55 sub #imm,a
- X018e 5a 55 sub #imm,b
- X0190 7a 55 78 sub #imm,rd
- X0193 b7 swap a
- X0194 c7 swap b
- X0195 d7 78 swap rd
- X0197 ff trap 00
- X0198 fe trap 01
- X0199 fd trap 02
- X019a fc trap 03
- X019b fb trap 04
- X019c fa trap 05
- X019d f9 trap 06
- X019e f8 trap 07
- X019f f7 trap 08
- X01a0 f6 trap 09
- X01a1 f5 trap 10
- X01a2 f4 trap 11
- X01a3 f3 trap 12
- X01a4 f2 trap 13
- X01a5 f1 trap 14
- X01a6 f0 trap 15
- X01a7 ef trap 16
- X01a8 ee trap 17
- X01a9 ed trap 18
- X01aa ec trap 19
- X01ab eb trap 20
- X01ac ea trap 21
- X01ad e9 trap 22
- X01ae e8 trap 23
- X01af b0 tsta
- X01b0 c1 tstb
- X01b1 b6 xchb a
- X01b2 c6 xchb b
- X01b3 d6 78 xchb rd
- X01b5 65 xor b,a
- X01b6 15 34 xor rs,a
- X01b8 35 34 xor rs,b
- X01ba 45 34 78 xor rs,rd
- X01bd 25 55 xor #imm,a
- X01bf 55 55 xor #imm,b
- X01c1 75 55 78 xor #imm,rd
- X01c4 85 02 xorp a,port
- X01c6 95 02 xorp b,port
- X01c8 a5 55 02 xorp #imm,port
- X ERROR SUMMARY - ERRORS DETECTED 0
- X - WARNINGS 0
- SHAR_EOF
- true || echo 'restore of as7000.tut failed'
- fi
- # ============= as7000.y ==============
- if test -f 'as7000.y' -a X"$1" != X"-c"; then
- echo 'x - skipping as7000.y (File already exists)'
- else
- echo 'x - extracting as7000.y (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'as7000.y' &&
- X%{
- X
- X/*
- XHEADER: ;
- XTITLE: Frankenstein Cross Assemblers;
- XVERSION: 2.0;
- XDESCRIPTION: " Reconfigurable Cross-assembler producing Intel (TM)
- X Hex format object records. ";
- XKEYWORDS: cross-assemblers, 1805, 2650, 6301, 6502, 6805, 6809,
- X 6811, tms7000, 8048, 8051, 8096, z8, z80;
- XSYSTEM: UNIX, MS-Dos ;
- XFILENAME: as7000.y;
- XWARNINGS: "The language defined in this file does
- X not follow the standard Texas Instruments syntax.
- X
- X This software is in the public domain.
- X Any prior copyright claims are relinquished.
- X
- X This software is distributed with no warranty whatever.
- X The author takes no responsibility for the consequences
- X of its use.
- X
- X Yacc (or Bison) required to compile." ;
- XSEE-ALSO: as7000.doc,frasmain.c;
- XAUTHORS: Mark Zenier;
- XCOMPILERS: Microport Sys V/AT, ATT Yacc, Turbo C V1.5, Bison (CUG disk 285)
- X (previous versions Xenix, Unisoft 68000 Version 7, Sun 3);
- X*/
- X/* TMS7000 instruction generation file */
- X/* November 17, 1990 */
- X
- X/*
- X description frame work parser description for framework cross
- X assemblers
- X history February 2, 1988
- X September 11, 1990 - merge table definition
- X September 12, 1990 - short file names
- X September 14, 1990 - short variable names
- X September 17, 1990 - use yylex as external
- X*/
- X#include <stdio.h>
- X#include "frasmdat.h"
- X#include "fragcon.h"
- X
- X#define yylex lexintercept
- X
- X /* 0000.0000.0000.00xx */
- X#define DSTMASK 0x3
- X#define DSTA 0x1
- X#define DSTB 0x2
- X /* 0000.0000.0000.xx00 */
- X#define SRCMASK 0xc
- X#define SRCA 0x4
- X#define SRCB 0x8
- X#define ST_INH 0x1
- X#define ST_EXPR 0x2
- X#define ST_EXPR2 0x4
- X#define ST_EXPR3 0x8
- X#define ST_IEXPR2 0x10
- X#define ST_IEXPR3 0x20
- X#define ST_INDEX 0x40
- X#define ST_IMMIND 0x80
- X#define ST_RINDIR 0x100
- X#define ST_STATUS 0x200
- X
- X static int operselbits;
- X static char genbdef[] = "[1=];";
- X static char genwdef[] = "[1=]x"; /* x for normal, y for byte rev */
- X char ignosyn[] = "[Xinvalid syntax for instruction";
- X char ignosel[] = "[Xinvalid operands/illegal instruction for cpu";
- X
- X long labelloc;
- X static int satsub;
- X int ifstkpt = 0;
- X int fraifskip = FALSE;
- X
- X struct symel * endsymbol = SYMNULL;
- X
- X%}
- X%union {
- X int intv;
- X long longv;
- X char *strng;
- X struct symel *symb;
- X}
- X
- X%token STATUS
- X%token <intv> REG
- X%token <intv> KOC_BDEF
- X%token <intv> KOC_ELSE
- X%token <intv> KOC_END
- X%token <intv> KOC_ENDI
- X%token <intv> KOC_EQU
- X%token <intv> KOC_IF
- X%token <intv> KOC_INCLUDE
- X%token <intv> KOC_ORG
- X%token <intv> KOC_RESM
- X%token <intv> KOC_SDEF
- X%token <intv> KOC_SET
- X%token <intv> KOC_WDEF
- X%token <intv> KOC_CHSET
- X%token <intv> KOC_CHDEF
- X%token <intv> KOC_CHUSE
- X%token <intv> KOC_opcode
- X
- X%token <longv> CONSTANT
- X%token EOL
- X%token KEOP_AND
- X%token KEOP_DEFINED
- X%token KEOP_EQ
- X%token KEOP_GE
- X%token KEOP_GT
- X%token KEOP_HIGH
- X%token KEOP_LE
- X%token KEOP_LOW
- X%token KEOP_LT
- X%token KEOP_MOD
- X%token KEOP_MUN
- X%token KEOP_NE
- X%token KEOP_NOT
- X%token KEOP_OR
- X%token KEOP_SHL
- X%token KEOP_SHR
- X%token KEOP_XOR
- X%token KEOP_locctr
- X%token <symb> LABEL
- X%token <strng> STRING
- X%token <symb> SYMBOL
- X
- X%token KTK_invalid
- X
- X%right KEOP_HIGH KEOP_LOW
- X%left KEOP_OR KEOP_XOR
- X%left KEOP_AND
- X%right KEOP_NOT
- X%nonassoc KEOP_GT KEOP_GE KEOP_LE KEOP_LT KEOP_NE KEOP_EQ
- X%left '+' '-'
- X%left '*' '/' KEOP_MOD KEOP_SHL KEOP_SHR
- X%right KEOP_MUN
- X
- X
- X%type <intv> expr exprlist stringlist
- X
- X%start file
- X
- X%%
- X
- Xfile : file allline
- X | allline
- X ;
- X
- Xallline : line EOL
- X {
- X clrexpr();
- X }
- X | EOL
- X | error EOL
- X {
- X clrexpr();
- X yyerrok;
- X }
- X ;
- X
- Xline : LABEL KOC_END
- X {
- X endsymbol = $1;
- X nextreadact = Nra_end;
- X }
- X | KOC_END
- X {
- X nextreadact = Nra_end;
- X }
- X | KOC_INCLUDE STRING
- X {
- X if(nextfstk >= FILESTKDPTH)
- X {
- X fraerror("include file nesting limit exceeded");
- X }
- X else
- X {
- X infilestk[nextfstk].fnm = savestring($2,strlen($2));
- X if( (infilestk[nextfstk].fpt = fopen($2,"r"))
- X ==(FILE *)NULL )
- X {
- X fraerror("cannot open include file");
- X }
- X else
- X {
- X nextreadact = Nra_new;
- X }
- X }
- X }
- X | LABEL KOC_EQU expr
- X {
- X if($1 -> seg == SSG_UNDEF)
- X {
- X pevalexpr(0, $3);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X $1 -> seg = SSG_EQU;
- X $1 -> value = evalr[0].value;
- X prtequvalue("C: 0x%lx\n",
- X evalr[0].value);
- X }
- X else
- X {
- X fraerror(
- X "noncomputable expression for EQU");
- X }
- X }
- X else
- X {
- X fraerror(
- X "cannot change symbol value with EQU");
- X }
- X }
- X | LABEL KOC_SET expr
- X {
- X if($1 -> seg == SSG_UNDEF
- X || $1 -> seg == SSG_SET)
- X {
- X pevalexpr(0, $3);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X $1 -> seg = SSG_SET;
- X $1 -> value = evalr[0].value;
- X prtequvalue("C: 0x%lx\n",
- X evalr[0].value);
- X }
- X else
- X {
- X fraerror(
- X "noncomputable expression for SET");
- X }
- X }
- X else
- X {
- X fraerror(
- X "cannot change symbol value with SET");
- X }
- X }
- X | KOC_IF expr
- X {
- X if((++ifstkpt) < IFSTKDEPTH)
- X {
- X pevalexpr(0, $2);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X if(evalr[0].value != 0)
- X {
- X elseifstk[ifstkpt] = If_Skip;
- X endifstk[ifstkpt] = If_Active;
- X }
- X else
- X {
- X fraifskip = TRUE;
- X elseifstk[ifstkpt] = If_Active;
- X endifstk[ifstkpt] = If_Active;
- X }
- X }
- X else
- X {
- X fraifskip = TRUE;
- X elseifstk[ifstkpt] = If_Active;
- X endifstk[ifstkpt] = If_Active;
- X }
- X }
- X else
- X {
- X fraerror("IF stack overflow");
- X }
- X }
- X
- X | KOC_IF
- X {
- X if(fraifskip)
- X {
- X if((++ifstkpt) < IFSTKDEPTH)
- X {
- X elseifstk[ifstkpt] = If_Skip;
- X endifstk[ifstkpt] = If_Skip;
- X }
- X else
- X {
- X fraerror("IF stack overflow");
- X }
- X }
- X else
- X {
- X yyerror("syntax error");
- X YYERROR;
- X }
- X }
- X
- X | KOC_ELSE
- X {
- X switch(elseifstk[ifstkpt])
- X {
- X case If_Active:
- X fraifskip = FALSE;
- X break;
- X
- X case If_Skip:
- X fraifskip = TRUE;
- X break;
- X
- X case If_Err:
- X fraerror("ELSE with no matching if");
- X break;
- X }
- X }
- X
- X | KOC_ENDI
- X {
- X switch(endifstk[ifstkpt])
- X {
- X case If_Active:
- X fraifskip = FALSE;
- X ifstkpt--;
- X break;
- X
- X case If_Skip:
- X fraifskip = TRUE;
- X ifstkpt--;
- X break;
- X
- X case If_Err:
- X fraerror("ENDI with no matching if");
- X break;
- X }
- X }
- X | LABEL KOC_ORG expr
- X {
- X pevalexpr(0, $3);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X locctr = labelloc = evalr[0].value;
- X if($1 -> seg == SSG_UNDEF)
- X {
- X $1 -> seg = SSG_ABS;
- X $1 -> value = labelloc;
- X }
- X else
- X fraerror(
- X "multiple definition of label");
- X prtequvalue("C: 0x%lx\n",
- X evalr[0].value);
- X }
- X else
- X {
- X fraerror(
- X "noncomputable expression for ORG");
- X }
- X }
- X | KOC_ORG expr
- X {
- X pevalexpr(0, $2);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X locctr = labelloc = evalr[0].value;
- X prtequvalue("C: 0x%lx\n",
- X evalr[0].value);
- X }
- X else
- X {
- X fraerror(
- X "noncomputable expression for ORG");
- X }
- X }
- X | LABEL KOC_CHSET
- X {
- X if($1 -> seg == SSG_UNDEF)
- X {
- X $1 -> seg = SSG_EQU;
- X if( ($1->value = chtcreate()) <= 0)
- X {
- X fraerror( "cannot create character translation table");
- X }
- X prtequvalue("C: 0x%lx\n", $1 -> value);
- X }
- X else
- X {
- X fraerror( "multiple definition of label");
- X }
- X }
- X | KOC_CHUSE
- X {
- X chtcpoint = (int *) NULL;
- X prtequvalue("C: 0x%lx\n", 0L);
- X }
- X | KOC_CHUSE expr
- X {
- X pevalexpr(0, $2);
- X if( evalr[0].seg == SSG_ABS)
- X {
- X if( evalr[0].value == 0)
- X {
- X chtcpoint = (int *)NULL;
- X prtequvalue("C: 0x%lx\n", 0L);
- X }
- X else if(evalr[0].value < chtnxalph)
- X {
- X chtcpoint = chtatab[evalr[0].value];
- X prtequvalue("C: 0x%lx\n", evalr[0].value);
- X }
- X else
- X {
- X fraerror("nonexistent character translation table");
- X }
- X }
- X else
- X {
- X fraerror("noncomputable expression");
- X }
- X }
- X | KOC_CHDEF STRING ',' exprlist
- X {
- X int findrv, numret, *charaddr;
- X char *sourcestr = $2, *before;
- X
- X if(chtnpoint != (int *)NULL)
- X {
- X for(satsub = 0; satsub < $4; satsub++)
- X {
- X before = sourcestr;
- X
- X pevalexpr(0, exprlist[satsub]);
- X findrv = chtcfind(chtnpoint, &sourcestr,
- X &charaddr, &numret);
- X if(findrv == CF_END)
- X {
- X fraerror("more expressions than characters");
- X break;
- X }
- X
- X if(evalr[0].seg == SSG_ABS)
- X {
- X switch(findrv)
- X {
- X case CF_UNDEF:
- X {
- X if(evalr[0].value < 0 ||
- X evalr[0].value > 255)
- X {
- X frawarn("character translation value truncated");
- X }
- X *charaddr = evalr[0].value & 0xff;
- X prtequvalue("C: 0x%lx\n", evalr[0].value);
- X }
- X break;
- X
- X case CF_INVALID:
- X case CF_NUMBER:
- X fracherror("invalid character to define",
- X before, sourcestr);
- X break;
- X
- X case CF_CHAR:
- X fracherror("character already defined",
- X before, sourcestr);
- X break;
- X }
- X }
- X else
- X {
- X fraerror("noncomputable expression");
- X }
- X }
- X
- X if( *sourcestr != '\0')
- X {
- X fraerror("more characters than expressions");
- X }
- X }
- X else
- X {
- X fraerror("no CHARSET statement active");
- X }
- X
- X }
- X | LABEL
- X {
- X if($1 -> seg == SSG_UNDEF)
- X {
- X $1 -> seg = SSG_ABS;
- X $1 -> value = labelloc;
- X prtequvalue("C: 0x%lx\n", labelloc);
- X
- X }
- X else
- X fraerror(
- X "multiple definition of label");
- X }
- X | labeledline
- X ;
- X
- Xlabeledline : LABEL genline
- X {
- X if($1 -> seg == SSG_UNDEF)
- X {
- X $1 -> seg = SSG_ABS;
- X $1 -> value = labelloc;
- X }
- X else
- X fraerror(
- X "multiple definition of label");
- X labelloc = locctr;
- X }
- X
- X | genline
- X {
- X labelloc = locctr;
- X }
- X ;
- X
- Xgenline : KOC_BDEF exprlist
- X {
- X genlocrec(currseg, labelloc);
- X for( satsub = 0; satsub < $2; satsub++)
- X {
- X pevalexpr(1, exprlist[satsub]);
- X locctr += geninstr(genbdef);
- X }
- X }
- X | KOC_SDEF stringlist
- X {
- X genlocrec(currseg, labelloc);
- X for(satsub = 0; satsub < $2; satsub++)
- X {
- X locctr += genstring(stringlist[satsub]);
- X }
- X }
- X | KOC_WDEF exprlist
- X {
- X genlocrec(currseg, labelloc);
- X for( satsub = 0; satsub < $2; satsub++)
- X {
- X pevalexpr(1, exprlist[satsub]);
- X locctr += geninstr(genwdef);
- X }
- X }
- X | KOC_RESM expr
- X {
- X pevalexpr(0, $2);
- X if(evalr[0].seg == SSG_ABS)
- X {
- X locctr = labelloc + evalr[0].value;
- X prtequvalue("C: 0x%lx\n", labelloc);
- X }
- X else
- X {
- X fraerror(
- X "noncomputable result for RMB expression");
- X }
- X }
- X ;
- X
- Xexprlist : exprlist ',' expr
- X {
- X exprlist[nextexprs ++ ] = $3;
- X $$ = nextexprs;
- X }
- X | expr
- X {
- X nextexprs = 0;
- X exprlist[nextexprs ++ ] = $1;
- X $$ = nextexprs;
- X }
- X ;
- X
- Xstringlist : stringlist ',' STRING
- X {
- X stringlist[nextstrs ++ ] = $3;
- X $$ = nextstrs;
- X }
- X | STRING
- X {
- X nextstrs = 0;
- X stringlist[nextstrs ++ ] = $1;
- X $$ = nextstrs;
- X }
- X ;
- X
- X
- Xgenline : KOC_opcode
- X {
- X genlocrec(currseg, labelloc);
- X locctr += geninstr(findgen($1, ST_INH, 0));
- X }
- X ;
- Xgenline : KOC_opcode expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$2);
- X operselbits = 0;
- X if(evalr[1].seg == SSG_ABS)
- X {
- X if(evalr[1].value == 0)
- X {
- X operselbits |= DSTA;
- X }
- X else if(evalr[1].value == 1)
- X {
- X operselbits |= DSTB;
- X }
- X }
- X locctr += geninstr(findgen($1, ST_EXPR, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode expr ',' expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$2);
- X pevalexpr(2,$4);
- X operselbits = 0;
- X if(evalr[1].seg == SSG_ABS)
- X {
- X if(evalr[1].value == 0)
- X {
- X operselbits |= SRCA;
- X }
- X else if(evalr[1].value == 1)
- X {
- X operselbits |= SRCB;
- X }
- X }
- X if(evalr[2].seg == SSG_ABS)
- X {
- X if(evalr[2].value == 0)
- X {
- X operselbits |= DSTA;
- X }
- X else if(evalr[2].value == 1)
- X {
- X operselbits |= DSTB;
- X }
- X }
- X locctr += geninstr(findgen($1, ST_EXPR2, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode expr ',' expr ',' expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$2);
- X pevalexpr(2,$4);
- X pevalexpr(3,$6);
- X operselbits = 0;
- X if(evalr[1].seg == SSG_ABS)
- X {
- X if(evalr[1].value == 0)
- X {
- X operselbits |= SRCA;
- X }
- X else if(evalr[1].value == 1)
- X {
- X operselbits |= SRCB;
- X }
- X }
- X if(evalr[2].seg == SSG_ABS)
- X {
- X if(evalr[2].value == 0)
- X {
- X operselbits |= DSTA;
- X }
- X else if(evalr[2].value == 1)
- X {
- X operselbits |= DSTB;
- X }
- X }
- X locctr += geninstr(findgen($1, ST_EXPR3, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode '#' expr ',' expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$3);
- X pevalexpr(2,$5);
- X operselbits = 0;
- X if(evalr[2].seg == SSG_ABS)
- X {
- X if(evalr[2].value == 0)
- X {
- X operselbits |= DSTA;
- X }
- X else if(evalr[2].value == 1)
- X {
- X operselbits |= DSTB;
- X }
- X }
- X locctr += geninstr(findgen($1, ST_IEXPR2, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode '#' expr ',' expr ',' expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$3);
- X pevalexpr(2,$5);
- X pevalexpr(3,$7);
- X operselbits = 0;
- X if(evalr[2].seg == SSG_ABS)
- X {
- X if(evalr[2].value == 0)
- X {
- X operselbits |= DSTA;
- X }
- X else if(evalr[2].value == 1)
- X {
- X operselbits |= DSTB;
- X }
- X }
- X locctr += geninstr(findgen($1, ST_IEXPR3, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode expr '(' REG ')'
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$2);
- X operselbits = 0;
- X if($4 == 0)
- X {
- X operselbits |= SRCA;
- X }
- X else if($4 == 1)
- X {
- X operselbits |= SRCB;
- X }
- X locctr += geninstr(findgen($1, ST_INDEX, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode '#' expr '(' REG ')' ',' expr
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$3);
- X pevalexpr(2,$8);
- X operselbits = 0;
- X if($5 == 0)
- X {
- X operselbits |= SRCA;
- X }
- X else if($5 == 1)
- X {
- X operselbits |= SRCB;
- X }
- X locctr += geninstr(findgen($1, ST_IMMIND, operselbits));
- X }
- X ;
- Xgenline : KOC_opcode '[' expr ']'
- X {
- X genlocrec(currseg, labelloc);
- X pevalexpr(1,$3);
- X locctr += geninstr(findgen($1, ST_RINDIR, 0));
- X }
- X ;
- Xgenline : KOC_opcode STATUS
- X {
- X genlocrec(currseg, labelloc);
- X locctr += geninstr(findgen($1, ST_STATUS, 0));
- X }
- X ;
- Xexpr : '+' expr %prec KEOP_MUN
- X {
- X $$ = $2;
- X }
- X | '-' expr %prec KEOP_MUN
- X {
- X $$ = exprnode(PCCASE_UN,$2,IFC_NEG,0,0L,
- X SYMNULL);
- X }
- X | KEOP_NOT expr
- X {
- X $$ = exprnode(PCCASE_UN,$2,IFC_NOT,0,0L,
- X SYMNULL);
- X }
- X | KEOP_HIGH expr
- X {
- X $$ = exprnode(PCCASE_UN,$2,IFC_HIGH,0,0L,
- X SYMNULL);
- X }
- X | KEOP_LOW expr
- X {
- X $$ = exprnode(PCCASE_UN,$2,IFC_LOW,0,0L,
- X SYMNULL);
- X }
- X | expr '*' expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_MUL,$3,0L,
- X SYMNULL);
- X }
- X | expr '/' expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_DIV,$3,0L,
- X SYMNULL);
- X }
- X | expr '+' expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_ADD,$3,0L,
- X SYMNULL);
- X }
- X | expr '-' expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_SUB,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_MOD expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_MOD,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_SHL expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_SHL,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_SHR expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_SHR,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_GT expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_GT,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_GE expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_GE,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_LT expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_LT,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_LE expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_LE,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_NE expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_NE,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_EQ expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_EQ,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_AND expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_AND,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_OR expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_OR,$3,0L,
- X SYMNULL);
- X }
- X | expr KEOP_XOR expr
- X {
- X $$ = exprnode(PCCASE_BIN,$1,IFC_XOR,$3,0L,
- X SYMNULL);
- X }
- X | KEOP_DEFINED SYMBOL
- X {
- X $$ = exprnode(PCCASE_DEF,0,IGP_DEFINED,0,0L,$2);
- X }
- X | SYMBOL
- X {
- X $$ = exprnode(PCCASE_SYMB,0,IFC_SYMB,0,0L,$1);
- X }
- X | '*'
- X {
- X $$ = exprnode(PCCASE_PROGC,0,IFC_PROGCTR,0,
- X labelloc, SYMNULL);
- X }
- X | CONSTANT
- X {
- X $$ = exprnode(PCCASE_CONS,0,IGP_CONSTANT,0,$1,
- X SYMNULL);
- X }
- X | STRING
- X {
- X char *sourcestr = $1;
- X long accval = 0;
- X
- X if(strlen($1) > 0)
- X {
- X accval = chtran(&sourcestr);
- X if(*sourcestr != '\0')
- X {
- X accval = (accval << 8) +
- X chtran(&sourcestr);
- X }
- X
- X if( *sourcestr != '\0')
- X {
- X frawarn("string constant in expression more than 2 characters long");
- X }
- X }
- X $$ = exprnode(PCCASE_CONS, 0, IGP_CONSTANT, 0,
- X accval, SYMNULL);
- X }
- X | '(' expr ')'
- X {
- X $$ = $2;
- X }
- X ;
- X
- X
- Xexpr : REG
- X {
- X $$ = exprnode(PCCASE_CONS,0,IGP_CONSTANT,0,(long)$1,SYMNULL);
- X }
- X ;
- X
- X%%
- X
- Xlexintercept()
- X/*
- X description intercept the call to yylex (the lexical analyzer)
- X and filter out all unnecessary tokens when skipping
- X the input between a failed IF and its matching ENDI or
- X ELSE
- X globals fraifskip the enable flag
- X*/
- X{
- X#undef yylex
- X
- X int rv;
- X
- X if(fraifskip)
- X {
- X for(;;)
- X {
- X
- X switch(rv = yylex())
- X
- X {
- X case 0:
- X case KOC_END:
- X case KOC_IF:
- X case KOC_ELSE:
- X case KOC_ENDI:
- X case EOL:
- X return rv;
- X default:
- X break;
- X }
- X }
- X }
- X else
- X return yylex();
- X#define yylex lexintercept
- X}
- X
- X
- X
- Xsetreserved()
- X{
- X
- X reservedsym("and", KEOP_AND, 0);
- X reservedsym("defined", KEOP_DEFINED,0);
- X reservedsym("eq", KEOP_EQ, 0);
- X reservedsym("ge", KEOP_GE, 0);
- X reservedsym("gt", KEOP_GT, 0);
- X reservedsym("high", KEOP_HIGH, 0);
- X reservedsym("le", KEOP_LE, 0);
- X reservedsym("low", KEOP_LOW, 0);
- X reservedsym("lt", KEOP_LT, 0);
- X reservedsym("mod", KEOP_MOD, 0);
- X reservedsym("ne", KEOP_NE, 0);
- X reservedsym("not", KEOP_NOT, 0);
- X reservedsym("or", KEOP_OR, 0);
- X reservedsym("shl", KEOP_SHL, 0);
- X reservedsym("shr", KEOP_SHR, 0);
- X reservedsym("xor", KEOP_XOR, 0);
- X reservedsym("AND", KEOP_AND, 0);
- X reservedsym("DEFINED", KEOP_DEFINED,0);
- X reservedsym("EQ", KEOP_EQ, 0);
- X reservedsym("GE", KEOP_GE, 0);
- X reservedsym("GT", KEOP_GT, 0);
- X reservedsym("HIGH", KEOP_HIGH, 0);
- X reservedsym("LE", KEOP_LE, 0);
- X reservedsym("LOW", KEOP_LOW, 0);
- X reservedsym("LT", KEOP_LT, 0);
- X reservedsym("MOD", KEOP_MOD, 0);
- X reservedsym("NE", KEOP_NE, 0);
- X reservedsym("NOT", KEOP_NOT, 0);
- X reservedsym("OR", KEOP_OR, 0);
- X reservedsym("SHL", KEOP_SHL, 0);
- X reservedsym("SHR", KEOP_SHR, 0);
- X reservedsym("XOR", KEOP_XOR, 0);
- X
- X /* machine specific token definitions */
- X reservedsym("st", STATUS, 0);
- X reservedsym("a", REG, 0);
- X reservedsym("b", REG, 1);
- X reservedsym("ST", STATUS, 0);
- X reservedsym("A", REG, 0);
- X reservedsym("B", REG, 1);
- X
- X}
- X
- X
- Xcpumatch(str)
- X char * str;
- X{
- X return TRUE;
- X}
- X
- X/*
- X description Opcode and Instruction generation tables
- X usage Unix, framework crossassembler
- X history September 25, 1987
- X*/
- X
- X#define NUMOPCODE 92
- X#define NUMSYNBLK 104
- X#define NUMDIFFOP 213
- X
- Xint gnumopcode = NUMOPCODE;
- X
- Xint ophashlnk[NUMOPCODE];
- X
- Xstruct opsym optab[NUMOPCODE+1]
- X = {
- X {"invalid", KOC_opcode, 2, 0 },
- X {"ADC", KOC_opcode, 2, 2 },
- X {"ADD", KOC_opcode, 2, 4 },
- X {"AND", KOC_opcode, 2, 6 },
- X {"ANDP", KOC_opcode, 2, 8 },
- X {"BR", KOC_opcode, 3, 10 },
- X {"BTJO", KOC_opcode, 2, 13 },
- X {"BTJOP", KOC_opcode, 2, 15 },
- X {"BTJZ", KOC_opcode, 2, 17 },
- X {"BTJZP", KOC_opcode, 2, 19 },
- X {"BYTE", KOC_BDEF, 0, 0 },
- X {"CALL", KOC_opcode, 3, 21 },
- X {"CHARDEF", KOC_CHDEF, 0, 0 },
- X {"CHARSET", KOC_CHSET, 0, 0 },
- X {"CHARUSE", KOC_CHUSE, 0, 0 },
- X {"CHD", KOC_CHDEF, 0, 0 },
- X {"CLR", KOC_opcode, 1, 24 },
- X {"CLRC", KOC_opcode, 1, 25 },
- X {"CMP", KOC_opcode, 2, 26 },
- X {"CMPA", KOC_opcode, 3, 28 },
- X {"DAC", KOC_opcode, 2, 31 },
- X {"DB", KOC_BDEF, 0, 0 },
- X {"DEC", KOC_opcode, 1, 33 },
- X {"DECD", KOC_opcode, 1, 34 },
- X {"DINT", KOC_opcode, 1, 35 },
- X {"DJNZ", KOC_opcode, 1, 36 },
- X {"DSB", KOC_opcode, 2, 37 },
- X {"DW", KOC_WDEF, 0, 0 },
- X {"EINT", KOC_opcode, 1, 39 },
- X {"ELSE", KOC_ELSE, 0, 0 },
- X {"END", KOC_END, 0, 0 },
- X {"ENDI", KOC_ENDI, 0, 0 },
- X {"EQU", KOC_EQU, 0, 0 },
- X {"FCB", KOC_BDEF, 0, 0 },
- X {"FCC", KOC_SDEF, 0, 0 },
- X {"FDB", KOC_WDEF, 0, 0 },
- X {"IDLE", KOC_opcode, 1, 40 },
- X {"IF", KOC_IF, 0, 0 },
- X {"INC", KOC_opcode, 1, 41 },
- X {"INCL", KOC_INCLUDE, 0, 0 },
- X {"INCLUDE", KOC_INCLUDE, 0, 0 },
- X {"INV", KOC_opcode, 1, 42 },
- X {"JC", KOC_opcode, 1, 43 },
- X {"JEQ", KOC_opcode, 1, 44 },
- X {"JGE", KOC_opcode, 1, 45 },
- X {"JGT", KOC_opcode, 1, 46 },
- X {"JHS", KOC_opcode, 1, 47 },
- X {"JL", KOC_opcode, 1, 48 },
- X {"JLT", KOC_opcode, 1, 49 },
- X {"JMP", KOC_opcode, 1, 50 },
- X {"JN", KOC_opcode, 1, 51 },
- X {"JNC", KOC_opcode, 1, 52 },
- X {"JNE", KOC_opcode, 1, 53 },
- X {"JNZ", KOC_opcode, 1, 54 },
- X {"JP", KOC_opcode, 1, 55 },
- X {"JPZ", KOC_opcode, 1, 56 },
- X {"JZ", KOC_opcode, 1, 57 },
- X {"LDA", KOC_opcode, 3, 58 },
- X {"LDSP", KOC_opcode, 1, 61 },
- X {"MOV", KOC_opcode, 2, 62 },
- X {"MOVD", KOC_opcode, 3, 64 },
- X {"MOVP", KOC_opcode, 2, 67 },
- X {"MPY", KOC_opcode, 2, 69 },
- X {"NOP", KOC_opcode, 1, 71 },
- X {"OR", KOC_opcode, 2, 72 },
- X {"ORG", KOC_ORG, 0, 0 },
- X {"ORP", KOC_opcode, 2, 74 },
- X {"POP", KOC_opcode, 2, 76 },
- X {"PUSH", KOC_opcode, 2, 78 },
- X {"RESERVE", KOC_RESM, 0, 0 },
- X {"RETI", KOC_opcode, 1, 80 },
- X {"RETS", KOC_opcode, 1, 81 },
- X {"RL", KOC_opcode, 1, 82 },
- X {"RLC", KOC_opcode, 1, 83 },
- X {"RMB", KOC_RESM, 0, 0 },
- X {"RR", KOC_opcode, 1, 84 },
- X {"RRC", KOC_opcode, 1, 85 },
- X {"SBB", KOC_opcode, 2, 86 },
- X {"SET", KOC_SET, 0, 0 },
- X {"SETC", KOC_opcode, 1, 88 },
- X {"STA", KOC_opcode, 3, 89 },
- X {"STRING", KOC_SDEF, 0, 0 },
- X {"STSP", KOC_opcode, 1, 92 },
- X {"SUB", KOC_opcode, 2, 93 },
- X {"SWAP", KOC_opcode, 1, 95 },
- X {"TRAP", KOC_opcode, 1, 96 },
- X {"TSTA", KOC_opcode, 1, 97 },
- X {"TSTB", KOC_opcode, 1, 98 },
- X {"WORD", KOC_WDEF, 0, 0 },
- X {"XCHB", KOC_opcode, 1, 99 },
- X {"XOR", KOC_opcode, 2, 100 },
- X {"XORP", KOC_opcode, 2, 102 },
- X { "", 0, 0, 0 }};
- X
- Xstruct opsynt ostab[NUMSYNBLK+1]
- X = {
- X/* invalid 0 */ { 0, 1, 0 },
- X/* invalid 1 */ { 0xffff, 1, 1 },
- X/* ADC 2 */ { ST_EXPR2, 4, 2 },
- X/* ADC 3 */ { ST_IEXPR2, 3, 6 },
- X/* ADD 4 */ { ST_EXPR2, 4, 9 },
- X/* ADD 5 */ { ST_IEXPR2, 3, 13 },
- X/* AND 6 */ { ST_EXPR2, 4, 16 },
- X/* AND 7 */ { ST_IEXPR2, 3, 20 },
- X/* ANDP 8 */ { ST_EXPR2, 2, 23 },
- X/* ANDP 9 */ { ST_IEXPR2, 1, 25 },
- X/* BR 10 */ { ST_EXPR, 1, 26 },
- X/* BR 11 */ { ST_INDEX, 1, 27 },
- X/* BR 12 */ { ST_RINDIR, 1, 28 },
- X/* BTJO 13 */ { ST_EXPR3, 4, 29 },
- X/* BTJO 14 */ { ST_IEXPR3, 3, 33 },
- X/* BTJOP 15 */ { ST_EXPR3, 2, 36 },
- X/* BTJOP 16 */ { ST_IEXPR3, 1, 38 },
- X/* BTJZ 17 */ { ST_EXPR3, 4, 39 },
- X/* BTJZ 18 */ { ST_IEXPR3, 3, 43 },
- X/* BTJZP 19 */ { ST_EXPR3, 2, 46 },
- X/* BTJZP 20 */ { ST_IEXPR3, 1, 48 },
- X/* CALL 21 */ { ST_EXPR, 1, 49 },
- X/* CALL 22 */ { ST_INDEX, 1, 50 },
- X/* CALL 23 */ { ST_RINDIR, 1, 51 },
- X/* CLR 24 */ { ST_EXPR, 3, 52 },
- X/* CLRC 25 */ { ST_INH, 1, 55 },
- X/* CMP 26 */ { ST_EXPR2, 4, 56 },
- X/* CMP 27 */ { ST_IEXPR2, 3, 60 },
- X/* CMPA 28 */ { ST_EXPR, 1, 63 },
- X/* CMPA 29 */ { ST_INDEX, 1, 64 },
- X/* CMPA 30 */ { ST_RINDIR, 1, 65 },
- X/* DAC 31 */ { ST_EXPR2, 4, 66 },
- X/* DAC 32 */ { ST_IEXPR2, 3, 70 },
- X/* DEC 33 */ { ST_EXPR, 3, 73 },
- X/* DECD 34 */ { ST_EXPR, 3, 76 },
- X/* DINT 35 */ { ST_INH, 1, 79 },
- X/* DJNZ 36 */ { ST_EXPR2, 3, 80 },
- X/* DSB 37 */ { ST_EXPR2, 4, 83 },
- X/* DSB 38 */ { ST_IEXPR2, 3, 87 },
- X/* EINT 39 */ { ST_INH, 1, 90 },
- X/* IDLE 40 */ { ST_INH, 1, 91 },
- X/* INC 41 */ { ST_EXPR, 3, 92 },
- X/* INV 42 */ { ST_EXPR, 3, 95 },
- X/* JC 43 */ { ST_EXPR, 1, 98 },
- X/* JEQ 44 */ { ST_EXPR, 1, 99 },
- X/* JGE 45 */ { ST_EXPR, 1, 100 },
- X/* JGT 46 */ { ST_EXPR, 1, 101 },
- X/* JHS 47 */ { ST_EXPR, 1, 102 },
- X/* JL 48 */ { ST_EXPR, 1, 103 },
- X/* JLT 49 */ { ST_EXPR, 1, 104 },
- X/* JMP 50 */ { ST_EXPR, 1, 105 },
- X/* JN 51 */ { ST_EXPR, 1, 106 },
- X/* JNC 52 */ { ST_EXPR, 1, 107 },
- X/* JNE 53 */ { ST_EXPR, 1, 108 },
- X/* JNZ 54 */ { ST_EXPR, 1, 109 },
- X/* JP 55 */ { ST_EXPR, 1, 110 },
- X/* JPZ 56 */ { ST_EXPR, 1, 111 },
- X/* JZ 57 */ { ST_EXPR, 1, 112 },
- X/* LDA 58 */ { ST_EXPR, 1, 113 },
- X/* LDA 59 */ { ST_INDEX, 1, 114 },
- X/* LDA 60 */ { ST_RINDIR, 1, 115 },
- X/* LDSP 61 */ { ST_INH, 1, 116 },
- X/* MOV 62 */ { ST_EXPR2, 7, 117 },
- X/* MOV 63 */ { ST_IEXPR2, 3, 124 },
- X/* MOVD 64 */ { ST_EXPR2, 1, 127 },
- X/* MOVD 65 */ { ST_IEXPR2, 1, 128 },
- X/* MOVD 66 */ { ST_IMMIND, 1, 129 },
- X/* MOVP 67 */ { ST_EXPR2, 4, 130 },
- X/* MOVP 68 */ { ST_IEXPR2, 1, 134 },
- X/* MPY 69 */ { ST_EXPR2, 4, 135 },
- X/* MPY 70 */ { ST_IEXPR2, 3, 139 },
- X/* NOP 71 */ { ST_INH, 1, 142 },
- X/* OR 72 */ { ST_EXPR2, 4, 143 },
- X/* OR 73 */ { ST_IEXPR2, 3, 147 },
- X/* ORP 74 */ { ST_EXPR2, 2, 150 },
- X/* ORP 75 */ { ST_IEXPR2, 1, 152 },
- X/* POP 76 */ { ST_EXPR, 3, 153 },
- X/* POP 77 */ { ST_STATUS, 1, 156 },
- X/* PUSH 78 */ { ST_EXPR, 3, 157 },
- X/* PUSH 79 */ { ST_STATUS, 1, 160 },
- X/* RETI 80 */ { ST_INH, 1, 161 },
- X/* RETS 81 */ { ST_INH, 1, 162 },
- X/* RL 82 */ { ST_EXPR, 3, 163 },
- X/* RLC 83 */ { ST_EXPR, 3, 166 },
- X/* RR 84 */ { ST_EXPR, 3, 169 },
- X/* RRC 85 */ { ST_EXPR, 3, 172 },
- X/* SBB 86 */ { ST_EXPR2, 4, 175 },
- X/* SBB 87 */ { ST_IEXPR2, 3, 179 },
- X/* SETC 88 */ { ST_INH, 1, 182 },
- X/* STA 89 */ { ST_EXPR, 1, 183 },
- X/* STA 90 */ { ST_INDEX, 1, 184 },
- X/* STA 91 */ { ST_RINDIR, 1, 185 },
- X/* STSP 92 */ { ST_INH, 1, 186 },
- X/* SUB 93 */ { ST_EXPR2, 4, 187 },
- X/* SUB 94 */ { ST_IEXPR2, 3, 191 },
- X/* SWAP 95 */ { ST_EXPR, 3, 194 },
- X/* TRAP 96 */ { ST_EXPR, 1, 197 },
- X/* TSTA 97 */ { ST_INH, 1, 198 },
- X/* TSTB 98 */ { ST_INH, 1, 199 },
- X/* XCHB 99 */ { ST_EXPR, 3, 200 },
- X/* XOR 100 */ { ST_EXPR2, 4, 203 },
- X/* XOR 101 */ { ST_IEXPR2, 3, 207 },
- X/* XORP 102 */ { ST_EXPR2, 2, 210 },
- X/* XORP 103 */ { ST_IEXPR2, 1, 212 },
- X { 0, 0, 0 } };
- X
- Xstruct igel igtab[NUMDIFFOP+1]
- X = {
- X/* invalid 0 */ { 0 , 0,
- X "[Xnullentry" },
- X/* invalid 1 */ { 0 , 0,
- X "[Xinvalid opcode" },
- X/* ADC 2 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "69;" },
- X/* ADC 3 */ { DSTMASK , DSTA,
- X "19;[1=].8I;" },
- X/* ADC 4 */ { DSTMASK , DSTB,
- X "39;[1=].8I;" },
- X/* ADC 5 */ { 0 , 0,
- X "49;[1=].8I;[2=].8I;" },
- X/* ADC 6 */ { DSTMASK , DSTA,
- X "29;[1=];" },
- X/* ADC 7 */ { DSTMASK , DSTB,
- X "59;[1=];" },
- X/* ADC 8 */ { 0 , 0,
- X "79;[1=];[2=].8I;" },
- X/* ADD 9 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "68;" },
- X/* ADD 10 */ { DSTMASK , DSTA,
- X "18;[1=].8I;" },
- X/* ADD 11 */ { DSTMASK , DSTB,
- X "38;[1=].8I;" },
- X/* ADD 12 */ { 0 , 0,
- X "48;[1=].8I;[2=].8I;" },
- X/* ADD 13 */ { DSTMASK , DSTA,
- X "28;[1=];" },
- X/* ADD 14 */ { DSTMASK , DSTB,
- X "58;[1=];" },
- X/* ADD 15 */ { 0 , 0,
- X "78;[1=];[2=].8I;" },
- X/* AND 16 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "63;" },
- X/* AND 17 */ { DSTMASK , DSTA,
- X "13;[1=].8I;" },
- X/* AND 18 */ { DSTMASK , DSTB,
- X "33;[1=].8I;" },
- X/* AND 19 */ { 0 , 0,
- X "43;[1=].8I;[2=].8I;" },
- X/* AND 20 */ { DSTMASK , DSTA,
- X "23;[1=];" },
- X/* AND 21 */ { DSTMASK , DSTB,
- X "53;[1=];" },
- X/* AND 22 */ { 0 , 0,
- X "73;[1=];[2=].8I;" },
- X/* ANDP 23 */ { SRCMASK , SRCA,
- X "83;[2=].100-.8I;" },
- X/* ANDP 24 */ { SRCMASK , SRCB,
- X "93;[2=].100-.8I;" },
- X/* ANDP 25 */ { 0 , 0,
- X "a3;[1=];[2=].100-.8I;" },
- X/* BR 26 */ { 0 , 0,
- X "8c;[1=]x" },
- X/* BR 27 */ { SRCMASK , SRCB,
- X "ac;[1=]x" },
- X/* BR 28 */ { 0 , 0,
- X "9c;[1=].8I;" },
- X/* BTJO 29 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "66;[3=].Q.1+-r" },
- X/* BTJO 30 */ { DSTMASK , DSTA,
- X "16;[1=].8I;[3=].Q.1+-r" },
- X/* BTJO 31 */ { DSTMASK , DSTB,
- X "36;[1=].8I;[3=].Q.1+-r" },
- X/* BTJO 32 */ { 0 , 0,
- X "46;[1=].8I;[2=].8I;[3=].Q.1+-r" },
- X/* BTJO 33 */ { DSTMASK , DSTA,
- X "26;[1=];[3=].Q.1+-r" },
- X/* BTJO 34 */ { DSTMASK , DSTB,
- X "56;[1=];[3=].Q.1+-r" },
- X/* BTJO 35 */ { 0 , 0,
- X "76;[1=];[2=].8I;[3=].Q.1+-r" },
- X/* BTJOP 36 */ { SRCMASK , SRCA,
- X "86;[2=].100-.8I;[3=].Q.1+-r" },
- X/* BTJOP 37 */ { SRCMASK , SRCB,
- X "96;[2=].100-.8I;[3=].Q.1+-r" },
- X/* BTJOP 38 */ { 0 , 0,
- X "a6;[1=];[2=].100-.8I;[3=].Q.1+-r" },
- X/* BTJZ 39 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "67;[3=].Q.1+-r" },
- X/* BTJZ 40 */ { DSTMASK , DSTA,
- X "17;[1=].8I;[3=].Q.1+-r" },
- X/* BTJZ 41 */ { DSTMASK , DSTB,
- X "37;[1=].8I;[3=].Q.1+-r" },
- X/* BTJZ 42 */ { 0 , 0,
- X "47;[1=].8I;[2=].8I;[3=].Q.1+-r" },
- X/* BTJZ 43 */ { DSTMASK , DSTA,
- X "27;[1=];[3=].Q.1+-r" },
- X/* BTJZ 44 */ { DSTMASK , DSTB,
- X "57;[1=];[3=].Q.1+-r" },
- X/* BTJZ 45 */ { 0 , 0,
- X "77;[1=];[2=].8I;[3=].Q.1+-r" },
- X/* BTJZP 46 */ { SRCMASK , SRCA,
- X "87;[2=].100-.8I;[3=].Q.1+-r" },
- X/* BTJZP 47 */ { SRCMASK , SRCB,
- X "97;[2=].100-.8I;[3=].Q.1+-r" },
- X/* BTJZP 48 */ { 0 , 0,
- X "a7;[1=];[2=].100-.8I;[3=].Q.1+-r" },
- X/* CALL 49 */ { 0 , 0,
- X "8e;[1=]x" },
- X/* CALL 50 */ { SRCMASK , SRCB,
- X "ae;[1=]x" },
- X/* CALL 51 */ { 0 , 0,
- X "9e;[1=].8I;" },
- X/* CLR 52 */ { DSTMASK , DSTA,
- X "b5;" },
- X/* CLR 53 */ { DSTMASK , DSTB,
- X "c5;" },
- X/* CLR 54 */ { 0 , 0,
- X "d5;[1=].8I;" },
- X/* CLRC 55 */ { 0 , 0,
- X "b0;" },
- X/* CMP 56 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6d;" },
- X/* CMP 57 */ { DSTMASK , DSTA,
- X "1d;[1=].8I;" },
- X/* CMP 58 */ { DSTMASK , DSTB,
- X "3d;[1=].8I;" },
- X/* CMP 59 */ { 0 , 0,
- X "4d;[1=].8I;[2=].8I;" },
- X/* CMP 60 */ { DSTMASK , DSTA,
- X "2d;[1=];" },
- X/* CMP 61 */ { DSTMASK , DSTB,
- X "5d;[1=];" },
- X/* CMP 62 */ { 0 , 0,
- X "7d;[1=];[2=].8I;" },
- X/* CMPA 63 */ { 0 , 0,
- X "8d;[1=]x" },
- X/* CMPA 64 */ { SRCMASK , SRCB,
- X "ad;[1=]x" },
- X/* CMPA 65 */ { 0 , 0,
- X "9d;[1=].8I;" },
- X/* DAC 66 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6e;" },
- X/* DAC 67 */ { DSTMASK , DSTA,
- X "1e;[1=].8I;" },
- X/* DAC 68 */ { DSTMASK , DSTB,
- X "3e;[1=].8I;" },
- X/* DAC 69 */ { 0 , 0,
- X "4e;[1=].8I;[2=].8I;" },
- X/* DAC 70 */ { DSTMASK , DSTA,
- X "2e;[1=];" },
- X/* DAC 71 */ { DSTMASK , DSTB,
- X "5e;[1=];" },
- X/* DAC 72 */ { 0 , 0,
- X "7e;[1=];[2=].8I;" },
- X/* DEC 73 */ { DSTMASK , DSTA,
- X "b2;" },
- X/* DEC 74 */ { DSTMASK , DSTB,
- X "c2;" },
- X/* DEC 75 */ { 0 , 0,
- X "d2;[1=].8I;" },
- X/* DECD 76 */ { DSTMASK , DSTA,
- X "bb;" },
- X/* DECD 77 */ { DSTMASK , DSTB,
- X "cb;" },
- X/* DECD 78 */ { 0 , 0,
- X "db;[1=].8I;" },
- X/* DINT 79 */ { 0 , 0,
- X "06;" },
- X/* DJNZ 80 */ { SRCMASK , SRCA,
- X "ba;[2=].Q.1+-r" },
- X/* DJNZ 81 */ { SRCMASK , SRCB,
- X "ca;[2=].Q.1+-r" },
- X/* DJNZ 82 */ { 0 , 0,
- X "da;[1=].8I;[2=].Q.1+-r" },
- X/* DSB 83 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6f;" },
- X/* DSB 84 */ { DSTMASK , DSTA,
- X "1f;[1=].8I;" },
- X/* DSB 85 */ { DSTMASK , DSTB,
- X "3f;[1=].8I;" },
- X/* DSB 86 */ { 0 , 0,
- X "4f;[1=].8I;[2=].8I;" },
- X/* DSB 87 */ { DSTMASK , DSTA,
- X "2f;[1=];" },
- X/* DSB 88 */ { DSTMASK , DSTB,
- X "5f;[1=];" },
- X/* DSB 89 */ { 0 , 0,
- X "7f;[1=];[2=].8I;" },
- X/* EINT 90 */ { 0 , 0,
- X "05;" },
- X/* IDLE 91 */ { 0 , 0,
- X "01;" },
- X/* INC 92 */ { DSTMASK , DSTA,
- X "b3;" },
- X/* INC 93 */ { DSTMASK , DSTB,
- X "c3;" },
- X/* INC 94 */ { 0 , 0,
- X "d3;[1=].8I;" },
- X/* INV 95 */ { DSTMASK , DSTA,
- X "b4;" },
- X/* INV 96 */ { DSTMASK , DSTB,
- X "c4;" },
- X/* INV 97 */ { 0 , 0,
- X "d4;[1=].8I;" },
- X/* JC 98 */ { 0 , 0,
- X "e3;[1=].Q.1+-r" },
- X/* JEQ 99 */ { 0 , 0,
- X "e2;[1=].Q.1+-r" },
- X/* JGE 100 */ { 0 , 0,
- X "e5;[1=].Q.1+-r" },
- X/* JGT 101 */ { 0 , 0,
- X "e4;[1=].Q.1+-r" },
- X/* JHS 102 */ { 0 , 0,
- X "e3;[1=].Q.1+-r" },
- X/* JL 103 */ { 0 , 0,
- X "e7;[1=].Q.1+-r" },
- X/* JLT 104 */ { 0 , 0,
- X "e1;[1=].Q.1+-r" },
- X/* JMP 105 */ { 0 , 0,
- X "e0;[1=].Q.1+-r" },
- X/* JN 106 */ { 0 , 0,
- X "e1;[1=].Q.1+-r" },
- X/* JNC 107 */ { 0 , 0,
- X "e7;[1=].Q.1+-r" },
- X/* JNE 108 */ { 0 , 0,
- X "e6;[1=].Q.1+-r" },
- X/* JNZ 109 */ { 0 , 0,
- X "e6;[1=].Q.1+-r" },
- X/* JP 110 */ { 0 , 0,
- X "e4;[1=].Q.1+-r" },
- X/* JPZ 111 */ { 0 , 0,
- X "e5;[1=].Q.1+-r" },
- X/* JZ 112 */ { 0 , 0,
- X "e2;[1=].Q.1+-r" },
- X/* LDA 113 */ { 0 , 0,
- X "8a;[1=]x" },
- X/* LDA 114 */ { SRCMASK , SRCB,
- X "aa;[1=]x" },
- X/* LDA 115 */ { 0 , 0,
- X "9a;[1=].8I;" },
- X/* LDSP 116 */ { 0 , 0,
- X "0d;" },
- X/* MOV 117 */ { SRCMASK|DSTMASK , SRCA|DSTB,
- X "c0;" },
- X/* MOV 118 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "62;" },
- X/* MOV 119 */ { DSTMASK , DSTA,
- X "12;[1=].8I;" },
- X/* MOV 120 */ { SRCMASK , SRCA,
- X "d0;[2=].8I;" },
- X/* MOV 121 */ { SRCMASK , SRCB,
- X "d1;[2=].8I;" },
- X/* MOV 122 */ { DSTMASK , DSTB,
- X "32;[1=].8I;" },
- X/* MOV 123 */ { 0 , 0,
- X "42;[1=].8I;[2=].8I;" },
- X/* MOV 124 */ { DSTMASK , DSTA,
- X "22;[1=];" },
- X/* MOV 125 */ { DSTMASK , DSTB,
- X "52;[1=];" },
- X/* MOV 126 */ { 0 , 0,
- X "72;[1=];[2=].8I;" },
- X/* MOVD 127 */ { 0 , 0,
- X "98;[1=].8I;[2=].8I;" },
- X/* MOVD 128 */ { 0 , 0,
- X "88;[1=]x[2=].8I;" },
- X/* MOVD 129 */ { SRCMASK , SRCB,
- X "a8;[1=]x[2=].8I;" },
- X/* MOVP 130 */ { SRCMASK , SRCA,
- X "82;[2=].100-.8I;" },
- X/* MOVP 131 */ { SRCMASK , SRCB,
- X "92;[2=].100-.8I;" },
- X/* MOVP 132 */ { DSTMASK , DSTA,
- X "80;[1=].100-.8I;" },
- X/* MOVP 133 */ { DSTMASK , DSTB,
- X "91;[1=].100-.8I;" },
- X/* MOVP 134 */ { 0 , 0,
- X "a2;[1=];[2=].100-.8I;" },
- X/* MPY 135 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6c;" },
- X/* MPY 136 */ { DSTMASK , DSTA,
- X "1c;[1=].8I;" },
- X/* MPY 137 */ { DSTMASK , DSTB,
- X "3c;[1=].8I;" },
- X/* MPY 138 */ { 0 , 0,
- X "4c;[1=].8I;[2=].8I;" },
- X/* MPY 139 */ { DSTMASK , DSTA,
- X "2c;[1=];" },
- X/* MPY 140 */ { DSTMASK , DSTB,
- X "5c;[1=];" },
- X/* MPY 141 */ { 0 , 0,
- X "7c;[1=];[2=].8I;" },
- X/* NOP 142 */ { 0 , 0,
- X "00;" },
- X/* OR 143 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "64;" },
- X/* OR 144 */ { DSTMASK , DSTA,
- X "14;[1=].8I;" },
- X/* OR 145 */ { DSTMASK , DSTB,
- X "34;[1=].8I;" },
- X/* OR 146 */ { 0 , 0,
- X "44;[1=].8I;[2=].8I;" },
- X/* OR 147 */ { DSTMASK , DSTA,
- X "24;[1=];" },
- X/* OR 148 */ { DSTMASK , DSTB,
- X "54;[1=];" },
- X/* OR 149 */ { 0 , 0,
- X "74;[1=];[2=].8I;" },
- X/* ORP 150 */ { SRCMASK , SRCA,
- X "84;[2=].100-.8I;" },
- X/* ORP 151 */ { SRCMASK , SRCB,
- X "94;[2=].100-.8I;" },
- X/* ORP 152 */ { 0 , 0,
- X "a4;[1=];[2=].100-.8I;" },
- X/* POP 153 */ { DSTMASK , DSTA,
- X "b9;" },
- X/* POP 154 */ { DSTMASK , DSTB,
- X "c9;" },
- X/* POP 155 */ { 0 , 0,
- X "d9;[1=].8I;" },
- X/* POP 156 */ { 0 , 0,
- X "08;" },
- X/* PUSH 157 */ { DSTMASK , DSTA,
- X "b8;" },
- X/* PUSH 158 */ { DSTMASK , DSTB,
- X "c8;" },
- X/* PUSH 159 */ { 0 , 0,
- X "d8;[1=].8I;" },
- X/* PUSH 160 */ { 0 , 0,
- X "0e;" },
- X/* RETI 161 */ { 0 , 0,
- X "0b;" },
- X/* RETS 162 */ { 0 , 0,
- X "0a;" },
- X/* RL 163 */ { DSTMASK , DSTA,
- X "be;" },
- X/* RL 164 */ { DSTMASK , DSTB,
- X "ce;" },
- X/* RL 165 */ { 0 , 0,
- X "de;[1=].8I;" },
- X/* RLC 166 */ { DSTMASK , DSTA,
- X "bf;" },
- X/* RLC 167 */ { DSTMASK , DSTB,
- X "cf;" },
- X/* RLC 168 */ { 0 , 0,
- X "df;[1=].8I;" },
- X/* RR 169 */ { DSTMASK , DSTA,
- X "bc;" },
- X/* RR 170 */ { DSTMASK , DSTB,
- X "cc;" },
- X/* RR 171 */ { 0 , 0,
- X "dc;[1=].8I;" },
- X/* RRC 172 */ { DSTMASK , DSTA,
- X "bd;" },
- X/* RRC 173 */ { DSTMASK , DSTB,
- X "cd;" },
- X/* RRC 174 */ { 0 , 0,
- X "dd;[1=].8I;" },
- X/* SBB 175 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6b;" },
- X/* SBB 176 */ { DSTMASK , DSTA,
- X "1b;[1=].8I;" },
- X/* SBB 177 */ { DSTMASK , DSTB,
- X "3b;[1=].8I;" },
- X/* SBB 178 */ { 0 , 0,
- X "4b;[1=].8I;[2=].8I;" },
- X/* SBB 179 */ { DSTMASK , DSTA,
- X "2b;[1=];" },
- X/* SBB 180 */ { DSTMASK , DSTB,
- X "5b;[1=];" },
- X/* SBB 181 */ { 0 , 0,
- X "7b;[1=];[2=].8I;" },
- X/* SETC 182 */ { 0 , 0,
- X "07;" },
- X/* STA 183 */ { 0 , 0,
- X "8b;[1=]x" },
- X/* STA 184 */ { SRCMASK , SRCB,
- X "ab;[1=]x" },
- X/* STA 185 */ { 0 , 0,
- X "9b;[1=].8I;" },
- X/* STSP 186 */ { 0 , 0,
- X "09;" },
- X/* SUB 187 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "6a;" },
- X/* SUB 188 */ { DSTMASK , DSTA,
- X "1a;[1=].8I;" },
- X/* SUB 189 */ { DSTMASK , DSTB,
- X "3a;[1=].8I;" },
- X/* SUB 190 */ { 0 , 0,
- X "4a;[1=].8I;[2=].8I;" },
- X/* SUB 191 */ { DSTMASK , DSTA,
- X "2a;[1=];" },
- X/* SUB 192 */ { DSTMASK , DSTB,
- X "5a;[1=];" },
- X/* SUB 193 */ { 0 , 0,
- X "7a;[1=];[2=].8I;" },
- X/* SWAP 194 */ { DSTMASK , DSTA,
- X "b7;" },
- X/* SWAP 195 */ { DSTMASK , DSTB,
- X "c7;" },
- X/* SWAP 196 */ { 0 , 0,
- X "d7;[1=].8I;" },
- X/* TRAP 197 */ { 0 , 0,
- X "ff.[1=].5I-~.e8<T!;" },
- X/* TSTA 198 */ { 0 , 0,
- X "b0;" },
- X/* TSTB 199 */ { 0 , 0,
- X "c1;" },
- X/* XCHB 200 */ { DSTMASK , DSTA,
- X "b6;" },
- X/* XCHB 201 */ { DSTMASK , DSTB,
- X "c6;" },
- X/* XCHB 202 */ { 0 , 0,
- X "d6;[1=].8I;" },
- X/* XOR 203 */ { SRCMASK|DSTMASK , SRCB|DSTA,
- X "65;" },
- X/* XOR 204 */ { DSTMASK , DSTA,
- X "15;[1=].8I;" },
- X/* XOR 205 */ { DSTMASK , DSTB,
- X "35;[1=].8I;" },
- X/* XOR 206 */ { 0 , 0,
- X "45;[1=].8I;[2=].8I;" },
- X/* XOR 207 */ { DSTMASK , DSTA,
- X "25;[1=];" },
- X/* XOR 208 */ { DSTMASK , DSTB,
- X "55;[1=];" },
- X/* XOR 209 */ { 0 , 0,
- X "75;[1=];[2=].8I;" },
- X/* XORP 210 */ { SRCMASK , SRCA,
- X "85;[2=].100-.8I;" },
- X/* XORP 211 */ { SRCMASK , SRCB,
- X "95;[2=].100-.8I;" },
- X/* XORP 212 */ { 0 , 0,
- X "a5;[1=];[2=].100-.8I;" },
- X { 0,0,""} };
- X/* end fraptabdef.c */
- SHAR_EOF
- true || echo 'restore of as7000.y failed'
- fi
- exit 0
-