*DECK NS$CDA
FUNC NS$CDA(CHAR)U; # CONVERT DISPLAY CODE CHARACTER TO ASCII #
# TITLE NS$CDA - CONVERT DISPLAY CODE CHARACTER TO ASCII. #
BEGIN # NS$CDA #
#
** NS$CDA - CONVERT DISPLAY CODE CHARACTER TO ASCII.
*
* J.C. LEE 1981
*
* THIS IS A UTILITY FUNCTION SUBPROGRAM. ITS FUNCTION IS TO
* CONVERT DISPLAY CODE CHARACTER TO ASCII.
*
* FUNC NS$CDA(CHAR)
*
* ENTRY:
* CHAR = 6-BIT DISPLAY CODE CHARACTER TO BE CONVERTED.
*
* EXIT:
* NONE.
*
* METHOD:
* USE DISPLAY CODE CHARACTER TO INDEX INTO THE 7-BIT
* ASCII CONVERSION TABLE WHICH IS INITIALIZED FOR
* CDC 64-CHARACTER SET.
*
#
ITEM CHAR U; # DISPLAY CODE CHARACTER #
$BEGIN
XREF
BEGIN
PROC NS$DBG; # TRACE PROCEDURE CALL #
END
$END
ITEM I U; # WORD INDEX INTO CONVERSION TABLE #
ITEM J U; # BIT INDEX INTO CONVERSION TABLE WORD #
#
DISPLAY CODE TO 7-BIT ASCII CHARACTER CONVERSION TABLE -
INDEXABLE BY DISPLAY CODE AND INITIALIZED FOR CDC 64
CHARACTER SET.
#
DEF L$ASCIITAB # 8 #; # SIZE OF CONVERSION TABLE #
ARRAY ASCIITAB [0:7] S(1);
BEGIN
ITEM ASCIIC7 U(00,00,60) =
[O"35203024161105432160",
O"44223124563115472360",
O"50243225165125532560",
O"54263323014262315500",
O"32554673416253265240",
O"27520512217240261340",
O"21667352250537205140",
O"23576743720134571660"];
END
CONTROL EJECT;
$BEGIN
NS$DBG("CDA");
$END
I = CHAR / L$ASCIITAB; # WORD INDEX INTO ASCIITAB #
J = (CHAR - I*L$ASCIITAB) * 7; # BIT INDEX INTO ASCIITAB WORD #
NS$CDA = B<J,7>ASCIIC7[I]; # RETURN ASCII CHARACTER #
RETURN;
END # NS$CDA #
TERM