.TITLE FPNOS ; TEST FOR FLOATING-POINT ADDITIONS TO ODT/DDT. ; ; ASSEMBLE AS: ; >MAC FPNOS=FPNOS ; ; TASK-BUILD WITH FPODT AS: ; >TKB FPNOS=FPNOS,LB:[1,1]FPODT/DA ; IF FPODT<>ODT ; OR ; >TKB FPNOS/DA=FPNOS ; IF FPODT=ODT F0=%0 F1=%1 F2=%2 F3=%3 F4=%4 F5=%5 .MCALL SFPA$S,ASTX$S START: LDFPS #7400 ; SINGLE PRECISION, ALL INTERRUPTS SFPA$S #FPTRAP ; SET TRAP ; LOAD FP REGISTERS IN SINGLE-PRECISION -- CHECK AGAINST TABLE BELOW LDF Z,F0 STF F0,F5 LDF Y,F0 STF F0,F4 LDF W,F3 LDF X,F2 LDF V,F1 LDF U,F0 SETD ; LOAD FP REGISTERS IN DOUBLE-PRECISION -- CHECK AGAINST TABLE BELOW LDD Z,F0 STD F0,F5 LDF Y,F0 STD F0,F4 LDD W,F3 LDD X,F2 LDD V,F1 LDD U,F0 ; ERRORS: CLRD %6 ; ILLEGAL INSTRUCTION DIVF #^F0,F0 ; DIVIDE BY 0 STCDI F3,%1 ; INTEGER CONVERSION ERROR DIVD F3,F2 ; UNDERFLOW MULD F5,F3 ; OVERFLOW LDD UND,F0 ; UNDEFINED LOAD BPT ; STOP HERE FPTRAP: CMP (SP)+,(SP)+ ; PURGE FEA/FEC ASTX$S ; TEST NUMBERS .FLT2 1,2,3,4 .FLT2 1E-2,3E4,5E6 .FLT4 -1,-2,-3,-4 .FLT4 -1E2,-3E-4,-5E-6 .FLT2 0 .FLT2 0.123456789123456789123456789 .WORD 177777,177777,177777,177777 ; -INFINITY U: .FLT4 0.123456789123456789123456789 ; F0 V: .FLT4 1.5E-24 ; F1 X: .FLT4 3.14159265358979323846E-4 ; F2 W: .WORD 077777,177777,177777,177777 ; F3 -- CORAL'S INFINITY Y: .FLT4 2.71828182845904523536E2 ; F4 Z: .FLT4 0.43429448190325182765E35 ; F5 UND: .WORD 100000,000000,000000,000000 ; THE DREADED UNDEFINED VARIABLE TEMP: .FLT4 0 ; IMMEDIATE DATA -- 1-WORD PRECISION. LDF #^F1.5,%0 LDF #^F1E5,%0 ; TRUNCATES TO .9983999E5 ADDF #0,%3 DIVF #1.23456789,%2 ; TRUNCATES TO .1234375 .END START