; 00017 .INCLUDE "LB:[MACROS]MACROS.MAC" .INCLUDE "C.MAC" MODULE BinaryToDouble, MNAME=BTOD, VER=01, COMM=<> FROM CSV IMPORT C$SAV, C$RET FROM .NTENS IMPORT .DZERO, .DTENS FROM DTENTO IMPORT DTENTO FROM FAC IMPORT C$FAC FROM LTD IMPORT C$LTD FROM DNEG IMPORT C$DNEG FROM DADD IMPORT C$DADD FROM DMUL IMPORT C$DMUL FROM BTOS IMPORT BTOS EXPORT QUALIFIED BTOD PROCEDURE NEXT BEGIN MOV -22(R5), C$FAC MOV -20(R5), C$FAC+2 MOV -16(R5), C$FAC+4 MOV -14(R5), C$FAC+6 PUSH #.DTENS+10 PUSH #C$FAC CALL C$DMUL MOVB (R3)+, R0 ADD #-60, R0 PUSH R0 SXT -(SP) PUSH #C$FAC+10 CALL C$LTD PUSH #C$FAC+10 PUSH #C$FAC CALL C$DADD MOV C$FAC, -22(R5) MOV C$FAC+2, -20(R5) MOV C$FAC+4, -16(R5) MOV C$FAC+6, -14(R5) DEC R4 RETURN END NEXT PROCEDURE BTOD BEGIN C$SAV ; ; 10(R5) - בהעוף הלס נעוןגעבתןקבממןחן ‏יףלב ; 6(R5) - הלימב ףפעןכי ; 4(R5) - בהעוף מב‏בלב ףפעןכי ; ; -10(R5) - זלבח ןפעידבפולרמןחן ‏יףלב (1-הב) ; -12(R5) - ףפונומר ‏יףלב ; -14(R5) - \ ; -16(R5) - נעוןגעבתץוםןו ; -16(R5) - ‏יףלן ; -16(R5) - / ; ; ־ב קשטןהו R0 - ‏יףלן נעוןגעבתןקבממשט ףיםקןלןק ; ADD #-14, SP MOV 6(R5), R4 MOV 4(R5), R3 CLR -10(R5) WHILE R4 NE #0 ANDB (R3)+ LOS #40 DO DEC R4 END DEC R3 IF R4 NE #0 THEN IFB (R3) EQ #'- THEN MOV #1, -10(R5) INC R3 DEC R4 ELSE IFB (R3) EQ #'+ THEN INC R3 DEC R4 END END END MOV .DZERO, -22(R5) MOV .DZERO+2, -20(R5) MOV .DZERO+4, -16(R5) MOV .DZERO+6, -14(R5) WHILE R4 NE #0 ANDB #'0 LOS (R3) ANDB (R3) LOS #'9 DO CALL NEXT END CLR R2 IF R4 NE #0 ANDB (R3) EQ #'. THEN INC R3 DEC R4 WHILE R4 NE #0 ANDB #'0 LOS (R3) ANDB (R3) LOS #'9 DO CALL NEXT DEC R2 END END IF R4 NE #0 THEN CLR R0 BISB (R3), R0 IFB #'A LOS R0 ANDB R0 LOS #'Z THEN ADD #40, R0 END IFB R0 EQ #'e THEN INC R3 DEC R4 MOV #10., (SP) MOV #-12, -(SP) ADD R5, (SP) MOV R4, -(SP) MOV R3, -(SP) CALL BTOS ADD #6, SP ADD R0, R3 ADD -12(R5), R2 END END MOV R2, (SP) MOV -14(R5), -(SP) MOV -16(R5), -(SP) MOV -20(R5), -(SP) MOV -22(R5), -(SP) CALL DTENTO ADD #10, SP IF -10(R5) NE #0 THEN MOV #C$FAC, -(SP) CALL C$DNEG END MOV 10(R5), R0 MOV C$FAC, (R0)+ MOV C$FAC+2, (R0)+ MOV C$FAC+4, (R0)+ MOV C$FAC+6, (R0)+ MOV R3, R0 SUB 4(R5), R0 C$RET END BTOD END BinaryToDouble .END