Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
100H:
|
||||
|
||||
/* CONVERT A NUMBER TO A GIVEN BASE */
|
||||
TO$BASE: PROCEDURE (N, BASE, BUF) ADDRESS;
|
||||
DECLARE (N, BUF, I, J, K) ADDRESS;
|
||||
DECLARE (D, BASE, STR BASED BUF) BYTE;
|
||||
|
||||
/* GENERATE DIGITS */
|
||||
I = 0;
|
||||
DIGIT:
|
||||
D = N MOD BASE;
|
||||
N = N / BASE;
|
||||
IF D < 10 THEN STR(I) = D + '0';
|
||||
ELSE STR(I) = (D - 10) + 'A';
|
||||
I = I + 1;
|
||||
IF N > 0 THEN GO TO DIGIT;
|
||||
|
||||
/* PUT DIGITS IN HIGH-ENDIAN ORDER */
|
||||
J = 0;
|
||||
K = I-1;
|
||||
DO WHILE (J < K);
|
||||
D = STR(K);
|
||||
STR(K) = STR(J);
|
||||
STR(J) = D;
|
||||
K = K-1;
|
||||
J = J+1;
|
||||
END;
|
||||
|
||||
STR(I) = '$';
|
||||
RETURN BUF;
|
||||
END TO$BASE;
|
||||
|
||||
|
||||
/* READ A NUMBER IN A GIVEN BASE */
|
||||
FROM$BASE: PROCEDURE (BUF, BASE) ADDRESS;
|
||||
DECLARE (BUF, RESULT) ADDRESS;
|
||||
DECLARE (D, BASE, CHAR BASED BUF) BYTE;
|
||||
|
||||
RESULT = 0;
|
||||
DO WHILE CHAR <> '$';
|
||||
D = CHAR - '0';
|
||||
IF D >= 10 THEN D = D - ('A' - '0') + 10;
|
||||
RESULT = (RESULT * BASE) + D;
|
||||
BUF = BUF + 1;
|
||||
END;
|
||||
RETURN RESULT;
|
||||
END FROM$BASE;
|
||||
|
||||
/* CP/M BDOS ROUTINES */
|
||||
BDOS: PROCEDURE (F,A); DECLARE F BYTE, A ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; CALL BDOS(0,0); END EXIT;
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT;
|
||||
CRLF: PROCEDURE; CALL PRINT(.(13,10,'$')); END CRLF;
|
||||
|
||||
/* EXAMPLES */
|
||||
DECLARE I BYTE, N ADDRESS;
|
||||
|
||||
CALL PRINT(.'1234 IN BASES 2-36: $'); CALL CRLF;
|
||||
DO I=2 TO 36;
|
||||
CALL PRINT(.'BASE $');
|
||||
CALL PRINT(TO$BASE(I, 10, .MEMORY));
|
||||
CALL PRINT(.(': ',9,'$'));
|
||||
CALL PRINT(TO$BASE(1234, I, .MEMORY));
|
||||
CALL CRLF;
|
||||
END;
|
||||
|
||||
CALL PRINT(.'''25'' IN BASES 10-36: $'); CALL CRLF;
|
||||
DO I=10 TO 36;
|
||||
CALL PRINT(.'BASE $');
|
||||
CALL PRINT(TO$BASE(I, 10, .MEMORY));
|
||||
CALL PRINT(.(':',9,'$'));
|
||||
N = FROM$BASE(.'25$', I);
|
||||
CALL PRINT(TO$BASE(N, 10, .MEMORY));
|
||||
CALL CRLF;
|
||||
END;
|
||||
|
||||
CALL EXIT;
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue