|
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 - 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»