|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2048 (0x800)
Types: TextFile
Names: »CC0T.C«
└─⟦23f778bf6⟧ Bits:30005378 BDS C v1.46 & Pascal/MT+ v5.5 (Callan format)
└─⟦this⟧ »CC0T.C«
└─⟦4ada80662⟧ Bits:30005446 Pascal/MT+ v5.5 & XREF & BDS C v1.46
└─⟦this⟧ »CC0T.C«
└─⟦b35f94715⟧ Bits:30003295 BDS C version 1.50 arbejdsdiskette til RC703 Piccolo
└─⟦b35f94715⟧ Bits:30005324 BDS C version 1.50 arbejdsdiskette til RC703 Piccolo
└─⟦this⟧ »CC0T.C«
/*
CC0T.C -- TRS-80 C PREPROCESSOR
WRITTEN BY LEOR ZOLMAN
THIS PROGRAM TAKES, AS INPUT, A C SOURCE FILE WRITTEN
USING THE SPECIAL "POUND SIGN" ENCODING FOR CHARACTERS
WHICH ARE UNPRINTABLE (AND UNENTERABLE) ON THE EARLY
MODEL TRS-80 COMPUTERS. WHEREVER CC0T FINDS A SEQUENCE
#X
IN THE INPUT FILE, WHERE "X" IS ONE OF THE SPECIAL
CHARACTERS AS OUTLINED IN THE SOURCE FOR CONVERT.C,
THEN THE TWO-CHARACTER SEQUENCE IS CONVERTED TO A
SINGLE CHARACTER AS REQUIRED BY THE BDS C COMPILER.
THE RESULTANT FILE MAY THEN BE COMPILED WITH CC1, CC2,
ETC.
*/
#INCLUDE "BDSCIO.H"
#DEFINE POUND 0X23
#DEFINE LEFTBRACK 0X5B
#DEFINE BACKSLASH 0X5C
#DEFINE RIGHTBRACK 0X5D
#DEFINE CIRCUM 0X7E
#DEFINE VERTIBAR 0X7C
#DEFINE UNDERSCORE 0X5F
#DEFINE UPARROW 0X5E
CHAR IBUFÆBUFSIZÅ, OBUFÆBUFSIZÅ;
MAIN(ARGC,ARGV)
INT ARGC;
CHAR *ARGVÆÅ;
BEGIN
INT FD1, FD2;
CHAR C;
IF (ARGC != 3) BEGIN
PRINTF("USAGE: CC0T OLD NEW <CR>ØN");
EXIT();
END
FD1 = FOPEN(ARGVÆ1Å,IBUF);
IF (FD1 == ERROR) BEGIN
PRINTF("CANNOT OPEN INPUT FILE.ØN");
EXIT();
END
FD2 = FCREAT(ARGVÆ2Å,OBUF);
IF (FD2 == ERROR) BEGIN
PRINTF("CANNOT OPEN OUTPUT FILE.ØN");
EXIT();
END
WHILE ((( C = GETC(IBUF)) != CPMEOF) && C != 255)
BEGIN
IF (C != POUND) PUTC2(C);
ELSE SWITCH(C = GETC(IBUF))
BEGIN
CASE 'B': PUTC2(BACKSLASH);
BREAK;
CASE 'L': PUTC2(LEFTBRACK);
BREAK;
CASE 'R': PUTC2(RIGHTBRACK);
BREAK;
CASE 'C': PUTC2(CIRCUM);
BREAK;
CASE 'V': PUTC2(VERTIBAR);
BREAK;
CASE 'U': PUTC2(UNDERSCORE);
BREAK;
CASE 'H': PUTC2(UPARROW);
BREAK;
DEFAULT: PUTC2(POUND);
PUTC2(C);
END
END
IF (C == 255) C = CPMEOF;
PUTC2(C);
FFLUSH(OBUF);
FCLOSE(OBUF);
FCLOSE(IBUF);
END
PUTC2(C)
CHAR C;
BEGIN
IF (PUTC(C,OBUF) < 0) BEGIN
PRINTF("OUTPUT WRITE ERROR (DISK FULL?)ØN");
EXIT();
END
END
«eof»