Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
56
Task/Damm-algorithm/PL-M/damm-algorithm.plm
Normal file
56
Task/Damm-algorithm/PL-M/damm-algorithm.plm
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
100H:
|
||||
|
||||
/* DAMM CHECKSUM FOR DECIMAL NUMBER IN GIVEN STRING */
|
||||
CHECK$DAMM: PROCEDURE (PTR) BYTE;
|
||||
DECLARE PTR ADDRESS, CH BASED PTR BYTE;
|
||||
DECLARE DAMM DATA
|
||||
( 0,3,1,7,5,9,8,6,4,2,
|
||||
7,0,9,2,1,5,4,8,6,3,
|
||||
4,2,0,6,8,7,1,3,5,9,
|
||||
1,7,5,0,9,8,3,4,2,6,
|
||||
6,1,2,3,0,4,5,9,7,8,
|
||||
3,6,7,4,2,0,9,5,8,1,
|
||||
5,8,6,9,7,2,0,1,3,4,
|
||||
8,9,4,5,3,6,2,0,1,7,
|
||||
9,4,3,8,6,1,7,2,0,5,
|
||||
2,5,8,1,4,3,6,7,9,0 );
|
||||
DECLARE I BYTE;
|
||||
I = 0;
|
||||
DO WHILE CH <> '$';
|
||||
I = DAMM((I*10) + (CH-'0'));
|
||||
PTR = PTR + 1;
|
||||
END;
|
||||
RETURN I = 0;
|
||||
END CHECK$DAMM;
|
||||
|
||||
/* CP/M BDOS CALLS */
|
||||
BDOS: PROCEDURE (FN, ARG);
|
||||
DECLARE FN BYTE, ARG ADDRESS;
|
||||
GO TO 5;
|
||||
END BDOS;
|
||||
|
||||
PRINT: PROCEDURE (STR);
|
||||
DECLARE STR ADDRESS;
|
||||
CALL BDOS(9, STR);
|
||||
END PRINT;
|
||||
|
||||
/* TESTS */
|
||||
DECLARE TEST (4) ADDRESS;
|
||||
TEST(0) = .'5724$';
|
||||
TEST(1) = .'5727$';
|
||||
TEST(2) = .'112946$';
|
||||
TEST(3) = .'112949$';
|
||||
|
||||
DECLARE N BYTE;
|
||||
DO N = 0 TO LAST(TEST);
|
||||
CALL PRINT(TEST(N));
|
||||
CALL PRINT(.': $');
|
||||
IF CHECK$DAMM(TEST(N)) THEN
|
||||
CALL PRINT(.'PASS$');
|
||||
ELSE
|
||||
CALL PRINT(.'FAIL$');
|
||||
CALL PRINT(.(13,10,'$'));
|
||||
END;
|
||||
|
||||
CALL BDOS(0,0);
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue