.IIF NDF RSX RSX = 1 ;Assume RSX ;01+ .TITLE CC206 .ident /X01.16/ .NLIST BEX, CND .ENABL LC, GBL .LIST MEB ;01 - ; ; C COMPILER ; CODE TABLES ; ; VERSION X01 ; ; DAVID G. CONROY 01-APR-78 ; ; UPDATED: ; ; DGC01 DAVID G. CONROY 28-SEP-79 ; CHANGE NAMES OF LIBRARY GLOBALS TO PREVENT ; CLASHES WITH DEC PRODUCTS. ; ; Edit history ; 01 04-Mar-80 MM Added RT11 support ; 02 17-Mar-80 MM Library names use tidle to get rad50 dollar ; 03 20-May-80 JAM Fixed error in left shift ; 04 02-Jun-80 MM Preliminary EIS support ; 05 23-Jul-80 MM Conditionalized SXT (not on 11/20, /05). ; Hacked "br .+n" as it seems that the AS assembler ; may do it wrong. ; 06 15-Dec-80 MM Changed XOR ; 07 23-Feb-81 MM Added inline EIS. ; 08 05-Mar-81 MM Added first attempt at floating-point. (inline only) ; 09 05-Jun-81 MM Fixed ashc ; u1 25-Aug-81 CCG Changed default mode to float from double. ; Removed non-FPU floating point support. ; u2 08-Sep-81 CCG Added full support for EIS and FPU ; Added automatic floating point mode select ; u3 11-Sep-81 CCG General enhancements and bug fixes. ; u4 19-Oct-81 CCG Fixed bug in "long any long any" addition/subtraction. ; u5 04-Dec-81 CCG Removed bug-ridden float <-> long code in ETAB. ; u6 14-Dec-81 CCG General rewrite of FPU code. Value of assignments ; changed to type of left. ; 10 10-Feb-82 MM Merged sources, fixed (?) floating indirect per CCG ; 11 11-Feb-82 MM/CCG Missing in OP.DVA in RTAB ; u7 15-Apr-82 CCG Fixed floating indirect again. ; Fixed CVR uns <- int. ; Fixed uns % int, uns / int, uns %= int, uns /= int. ; Added IND long, flt to STAB. ; Note: cannot use EIS for uns DIV, MOD. Divisors with ; sign bit set produce signed result, instead of uns. ; u8 16-Apr-82 CCG Removed constant powers of 2 from MUL, DIV, MOD tables ; since they are now turned into shifts by the optimizer ; Improved ASH code, fixed random bugs ; Fixed register allocation bug in CVR flt, dbl ; u9 05-May-82 CCG Fix bug in float double to long conversion ; Optimized convert real to stack ; u10 21-Jul-82 CCG Added support for OP.MLL and OP.DLL, removed OP.CVM. ; 12 31-Jul-82 MM Put "non-eis" code back in -- I hope ; 13 02-Aug-82 CCG/MM Fixed type of mov ; u11 24-Sep-82 CCG Added convert float or double to unsigned. ; u12 10-Dec-82 CCG Improved LNG shifting. Added LNG CON16 shifts. ; 14 30-Jan-83 MM Merged Unimation edits u10 and u12 into Dec sources ; 15 09-Feb-83 MM Bug in 14. ; 16 23-Feb-83 CCG (Unimation U13) fix bug in assignment using float * ; ; End-edit .IIF NDF C$$SXT C$$SXT = 0 ; No SXT ;05 .GLOBL OP0 .GLOBL OP1 .GLOBL STAB .GLOBL TTAB .GLOBL RTAB .GLOBL CTAB .GLOBL ETAB .GLOBL GO.TO ; For IF/THEN/ELSE macro ;07 ; ; MACROS FOR BUILDING THE CODE TABLES ; THEY DO LITTLE WORK ; THEIR MAIN FUNCTION IS TO REDUCE TYPING ; .MACRO TABEND .WORD 0 .ENDM .MACRO TAB STR,TL,KL,TR,KR .WORD STR .BYTE TY.'TL,KL,TY.'TR,KR .ENDM ; ; MACROS OPERATIONS IN THE CODE STRINGS ARE INDICATED BY NEGATIVE ; BYTES. THE ORDER OF THESE THINGS IS CRITICAL IN THAT THEY TRACK ; A JUMP TABLE IN CEXPR. ; M = -1 ;[M] SET MODULO RETURN F = -2 ;[F] SET FUNCTION RETURN R = -3 ;[R] CURRENT REGISTER R.1 = -4 ;[R+1] CURRENT REGISTER + 1 AL = -5 ;[AL] ADDRESS OF LEFT ALN = -6 ;[ALN] ADDRESS OF LEFT, NO SIDE EFFECT AR = -7 ;[AR] ADDRESS OF RIGHT ARN = -10 ;[ARN] ADDRESS OF RIGHT, NO SIDE EFFECT OP.0 = -11 ;[OP0] OPCODE OP.1 = -12 ;[OP1] OPCODE AL.2 = -13 ;[AL+2] ADDRESS OF LEFT, LONG AR.2 = -14 ;[AR+2] ADDRESS OF RIGHT, LONG TL = -15 ;[TL] TYPE OF LEFT T = -16 ;[T] TYPE OF RIGHT OR LEFT SRVA = -17 ;[SRVA] SET RIGHT VALUE ANYWHERE SRV = -20 ;[SRV] SET RIGHT VALUE SRAA = -21 ;[SRAA] SET RIGHT ADDRESS ANYWHERE SRA = -22 ;[SRA] SET RIGHT ADDRESS SLVA = -23 ;[SLVA] SET LEFT VALUE ANYWHERE SLV = -24 ;[SLV] SET LEFT VALUE SLAA = -25 ;[SLAA] SET LEFT ADDRESS ANYWHERE SLA = -26 ;[SLA] SET LEFT ADDRESS SLAC = -27 ;[SLAC] SET LEFT ADDRESS CURRENT REG. LL = -30 ;[LL] LOAD LEFT LL.1 = -31 ;[LL+1] LOAD LEFT INTO [R+1] LR = -32 ;[LR] LOAD RIGHT PL = -33 ;[PL] PUSH LEFT PLA = -34 ;[PLA] PUSH LEFT ADDRESS PR = -35 ;[PR] PUSH RIGHT V = -36 ;[V] ADC OR SBC FOR LONGS F.1 = -37 ;[F.1] RESULT VALUE IN R1 AL.4 = -40 ;[AL.4] ADDRESS OF LEFT, DOUBLE AL.6 = -41 ;[AL.6] ADDRESS OF LEFT, DOUBLE LL.O = -42 ;[LL.O] LOAD LEFT INTO ODD ;u2+ LLP.O = -43 ;[LLP.O] LOAD LEFT INTO ODD OF PAIR LLP.E = -44 ;[LLP.E] LOAD LEFT INTO EVEN OF PAIR ;u2- LRP.E = -45 ;[LRP.E] LOAD RIGHT INTO EVEN OF PAIR ;u3+ FPI = -46 ;[FPI] SET FLOATING POINT TO I MODE FPL = -47 ;[FPL] SET FLOATING POINT TO L MODE FPF = -50 ;[FPF] SET FLOATING POINT TO F MODE FPD = -51 ;[FPD] SET FLOATING POINT TO D MODE ;u3- ; ; The following must be the last in this table. GO.TO must be first. ; GO.TO == -52 ;[GO.TO] x BRANCH WITHIN MACRO ;07+ IFEIS = -53 ;[IFEIS] COMPILE IF EIS FLAG SET IFFPU = -54 ;[IFFPU] COMPILE IF FPU FLAG SET IFOP = -55 ;[IFOP] [OP...] COMPILE IF THIS OPCODE ELSE = -56 ;[ELSE] ELSE BLOCK IN MACRO IFEND = -57 ;[IFEND] END IF BLOCK DEBUG = -60 ;[DEBUG] X <12> DEBUG DUMP TO .S FILE ;08+ ; ; The DUMP macro is used to generate debug printouts ; ; Call by DUMP <"text"> ; .MACRO DUMP WHAT .LIST ME .BYTE DEBUG .ASCII WHAT .BYTE 12 .NLIST ME .ENDM DUMP ;08- ; ; The BRANCH macro is used to branch within code macro's ; .MACRO BRANCH WHERE .BYTE $ = WHERE-.-1 .IF LT $ .IIF LT $+127. .error ;long backwards branch to where .IFF .IIF GT $-127. .error ;long forwards branch to where .ENDC .BYTE WHERE-.-1 .ENDM BRANCH ;07- ; ; ASCII STRINGS USED BY THE [OP0] AND [OP1] MACROS ; ADD: .ASCIZ "add" SUB: .ASCIZ "sub" MUL: .ASCIZ "mul" DIV: .ASCIZ "div" MOD: .ASCIZ "mod" ASL: .ASCIZ "asl" ASR: .ASCIZ "asr" BIC: .ASCIZ "bic" BIS: .ASCIZ "bis" XOR: .ASCIZ "xor" INC: .ASCIZ "inc" DEC: .ASCIZ "dec" NEG: .ASCIZ "neg" COM: .ASCIZ "com" CLR: .ASCIZ "clr" MOV: .ASCIZ "mov" BIT: .ASCIZ "bit" BEQ: .ASCIZ "beq" BNE: .ASCIZ "bne" BGT: .ASCIZ "bgt" BGE: .ASCIZ "bge" BLE: .ASCIZ "ble" BLT: .ASCIZ "blt" BHI: .ASCIZ "bhi" BLO: .ASCIZ "blo" BLOS: .ASCIZ "blos" BHIS: .ASCIZ "bhis" BR: .ASCIZ "br" NOP: .ASCIZ "nop" BMI: .ASCIZ "bmi" BPL: .ASCIZ "bpl" ;+ ; ** OP0 - OPCODE TABLE 0 ; ** OP1 - OPCODE TABLE 1 ; ; THESE TABLES PROVIDE THE ASCII STRINGS FOR THE [OP0] AND ; [OP1] MACROS. ;- .EVEN OP0: .WORD 0 ;OP.EOF .WORD 0 ;OP.CON .WORD 0 ;OP.ID .WORD 0 ;OP.LID .WORD 0 ;OP.4 .WORD 0 ;OP.5 .WORD 0 ;OP.REG .WORD 0 ;OP.INX .WORD 0 ;OP.AUI .WORD 0 ;OP.AUD .WORD ADD ;OP.ADD .WORD SUB ;OP.SUB .WORD MUL ;OP.MUL .WORD DIV ;OP.DIV .WORD MOD ;OP.MOD .WORD ASL ;OP.ASL .WORD ASR ;OP.ASR .WORD 0 ;OP.AND .WORD BIS ;OP.OR .WORD XOR ;OP.XOR .WORD ADD ;OP.ADA .WORD SUB ;OP.SBA .WORD MUL ;OP.MUA .WORD DIV ;OP.DVA .WORD MOD ;OP.MOA .WORD ASL ;OP.ALA .WORD ASR ;OP.ARA .WORD 0 ;OP.ANA .WORD BIS ;OP.ORA .WORD XOR ;OP.XRA ;u6 .WORD BEQ ;OP.EQ .WORD BNE ;OP.NE .WORD BLT ;OP.LT .WORD BLE ;OP.LE .WORD BGE ;OP.GE .WORD BGT ;OP.GT .WORD BLO ;OP.LTU .WORD BLOS ;OP.LEU .WORD BHIS ;OP.GEU .WORD BHI ;OP.GTU .WORD 0 ;OP.AA .WORD 0 ;OP.OO .WORD ADD ;OP.INB .WORD ADD ;OP.INA .WORD SUB ;OP.DEB .WORD SUB ;OP.DEA .WORD MOV ;OP.ASG .WORD 0 ;OP.ADR .WORD 0 ;OP.IND .WORD NEG ;OP.NEG .WORD COM ;OP.COM .WORD 0 ;OP.NOT .WORD 0 ;OP.QRY .WORD 0 ;OP.CLN .WORD 0 ;OP.CMA .WORD 0 ;OP.SEQ .WORD BIC ;OP.BIC .WORD BIC ;OP.BCA .WORD BIT ;OP.BIT .WORD 0 ;OP.JSR .WORD 0 ;OP.CVR .WORD 0 ;OP.MLL ;u10 .WORD 0 ;OP.FSR .WORD 0 ;OP.FSM .WORD 0 ;OP.LOD .WORD 0 ;OP.CST .WORD 0 ;OP.DLL (OP.NAC in pass 1) ;u10 OP1: .WORD 0 ;OP.EOF .WORD 0 ;OP.CON .WORD 0 ;OP.ID .WORD 0 ;OP.LID .WORD 0 ;OP.4 .WORD 0 ;OP.5 .WORD 0 ;OP.REG .WORD 0 ;OP.INX .WORD 0 ;OP.AUI .WORD 0 ;OP.AUD .WORD INC ;OP.ADD .WORD DEC ;OP.SUB .WORD ASL ;OP.MUL .WORD ASR ;OP.DIV .WORD 0 ;OP.MOD .WORD ASL ;OP.ASL .WORD ASR ;OP.ASR .WORD 0 ;OP.AND .WORD 0 ;OP.OR .WORD XOR ;OP.XOR .WORD INC ;OP.ADA .WORD DEC ;OP.SBA .WORD ASL ;OP.MUA .WORD ASR ;OP.DVA .WORD 0 ;OP.MOA .WORD ASL ;OP.ALA .WORD ASR ;OP.ARA .WORD 0 ;OP.ANA .WORD 0 ;OP.ORA .WORD 0 ;OP.XRA .WORD BEQ ;OP.EQ .WORD BNE ;OP.NE .WORD BLT ;OP.LT .WORD BLE ;OP.LE .WORD BGE ;OP.GE .WORD BGT ;OP.GT .WORD 0 ;OP.LTU .WORD BEQ ;OP.LEU .WORD 0 ;OP.GEU .WORD BNE ;OP.GTU .WORD 0 ;OP.AA .WORD 0 ;OP.OO .WORD INC ;OP.INB .WORD INC ;OP.INA .WORD DEC ;OP.DEB .WORD DEC ;OP.DEA .WORD CLR ;OP.ASG .WORD 0 ;OP.ADR .WORD 0 ;OP.IND .WORD NEG ;OP.NEG .WORD COM ;OP.COM .WORD 0 ;OP.NOT .WORD 0 ;OP.QRY .WORD 0 ;OP.CLN .WORD 0 ;OP.CMA .WORD 0 ;OP.SEQ .WORD 0 ;OP.BIC .WORD 0 ;OP.BCA .WORD 0 ;OP.BIT .WORD 0 ;OP.JSR .WORD 0 ;OP.CVR .WORD 0 ;OP.MLL ;u10 .WORD 0 ;OP.FSR .WORD 0 ;OP.FSM .WORD 0 ;OP.LOD .WORD 0 ;OP.CST .WORD 0 ;OP.DLL (OP.NAC in pass 1) ;u10 ; STAB ;+ ; ** STAB - EXPRESSION TO -(SP) ; ** TTAB - EXPRESSION TO (SP) ; ; THIS SMALL CODE GENERATION TABLE IS USED TO COMPILE EXPRESSIONS TO ; -(SP). MOST OF TIME AN EXPRESSION IS COMPILED TO -(SP) BY THE RTAB ; AND A MOV ONTO THE STACK. ; ; TTAB IS A FAKE. IT IS NEVER USED AS A CODE TABLE. IT MUST, HOWEVER ; BE UNIQUE. ;- TTAB: .WORD 0 ;FAKE STAB: .WORD OP.LOD,10$ ;LEAF NODES .WORD OP.ADD,20$ ;ADDITION AND SUBTRACTION .WORD OP.SUB,20$ ; .WORD OP.OR, 30$ ;BIS AND BIC .WORD OP.BIC,30$ ; .WORD OP.COM,40$ ;UNARY OPS .WORD OP.NEG,45$ ; .WORD OP.INA,50$ ;INCREMENT AND DECREMENT .WORD OP.DEA,50$ ; .WORD OP.INB,60$ ; .WORD OP.DEB,60$ ; .WORD OP.CVR,70$ ;CONVERSIONS .WORD OP.IND,80$ ;INDIRECTION .WORD 0 ;END OF TABLE .NLIST MEB 10$: TAB 100$, INT, CON0, INT, ANY TAB 113$, LNG, CON0, LNG, ANY TAB 101$, INT, ANY, INT, ANY TAB 109$, LNG, ANY, LNG, ANY ;; TAB 109$, FLT, ADDR, FLT, ANY ;u5/u11 TAB 200$, FLT, ANY, FLT, ANY ;08 TAB 210$, DBL, ANY, DBL, ANY ;08 TABEND 20$: TAB 103$, INT, ANY, INT, CON1 TAB 104$, INT, ANY, INT, ADDR TAB 112$, INT, ANY, INT, ANY TAB 114$, LNG, ANY, INT, ADDR TAB 115$, LNG, ANY, INT, ANY TAB 116$, LNG, ANY, LNG, ADDR TAB 117$, LNG, ANY, LNG, ANY TABEND 30$: TAB 104$, INT, ANY, INT, ADDR TAB 112$, INT, ANY, INT, ANY TAB 118$, LNG, ANY, INT, ADDR TAB 119$, LNG, ANY, INT, ANY TAB 120$, LNG, ANY, LNG, ADDR TAB 121$, LNG, ANY, LNG, ANY TABEND 40$: TAB 103$, INT, ANY, INT, ANY TAB 122$, LNG, ANY, LNG, ANY TABEND 45$: TAB 103$, INT, ANY, INT, ANY TAB 123$, LNG, ANY, LNG, ANY TABEND 50$: TAB 105$, INT, ANY, INT, CON1 TAB 106$, INT, ANY, INT, ADDR TAB 124$, LNG, ANY, INT, ADDR TABEND 60$: TAB 107$, INT, ANY, INT, CON1 TAB 108$, INT, ANY, INT, ADDR TAB 125$, LNG, ANY, INT, ADDR TABEND 70$: TAB 126$, LNG, ANY, INT, ADDR TAB 128$, LNG, ANY, CHR, ADDR ;05 TAB 127$, LNG, ANY, UNS, ANY TAB 230$, LNG, ANY, FLT, ANY ;u9 TAB 231$, LNG, ANY, DBL, ANY ;u9 TABEND 80$: TAB 132$, LNG, ANY, INT, ANY ;Indirection ;u7 TAB 132$, FLT, ANY, INT, ANY ;u7 TABEND .LIST MEB 100$: .ASCIZ " clr -(sp)"<12> 101$: .ASCIZ " mov "",-(sp)"<12> 102$: .ASCIZ 103$: .ASCII .ASCIZ " "" (sp)"<12> 104$: .ASCII .ASCIZ " "" "",(sp)"<12> 105$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCIZ " "" "<12> 106$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCIZ " "" "","<12> 107$: .ASCII .ASCII " "" "<12> .ASCIZ " mov "",-(sp)"<12> 108$: .ASCII .ASCII " "" "","<12> .ASCIZ " mov "",-(sp)"<12> 109$: .ASCII " mov "",-(sp)"<12> .ASCIZ " mov "",-(sp)"<12> 112$: .ASCII .ASCII .ASCIZ " "" "",(sp)"<12> 113$: .ASCII " clr -(sp)"<12> .ASCIZ " clr -(sp)"<12> 114$: .ASCII .ASCII " "" "",2(sp)"<12> .ASCIZ " "" (sp)"<12> 115$: .ASCII .ASCII .ASCII " "" "",2(sp)"<12> .ASCIZ " "" (sp)"<12> 116$: .ASCII .ASCII " "" "",2(sp)"<12> .ASCII " "" (sp)"<12> .ASCIZ " "" "",(sp)"<12> 117$: .ASCII .ASCII .ASCII " "" "",2(sp)"<12> .ASCII " "" (sp)"<12> .ASCIZ " "" "",(sp)"<12> 118$: .ASCII .ASCIZ " "" "",2(sp)"<12> 119$: .ASCII .ASCII .ASCIZ " "" "",2(sp)"<12> 120$: .ASCII .ASCII " "" "",2(sp)"<12> .ASCIZ " "" "",(sp)"<12> 121$: .ASCII .ASCII .ASCII " "" "",2(sp)"<12> .ASCIZ " "" "",(sp)"<12> 122$: .ASCII .ASCII " "" 2(sp)"<12> .ASCIZ " "" (sp)"<12> 123$: .ASCII .ASCII " "" (sp)"<12> .ASCII " "" 2(sp)"<12> .ASCIZ " sbc (sp)"<12> 124$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " mov "",-(sp)"<12> .ASCII " "" "","<12> .ASCIZ " "" "<12> 125$: .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCII " mov "",-(sp)"<12> .ASCIZ " mov "",-(sp)"<12> 126$: .ASCII " mov "",-(sp)"<12> ;05+ .IF NE C$$SXT .ASCIZ " sxt -(sp)"<12> .IFF .ASCII " .word 0100402 / bmi .+6"<12> .ASCII " clr -(sp)"<12> .ASCII " .word 0000402 / br .+6"<12> ;05- .ASCIZ " mov $-1,-(sp)"<12> .ENDC 127$: .ASCII .ASCIZ " clr -(sp)"<12> 128$: ; ; Pushing a byte onto the stack does not sign-extend extend the high byte ; Sorry about that ; .IF NE C$$SXT ;05+ .ASCII " movb "",-(sp)"<12> .ASCII " sxt -(sp)"<12> .ASCIZ " movb (sp),3(sp)"<12> .IFF .ASCII " clr -(sp)"<12> ; push byte is funny .ASCII " movb "",(sp)"<12> .ASCII " .word 0100402 / bmi .+6"<12> .ASCII " clr -(sp)"<12> .ASCII " .word 0000404 / br .+10."<12> .ASCII " bis $0177400,(sp)"<12> .ASCIZ " mov $-1,-(sp)"<12> ;05- .ENDC 132$: ;LONG STAR ANY ;u7+ .ASCII .ASCII " mov 2(""),-(sp)"<12> .ASCIZ " mov (""),-(sp)"<12> ;u7- 200$: ;PUSH FLOAT ;u1+ .ASCII .ASCII " ldf "",r0"<12> .ASCIZ " stf r0,-(sp)"<12> 210$: ;PUSH DOUBLE .ASCII .ASCII " ldd "",r0"<12> .ASCIZ " std r0,-(sp)"<12> 230$: ;Convert float to long ;u9+ .ASCII .ASCII .ASCII .ASCIZ " stcfl "",-(sp)"<12> 231$: ;Convert double to long .ASCII .ASCII .ASCII .ASCIZ " stcdl "",-(sp)"<12> ;u9- .EVEN ; RTAB ;+ ; ** RTAB - EXPRESSION TO REGISTER ; ; THIS TABLE IS USED TO COMPILE CODE TO LOAD THE RESULT OF A TREE ; INTO A REGISTER. IT IS ALSO USED AS A DEFAULT TABLE IF THERE IS ; NO MATCH IN THE ETAB, STAB OR CTAB. THIS TABLE MUST BE ABLE TO ; HANDLE EVERYTING OR THERE IS AN ERROR. ; ;- RTAB: .WORD OP.ADD,10$ ;ADDITION AND SUBTRACTION .WORD OP.SUB,10$ ; .WORD OP.MUL,12$ ;MULTIPLICATION .WORD OP.DIV,13$ ;DIVISION .WORD OP.MOD,14$ ;REMAINDER ;07 .WORD OP.ASL,19$ ;SHIFTS .WORD OP.ASR,18$ ;INCLUDE SPECIAL UNSIGNED HOOK .WORD OP.OR, 20$ ;BITWISE LOGICALS .WORD OP.BIC,20$ ; .WORD OP.XOR,22$ ; .WORD OP.INB,24$ ;PREFIX INCREMENT AND DECREMENT .WORD OP.DEB,24$ ; .WORD OP.INA,26$ ;POSTFIX INCREMENT AND DECREMENT .WORD OP.DEA,26$ ; .WORD OP.NEG,28$ ;NEGATION .WORD OP.COM,29$ ;BITWISE COMPLEMENT .WORD OP.IND,30$ ;INDIRECTION .WORD OP.LOD,32$ ;LEAF NODES .WORD OP.CVR,34$ ;CONVERT TYPE TO REGISTER .WORD OP.ADA,36$ ;+= .WORD OP.SBA,37$ ;-= ;u6 .WORD OP.ORA,38$ ;=OR AND =BIC .WORD OP.BCA,38$ ; .WORD OP.ALA,41$ ;=>> AND =<< .WORD OP.ARA,40$ ; .WORD OP.MUA,42$ ;=* .WORD OP.DVA,43$ ;=/ ;u6 .WORD OP.MOA,44$ ;=% ;u6 .WORD OP.XRA,50$ ;=^ .WORD OP.ASG,52$ ;= .WORD OP.MLL,53$ ;LNG = INT*INT special ;u10 .WORD OP.DLL,54$ ;INT = LNG/INT special ;u10 .WORD 0 ;END OF TABLE ; ; ADDITION. ; SUBTRACTION. ; .NLIST MEB 10$: TAB 101$, INT, ANY, INT, CON1 TAB 102$, INT, ANY, INT, EASY TAB 103$, LNG, ANY, INT, EASY TAB 104$, LNG, ANY, LNG, EASY TAB 105$, INT, ANY, INT, ANY TAB 106$, LNG, ANY, INT, ANY TAB 107$, LNG, ANY, LNG, ANY TAB 300$ FLT, ANY, FLT, EASY ;u2+ TAB 301$ FLT, ANY, FLT, ANY TAB 310$ DBL, ANY, DBL, EASY TAB 311$ DBL, ANY, DBL, ANY ;u2- TABEND ; ; MULTIPLICATION. ; USING A SUBROUTINE THAT IS COMMUTATIVE. ; 12$: TAB 163$, INT, ADDR, INT, CON3 TAB 164$, INT, ADDR, INT, CON5 TAB 165$, INT, ADDR, INT, CON6 TAB 166$, INT, ADDR, INT, CON7 TAB 167$, INT, ADDR, INT, CON9 TAB 168$, INT, ADDR, INT, CON10 TAB 169$, INT, ADDR, INT, CON12 TAB 170$, INT, ANY, INT, CON3 ;u3+ TAB 171$, INT, ANY, INT, CON5 TAB 172$, INT, ANY, INT, CON6 TAB 173$, INT, ANY, INT, CON7 TAB 174$, INT, ANY, INT, CON9 TAB 175$, INT, ANY, INT, CON10 TAB 176$, INT, ANY, INT, CON12 ;u3- TAB 1830$, INT, ANY, INT, EASY ;07 TAB 1831$, INT, ANY, INT, ANY ;07 TAB 184$, LNG, ADDR, INT, CON3 TAB 186$, LNG, ANY, INT, CON2 TAB 187$, LNG, ANY, INT, CON4 TAB 111$, LNG, ANY, INT, ANY TAB 270$, LNG, ANY, UNS, ANY ;u6 TAB 249$, INT, ANY, LNG, ANY TAB 188$, LNG, ANY, LNG, ANY TAB 300$ FLT, ANY, FLT, EASY ;u2+ TAB 301$ FLT, ANY, FLT, ANY TAB 310$ DBL, ANY, DBL, EASY TAB 311$ DBL, ANY, DBL, ANY ;u2- TABEND ; ; DIVISION. ; 13$: TAB 1080$, INT, ANY, INT, EASY ;07 TAB 1081$, INT, ANY, INT, ANY ;07 TAB 280$, UNS, ANY, INT, ANY ; Use LNG/LNG ;u7 TAB 280$, INT, ANY, UNS, ANY ; Use LNG/LNG ;u7 TAB 270$, LNG, ANY, UNS, ANY ; Use LNG/LNG ;u6 TAB 111$, LNG, ANY, INT, ANY TAB 109$, LNG, ANY, LNG, ANY TAB 300$ FLT, ANY, FLT, EASY ;u2+ TAB 301$ FLT, ANY, FLT, ANY TAB 310$ DBL, ANY, DBL, EASY TAB 311$ DBL, ANY, DBL, ANY ;u2- TABEND ; ;u3+ ; REMAINDER ; 14$: TAB 1080$, INT, ANY, INT, EASY ;07 TAB 1081$, INT, ANY, INT, ANY ;07 TAB 280$, UNS, ANY, INT, ANY ; Use LNG/LNG ;u7 TAB 280$, INT, ANY, UNS, ANY ; Use LNG/LNG ;u7 TAB 270$, LNG, ANY, UNS, ANY ; Use LNG/LNG ;u6 TAB 111$, LNG, ANY, INT, ANY TAB 109$, LNG, ANY, LNG, ANY TABEND ;u3- ; ; SHIFT RIGHT. ; 18$: TAB 196$, UNS, ANY, INT, CON1 TAB 101$, INT, ANY, INT, CON1 TAB 203$, UNS, ANY, INT, CON2 TAB 190$, INT, ANY, INT, CON2 TAB 204$, UNS, ANY, INT, CON3 TAB 191$, INT, ANY, INT, CON3 TAB 205$, UNS, ANY, INT, CON4 TAB 192$, INT, ANY, INT, CON4 TAB 193$, INT, ANY, INT, CON5 TAB 206$, UNS, ANY, INT, CON8 TAB 207$, UNS, ANY, INT, CON9 TAB 208$, UNS, ANY, INT, ANY TAB 1082$, INT, ANY, INT, ANY TAB 209$, LNG, ANY, INT, CON1 TAB 210$, LNG, ANY, INT, CON2 TAB 225$, LNG, ANY, INT, CON9 TAB 2250$, LNG, ANY, INT, CON16 ;u12 TAB 1110$, LNG, ANY, INT, ANY ;07 TAB 109$, LNG, ANY, LNG, ANY TABEND ; ; LEFT SHIFT. ; 19$: TAB 101$, INT, ANY, INT, CON1 TAB 190$, INT, ANY, INT, CON2 TAB 191$, INT, ANY, INT, CON3 TAB 192$, INT, ANY, INT, CON4 TAB 193$, INT, ANY, INT, CON5 TAB 211$, INT, ANY, INT, CON8 TAB 212$, INT, ANY, INT, CON9 TAB 1087$, INT, ANY, INT, EASY ;u8 TAB 1082$, INT, ANY, INT, ANY ;07 TAB 213$, LNG, ANY, INT, CON1 TAB 214$, LNG, ANY, INT, CON2 TAB 2140$, LNG, ANY, INT CON16 ;u12 TAB 1111$, LNG, ANY, INT, EASY ;u8 TAB 1110$, LNG, ANY, INT, ANY ;07 TAB 109$, LNG, ANY, LNG, ANY TABEND ; ; OR. ; BIC. ; 20$: TAB 102$, INT, ANY, INT, EASY TAB 121$, LNG, ANY, INT, EASY TAB 122$, LNG, ANY, LNG, EASY TAB 105$, INT, ANY, INT, ANY TAB 123$, LNG, ANY, INT, ANY TAB 124$, LNG, ANY, LNG, ANY TABEND ; ; EXCLUSIVE OR. ; 22$: ;07+ TAB 1250$, INT, ANY, INT, ANY TAB 1252$, LNG, ANY, LNG, ANY ;07- TABEND ; ; PREFIX INCREMENT. ; PREFIX DECREMENT. ; 24$: TAB 126$, INT, ANY, INT, CON1 TAB 126$, CHR, ANY, INT, CON1 TAB 127$, INT, ANY, INT, ADDR TAB 215$, LNG, ANY, INT, ADDR TABEND ; ; POSTFIX INCREMENT. ; POSTFIX DECREMENT. ; 26$: TAB 128$, INT, EASY, INT, CON1 TAB 128$, CHR, EASY, INT, CON1 TAB 129$, INT, ANY, INT, CON1 TAB 129$, CHR, ANY, INT, CON1 TAB 130$, INT, EASY, INT, ADDR TAB 131$, INT, ANY, INT, ADDR TAB 216$, LNG, EASY, INT, ADDR TAB 217$, LNG, ANY, INT, ADDR TABEND ; ; NEGATION. ; 28$: TAB 132$, INT, ANY, INT, ANY TAB 133$, LNG, ANY, LNG, ANY TAB 302$, FLT, ANY, FLT, ANY ;u1 TAB 312$, DBL, ANY, DBL, ANY ;u1 TABEND ; ; COMPLEMENT. ; 29$: TAB 132$, INT, ANY, INT, ANY TAB 134$, LNG, ANY, LNG, ANY TABEND ; ; STAR. ; 30$: TAB 200$, CHR, ANY, INT, ANY TAB 201$, INT, ANY, INT, ANY TAB 202$, LNG, ANY, INT, ANY TAB 320$, FLT, ANY, INT, EASY ;u7 TAB 321$, FLT, ANY, INT, ANY ;u6 TAB 330$, DBL, ANY, INT, EASY ;u7 TAB 331$, DBL, ANY, INT, ANY ;u6 TABEND ; ; LEAF NODES. ; 32$: TAB 139$, INT, CON0, INT, ANY TAB 218$, LNG, CON0, LNG, ANY TAB 135$, INT, ANY, INT, ANY TAB 135$, CHR, ANY, CHR, ANY TAB 136$, LNG, ANY, LNG, ANY TAB 340$, FLT, ANY, FLT, ANY ;08 TAB 350$, DBL, ANY, DBL, ANY ;08 TABEND ; ; CVR. ; 34$: TAB 100$, INT, ANY, CHR, ANY ; was 135$ ;u6+ TAB 142$, CHR, ANY, INT, ANY TAB 143$, UNS, ANY, CHR, ADDR ;u7 TAB 144$, UNS, ANY, CHR, ANY ;u6- TAB 140$, LNG, ANY, CHR, ANY TAB 140$, LNG, ANY, INT, ANY TAB 141$, LNG, ANY, UNS, ANY TAB 232$, CHR, ANY, LNG, ANY ;u6 TAB 232$, INT, ANY, LNG, ANY TAB 400$, FLT, ANY, CHR, ANY ;08+ TAB 401$, FLT, ANY, INT, ANY TAB 402$, FLT, ANY, UNS, ANY TAB 4030$, FLT, ANY, LNG, ADDR ;u6 TAB 403$, FLT, ANY, LNG, ANY TAB 404$, FLT, ANY, DBL, ANY TAB 410$, DBL, ANY, CHR, ANY TAB 411$, DBL, ANY, INT, ANY TAB 412$, DBL, ANY, UNS, ANY TAB 4130$, DBL, ANY, LNG, ADDR ;u6 TAB 413$, DBL, ANY, LNG, ANY TAB 414$, DBL, ANY, FLT, ANY TAB 415$, CHR, ANY, FLT, ANY ;u2+ TAB 415$, INT, ANY, FLT, ANY TAB 409$, UNS, ANY, FLT, ANY ;u11 TAB 416$, CHR, ANY, DBL, ANY TAB 416$, INT, ANY, DBL, ANY TAB 417$, LNG, ANY, FLT, ANY TAB 418$, LNG, ANY, DBL, ANY ;08-;u2- TAB 419$, UNS, ANY, DBL, ANY ;u11 TABEND ; ; ASSIGNED ADDITION. ; 36$: TAB 126$, INT, ANY, INT, CON1 TAB 126$, CHR, ANY, INT, CON1 TAB 127$, INT, ADDR, INT, ADDR TAB 146$, INT, ADDR, INT, ANY TAB 145$, INT, EASY, INT, ADDR TAB 145$, CHR, EASY, INT, ADDR TAB 147$, INT, EASY, INT, ANY TAB 147$, CHR, EASY, INT, ANY TAB 148$, INT, ANY, INT, ANY TAB 148$, CHR, ANY, INT, ANY TAB 233$, LNG, ADDR, LNG, ADDR TAB 234$, LNG, ADDR, LNG, ANY TAB 235$, LNG, EASY, INT, ADDR TAB 236$, LNG, EASY, INT, ANY TAB 237$, LNG, ANY, INT, ANY TAB 238$, LNG, EASY, LNG, ADDR TAB 239$, LNG, EASY, LNG, ANY TAB 240$, LNG, ANY, LNG, ANY TAB 420$, FLT, ADDR, FLT, ANY ;u6+ TAB 422$, FLT, ANY, FLT, ANY TAB 430$, DBL, ADDR, DBL, ANY TAB 432$, DBL, ANY, DBL, ANY ;u6- TABEND ; ASSIGNED SUBTRACTION. ; 37$: TAB 126$, INT, ANY, INT, CON1 TAB 126$, CHR, ANY, INT, CON1 TAB 127$, INT, ADDR, INT, ADDR TAB 146$, INT, ADDR, INT, ANY TAB 145$, INT, EASY, INT, ADDR TAB 145$, CHR, EASY, INT, ADDR TAB 147$, INT, EASY, INT, ANY TAB 147$, CHR, EASY, INT, ANY TAB 148$, INT, ANY, INT, ANY TAB 148$, CHR, ANY, INT, ANY TAB 233$, LNG, ADDR, LNG, ADDR TAB 234$, LNG, ADDR, LNG, ANY TAB 235$, LNG, EASY, INT, ADDR TAB 236$, LNG, EASY, INT, ANY TAB 237$, LNG, ANY, INT, ANY TAB 238$, LNG, EASY, LNG, ADDR TAB 239$, LNG, EASY, LNG, ANY TAB 240$, LNG, ANY, LNG, ANY TAB 421$, FLT, ADDR, FLT, ANY ;u6+ TAB 422$, FLT, ANY, FLT, ANY TAB 431$, DBL, ADDR, DBL, ANY TAB 432$, DBL, ANY, DBL, ANY ;u6- TABEND ; ; ASSIGNED OR. ; ASSIGNED BIC. ; 38$: TAB 127$, INT, ADDR, INT, ADDR TAB 146$, INT, ADDR, INT, ANY TAB 145$, INT, EASY, INT, ADDR TAB 145$, CHR, EASY, INT, ADDR TAB 147$, INT, EASY, INT, ANY TAB 147$, CHR, EASY, INT, ANY TAB 148$, INT, ANY, INT, ANY TAB 148$, CHR, ANY, INT, ANY TAB 241$, LNG, ADDR, LNG, ADDR TAB 242$, LNG, ADDR, LNG, ANY TAB 243$, LNG, EASY, INT, ADDR TAB 244$, LNG, EASY, INT, ANY TAB 245$, LNG, ANY, INT, ANY TAB 246$, LNG, EASY, LNG, ADDR TAB 247$, LNG, EASY, LNG, ANY TAB 248$, LNG, ANY, LNG, ANY TABEND ; ; ASSIGNED RIGHT SHIFT. ; 40$: TAB 500$, INT, ADDR, INT, CON1 ;u6+ TAB 501$, INT, ADDR, INT, CON2 TAB 502$, INT, ADDR, INT, CON3 TAB 503$, INT, ADDR, INT, CON4 TAB 504$, INT, ADDR, INT, CON5 TAB 500$, CHR, ADDR, INT, CON1 TAB 501$, CHR, ADDR, INT, CON2 TAB 502$, CHR, ADDR, INT, CON3 TAB 503$, CHR, ADDR, INT, CON4 TAB 504$, CHR, ADDR, INT, CON5 TAB 510$, UNS, ADDR, INT, CON1 TAB 511$, UNS, ADDR, INT, CON2 TAB 512$, UNS, ADDR, INT, CON3 TAB 513$, UNS, ADDR, INT, CON4 TAB 514$, UNS, ADDR, INT, CON5 TAB 519$, UNS, ADDR, INT, CON8 ;u6- TAB 197$, UNS, ANY, INT, CON1 TAB 126$, INT, ANY, INT, CON1 TAB 126$, CHR, ANY, INT, CON1 TAB 228$, LNG, ANY, INT, CON1 TAB 2280$, LNG, ADDR, INT, CON2 ;u12 TAB 2281$, LNG, ADDR, INT, CON16 ;u12 TAB 229$, UNS, ADDR, INT, ANY TAB 198$, INT, ADDR, INT, ANY TAB 199$, CHR, ADDR, INT, ANY TAB 230$, UNS, ANY, INT, ANY TAB 1510$, INT, ANY, INT, ANY ;07 TAB 1520$, CHR, ANY, INT, ANY ;07 TAB 1112$, LNG, ADDR, INT, ANY ;u12 TAB 227$, LNG, ANY, INT, ANY ;07+ TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY ;07- TABEND ; ; ASSIGNED LEFT SHIFT. ; 41$: TAB 500$, INT, ADDR, INT, CON1 ;u6+ TAB 501$, INT, ADDR, INT, CON2 TAB 502$, INT, ADDR, INT, CON3 TAB 503$, INT, ADDR, INT, CON4 TAB 504$, INT, ADDR, INT, CON5 TAB 509$, INT, ADDR, INT, CON8 TAB 500$, CHR, ADDR, INT, CON1 TAB 501$, CHR, ADDR, INT, CON2 TAB 502$, CHR, ADDR, INT, CON3 TAB 503$, CHR, ADDR, INT, CON4 ;u6- TAB 126$, INT, ANY, INT, CON1 TAB 126$, CHR, ANY, INT, CON1 TAB 231$, LNG, ANY, INT, CON1 TAB 2310$, LNG, ADDR, INT, CON2 ;u12 TAB 2311$, LNG, ADDR, INT, CON16 ;u12 TAB 1981$, INT, ADDR, INT, EASY ;u8 TAB 1991$, CHR, ADDR, INT, EASY ;u8 TAB 198$, INT, ADDR, INT, ANY TAB 199$, CHR, ADDR, INT, ANY TAB 1510$, INT, ANY, INT, ANY ;07 TAB 1520$, CHR, ANY, INT, ANY ;07 TAB 1113$, LNG, ADDR, INT, EASY ;u12 TAB 1112$, LNG, ADDR, INT, ANY ;u12 TAB 227$, LNG, ANY, INT, ANY TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY TABEND ; ; ASSIGNED MULTIPLY. ; 42$: TAB 1981$, INT, ADDR, INT, EASY ;u8 TAB 1991$, CHR, ADDR, INT, EASY ;u8 TAB 198$, INT, ADDR, INT, ANY TAB 199$, CHR, ADDR, INT, ANY TAB 151$, INT, ANY, INT, ANY TAB 152$, CHR, ANY, INT, ANY TAB 226$, LNG, ADDR, INT, ANY TAB 227$, LNG, ANY, INT, ANY TAB 271$, LNG, ADDR, UNS, ANY ; Use LNG*LNG ;u6 TAB 272$, LNG, ANY, UNS, ANY ; Use LNG*LNG ;u6 TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY TAB 420$, FLT, ADDR, FLT, ANY ;u6+ TAB 422$, FLT, ANY, FLT, ANY TAB 430$, DBL, ADDR, DBL, ANY TAB 432$, DBL, ANY, DBL, ANY ;u6- TABEND ; ASSIGNED DIVIDE. 43$: TAB 1981$, INT, ADDR, INT, EASY ;u8 TAB 1991$, CHR, ADDR, INT, EASY ;u8 TAB 198$, INT, ADDR, INT, ANY TAB 199$, CHR, ADDR, INT, ANY TAB 281$, UNS, ADDR, INT, ANY ; Use LNG/LNG ;u7 TAB 281$, INT, ADDR, UNS, ANY ; Use LNG/LNG ;u7 TAB 151$, INT, ANY, INT, ANY TAB 152$, CHR, ANY, INT, ANY TAB 282$, UNS, ANY, INT, ANY ; Use LNG/LNG ;u7 TAB 282$, INT, ANY, UNS, ANY ; Use LNG/LNG ;u7 TAB 226$, LNG, ADDR, INT, ANY TAB 227$, LNG, ANY, INT, ANY TAB 271$, LNG, ADDR, UNS, ANY ; Use LNG/LNG ;u6 TAB 272$, LNG, ANY, UNS, ANY ; Use LNG/LNG ;u6 TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY TAB 421$, FLT, ADDR, FLT, ANY ;u6+ TAB 422$, FLT, ANY, FLT, ANY TAB 431$, DBL, ADDR, DBL, ANY TAB 432$, DBL, ANY, DBL, ANY ;u6- TABEND ; ASSIGNED MODULUS. 44$: TAB 1981$, INT, ADDR, INT, EASY ;u8 TAB 1991$, CHR, ADDR, INT, EASY ;u8 TAB 198$, INT, ADDR, INT, ANY TAB 199$, CHR, ADDR, INT, ANY TAB 281$, UNS, ADDR, INT, ANY ; Use LNG/LNG ;u7 TAB 281$, INT, ADDR, UNS, ANY ; Use LNG/LNG ;u7 TAB 151$, INT, ANY, INT, ANY TAB 152$, CHR, ANY, INT, ANY TAB 282$, UNS, ANY, INT, ANY ; Use LNG/LNG ;u7 TAB 282$, INT, ANY, UNS, ANY ; Use LNG/LNG ;u7 TAB 226$, LNG, ADDR, INT, ANY TAB 227$, LNG, ANY, INT, ANY TAB 271$, LNG, ADDR, UNS, ANY ; Use LNG/LNG ;u6 TAB 272$, LNG, ANY, UNS, ANY ; Use LNG/LNG ;u6 TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY TAB 421$, FLT, ADDR, FLT, ANY ;u6+ TAB 422$, FLT, ANY, FLT, ANY TAB 431$, DBL, ADDR, DBL, ANY TAB 432$, DBL, ANY, DBL, ANY ;u6- TABEND ; ; ASSIGNED EXCLUSIVE OR. ; 50$: TAB 194$, INT, ADDR, INT, ANY TAB 195$, CHR, ADDR, INT, ANY TAB 158$, INT, ANY, INT, ANY TAB 159$, CHR, ANY, INT, ANY TAB 226$, LNG, ADDR, INT, ANY TAB 227$, LNG, ANY, INT, ANY TAB 223$, LNG, ADDR, LNG, ANY TAB 224$, LNG, ANY, LNG, ANY TABEND ; ; ASSIGNMENT. ; 52$: TAB 160$, INT, EASY, INT, ANY TAB 160$, CHR, EASY, INT, ANY TAB 161$, INT, ANY, INT, EASY TAB 161$, CHR, ANY, INT, EASY TAB 162$, INT, ANY, INT, ANY TAB 162$, CHR, ANY, INT, ANY TAB 219$, INT, EASY, LNG, ANY TAB 219$, CHR, EASY, LNG, ANY TAB 220$, INT, ANY, LNG, ANY TAB 220$, CHR, ANY, LNG, ANY TAB 221$, LNG, EASY, LNG, ANY TAB 222$, LNG, ANY, LNG, ANY TAB 440$, FLT, EASY, FLT, ANY ;08 TAB 450$, DBL, EASY, DBL, ANY ;08 TAB 460$, FLT, ANY, FLT, ANY ;08 TAB 470$, DBL, ANY, DBL, ANY ;08 TABEND ; MULTIPLY INT*INT WITH LONG RESULT -- EIS only ;u10+ 53$: TAB 1832$, INT, ANY, INT, EASY TAB 1833$, INT, ANY, INT, ANY TABEND ; DIVIDE LONG / INT WITH INT RESULT -- EIS ONLY 54$: TAB 1083$, LNG, ANY, INT, EASY TAB 1084$, LNG, ANY, INT, ANY TABEND ;u10- .LIST MEB ; ; CODE BURSTS. ; 100$: .ASCIZ 101$: .ASCII .ASCIZ " "" "<12> 102$: .ASCII .ASCII .ASCIZ " "" "","<12> 103$: .ASCII .ASCII .ASCII " "" "","<12> .ASCIZ " "" "<12> 104$: .ASCII .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ " "" "","<12> 105$: .ASCII .ASCII .ASCIZ " "" (sp)+,"<12> 106$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCIZ " "" "<12> 107$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCII " "" (sp)+,"<12> ;u4 .ASCIZ " "" "<12> ;u4 1080$: ; DIV, MOD (Easy) ;u2+ .ASCII ;12 .ASCII .ASCII .ASCII " sxt "<12> .ASCII " div "","<12> .ASCII .BYTE .BYTE .ASCII ;if eis, mod select ;12+ .ASCII ;if no eis, BRANCH 108$ ;do common ;12- .ASCIZ ;u2- 1081$: ; DIV, MOD (Hard) ;u2+ .ASCII ;12 .ASCII .ASCII .ASCII " sxt "<12> .ASCII " div (sp)+,"<12> .ASCII .BYTE .BYTE .ASCII ;if eis, mod select ;12+ .ASCII ;if no eis, BRANCH 108$ ;do common ;12- .ASCIZ ;u2- 1082$: ; SHIFT ;07+ .ASCII ;12 .ASCII .ASCII .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII .ASCII " ash (sp)+,"<12> ;12+ .ASCII ;but, if no eis BRANCH 108$ ;do common .ASCIZ ;finished ;12- 1087$: ; shift int left easy ;u8+ .ASCII ;12 .ASCII .ASCII .ASCII " ash "","<12> ;u8-/12+ .ASCII ;if no eis, BRANCH 108$ ;do common .ASCIZ ;12- ; ; EIS handler for non-eis machines. ;12+ ; 108$: .ASCII .ASCII .ASCII " .globl "<176>"i"<12> .ASCII " jsr pc,"<176>"i"<12> .ASCII " cmp (sp)+,(sp)+"<12> .ASCIZ ;12- 1083$: ; OP.DLL INT = LNG ANY/INT EASY ;u10+ ; Note: this is exeuted only on EIS machines. ; See FIXCOT in CC201.MAC for details. .ASCII .ASCII .ASCIZ " div "","<12> 1084$: ; OP.DLL INT = LNG ANY/INT HARD ; Note: this is exeuted only on EIS machines. ; See FIXCOT in CC201.MAC for details. .ASCII .ASCII .ASCIZ " div (sp)+,"<12> ;u10- 109$: .ASCII .ASCII .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCIZ 110$: .ASCII ; FIS ?? .ASCII .ASCII " .globl "<176>"d"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"d"<12> ; DGC01/02 .ASCII " add $20,sp"<12> .ASCIZ 111$: .ASCII .ASCII .ASCII " .globl "<176>"li"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"li"<12> ; DGC01/02 .ASCII " add $6,sp"<12> .ASCIZ 1110$: ; SHIFT LONG INT ;07+ .ASCII ;12 .ASCII .ASCII .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII .ASCII " ashc (sp)+,"<12> ;09/12+ .ASCII ; If no eis, BRANCH 111$ ; call a subroutine .ASCIZ ; ;12- 1111$: ; shift long left easy ;u8+ .ASCII ;12 .ASCII .ASCII .ASCII " ashc "","<12> ;u8-/12+ .ASCII 11110$: BRANCH 111$ ;call subroutine .ASCIZ ;12- 1112$: ;LONG ADDR SHIFT ANY ;u12+ .ASCII ;14 .ASCII .ASCII .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII .ASCII " ashc (sp)+,"<12> BRANCH 11120$ ;Common store stub ;15 .ASCII ;14+ BRANCH 11110$ .ASCIZ ;14- 11120$: .ASCII " mov "","<12> ;15 .ASCIZ " mov "","<12> ;15 1113$: ;LONG ADDR SHIFT EASY .ASCII ;14+ .ASCII .ASCII " ashc "","<12> BRANCH 11120$ ;Common store stub .ASCIZ ;u12-/14- 121$: .ASCII .ASCII .ASCIZ " "" "","<12> 122$: .ASCII .ASCII .ASCII " "" "","<12> .ASCIZ " "" "","<12> 123$: .ASCII .ASCII .ASCIZ " "" (sp)+,"<12> 124$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCIZ " "" (sp)+,"<12> 1250$: ; XOR INT INT ;07+ .ASCII .ASCII ;12 .ASCII .ASCII " xor "",(sp)"<12> .ASCII " mov (sp)+,"<12> ;07-/12+ .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCIZ ;12- 1252$: ; XOR LONG LONG .ASCII .ASCII .ASCII ;12 .ASCII " xor "",(sp)"<12> .ASCII " mov (sp)+,"<12> .ASCII " xor "",(sp)"<12> .ASCII " mov (sp)+,"<12> ;12+ .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCII " mov (sp),-(sp)"<12> .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCIZ ;12- 126$: .ASCII .ASCII " "" "<12> .ASCIZ " mov"" "","<12> 127$: .ASCII .ASCII " "" "","<12> .ASCIZ " mov "","<12> 128$: .ASCII .ASCII " mov"" "","<12> .ASCIZ " "" "<12> 129$: .ASCII .ASCII " mov"" *(sp),"<12> .ASCIZ " "" *(sp)+"<12> 130$: .ASCII .ASCII " mov "","<12> .ASCIZ " "" "","<12> 131$: .ASCII .ASCII " mov *(sp),"<12> .ASCIZ " "" "",*(sp)+"<12> 132$: .ASCII .ASCIZ " "" "<12> 133$: .ASCII .ASCII " neg "<12> .ASCII " neg "<12> .ASCIZ " sbc "<12> 134$: .ASCII .ASCII " com "<12> .ASCIZ " com "<12> 135$: .ASCII .ASCIZ " mov"" "","<12> 136$: ;caveat .ASCII .ASCII " mov "","<12> .ASCIZ " mov "","<12> 139$: .ASCIZ " clr"" "<12> 140$: .IF NE C$$SXT ;05+ .ASCII ;u3 .ASCIZ " sxt "<12> .IFF .ASCII ;u3 .ASCII " clr "<12> .ASCII " tst "<12> .ASCII " .word 0100001 / bpl .+4"<12> .ASCIZ " dec "<12> .ENDC ;05- 141$: .ASCII ;u3 .ASCIZ " clr "<12> 142$: ;CVR CHR <- INT ;u6+ .ASCII ;u8 .ASCIZ " movb "","<12> 143$: ;CVR UNS <- CHR, ADDR ;u7 .ASCII " clr "<12> .ASCIZ " bisb "","<12> 144$: ;CVR UNS <- CHR, ANY .ASCII .ASCIZ " bic $177400,"<12> ;u6- 145$: .ASCII .ASCII " mov"" "","<12> .ASCII " "" "","<12> .ASCIZ " mov"" "","<12> 146$: .ASCII .ASCII " "" "","<12> .ASCIZ " mov "","<12> 147$: .ASCII .ASCII .ASCII " mov"" "","<12> .ASCII " "" (sp)+,"<12> .ASCIZ " mov"" "","<12> 148$: .ASCII .ASCII .ASCII " mov"" *2(sp),"<12> .ASCII " "" (sp)+,"<12> .ASCIZ " mov"" "",*(sp)+"<12> 150$: .ASCII .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " .globl "<176>"i"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"i"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov r0,"<12> .ASCIZ 151$: .ASCII ;u6+ .ASCII .ASCII ;12 .ASCII .BYTE .ASCII " mov *2(sp),r1"<12> .ASCII " mul (sp)+,r1"<12> .ASCII " mov r1,*(sp)+"<12> .ASCII .ASCII ;11 .ASCII .BYTE .ASCII " mov *2(sp),r1"<12> .ASCII " sxt r0"<12> .ASCII " div (sp)+,r0"<12> .ASCII " mov r0,*(sp)+"<12> .ASCII .ASCII .ASCII .BYTE .ASCII " mov *2(sp),r1"<12> .ASCII " sxt r0"<12> .ASCII " div (sp)+,r0"<12> .ASCII " mov r1,*(sp)+"<12> .ASCII .ASCII ;u6-/12+ .ASCII BRANCH 1511$ .ASCIZ ;12- 1510$: ; >>= INT INT ;07+ .ASCII .ASCII .ASCII ;12 .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII .ASCII " mov"" *2(sp),"<12> .ASCII " ash (sp)+,"<12> .ASCII " mov"" "",*(sp)+"<12> ;12+ .ASCII BRANCH 1511$ .ASCIZ ;12- 1511$: .ASCII " .globl "<176>"i"<12> ;12+ .ASCII " jsr pc,"<176>"i"<12> .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov r0,*(sp)+"<12> .ASCIZ ;12- 1520$: ; >>= or <<= CHAR INT ;07+ .ASCII ;12 .ASCII .ASCII .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII .ASCII " mov"" *2(sp),"<12> .ASCII " ash (sp)+,"<12> .ASCII " mov"" "",*(sp)+"<12> .ASCII ;12 BRANCH 152$ ;12 .ASCIZ ;07- 152$: .ASCII ;12+ .ASCII .ASCII " movb *2(sp),r0"<12> .ASCII " mov r0,-(sp)"<12> .ASCII " .globl "<176>"i"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"i"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " movb r0,*(sp)+"<12> .ASCIZ ;12- 158$: ; = XOR INT INT ;07+ 159$: ; = XOR CHAR INT .ASCII .ASCII .ASCII .ASCII " mov"" *2(sp),"<12> .ASCII " xor "",(sp)"<12> .ASCII " mov (sp)+,"<12> .ASCII " mov"" "",*(sp)+"<12> .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII " mov"" *4(sp),"<12> .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCII " mov"" "",*(sp)+"<12> .ASCIZ 160$: .ASCII .ASCII .ASCIZ " mov"" "","<12> 161$: .ASCII .ASCII .ASCII " mov"" "","<12> .ASCIZ " mov"" "","<12> 162$: .ASCII .ASCII .ASCIZ " mov"" "",*(sp)+"<12> ; ; MULTIPLY CODE ; 163$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCIZ " add "","<12> 164$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " add "","<12> 165$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " add "","<12> .ASCIZ " asl "<12> 166$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " sub "","<12> 167$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " add "","<12> 168$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " add "","<12> .ASCIZ " asl "<12> 169$: .ASCII " mov "","<12> .ASCII " asl "<12> .ASCII " add "","<12> .ASCII " asl "<12> .ASCIZ " asl "<12> ; NON-POWER-OF-2 SIMPLE MULTIPLIES 170$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCIZ " add (sp)+,"<12> 171$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " add (sp)+,"<12> 172$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " add (sp)+,"<12> .ASCIZ " asl "<12> 173$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " sub (sp)+,"<12> 174$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCIZ " add (sp)+,"<12> 175$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " asl "<12> .ASCII " add (sp)+,"<12> .ASCIZ " asl "<12> 176$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " asl "<12> .ASCII " add (sp)+,"<12> .ASCII " asl "<12> .ASCIZ " asl "<12> 1830$: ; MUL INT INT (easy) ;u2+ ; .ASCII .ASCII .ASCII .ASCII " mul "","<12> .ASCII BRANCH 183$ ;12 .ASCIZ 1831$: ; MUL INT INT (hard) ; .ASCII .ASCII .ASCII .ASCII " mul (sp)+,"<12> .ASCII BRANCH 183$ ;12 .ASCIZ ;u2- 1832$: ;MUL LNG = INT*INT (easy) ;u10+ ;Note: This is executed only on EIS machines. ;See FIXCOT in CC201.MAC for details. .ASCII .ASCII .ASCIZ " mul "","<12> 1833$: ; MUL LNG = INT*INT (hard) ;Note: This is executed only on EIS machines. ;See FIXCOT in CC201.MAC for details. .ASCII .ASCII .ASCIZ " mul "","<12> ;u10- 183$: .ASCII ;12+ .ASCII .ASCII " .globl mul"<176>"i"<12> ; DGC01/02 .ASCII " jsr pc,mul"<176>"i"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCIZ ;12- 184$: .ASCII .ASCII " asl "<12> .ASCII " rol "<12> .ASCII " add "","<12> .ASCII " add "","<12> .ASCIZ " adc "<12> 186$: .ASCII .ASCII " asl "<12> .ASCIZ " rol "<12> 187$: .ASCII .ASCII " asl "<12> .ASCII " rol "<12> .ASCII " asl "<12> .ASCIZ " rol "<12> 188$: .ASCII .ASCII .ASCII " .globl mul"<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,mul"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCIZ 190$: .ASCII .ASCII " "" "<12> .ASCIZ " "" "<12> 191$: .ASCII .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " "" "<12> 192$: .ASCII .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " "" "<12> 193$: .ASCII .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " "" "<12> 194$: ; =^ INT_ADDR INT ;07+ .ASCII .ASCII .ASCII " xor "","<12> .ASCII " mov "","<12> .ASCII .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII " mov "","<12> .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCII " mov "","<12> .ASCIZ ;07- 195$: .ASCII ; =XOR byte ADDR BYTE ;07+ .ASCII .ASCII " movb "",-(sp)"<12> .ASCII " xor "",(sp)"<12> .ASCII " mov (sp)+,"<12> .ASCII " movb "","<12> .ASCII .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII " movb "","<12> .ASCII " bic "",2(sp)"<12> .ASCII " bic (sp)+,"<12> .ASCII " bis (sp)+,"<12> .ASCII " movb "","<12> .ASCIZ ;07- 196$: .ASCII .ASCII " clc"<12> .ASCIZ " ror "<12> 197$: .ASCII .ASCII " clc"<12> .ASCII " ror "<12> .ASCIZ " mov "","<12> ; <<=, >>=, DIV MOD MUL ;u6+ ; INT/CHAR ADDR <- INT ANY 198$: .ASCII .ASCII ;12+ BRANCH 1983$ .ASCII .ASCII " mov "",-(sp)"<12> BRANCH 1982$ .ASCIZ 199$: ; (same, but for CHAR> .ASCII ;u8 .ASCII BRANCH 1983$ .ASCII .ASCII " mov "",-(sp)"<12> BRANCH 1982$ .ASCIZ 1982$: ; No hardware EIS .ASCII " .globl "<176>"i"<12> .ASCII " jsr pc,"<176>"i"<12> .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov"" r0,"<12> .ASCIZ 1983$: ; If hardware EIS ;12- .ASCII .BYTE .ASCII " mov"" "","<12> .ASCII " ash (sp)+,"<12> .ASCII " mov"" "","<12> .ASCII .ASCII .BYTE .ASCII " neg (sp)"<12> .ASCII " mov"" "","<12> .ASCII " ash (sp)+,"<12> .ASCII " mov"" "","<12> .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> ;same reg bug .ASCII " mul (sp)+,r1"<12> ;as for divide .ASCII " mov"" r1,"<12> .ASCII ; Result in r1 (should be ) .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> ;register bug .ASCII " sxt r0"<12> ;here, too .ASCII " div (sp)+,r0"<12> .ASCII " mov"" r0,"<12> .ASCII .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> .ASCII " sxt r0"<12> .ASCII " div (sp)+,r0"<12> .ASCII " mov"" r1,"<12> .ASCII ; Result in r1 (should be ) .ASCIZ ; <<=, DIV MOD MUL ** Note: NO >>= ** ;u8+ ; INT/CHAR ADDR <- INT EASY 1981$: ;12+ .ASCII BRANCH 1993$ .ASCII ; non-EIS int. .ASCII .ASCII " mov "",-(sp)"<12> BRANCH 1992$ .ASCIZ 1991$: ; (same, but for CHAR> .ASCII BRANCH 1993$ .ASCII .ASCII .ASCII " movb "",r0"<12> .ASCII " mov r0,-(sp)"<12> BRANCH 1992$ .ASCIZ 1992$: .ASCII " .globl "<176>"i"<12> .ASCII " jsr pc,"<176>"i"<12> .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov"" r0,"<12> .ASCIZ 1993$: ; EIS ops ;12- .BYTE .ASCII .BYTE .ASCII " mov"" "","<12> .ASCII " ash "","<12> .ASCII " mov"" "","<12> .ASCII .ASCII .BYTE .ASCII "bug @ 1983$"<12> ;Can't use easy table for ARA ;12 .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> .ASCII " mul "",r1"<12> .ASCII " mov"" r1,"<12> .ASCII ; Result in r1 (should be ) .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> .ASCII " sxt r0"<12> .ASCII " div "",r0"<12> .ASCII " mov"" r0,"<12> .ASCII .ASCII .ASCII .BYTE .ASCII " mov"" "",r1"<12> .ASCII " sxt r0"<12> .ASCII " div "",r0"<12> .ASCII " mov"" r1,"<12> .ASCII ; Result in r1 (should be ) .ASCIZ ;End of EIS ;u8-/12 200$: .ASCII .ASCIZ " movb (""),"<12> 201$: .ASCII .ASCIZ " mov (""),"<12> 202$: .ASCII .ASCII " mov 2(""),"<12> .ASCIZ " mov (""),"<12> 203$: .ASCII .ASCII " clc"<12> .ASCII " ror "<12> .ASCIZ " asr "<12> ;u3 204$: .ASCII .ASCII " clc"<12> .ASCII " ror "<12> .ASCII " asr "<12> ;u3 .ASCIZ " asr "<12> ;u3 205$: .ASCII .ASCII " clc"<12> .ASCII " ror "<12> .ASCII " asr "<12> ;u3 .ASCII " asr "<12> ;u3 .ASCIZ " asr "<12> ;u3 206$: .ASCII .ASCII " clrb "<12> .ASCIZ " swab "<12> 207$: .ASCII .ASCII " clrb "<12> .ASCII " swab "<12> .ASCIZ " "" "<12> 208$: .ASCII .ASCII .ASCII " .globl "<176>"u"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"u"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCIZ 209$: .ASCII .ASCII " "" "<12> .ASCIZ " ror "<12> 210$: .ASCII .ASCII " "" "<12> .ASCII " ror "<12> .ASCII " "" "<12> .ASCIZ " ror "<12> 211$: .ASCII .ASCII " swab "<12> .ASCIZ " clrb "<12> 212$: .ASCII .ASCII " swab "<12> .ASCII " clrb "<12> .ASCIZ " "" "<12> 213$: .ASCII .ASCII " "" "<12> .ASCIZ " rol "<12> 214$: .ASCII .ASCII " "" "<12> .ASCII " rol "<12> .ASCII " "" "<12> .ASCIZ " rol "<12> ; Left shift long, CON16 ;u12+ 2140$: .ASCII .ASCII " mov "","<12> .ASCIZ " clr "<12> ;u12- 215$: .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCII " mov "","<12> .ASCIZ " mov "","<12> 216$: .ASCII .ASCII " mov "","<12> .ASCII " mov "","<12> .ASCII " "" "","<12> .ASCIZ " "" "<12> 217$: .ASCII .ASCII " mov (sp),-(sp)"<12> .ASCII " add $2,(sp)"<12> .ASCII " mov *(sp),"<12> .ASCII " "" "",*(sp)+"<12> .ASCII " mov *(sp),"<12> .ASCIZ " "" *(sp)+"<12> 218$: .ASCII " clr "<12> .ASCIZ " clr "<12> 219$: .ASCII .ASCII .ASCIZ " mov"" "","<12> 220$: .ASCII .ASCII .ASCIZ " mov"" "",*(sp)+"<12> 221$: .ASCII .ASCII .ASCII " mov "","<12> .ASCIZ " mov "","<12> 222$: .ASCII .ASCII .ASCII " mov "",*(sp)"<12> .ASCII " add $2,(sp)"<12> .ASCIZ " mov "",*(sp)+"<12> 223$: .ASCII .ASCII .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r0,"<12> .ASCII " mov r1,"<12> .ASCIZ 224$: .ASCII .ASCII .ASCII " mov 4(sp),r0"<12> .ASCII " mov 2(r0),-(sp)"<12> .ASCII " mov (r0),-(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r0,*(sp)"<12> .ASCII " add $2,(sp)"<12> .ASCII " mov r1,*(sp)+"<12> .ASCIZ 225$: .ASCII .ASCII " clrb "<12> .ASCII " bisb "","<12> .ASCII " swab "<12> .ASCII " clrb "<12> .ASCII " swab "<12> .ASCII " asr "<12> .ASCIZ " ror "<12> ; Shift right long, CON16 ;u12+ 2250$: .ASCII .ASCII " mov "","<12> .IF NE C$$SXT ;14 .ASCIZ " sxt "<12> .IFF ;14+ .ASCII " clr "<12> .ASCII " tst "<12> .ASCII " .word 0100001 / bpl .+4"<12> .ASCIZ " dec "<12> .ENDC ;14- 226$: .ASCII .ASCII .ASCII " .globl "<176>"li"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"li"<12> ; DGC01/02 .ASCII " add $6,sp"<12> .ASCII " mov r0,"<12> .ASCII " mov r1,"<12> .ASCIZ 227$: .ASCII .ASCII .ASCII " mov 2(sp),r0"<12> ; JAM03 .ASCII " mov 2(r0),-(sp)"<12> .ASCII " mov (r0),-(sp)"<12> .ASCII " .globl "<176>"li"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"li"<12> ; DGC01/02 .ASCII " add $6,sp"<12> .ASCII " mov r0,*(sp)"<12> .ASCII " add $2,(sp)"<12> .ASCII " mov r1,*(sp)+"<12> .ASCIZ 228$: .ASCII .ASCII " asr "<12> .ASCII " ror "<12> .ASCII " mov "","<12> ;u12 .ASCIZ " mov "","<12> ;u12 2280$: ;LNG ADDR >> CON2 ;u12+ .ASCII .ASCII " "" "<12> .ASCII " ror "<12> .ASCII " "" "<12> .ASCII " ror "<12> BRANCH 2283$ ;Common exit ;14 2281$: ;LNG ADDR >> CON16 .ASCII .ASCII " mov "","<12> .IF NE C$$SXT ;14 .ASCII " sxt "<12> .IFF ;14+ .ASCII " clr "<12> .ASCII " tst "<12> .ASCII " .word 0100001 / bpl .+4"<12> .ASCII " dec "<12> .ENDC 2283$: ;Common store sequence ;14- .ASCII " mov "","<12> .ASCIZ " mov "","<12> 229$: .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " .globl "<176>"u"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"u"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov r0,"<12> .ASCIZ 230$: .ASCII .ASCII .ASCII " mov *2(sp),-(sp)"<12> .ASCII " .globl "<176>"u"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"u"<12> ; DGC01/02 .ASCII " cmp (sp)+,(sp)+"<12> .ASCII " mov r0,*(sp)+"<12> .ASCIZ 231$: .ASCII .ASCII " asl "<12> .ASCII " rol "<12> .ASCII " mov "","<12> .ASCIZ " mov "","<12> 2310$: ;LNG ADDR << CON2 ;u12+ .ASCII .ASCII " "" "<12> .ASCII " rol "<12> .ASCII " "" "<12> .ASCII " rol "<12> BRANCH 2312$ ; Common exit sequence ;14 2311$: ;LNG ADDR << CON16 .ASCII .ASCII " mov "","<12> .ASCII " clr "<12> 2312$: ; Exit sequence for 2310$ ;14 .ASCII " mov "","<12> .ASCIZ " mov "","<12> ;?? CCG has AL.2 ;14;u12- 232$: ; CVR LNG -> INT, CHR ;u6+ .ASCII .ASCIZ " mov"" "","<12> ;u6-/13 233$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 234$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 235$: .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 236$: .ASCII .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 237$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCII " "" "<12> .ASCIZ 238$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 239$: .ASCII .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ 240$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCII " "" (sp)+,"<12> .ASCII " "" "<12> .ASCIZ 241$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCIZ 242$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCIZ 243$: .ASCII .ASCII " "" "","<12> .ASCIZ 244$: .ASCII .ASCII .ASCII " "" "","<12> .ASCIZ 245$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCIZ 246$: .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCIZ 247$: .ASCII .ASCII .ASCII " "" "","<12> .ASCII " "" "","<12> .ASCIZ 248$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCII " "" (sp)+,"<12> .ASCIZ 249$: .ASCII .ASCII .ASCII " .globl "<176>"li"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"li"<12> ; DGC01/02 .ASCII " add $6,sp"<12> .ASCIZ ; PUSH LNG, LNG RESULT = LNG 270$: .ASCII .ASCII " clr -(sp)"<12> .ASCII .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCIZ ; Result in r0,r1 271$: .ASCII .ASCII " clr -(sp)"<12> .ASCII " mov "",-(sp)"<12> .ASCII " mov "",-(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r0,"<12> .ASCII " mov r1,"<12> .ASCIZ ; Result in r0,r1 272$: .ASCII .ASCII .ASCII " clr -(sp)"<12> .ASCII " mov 4(sp),r0"<12> .ASCII " mov 2(r0),-(sp)"<12> .ASCII " mov (r0),-(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r0,*(sp)"<12> .ASCII " add $2,(sp)"<12> .ASCII " mov r1,*(sp)+"<12> .ASCIZ ; Result in r0,r1 ; PUSH LNG RESULT = UNS 280$: .ASCII .ASCII " clr -(sp)"<12> .ASCII .ASCII " clr -(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCIZ 281$: .ASCII .ASCII " clr -(sp)"<12> .ASCII " mov "",-(sp)"<12> .ASCII " clr -(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r1,"<12> .ASCIZ 282$: .ASCII .ASCII .ASCII " clr -(sp)"<12> .ASCII " mov *4(sp),-(sp)"<12> .ASCII " clr -(sp)"<12> .ASCII " .globl "<176>"l"<12> ; DGC01/02 .ASCII " jsr pc,"<176>"l"<12> ; DGC01/02 .ASCII " add $10,sp"<12> .ASCII " mov r1,*(sp)+"<12> .ASCIZ .ASCIZ ; ; FLOATING POINT CODE BURSTS ;u1+ ; 300$: ;FLT ADD SUB MUL DIV MOD, EASY .ASCII .ASCII .ASCII .ASCIZ " ""f "","<12> 301$: ;FLT ADD SUB MUL DIV MOD, HARD .ASCII .ASCII .ASCII .ASCIZ " ""f (sp)+,"<12> 302$: ;FLT NEG .ASCII .ASCII .ASCIZ " ""f "<12> 310$: ;DBL ADD SUB MUL DIV MOD, EASY .ASCII .ASCII .ASCII .ASCIZ " ""f "","<12> 311$: ;DBL ADD SUB MUL DIV MOD, HARD .ASCII .ASCII .ASCII .ASCIZ " ""f (sp)+,"<12> 312$: ;DBL NEG .ASCII .ASCII .ASCIZ " ""f "<12> 320$: ;FLT STAR EASY ;u6+ .ASCII .ASCII " mov "",r0"<12> ;u7 .ASCII .ASCIZ " ldf (r0),"<12> ;u7 321$: ;FLT STAR HARD .ASCII .ASCII .ASCIZ " ldf *(sp)+,"<12> 330$: ;DBL STAR EASY .ASCII .ASCII " mov "",r0"<12> ;u7 .ASCII .ASCIZ " ldd (r0),"<12> ;u7 331$: ;DBL STAR HARD .ASCII .ASCII .ASCIZ " ldd *(sp)+,"<12> 340$: ;FLT LEAF .ASCII .ASCII .ASCIZ " ldf "","<12> 350$: ;DBL LEAF .ASCII .ASCII .ASCIZ " ldd "","<12> ;u6- 400$: ;FLT <- CHR .ASCII ;u8 .ASCII " movb "",r0"<12> .ASCII .ASCII .ASCIZ " ldcif r0,"<12> 410$: ;DBL <- CHR .ASCII ;u8 .ASCII " movb "",r0"<12> .ASCII .ASCII .ASCIZ " ldcid r0,"<12> 401$: ;FLT <- INT .ASCII ;u8 .ASCII .ASCII .ASCIZ " ldcif "","<12> 411$: ;DBL <- INT .ASCII ;u8 .ASCII .ASCII .ASCIZ " ldcid "","<12> 402$: ;FLT <- UNS .ASCII ;u8 .ASCII " clr -(sp)"<12> .ASCII .ASCII .ASCIZ " ldclf (sp)+,"<12> 412$: ;DBL <- UNS .ASCII ;u8 .ASCII " clr -(sp)"<12> .ASCII .ASCII .ASCIZ " ldcld (sp)+,"<12> 4030$: ;FLT ANY <- LNG ADDR ;u6+ .ASCII .ASCII .ASCIZ " ldclf "","<12> ;u6- 403$: ;FLT <- LNG .ASCII ;u8 .ASCII .ASCII .ASCIZ " ldclf (sp)+,"<12> 4130$: ;DBL ANY <- LNG ADDR ;u6+ .ASCII .ASCII .ASCIZ " ldcld "","<12> ;u6- 413$: ;DBL ANY <- LNG ANY .ASCII ;u8 .ASCII .ASCII .ASCIZ " ldcld (sp)+,"<12> 404$: ;FLT ANY <- DBL ANY ;u6+ .ASCII ;u8 .ASCII .ASCIZ " ldcdf "","<12> 414$: ;DBL ANY <- FLT ANY .ASCII ;u8 .ASCII .ASCIZ " ldcfd "","<12> ;u6- 415$: ;INT, CHR <- FLT .ASCII ;u8 .ASCII .ASCII .ASCII " ldf "",r0"<12> .ASCIZ " stcfi r0,"<12> 416$: ;INT, CHR <- DBL .ASCII ;u8 .ASCII .ASCII .ASCII " ldd "",r0"<12> .ASCIZ " stcdi r0,"<12> 417$: ;LNG <- FLT .ASCII ;u8 .ASCII .ASCII .ASCII " ldf "",r0"<12> .ASCII " stcfl r0,-(sp)"<12> .ASCII " mov (sp)+,"<12> ;u6/u9 .ASCIZ " mov (sp)+,"<12> ;u9 418$: ;LNG <- DBL .ASCII ;u8 .ASCII .ASCII .ASCII " ldd "",r0"<12> .ASCII " stcdl r0,-(sp)"<12> .ASCII " mov (sp)+,"<12> ;u6/u9 .ASCIZ " mov (sp)+,"<12> ;u9 409$: ; UNS <- FLT ;u11+ .ASCII .ASCII .ASCII .ASCII " ldf "",r0"<12> .ASCII " stcfl r0,-(sp)"<12> .ASCII " tst (sp)+"<12> .ASCIZ " mov (sp)+,"<12> 419$: ; UNS <- DBL .ASCII .ASCII .ASCII .ASCII " ldd "",r0"<12> .ASCII " stcdl r0,-(sp)"<12> .ASCII " tst (sp)+"<12> .ASCIZ " mov (sp)+,"<12> ;u11- ;ASSIGNED FLT ADD MUL 420$: ; FLT ADDR <- FLT ANY .ASCII .ASCII .ASCII " ""f "","<12> .ASCIZ " stf "","<12> ;ASSIGNED FLT SUB DIV MOD 421$: ; FLT ADDR <- FLT ANY .ASCII .ASCII .ASCII " ldf "","<12> .ASCII " ""f (sp)+,"<12> .ASCIZ " stf "","<12> ;ASSIGNED FLT ADD SUB MUL DIV MOD 422$: ; FLT ANY <- FLT ANY .ASCII .ASCII .ASCII .ASCII " ldf *4(sp),"<12> .ASCII " ""f (sp)+,"<12> .ASCIZ " stf "",*(sp)+"<12> ;ASSIGNED DBL ADD MUL 430$: ; DBL ADDR <- DBL ANY .ASCII .ASCII .ASCII " ""d "","<12> .ASCIZ " std "","<12> ;ASSIGNED DBL SUB DIV MOD 431$: ; DBL ADDR <- DBL ANY .ASCII .ASCII .ASCII " ldd "","<12> .ASCII " ""d (sp)+,"<12> .ASCIZ " std "","<12> ;ASSIGNED DBL ADD SUB MUL DIV MOD 432$: ; DBL ANY <- DBL ANY .ASCII .ASCII ;GOTTA PUSHA DOUBLE .ASCII .ASCII " ldd *10(sp),"<12> .ASCII " ""d (sp)+,"<12> .ASCIZ " std "",*(sp)+"<12> 440$: ;ASSIGN FLT (EASY) .ASCII .ASCII .ASCII .ASCIZ " stf "","<12> 450$: ;ASSIGN DBL (EASY) .ASCII .ASCII .ASCII .ASCIZ " std "","<12> 460$: ;ASSIGN FLT (HARD) .ASCII .ASCII .ASCII .ASCIZ " stf "",*(sp)+"<12> 470$: ;ASSIGN DBL (HARD) .ASCII .ASCII .ASCII .ASCIZ " std "",*(sp)+"<12> ;u1- ; ; ASSIGNED MUL/DIV/MOD BY CONSTANT ;u6+ ; Assigned signed shifts 501$: .ASCII " "" "<12> ; SHIFT 2 500$: .ASCII " "" "<12> ; SHIFT 1 .ASCIZ " mov"" "","<12> 502$: .ASCII " mov"" "","<12> ; SHIFT 3 .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " mov"" "","<12> 503$: .ASCII " mov"" "","<12> ; SHIFT 4 .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " mov"" "","<12> 504$: .ASCII " mov"" "","<12> ; SHIFT 5 .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCII " "" "<12> .ASCIZ " mov"" "","<12> 509$: .ASCII " swab "<12> ; LEFT SHIFT 8 .ASCII " clrb "<12> .ASCIZ " mov"" "","<12> ; Unsigned assigned shifts by a constant ( right only ) 510$: .ASCII " clc"<12> ; SHIFT 1 .ASCII " ror"" "<12> .ASCIZ " mov"" "","<12> 511$: .ASCII " clc"<12> ; SHIFT 2 .ASCII " ror"" "<12> .ASCII " asr"" "<12> .ASCIZ " mov"" "","<12> 512$: .ASCII " mov"" "","<12> ; SHIFT 3 .ASCII " clc"<12> .ASCII " ror"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCIZ " mov"" "","<12> 513$: .ASCII " mov"" "","<12> ; SHIFT 4 .ASCII " clc"<12> .ASCII " ror"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCIZ " mov"" "","<12> 514$: .ASCII " mov"" "","<12> ; SHIFT 5 .ASCII " clc"<12> .ASCII " ror"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCII " asr"" "<12> .ASCIZ " mov"" "","<12> 519$: .ASCII " clrb "<12> ; Right shift 8 .ASCII " swab "<12> .ASCIZ " mov"" "","<12> .EVEN ; CTAB ;+ ; ** CTAB - SET CODES ; ; THIS CODE TABLE IS USED TO SET THE CONDITION CODES TO THE STATE ; DESCRIBED IN THE PASS 2 OPDOPE TABLE FLAGS. IT CONTAINS ONLY TWO ; SPECIAL CASES; RELATIONALS AND THE BIT TEST. CARE HAS BEEN TAKEN ; TO PERFORM BYTE OPERATIONS DIRECTLY, IF POSSIBLE. ; ; THERE IS ALSO AN ENTRY FOR '++' AND '--'. IF THE ITEM IS A BYTE ; AND THE CONSTANT IS 1 AN INCB OR DECB MAY BE USED. ; ; THERE ARE NO ENTRIES IN THE TABLE FOR LONGS. LONGS ARE DETECTED ; BY JUMPC AND ARE HANDLED BY A SPECIAL ROUTINE. ;- CTAB: .WORD OP.LOD,10$ ;LEAF NODES .WORD OP.EQ, 20$ ;SIGNED RELATIONALS .WORD OP.NE, 20$ ; .WORD OP.LT, 20$ ; .WORD OP.LE, 20$ ; .WORD OP.GE, 20$ ; .WORD OP.GT, 20$ ; .WORD OP.LTU,20$ ;UNSIGNED RELATIONALS .WORD OP.LEU,20$ ; .WORD OP.GEU,20$ ; .WORD OP.GTU,20$ ; .WORD OP.INB,30$ ;'--' AND '++' PREFIX .WORD OP.DEB,30$ ; .WORD OP.BIT,40$ ;BIT TEST .WORD 0 ;END OF TABLE ; ; LEAF NODES. ; 10$: TAB 100$, INT, ANY, INT, ANY TAB 100$, CHR, ANY, CHR, ANY TABEND ; ; RELATIONALS. ; 20$: TAB 101$, INT, ANY, INT, ADDR TAB 101$, INT, ANY, CHR, ADDR TAB 101$, CHR, ANY, CHR, ADDR TAB 101$, CHR, ANY, INT, ADDR TAB 102$, INT, ANY, INT, EASY TAB 102$, INT, ANY, CHR, EASY TAB 102$, CHR, ANY, CHR, EASY TAB 102$, CHR, ANY, INT, EASY TAB 103$, INT, ANY, INT, ANY TAB 103$, CHR, ANY, INT, ANY TAB 110$, FLT, EASY, FLT, ANY ;u1+ TAB 120$, FLT, ANY, FLT, ANY TAB 130$, DBL, EASY, DBL, ANY TAB 140$, DBL, ANY, DBL, ANY ;u1- TABEND ; ; PREFIX INCREMENT. ; PREFIX DECREMENT. ; 30$: TAB 104$, INT, ANY, INT, CON1 TAB 104$, CHR, ANY, INT, CON1 TAB 105$, INT, ANY, INT, ADDR TABEND ; ; BIT. ; 40$: TAB 106$, INT, ANY, INT, ADDR TAB 106$, INT, ANY, CHR, ADDR TAB 106$, CHR, ANY, CHR, ADDR TAB 106$, CHR, ANY, INT, ADDR TAB 107$, INT, ANY, INT, EASY TAB 107$, INT, ANY, CHR, EASY TAB 107$, CHR, ANY, CHR, EASY TAB 107$, CHR, ANY, INT, EASY TAB 108$, INT, ANY, INT, ANY TAB 108$, CHR, ANY, INT, ANY TABEND ; ; CODE BURSTS. ; 100$: .ASCIZ " tst"" "<12> 101$: .ASCII .ASCIZ " cmp"" "","<12> 102$: .ASCII .ASCII .ASCIZ " cmp"" "","<12> 103$: .ASCII .ASCII .ASCIZ " cmp "",(sp)+"<12> 104$: .ASCII .ASCIZ " "" "<12> 105$: .ASCII .ASCIZ " "" "","<12> 106$: .ASCII .ASCIZ " bit"" "","<12> 107$: .ASCII .ASCII .ASCIZ " bit"" "","<12> 108$: .ASCII .ASCII .ASCIZ " bit "",(sp)+"<12> ; ; FLOATING COMPARE CODE BURSTS ;u1+ ; 110$: ;FLT EASY FLT ANY .ASCII .ASCII .ASCII .ASCIZ " cmpf "","<12> 120$: ;FLT ANY FLT ANY .ASCII .ASCII .ASCII .ASCIZ " cmpf (sp)+,"<12> 130$: ;DBL EASY DBL ANY .ASCII .ASCII .ASCII .ASCIZ " cmpd "","<12> 140$: ;DBL ANY DBL ANY .ASCII .ASCII .ASCII .ASCIZ " cmpd (sp)+,"<12> .EVEN ; ETAB ; ;+ ; ** ETAB - EXPRESSION FOR SIDE EFFECTS ; ; THIS TABLE IS USED TO EVALUATE AN EXPRESSION FOR SIDE EFFECTS. IT ; IS A SMALL TABLE THAT KNOWS ONLY A FEW SPECIAL CASES; QUIRKS USED ; FOR TOP LEVEL ASSIGNMENT VIA DIRECT MOV, '++' AND '--' WHEN THE ; VALUE IS NOT SAVED, AND BINARY ASSIGNMENTS ('=+' ET. ALL) IF THE ; RESULT IS NOT NEEDED. ;- ETAB: .WORD OP.INA,10$ ;++ and -- .WORD OP.INB,10$ ; .WORD OP.DEA,10$ ; .WORD OP.DEB,10$ ; .WORD OP.ADA,30$ ;+= and -= .WORD OP.SBA,30$ ; .WORD OP.BCA,40$ ;BIC= AND OR= .WORD OP.ORA,40$ ;|= .WORD OP.ASG,50$ ;= .WORD OP.ALA,61$ ;<<= AND >>= .WORD OP.ARA,60$ ; .WORD OP.XRA,65$ ;^= .WORD 0 ;END OF TABLE ; ; ++ ; -- ; 10$: TAB 100$, INT, ANY, INT, CON1 TAB 100$, CHR, ANY, INT, CON1 TAB 101$, INT, ANY, INT, ADDR TAB 138$, LNG, ANY, INT, ADDR TABEND ; ; += ; -= ; 30$: TAB 100$, INT, ANY, INT, CON1 TAB 100$, CHR, ANY, INT, CON1 TAB 139$, CHR, ADDR, INT, EASY TAB 148$, INT, ADDR, INT, ANY TAB 149$, LNG, ADDR, INT, ANY TAB 150$, LNG, ADDR, LNG, ANY TAB 140$, CHR, EASY, INT, ADDR TAB 101$, INT, ANY, INT, EASY TAB 105$, LNG, ANY, INT, EASY TAB 106$, LNG, ANY, LNG, EASY TAB 141$, CHR, ANY, INT, ANY TAB 107$, INT, ANY, INT, ANY TAB 108$, LNG, ANY, INT, ANY TAB 109$, LNG, ANY, LNG, ANY TABEND ; ; BIC= ; OR= ; 40$: TAB 101$, INT, ANY, INT, EASY TAB 101$, CHR, ANY, CHR, EASY TAB 101$, INT, ANY, CHR, EASY TAB 101$, CHR, ANY, INT, EASY TAB 110$, LNG, ANY, INT, EASY TAB 111$, LNG, ANY, LNG, EASY TAB 107$, INT, ANY, INT, ANY TAB 107$, CHR, ANY, INT, ANY TAB 112$, LNG, ANY, INT, ANY TAB 113$, LNG, ANY, LNG, ANY TABEND ; ; = ; 50$: TAB 100$, INT, ANY, INT, CON0 TAB 100$, CHR, ANY, INT, CON0 TAB 114$, LNG, ANY, INT, CON0 TAB 115$, INT, ADDR, INT, ANY TAB 115$, CHR, ADDR, CHR, ANY TAB 115$, CHR, ADDR, INT, ANY TAB 117$, LNG, ADDR, LNG, ANY TAB 119$, INT, ADDR, LNG, ANY TAB 145$, LNG, ADDR, INT, ANY TAB 121$, LNG, ADDR, UNS, ANY TAB 124$, INT, ANY, INT, ADDR TAB 124$, CHR, ANY, CHR, ADDR TAB 124$, CHR, ANY, INT, ADDR TAB 101$, INT, ANY, INT, EASY TAB 101$, CHR, ANY, CHR, EASY TAB 101$, CHR, ANY, INT, EASY TAB 125$, LNG, ANY, LNG, EASY TAB 146$, LNG, ANY, INT, EASY TAB 127$, LNG, ANY, UNS, EASY TAB 128$, INT, ANY, LNG, EASY TAB 129$, INT, ANY, INT, ANY TAB 129$, CHR, ANY, INT, ANY TAB 131$, LNG, ANY, LNG, ANY TAB 147$, LNG, ANY, INT, ANY TAB 134$, LNG, ANY, UNS, ANY TAB 135$, INT, ANY, LNG, ANY TAB 200$, FLT, ANY, INT, CON0 ;u2+ ;; TAB 117$, FLT, ADDR, FLT, ADDR ;u5/16 TAB 250$, FLT, ADDR, DBL, ANY TAB 201$, DBL, ANY, INT, CON0 TAB 251$, DBL, ADDR, FLT, ANY TAB 400$, INT, ADDR, FLT, ANY TAB 409$, UNS, ADDR, FLT, ANY ;u11 ;u5 TAB 410$, CHR, ADDR, FLT, ANY TAB 420$, LNG, ADDR, FLT, ANY TAB 401$, INT, ADDR, DBL, ANY TAB 419$, UNS, ADDR, DBL, ANY ;u11 ;u5 TAB 411$, CHR, ADDR, DBL, ANY TAB 421$, LNG, ADDR, DBL, ANY TABEND ; ; >>= ; 60$: TAB 500$, INT, ANY, INT, CON1 ;u6+ TAB 501$, INT, ANY, INT, CON2 TAB 502$, INT, ANY, INT, CON3 TAB 500$, CHR, ANY, INT, CON1 TAB 501$, CHR, ANY, INT, CON2 TAB 502$, CHR, ANY, INT, CON3 TAB 510$, UNS, ANY, INT, CON1 TAB 511$, UNS, ANY, INT, CON2 TAB 512$, UNS, ANY, INT, CON3 TAB 519$, UNS, ANY, INT, CON8 ;u6- TAB 143$, LNG, ANY, INT, CON1 TAB 1430$, LNG, ANY, INT, CON2 ;u12 TAB 1431$, LNG, ANY, INT, CON16 ;u12 TABEND ; ; <<= ; 61$: TAB 500$, INT, ANY, INT, CON1 ;u6+ TAB 501$, INT, ANY, INT, CON2 TAB 502$, INT, ANY, INT, CON3 TAB 509$, INT, ANY, INT, CON8 TAB 500$, CHR, ANY, INT, CON1 TAB 501$, CHR, ANY, INT, CON2 TAB 502$, CHR, ANY, INT, CON3 TAB 144$, LNG, ANY, INT, CON1 TAB 1440$, LNG, ANY, INT, CON2 ;u12 TAB 1441$, LNG, ANY, INT, CON16 ;u12 TABEND ; ASSIGNED EXCLUSIVE OR ;u7+ 65$: TAB 151$, INT, ADDR, INT, ANY TAB 152$, LNG, ADDR, INT, ANY TABEND ;u7- ; ; CODE BURSTS. ; 100$: .ASCII .ASCIZ " "" "<12> 101$: .ASCII .ASCII .ASCIZ " "" "","<12> 105$: .ASCII .ASCII .ASCII " "" "","<12> .ASCIZ " "" "<12> 106$: .ASCII .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ " "" "","<12> 107$: .ASCII .ASCII .ASCIZ " "" (sp)+,"<12> 108$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCIZ " "" "<12> 109$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCII " "" (sp)+,"<12> .ASCIZ " "" "<12> 110$: .ASCII .ASCII .ASCIZ " "" "","<12> 111$: .ASCII .ASCII .ASCII " "" "","<12> .ASCIZ " "" "","<12> 112$: .ASCII .ASCII .ASCIZ " "" (sp)+,"<12> 113$: .ASCII .ASCII .ASCII " "" (sp)+,"<12> .ASCIZ " "" (sp)+,"<12> 114$: .ASCII .ASCII " clr "<12> .ASCIZ " clr "<12> 115$: .ASCII .ASCIZ " mov"" "","<12> 117$: .ASCII .ASCII " mov "","<12> .ASCIZ " mov "","<12> 119$: .ASCII .ASCIZ " mov "","<12> 121$: .ASCII .ASCII " mov "","<12> .ASCIZ " clr "<12> 124$: .ASCII .ASCIZ " mov"" "","<12> 125$: .ASCII .ASCII .ASCII " mov "","<12> .ASCIZ " mov "","<12> 127$: .ASCII .ASCII .ASCII " mov "","<12> .ASCIZ " clr "<12> 128$: .ASCII .ASCII .ASCIZ " mov "","<12> 129$: .ASCII .ASCII .ASCIZ " mov"" (sp)+,"<12> 131$: .ASCII ; LNG ANY LNG ANY .ASCII .ASCII " mov (sp)+,"<12> .ASCIZ " mov (sp)+,"<12> 134$: .ASCII .ASCII .ASCII " mov (sp)+,"<12> .ASCIZ " clr "<12> 135$: .ASCII .ASCII .ASCII " tst (sp)+"<12> .ASCIZ " mov (sp)+,"<12> 138$: .ASCII .ASCII " "" "","<12> .ASCIZ " "" "<12> 139$: .ASCII .ASCII " movb "","<12> .ASCII " "" "","<12> .ASCIZ " movb "","<12> 140$: .ASCII .ASCII " movb "","<12> .ASCII " "" "","<12> .ASCIZ " movb "","<12> 141$: .ASCII .ASCII .ASCII " movb *2(sp),"<12> .ASCII " "" (sp)+,"<12> .ASCIZ " movb "",*(sp)+"<12> ;142$: .ASCII ; .ASCII " clc"<12> ; .ASCIZ " ror "<12> 143$: .ASCII BRANCH 14300$ ;Common exit ;14 ; .ASCII " "" "<12> ; .ASCIZ " ror "<12> 1430$: ;LNG >> CON2 ;u12+ .ASCII .ASCII " "" "<12> .ASCII " ror "<12> 14300$: .ASCII " "" "<12> ;14 .ASCIZ " ror "<12> 1431$: ;LNG >> CON16 .ASCII .ASCII " mov "","<12> .IF NE C$$SXT ;14 .ASCIZ " sxt "<12> .IFF ;14+ .ASCII " clr "<12> .ASCII " tst "<12> .ASCII " bpl 0f"<12> .ASCII " dec "<12> .ASCIZ "0:"<12> .ENDC ;14- 144$: .ASCII .ASCII " "" "<12> .ASCIZ " rol "<12> 1440$: ;LNG << CON2 ;u12+ .ASCII .ASCII " "" "<12> .ASCII " rol "<12> .ASCII " "" "<12> .ASCIZ " rol "<12> 1441$: ;LNG << CON16 .ASCII .ASCII " mov "","<12> .ASCIZ " clr "<12> ;u12- 145$: .ASCII .IF NE C$$SXT ;05+ .ASCII " mov "","<12> .ASCIZ " sxt "<12> .IFF .ASCII " clr "<12> .ASCII " mov "","<12> .ASCII " .word 0100002 / bpl .+4"<12> .ASCIZ " dec "<12> .ENDC ;05- 146$: .ASCII .ASCII .IF NE C$$SXT ;05+ .ASCII " mov "","<12> .ASCIZ " sxt "<12> .IFF .ASCII " clr "<12> .ASCII " mov "","<12> .ASCII " .word 0100002 / bpl .+4"<12> .ASCIZ " dec "<12> .ENDC ;05- 147$: .ASCII .ASCII .IF NE C$$SXT ;05+ .ASCII " mov (sp)+,"<12> .ASCIZ " sxt "<12> .IFF .ASCII " clr "<12> .ASCII " mov (sp)+,"<12> .ASCII " .word 0100002 / bpl .+4"<12> .ASCIZ " dec "<12> .ENDC ;05- 148$: .ASCII .ASCIZ " "" "","<12> 149$: .ASCII .ASCII " "" "","<12> .ASCIZ " "" "<12> 150$: .ASCII .ASCII " "" "","<12> .ASCII " "" "<12> .ASCIZ " "" "","<12> 151$: .ASCII ;u7+ .ASCII ;12+ .ASCII " xor "","<12> .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " bic "","<12> .ASCII " bic (sp)+,"<12> .ASCII " bis "","<12> .ASCIZ ;12- 152$: .ASCII .ASCII ;12+ .ASCII " xor "","<12> ;u7- .ASCII .ASCII " mov "",-(sp)"<12> .ASCII " bic "","<12> .ASCII " bic (sp)+,"<12> .ASCII " bis "","<12> .ASCIZ ;12- ; ; FLOATING CODE ;u2+ ; 200$: ; FLT <- 0 .ASCII .ASCII .ASCIZ " clrf "<12> 250$: ; FLT ADDR <- DBL ANY .ASCII .ASCII .ASCIZ " stcdf "","<12> 400$: ; INT ADDR <- FLT ANY .ASCII .ASCII .ASCII .ASCIZ " stcfi "","<12> 409$: ; UNS ADDR <- FLT ANY ;u11+ .ASCII .ASCII .ASCII .ASCII " stcfl "",-(sp)"<12> .ASCII " tst (sp)+"<12> .ASCIZ " mov (sp)+,"<12> 420$: ; LNG ADDR <- FLT ANY .ASCII .ASCII .ASCII .ASCIZ " stcfl "","<12> ; DOUBLE CODE 201$: ; DBL <- 0 .ASCII .ASCII .ASCIZ " clrd "<12> 251$: ; DBL ADDR <- FLT ANY .ASCII .ASCII .ASCIZ " stcfd "","<12> 401$: ; INT ADDR <- DBL ANY .ASCII .ASCII .ASCII .ASCIZ " stcdi "","<12> 419$: ; UNS ADDR <- FLT ANY ;u11+ .ASCII .ASCII .ASCII .ASCII " stcdl "",-(sp)"<12> .ASCII " tst (sp)+"<12> .ASCIZ " mov (sp)+,"<12> 421$: ; LNG ADDR <- DBL ANY .ASCII .ASCII .ASCII .ASCIZ " stcdl "","<12> ; ; ASSIGNED MUL/DIV/MOD BY CONSTANT ;u6+ ; ; Assigned signed shifts 500$: .BYTE .ASCIZ " "" "<12> ; SHIFT 1 501$: .BYTE .ASCII " "" "<12> ; SHIFT 2 .ASCIZ " "" "<12> 502$: .BYTE .ASCII " "" "<12> ; SHIFT 3 .ASCII " "" "<12> .ASCIZ " "" "<12> 509$: .BYTE .ASCII " swab "<12> ; LEFT SHIFT 8 .ASCIZ " clrb "<12> ; Unsigned assigned shifts by a constant ( right only ) 510$: .BYTE .ASCII " clc"<12> ; SHIFT 1 .ASCIZ " ror"" "<12> 511$: .BYTE .ASCII " clc"<12> ; SHIFT 2 .ASCII " ror"" "<12> .ASCIZ " asr"" "<12> 512$: .BYTE .ASCII " clc"<12> ; SHIFT 3 .ASCII " ror"" "<12> .ASCII " asr"" "<12> .ASCIZ " asr"" "<12> 519$: .BYTE .ASCII " clrb "<12> ; Right shift 8 .ASCIZ " swab "<12> .EVEN .END