TO TEST MACROS MACRO V05.04 Sunday 14-Feb-88 16:09 Page 1 1 .TITLE TO TEST MACROS 2 .ENABL AMA ;TO ENSURE CLARITY OF TEST RESULTS. 3 4 ; DONT FORGET TO INSTALL AN ".MCALL" FOR EVERY MACRO 5 ; YOU REQUIRE. 6 .MCALL DTOI,DTOL,FADD,FCMP,FDIV,FMOV,FMUL,FNEG,FSUB 7 .MCALL ITOD,LTOD 8 .MCALL ATAN,ATODBL,ATOINT,COS,DTOASC,FSQRT,ITOASC,SIN 9 10 ; AND YOU ALSO HAVE TO DECLARE EVERY EXTERNAL SUBROUTINE 11 ; WHICH YOU ARE GOING TO CALL AS A GLOBAL. 12 .GLOBL ATAN,ATODBL,ATOINT,COS,DTOASC,FSQRT,ITOASC,SIN 13 .GLOBL FLTERR 14 15 000000 AC0 = %0 ;WE CALL THE FLOATING POINT REGISTERS 16 000001 AC1 = %1 ; ...AC0,AC1,... 17 000002 AC2 = %2 ; ...AC2,... 18 000003 AC3 = %3 ; ...AC3, ETC. 19 000244 KEFVEC = 244 ;KEF ERRORS WILL TRAP THROUGH LOC 244. 20 21 ; LET'S ESTABLISH A FEW DATA ITEMS WE CAN USE FOR OUR 22 ; EXAMPLES. 23 000000 042407 147404 173337 A: .FLT4 543.234678 000006 142716 24 000010 000000 000000 000000 B: .FLT4 0 000016 000000 25 000020 041773 040000 000000 C: .FLT4 125.625 000026 000000 26 000030 000000 X: .WORD 0 27 000032 000000 Y: .WORD 0 28 000034 101 123 103 ASCBFR: .ASCIZ /ASCII BUFFR/ 000037 111 111 040 000042 102 125 106 000045 106 122 000 29 000050 061 061 062 ASCNBR: .ASCIZ /11234.65/ 000053 063 064 056 000056 066 065 000 30 .EVEN 31 32 000062 TSTBAS: 33 ; ALL EXAMPLES ARE ENTERED HERE IN THE ORDER IN WHICH 34 ; THE MACROS WHICH IMPLEMENT THEM ARE ENTERED IN THE 35 ; MACRO LIBRARY, "MLIBRY.MAC". 36 37 ;FIRST LET'S SET THE KEF ERROR VECTOR AND 38 ;INITIALIZE THE KEF STATUS REGISTER. 39 000062 012737 000000G 000244 MOV #FLTERR,@#KEFVEC ;SET THE ERROR VECTOR. 40 000070 170127 007600 LDFPS #7600 ;SET KEF STATUS REG TO 41 ;INTERRUPT ON ANY ERROR 42 ;AND SET TO DOUBLE 43 ;PRECISION AND INTEGER 44 ;MODES. 45 46 ;THE FOLLOWING ARE IMPLEMENTED DIRECTLY BY THE 47 ;MACROS WHICH THEY REPRESENT. THAT IS, THESE 48 ;MACROS DO NOT CALL SUBROUTINES. 49 000074 DTOI A,X ;DOUBLE TO INTEGER. TO TEST MACROS MACRO V05.04 Sunday 14-Feb-88 16:09 Page 1-1 50 000106 DTOL A,X ;DOUBLE TO LONG INTEGER. 51 000124 FADD A,B ;ADD DOUBLE. 52 000142 FCMP B,A ;COMPARE DOUBLE. 53 000154 001003 BNE LABEL ;SEE, AN ORDINARY BRANCH 54 ;WILL DO AFTER ANY OF 55 ;THESE "INSTRUCTIONS". 56 000156 FMOV B,AC0 ;FLOATING-POINT REGS ARE 57 ;OKAY AS SOURCES AND 58 ;DESTINATIONS, IN MOST 59 ;CASES. 60 000164 LABEL: FMUL AC0,B ;GOT THE IDEA?!? 61 000200 FNEG B,C ;NEGATE A FLT4 NUMBER. 62 000214 FSUB A,C ;SUBTRACTION TOO. 63 000232 ITOD X,B ;INTEGER TO DOUBLE. 64 000244 LTOD X,B ;LONG TO DOUBLE. 65 66 ;THE EXAMPLES WHICH FOLLOW DO A CALL TO SOME 67 ;SUBROUTINE WHICH DOES THE ACTUAL COMPUTATIONAL 68 ;OR CONVERSION WORK. NOTE THE USE OF VARIOUS 69 ;ADDRESSING MODES IN THESE EXAMPLES. 70 000262 012701 000000' MOV #A,R1 ;POINT R1 AT SOURCE. 71 000266 ATAN (R1)+,B ;PUT ARCTAN OF A INTO B. 72 .LIST ME,BEX 73 000304 012775 000002 000003 MOV #2,@3(R5) 74 000312 ATODBL ASCNBR,@5(R5) ;ASCII TO DOUBLE. 000037 .NTYPE SRCMOD,ASCNBR 000075 .NTYPE DSTMOD,@5(R5) .IF EQ, SRCMOD&60 ;DETECTING REG DEFERRED. (R?) .IF NE, SRCMOD&10 MOV %SRCMOD-10,30002$ .ENDC .ENDC .IF EQ, SRCMOD&50 ;DETECTING AUTOINCR. (R?)+ .IF NE, SRCMOD&20 MOV %SRCMOD-20,30002$ TSTB ASCNBR BNE .-2 TSTB ASCNBR .ENDC .ENDC .IF EQ, DSTMOD&60 ;DETECTING REG DEFERRED. (R?) .IF NE, DSTMOD&10 MOV %DSTMOD-10,30003$ .ENDC .ENDC .IF EQ, DSTMOD&50 ;DETECTING AUTOINCR. (R?)+ .IF NE, DSTMOD&20 MOV %DSTMOD-20,30003$ TSTD @5(R5) .ENDC .ENDC .IF EQ, DSTMOD&40 ;AUTOINCR DEFERRED. @(R?)+ .IF NE, DSTMOD&10 .IF NE, DSTMOD&20 MOV (%DSTMOD-30)+,30003$ .ENDC .ENDC TO TEST MACROS MACRO V05.04 Sunday 14-Feb-88 16:09 Page 1-2 .ENDC .IF NE, DSTMOD&10 ;INDEX DEFERRED. @(R?) AND @X(R?) .IF NE, DSTMOD&20 .IF NE, DSTMOD&40 000312 005775 000005 TST @5(R5) 000316 013737 000314' 000326' MOV .-2,.+10 000324 016537 000000 000340' MOV 0(%DSTMOD-70),30003$ .ENDC .ENDC .ENDC 000332 004537 000000G JSR R5,ATODBL .IF EQ, SRCMOD-67 ;DETECTING PC RELATIVE MODE. ASCNBR ;IF PC RELATIVE MODE. .IFF ;IF NOT PC RELATIVE... 000336 000000 30002$: .WORD 0 ;PLACE FOR ADRS OF SRC. .ENDC .IF EQ, DSTMOD-67 ;DETECTING PC RELATIVE MODE. @5(R5) ;IF PC RELATIVE. .IFF ;IF NOT PC RELATIVE... 000340 000000 30003$: .WORD 0 ;PLACE FOR ADRS OF DST. .ENDC 75 .NLIST ME,BEX 76 000342 ATOINT C,R0 77 000376 COS C,AC1 78 000442 DTOASC AC1,ASCBFR ;DOUBLE TO ASCII. 79 000500 FSQRT AC1,AC1 80 000570 ITOASC #6,ASCBFR ;EVEN IMMEDIATE MODE! 81 000612 SIN AC1,C 82 83 ; THERE! YOU SEE! YOU CAN WRITE FLOATING-POINT CODE THAT 84 ; WILL LOOK AND ACT JUST LIKE OLD, COMFORTABLE, ORDINARY 85 ; MACRO-11, IF YOU WANT TO. 86 87 000062' .END TSTBAS TO TEST MACROS MACRO V05.04 Sunday 14-Feb-88 16:09 Page 1-3 Symbol table A 000000R ASCNBR 000050R COS = ****** G ITOASC= ****** G SRCMOD= 000001 AC0 =%000000 ATAN = ****** G DSTMOD= 000037 KEFVEC= 000244 SRCPL = 000614R AC1 =%000001 ATODBL= ****** G DSTPL = 000526R LABEL 000164R TSTBAS 000062R AC2 =%000002 ATOINT= ****** G DTOASC= ****** G NARG = 000002 X 000030R AC3 =%000003 B 000010R FLTERR= ****** G SIN = ****** G Y 000032R ASCBFR 000034R C 000020R FSQRT = ****** G . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 000656 001 (RW,I,LCL,REL,CON) Errors detected: 0 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 13727 Words ( 54 Pages) Size of core pool: 18432 Words ( 72 Pages) Operating system: RT-11 Elapsed time: 00:00:08.38 ,MTEST=MTEST,MLIBV5.MLB/M