home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-08-12 | 43.5 KB | 1,402 lines |
- #!/bin/sh
- # This is part 02 of a multipart archive
- if touch 2>&1 | fgrep '[-amc]' > /dev/null
- then TOUCH=touch
- else TOUCH=true
- fi
- # ============= maps.h ==============
- echo "x - extracting maps.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > maps.h &&
- X/* maps.h */
- X/**********************************************************************
- X* File Name : maps.h
- X* Function : input character mapping to line edit functions
- X* Author : Istvan Mohos, 1987
- X***********************************************************************/
- X
- X#ifdef AMORTMAP
- Xstatic char loan_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 9, 10, 0, 1, 0, 0, 11, 7, 0, 0, 8, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
- X};
- X
- Xstatic char date_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 10, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 4, 0, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11
- X};
- X
- Xstatic char amort_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 10, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, 0, 2,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11
- X};
- X#endif
- X
- X#ifdef ATOIMAP
- Xstatic char a_ed_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 0, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
- X};
- X
- Xchar *lotab[33] = {"asc NUL", "SOH ^A", "STX ^B", "ETX ^C",
- X "EOT ^D", "ENQ ^E", "ACK ^F", "BEL ^G",
- X "BS ^H", "HT ^I", "LF ^J", "VT ^K",
- X "NP ^L", "CR ^M", "SO ^N", "SI ^O",
- X "DLE ^P", "DC1 ^Q", "DC2 ^R", "DC3 ^S",
- X "DC4 ^T", "NAK ^U", "SYN ^V", "ETB ^W",
- X "CAN ^X", "EM ^Y", "SUB ^Z", "ESC ^[",
- X "FS ^|", "GS ^]", "RS ^`", "US ^/",
- X "asc SP"
- X};
- X
- X#endif
- X
- X#ifdef CONVMAP
- Xstatic char c_ed_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 10, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 20, 0, 19, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, 2, 2,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11
- X};
- X
- Xstatic char eq_ed_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 10, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 20, 0, 19, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 2, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
- X};
- X
- Xstatic char c_sel_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 0, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 0, 0, 17, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0,
- X/* P Q 17 S T U V W X Y Z [ \ ] ^ _ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 0, 0, 17, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
- X};
- X#endif
- X
- X#ifdef FILEMAP
- Xstatic char f_ed_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 10, 0, 1, 0, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 20, 2, 19, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, 0, 2,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11
- X};
- X#endif
- X
- X#ifdef PACMAP
- Xstatic char cal_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 17, 17, 10, 17, 1, 17, 17, 11, 7, 17, 17, 17, 17, 17, 17,
- X#ifdef DESIGN
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 17, 0, 18, 0, 17, 17, 0, 0, 17, 17, 0, 20, 0, 0, 0, 0,
- X#else
- X 17, 0, 18, 17, 17, 0, 0, 0, 17, 0, 0, 20, 0, 0, 0, 0,
- X#endif
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 20, 17, 19, 2,
- X/* @ A B C D E F G H I J K L M N O */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, 2, 2,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 15, 14, 0, 16
- X};
- X#endif
- X
- X#ifdef TOTALMAP
- Xstatic char tot_map[128] = {
- X/* NL ^A ^B ^C ^D ^E ^F ^G ^H ^I ^J ^K ^L ^M ^N ^O */
- X 0, 0, 0, 12, 0, 1, 12, 0, 11, 7, 0, 0, 0, 0, 0, 0,
- X/* ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^| ^] ^` ^/ */
- X 12, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
- X/* SP ! " # $ % & ' ( ) * + , - . / */
- X 10, 0, 0, 21, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0,
- X/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- X 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 20, 0, 19, 0,
- X/* @ A B C D E F G H I J K L M N O */
- X 2, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- X/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- X 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0,
- X/* ` a b c d e f g h i j k l m n o */
- X 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- X/* p q r s t u v w x y z { | } ~ DL */
- X 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11
- X};
- X#endif
- X
- X#ifdef INTERMAP
- Xstatic char *hundred[] = {
- X "", "", "1100100", "10201",
- X "1210", "400", "244", "202",
- X "144", "121", "100", "91",
- X "84", "79", "72", "6A",
- X "64" };
- X
- Xstatic char *sixteen[] = {
- X "", "", "10000", "121",
- X "100", "31", "24", "22",
- X "20", "17", "16", "15",
- X "14", "13", "12", "11",
- X "10" };
- X
- X static char *factab[] = {
- X/*0*/ "x 0",
- X/*1*/ "x 1",
- X/*2*/ "x 2",
- X/*3*/ "x 6",
- X/*4*/ "x 18",
- X/*5*/ "x 78",
- X/*6*/ "x 2D0",
- X/*7*/ "x 13B0",
- X/*8*/ "x 9D80",
- X/*9*/ "x 58980",
- X/*10*/ "x 375F00",
- X/*11*/ "x 2611500",
- X/*12*/ "x 1C8CFC00",
- X/*13*/ "x 17328CC00",
- X/*14*/ "x 144C3B2800",
- X/*15*/ "x 13077775800",
- X/*16*/ "x 130777758000",
- X/*17*/ "x 1437EEECD8000",
- X/*18*/ "x 16BEECCA730000",
- X/*19*/ "x 1B02B9306890000",
- X/*20*/ "x 21C3677C82B40000",
- X/*21*/ "x 2C5077D36B8C40000",
- X/*22*/ "x 3CEEA4C2B3E0D80000",
- X/*23*/ "x 57970CD7E2933680000",
- X/*24*/ "x 83629343D3DCD1C00000",
- X/*25*/ "x CD4A0619FB0907BC00000",
- X/*26*/ "x 14D9849EA37EEAC91800000",
- X/*27*/ "x 232F0FCBB3E62C3358800000",
- X/*28*/ "x 3D925BA47AD2CD59DAE000000",
- X/*29*/ "x 6F99461A1E9E1432DCB6000000",
- X/*30*/ "x D13F6370F96865DF5DD54000000",
- X/*31*/ "x 1956AD0AAE33A4560C5CD2C000000",
- X/*32*/ "x 32AD5A155C6748AC18B9A580000000",
- X/*33*/ "x 688589CC0E9505E2F2FEE5580000000",
- X/*34*/ "x DE1BC4D19EFCAC82445DA75B00000000",
- X/*35*/ "x FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
- X};
- X#endif
- SHAR_EOF
- $TOUCH -am 0221163890 maps.h &&
- chmod 0644 maps.h ||
- echo "restore of maps.h failed"
- set `wc -c maps.h`;Wc_c=$1
- if test "$Wc_c" != "14314"; then
- echo original size 14314, current size $Wc_c
- fi
- # ============= toktab.h ==============
- echo "x - extracting toktab.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > toktab.h &&
- X/* toktab.h */
- X/**********************************************************************
- X* File Name : toktab.h
- X* Function : token definitions, token table
- X* Author : Istvan Mohos, 1987
- X***********************************************************************/
- X
- X/* to add token:
- X insert in toklist, spacefilled to WORDSIZE, in ascii alpha sequence;
- X increment LISTSIZE;
- X add token #define, in the SAME ORDER as in toklist;
- X renumber defines (0 to LISTSIZE - 1);
- X if token contains weird char, adjust map in pac.c to allow it;
- X describe action in interpret.c;
- X*/
- X
- X#define WORDSIZE 9 /* maximum token size, not including \0 */
- X#define LISTSIZE 158 /* number of pac tokens */
- X
- X#ifdef PACTOK
- Xstatic char *toklist[] = {
- X"! ",
- X"# ",
- X"\' ",
- X"; ",
- X"? ",
- X"X ",
- X"\\ ",
- X"amass ",
- X"and ",
- X"arct ",
- X"astro ",
- X"at ",
- X"atto ",
- X"au ",
- X"auto ",
- X"autoconv ",
- X"autotime ",
- X"avogadro ",
- X"boltzmann",
- X"break ",
- X"bye ",
- X"chroma ",
- X"clr ",
- X"cm ",
- X"comma ",
- X"cos ",
- X"define ",
- X"dontsave ",
- X"dp ",
- X"ds ",
- X"dup ",
- X"earthmass",
- X"earthrad ",
- X"echarge ",
- X"emass ",
- X"euler ",
- X"exa ",
- X"exit ",
- X"exp ",
- X"faraday ",
- X"femto ",
- X"fix ",
- X"fo ",
- X"for ",
- X"format ",
- X"g ",
- X"gas ",
- X"giga ",
- X"gravity ",
- X"h ",
- X"hardform ",
- X"heat ",
- X"help ",
- X"hf ",
- X"i ",
- X"ib ",
- X"ibase ",
- X"if ",
- X"init ",
- X"j ",
- X"ju ",
- X"justify ",
- X"k ",
- X"kilo ",
- X"l ",
- X"le ",
- X"left ",
- X"length ",
- X"light ",
- X"lightyear",
- X"log ",
- X"m ",
- X"mega ",
- X"micro ",
- X"milli ",
- X"mod ",
- X"mohos ",
- X"moonmass ",
- X"moonrad ",
- X"n ",
- X"nano ",
- X"natural ",
- X"nmass ",
- X"not ",
- X"o ",
- X"ob ",
- X"obase ",
- X"off ",
- X"on ",
- X"or ",
- X"p ",
- X"parallax ",
- X"parsec ",
- X"pd ",
- X"pdelta ",
- X"pdiff ",
- X"pe ",
- X"pequal ",
- X"peta ",
- X"pi ",
- X"pico ",
- X"planck ",
- X"pll ",
- X"pm ",
- X"pmass ",
- X"pminus ",
- X"po ",
- X"pof ",
- X"pop ",
- X"pp ",
- X"pplus ",
- X"pr ",
- X"precision",
- X"psh ",
- X"pv ",
- X"pversus ",
- X"q ",
- X"quit ",
- X"r ",
- X"ri ",
- X"right ",
- X"rydberg ",
- X"s ",
- X"sb ",
- X"scale ",
- X"sin ",
- X"sound ",
- X"sp ",
- X"space ",
- X"sqrt ",
- X"st ",
- X"stack ",
- X"staybase ",
- X"stefan ",
- X"sto ",
- X"sunmass ",
- X"sunrad ",
- X"swp ",
- X"t ",
- X"te ",
- X"tera ",
- X"terse ",
- X"to ",
- X"tomoon ",
- X"tosun ",
- X"tw ",
- X"twoscomp ",
- X"u ",
- X"v ",
- X"ver ",
- X"verbose ",
- X"w ",
- X"while ",
- X"wien ",
- X"x ",
- X"xor ",
- X"xt ",
- X"xterse "
- X};
- X#endif
- X
- X/* pac token table definitions, ordered EXACTLY as toklist,
- X numbered sequentially from 0. When adding or removing tokens, this
- X list gets renumbered. */
- X
- X#define BANG 0
- X#define SHARP 1
- X#define TICK 2
- X#define SEMI 3
- X#define QUESTION 4
- X#define X_UPPER 5
- X#define BACKSLASH 6
- X#define AMASS 7
- X#define AND 8
- X#define ARCT 9
- X#define ASTRO 10
- X#define AT 11
- X#define ATTO 12
- X#define AU 13
- X#define AUTO 14
- X#define AUTOCONV 15
- X#define AUTOTIME 16
- X#define AVOGADRO 17
- X#define BOLTZMANN 18
- X#define BREAK 19
- X#define BYE 20
- X#define CHROMA 21
- X#define CLR 22
- X#define CM 23
- X#define COMMA 24
- X#define COS 25
- X#define DEFINE 26
- X#define DONTSAVE 27
- X#define DP 28
- X#define DS 29
- X#define DUP 30
- X#define EARTHMASS 31
- X#define EARTHRAD 32
- X#define ECHARGE 33
- X#define EMASS 34
- X#define EULER 35
- X#define EXA 36
- X#define EXIT 37
- X#define EXP 38
- X#define FARADAY 39
- X#define FEMTO 40
- X#define FIX 41
- X#define FO 42
- X#define FOR 43
- X#define FORMAT 44
- X#define G_ 45
- X#define GAS 46
- X#define GIGA 47
- X#define GRAVITY 48
- X#define H_ 49
- X#define HARDFORM 50
- X#define HEAT 51
- X#define HELP 52
- X#define HF 53
- X#define I_ 54
- X#define IB 55
- X#define IBASE 56
- X#define IF 57
- X#define INIT_ 58
- X#define J_ 59
- X#define JU 60
- X#define JUSTIFY 61
- X#define K_ 62
- X#define KILO 63
- X#define L_ 64
- X#define LE 65
- X#define LEFT 66
- X#define LENGTH 67
- X#define LIGHT 68
- X#define LIGHTYEAR 69
- X#define LOG 70
- X#define M_ 71
- X#define MEGA 72
- X#define MICRO 73
- X#define MILLI 74
- X#define MOD 75
- X#define MOHOS 76
- X#define MOONMASS 77
- X#define MOONRAD 78
- X#define N_ 79
- X#define NANO 80
- X#define NATURAL 81
- X#define NMASS 82
- X#define NOT 83
- X#define O_ 84
- X#define OB 85
- X#define OBASE 86
- X#define OFF 87
- X#define ON 88
- X#define OR 89
- X#define P_ 90
- X#define PARALLAX 91
- X#define PARSEC 92
- X#define PD 93
- X#define PDELTA 94
- X#define PDIFF 95
- X#define PE 96
- X#define PEQUAL 97
- X#define PETA 98
- X#define PI 99
- X#define PICO 100
- X#define PLANCK 101
- X#define PLL 102
- X#define PM 103
- X#define PMASS 104
- X#define PMINUS 105
- X#define PO 106
- X#define POF 107
- X#define POP 108
- X#define PP 109
- X#define PPLUS 110
- X#define PR 111
- X#define PRECISION 112
- X#define PSH 113
- X#define PV 114
- X#define PVERSUS 115
- X#define Q_ 116
- X#define QUIT 117
- X#define R_ 118
- X#define RI 119
- X#define RIGHT 120
- X#define RYDBERG 121
- X#define S_ 122
- X#define SB 123
- X#define SCALE 124
- X#define SIN 125
- X#define SOUND 126
- X#define SP 127
- X#define SPACE 128
- X#define SQRT 129
- X#define ST 130
- X#define STACK 131
- X#define STAYBASE 132
- X#define STEFAN 133
- X#define STO 134
- X#define SUNMASS 135
- X#define SUNRAD 136
- X#define SWP 137
- X#define T_ 138
- X#define TE 139
- X#define TERA 140
- X#define TERSE 141
- X#define TO 142
- X#define TOMOON 143
- X#define TOSUN 144
- X#define TW 145
- X#define TWOSCOMP 146
- X#define U_ 147
- X#define V_ 148
- X#define VER 149
- X#define VERBOSE 150
- X#define W_ 151
- X#define WHILE 152
- X#define WIEN 153
- X#define X_LOWER 154
- X#define XOR 155
- X#define XT 156
- X#define XTERSE 157
- SHAR_EOF
- $TOUCH -am 0221163890 toktab.h &&
- chmod 0644 toktab.h ||
- echo "restore of toktab.h failed"
- set `wc -c toktab.h`;Wc_c=$1
- if test "$Wc_c" != "7256"; then
- echo original size 7256, current size $Wc_c
- fi
- # ============= amort.c ==============
- echo "x - extracting amort.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > amort.c &&
- X/* amort.c */
- X/**********************************************************************
- X* File Name : amort.c
- X* Function : amortization (loan) routines of pac
- X* Author : Istvan Mohos, 1987
- X***********************************************************************/
- X
- X#include "defs.h"
- X#define AMORTMAP
- X#include "maps.h"
- X#undef AMORTMAP
- X
- Xshow_loan(play)
- Xint play;
- X{
- X int thisline = AMTY;
- X int ck, did_input, Too_big;
- X char floatbuf[LOANSIZ + 1];
- X int pyp, pxp, ryr, rxr;
- X static char *fid = "show_loan";
- X
- X _TR
- X CYX;
- X show_float(Amt, AMTY, 2);
- X show_float(Rate, PRCY, 3);
- X show_float(Years, YRY, 2);
- X mvaddstr(DATY, LOANX, "begin mo/year");
- X Too_big = show_pymt();
- X
- X if (!play)
- X year();
- X else {
- X while(TRUE) {
- X
- X switch(thisline) {
- X case AMTY:
- X if (Amt == 0.)
- X clear_wline(thisline, LOANX, LOANR, 0, 1);
- X break;
- X case PRCY:
- X if (Rate == 0.)
- X clear_wline(thisline, LOANX, LOANR, 0, 1);
- X break;
- X case YRY:
- X if (Years == 0.)
- X clear_wline(thisline, LOANX, LOANR, 0, 1);
- X break;
- X }
- X
- X if ((ck = ledit(floatbuf, loan_map, thisline, LOANX,
- X LOANR, 0, 1, 1)) == 1)
- X break;
- X did_input = strlen(floatbuf);
- X
- X if (ck == 2 && Pymt > 0. && !Too_big) {
- X ryr=CY, rxr=CX;
- X ck = printamort();
- X move(CY=ryr, CX=rxr);
- X pfresh();
- X if (ck == 2)
- X break;
- X continue;
- X }
- X
- X if (did_input) {
- X switch(thisline) {
- X case AMTY:
- X Amt = atof(floatbuf);
- X break;
- X case PRCY:
- X Rate = atof(floatbuf);
- X break;
- X case YRY:
- X Years = atof(floatbuf);
- X break;
- X }
- X Too_big = show_pymt();
- X }
- X
- X if (++thisline > YRY)
- X thisline = AMTY;
- X }
- X PYX;
- X pfresh();
- X }
- X TR_
- X}
- X
- Xshow_pymt()
- X{
- X double nonzero;
- X char reformat[32];
- X static char *fid = "show_pymt";
- X
- X _TR
- X Months = Years * 12.;
- X I_mo = (Rate / 100.) / 12.;
- X nonzero = 1. - pow(1. + I_mo, - Months);
- X if (nonzero == 0. || I_mo == 0.)
- X Pymt = Showpymt = 0.;
- X else {
- X Pymt = Amt * (I_mo / nonzero);
- X Showpymt = Pymt + .00999999;
- X }
- X
- X sprintf(reformat, "%.2f", Showpymt);
- X Showpymt = atof(reformat);
- X if (show_float(Showpymt, PAYY, 2)) {
- X TR_
- X return(-1);
- X }
- X TR_
- X return(0);
- X}
- X
- Xshow_float(value, where, decimals)
- Xdouble value;
- Xint where, decimals;
- X{
- X char loanbuf[32];
- X char *lp = loanbuf;
- X register char *cp;
- X static char *fid = "show_float";
- X
- X _TR
- X strcpy (lp, Sp13);
- X sprintf(lp, "%.*f",decimals , value);
- X (strlen(lp) < 13) ? (*(lp + strlen(lp)) = ' ') : (*(lp + 13) = 0);
- X
- X cp = lp + 13;
- X if (where > YRY)
- X for (; --cp >= lp;)
- X if (*cp == '.')
- X break;
- X
- X if (cp >= lp) {
- X mvaddstr(where, LOANX, lp);
- X TR_
- X return(0);
- X }
- X
- X mvaddstr(where, LOANX, "overflow ");
- X TR_
- X return(-1);
- X}
- X
- Xprintamort()
- X{
- X double a_amt, ppay, ipay, yppay, yipay;
- X FILE *fp;
- X char *token, *np;
- X int ck, startmonth, startyear, yr;
- X int pyp, pxp;
- X register int ri;
- X int lastmonth;
- X char round[32];
- X char datebuf[LOANSIZ + 1];
- X static char savedate[LOANSIZ + 1];
- X char namebuf[TITSIZ + 1];
- X char spaceless[TITSIZ + 1];
- X int did_input;
- X static char *fid = "printamort";
- X
- X _TR
- X if (strlen(savedate))
- X mvaddstr(DATY, LOANX, savedate);
- X
- X if ((ck = ledit(&datebuf[0], date_map, DATY,
- X LOANX, LOANR, 0, 1, 0)) == 1) {
- X TR_
- X return(1);
- X }
- X if (ck == 2) { /* types ^B, I have no idea what this does */
- X TR_
- X return(2);
- X }
- X did_input = datebuf[0];
- X
- X if ((token = pactok(&datebuf[0], " .,/:")) == ZERO)
- X startmonth = 1, startyear = atoi(Thisyear);
- X if ((startmonth = whichmonth(token)) == 0)
- X startmonth = 1;
- X if ((token = pactok(ZERO, " .,/:")) == ZERO)
- X startyear = atoi(Thisyear);
- X else if ((startyear = atoi(token)) < 1)
- X startyear = atoi(Thisyear);
- X else if (startyear < 1900)
- X startyear += 1900;
- X
- X move(DATY, LOANX);
- X printw("%.2d/%.4d ", startmonth, startyear);
- X if (did_input)
- X sprintf(savedate, "%.2d/%.4d ", startmonth, startyear);
- X pfresh();
- X
- X Basq[EDITREQ] = Bb[LOANREQ];
- X CYX; /* to save the caller'r coordinates */
- X update(); /* this returns to the original coordinates,
- X but does'nt pfresh */
- Xretry:
- X
- X ledit(namebuf, amort_map, BOT, FBOUND, RBOUND, 1, 1, 0);
- X
- X if (strlen(namebuf) == 0) {
- X strcpy(spaceless, Amortname);
- X for (np = spaceless; *np > 32; np++);
- X *np = '\0';
- X standout();
- X mvaddstr(BOT, FBOUND, Amortname);
- X standend();
- X pfresh();
- X }
- X else {
- X strcpy(Amortname, namebuf);
- X strcpy(spaceless, namebuf);
- X }
- X
- X if ((fp = fopen(spaceless, "w")) == NULL) {
- X standout();
- X mvaddstr(BOT, ULEFT, "can't access:");
- X pfresh();
- X goto retry;
- X }
- X
- X fprintf(fp, "\
- XAMORTIZATION SCHEDULE\n\n");
- X fprintf(fp, "\
- X PREPARED FOR %s\n", Amortname);
- X fprintf(fp, "\
- X LOAN AMOUNT %.2f\n", Amt);
- X fprintf(fp, "\
- X MONTHLY PAYMENT %.2f\n", Showpymt);
- X fprintf(fp, "\
- X LENDING RATE %.3f%c\n", Rate, '\045');
- X fprintf(fp, "\
- X TERM YEARS %.2f\n\n", Years);
- X
- X/* format field widths
- X12345678901 1234567890123 12345678901234567890 12345678901234567890 XX
- X*/
- X fprintf(fp, "\
- XPAYMENT DUE PRINCIPAL INTEREST NEW\n");
- X fprintf(fp, "\
- XNUMBER DATE PAYMENT PAYMENT BALANCE\n\n");
- X
- X a_amt = Amt;
- X ck = startmonth;
- X Intrst = yppay = yipay = 0.;
- X yr = 1;
- X for (ri = 1, lastmonth = (int)Months; ri < lastmonth; ri++) {
- X ipay = I_mo * a_amt;
- X sprintf(round, "%.2f", ipay);
- X ipay = atof(round);
- X yipay += ipay;
- X ppay = Pymt - ipay + .009999999;
- X sprintf(round, "%.2f", ppay);
- X ppay = atof(round);
- X yppay += ppay;
- X a_amt -= ppay;
- X fprintf(fp, "\
- X %4d %.2d/01/%.4d %17.2f %17.2f %17.2f\n",
- X ri, ck, startyear, ppay, ipay, a_amt);
- X if (++ck > 12)
- X ck = 1;
- X if (((ri - 1) % 12) == (12 - startmonth)) {
- X fprintf(fp, "\
- XYEAR %.2d TOTAL: %17.2f %17.2f\n\n", yr++, yppay, yipay);
- X Intrst += yipay;
- X ++startyear;
- X yppay = yipay = 0.;
- X }
- X }
- X ipay = I_mo * a_amt;
- X sprintf(round, "%.2f", ipay);
- X ipay = atof(round);
- X yipay += ipay;
- X ppay = Pymt - ipay + .009999999;
- X sprintf(round, "%.2f", ppay);
- X ppay = atof(round);
- X a_amt -= ppay;
- X ppay += a_amt;
- X yppay += ppay;
- X a_amt = 0.;
- X Intrst += yipay;
- X fprintf(fp, "\
- X %4d %.2d/01/%.4d %17.2f %17.2f %17.2f\n",
- X ri, ck, startyear, ppay, ipay, a_amt);
- X fprintf(fp, "\
- XYEAR %.2d TOTAL: %17.2f %17.2f\n\n", yr, yppay, yipay);
- X fprintf(fp, "\
- XGRAND TOTAL: %17.2f %17.2f\n", Amt, Intrst);
- X fclose(fp);
- X
- X strcpy(Bb[LOANREQ] + BUFSTOP, Amortname);
- X rev_clear(Bb[LOANREQ] + TITSIZ);
- X Basq[EDITREQ] = ZERO;
- X
- X PYX;
- X update();
- X TR_
- X return(0);
- X}
- X
- SHAR_EOF
- $TOUCH -am 0221163890 amort.c &&
- chmod 0644 amort.c ||
- echo "restore of amort.c failed"
- set `wc -c amort.c`;Wc_c=$1
- if test "$Wc_c" != "7762"; then
- echo original size 7762, current size $Wc_c
- fi
- # ============= atoi.c ==============
- echo "x - extracting atoi.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > atoi.c &&
- X/* atoi.c */
- X/**********************************************************************
- X* File Name : atoi.c
- X* Function : ascii/decimal/octal/hex converter of pac
- X* Author : Istvan Mohos, 1987
- X***********************************************************************/
- X
- X#include "defs.h"
- X#define ATOIMAP
- X#include "maps.h"
- X#undef ATOIMAP
- X
- Xbyte_conv(from)
- Xint from;
- X{
- X char c, bbuf[10], *bb;
- X int pyp, pxp;
- X int ri, ffd, value;
- X static char *fid = "byte_conv";
- X
- X _TR
- X CYX;
- X switch(from) {
- X case 4:
- X mvaddstr(UTOP + 1, ATOIX, "ENTER 3");
- X mvaddstr(UTOP + 2, ATOIX, "DECIMAL");
- X mvaddstr(UTOP + 3, ATOIX, "DIGITS ");
- X value = -1;
- X while(value == -1) {
- X mvaddstr(UTOP, ATOIX, "dec ");
- X
- X ledit(bbuf, a_ed_map, UTOP, ATOIX+4, ATOIX+6, 0, 1, 1);
- X if (!*bbuf)
- X continue;
- X value = 0;
- X upcase(bbuf);
- X bb = bbuf;
- X for (ri = strlen(bbuf); --ri >= 0; bb++) {
- X value *= 10;
- X value += (*bb > 57) ? (*bb - 55) : (*bb - 48);
- X }
- X if (value < 0 || value > 127) {
- X value = -1;
- X continue;
- X }
- X }
- X move(UTOP, ATOIX);
- X printw("dec %3d", value);
- X
- X move(UTOP + 1, ATOIX);
- X if (value == 127)
- X printw("asc DEL");
- X else if (value < 33)
- X printw("%s",lotab[value]);
- X else
- X printw("asc %c",value);
- X
- X move(UTOP + 2, ATOIX);
- X printw("oct %.3o", value);
- X
- X move(UTOP + 3, ATOIX);
- X printw("hex %.2x", value);
- X break;
- X case 1:
- X default:
- X ri = 0;
- X#ifdef sun
- X signal(SIGHUP, Save_sig[ri++]);
- X signal(SIGINT, Save_sig[ri++]);
- X signal(SIGQUIT, Save_sig[ri++]);
- X signal(SIGTERM, Save_sig[ri++]);
- X#else
- X Save_sig[ri++] = signal(SIGHUP, SIG_IGN);
- X Save_sig[ri++] = signal(SIGINT, SIG_IGN);
- X Save_sig[ri++] = signal(SIGQUIT, SIG_IGN);
- X Save_sig[ri++] = signal(SIGTERM, SIG_IGN);
- X#endif /* sun */
- X
- X#ifndef REALUNIX
- X#ifdef sun
- X signal(SIGTSTP, Save_sig[ri++]);
- X signal(SIGCONT, Save_sig[ri++]);
- X#else
- X Save_sig[ri++] = signal(SIGTSTP, SIG_IGN);
- X Save_sig[ri++] = signal(SIGCONT, SIG_IGN);
- X#endif /* sun */
- X#endif /* !REALUNIX */
- X
- X mvaddstr(UTOP + 1, ATOIX, " HIT");
- X mvaddstr(UTOP + 2, ATOIX, " ANY");
- X mvaddstr(UTOP + 3, ATOIX, " KEY");
- X mvaddstr(UTOP, ATOIX, "asc ");
- X move(UTOP, ATOIX + 6);
- X pfresh();
- X ffd = dup(0);
- X close(0);
- X read(ffd, &c, 1);
- X dup(ffd);
- X close(ffd);
- X value = c & 127;
- X
- X move(UTOP, ATOIX);
- X if (value == 127)
- X printw("asc DEL");
- X else if (value < 33)
- X printw("%s",lotab[value]);
- X else
- X printw("asc %c",value);
- X move(UTOP + 1, ATOIX);
- X printw("dec %3d", value);
- X move(UTOP + 2, ATOIX);
- X printw("oct %.3o", value);
- X move(UTOP + 3, ATOIX);
- X printw("hex %.2x", value);
- X
- X ri = 0;
- X signal(SIGHUP, Save_sig[ri++]);
- X signal(SIGINT, Save_sig[ri++]);
- X signal(SIGQUIT, Save_sig[ri++]);
- X signal(SIGTERM, Save_sig[ri++]);
- X
- X#ifndef REALUNIX
- X signal(SIGTSTP, Save_sig[ri++]);
- X signal(SIGCONT, Save_sig[ri++]);
- X#endif
- X break;
- X case 15:
- X mvaddstr(UTOP + 1, ATOIX, "ENTER 3");
- X mvaddstr(UTOP + 2, ATOIX, "OCTAL ");
- X mvaddstr(UTOP + 3, ATOIX, "DIGITS ");
- X value = -1;
- X while(value == -1) {
- X mvaddstr(UTOP, ATOIX, "oct ");
- X
- X ledit(bbuf, a_ed_map, UTOP, ATOIX+4, ATOIX+6, 0, 1, 1);
- X if (!*bbuf)
- X continue;
- X value = 0;
- X upcase(bbuf);
- X bb = bbuf;
- X for (ri = strlen(bbuf); --ri >= 0; bb++) {
- X value <<= 3;
- X value += (*bb > 57) ? (*bb - 55) : (*bb - 48);
- X }
- X if (value < 0 || value > 127) {
- X value = -1;
- X continue;
- X }
- X }
- X move(UTOP, ATOIX);
- X printw("oct %.3o", value);
- X
- X move(UTOP + 1, ATOIX);
- X if (value == 127)
- X printw("asc DEL");
- X else if (value < 33)
- X printw("%s",lotab[value]);
- X else
- X printw("asc %c",value);
- X move(UTOP + 2, ATOIX);
- X printw("dec %3d", value);
- X move(UTOP + 3, ATOIX);
- X printw("hex %.2x", value);
- X break;
- X case 24:
- X mvaddstr(UTOP + 1, ATOIX, "ENTER 2");
- X mvaddstr(UTOP + 2, ATOIX, "HEX ");
- X mvaddstr(UTOP + 3, ATOIX, "DIGITS ");
- X value = -1;
- X while(value == -1) {
- X mvaddstr(UTOP, ATOIX, "hex ");
- X
- X ledit(bbuf, a_ed_map, UTOP, ATOIX+4, ATOIX+6, 0, 1, 1);
- X if (!*bbuf)
- X continue;
- X value = 0;
- X upcase(bbuf);
- X bb = bbuf;
- X for (ri = strlen(bbuf); --ri >= 0; bb++) {
- X value <<= 4;
- X value += (*bb > 57) ? (*bb - 55) : (*bb - 48);
- X }
- X if (value < 0 || value > 127) {
- X value = -1;
- X continue;
- X }
- X }
- X move(UTOP, ATOIX);
- X printw("hex %.2x", value);
- X
- X move(UTOP + 1, ATOIX);
- X if (value == 127)
- X printw("asc DEL");
- X else if (value < 33)
- X printw("%s",lotab[value]);
- X else
- X printw("asc %c",value);
- X
- X move(UTOP + 2, ATOIX);
- X printw("dec %3d", value);
- X move(UTOP + 3, ATOIX);
- X printw("oct %.3o", value);
- X break;
- X }
- X PYX;
- X pfresh();
- XTR_
- X}
- X
- SHAR_EOF
- $TOUCH -am 0221173890 atoi.c &&
- chmod 0644 atoi.c ||
- echo "restore of atoi.c failed"
- set `wc -c atoi.c`;Wc_c=$1
- if test "$Wc_c" != "6366"; then
- echo original size 6366, current size $Wc_c
- fi
- # ============= bitwise.c ==============
- echo "x - extracting bitwise.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > bitwise.c &&
- X/* bitwise.c */
- X/**********************************************************************
- X* File Name : bitwise.c
- X* Function : and/or/xor/not/two's complement functions of pac
- X* Author : Istvan Mohos, 1987
- X***********************************************************************/
- X
- X
- X#include "defs.h"
- X#include "toktab.h"
- X
- X/* bitwise operators:
- X Ignore negative signs, if any.
- X Add preceding zeros to match digit count of integral part of numbers.
- X Add trailing zeros to match digit count of fractional part of nums.
- X Flip bits as appropriate.
- X*/
- X
- Xchar *
- Xbitwise(oper, operand1, operand2, negflag)
- Xchar *operand1, *operand2;
- Xint oper, *negflag;
- X{
- X
- X#ifdef BITTEST
- X static char debug1[LINEMAX], debug2[LINEMAX];
- X static
- X#endif
- X char buf1[LINEMAX], buf2[LINEMAX];
- X
- X static char bitbuf[LINEMAX];
- X char *bp = bitbuf;
- X char *pt1 = operand1;
- X char *pt2 = operand2;
- X register char *r1, *r2;
- X register int ri;
- X int leflen1, leflen2;
- X int ritlen1 = 0;
- X int ritlen2 = 0;
- X int dot1 = 0;
- X int dot2 = 0;
- X int len_of1, len_of2;
- X int maxlef, maxrit;
- X static char *fid = "bitwise";
- X
- X _TR
- X *bp++ = Base_str[2];
- X *bp++ = ' ';
- X
- X /* ignore signs */
- X *negflag = 0;
- X if (*pt1 == '-')
- X ++pt1;
- X len_of1 = strlen(pt1);
- X for (r1 = pt1 + len_of1; --r1 >= pt1;)
- X if (*r1 == '.') {
- X dot1 = 1;
- X break;
- X }
- X if (!dot1)
- X leflen1 = len_of1;
- X else {
- X leflen1 = r1 - pt1;
- X ritlen1 = len_of1 - leflen1 - 1;
- X }
- X
- X switch (oper) {
- X default:
- X case AND:
- X case OR:
- X case XOR:
- X if (*pt2 == '-')
- X ++pt2;
- X len_of2 = strlen(pt2);
- X for (r2 = pt2 + len_of2; --r2 >= pt2;)
- X if (*r2 == '.') {
- X dot2 = 2;
- X break;
- X }
- X if (!dot2)
- X leflen2 = len_of2;
- X else {
- X leflen2 = r2 - pt2;
- X ritlen2 = len_of2 - leflen2 - 2;
- X }
- X
- X maxlef = (leflen1 > leflen2) ? leflen1 : leflen2;
- X maxrit = (ritlen1 > ritlen2) ? ritlen1 : ritlen2;
- X
- X r1 = buf1;
- X for (ri = maxlef - leflen1; --ri >= 0; *r1++ = '0');
- X strcpy(r1, pt1);
- X r1 += len_of1;
- X if (dot1 || dot2)
- X *r1++ = '.';
- X for (ri = maxrit - ritlen1; --ri >= 0; *r1++ = '0');
- X *r1 = '\0';
- X r1 = buf1;
- X
- X r2 = buf2;
- X for (ri = maxlef - leflen2; --ri >= 0; *r2++ = '0');
- X strcpy(r2, pt2);
- X r2 += len_of2;
- X if (dot1 || dot2)
- X *r2++ = '.';
- X for (ri = maxrit - ritlen2; --ri >= 0; *r2++ = '0');
- X *r2 = '\0';
- X ri = r2 - buf2; /* not including the null */
- X r2 = buf2;
- X
- X switch (oper) {
- X case AND:
- X for (; --ri >= 0; r1++, r2++, bp++)
- X if (*r1 == '1' && *r2 == '1')
- X *bp = '1';
- X else
- X *bp = '0';
- X break;
- X case OR:
- X for (; --ri >= 0; r1++, r2++, bp++)
- X if (*r1 == '1' || *r2 == '1')
- X *bp = '1';
- X else
- X *bp = '0';
- X break;
- X case XOR:
- X for (; --ri >= 0; r1++, r2++, bp++)
- X if ((*r1 == '1' && *r2 == '0') ||
- X (*r1 == '0' && *r2 == '1'))
- X *bp = '1';
- X else
- X *bp = '0';
- X break;
- X }
- X *bp = '\0';
- X if (dot1 || dot2)
- X *(bitbuf + 2 + maxlef) = '.';
- X
- X#ifdef BITTEST
- X strcpy(debug1, pt1);
- X strcpy(debug2, pt2);
- X if (Trace && Tf != NULL)
- X fprintf(Tf,
- X "\n<<<%s>>>\n<<<%s>>>\n<<<<%s>>>\n<<<%s>>>\n<<<%s>>>\n",
- X debug1, debug2, buf1, buf2, bitbuf);
- X#endif
- X
- X TR_
- X return(bitbuf);
- X
- X case TW:
- X if (dot1) {
- X TR_
- X return(ZERO);
- X }
- X if (atoi(pt1) == 0) {
- X strcpy(bp, "-1");
- X TR_
- X return(bitbuf);
- X }
- X /* case continues */
- X case NOT:
- X
- X /* convert second number (in base 10), to size of
- X field in which to evaluate the operand */
- X if (*pt2 == '-')
- X ++pt2;
- X if ((len_of2 = atoi(pt2)) > LINEMAX - 4 - ritlen1) {
- X TR_
- X return(ZERO);
- X }
- X
- X if (*pt1 == '1' && len_of2 == leflen1)
- X *negflag = 1;
- X if (leflen1 > len_of2) {
- X len_of2 = leflen1;
- X pac_err("field too small");
- X }
- X r2 = bp;
- X for (ri = len_of2; --ri >= 0; *r2++ = '1');
- X *r2++ = '.';
- X for (ri = ritlen1; --ri >= 0; *r2++ = '1');
- X *r2-- = '\0'; /* end of result in bitbuf */
- X
- X /* on last digit */
- X r1 = pt1 + leflen1 + ritlen1 + dot1 -1;
- X for (ri = ritlen1; --ri >= 0; r1--, r2--)
- X if (*r1 == '1')
- X *r2 = '0';
- X if (dot1)
- X *r2-- = *r1--;
- X else
- X *r2-- = '\0';
- X
- X for (ri = leflen1; --ri >= 0; r1--, r2--)
- X if (*r1 == '1')
- X *r2 = '0';
- X TR_
- X return(bitbuf);
- X }
- X}
- SHAR_EOF
- $TOUCH -am 0221163890 bitwise.c &&
- chmod 0644 bitwise.c ||
- echo "restore of bitwise.c failed"
- set `wc -c bitwise.c`;Wc_c=$1
- if test "$Wc_c" != "5666"; then
- echo original size 5666, current size $Wc_c
- fi
- echo "End of part 2, continue with part 3"
- exit 0
-
-
-