; 00004 .INCLUDE "LB:[MACROS]MACROS.MAC" .INCLUDE "C.MAC" MODULE BinaryToLong, MNAME=BTOL, VER=01, COMM=<> FROM CSV IMPORT C$SAV, C$RET FROM LMUL IMPORT C$LMUL EXPORT QUALIFIED BTOL PROCEDURE BTOL BEGIN C$SAV ; ; 12(R5) - οσξοχαξιε σώισμεξιρ ; 10(R5) - αδςεσ δμρ πςεοβςαϊοχαξξοηο ώισμα ; 6(R5) - δμιξα στςολι ; 4(R5) - αδςεσ ξαώαμα στςολι ; ; -10(R5) - ζμαη οτςιγατεμψξοηο ώισμα (1-δα) ; -12(R5) - πςεοβςαϊυενοε ; -14(R5) - ώισμο ; -16(R5) - ξαώαμο στςολι ; ; Ξα χωθοδε R0 - ώισμο πςεοβςαϊοχαξξωθ σινχομοχ ; ADD #-10, SP MOV 4(R5), R4 MOV 6(R5), R2 CLR -14(R5) CLR -12(R5) MOV R4, -16(R5) CLR -10(R5) LOOP IF R2 EQ #0 LEAVE LOOP IF (R4) HI #40 ANDB #177 HI (R4) LEAVE LOOP DEC R2 INC R4 END IF R2 NE #0 THEN IFB (R4) EQ #'- THEN MOV #1, -10(R5) INC R4 DEC R2 ELSE IFB (R4) EQ #'+ THEN INC R4 DEC R2 END END END IF 12(R5) EQ #16. AND #2 LOS R2 ANDB (R4) EQ #'0 THEN CLR R0 BISB 1(R4), R0 IFB #'A LOS R0 ANDB R0 LOS #'Z THEN ADD #40, R0 END IF R0 EQ #'x THEN ADD #2, R4 SUB #2, R2 END END IF R2 NE #0 THEN REPEAT CLR R3 BISB (R4)+, R3 IFB #'0 LOS R3 ANDB R3 LOS #'9 THEN ADD #0-'0, R3 ELSE IFB #'A LOS R3 ANDB R3 LOS #'Z THEN ADD #40, R3 END IFB #'a LOS R3 ANDB R3 LOS #'z THEN ADD #10.-'a, R3 END END IF 12(R5) LE R3 LEAVE LOOP PUSH <-12(R5), -14(R5)> PUSH 12(R5) SXT -(SP) CALL C$LMUL POP PUSH R3 SXT -(SP) ADD (SP)+,R0 ADD (SP)+,R1 ADC R0 MOV R0,-14(R5) MOV R1,-12(R5) DEC R2 UNTIL RESULT IS EQ END MOV -14(R5), R0 MOV -12(R5), R1 IF -10(R5) NE #0 THEN NEG R0 NEG R1 SBC R0 END PUSH 10(R5) MOV R0, @0(SP) ADD #2, (SP) MOV R1, @(SP)+ IF R2 NE #0 THEN CLR R0 BISB (R4), R0 IFB #'A LOS R0 ANDB R0 LOS #'Z THEN ADD #40, R0 END IF R0 EQ #'l THEN INC R4 END END MOV R4, R0 SUB -16(R5), R0 C$RET END BTOL END BinaryToLong .END