.TITLE CHRTAB .IDENT \V02.03\ .SBTTL DEFINITIONS MACRO USED TO GENERATE TABLES .MACRO CHR BITS,SPEC,TOASCI,MNASCI,OVAPL1,OVAPL2 .NLIST ;-------------------------------- CHRTAB -------------------------------- .PSECT CHRTBL .BYTE BITS+0 ;-------------------------------- VTAB ---------------------------------- .PSECT VTBL .IF B .BYTE -1 .IFF .BYTE SPEC .ENDC ;-------------------------------- ASCTAB -------------------------------- .PSECT ASCTBL .IF B .WORD TMPTAG .IFF .WORD TOASCI+LC.KLD .ENDC .NCHR ASCII, ;-------------------------------- MNTAB & MNTRTB ------------------------ .IF NB .PSECT MNTBL .WORD "MNASCI .PSECT MNTRTL .BYTE TMPTAG .IFF .IF EQ ASCII-3 .PSECT MNTBL .WORD TOASCI .PSECT MNTRTL .BYTE TMPTAG .ENDC .ENDC ;-------------------------------- TRNTAB -------------------------------- .IF EQ ASCII-2 .PSECT TRNTBL TRNADR TOASCI+LC.KLD,TMPTAG .IFF .IF LE TMPTAG-40 .PSECT TRNTBL TRNADR TMPTAG,TMPTAG .ENDC .ENDC ;-------------------------------- OVRTAB -------------------------------- .IF NB .PSECT OVRTBL .WORD OVAPL1*256.+OVAPL2 .ENDC TMPTAG=TMPTAG+1 .ENDM .MACRO TRNADR WHERE,WHAT .=.+ CURPTR=WHERE+1 .BYTE WHAT .ENDM .SBTTL DEFINITIONS TABLE ORIGINS .PSECT CHRTBL CHRTAB:: ; THE OFFSET IN THIS TABLE OF AN APL CHARACTER CONTAINS ; BITS DESCRIBING THAT CHARACTER. .PSECT VTBL VTAB:: ;THIS TABLE CONTAINS TABLE OFFSETS (SPECIALTY NUMBERS) FOR ;APL CHARACTERS. FOR EXAMPLE, THE OFFSET IN THIS TABLE OF ;AN APL OPERATOR CONTAINS THE OPERATOR NUMBER FOR THAT OP. ;THE OFFSET IN THIS TABLE OF A SPECIAL CHARACTER (SUCH ;AS A SPECIAL LEX CHARACTER) CONTAINS THE OFFSET IN THE ;TABLE WHICH POINTS TO THE ROUTINE TO HANDLE THAT CHARACTER. .PSECT MNTBL MNTAB:: ;THIS TABLE CONTAINS ASCII MNEMONICS FOR SOME APL ;CHARACTERS. THIS TABLE IS SEARCHED VIA 'BINSCH' ; ;*** NOTE *** THE OFFSET OF THE MNEMONIC IN THIS ;TABLE IS USED TO LOOK UP THE CORRESPONDING APL ;CHARACTER IN 'MNTRTB', SO ANY CHANGES IN THIS ;TABLE MUST ALSO BE MADE IN 'MNTRT'. .PSECT MNTRTL MNTRTB:: ;'MNTRTB' CONTAINS THE APL CHARACTER EQUIVALENTS OF ;THE ASCII MNEMONICS IN 'MNTAB'. A MNEMONIC IS FIRST ;LOOKED UP IN 'MNTAB', THE OFFSET IS DIVIDED BY 2, AND ;THE CORRESPONDING CHAR IS THEN FOUND IN THIS TABLE. ;NOTE THAT THIS IS A BYTE TABLE, WHILE 'MNTAB' IS A WORD ;TABLE! .PSECT ASCTBL ASCTAB:: ;THE OFFSET (IN WORDS!!!!) IN THIS TABLE OF AN APL ;CHARACTER CONTAINS EITHER THE SINGLE ASCII CHAR ;REPRESENTING THAT APL CHAR, OR THE 2 CHARS WHICH ;ARE THE MNEMONIC FOR THAT APL CHAR. 'OUTCHR' USES ;THIS TABLE TO CONVERT THE CHARS IF 'TMODE' IS SET. .PSECT TRNTBL TRNTAB:: CURPTR=0 ;THE INDEX IN THIS TABLE OF A SINGLE ASCII CHARACTER ;CONTAINS THE CORRESPONDING APL CHARACTER FOR THAT ;CHARACTER. IN GENERAL, THE TRANSLATIONS ARE OBVIOUS, ;BUT IN SOME I WAS MORE CREATIVE. NOTE THAT '%' IS ;DIVIDE, AND THAT '#' IS MULTIPLY. .PSECT OVRTBL OVRTAB:: ;THIS TABLE CONTAINS ALL LEGAL APL OVERSTRUCK CHARACTERS. ;THE CHARACTERS ARE ORDERED WITH THE LOWEST VALUED ;CHARACTER IN THE UPPER BYTE. .SBTTL TABLES CHARACTER TABLES ;THE FOLLOWING CODE IS USED TO GENERATE VARIOUS CHARACTER TABLES. ;IT IS SET UP SO THAT THE OVERSTRUCK APL CHARACTERS MUST BE AT THE ;END OF THE LIST. UTMOST CARE SHOULD BE TAKEN WHEN CHANGING THIS ;SECTION AS THE DEFINITIONS OF SYMBOLS CAN GET SCREWED ROYAL LIKE I DID A ;FEW TIMES. BELIEVE ME, IT'S A REAL PAIN! ;THE ARGUMENTS FOR THE MACRO ARE: (THE VALUE ASSUMED IS IN PARANTHESIS) ; ; (0) (-1) (TMPTAG) -- --,-- ;MACRO CHRTAB VTAB ASCTAB MNTAB& OVERSTRUCK ;NAME BITS VALUE EQUIVS MNTRTB CHR VALUES ; ; ; LC.KLD=0 ;SET TO 40 FOR 'ASCTAB' ENTRIES IN LOWER CASE TMPTAG=0 ;CHARACTERS START AT ZERO CHR ;NULL CHR ;CTRL A CHR ;CTRL B CHR C.SPGL, 10 ;CTRL C CHR C.SPGL, 12 ;CTRL D CHR ;CTRL E CHR ;CTRL F CHR ;BELL CHR C.SPFX, 4 ;BACKSPACE CHR ;TAB CHR C.SPFX+C.SPGL, 6 ;LINE FEED CHR ;CTRL K CHR ;FORM FEED CHR C.SPGL+C.SPLX+C.SPRS+C.SPFX, 0 ;CARRIGE RETURN CHR ;CTRL N CHR ;CTRL O CHR ;CTRL P CHR ;CTRL Q CHR ;CTRL R CHR ;CTRL S CHR ;CTRL T CHR C.SPGL, 2 ;CTRL U CHR ;CTRL V CHR ;CTRL W CHR ;CTRL X CHR ;CTRL Y CHR C.SPGL, 14 ;CTRL Z CHR C.SPGL, 16 ;ESCAPE (ALTMODE) CHR ;CTRL \ CHR ;CTRL ] CHR ;CTRL ^ CHR ;CTRL _ CHR C.SPFX+C.SPRS, 2 ;SPACE CHR , , "DD ;DIERESIS CHR , , ') ;) CHR C.OP, 24, 74, LT ;< CHR C.OP, 26, "LE ;<= OP.EQU==30 CHR C.OP, 30, '= ;= CHR C.OP, 32, 76, GT ;> CHR , , '] ;] CHR C.OP, 40, "OR ;OR CHR C.OP, 42, '&, AN ;AND OP.NEQ==34 CHR C.OP, 34, "NE ;NOT EQUAL CHR C.OP, 10, '%, DV ;DIVIDE CHR C.OP, 56, 54 ;COMMA OP.PLU==2 CHR C.OP, 2, '+ ;+ CHR C.SPLX, 6, '. ;. OP.RED==60 CHR C.OP, 60, '/, ;/ C.TMP=C.NUM+C.DIG+C.SPLX CHR C.TMP, 12, '0 ;0 CHR C.TMP, 12, '1 ;1 CHR C.TMP, 12, '2 ;2 CHR C.TMP, 12, '3 ;3 CHR C.TMP, 12, '4 ;4 CHR C.TMP, 12, '5 ;5 CHR C.TMP, 12, '6 ;6 CHR C.TMP, 12, '7 ;7 CHR C.TMP, 12, '8 ;8 CHR C.TMP, 12, '9 ;9 CHR , , '( ;( CHR , , '[ ;[ CHR , , 73 ; OP.MUL==6 CHR C.OP, 6, '# ;TIMES CHR , , ': ;: OP.SCN==62 CHR C.OP, 62, '\ ;\ CHR C.NUM+C.SPLX, 12, '- ;NEGATE CHR , , "AL ;ALPHA CHR C.OP, 64, "DE ;DECODE CHR C.OP, 66, "DU ;DOWN U OP.FLR==14 CHR C.OP, 14, "FL ;FLOOR CHR C.OP, 70, "EP ;EPSILON CHR C.IDEN, , 40 ;UNDERSCORE CHR , , "DL ;DEL CHR C.IDEN+C.SPLX, 10, "LD ;DELTA CHR C.OP, 72, "IO ;IOTA CHR , 44, "SO ;SMALL O CHR C.SPLX, 2, '' ;QUOTE CHR C.OP, 74, "BX ;QUAD OP.RES==12 CHR C.OP, 12, "AB ;RESIDUE OP.ENC==76 CHR C.OP, 76, "EN ;ENCODE CHR C.OP, 52, "LO ;LARGE O CHR C.OP, 20, '* ;EXPONENT CHR C.OP, 100, '? ;RANDOM OP.RHO==102 CHR C.OP, 102, "RO ;RHO OP.CEI==16 CHR C.OP, 16, "CE ;CEILING CHR C.OP, 50, "NT ;NOT CHR C.OP, 104, "DA ;DROP CHR C.OP, 106, "UU ;UP U CHR C.OP, 110, "OM ;OMEGA CHR C.OP, 234, "LU ;LEFT U (CONTAINS) CHR C.OP, 114, '^, TK ;TAKE CHR C.OP, 236, "RU ;RIGHT U (SUBSET) CHR , 0, '_ ;ASSIGN CHR C.OP, 120, "RK ;RIGHT TACK CHR , 0, "GO ;BRANCH CHR C.OP, 36, "GE ;>= CHR C.OP, 4, '- ;SUBTRACT CHR , 116, "DM ;DIAMOND C.$=C.IDEN+C.SPLX CHR C.$, 10, 'A ;A CHR C.$, 10, 'B ;B CHR C.$, 10, 'C ;C CHR C.$, 10, 'D ;D CHR C.$, 10, 'E ;E CHR C.$, 10, 'F ;F CHR C.$, 10, 'G ;G CHR C.$, 10, 'H ;H CHR C.$, 10, 'I ;I CHR C.$, 10, 'J ;J CHR C.$, 10, 'K ;K CHR C.$, 10, 'L ;L CHR C.$, 10, 'M ;M CHR C.$, 10, 'N ;N CHR C.$, 10, 'O ;O CHR C.$, 10, 'P ;P CHR C.$, 10, 'Q ;Q CHR C.$, 10, 'R ;R CHR C.$, 14, 'S ;S CHR C.$, 14, 'T ;T CHR C.$, 10, 'U ;U CHR C.$, 10, 'V ;V CHR C.$, 10, 'W ;W CHR C.$, 10, 'X ;X CHR C.$, 10, 'Y ;Y CHR C.$, 10, 'Z ;Z CHR , , "LB ;LEFT BRACE CHR , 120, "LK ;LEFT TACK CHR , , "RB ;RIGHT BRACE CHR , , '$ ;DOLLAR SIGN CHR C.SPRS+C.SPGL, 4, 000177 ;FILLER CHR C.SPRS+C.SPGL, 6, "??+00 ;BEGINNING OF LINE CHR C.SPRS+C.SPGL, 10, "??+00 ;SYNTAX ERROR CHR C.SPRS+C.SPGL, , "??+00 ;CHARACTER ERROR CHR C.SPRS+C.SPGL, 16, "??+00 ;IDENTIFIER CHR C.SPRS+C.SPGL, 14, "??+00 ;NUMERIC CONSTANT CHR C.SPRS+C.SPGL, 12, "??+00 ;LITTERAL CONSTNT CHR C.SPRS+C.SPGL, 20, "??+00 ;CHARACTER SKIP CHR , , "??+00 ; CHR , , "??+00 ; CHR , , "??+00 ; CHR , , "??+00 ; CHR , , "??+00 ; OVSTRK==TMPTAG CHR C.OP, 44, "NR, , 50,124 ;NOR CHR C.OP, 46, "NN, , 51,124 ;NAND CHR C.OP, 122, "DQ, , 53,114 ;MATRIX INVERT CHRFAC==TMPTAG CHR C.OP, 22, '!, , 56,113 ;FACTORIAL CHR C.OP, 124, "CS, , 57,137 ;F.C. SLASH CHR C.OP, 126, "TR, , 77,117 ;TRANSPOSE CHR C.OP, 130, "CB, , 77,137 ;F.C. BACKSLASH CHR C.OP, 132, "IB, , 102,116 ;I BEAM CHRLMP==TMPTAG CHR C.SPLX, 4, '", , 103,112 ;LAMP CHR C.$, 10, "Z@, , 106,110 ;UNDERLINE DELTA CHRULA==TMPTAG ;DEFINE 'UNDERLINE A' CHR C.$, 10, "ZA, , 106,141 ;UNDLIN A CHR C.$, 10, "ZB, , 106,142 ; B CHR C.$, 10, "ZC, , 106,143 ; C CHR C.$, 10, "ZD, , 106,144 ; D CHR C.$, 10, "ZE, , 106,145 ; E CHR C.$, 10, "ZF, , 106,146 ; F CHR C.$, 10, "ZG, , 106,147 ; G CHR C.$, 10, "ZH, , 106,150 ; H CHR C.$, 10, "ZI, , 106,151 ; I CHR C.$, 10, "ZJ, , 106,152 ; J CHR C.$, 10, "ZK, , 106,153 ; K CHR C.$, 10, "ZL, , 106,154 ; L CHR C.$, 10, "ZM, , 106,155 ; M CHR C.$, 10, "ZN, , 106,156 ; N CHR C.$, 10, "ZO, , 106,157 ; O CHR C.$, 10, "ZP, , 106,160 ; P CHR C.$, 10, "ZQ, , 106,161 ; Q CHR C.$, 10, "ZR, , 106,162 ; R CHR C.$, 10, "ZS, , 106,163 ; S CHR C.$, 10, "ZT, , 106,164 ; T CHR C.$, 10, "ZU, , 106,165 ; U CHR C.$, 10, "ZV, , 106,166 ; V CHR C.$, 10, "ZW, , 106,167 ; W CHR C.$, 10, "ZX, , 106,170 ; X CHR C.$, 10, "ZY, , 106,171 ; Y CHRULZ==TMPTAG CHR C.$, 10, "ZZ, , 106,172 ; Z CHR C.OP, 134, "QD, , 107,114 ;DEL QUAD CHR C.OP, 136, "GD, , 107,115 ;DOWN GRADE CHR C.OP, 140, "GU, , 110,115 ;UP GRADE CHR C.OP, 142, "QQ, , 113,114 ;QUOTE QUAD CHR C.OP, 144, "RV, , 115,117 ;ROTATE CHR C.OP, 54, "LG, , 117,120 ;LOG CHR C.OP, 146, "CR, , 117,137 ;F.C. ROTATE CHR C.OP, 150, "IQ, , 114,133 ;INPUT QUAD CHR C.OP, 152, "OQ, , 114,135 ;OUTPUT QUAD CHR , , "PD, , 107,124 ;PROTECT DEL CHR , , "XQ, , 50,51 ;(FOR PDP10 COMPATABILITY CHR.OU==TMPTAG CHR , , "OU, , 157,165 ;OUT INPUT ESCAPE CHR C.OP, 154, "PT, , 114,131 ;SET FILE POINTER OP.FMT==160 CHR C.OP, 160, "FM, , 112,116 ;FORMAT OPERATOR CHR C.OP, 112, "CO, , 106,130 ;UNDERSCORE LEFT U (CONTAINS) CHR C.OP, 116, "SS, , 106,132 ;UNDERSCORE RIGHT U (SUBSET) OP..AV ==162 ;.BXAV - ATOMIC VECTOR OP..CT ==164 ;.BXCT - COMPARISON TOLERANCE OP..IO ==166 ;.BXIO - INDEX ORIGIN OP..PP ==170 ;.BXPP - PRINT PRECISION OP..PW ==172 ;.BXPW - PRINT WIDTH OP..RL ==174 ;.BXRL - Random Link OP..WA ==176 ;.BXWA - WORKSPACE AVAILABLE OP..TS ==200 ;.BXTS - Time Stamp OP..EX ==202 ;.BXEX - Expunge OP..NC ==204 ;.BXNC - Name Classification OP..CR ==206 ;.BXCR - Canonical Representation OP..FX ==210 ;.BXFX - Fix function OP..LC ==212 ;.BXLC - Line Counter OP..NL ==214 ;.BXNL - Name List CHREND==TMPTAG ;NUMBER OF CHARACTERS .PSECT TRNTBL ;FIX UP SPECIAL ASCII TO APL TRANSLATIONS TRNADR 140,113 ;SPECIAL CASE FOR GRAVE ACCENT TRNADR 173,173 ;LEFT BRACE TRNADR 174,115 ;RESIDUE TRNADR 175,175 ;RIGHT BRACE TRNADR 176,124 ;NOT (TILTA) TRNADR 177,177 ;FILLER .PSECT OVRTBL OVRTND:: ;END OF OVRTAB .PSECT MNTBL MNTBND:: ;END OF MNTAB