Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
45
Task/Gray-code/PL-M/gray-code.plm
Normal file
45
Task/Gray-code/PL-M/gray-code.plm
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
100H:
|
||||
|
||||
BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; GO TO 0; END EXIT;
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT;
|
||||
|
||||
PRINT$NUM: PROCEDURE (N, BASE);
|
||||
DECLARE S (17) BYTE INITIAL ('................$');
|
||||
DECLARE (N, P) ADDRESS, (DGT BASED P, BASE) BYTE;
|
||||
P = .S(16);
|
||||
DIGIT:
|
||||
P = P - 1;
|
||||
DGT = N MOD BASE + '0';
|
||||
N = N / BASE;
|
||||
IF N > 0 THEN GO TO DIGIT;
|
||||
CALL PRINT(P);
|
||||
END PRINT$NUM;
|
||||
|
||||
GRAY$ENCODE: PROCEDURE (N) BYTE;
|
||||
DECLARE N BYTE;
|
||||
RETURN N XOR SHR(N, 1);
|
||||
END GRAY$ENCODE;
|
||||
|
||||
GRAY$DECODE: PROCEDURE (N) BYTE;
|
||||
DECLARE (N, R, I) BYTE;
|
||||
R = N;
|
||||
DO WHILE (N := SHR(N,1)) > 0;
|
||||
R = R XOR N;
|
||||
END;
|
||||
RETURN R;
|
||||
END GRAY$DECODE;
|
||||
|
||||
DECLARE (I, G) BYTE;
|
||||
DO I = 0 TO 31;
|
||||
CALL PRINT$NUM(I, 10);
|
||||
CALL PRINT(.(':',9,'$'));
|
||||
CALL PRINT$NUM(I, 2);
|
||||
CALL PRINT(.(9,'=>',9,'$'));
|
||||
CALL PRINT$NUM(G := GRAY$ENCODE(I), 2);
|
||||
CALL PRINT(.(9,'=>',9,'$'));
|
||||
CALL PRINT$NUM(GRAY$DECODE(G), 10);
|
||||
CALL PRINT(.(10,13,'$'));
|
||||
END;
|
||||
CALL EXIT;
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue