From 57bc7d132d54b9beea1b49ad0a38d09a1dec082d Mon Sep 17 00:00:00 2001 From: davidly Date: Sun, 30 Jun 2024 13:40:22 -0700 Subject: [PATCH] microsoft c v2.03 --- Microsoft C v203/CAT.C | 33 +++ Microsoft C v203/CC.BAT | 9 + Microsoft C v203/CONIO.C | 121 ++++++++ Microsoft C v203/CS.OBJ | Bin 0 -> 1003 bytes Microsoft C v203/CTYPE.H | 53 ++++ Microsoft C v203/DM8086.H | 24 ++ Microsoft C v203/DOS.H | 258 +++++++++++++++++ Microsoft C v203/ERROR.H | Bin 0 -> 2048 bytes Microsoft C v203/FCNTL.H | 28 ++ Microsoft C v203/FTOC.C | 23 ++ Microsoft C v203/FXU.C | 149 ++++++++++ Microsoft C v203/FXU.EXE | Bin 0 -> 9600 bytes Microsoft C v203/IOS1.H | 53 ++++ Microsoft C v203/LIB.EXE | Bin 0 -> 22866 bytes Microsoft C v203/LINK.EXE | Bin 0 -> 39680 bytes Microsoft C v203/LM8086.H | 24 ++ Microsoft C v203/M8086.H | Bin 0 -> 640 bytes Microsoft C v203/MAIN.C | 109 ++++++++ Microsoft C v203/MC1.EXE | Bin 0 -> 64896 bytes Microsoft C v203/MC2.EXE | Bin 0 -> 65664 bytes Microsoft C v203/MCS.LIB | Bin 0 -> 79360 bytes Microsoft C v203/MM.C | 82 ++++++ Microsoft C v203/MSDOS.H | 8 + Microsoft C v203/OMD.EXE | Bin 0 -> 25984 bytes Microsoft C v203/PM8086.H | 24 ++ Microsoft C v203/SIEVE.C | 29 ++ Microsoft C v203/SM8086.H | 24 ++ Microsoft C v203/STDIO.H | 61 ++++ Microsoft C v203/TINYMAIN.C | 33 +++ Microsoft C v203/e.c | 33 +++ Microsoft C v203/m.bat | 11 + Microsoft C v203/tm.c | 171 +++++++++++ Microsoft C v203/tphi.c | 31 ++ Microsoft C v203/tpi.c | 46 +++ Microsoft C v203/ttt.c | 545 ++++++++++++++++++++++++++++++++++++ 35 files changed, 1982 insertions(+) create mode 100644 Microsoft C v203/CAT.C create mode 100644 Microsoft C v203/CC.BAT create mode 100644 Microsoft C v203/CONIO.C create mode 100644 Microsoft C v203/CS.OBJ create mode 100644 Microsoft C v203/CTYPE.H create mode 100644 Microsoft C v203/DM8086.H create mode 100644 Microsoft C v203/DOS.H create mode 100644 Microsoft C v203/ERROR.H create mode 100644 Microsoft C v203/FCNTL.H create mode 100644 Microsoft C v203/FTOC.C create mode 100644 Microsoft C v203/FXU.C create mode 100644 Microsoft C v203/FXU.EXE create mode 100644 Microsoft C v203/IOS1.H create mode 100644 Microsoft C v203/LIB.EXE create mode 100644 Microsoft C v203/LINK.EXE create mode 100644 Microsoft C v203/LM8086.H create mode 100644 Microsoft C v203/M8086.H create mode 100644 Microsoft C v203/MAIN.C create mode 100644 Microsoft C v203/MC1.EXE create mode 100644 Microsoft C v203/MC2.EXE create mode 100644 Microsoft C v203/MCS.LIB create mode 100644 Microsoft C v203/MM.C create mode 100644 Microsoft C v203/MSDOS.H create mode 100644 Microsoft C v203/OMD.EXE create mode 100644 Microsoft C v203/PM8086.H create mode 100644 Microsoft C v203/SIEVE.C create mode 100644 Microsoft C v203/SM8086.H create mode 100644 Microsoft C v203/STDIO.H create mode 100644 Microsoft C v203/TINYMAIN.C create mode 100644 Microsoft C v203/e.c create mode 100644 Microsoft C v203/m.bat create mode 100644 Microsoft C v203/tm.c create mode 100644 Microsoft C v203/tphi.c create mode 100644 Microsoft C v203/tpi.c create mode 100644 Microsoft C v203/ttt.c diff --git a/Microsoft C v203/CAT.C b/Microsoft C v203/CAT.C new file mode 100644 index 0000000..f1422e6 --- /dev/null +++ b/Microsoft C v203/CAT.C @@ -0,0 +1,33 @@ + /* (This program is from p. 154 of the Kernighan and Ritchie text */ +#include + +main(argc, argv) /* cat: concatenate files */ +int argc; +char *argv[]; +{ + FILE *fp, *fopen(); + + if (argc == 1) /* no args; copy standard input */ + filecopy(stdin); + else + while (--argc > 0) + if ((fp = fopen(*++argv, "r")) == NULL) { + fprintf(stderr, + "cat: can't open %s\n", *argv); + exit(1); + } else { + filecopy(fp); + fclose(fp); + } + exit(0); +} + +filecopy(fp) /* copy file fp to standard output */ +FILE *fp; +{ + int c; + + while ((c = getc(fp)) != EOF) + putc(c, stdout); +} +p) /* cop \ No newline at end of file diff --git a/Microsoft C v203/CC.BAT b/Microsoft C v203/CC.BAT new file mode 100644 index 0000000..c5c129f --- /dev/null +++ b/Microsoft C v203/CC.BAT @@ -0,0 +1,9 @@ +mc1 %1% +if errorlevel 1 goto skip +mc2 %1% +if errorlevel 1 goto skip +link %1% + cs,, nul.map, mcs +if errorlevel 1 goto skip +del %1%.obj +:skip +  \ No newline at end of file diff --git a/Microsoft C v203/CONIO.C b/Microsoft C v203/CONIO.C new file mode 100644 index 0000000..7f0298c --- /dev/null +++ b/Microsoft C v203/CONIO.C @@ -0,0 +1,121 @@ +/** +* +* This module defines the various console I/O functions. They may +* be called directly, using the names included here, or the header +* file CONIO.H may be included so that more standard names may be +* used. This source module is provided so that users may customize +* the console I/O functions, if desired. Note that "cprintf" and +* "cscanf" (included in LC.LIB) call the functions "putch", "getch", +* and "ungetch". +* +**/ +#define BDOS_IN 8 /* input function for "getch" */ +#define BDOS_INE 1 /* input function for "getche" */ +#define BDOS_OUT 6 /* output function for "putch" */ +#define BDOS_CKS 11 /* check keyboard status for "kbhit" */ + +static char pushback = 0; /* character save for "ungetch" */ +/**/ +/** +* +* name getch -- get character from console +* getche - get character from console and echo it +* +* synopsis c = getch(); +* char c; input character +* +* description These functions obtain the next character typed at +* the console or, if one was pushed back via "ungetch", +* returns the previously pushed back character. +* +**/ +getch() +{ +char c; + +if(pushback) + { + c = pushback; + pushback = 0; + return(c); + } +return(bdos(BDOS_IN)); +} + +getche() +{ +char c; + +if(pushback) + { + c = pushback; + pushback = 0; + return(c); + } +return(bdos(BDOS_INE)); +} +/**/ +/** +* +* name putch -- send character directly to console +* +* synopsis putch(c); +* char c; character to be sent +* +* description This function sends the specified character directly +* to the user's console. +* +**/ +putch(c) +char c; +{ +bdos(BDOS_OUT, c&127); +return(c); +} +/**/ +/** +* +* name ungetch -- push character back to console +* +* synopsis r = ungetch(c); +* int r; return code +* char c; character to be pushed back +* +* description This function pushes the indicated character back +* on the console. Only a single level of pushback is +* allowed. The effect is to cause "getch" to return +* the pushed-back character the next time it is called. +* +* returns r = -1 if character already pushed back +* = c otherwise +* +**/ +ungetch(c) +char c; +{ + +if (pushback != '\0') return(-1); +pushback = c; +return(c); +} +/**/ +/** +* +* name kbhit -- check if character has been typed at console +* +* synopsis status = kbhit(); +* int status; 1 if character typed, else 0 +* +* description This function checks to see if a character has been +* typed at the user's console since the completion of +* the last read operation. The character typed can +* be obtained by a "getch" call. +* +* returns 0 if no character has been typed +* 1 if a character is waiting to be read +* +**/ +kbhit() +{ +return(bdos(BDOS_CKS) != 0); +} diff --git a/Microsoft C v203/CS.OBJ b/Microsoft C v203/CS.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..07fd46d371073544caa0182fcfa4af894ea9522a GIT binary patch literal 1003 zcmY*YZAep57=F&ZcXyd)%WOqIPX zl*&yN6FhdmC?1W++I8hv>{y3(g4FWzawR)fCD`n3^wkCTDI}3` zKFOE}d>;WWrg)gR4>nKa7BDCSj-d^lKInyGprCSYc7@L|Ai1{dHkYDHuDmWwpl7b? zS-Lh+H6745WlcqQxbpNh8!Aq(cjfhziPM^5yrQ_8Ub{G@6;-|$Q(8g#W&X4-Unl|6 zW23+)z#u-E7N^h7L+G}SLExstunQPWIVZk7#+R=A$(h`pmJ*|1GDCnku1VV_x@9Vn zZcALS(_98q7blFFd1I1n8aq9_vNPqRsJ-Sz<*J7v!QlQib>vv%fOVS>s2|6HC-TyOcoj(`wh8xA^=sUnzxQ zhDxj-ff3ZbC>_pwQ98ni&@?wnFy7J<{MBf7K4F;5+c%2QzfKmJxh4169Rzo9Ke33` zj(KRSl_r)Dl~s>d4TN_wxDo}FTU1Z5*;mal#8bf%;b*Fdeh_ah$dN#UyWU$2oLR{0 zxvzqH=luExuNrOv?0@p6K#TVPuxcR>^8VF;n#iYmQY6$AqP>4_AqxjXHsI$%Mq8Fn O)v^IA9?_};*M0;0P7)9R literal 0 HcmV?d00001 diff --git a/Microsoft C v203/CTYPE.H b/Microsoft C v203/CTYPE.H new file mode 100644 index 0000000..03f3487 --- /dev/null +++ b/Microsoft C v203/CTYPE.H @@ -0,0 +1,53 @@ +/** +* +* This header file defines various ASCII character manipulation macros, +* as follows: +* +* isalpha(c) non-zero if c is alpha +* isupper(c) non-zero if c is upper case +* islower(c) non-zero if c is lower case +* isdigit(c) non-zero if c is a digit (0 to 9) +* isxdigit(c) non-zero if c is a hexadecimal digit (0 to 9, A to F, +* a to f) +* isspace(c) non-zero if c is white space +* ispunct(c) non-zero if c is punctuation +* isalnum(c) non-zero if c is alpha or digit +* isprint(c) non-zero if c is printable (including blank) +* isgraph(c) non-zero if c is graphic (excluding blank) +* iscntrl(c) non-zero if c is control character +* isascii(c) non-zero if c is ASCII +* iscsym(c) non-zero if valid character for C symbols +* iscsymf(c) non-zero if valid first character for C symbols +* +**/ + +#define _U 1 /* upper case flag */ +#define _L 2 /* lower case flag */ +#define _N 4 /* number flag */ +#define _S 8 /* space flag */ +#define _P 16 /* punctuation flag */ +#define _C 32 /* control character flag */ +#define _B 64 /* blank flag */ +#define _X 128 /* hexadecimal flag */ + +extern char _ctype[]; /* character type table */ + +#define isalpha(c) (_ctype[(c)+1]&(_U|_L)) +#define isupper(c) (_ctype[(c)+1]&_U) +#define islower(c) (_ctype[(c)+1]&_L) +#define isdigit(c) (_ctype[(c)+1]&_N) +#define isxdigit(c) (_ctype[(c)+1]&_X) +#define isspace(c) (_ctype[(c)+1]&_S) +#define ispunct(c) (_ctype[(c)+1]&_P) +#define isalnum(c) (_ctype[(c)+1]&(_U|_L|_N)) +#define isprint(c) (_ctype[(c)+1]&(_P|_U|_L|_N|_B)) +#define isgraph(c) (_ctype[(c)+1]&(_P|_U|_L|_N)) +#define iscntrl(c) (_ctype[(c)+1]&_C) +#define isascii(c) ((unsigned)(c)<=127) +#define iscsym(c) (isalnum(c)||(((c)&127)==0x5f)) +#define iscsymf(c) (isalpha(c)||(((c)&127)==0x5f)) + +#define toupper(c) (islower(c)?((c)-('a'-'A')):(c)) +#define tolower(c) (isupper(c)?((c)+('a'-'A')):(c)) +#define toascii(c) ((c)&127) + \ No newline at end of file diff --git a/Microsoft C v203/DM8086.H b/Microsoft C v203/DM8086.H new file mode 100644 index 0000000..419f922 --- /dev/null +++ b/Microsoft C v203/DM8086.H @@ -0,0 +1,24 @@ +/** +* +* The following definitions specify which memory addressing model is in use +* for wacky chips of the Intel 8086 variety. +* +* I8086S 64K program, 64K data +* I8086D 64K program, 1M data +* I8086P 1M program, 64K data +* I8086L 1M program, 1M data +* +*/ +#define I8086D 1 + +/** +* +* The following definitions indicate which type of integer has the same size +* as a pointer. +* +* SPTR defined if sizeof(pointer) == sizeof(short int) +* LPTR defined if sizeof(pointer) == sizeof(long int) +* +*/ +#define LPTR 1 + \ No newline at end of file diff --git a/Microsoft C v203/DOS.H b/Microsoft C v203/DOS.H new file mode 100644 index 0000000..efa967b --- /dev/null +++ b/Microsoft C v203/DOS.H @@ -0,0 +1,258 @@ +/** +* +* This header file supplies information needed to interface with the +* particular operating system and C compiler being used. +* +**/ + + +/** +* +* The following symbols define which processor is being used. +* +* I8080 Intel 8080 +* I8085 Intel 8085 +* Z80 Zilog Z80 +* I8086 Intel 8086 or 8088 +* M68000 Motorola 68000 +* GA16 General Automation 16-bit mini +* IBMPC IBM Personal Computer (also sets I8086) +*/ +#define IBMPC 1 + +#ifdef IBMPC +#define I8086 1 +#endif + +#ifdef I8086 +#include "m8086.h" +#endif + +/** +* +* The following symbols specify which operating system is being used. +* +* CPM Any CP/M OS +* CPM80 CP/M for Intel 8080 or Zilog Z80 +* CPM86 CP/M for Intel 8086 +* CPM68 CP/M for Motorola 68000 +* MSDOS Microsoft's MSDOS +* MSDOS1 MSDOS Version 1 (also sets MSDOS) +* MSDOS2 MSDOS Version 2 (also sets MSDOS) +* +* Note: CPM will be set to 1 for any of the above. +* +* UNIX "Standard" UNIX +* QUNIX Quantum's QUNIX OS +* MIBS General Automation's MIBS OS +* OASIS OASIS OS +* PICK PICK OS +* +*/ +#define MSDOS 1 + +#ifdef MSDOS +#include "msdos.h" +#endif + +#ifdef CPM80 +#define CPM 1 +#endif +#ifdef CPM86 +#define CPM 1 +#endif +#ifdef CPM68 +#define CPM 1 +#endif +#ifdef MSDOS +#define CPM 1 +#endif + + +/** +* +* The following definitions specify the particular C compiler being used. +* +* LATTICE Lattice C compiler +* BDS BDS C compiler +* BTL Bell Labs C compiler or equivalent +* MANX MANX Aztec C compiler +* +*/ +#define LATTICE 1 + + + +/** +* +* The following type definitions take care of the particularly nasty +* machine dependency caused by the unspecified handling of sign extension +* in the C language. When converting "char" to "int" some compilers +* will extend the sign, while others will not. Both are correct, and +* the unsuspecting programmer is the loser. For situations where it +* matters, the new type "byte" is equivalent to "unsigned char". +* +*/ +#ifdef LATTICE +typedef char byte; +#endif + +#ifdef BDS +#define byte char +#endif + +#ifdef BTL +typedef unsigned char byte; +#endif + +#ifdef MANX +#define byte char +#endif + +/** +* +* Miscellaneous definitions +* +*/ +#define SECSIZ 128 /* disk sector size */ +#ifdef CPM +#define DMA (char *)0x80 /* disk buffer address */ +#endif + +/** +* +* The following structure is a File Control Block. Operating systems +* with CPM-like characteristics use the FCB to store information about +* a file while it is open. +* +*/ +struct FCB + { + char fcbdrv; /* drive code */ + char fcbnam[8]; /* file name */ + char fcbext[3]; /* file name extension */ +#ifdef MSDOS + short fcbcb; /* current block number */ + short fcblrs; /* logical record size */ + long fcblfs; /* logical file size */ + short fcbdat; /* create/change date */ + char fcbsys[10]; /* reserved */ + char fcbcr; /* current record number */ + long fcbrec; /* random record number */ +#else + char fcbexn; /* extent number */ + char fcbs1; /* reserved */ + char fcbs2; /* reserved */ + char fcbrc; /* record count */ + char fcbsys[16]; /* reserved */ + char fcbcr; /* current record number */ + short fcbrec; /* random record number */ + char fcbovf; /* random record overflow */ +#endif + }; + +#define FCBSIZ sizeof(struct FCB) + +/** +* +* The following symbols define the sizes of file names and node names. +* +*/ +#ifdef CPM +#define FNSIZE 16 /* maximum file node name size */ +#define FMSIZE 16 /* maximum file name size */ +#endif + +#ifdef MSDOS2 +#define FNSIZE 16 +#define FMSIZE 64 +#endif + +#ifdef UNIX +#define FNSIZE 16 +#define FMSIZE 64 +#endif + + +/** +* +* The following structures define the 8086 registers that are passed to +* various low-level operating system service functions. +* +*/ +#ifdef I8086 +struct XREG + { + short ax,bx,cx,dx,si,di; + }; + +struct HREG + { + byte al,ah,bl,bh,cl,ch,dl,dh; + }; + +union REGS + { + struct XREG x; + struct HREG h; + }; + +struct SREGS + { + short es,cs,ss,ds; + }; +#endif + +/** +* +* The following symbols define the code numbers for the various service +* functions. +* +*/ +#ifdef MSDOS +#define SVC_DATE 0x2a /* get date */ +#define SVC_TIME 0x2c /* get time */ +#endif + +/** +* +* The following codes are used to open files in various modes. +* +*/ +#ifdef LATTICE +#define OPENR 0x8000 /* open for reading */ +#define OPENW 0x8001 /* open for writing */ +#define OPENU 0x8002 /* open for read/write */ +#define OPENC 0x8001 /* create and open for writing */ +#else +#define OPENR 0 +#define OPENW 1 +#define OPENU 2 +#endif + +/** +* +* The following codes are returned by the low-level operating system service +* calls. They are usually placed into _oserr by the OS interface functions. +* +*/ +#if MSDOS2 +#define E_FUNC 1 /* invalid function code */ +#define E_FNF 2 /* file not found */ +#define E_PNF 3 /* path not found */ +#define E_NMH 4 /* no more file handles */ +#define E_ACC 5 /* access denied */ +#define E_IFH 6 /* invalid file handle */ +#define E_MCB 7 /* memory control block problem */ +#define E_MEM 8 /* insufficient memory */ +#define E_MBA 9 /* invalid memory block address */ +#define E_ENV 10 /* invalid environment */ +#define E_FMT 11 /* invalid format */ +#define E_IAC 12 /* invalid access code */ +#define E_DATA 13 /* invalid data */ +#define E_DRV 15 /* invalid drive code */ +#define E_RMV 16 /* remove denied */ +#define E_DEV 17 /* invalid device */ +#define E_NMF 18 /* no more files */ +#endif + \ No newline at end of file diff --git a/Microsoft C v203/ERROR.H b/Microsoft C v203/ERROR.H new file mode 100644 index 0000000000000000000000000000000000000000..ca92e1f108f90b66c158f0964e00c69016902043 GIT binary patch literal 2048 zcmcIlO>^2X5bZfL`2#)eOfPLFAGPV{(SS)j0Xu_Dh8%@0K!Yq%Ne=P9@A@m)4(Y8P zE{t}yZ{K^ny1BSGKP!F^Z7HlJ=kmbB26UdTB-cO`1%oG4DXAcq3Duye$&{c8tn%_~ z;d@I=(1xbPMe9t&hDo8X0it}*V#0ZT2?WZx=Cr;=!<7YxEfqjST|~xlru1cT6%k2U zVZ-H$aA3mF4OJjWiq#R4kO)Z_!h{AXD9CjYt|>edo>6^WwRUrU_9>xjh5_z_JD-6C z)pv6N3yt?N4MG}_2Z4Vs+TniS`VrW#;l2c&#amc2j@1+-Owrg#m3Py^`REP?$0|+Q zUdfnh-3|8qXb#_w!5((0RJJ$RW5p^I6!ww=_+F;~U?1L1P}A4Nzw`q5alE?$lF(-s zmmQEKQEwpGL+`eo=BN#DrcJ?=krKE>i*ySG?$RB>&toa~g~n(ol@fCb+0YqJ;P)|n zNRox)>>y2c)>y#>_>3 z)Pfhp7Ks#7b0E)zak4_;J1Nd+=zklK^rV&^zwTr$_YTyUaaC#3` zEi*zHW_$;=a*F=R(0e`j!$tT6R-<B8Ze5PuN3ed?N)#nVN@{&oc5>!cAT#lYK* z4+>RFBVcSf?nqD1^?ndOjKFSuP~ri-C+IXz*F7G?2k!xSY*`?rbcdGI89LZV*t31_ z{&_G7VbBbGbz#u*K{pq-Z^p~bDl>e8)}V-}**-t} J_~Ac)e*s4SBNYGu literal 0 HcmV?d00001 diff --git a/Microsoft C v203/FCNTL.H b/Microsoft C v203/FCNTL.H new file mode 100644 index 0000000..b5f8d8f --- /dev/null +++ b/Microsoft C v203/FCNTL.H @@ -0,0 +1,28 @@ +/** +* +* The following symbols are used for the "open" and "creat" functions. +* +**/ +#define O_RDONLY 0 /* Read-only value (right byte of mode word) */ +#define O_WRONLY 1 /* Write-only value */ +#define O_RDWR 2 /* Read-write value */ + +#define O_NDELAY 4 /* Non-blocking I/O flag */ +#define O_APPEND 8 /* Append mode flag */ +#define O_CREAT 0x0100 /* File creation flag */ +#define O_TRUNC 0x200 /* File truncation flag */ +#define O_EXCL 0x400 /* Exclusive access flag */ + +#define O_RAW 0x8000 /* Raw I/O flag (Lattice feature) */ + +/** +* +* The following symbols are used for the "fcntl" function. +* +*/ +#define F_DUPFD 0 /* Duplicate file descriptor */ +#define F_GETFD 1 /* Get file descriptor flags */ +#define F_SETFD 2 /* Set file descriptor flags */ +#define F_GETFL 3 /* Get file flags */ +#define F_SETFL 4 /* Set file flags */ + \ No newline at end of file diff --git a/Microsoft C v203/FTOC.C b/Microsoft C v203/FTOC.C new file mode 100644 index 0000000..cf4a1a6 --- /dev/null +++ b/Microsoft C v203/FTOC.C @@ -0,0 +1,23 @@ + /* print Fahrenheit-Celsius table + for f = 0, 20, ..., 300 + (This program is from p. 8 of the Kernighan and Ritchie text) + */ +main() +{ + int lower, upper, step; + float fahr, celsius; + + lower = 0; /* lower limit of temperature table */ + upper = 300; /* upper limit */ + step = 20; /* step size */ + + fahr = lower; + while (fahr <= upper) { + celsius = (5.0/9.0) * (fahr-32.0); + printf("%4.0f %6.1f\n", fahr, celsius); + fahr = fahr + step; + } +} + celsius = (5.0/9.0) * (fahr-32.0); + printf("%4.0f %6.1f\n", fahr, celsius); + fahr = fahr + \ No newline at end of file diff --git a/Microsoft C v203/FXU.C b/Microsoft C v203/FXU.C new file mode 100644 index 0000000..0980474 --- /dev/null +++ b/Microsoft C v203/FXU.C @@ -0,0 +1,149 @@ +/** +* name fxu -- function extract utility +* +* usage fxu filename function +* +* where "filename" is the name of a file containing +* several C functions, and "function" is the name of +* the particular function to be extracted. If the +* named function is found, then (1) standard input is +* copied to the standard output until EOF, and (2) the +* text of the named function is written to the standard +* output. The first option allows header information +* to be prepended to the output file. +* +**/ + +#include "stdio.h" +#include "ctype.h" + +#define MAX 16 /* maximum characters in function name */ +#define MAXBUF 2000 /* maximum characters buffered between functions */ + +main(argc, argv) +int argc; +char *argv[]; +{ +int c, brace, cnest, nc; +int i, ns, copy, inlit, delim, pc; +FILE *sfp; +char symbol[MAX+1]; +char text[MAXBUF]; + +if (argc != 3) + { + fputs("Usage: fxu filename function\n", stderr); + exit(1); + } +if ((sfp = fopen(argv[1], "r")) == NULL) + { + fputs("Can't open source file\n", stderr); + exit(1); + } +brace = cnest = nc = ns = copy = inlit = pc = 0; +c = getc(sfp); /* get first char */ +while (c != EOF) + { /* scan through source file */ + if (ns == MAXBUF) + { + fputs("Maximum buffer size exceeded\n", stderr); + exit(1); + } + if (copy == 0) + { + if (brace == 0) text[ns++] = c; /* save chars between functions */ + } + else + if (putchar(c) == EOF) + { + fputs("Copy error\n", stderr); + exit(1); + } + if (c == '/') + { /* possible comment */ + nc = 0; + if ((c = getc(sfp)) == '*') + { + ++cnest; /* bump nesting level */ + if (copy) putchar(c); + else if (brace == 0) text[ns++] = c; + c = getc(sfp); + } + continue; + } + if (cnest != 0) + { /* inside comment */ + if (c == '*') + { + if ((c = getc(sfp)) == '/') + { + --cnest; /* reduce nesting level */ + if (copy) putchar(c); + else if (brace == 0) text[ns++] = c; + c = getc(sfp); + } + continue; + } + nc = 0; + } + else if (inlit) + { /* inside literal string */ + if (c == '\\' && pc == '\\') c = 0; + if (c == delim && pc != '\\') inlit = 0; + pc = c; /* save previous character */ + } + else if (c == '\'' || c == '\"') + { /* enter literal string */ + inlit = 1; + pc = 0; + delim = c; + } + else if (c == '{') ++brace; + else if (c == '}') + { /* right brace */ + nc = 0; + if (--brace == 0) + if (copy == 0) ns = 0; /* reset save index if not found */ + else + { /* copy complete */ + putchar('\n'); + exit(0); + } + } + else if (brace == 0) + { + if (nc == 0) + { /* symbol not started yet */ + if (iscsymf(c)) + symbol[nc++] = c; /* start new symbol */ + } + else if (iscsym(c) || c == '$') + /* continue symbol */ + if (nc < MAX) symbol[nc++] = c; + else symbol[0] = '\0'; + else if (nc != 0) + { /* end of current symbol */ + symbol[nc++] = '\0'; + if (strcmp(symbol,argv[2]) == 0) + { /* named function has been found */ + while ((c = getchar()) != EOF) + putchar(c); /* copy standard input to output */ + for (i = 0; i < ns; i++) + putchar(text[i]); /* copy saved characters */ + copy = 1; /* turn on copy flag */ + } + nc = 0; + } + } + c = getc(sfp); /* get next char */ + } + +fputs("Named function not found\n", stderr); +exit(1); +} + } + } + c = getc(sfp); /* get next char */ + } + +fputs("Name \ No newline at end of file diff --git a/Microsoft C v203/FXU.EXE b/Microsoft C v203/FXU.EXE new file mode 100644 index 0000000000000000000000000000000000000000..0b023ea0fc866cd5c6937340cd0ded4324266bc3 GIT binary patch literal 9600 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 OS0@PUf0Oz@KmP;QdA&ve literal 0 HcmV?d00001 diff --git a/Microsoft C v203/IOS1.H b/Microsoft C v203/IOS1.H new file mode 100644 index 0000000..b005df8 --- /dev/null +++ b/Microsoft C v203/IOS1.H @@ -0,0 +1,53 @@ +/** +* +* The following structure is a UNIX file block that retains information about +* a file being accessed via the level 1 I/O functions. +*/ +struct UFB +{ +char ufbflg; /* flags */ +char ufbtyp; /* device type */ +#if MSDOS +#if MSDOS2 +int ufbfh; /* file handle */ +#else +struct FCB ufbfcb; /* file control block */ +#endif +#else +struct FAB + { + struct FCB fcb; /* file control block */ + char wf; /* buffer write flag */ + long fpos; /* file position */ + long eof; /* end of file */ + long peof; /* previous end of file */ + int bn; /* block number */ + char b[128]; /* block buffer */ + } + ufbfcb; +#endif +}; +#define NUFBS 20 /* number of UFBs defined */ + +/* +* +* UFB.ufbflg definitions +* +*/ +#define UFB_OP 0x80 /* file is open */ +#define UFB_RA 0x40 /* reading is allowed */ +#define UFB_WA 0x20 /* writing is allowed */ +#define UFB_NT 0x10 /* access file with no translation */ +#define UFB_AP 8 /* append mode flag */ +/* +* +* UFB.ufbtyp definitions +* +*/ +#define D_DISK 0 +#define D_CON 1 +#define D_PRN 2 +#define D_AUX 3 +#define D_NULL 4 + + \ No newline at end of file diff --git a/Microsoft C v203/LIB.EXE b/Microsoft C v203/LIB.EXE new file mode 100644 index 0000000000000000000000000000000000000000..e49532a8f3d6398177ddff7de5437605766f11e8 GIT binary patch literal 22866 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
  • x@lzEAEu|*ZEAQOBE{zE;%8zqMDkp<{N;%`$f zq9;S%NuE4BxdK;9)?E^X!Jtb9SruoE6(IWpTC`{uMOA2q$YEKuz)fN}`&pG&KNn!k=A-BYdw2!r8D(tykvILy=P zTOeWIH!&FW{QS3)>nF#C%l_CTxHh}v=(go`FE>}8#B2~`xGpZw@r;zUK?yQhdW})| z!i8U|Wpe+nK=x}cA_AKl*TLa#y8Vdu)r8#eKK$BeWa81A+K#37Yprm++|lBd@b93< zR(c098aUR7!DGV!+Abr7HRcCBRCO(J?wSpM~?HqQGY$*v?Zl zl7QqaY({LsIiAfFBNTkwM{#LvLD3kSWL1CqIR`xY}KZ9WaWMBj- z018yEV6nfV@vU6HHZ}!LBg8=6FL3Bfv2>4LQ^-Sug?7%*Z0OUPO9?FYwl(=SWb}y1 z9|xLkm@@ZdwYGMkF>u$v(yKj;kUxYKDz*Va%cP(aD`s#PQab=r?0ViCeEwp7*qur- z41)!Uq<40ItG@k0Z)fD!S7;Yv}~3A~#AtznZPD0vCu2~St)mm_y zMVO!iDc>3Cns#Mos`VXeH8Mq`0xSx!Bund{10uQl;n(@h8jfvZaX7k^`+?8sD4z#A z3XZlEnKmhSQ8U~$$0Gr=%p_+RR{;D%p`4p&xWgi?`d;(nfO$M%wwKtvO#s_8t8qin zq@HD3L_{@$mjZiBw_Mh81rh^Woe%(eYdJp+H_KRdNz}iJ(e;~cWbbdd$5b9!Vs6Ig zBH63F3bHdPg;ONP{gR2K<;NM!qB3pWA>#3d#ei63g3FIne1SYu*xiW3sQYhMN@S&6 zQjw5JnZ@NU)k^lH8nFt`Erxr$$kcw!V-px$#o!cmN4%a6x?eE!xqASz#MEY{(4&)z zA^8Bblu3yB1fe&eOO0@v)017){c4G{Hu6l<)%Uq2ZR5$#~0+SP$YzvJ+btoIe z4k~x0u=J7(VdN)?PqIk#w5y}^{e3F9KqPI!2Qy%se!4xWQD>2U7@KC?R^*`hz{-Fk z4He;RaOl5d(BOEsFgmLz7csg_+({Wp<*gIxTeEjDFm_UN{Y&LqJvos4?Vq&m@3~txc=;L7F5_#5b{U^e3D3eZ{2qNx@EAG>A$8o>q zz&M}}qc40df=-##X^`ktYDjn~J?FR!3U`EFFM(;xckFAFQ1_xmby%9G6l};P(%bDy zL1V6VpikTKr8p4rwbXiidbJYYY_0cB!xL9g^wAMgD7y^@4jZLleXjO#S5buI=S^lQ zYjhLJTZ^35;#TV)U^O=7&I)E*K;p2zKFzN!z!^y=a?FhYVks&vLLf=j9<(|J(Q!R2 zZkW6n8ee_!6CpI@TZ$eb>EPL8ch~@( z8}Q|0Y_DLHb_WL}JI4at55Q*$Q2+II>r6zShqx#AF#r2w{B5pBT7n$+^&(n3Gcscw z1f>J_AP^LPFES+Z$+MqtUp)d(@i}o5K4oddZMT6GB8duR+G8(c6m^#`GJ_ar+7Q!a z!M{MZ^E+OYSkFmhTO62V{%SaVK0(Nar;xRbV;t8II&H?`XqYch33{GEEq0%Jh(7tz z&TrEnx5ecjXj4RfBI8U!de(=Kt zyx0U1lShya*g>grK9xgO760^}AYp05p&bQ-h&B33V0Z)=;_@bs8-f9t(5p#Y# z&lzSB&jI-np9>AvPoBlhEh%QwV(5SDgXe~xKkCB>!C62bEClXgLD5(iYUw9AIUk4q zQQrWn_2aysi~2#%F)R(J|BlyoQtf9&=MnyeeMLxsbAY*Gk<6>LCrASI>-+R;+AMj? zYxjKx3Hyp%nzfg$=D!zFH!fNXzJ-R6I;Rgg{VoOBJ6R&_tLKBB1JMtdp$kgqZ{Fmg zuLXsL_Y%wy*QQ2iq{zL-2?GRjI+d}krmQodkPHELFooI7e8@vr@>|I`_+zvfD+}@; zz>0y2;8bK+B)_m1^4)S7GscoQUIuY&YvGb@3{5c^!;-|R1rK=$^Zngx>HbGxSwr_2 zWEdIk^g^FhthErFXN^O-AJ#aYvk|>7NSa`Q4%j7^4cH|_)&zkSgOqC%XvgTU#gbIh6?96{$ZgY^zD81lhdp>l?ooP8~rMZ*4;rhP7?DXpmx%wS1bFed@O4BBr z(4!WNULZi!9GT_Z?qox^bf)F+UtynokkA@RPFI>fLVz@7f0^d)2wl?Bo3_>cws))j zS^TBSzU_V68}W>NnWhwUr(Mj!MePJ@8La9&aKf;YhLS17ote5H>B73o?#BRfPNv7SRcA4Cr^rJ`^0K_s7I5s=w1Yt692#M+G2 zQsIfZwCgEv+t8JYQ>gP$-HP+`+sEuv-$Z`?o*mKpQ$yFtgDMh+^w1zIP{k?A)4t`t zch!nM_05KlaG#ZCjY;OWh|V<}fftdg{+R#nO1Yl`Yxvr$9=W`3ZK|nX)WSE-8Py&W zxf<>IAOyXve_~_hq+u(8MZHbZ)9$v=m)MSJ`jHp<8>QagqyDRTxD>{(2MqvpTg~QWX2@?UegSaIe2F<I~g+4op$#MS7G#%nQB?55a8Ygs30uOiXd|L2wC6JnVXK&|dsz4zJ@hrW&rZ!Nu=q%91wSi@o!SUl(PB;hH3T6$pFi=$) ztODLTPFUW!x;z>Y|IJ;xFi=}pyEy2XBgpj3t*oiMyDC79XZ*b1`0FQJU%ULiz|y;y z1U>!TuCEO&ryu*9Z2jb)Ks#}w=SJeibkDfD!sLV(*4AM7P!*y6cCa!SszdWiDt*(x zukn+Jt@8w`7FPwTY8F;;&anRs3d8(IfRotLnqXC+rn1_zxN>QAD8T7O@A-=t*Hr~U z@)g%que{0QxxRK$m8Y_1k!Mk5u+mevbX67F&_WYR{l}Pp?xb7imY(_WEUB#X+*MUo z;}I((R`mwR3*=(qlFFL9t2~RA*4tu?J(j_zk7Us_Wa zTD*Aa!lhL;LC>hB*v)J{`!>6SRkA8}H@lZDW8Y_MAp*-GcbtzHsMb@r43sf?TUJ?fpQrA= zWp~w9*D;nNrD|m`P>C%~8;CCzrjTm1Hr=@!|3~zkj&)lU!ql+os}?Vstj;p_h7dO zinvC>D!N%9DI#1%166g)YisJPz54Ik>h7xvR<87jT{`|Q5-(cXy5&_1C$KXc>sBlc zE?nZNsa#g&sagpD$nQ76K&1`<39zJ|TU1+B$A!IWCDh_1>}RedXTpD~Nuu=JIN#?1 z*B902?c8ddEAF$JQpC_irhC{Vh%Mg+q)kA_y*0HfYCK}H zj8LCri(Gb@bu!S3aX}zJYprNAV}Y#QP?%g?PRsn|Re?$pDuAEGUgABU>zOfJf>sm+bt%`f>#D=}nfn3=rNZ9hhP#3AdSU%qD?5bLgc=YvK zcf{GCJvg!?w^4FM4%e&Ji1*`?9#Lq=Z$fuRvD$b6h&=9ydDXi?v82a?0-gnD94gZZ zfs!6})fJKNH+c>i(^R{B)aW^&R}>>}6DsoydYkGr`XZJaX%~;h>jgwr)&{+*f-&{dW%oWxjadrucxnRn)Bg$4GU=TvOZ0Xw% z4Z_j0zGrR{D(Vb^^P<#B8TA#lWFvN=#AhcO#IqOqAoOn9`(`;qqjFJSLnRGMlY~}vZ1}8Bbjp3_CA}N z=L4!-`3_(;0fSyTChb$6HPpPKV})MqP{{eM^0>;z9(4B26f5d{h#&Gk&3lthBR4^9{F{GjdzVP!2*;wNlntB{8?#-ulp%9jzfJQ z{08jUc38vVUO(l}3Voq<%lR3#yh++89aC27qb>Hh6Lik$QCf^4%$YWE)s1W7GOZ?8 ze~()fR`pvWdfXXiOTCI;*LNO|;9;wrONQ zouMPDD?xRcRF}xg?)6Ccz0y6o~S!TA+;-pc$VyX(6JyPb(tP@;z1o{ zljG4TdZ`@lc4qI|5y*J1bA%n zi-e%P9-Aq23&<-EM#uH2Fs+T~5UZ|5AkGasjw7dhx@cx2w<<=(3WyZ_>VE2EJ?5I) zT}oy$fFxc}u?Yc;T?>azQ-3wx9X&ftcbohRjZwBo6;~Zs`fI(C52$F0{0W+%S4^=L zt$M-bf;kWDkEJnIsCC3=yT*Mvu*^7OZ|k84_VYZ+D(=ealsV!v$k$yK=1TM`f^~YsdZnu;LzHGUNPPir5vmpqU1IWh`;>PEAfhn%blRO zAw@3))(G~1PO!^MuLlPP1f4zb>2N!(24y0~OZldaW5Eg~kM9)}*G?6LpjerVwJJ%< zs7yXwA6!?JFF=%3CVMQE$qA)OP<(qD0i7NRIV#rK@OT0O8^3et_wrfvdjfkdWzVPC z+l?tY>76!#5 zEWc$6J->xU)ryv!FN5OqXfTA@wsra5zH9R_samNUmjMR8nNZp&|D(;nMzHzyf=#wv z2f9Fl+WaDNevh1u13{Q=8>UGoyaf@dZ)I|o-9V)9W^7L-GAOVA66I=RMZ-G5*T3Sd zDwK~&btVKWSE{Po)-5E`lOSM@JNlNd)(v(h1uK{1l`n4dl&ZO zGd8A#3~4Pk>Kp!Wh%@M|$z$1^A~;P_#%n3wjLj(?KbqU|rp>#jmw%JY{Q4@z!P%JN!H<>J8;)O#(PQZTcpdo8s?0gH9lJ9)}gcJ1*3NfX3X9))ttgR;zbZ zHZll9=JB#~&>y6673Wm}B8R<1nK9#*k!EE0wtW0BlyW6_$0;qBriae)`YRe96RLN+ zRM2BN{aUHoNOH`@T577^T|!x<^vgl{qI?(SLn0xa4m?zI-B{@80g)*ZfxXGoK-qv0iRbpJUmuYy3 z!q@Y{Y{XfXA%a1-Vt_CbcKMeG^&KKKSQW1%MHnvzHbUa<#mt(3nPpTW|B7*_%Sh{U zFM{u<#!Dxq<3n1iz)GPcTE~#clZX9`GEe|G=+zxSKQswPFKF<67`&E~C;zLN7XoA2 zq3D?fXIJV4JtqlVJ<~HaY^m0kjCE6~CEcX~co?O|=MybMT~*}EbAgOhkcbD`fkhHXs%9LX|TGx6cPdY9gJX)9c5poV5J==N|`Dq8G;88hce}0$!`6>IAgpMts zl7Odz2h+YnH7H9@D9=h`6ZTbyvIko^2Mq@Yod5^j08$wPNYQX&i1KJ9g<#9J%kL5u z)x>mRRS#*vaG~Y~0UH`|xIo-gGhE0+MxK18i7^IY2*|*9gt#k^gf%#X)K=P@D6@H; zOyqG<78P%!(^^8aQM2J&AJjS8p^Pb9)rb9ExuzS*j#i&>bKDs<1mP$$sQk?R&d;WM zAkGJ%Ai)RN-<50L2TMocb3;4%rtEYJ>#wK5gbgD|747BNXfMx>!u;}DTS#+F&|Z6O zEwQI&JV`c8qM$VljbR+k3wQYNdG#;Dy2v*{b{fHGDcF;$j(&^^E$H_bG+l^y|45oU z;K2r}HOvZ1dxmvc4{e=_IC&AB4my6cNC7KCl{Q!P!$^27kEH~~awrLsJA!(jws!GY zkaS!{6$~e6CHyn%Wko|d)(Jk2{#ykIU&s+zM?I9nm~4(&QQ2*1_0;NPg6Q~NdGga3 zZIUy@1Zl_bs@k+l4T(hNF4K`qYmM2_NVI?)BHaEPxLgYwPGft%wU&uRt0&P5&w~+~`Q|WSd4h3DyF`H4a7odC`>hwsR zQw)sL*+a%a7B(drr?H6h%-dP!XmDCz{DA-Djm4e=2@Jz{V3`ayp}hy7w8$7h?0p^lIwBEqBZg|aXG!7jMqO=YToIu> zL%ABlwCegqHbElLF;^#e-7TR$cnelkZ)dNA(bokLpIr}I&v%e^-hwdDLSDxNO4t*O zx61`+k;&t35u6640{m>GjVCEde6^|>3=sqI(jA5IoF}inh^|YAs5!0{R^5HPIzlg< zxUzy@KoHZFcvCyzO$FW|9IvvsiTBuT6dX4b-G~_7frHUIuoXnqMN@LGA3!8%wM;Q5 zuE=F`ZxzQurKw`4UX!5e?Q$`-hBo~UJ}BG3vL-e>yMg(2P@mWH1yavOQ}TbIar*XJ zF3?_7>C0%f=xcNAmh^Y$U@p zl14z$UlT@@mSI@WLI$+l>%IUfC9M{{?&eT`dW6y&nZnRSrm!LS@2(n}f-oQPzmtHo zR851B^SCbvj;@lsWsD_~ia{Q(^H{b*69?NxQdOGpSpNr52dn)H85? z1<(~a?vX01%xK*NdSznl7_FmdwRJAS*fNN>d|ZrryWBkrD-Zl98p!6mtQFvYn7e7`9Kk20`VxkolGXI+N+T|Kzv3i`4}3lm(TxRe(v{K-H83$ z+S*Hky0ViBDsmg6-~h?m43!-6w&n0y>6x8FrO(%Y<`56pA3k0e3B_aMCq<-2udC7P zzKFt5lP)sKy3k;gYQqZEf>BE)Tux5&x2S%PyGa1e&i;Zas5&qvG&KCZkKXeZDR2G2 zW(DamtBqKy49W%=UAqd7DNKluM#n;^$Ve$#F*;0hBctasblb#WGXWcj!Um=y^)97I z^3v4rB@F-yrm5DL`5aB6a!BOK>n{-GA>It)WqKp$LtWM@@jqyiyg~F2#$t50-X_}# zGfPcJYHBRC7^%!ysu-zTVyPFAN{*#oMyf|NC8vaF$ey_YGb5F6ueUsaMVM{0PhwZj zpLSqR&Yyf(qO&VhRVY2odFDZn1-pH|^!Z-}?!OS{!o-j-IN5sW{|hp=Ql`{*UA~mD zHs8|*)3zsqEj7k7Uqz1p08FRU@tq4bqWZr>soztnpomGO`ajLH$t^?{j|FxD$IY}O zHh?JS0QXuC%%}Bxojuw9--O&Bkh_s`<$_7fwjodI&D(2`kIV>)4rX>>h->ECGgYs&-Pj1#%#mSZ`EtGd#km22Y4#bY^V zJeC7P1;<0Y!hu`M^EXS4TaV??q|Iz}vcZ?z6vm5KqXjmcaR!^b5`)19cOX)WDMiI{ z{WltH1SCKC5Zc3@9;V{*s)yuTACiyW%qj#6`#7##lpYqt^$1dCh6@eJ^*c0N*)d$n z4A=07fmiiQ_ zd6e?gu-f|CY&sP7L@g>Jh6rJD#0OA zk3vbTX!B=ZK;_ihM|Y+Q0Rb~R?P1gcE7H`%_1<;oY+wv% zSV)}@uAfNLMSB)t`htyVD(1n|DWxCNpYCOe0oyh9z;T0JUJ^zh0)ojNXc=vX&D1Xc znU;ir3IV%o2s7(FAIsP=h=cejCn&CBmb4wrwpPN}xGk0JX6~t~DnBL2m*y)6FGO`5 zIKJ|*c_VL29?Y4vHGZAYFrL=@O9X>=31 zXVv%5*=+L9bCoX8IcSMCC{MGo7lfK}c&{=J8ssxHF>_@-&1&Wcqs(vFY~4PHc7TaB zd$FfldbYA0*uH{g9 zu_#m;ZGJa?hJ)*VH<$QHV~DXfqw_i`0~`Tq4t8~k&aRBD4a$dlWgm<^WIXg)jbOyL z$)e}AhCx6_4=e#6@90n4d@uM(IjxhI{Iactv2U!vAG88s-o7QtRnK7dP_?k6fIG=d zfYjl$-uJ=jH0dfLtwO0m8L#sdz%k8vX4eqRpk*|HrG1-k(Fs{PVcGD*XPz9UzJ5QsW9#MLdHJHsmUGc*f9u(0P?K$^#2Pq`cb1( zY9Z0d)naf#A(M8sjP|;kiD$1R4>2d1y6YSnq~))nOo+-!K?0YKaW$9qYJaV|n&p8H zDjx}?>JdA%NQa0a>JA?RL)e<2+yMi;U5#vrcYuY!5RJqTO|YLIK+C(v*<=f~ymQ42 zegxndOB68B{&BWY4)DPV)S;R@tYOf{C!A%P#k#44hp5)xN_i3(wv+KK(fn7&VBFvfloDJUN_chx&9IMbb$=&{goiq2B%v|jfA>DO`T4lpIZ3dZq1!9yL ziBX!tD4@apx|#)Xc{K(2fr(81rGOY9TZes{?*&W?#=Rt|Xb#H*zsK7Ot5MLaR+BPN z$6Wd*pH;-9vO`_qRvYKO4pkA~o636DRG@+tS|yvQ5;zYG1q@f-}hAuvdrlgivcBKFhSV5D$kT)INn!+Y*;2ucWOn!Z^@4 z2Dc1wBFVi30+Hje8tSpj(_yaL5`cgG5fJ)Fo1#C<#)A37HBmGMTXJ%2K_P)0p)pHq z^IG-|h3jw({rkJ%vXQX-h0-(k70QyI{x>gkf+Un>{?{`wd{Jzu4ro& zz~6mWO*I^^hzKTEV$Elu$Wc&aA#FiPRq#URVJZWlyjUo8mQ_=gggVZHY?Zs6k!*M! z(Fkh?*0V?GxeM%lFlYM>qRoFPjtlq_s+DU)O6_+H2d99iA;EV&@h0pxzCJ@*ytYW@ z(NcqCBOZY9Q_X1s&BtY1eZ5Ebaa^RiPHU>5j#^M|G} zwr0lx*f7&<2$Be$!uX}x!Xa+qA}=WU`!?aXGLE;TQ{LeAJgi#Rc1m^SDNlouZMuhv z%xE*5lp*NbliA)o13?p0z6A|gY9>-+W2yU)8X8M2L25uWB@h1xNT(boU%fpL$IU_W zVZ$b+5K6@?!7)B`pJs5-$2t4Mg|XVCI{LtllIb=%yJ1(pT7<6vy2oPzHsK>jlwP?b!O00wl*zLY@vb6&H+z8X8~%d?^3hsOjr77MW7$3p zu1J_d;mdZ4Ui=C5r#3@Xh$$zI+^wOQ&NOz3r|5> z2IWPad~gobovO;!YHg)k9a~$uN@eepi8~Aw*mXaacob;Q80$>K#I5$Pf~xMu95GTu z(08756FMhK7Pw(8Lq)}+3zWc<%V6^eHdb;HrMOXbxCfwu<3`|6Glq(+Lxto8^H#2G zixY)hUcM)lDBrMJE%$9&tyXPvwbi28v#b4=+jtE=n6Q~msRrXK23%Az-pPN*{4l~d z-G(LQK^i3g@;0*P*NtRVwUFSYs!&av9d>gvP;pZu>{Ck_u0OC&09Q5Pq7E})j{j9! zF|hl|Q&ERx**RnkDk$CLQB9?Zfd{dT=?b2!q+KT!BsSn3y2N5pKq@I?=Me0nKCT-n z4cIxvhn`hE^F_KU?i`|YKdnhFm`ukrUrK8zMfw&aLw5V=6`#X!LYo#+Zf){$T3_-< z?3WrzW}T>L6Lh6LYqp4aHJk85>(c}G0fN@Qf5aproK_X8pm+7G*#)4tHNcSsm|bzc z4eREHl!{taS5YstNqsk@7>;KigIq-}r64+V7XC=9=mk$?O=)6HIa;(=%#%0LmXxF| zqZyA0W+Je8%7545JA9F2}KdOX>B}wMmnLsUoOgbtKi;k+oyHR zBwQ8!*oVXCc>?d&hW z^(bzunnt#^2uvG@kC+AlijWTiLV`gZASfw}nnusm!->=yV!qJO&C=~upqwHNzhVlA zOob65K`XpUbH5w9U{uCvZNO}hlgX%z{zA`@p80gRx9@B4{!on`a0Y2vZrI`=f8)~j zD!Nk~ADh95IM`>(lSfhcZNx+yrg<~a^eCdeO*rLjTN+2DLmP9sJiHRD`f46FPy%^^r*c#*j}!#cZ(7H4IO zD)pvbDYvLm$|sVZA%qa3h>>BvwuNB?b9O_NDCvm0((jc%-*9Du)tkqhRgFPwGsdvD z*Vaf8jl{L0-amYJ-GND2G?V zkpPSkz_yE_cO_e+vMkm@nA6D^id`-C##hsZ_hb%K2i+=D`=%IcS;W2~38ik`HpM+XJrgLGwINA8%4OYW^#MEdoQbD74ndn`Ex?mf{8ken?EIU#W z!9$i>S0W(}SmB!b8L|?qf(;Q%L?z0;57`Syn4?ZGGs^17Ws>0a+Ym2+mEIHVUU9xr z_4@BuKj1>Ta6~sgoL5fR+uxY%+N&?^pGmUMcw7gSk4?qrg z0J#F-aRBV#02@;dpZ^UMe*(k?f}pl_?}YtTyegwtjN$Yk@pj}GxU$kHov6+3^Ppsz zfSCoIC5f~gY~oUBDcmuQ+RXA3u;okziE6X^>Lhm~8;|?o_-bcHQXF>Qhe7<9uy?AD zoRCj4T>@AQ-Gi{y3Cc@696;K$r?$VijSHk_A5$f$#lz%L9ylN#qK2N3zMcJAol->44-sHfIb8I+K*?ZgO55 zMc1PpT?c3{{s4HDt8g+z2rq6SpugDLt*?q;6gZOWvs!8wcgvSuP$ z6{P5Pj8-#YyvRBpPb7m=5%bHJ-DmTMal+AX6#`dS)fIKu3!X@Cr?J)=Hc;z)&up19 z))rpfg(Ym^Dx^8hr9G$9(EvTF%QObfx@h0D<+3ILp*xmn1fMA?X@BtSf z+PMHcw5^T1xB5w2?o**Aya*x}$b^WhMPMa{!RwZT)_OAePfP}*-PEx$PPWXcu6lV2 zj)A}hNgb_c!|s+@=i#>FYs73FjXx0dsooMB|I?CN_Kqh8kPs(2224=;9kNIUN`H~_ zq&@X{-rX~>804wspCw)^kUO%P)~G2R8|BC#Cb^Ob2p)JDT8WX>-;sW&S-Zz~;@0gF z>XlIMuPQ|AvWX8vJv&vI*s1WjDAO-1(mH(|WI#v0M_c+*TRL_98={80{@;=Kdu;nU zkvKZD4zbycwX|6HpgS#@Qo%(clJq!8_#)<``yyl3e5gBYv20%=KQs!5)x)RjB2t^= zx(HqZ=X>4fBzJ>^HBn<|_qmFo&?vbsP?}~&Lu{fEe^^fBa2a%6Y^G|}kx0~id@`q< z=SoizX*dP37?CI;$_3Y-PAAdw_A~<~Kh3FS&}}FWCwc6F2O-vPCbK)|)&vif1*q+^ zK~VAzX?hrTB0EwMXbIyA9w^d~!Y*yC&|hodjjEC3^W=ZRunSQU!CnXY;0bAtkyPU? z4|w(&@~UkuY=ZV#~fH3{giy!be_5!Bt(pj`Mt+rjvtBJ$@ZyD98ikGK& z#L`)D9&0lWku_j-TZTBc20qC<)dOo(dp)gC;w9UKP87L`5dLR%U&0o=bKR=7fd*uZ ztpW08HSKiRaKvF-RiL>BL4!`Tz=(Kl7gTFAYjt)Ccw-vd=1heF2V4>cY z=<(C7aqX5Pj@MN165=f^9!ybPmK~N7Vu6(epZYxMD#w&OPF95MJ5y0z!hwABngacbGta z&;gv#M@6H*;Wx|p@kI$D;+R(`7=z2*L1bnWapj0Q0{lN369$- zhYU(U_ru zz;hb&=fVF*W+yHZg6C5zU@jRfIOA)@@_aR9p|B!;eD}>yK}%F!ukodSte{oX zY(jZB%bf{6Sj)9o$-ig6T%M0JZwO5ab)~-~IuPw7C@%&z8PB4+uV+!+a}EHxWXVa+ zw##u;5kI7+lxeWifG37v)nTVZF!@6UkcHW~y4d|K=#&IjH!72(&}2?Bg$BcpOyhsS=aaOWO@UOaL9nQ2PZ{sMm5KXBNPV}eNgjh^fd)5FSL^9B!RhZv4-Fg z_P2@!2{?<*e7a;TGLf+ep62Tzt^lBA7x~!TDk!94&~Y z#2TX05I4bk)yzD@)&7Q7ga1OSU2gae%OOir0W5L}scyJV;mSdjh2Aj{s%FJ`7?dcu z!_^|k!{&>#YflW(Vw#aHPyPfbnFNKOJV!>9 z_&wQZsd1Ddvjny7b&R-49@r+i6QKiFU!LNa;z2XwB(%p9yp-v$Z$*5@5>*=oCRA2}lRkA+e9LDM-tJ?r>ha5q5vW6Kci&>>a`GsGU zuAgY5UP~4a(uAm)^7u1oIMbIY7TD3-2eDYS=}t((N#w_xsOm#;^hc=nPs9wI2uW{< zWMhNCLV%fDj>UjgVh7kmrO zSigA~nKUa@m1^^1uEauiYrXCRUh6*PZiGD?!924bqF-TbHhVxpq0PwY^i20Yx)1?= zKG-ANVOM?h!JzbvBQ?f9j#L}IbMg8oL=(`S{1%MDXxJ{O2nIMbx+7NS%^p8qI^!9V z(OBIOi|W8$h~e^0tvIh2JgOc?OLD*(VZphN{Wd6ng8diOj%}|g4K+=t>a@aJ^3%`| zPcVtv!!<0ttaxpL3LR_11Qqj*YH8Pa_{7t#>9@+bzNL(Jo_Zwb>3|`04dS0&VVFq~ zKqBX*wWT7nqSB%YNz!jrfU3w=@q^cWNTO#_0u5B+ysGoMk9gguJnkb9Fo+9CqvR3Q zddTD6heI?T_aTxAHHM&gHw;KY>lXv?>*PJNCCdpIpQSydk~T_~<+I2v0_u$c6(G~C z=P(O*36#U3+6kg%b)ty$6$rpyTuFhe83lUAUPnoAEuG2)`u~&$ME>rK^ajuXTVp=F z*t=Hdk8z)KVbsrg@l0v#-6i)vYWd|UUiTSpX=jEj_d(tt*it0^yd~dYfnD8w0ec)0 zvR^QR;UTXZCJ_w<4XlA)9Al9e$9Uugr~V1aeXN57JwyX_-s}DvJ^{&nNXM{{)^EX? zW_U#KM>~noQtduzm(NfDvg+DLh7z{*DV>!UfbCe;!FY;&fYt(7o5ltfL4M4@1RPA- zQwZTdPYmJFo9|Mwt%ulE}Ct#U6Esy<|gy}^zz?KCp z6ixBTMJY@x6Jbb3KL+Uu)z!!Wgq1&z1 zMP1}uG@5W%w1?ymSRL|bnL+6Rqu1TZt;fCi4XOJ>h@?e#B^ z5>fwmC$rSUkfX2wZA_U?(rgxu7-V2Bwypp@NTC1G_>|XZ<8wsKIYQ&Z%J)Wjz1Ldn zwH=Ust*Uh&Gs(I4VcY&jghAAR(ox0aq@S%Ah%iG0Ec~6gPiCx5bQZy1&w@Yr&;IDns$9Ur5{e#-Ogla?kHrT;0WloUlmClWaX8iy_(w-!rBM|Ao7QTr zMlb?mh6%wLCuf`&C z9%~^B7Kk0n`W?2E6r`ZCSrHAk_z;Q+^QKb}0gh06S0yO_*rRE14Wc{`SN42K+M7J< z00slACBjZUI7zDq;XW7SI}c>drOi$N$_2}mAKxzz!*bP<^#{SxEo+6~Fl8+xh!Q@hFW|h#ryI0nL@)w$Ky+^`J+c!N#EAl+SjW4$L-6-+C??m&G4Gi&)^17=)MM zr&Pt4Q-bTy;g$|%o!&An`VSoOp&n{O#d*-oeGzNOBQ%mUOq!ToJ4^odAFQERpeO)r zVCeSE=9jOk3hf%nF{s%yJDL0LrUb8_N<-70FqEEBGszweIOf$ zu&kcgx_I1YXp!xkn~WfpBl%T!1YH2`OqIPaYd1D9O&<5fIA<3xobN$vBSheMWQfi& z^qza!U1a(vjkciKn=N|nM#(}&J6_@Ff5!UE}_E7J2F@EV>5G<&7_WVG{ z=P=FQiuyJ+G#dE^=hfsD;39+&@VAY){0VQ3&H*2&hG$87AQn*Z3KQC(%TIids zd95<7jiq2Zrb^K8I<6zjCyg9J6_a6=Y^2Fj-{lx+&v)4+8KQqc_QRB*Ic|YDbP5A@lzn=sL#f=6s66}Ft z_@Q0o=yX)0qASF?@)v$S<*7B)5^2x5jzJplA7O23Va{(X*d`(a-1&)^{cuvkgADBV z0P|!G`^no-AS&|ypejS(*W~a9XjJ91xCpWHN+ZPoJZG}j3`l^!v}K3Vj?f*Z7+%-| zc^f}53R8=~#^g6IP%&Yc0A-fg> zmr>rk2R2KrwQHC>`<(JH^~sH2jhj*6|0hZAtt?R~008zLn$e+tY`owT;xN}oVYnQb zDOpY;rtf4r;!tR%dIp0(AA`1pmJ?}9iOQmH{H3Y^vuAe+)^bp?g+H;CjO9UHZjXCV zMyM2T6RcdS;xO6nrD{L|!U?;8kWyN|Xb^ed4&jZ7!MzQ*tD|so_^+TJ%YPsFLM*@M zPUQ3RZw4iZ&_*1e_b;XMp*3w@JcJ~r_%BiIX`P@vDab#5bj5mkEp#_1hHq%&xSEn) z+!RCvWyGST@dp@=nSKL;I`3wLWW=U-N2Blfl|sXa)7b4WByYFhjIAWD8lvIF0?(A7 zPDF}w+B{X+w@c%+b%H$QBYE;im}6Ug({Ozen!|O2YX1t<_z#7@p^qF$gT0Tf)0 z7d6D};J|*kK>(4s34u>Qu&2KUndCl4F{2pt;VATD9NKXACdw|M? zvhnJ9!8yUVX$82Dxz41BZ_{!lx{yx9wn-H8i*3?%v{{0J?&wM59{7hgqpl@+p`3e< z^$xM!^20Ug*`Nuu&wWC`Y7X;X&w#FrJ@7BBgl!o5Ax{EW_|3;@`uE1muK1zpKZafg z+H{Qf4>En6%|a#({FJ7MOzF{cxlk14r-1}#m+jhOuZ3>Cgbf+iMg-g;><+R4C#?d5 zy4d9+EaE0*%zIH;2$lV1c8ON`EV?Y~WIFx+n*DwQ`P`>!2KtyLoXs)gdIH~M!{%+d z$;#hRBo|wG<&eNHV(>(kLccwxr79wC2~e(rEXnRH1pl%Gog^w(v#u4EP2nerw%;r7 zYgX0>^2!!vg&-gL1#SR&MzgX+kS9izhXlFjFG`^x*Z!>JgM%(9GkF6+=EZ_s-li;o z1Y;WJeIH_Il?>sLdtbblexm;##?#~YS&g4L`0?T=`p<)>BK$17m$9s~pZv-P@=G7Q z>`Rev`*53Y8i^W%a=j{t-dDo!vat?|=kn0+3(*us*(;}_DVTZ$EH=Hfx#nWt&yAa-6o;BP#oi5Jm=bNdkz=;A+a{*=kNC1YIv|;*T&Gk6D)Kxi~!S2%VA&3q_ z0`{oq610x|a0a-!U>hxgJu=jbToM~f)T8w&$aHp5@eH36ETi@G$5`4u29ODWjurJ_ z6=Ctkfh!6l+u6S9rD*d>hRx5S_CqO$Q+~>`#rDJOmGR%diu?Dk#P(NM4fy#$@Heg_ z{hyOwTrcLu)obKKZaaJuVKc13&uoQRjK~zO99 zYi0{<1YzT#`Oi-t7%0(%eLJ>atzOqfWjS_a%_JDejgM0a;Ag3ziDl$8@r;(5Bz{l< zQK`@|5J5k}9ggPV+@pM&az{YSSR13+HrenO0&N`OiWSG@7xF(jXxMALDA^j+oCbDA z><=nM5w*hLV7nk$8?{Fn&LapC87zRCLq8lOwEpO|)l1fkc#o%Z{Pj5~a>1p{(S<5le!k&o=r~2uV=_s$I>WI%`F?Vi;vmT>UrS3fGzK`7dmeTKQO4G>AH;)?1oJ(iTHI5p%AVbr-RdO(T6ciBeHlj>{D3-sP=n za60E#Wye>$!&s7=Mn)Ych~wf{t9*J1;#hMc4979Z4oKFZr2XHQ+|Z$9i@*+YE$nKS zA9)i!p;W9Y(nF%v{erjrCKoqgCr4pr`|DVMYb#xdIiQBo@f{cRw}aa?WPu8R_l>pGk_eBp{>yo zS_>V+mP||kpP=W|wB*XtBC$@pHW>>o- zY}gpQ{P`~cK=z%azIA4S?>NWPu7`#h<46awWCz^8xNEZxq5iO5;cS{E4~MVoav{o# z-i*o*tSr<_T%MXvzfnIqyzonG!u6^+C412(M^GcN?*u_)=!>) zR+VD{ii3C2LN6}4;a47EXPB2v2jPO^R_HQ;PxI_@-ENE`rO9c5MQttaoS>SXWkhf! zvBS@Qe3b!Ft5h_Io!0_p%%z7^;#)@oD+GE^WnDmveQ#)*b>Ay&a$B)Gcn+-eI;50Q z{%Jd=T)Ry!%x!Xi!K(XbZRP#P4Kyb1FxlijMc!U5{}U~rY;t$LLwfb=+vTzEq%oUZ zGi)>+ZE}?EV1P?|2X#}}ce_pQYMynm-6khe4)((xjb+Y)G&S%IT5wcr#dvDP6$Uh? zZcRb-AL!b_fYw0q$K$~xd`dQIW{NE&$Gp}Hq=}5D-5QKzh~FgRnB!LBHTMP0gtl^D z=xZv@jA7B@bJ~kLNAfF;0xw}-LNZ^Evg}$i+2d}Ab6QwZOv9GhC37o`QiZ_>OxH|o zS}1M|&pk6?5_9b8RJHoo&}QHe9kWE)`2s-y~hWhc1s;B zK#w!Dtxp+B7wuP}C187^vTDY$bh)AzNTG^IS&gCn z5WBRPSHks#3EmvKU(>!Q)Ew7vMO6v|*$G$<^k40rA*$lxUBqKG!khv3e$T+I-Ryyz z@k1N^+ySVJ_JGrd0&J$+#c2tY=^naE#ON zmvSXr`GuFOyW#$`t-waNIR(m*dN-ExAhnHBOb#)du4XMMgMkqO^CH!s8h8P9 zKdsgO=j-uCyMghdCNw8&(1@gu-N1O!ThKsNcD$Rdf!)pa4Qk|fvu#KHDY4ePi&P&< zVcc<<9}b<;-Q}U_xCv^Au@rkpQ!A8Pd@0X6yT}K7EAI&M!q-DP$}PCb9ijLuf7$9w*_?LdBZJWT6WuxlM^ROg z{D(TFQjq@?QOX5bcS%_($p1X6IG~;2DtAX5ZuSc;)I_A0)Wgth9)b0se6Cw4e?!r$ zMgF3!VKW^{R{BiGfvk*~j_Wyi=&P)>nU1Ylx6O3Cmo;LhP1;8_i z1n0gfGI-HYx+DMQro~q<*mTh+mT+AE$kfM6umf-$@K+fy@n06OQ6Rg$5vQ+cd7}Fw zn12F>Et5Z2RB%O>8D$Th6h08hT?iutYI#`tt{j zn@BUkE|g_G$FsuVIkvJp;1!}LKJ@TN!hnE)OTO&WOM2?~68=jZ(;h(rb{G>hG;ZuT zTjs~7)4_A^g6Y|zH_B!nSeA`&Nh;VyE90>9y5Q<;X1T0LG`Ep8%9Qqv9lktb!1^?m z9o2HNYk}|k zKeg}c5zC5O9dJaHu9CrB5$Y&9=#K}fU!L0cv1u4rZ2NAAzFpS#TdxhcEGP;wN_&v( zZ53@Yg7(Yz_KQB-B6x12TbpnVHSQJzqt8=w=;1C61)9j)+Np^{ z|2GvVb7*}N0*XA6fS=5|A-fn z?Y|y~j)Vk~$|$L&end(>TIz2P%x%&!jndIUB}!}0L}~kU%?kA6FJKV`hu5_N)1y#q zY&w?U1wvm=R|adgBuFHhbrzc5@@u4VA$|)NADxs&<^2X4?6V?MPAiDtc?It2dPj&aX)_`AYXk4_RfxiJ_4?*xF!bN?PN1TU} z*+Lr)b~%KtofvwS=>#I;fa_bO-Sw?$st#CtAOKv&Uv;eD>tK)%cOW&fH=ameiqWTlX-l9Vwop7fjrKgDp;z7~d=0s&Ddh7U z4H&yvc<2)t4vP8Y8yx39SkGEiXA)baets8S)9CkaTD0luD5ssr@Sc7O_*62u(AoD! z2s2w7J4Q;15P7`1;CRxxRu-d(F~|E|zfi1(&KVB}FoIr3GhVs?R8KNg#99ADYJDvA z3sTD{MSJ|f&c$|lKlyBM5-WvdP8S>k!`d%Y`x{%mmZs6{B+eJsF17N3qoJkot2hH3O*^DaBe`{}6T-aFwE8)Z(6jIo<66JAOzh+1VY#LJg@} z*k1Fz&J8)%jKahN+W8X)kI8=+we)!zuavKz;;SrO*|u+UmYzJpt8fb^-5YuM5i)g+ zaf_t}`I+a)NbVMCwqc()p1!_=n^3YSjcv~OPyuZ#Iqbt7U^h-9h^qY17i4$f@27Qm z|M^f27sK20$wBW%MT`-t)+cN1lB|x#=lw?MjgU{2aETZ^Gn$y~K|$R-88o zzV$0-A&jTl_q1bH6)skr2^RnIrQW;WHdz6RJ1T6+GcMXICGLL&LoW(k>8r6usmr5cv$d zA`m`GoZJcHhQCW#lJEgN`i35M3hd@q`8?&Jzql5)3w;9a%V+bw@o=wlH>a}c32i)j z%Ka&D_DvQ|al7tK7EAFpc=QX6PZPSK-_`DBd$qd>KVkf|*x7eFum!=F4@Afvrsc8_ zB(fbq6J&8o^vrfvSPAF=dm207ei65ECAqpGj0%xJn4Jb@_2e5P?1!N3rMVjsR#kRA zRtJN-3CDUG)g0)s9R6E9?NxD{iQaX9Z`RsK zaTJ1I+{4Azx0qa~9tXdubOAU!G@ z&Z?(Z&I)CgF9;hn6lN5^T0>DtC}M?wrlmewcr#QR6#g__*|Je|S>R z!V37t&g8 zVP_}**}-VqK$A}p;i&La9jD1b_fl8ce#T#V!EOn_Mcs7p>*{jay7UaBC)oo-@IxZ< z@dWh9XKg0EDy*)*JcZ8NlQEsxkuI8(<6$i}v9tEdfybj`K*0qV2V4Zc5<6#OATJ4u zTSUHtu+fA3C&qF(cGx_cxbkFAP^uC;fyP!tN{4Lz{!(yIC}b{EZp^Hz`BXmH{apNJBJ0-&Ex=NBs?&ylBYioQ1P z3uPhzaU9T~{I`J5eX{*1ZaTsdCutWZJbmdQ4Z5z^RgVxAc8mw%vlpPa8Q?Q;U951| z3rS^YTH_ek#WLL9*dQCxSzL2^5myCcugltMqRO3ov)i59OBr@Z>uw#BVKRIDMs>WF zE)*`}YQXN5SM(>S`_y=y6NG3?b6vnoPiqjzx4IBrxH21O zO#b(6Mo2Y%qKVoKfBv53D^~ot{Pq<};$u;HL}tn-o*Jq`V7nNVU%~SWEwBtc85$T1IrsjBghBC7JB4`E>MaG>&fpC)k3{cglB~QIcnuy zEALzR`;}35hzs|>NvvH#5vR&AHEMBa9&xZ+;EJXAs4eV7ahQF?@(jGgxa^hX;A}lS zK$qDi{fK-}m0Kk~a|46Xu$LcYk^;pXNkNfHs~Ptt%imJA5~o3WEO-H?&%wQ>XL1F{ zHQ-a6Rq^AS5VTXB=tbwyD!7#;6xO~;hlh^eqyy4}>wz@(O*-Wl9D}?TSbxSBn}-Oi zZd5Y{BM0BI@Te=-#7p>k)|rrAYLyT@j&Gt3rf;Gp(*^GY(~V$o%e`mcnY<9bJ+lX> zvEA^fna(6?mcKFyXYi|t=v_Q&f)n&1nt0T14wFYUuQn(nktoDp8Fj97Ka3DMMp0+a zC?yHr-%U_HgG&qFp-eUmSeL}^aP8+2H>K#+#M+^bFM{H_B;5O87RZd70kDyV41gIo zt9U`*12eCBgV$5e>LG(I?^&6=0+%geh#WW#P9r5{JdqN50ImRJ8I(tGZj?x!!bsgO zO6ubn7xsw`Ss`L_qRVd?sH#rAjH9YQCQ_llE7y?W8>FmN(!CmQ-$)~8rU~!0p2(U& zb-oW05F;e|1+4a7P;e4$s?$`2hsi%fcVnR7x`A0~(3G<>1xLTETd_c9nFV*Z>VlJo zZ>!?*X;gFRL67@{*^Ri3r@)+&>x375!~0sD;D0pdtMnbbAYG{+Y0=xxj3gV_ zaAsA7tLOPSLlJ-24WmZS-6%|&E}ckXq58OCV9ro@2;k(PPSG^DoJ!LG_kJ?6IFQ4r zaqXi~nMYpp9Iot5hH^prntbC1@_JXOoNWlXIxq3v_ZlaOJhT%R%hoU&;Bh`ld=pR_;9^OzR1 z5nmG&?`OXY@VlC>eGoZQjxQfKD8^I>6hsVN8rVvm-tkMOzTQ}F5oE`{WJ-xVd44$! z>LF|SIGRE#v<8IhyaxdX*PgN6wKsUJhO8&?D*xEjpbj5|8-$3yYd9+2p6!^w6r0RG zN-3XQ3&UGbEJ((+R8Okq`hY3QfV%Q&dNZmF&xqRI4)n{^)VytfW z6Yv5Y$JVR2lQ1}mO_dR6n2>gAS@-HN%$y>~juMDSgQ$_9_#iL@#kt7|kb9t-^FS0= zXeYfSV$Myb3wQ9+(X9jG(5o@XDpbuVr3_Gqul23{eC?UFSzU=%x2pUjWX}j$iIjd^ z$hwC9R;pRo(cf`u)&TnZBbDErx9~ojF?n~@=jaURjfoCYH&=TNuLSaj*P7S zg0rT*$oDOXLmZch5%i!&E&=1|9$8KSAd3_6(O&645!m|4BR1Vj9hid7;3(J9^}+^))+ z)M1v~(qWcRvwm8|nuSX2va*J#zNUiDaqWm+;S30CT zFQk2gO1f114e=Me@-8ZpsI&Fk*3+JE@fnJ?5#Qj;^!OYFj9(L0_sEQ_>9)$4*;p2T zCpkt!inri0^30UC?Ao;2>yAr*`$#7o-S2T)E2*GO z`dh_!IL91qCGQ75tPrj^3vXa7`}+s>Ga`|53tguBuW|pFsyyYsGTV%gMT6=q+%ft_ zAEqvyS6o_JG|yq4H2q$)tEjYWQSs7l2{+RF9X)iyj$VR(M=!l@M<4v{qt{2v{ra!r zR~bvn7B5=*FfxLrWK}M4bY` z;r|&6i%N^k%LbL12hHa=@HoH7fhvmT4-*Q@1iVKj8aPT!U0ULFn5~Nz7mYOw=91#F zvF1UGmz(o|yL7(Uv7!X|gNCOsrxO1gSb&c;&nsNIwAf)TE-6}SUVti)wMgstg5pvT zjOPOOj-`0xC@NiAxY)d)aM5BXy0NgZ%v?Ng9v;#3Qb9wuVA0a~teBaaq>+zmSy1d; zI$xN#uyE-^Mdta7${sFqIEu`LfL^%BVIDU*XU60_3zb1l48h>CRP-4c`2U_o^Gb`$ ziZQgKhmX!MPv@g@H&~#kl-}DoW0}*3jT~+^556~BW$!F5EivCVX7mUR z>!f?lcPw69Jg?9JrZk&{yNe6wFIxJLc?wtr$$K4z^B(R9kpI9$Eq+W5yUSonIzIt6WsF)Vin? zv_-X3b8~X0-W_W^8pCEiWJA&N5;o^S%=xzzFSvzTZ3Yi^>O}{z$R>T;_3E<|QNv3rk%06fV!7m~J0TsniFqY*Dn7My*cCJMt#qVZAq7$So~?sI+j2 zxeOu=Tr#hyXnq+)2nJx01G000#s;y*6_w62XA$jV@|8D#QBfI&t!Un&1&hE0xE)Rq zM2)@pAM>Izu&;U1;>AS|k-Q<=EG=A8M2x`XMU;^iJ+!nK(ueYm!|t9sQ83&w_I~Y` za5erV;9pn4h<|_(46&wx6&FIjo5z{cZ_kM3&YMdlyK|y#qO~)>#5&1)O{^QGP)T7) zX>myoT6c@3aOs>vhoh7_eaDO$c{6h+33nDRS%Pt6e7Lw6lCRY4z^pfC+#qjAwyZbbUL@pjNGhP&ysNiW|qy zSR}S(I}xL48BIK%5J;WKo=k&OBo=Jg^8)O60-gc!06Y)p`+R*JL#gPFD6*aVf3MGX z&iT@uoCaGd_JWBM4b|y+UnNSs+v(VY*ylT_NLZcDC`3U|#g5q3Kd6GA@i26i*y(h@ zLcSV_JDrZ_Cw|b3O7B{e8INJr(>d78PI{j5ezulDnu<^heU)fVXUgIODWO_s%L~O z?q>%+_juVNx-B9V-bXlCa7rfsp&RiOQaeDz8evuSUAb(Iw$va|U#T4c`&IP>L= zXpdhHb0~VC52L~bQCG!hqQOaW8ulF*2F9H2tXQsB<)iwDAEk?n61M12+_Hnd)3mD_ zG|-0sndL-dM+WVt=&9}=YZ7d6!qX>TY%O3A@sdc@YZvvm#WhpT(#x!@SYzY5&9oF_ zagGQp&u23ZFx;B8uh!GWJe4JLd`UAc^UTbqssA#AHG#fCwX!M*mw5{Jv@iCl2eS+@ z$$O(%hAOrdqNchtwd}eA}sh2#~+V+P85sV%p&3)g7;k?uh~`OVFDOO zDmslF71<}^cBsZ6i9J8?27VAZHc`g=I^4kuP85y9MC{q2ibm>7o=$w=2W+-g90#_i z5-;$LQ^x+Yg5E;qkTt_s-s(_$DTWEv82wWKjsF=N&%ZKtNo%YFrJlq0Q6$)Jgu#&^IODM({?ijkss4V&HOgq*rnk$Tg zkQ_?Y0art0+-+?Fep4zqlA{k0^Ou2$Q++Qf*oaETqk z+~wB-d*n<|VozLi&^=n<5fg3S&2$0Vaf~`3w$;ZerMkR?t;Q+oPslt47yKQsMYrQ) ze?!v=fnT>ZXS<$`F477v5D>}{IVG)3qIUMeyozs;l)3P38TI(&^~J}n;^d;3WsJwB z`4**N&9xoGdBNnbmQW@M1UKN>f&$I|&#BubZFNMl4Jjl=^nytg1PNsjplN}Sz9@JW z`l(}>UxYi~tXGY;L2O7ss-O3jhEB literal 0 HcmV?d00001 diff --git a/Microsoft C v203/LM8086.H b/Microsoft C v203/LM8086.H new file mode 100644 index 0000000..9d73107 --- /dev/null +++ b/Microsoft C v203/LM8086.H @@ -0,0 +1,24 @@ +/** +* +* The following definitions specify which memory addressing model is in use +* for wacky chips of the Intel 8086 variety. +* +* I8086S 64K program, 64K data +* I8086D 64K program, 1M data +* I8086P 1M program, 64K data +* I8086L 1M program, 1M data +* +*/ +#define I8086L 1 + +/** +* +* The following definitions indicate which type of integer has the same size +* as a pointer. +* +* SPTR defined if sizeof(pointer) == sizeof(short int) +* LPTR defined if sizeof(pointer) == sizeof(long int) +* +*/ +#define LPTR 1 + \ No newline at end of file diff --git a/Microsoft C v203/M8086.H b/Microsoft C v203/M8086.H new file mode 100644 index 0000000000000000000000000000000000000000..2bafe783277a342c4678a6e38a100a8d9cc62565 GIT binary patch literal 640 zcmcgpL2AP=5bRY3f1sy@UYbzq213Xsw_ZY12u(g9td+IY)*4BzabI7_b|@|sa;nfp zv$H!pqhh(tvvlEX5H!~{cVsJ2sL4_wwjO+oCFveIL#2TR8+JWNr5t*nxD6|;fjp3f z507b>W(S=t-+L$xwH{bQi1YV0MCSHsyMa&X2t)rks*8OBPeN?gFVH%!oNOK-J(LVG zaz?`QFT(0|UOx&Ep}+eN^ZHMFR4DT7Zg3sf9F~Dqp5<9_ML=W~l``OzQ0QAsjw!mW z(1DSDaPMV<;OT2fC}I*?P8@d$;dDH|2{A6Afb>9SeLv9_u-jcAZ`g&Tut?z?u5YY4 R{@Bzvcb(Le=i8fqJl||UovQ!< literal 0 HcmV?d00001 diff --git a/Microsoft C v203/MAIN.C b/Microsoft C v203/MAIN.C new file mode 100644 index 0000000..f559c0e --- /dev/null +++ b/Microsoft C v203/MAIN.C @@ -0,0 +1,109 @@ +#include "dos.h" +#include "stdio.h" +#include "ctype.h" +#include "ios1.h" + +#define MAXARG 32 /* maximum command line arguments */ + +extern int _stack; +extern char _iname[],_oname[]; +extern struct UFB _ufbs[]; + +int argc; /* arg count */ +char *argv[MAXARG]; /* arg pointers */ + + +/** +* +* name _main - process command line, open files, and call "main" +* +* synopsis _main(line); +* char *line; ptr to command line that caused execution +* +* description This function performs the standard pre-processing for +* the main module of a C program. It accepts a command +* line of the form +* +* pgmname arg1 arg2 ... +* +* and builds a list of pointers to each argument. The first +* pointer is to the program name. For some environments, the +* standard I/O files are also opened, using file names that +* were set up by the OS interface module XCMAIN. +* +**/ +_main(line) +char *line; +{ +char c; +#if (UNIX | MSDOS2) == 0 +FILE *fp0, *fp1, *fp2; +extern int _bufsiz; +char *getmem(); +#endif + +/* +* +* Build argument pointer list +* +*/ +for(argc = 0; argc < MAXARG; ) + { + while(isspace(*line)) line++; + if(*line == '\0') break; + argv[argc++] = line; + while((*line != '\0') && (isspace(*line) == 0)) line++; + c = *line; + *line++ = '\0'; + if(c == '\0') break; + } +/* +* +* Open standard files +* +*/ +#if (UNIX | MSDOS2) == 0 +fp0 = freopen(_iname,"r",stdin); +if(_oname[0] != '>') fp1 = freopen(_oname,"w",stdout); +else fp1 = freopen(&_oname[1],"a",stdout); +fp2 = freopen("","a",stderr); +if (fp2 == NULL) _exit(1); +if (fp0 == NULL) + { + fputs("Can't open stdin file\n", fp2); + exit(1); + } +setbuf(fp0, getmem(_bufsiz)); /* set stdin buffered */ +fp0->_flag &= ~_IOMYBUF; /* allow rlsmem if later set unbuff'd */ +if (fp1 == NULL) + { + fputs("Can't open stdout file\n", fp2); + exit(1); + } +#endif +#ifdef MSDOS2 +stdin->_file = 0; +stdin->_flag = _IOREAD; +stdout->_file = 1; +stdout->_flag = _IOWRT; +stderr->_file = 2; +stderr->_flag = _IOWRT | _IONBF; + +_ufbs[0].ufbflg = UFB_OP | UFB_RA; +_ufbs[1].ufbfh = 1; +_ufbs[1].ufbflg = UFB_OP | UFB_WA; +_ufbs[2].ufbfh = 2; +_ufbs[2].ufbflg = UFB_OP | UFB_WA; +if (_fgdi(1) & 0x80) stdout->_flag |= _IONBF; +#endif + + +/* +* +* Call user's main program +* +*/ +main(argc,argv); /* call main function */ +exit(0); +} + \ No newline at end of file diff --git a/Microsoft C v203/MC1.EXE b/Microsoft C v203/MC1.EXE new file mode 100644 index 0000000000000000000000000000000000000000..f4bac116b9431773bc8070e36e8a483932a69a7a GIT binary patch literal 64896 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 Fe*#Nyw?O~^ literal 0 HcmV?d00001 diff --git a/Microsoft C v203/MCS.LIB b/Microsoft C v203/MCS.LIB new file mode 100644 index 0000000000000000000000000000000000000000..9e6b7064d0371ef5aa46e673292664a0e807f59d GIT binary patch literal 79360 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

    )*i75D@G60}Y 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 + +#define l 20 /* rows in A and resulting matrix C */ +#define m 20 /* columns in A and rows in B (must be identical) */ +#define n 20 /* columns in B and resulting matrix C */ + +#define ftype float + +ftype Summ; +ftype A[ l + 1 ] [ m + 1 ]; +ftype B[ m + 1 ] [ n + 1 ]; +ftype C[ l + 1 ] [ n + 1 ]; + +int filla() +{ + int i, j; + for ( i = 1; i <= l; i++ ) + for ( j = 1; j <= m; j++ ) + A[ i ] [ j ] = i + j; + return 0; +} + +int fillb() +{ + int i, j; + for ( i = 1; i <= m; i++ ) + for ( j = 1; j <= n; j++ ) + B[ i ] [ j ] = (ftype) (int) ( ( i + j ) / j ); + return 0; +} + +int fillc() +{ + int i, j; + for ( i = 1; i <= l; i++ ) + for ( j = 1; j <= n; j++ ) + C[ i ] [ j ] = 0; + return 0; +} + +int matmult() +{ + int i, j, k; + for ( i = 1; i <= l; i++ ) + for ( j = 1; j <= n; j++ ) + for ( k = 1; k <= m; k++ ) + C[ i ] [ j ] += A[ i ] [ k ] * B[ k ] [ j ]; + return 0; +} + +int summit() +{ + int i, j; + for ( i = 1; i <= l; i++ ) + for ( j = 1; j <= n; j++ ) + Summ += C[ i ] [ j ]; + return 0; +} + +int main( argc, argv ) int argc; char * argv[]; +{ + Summ = 0; + + filla(); + fillb(); + fillc(); + matmult(); + summit(); + + printf( "summ is : %lf\n", Summ ); + return 0; +} + + + diff --git a/Microsoft C v203/MSDOS.H b/Microsoft C v203/MSDOS.H new file mode 100644 index 0000000..a0e8df8 --- /dev/null +++ b/Microsoft C v203/MSDOS.H @@ -0,0 +1,8 @@ +/** +* +* This module contains definitions for MSDOS Version 2 +* +*/ +#define MSDOS2 1 + + \ No newline at end of file diff --git a/Microsoft C v203/OMD.EXE b/Microsoft C v203/OMD.EXE new file mode 100644 index 0000000000000000000000000000000000000000..5c180e63bb1cfd3b4a423a39a0a71ff29902f924 GIT binary patch literal 25984 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 *(p)->_ptr++:_filbf(p)) +#define getchar() getc(stdin) +#define putc(c,p) (--(p)->_wcnt>=0? ((int)(*(p)->_ptr++=(c))):_flsbf((c),p)) +#define putchar(c) putc(c,stdout) +#define feof(p) (((p)->_flag&_IOEOF)!=0) +#define ferror(p) (((p)->_flag&_IOERR)!=0) +#define fileno(p) (p)->_file +#define rewind(fp) fseek(fp,0L,0) +#define fflush(fp) _flsbf(-1,fp) + +FILE *fopen(); +FILE *freopen(); +long ftell(); Šchar *fgets(); + +#define abs(x) ((x)<0?-(x):(x)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define min(a,b) ((a)<=(b)?(a):(b)) + + \ No newline at end of file diff --git a/Microsoft C v203/TINYMAIN.C b/Microsoft C v203/TINYMAIN.C new file mode 100644 index 0000000..46abc5e --- /dev/null +++ b/Microsoft C v203/TINYMAIN.C @@ -0,0 +1,33 @@ +/** +* +* This module defines a version of _main which processes the +* command line for arguments but does not open "stdin", "stdout", +* and "stderr". Since these files are not opened, the library +* functions "printf" and "scanf" will not work; however, the +* console functions "cprintf" and "cscanf" can be used instead. +* +**/ +#include "CTYPE.H" +#define MAXARG 32 /* maximum command line arguments */ + +_main(line) +char *line; +{ +static int argc = 0; +static char *argv[MAXARG]; + +while (isspace(*line)) line++; /* find program name */ +while (*line != '\0' && argc < MAXARG) + { /* get command line parameters */ + argv[argc++] = line; + while (*line != '\0' && isspace(*line) == 0) line++; + if (*line == '\0') break; + *line++ = '\0'; + while (isspace(*line)) line++; + } +main(argc, argv); /* call main function */ +_exit(0); +} +break; + *line++ = '\0'; + \ No newline at end of file diff --git a/Microsoft C v203/e.c b/Microsoft C v203/e.c new file mode 100644 index 0000000..e748b7f --- /dev/null +++ b/Microsoft C v203/e.c @@ -0,0 +1,33 @@ +/*#include */ +#include +/*#include */ + +#define DIGITS_TO_FIND 200 /*9009*/ + +int main() { + + int N = DIGITS_TO_FIND; + char buf[ 128 ]; + int x = 0; + int a[ DIGITS_TO_FIND ]; + int n; + + for (n = N - 1; n > 0; --n) { + a[n] = 1; + } + + a[1] = 2, a[0] = 0; + while (N > 9) { + n = N--; + while (--n) { + a[n] = x % n; + + x = 10 * a[n-1] + x/n; + } + printf("%d", x); + } + + printf( "\ndone\n" ); + + return 0; +} diff --git a/Microsoft C v203/m.bat b/Microsoft C v203/m.bat new file mode 100644 index 0000000..e97ddfa --- /dev/null +++ b/Microsoft C v203/m.bat @@ -0,0 +1,11 @@ +rem errorlevel can't be used because all 3 apps use the value-less cp/m exit function + +del %1.exe 1>nul 2>nul + +ntvdm mc1 %1 + +ntvdm mc2 %1 + +ntvdm link %1 + cs + gettm,, %1.map, mcs + + diff --git a/Microsoft C v203/tm.c b/Microsoft C v203/tm.c new file mode 100644 index 0000000..5aec9e0 --- /dev/null +++ b/Microsoft C v203/tm.c @@ -0,0 +1,171 @@ +#include + +#ifdef AZTEC86 +#include +#endif + +#ifdef HISOFTC +#include +#endif + +#define OLDMSC +#ifdef OLDMSC +#define unsigned +#define void int +#endif + +#ifdef WATCOM +#include +#include +#endif + + +#ifdef powerc +#define allocs 50 +#else +#ifdef HISOFTC +#define allocs 66 /* not enough RAM with hisoft to go higher */ +#else +/* most c runtimes work up to 69, but use 66 to have a consistent benchmark */ +#define allocs 66 +#endif +#endif + +int logging = 1; + +char * memset_x( p, v, c ) char * p; int v; int c; +{ + unsigned char * pc = (unsigned char *) p; + unsigned char val = (unsigned char) ( v & 0xff ); + int i; + + if ( 0 == p ) + { + printf( "request to memset a null pointer\n" ); + exit( 1 ); + } + + if ( logging ) +#ifdef CPMTIME + printf( " memset p %u, v %d, val %x, c %d\n", p, v, val, c ); +#else + +#ifdef HISOFTC + printf( " memset p %u, v %d, val %x, c %d\n", p, v, val, c ); +#else + printf( " memset p %p, v %d, val %x, c %d\n", p, v, val, c ); +#endif +#endif + + for ( i = 0; i < c; i++ ) + *pc++ = val; + return p; +} + +void chkmem( p, v, c ) char * p; int v; int c; +{ + unsigned char * pc = (unsigned char *) p; + unsigned char val = (unsigned char) ( v & 0xff ); + int i; + + if ( 0 == p ) + { + printf( "request to chkmem a null pointer\n" ); + exit( 1 ); + } + + for ( i = 0; i < c; i++ ) + { + if ( *pc != val ) + { +#ifdef CPMTIME + printf( "memory isn't as expected! p %u, v %d, c %d, *pc %d\n",p, v, c, *pc ); +#else + printf( "memory isn't as expected! p %p, v %d, c %d, *pc %d\n",p, v, c, *pc ); +#endif + exit( 1 ); + } + pc++; + } +} + +int main( argc, argv ) int argc; char * argv[]; +{ + int i, cb, c_cb, j; + char * pc; + char * ap[ allocs ]; + + logging = ( argc > 1 ); + pc = argv[ 0 ]; /* evade compiler warning */ + + for ( j = 0; j < 10; j++ ) + { + if ( logging ) + printf( "in alloc mode\n" ); + + for ( i = 0; i < allocs; i++ ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 5; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + ap[ i ] = (char *) malloc( cb ); + memset_x( ap[ i ], 0xaa, cb ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + + if ( logging ) + printf( "in free mode, even first\n" ); + + for ( i = 0; i < allocs; i += 2 ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 3; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + chkmem( ap[ i ], 0xaa, cb ); + memset_x( ap[ i ], 0xff, cb ); + free( ap[ i ] ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + + if ( logging ) + printf( "in free mode, now odd\n" ); + + for ( i = 1; i < allocs; i += 2 ) + { + cb = 8 + ( i * 10 ); + c_cb = cb + 7; + if ( logging ) + printf( " i, cb: %d %d\n", i, cb ); + + pc = (char *) calloc( c_cb, 1 ); + chkmem( pc, 0, c_cb ); + memset_x( pc, 0xcc, c_cb ); + + chkmem( ap[ i ], 0xaa, cb ); + memset_x( ap[ i ], 0xff, cb ); + free( ap[ i ] ); + + chkmem( pc, 0xcc, c_cb ); + free( pc ); + } + } + + printf( "success\n" ); + return 0; +} diff --git a/Microsoft C v203/tphi.c b/Microsoft C v203/tphi.c new file mode 100644 index 0000000..fbd4b3f --- /dev/null +++ b/Microsoft C v203/tphi.c @@ -0,0 +1,31 @@ +#include + +#define unsigned + +typedef unsigned long uint32_t; + +int main() +{ + uint32_t limit = 40; + uint32_t prev2 = 1; + uint32_t prev1 = 1; + uint32_t next, i, last_shown = 0; + + printf( "should tend towards 1.61803398874989484820458683436563811772030\n" ); + + for ( i = 1; i <= limit; i++ ) + { + next = prev1 + prev2; + prev2 = prev1; + prev1 = next; + + if ( i == ( last_shown + 5 ) ) + { + last_shown = i; + printf( " at %2lu iterations: %lf\n", i, (double) prev1 / (double) prev2 ); + } + } + + printf( "done\n" ); + return 0; +} diff --git a/Microsoft C v203/tpi.c b/Microsoft C v203/tpi.c new file mode 100644 index 0000000..07055b0 --- /dev/null +++ b/Microsoft C v203/tpi.c @@ -0,0 +1,46 @@ +#include + +#define HIGH_MARK 500 /* 2800 */ + +static long r[HIGH_MARK + 1]; + +int main() { + long i, k, c; + long b, d; + long iter; + + int iterations = 1; + + for ( iter = 0; iter < iterations; iter++ ) { + c = 0; + + for (i = 0; i < HIGH_MARK; i++) { + r[i] = 2000; + } + + for (k = HIGH_MARK; k > 0; k -= 14) { + d = 0; + + i = k; + for (;;) { + d += r[i] * 10000; + b = 2 * i - 1; + + r[i] = d % b; + d /= b; + i--; + if (i == 0) break; + d *= i; + } + if ( iter == ( iterations - 1 ) ) + { + printf( "%.4d", c + d / 10000 ); + fflush( stdout ); + } + c = d % 10000; + } + } + + printf( "\n" ); + return 0; +} diff --git a/Microsoft C v203/ttt.c b/Microsoft C v203/ttt.c new file mode 100644 index 0000000..6d4d2c2 --- /dev/null +++ b/Microsoft C v203/ttt.c @@ -0,0 +1,545 @@ +/* + This version builds with old compilers including: + Aztec C 1.06 for 8080 & Z80 on CP/M. + Microsoft C Compiler V1.04 for 8086 on DOS. (This is Lattice C) + Microsoft C Compiler V2.03 for 8086 on DOS. (Still Lattice C) + Microsoft C Compiler V3.00 for 8086 on DOS. + QuickC 1.0 + Turbo C 2.0 + The syntax is old and reminds me of 7th grade summer vacation. + Much of this code is awkward to satisfy the lowest common denominator of many compilers. + unsigned long isn't supported in many older compilers, so long is used instead. + Early DOS and CP/M require register variabes to be int, not char or other types. + The perf improvement of using register-int instead of stack-char is worth it. +*/ + +#define LINT_ARGS + +#include + +#ifdef DOSTIME +#include +#include +#endif + +#define true 1 +#define false 0 + +/* Function Pointers are the fastest implementation for almost every compiler */ +#define UseFunPointers 1 +#define UseWinner2 2 +#define UseLookForWinner 3 +#define WinMethod UseFunPointers + +#define ABPrune true /* alpha beta pruning */ +#define WinLosePrune true /* stop early on win/lose */ +#define ScoreWin 6 +#define ScoreTie 5 +#define ScoreLose 4 +#define ScoreMax 9 +#define ScoreMin 2 +#define DefaultIterations 100 + +#define PieceX 1 +#define PieceO 2 +#define PieceBlank 0 + +typedef char ttype; /* 8-bit and 16-bit cpus do best with char aside from register in locals */ + +int g_Iterations = DefaultIterations; +ttype g_board[ 9 ]; + +#if WinMethod == UseFunPointers + +ttype pos0func() +{ + /* using "register int" instead of "ttype" for x is faster on 8086 and Z80 */ + register int x = g_board[0]; + + if ( ( x == g_board[1] && x == g_board[2] ) || + ( x == g_board[3] && x == g_board[6] ) || + ( x == g_board[4] && x == g_board[8] ) ) + return x; + return PieceBlank; +} + +ttype pos1func() +{ + register int x = g_board[1]; + + if ( ( x == g_board[0] && x == g_board[2] ) || + ( x == g_board[4] && x == g_board[7] ) ) + return x; + return PieceBlank; +} + +ttype pos2func() +{ + register int x = g_board[2]; + + if ( ( x == g_board[0] && x == g_board[1] ) || + ( x == g_board[5] && x == g_board[8] ) || + ( x == g_board[4] && x == g_board[6] ) ) + return x; + return PieceBlank; +} + +ttype pos3func() +{ + register int x = g_board[3]; + + if ( ( x == g_board[4] && x == g_board[5] ) || + ( x == g_board[0] && x == g_board[6] ) ) + return x; + return PieceBlank; +} + +ttype pos4func() +{ + register int x = g_board[4]; + + if ( ( x == g_board[0] && x == g_board[8] ) || + ( x == g_board[2] && x == g_board[6] ) || + ( x == g_board[1] && x == g_board[7] ) || + ( x == g_board[3] && x == g_board[5] ) ) + return x; + return PieceBlank; +} + +ttype pos5func() +{ + register int x = g_board[5]; + + if ( ( x == g_board[3] && x == g_board[4] ) || + ( x == g_board[2] && x == g_board[8] ) ) + return x; + return PieceBlank; +} + +ttype pos6func() +{ + register int x = g_board[6]; + + if ( ( x == g_board[7] && x == g_board[8] ) || + ( x == g_board[0] && x == g_board[3] ) || + ( x == g_board[4] && x == g_board[2] ) ) + return x; + return PieceBlank; +} + +ttype pos7func() +{ + register int x = g_board[7]; + + if ( ( x == g_board[6] && x == g_board[8] ) || + ( x == g_board[1] && x == g_board[4] ) ) + return x; + return PieceBlank; +} + +ttype pos8func() +{ + register int x = g_board[8]; + + if ( ( x == g_board[6] && x == g_board[7] ) || + ( x == g_board[2] && x == g_board[5] ) || + ( x == g_board[0] && x == g_board[4] ) ) + return x; + return PieceBlank; +} + +typedef ttype pfunc_t(); + +pfunc_t * winner_functions[9] = +{ + pos0func, + pos1func, + pos2func, + pos3func, + pos4func, + pos5func, + pos6func, + pos7func, + pos8func, +}; + +#endif + +#if WinMethod == UseWinner2 + +ttype winner2( move ) ttype move; +{ + register int x; /* faster than ttype x on the stack */ + + switch( move ) /* msc v3 from 1985 generates a jump table! */ + { + case 0: + { + x = g_board[ 0 ]; + if ( ( ( x == g_board[1] ) && ( x == g_board[2] ) ) || + ( ( x == g_board[3] ) && ( x == g_board[6] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[8] ) ) ) + return x; + break; + } + case 1: + { + x = g_board[ 1 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[2] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[7] ) ) ) + return x; + break; + } + case 2: + { + x = g_board[ 2 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[1] ) ) || + ( ( x == g_board[5] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[6] ) ) ) + return x; + break; + } + case 3: + { + x = g_board[ 3 ]; + if ( ( ( x == g_board[4] ) && ( x == g_board[5] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[6] ) ) ) + return x; + break; + } + case 4: + { + x = g_board[ 4 ]; + if ( ( ( x == g_board[0] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[6] ) ) || + ( ( x == g_board[1] ) && ( x == g_board[7] ) ) || + ( ( x == g_board[3] ) && ( x == g_board[5] ) ) ) + return x; + break; + } + case 5: + { + x = g_board[ 5 ]; + if ( ( ( x == g_board[3] ) && ( x == g_board[4] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[8] ) ) ) + return x; + break; + } + case 6: + { + x = g_board[ 6 ]; + if ( ( ( x == g_board[7] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[3] ) ) || + ( ( x == g_board[4] ) && ( x == g_board[2] ) ) ) + return x; + break; + } + case 7: + { + x = g_board[ 7 ]; + if ( ( ( x == g_board[6] ) && ( x == g_board[8] ) ) || + ( ( x == g_board[1] ) && ( x == g_board[4] ) ) ) + return x; + break; + } + case 8: + { + x = g_board[ 8 ]; + if ( ( ( x == g_board[6] ) && ( x == g_board[7] ) ) || + ( ( x == g_board[2] ) && ( x == g_board[5] ) ) || + ( ( x == g_board[0] ) && ( x == g_board[4] ) ) ) + return x; + break; + } + } + + return PieceBlank; +} /*winner2*/ + +#endif + +#if WinMethod == UseLookForWinner + +ttype LookForWinner() +{ + register int p = g_board[0]; /* faster as register int than ttype on 8086 and Z80 */ + if ( PieceBlank != p ) + { + if ( p == g_board[1] && p == g_board[2] ) + return p; + + if ( p == g_board[3] && p == g_board[6] ) + return p; + } + + p = g_board[3]; + if ( PieceBlank != p && p == g_board[4] && p == g_board[5] ) + return p; + + p = g_board[6]; + if ( PieceBlank != p && p == g_board[7] && p == g_board[8] ) + return p; + + p = g_board[1]; + if ( PieceBlank != p && p == g_board[4] && p == g_board[7] ) + return p; + + p = g_board[2]; + if ( PieceBlank != p && p == g_board[5] && p == g_board[8] ) + return p; + + p = g_board[4]; + if ( PieceBlank != p ) + { + if ( ( p == g_board[0] ) && ( p == g_board[8] ) ) + return p; + + if ( ( p == g_board[2] ) && ( p == g_board[6] ) ) + return p; + } + + return PieceBlank; +} /*LookForWinner*/ + +#endif + +int g_IMoves = 0; + +ttype MinMax( alpha, beta, depth, move ) ttype alpha; ttype beta; ttype depth; ttype move; +{ + ttype pieceMove, score; /* better perf with char than int. out of registers so use stack */ + register int p, value; /* better perf with these as an int on Z80, 8080, and 8086 */ + + g_IMoves++; + + if ( depth >= 4 ) + { +#if WinMethod == UseFunPointers + p = ( * winner_functions[ move ] )(); +#endif +#if WinMethod == UseWinner2 + p = winner2( move ); +#endif +#if WinMethod == UseLookForWinner + p = LookForWinner(); +#endif + + if ( PieceBlank != p ) + { + if ( PieceX == p ) + return ScoreWin; + + return ScoreLose; + } + + if ( 8 == depth ) + return ScoreTie; + } + + if ( depth & 1 ) + { + value = ScoreMin; + pieceMove = PieceX; + } + else + { + value = ScoreMax; + pieceMove = PieceO; + } + + for ( p = 0; p < 9; p++ ) + { + if ( PieceBlank == g_board[ p ] ) + { + g_board[p] = pieceMove; + score = MinMax( alpha, beta, depth + 1, p ); + g_board[p] = PieceBlank; + + if ( depth & 1 ) + { +#if WinLosePrune /* #if statements must be in first column for MS C 1.0 */ + if ( ScoreWin == score ) + return ScoreWin; +#endif + + if ( score > value ) + { + value = score; + +#if ABPrune + if ( value >= beta ) + return value; + if ( value > alpha ) + alpha = value; +#endif + } + } + else + { +#if WinLosePrune + if ( ScoreLose == score ) + return ScoreLose; +#endif + + if ( score < value ) + { + value = score; + +#if ABPrune + if ( value <= alpha ) + return value; + if ( value < beta ) + beta = value; +#endif + } + } + } + } + + return value; +} /*MinMax*/ + +long g_Moves = 0; + +int FindSolution( position ) ttype position; +{ + register int i; + + for ( i = 0; i < 9; i++ ) + g_board[ i ] = PieceBlank; + + g_board[ position ] = PieceX; + + for ( i = 0; i < g_Iterations; i++ ) + { + g_IMoves = 0; + MinMax( ScoreMin, ScoreMax, 0, position ); + g_Moves += g_IMoves; /* do the 4-byte long addition once per loop to save work */ + } + + return 0; +} /*FindSolution*/ + +#ifdef CPMTIME + +struct CPMTimeValue +{ + int h, m, s, l; +}; + +void print_time_now() +{ + /* This CP/M BDOS call of 105 is only implemented in NTVCM -- it's not a standard CP/M 2.2 call */ + + struct CPMTimeValue t; + t.h = t.m = t.s = t.l = 0; + + bdos( 105, &t ); + printf( "current time: %02d:%02d:%02d.%02d\n", t.h, t.m, t.s, t.l ); +} /*print_time_now*/ + +long get_ms() +{ + /* This CP/M BDOS call of 105 is only implemented in NTVCM -- it's not a standard CP/M 2.2 call */ + + long h, m, s, l; + struct CPMTimeValue t; + t.h = t.m = t.s = t.l = 0; + + bdos( 105, &t ); + h = t.h; + m = t.m; + s = t.s; + l = t.l; + + return h * 3600000 + m * 60000 + s * 1000 + l * 10; +} /*get_ms*/ + +#else /* no elif with old compilers */ + +#ifdef DOSTIME + +void print_time_now() +{ + /* Make a DOS interrupt call to get the time */ + + union REGS wrIn, wrOut; + + wrIn.h.ah = 0x2c; + intdos( &wrIn, &wrOut ); + printf( "current time: %02d:%02d:%02d.%02d\n", wrOut.h.ch, wrOut.h.cl, wrOut.h.dh, wrOut.h.dl ); + fflush( stdout ); +} /*print_time_now*/ + +long get_ms() +{ + /* this function takes about 3 milliseconds on the original IBM PC */ + + long h, m, s, l; + union REGS wrIn, wrOut; + + wrIn.h.ah = 0x2c; + intdos( &wrIn, &wrOut ); + + h = wrOut.h.ch; + m = wrOut.h.cl; + s = wrOut.h.dh; + l = wrOut.h.dl; + + return h * 3600000 + m * 60000 + s * 1000 + l * 10; +} /*get_ms*/ + +#else + +/* must do this on actual CP/M machines */ + +int print_time_now() { return 0; } +long get_ms() { return 0; } + +#endif +#endif + +/* see gettm.asm in masm folder for function to get current time */ + +extern long gettm(); + +long getms() +{ + long r, h, m, s, l; + + r = gettm(); + + h = ( r >> 24 ) & 0xff; + m = ( r >> 16 ) & 0xff; + s = ( r >> 8 ) & 0xff; + l = ( r >> 0 ) & 0xff; + + return h * 3600000 + m * 60000 + s * 1000 + l * 10; +} /*getms*/ + +int main( argc, argv ) int argc; char * argv[]; +{ + long start_time, end_time; + + if ( 2 == argc ) + sscanf( argv[ 1 ], "%d", &g_Iterations ); /* no atoi in MS C 1.0 */ + + start_time = getms(); + + FindSolution( 0 ); + FindSolution( 1 ); + FindSolution( 4 ); + + end_time = getms(); + + printf( "runtime in ms: %ld\n", end_time - start_time ); + printf( "move count: %ld\n", g_Moves ); /* 6493 * g_Iterations */ + printf( "iteration count: %d\n", g_Iterations ); + printf( "method: %s\n", + ( WinMethod == UseFunPointers ) ? "function pointers" : + ( WinMethod == UseWinner2 ) ? "winner2" : + ( WinMethod == UseLookForWinner ) ? "look for winner" : + "invalid method" ); + return 0; +} /*main*/ +