00000000: 84 87 9F 2F 2A 20 C5 58 54 45 4E 44 45 44 20 53 |.../* .XTENDED S|
00000010: 54 44 49 4F 2E 43 20 20 31 39 38 37 2D 30 35 2D |TDIO.C 1987-05-|
00000020: 31 35 20 20 2A 2F 0D 9E 0D 9E 0D 9E 54 59 50 45 |15 */......TYPE|
00000030: 44 45 46 20 43 48 41 52 20 42 59 54 45 3B 0D 9E |DEF CHAR BYTE;..|
00000040: 54 59 50 45 44 45 46 20 49 4E 54 20 20 46 49 4C |TYPEDEF INT FIL|
00000050: 45 3B 0D 9E 54 59 50 45 44 45 46 20 49 4E 54 20 |E;..TYPEDEF INT |
00000060: 20 42 4F 4F 4C 45 41 4E 3B 0D 9E 0D 9E 0D 9C 45 | BOOLEAN;......E|
00000070: 58 54 45 52 4E 20 56 4F 49 44 20 45 52 52 4F 4E |XTERN VOID ERRON|
00000080: 28 29 2C 45 52 52 4F 46 46 28 29 2C 4E 4D 49 4F |(),ERROFF(),NMIO|
00000090: 4E 28 29 2C 4E 4D 49 4F 46 46 3B 0D 9C 45 58 54 |N(),NMIOFF;..EXT|
000000A0: 45 52 4E 20 56 4F 49 44 20 45 52 52 4F 52 28 29 |ERN VOID ERROR()|
000000B0: 2C 45 58 49 54 28 29 2C 4D 4F 56 45 28 29 2C 43 |,EXIT(),MOVE(),C|
000000C0: 55 52 53 4F 52 28 29 3B 0D 9C 45 58 54 45 52 4E |URSOR();..EXTERN|
000000D0: 20 56 4F 49 44 20 53 54 52 43 50 59 28 29 2C 53 | VOID STRCPY(),S|
000000E0: 54 52 43 41 54 28 29 2C 46 52 45 45 28 29 3B 0D |TRCAT(),FREE();.|
000000F0: 9C 45 58 54 45 52 4E 20 49 4E 54 20 20 51 45 52 |.EXTERN INT QER|
00000100: 52 4F 52 28 29 2C 50 55 54 43 28 29 2C 50 55 54 |ROR(),PUTC(),PUT|
00000110: 53 28 29 2C 47 45 54 53 28 29 2C 50 55 54 46 28 |S(),GETS(),PUTF(|
00000120: 29 3B 0D 9C 45 58 54 45 52 4E 20 49 4E 54 20 20 |);..EXTERN INT |
00000130: 47 45 54 46 28 29 2C 53 54 52 4C 45 4E 28 29 2C |GETF(),STRLEN(),|
00000140: 53 54 52 43 4D 50 28 29 3B 0D 9C 45 58 54 45 52 |STRCMP();..EXTER|
00000150: 4E 20 43 48 41 52 20 47 45 54 43 28 29 2C 2A 41 |N CHAR GETC(),*A|
00000160: 4C 4C 4F 43 28 29 3B 0D 9C 45 58 54 45 52 4E 20 |LLOC();..EXTERN |
00000170: 46 49 4C 45 20 4F 50 45 4E 28 29 2C 43 4C 4F 53 |FILE OPEN(),CLOS|
00000180: 45 28 29 3B 0D 9C 0D 9C 45 58 54 45 52 4E 20 56 |E();....EXTERN V|
00000190: 4F 49 44 20 50 52 49 4E 54 46 28 29 2C 53 50 52 |OID PRINTF(),SPR|
000001A0: 49 4E 54 46 28 29 2C 46 50 52 49 4E 54 46 28 29 |INTF(),FPRINTF()|
000001B0: 3B 0D 9C 45 58 54 45 52 4E 20 49 4E 54 20 20 53 |;..EXTERN INT S|
000001C0: 43 41 4E 46 28 29 2C 53 53 43 41 4E 46 28 29 2C |CANF(),SSCANF(),|
000001D0: 46 53 43 41 4E 46 28 29 3B 0D 9C 0D 1F 23 44 45 |FSCANF();....#DE|
000001E0: 46 49 4E 45 20 D3 D4 C4 C9 CF 20 20 20 20 20 30 |FINE ..... 0|
000001F0: 0D 1F 23 44 45 46 49 4E 45 20 CE D5 CC CC 20 20 |..#DEFINE .... |
00000200: 20 20 20 20 27 5C 30 27 0D 1F 23 44 45 46 49 4E | '\0'..#DEFIN|
00000210: 45 20 C3 D2 20 20 20 20 20 20 20 20 27 5C 4E 27 |E .. '\N'|
00000220: 0D 1F 23 44 45 46 49 4E 45 20 C3 D2 D3 D5 D0 20 |..#DEFINE ..... |
00000230: 20 20 20 20 27 5C 32 32 31 27 0D 1F 23 44 45 46 | '\221'..#DEF|
00000240: 49 4E 45 20 C3 D2 D3 C4 CF D7 CE 20 20 20 27 5C |INE ....... '\|
00000250: 32 31 27 0D 1F 23 44 45 46 49 4E 45 20 C3 D2 D3 |21'..#DEFINE ...|
00000260: D2 C9 C7 C8 D4 20 20 27 5C 33 35 27 0D 1F 23 44 |..... '\35'..#D|
00000270: 45 46 49 4E 45 20 C3 D2 D3 CC C5 C6 D4 20 20 20 |EFINE ....... |
00000280: 27 5C 32 33 35 27 0D 1F 23 44 45 46 49 4E 45 20 |'\235'..#DEFINE |
00000290: C8 CF CD C5 20 20 20 20 20 20 27 5C 32 33 27 0D |.... '\23'.|
000002A0: 1F 23 44 45 46 49 4E 45 20 C3 CC D2 20 20 20 20 |.#DEFINE ... |
000002B0: 20 20 20 27 5C 32 32 33 27 0D 1F 23 44 45 46 49 | '\223'..#DEFI|
000002C0: 4E 45 20 D2 C5 D6 C5 D2 D3 CF CE 20 20 27 5C 32 |NE ........ '\2|
000002D0: 32 27 0D 1F 23 44 45 46 49 4E 45 20 D2 C5 D6 C5 |2'..#DEFINE ....|
000002E0: D2 D3 CF C6 C6 20 27 5C 32 32 32 27 0D 1F 23 44 |..... '\222'..#D|
000002F0: 45 46 49 4E 45 20 CE C9 CC 20 20 20 20 20 20 20 |EFINE ... |
00000300: 30 0D 1F 23 44 45 46 49 4E 45 20 C5 CD D0 D4 D9 |0..#DEFINE .....|
00000310: 20 20 20 20 20 22 22 0D 1F 23 44 45 46 49 4E 45 | ""..#DEFINE|
00000320: 20 CD C1 D8 C9 CE D4 20 20 20 20 33 32 37 36 37 | ...... 32767|
00000330: 0D 1F 23 44 45 46 49 4E 45 20 CD C1 D8 CC CF CE |..#DEFINE ......|
00000340: C7 20 20 20 32 31 34 37 34 38 33 36 34 37 0D 1F |. 2147483647..|
00000350: 0D 1F 23 44 45 46 49 4E 45 20 C6 C1 CC D3 C5 20 |..#DEFINE ..... |
00000360: 20 20 20 20 30 0D 1F 23 44 45 46 49 4E 45 20 D4 | 0..#DEFINE .|
00000370: D2 D5 C5 20 20 20 20 20 20 31 0D 1F 0D 1F 23 44 |... 1....#D|
00000380: 45 46 49 4E 45 20 C5 CF C9 20 20 20 20 20 20 20 |EFINE ... |
00000390: 28 2A 28 43 48 41 52 20 2A 29 30 58 39 30 20 26 |(*(CHAR *)0X90 &|
000003A0: 20 30 58 34 30 29 0D 1F 0D 1F 0D 1F 23 44 45 46 | 0X40)......#DEF|
000003B0: 49 4E 45 20 C3 CD CF D6 C5 28 D8 31 2C D8 32 2C |INE .....(.1,.2,|
000003C0: D8 33 29 20 20 4D 4F 56 45 28 D8 31 2C D8 32 2C |.3) MOVE(.1,.2,|
000003D0: D8 33 2C 30 58 33 35 29 0D 1F 0D 1F 23 44 45 46 |.3,0X35)....#DEF|
000003E0: 49 4E 45 20 50 55 54 43 48 41 52 28 D8 30 29 20 |INE PUTCHAR(.0) |
000003F0: 20 20 20 20 20 50 55 54 43 28 D8 30 2C D3 D4 C4 | PUTC(.0,...|
00000400: C9 CF 29 0D 1F 23 44 45 46 49 4E 45 20 47 45 54 |..)..#DEFINE GET|
00000410: 43 48 41 52 28 29 20 20 20 20 20 20 20 20 49 4E |CHAR() IN|
00000420: 4B 45 59 28 D3 D4 C4 C9 CF 29 0D 1F 23 44 45 46 |KEY(.....)..#DEF|
00000430: 49 4E 45 20 50 4F 4B 45 28 41 44 44 52 2C 56 41 |INE POKE(ADDR,VA|
00000440: 4C 55 45 29 20 2A 41 44 44 52 3D 56 41 4C 55 45 |LUE) *ADDR=VALUE|
00000450: 0D 1F 23 44 45 46 49 4E 45 20 50 45 45 4B 28 41 |..#DEFINE PEEK(A|
00000460: 44 44 52 29 20 20 20 20 20 20 20 2A 41 44 44 52 |DDR) *ADDR|
00000470: 0D 1F 0D 1F 23 44 45 46 49 4E 45 20 43 4C 52 53 |....#DEFINE CLRS|
00000480: 43 52 20 20 20 20 20 20 20 20 20 20 20 50 55 54 |CR PUT|
00000490: 43 48 41 52 28 C3 CC D2 29 0D 1F 0D 1F 0D 97 0D |CHAR(...).......|
000004A0: 97 43 48 41 52 20 28 2A 53 43 52 45 45 4E 29 5B |.CHAR (*SCREEN)[|
000004B0: 34 30 5D 20 3D 20 30 58 45 30 30 30 3B 0D 97 43 |40] = 0XE000;..C|
000004C0: 48 41 52 20 28 2A 43 4F 4C 4F 52 20 29 5B 34 30 |HAR (*COLOR )[40|
000004D0: 5D 20 3D 20 30 58 44 38 30 30 3B 0D 97 43 48 41 |] = 0XD800;..CHA|
000004E0: 52 20 28 2A 43 48 41 52 52 41 4D 31 29 5B 38 5D |R (*CHARRAM1)[8]|
000004F0: 3D 20 30 58 44 30 30 30 3B 0D 97 43 48 41 52 20 |= 0XD000;..CHAR |
00000500: 28 2A 43 48 41 52 52 41 4D 32 29 5B 38 5D 3D 20 |(*CHARRAM2)[8]= |
00000510: 30 58 44 38 30 30 3B 0D 1C 0D 1C 0D 96 43 48 41 |0XD800;......CHA|
00000520: 52 20 49 4E 4B 45 59 28 46 44 29 0D 1C 0D 1C 46 |R INKEY(FD)....F|
00000530: 49 4C 45 20 46 44 3B 0D 1C 0D 1C DB 0D 1C 0D 1C |ILE FD;.........|
00000540: 43 48 41 52 20 43 3B 0D 1C 0D 1C 20 20 20 20 20 |CHAR C;.... |
00000550: 57 48 49 4C 45 28 28 43 3D 47 45 54 43 28 46 44 |WHILE((C=GETC(FD|
00000560: 29 29 3D 3D 30 29 3B 0D 1C 0D 1C 20 20 20 20 20 |))==0);.... |
00000570: 52 45 54 55 52 4E 20 43 3B 0D 1C 0D 1C DD 0D 1C |RETURN C;.......|
00000580: 0D 96 56 4F 49 44 20 43 45 4E 54 52 45 28 53 54 |..VOID CENTRE(ST|
00000590: 52 49 4E 47 29 0D 1C 0D 1C 43 48 41 52 20 2A 53 |RING)....CHAR *S|
000005A0: 54 52 49 4E 47 3B 0D 1C 0D 1C DB 0D 1C 0D 1C 49 |TRING;.........I|
000005B0: 4E 54 20 20 42 59 54 45 53 3B 0D 1C 49 4E 54 20 |NT BYTES;..INT |
000005C0: 20 2A 4C 49 4E 45 20 3D 20 32 31 34 3B 0D 1C 0D | *LINE = 214;...|
000005D0: 1C 20 20 20 20 20 42 59 54 45 53 20 3D 20 28 34 |. BYTES = (4|
000005E0: 30 2D 53 54 52 4C 45 4E 28 53 54 52 49 4E 47 29 |0-STRLEN(STRING)|
000005F0: 29 2F 32 3B 0D 1C 0D 1C 20 20 20 20 20 43 55 52 |)/2;.... CUR|
00000600: 53 4F 52 28 2A 4C 49 4E 45 2C 42 59 54 45 53 29 |SOR(*LINE,BYTES)|
00000610: 3B 0D 1C 0D 1C 20 20 20 20 20 50 55 54 53 28 53 |;.... PUTS(S|
00000620: 54 52 49 4E 47 2C D3 D4 C4 C9 CF 29 3B 0D 1C 0D |TRING,.....);...|
00000630: 1C DD 0D 1C 0D 00 |...... |
.../* EXTENDED STDIO.C 1987-05-15 */..
....TYPEDEF CHAR BYTE;..TYPEDEF INT FIL
E;..TYPEDEF INT BOOLEAN;......EXTERN VO
ID ERRON(),ERROFF(),NMION(),NMIOFF;..EXT
ERN VOID ERROR(),EXIT(),MOVE(),CURSOR();
..EXTERN VOID STRCPY(),STRCAT(),FREE();.
.EXTERN INT QERROR(),PUTC(),PUTS(),GETS
(),PUTF();..EXTERN INT GETF(),STRLEN(),
STRCMP();..EXTERN CHAR GETC(),*ALLOC();.
.EXTERN FILE OPEN(),CLOSE();....EXTERN V
OID PRINTF(),SPRINTF(),FPRINTF();..EXTER
N INT SCANF(),SSCANF(),FSCANF();....#DE
FINE STDIO 0..#DEFINE NULL '\0'
..#DEFINE CR '\N'..#DEFINE CRSUP
'\221'..#DEFINE CRSDOWN '\21'..#DE
FINE CRSRIGHT '\35'..#DEFINE CRSLEFT
'\235'..#DEFINE HOME '\23'..#DEFINE
CLR '\223'..#DEFINE REVERSON '\2
2'..#DEFINE REVERSOFF '\222'..#DEFINE NI
L 0..#DEFINE EMPTY ""..#DEFINE
MAXINT 32767..#DEFINE MAXLONG 2147
483647....#DEFINE FALSE 0..#DEFINE T
RUE 1....#DEFINE EOI (*(CHAR
*)0X90 & 0X40)......#DEFINE CMOVE(X1,X2,
X3) MOVE(X1,X2,X3,0X35)....#DEFINE PUTC
HAR(X0) PUTC(X0,STDIO)..#DEFINE GET
CHAR() INKEY(STDIO)..#DEFINE POKE
(ADDR,VALUE) *ADDR=VALUE..#DEFINE PEEK(A
DDR) *ADDR....#DEFINE CLRSCR
PUTCHAR(CLR)........CHAR (*SCREEN)[
40] = 0XE000;..CHAR (*COLOR )[40] = 0XD8
00;..CHAR (*CHARRAM1)[8]= 0XD000;..CHAR
(*CHARRAM2)[8]= 0XD800;......CHAR INKEY(
FD)....FILE FD;.........CHAR C;....
WHILE((C=GETC(FD))==0);.... RETURN C
;.........VOID CENTRE(STRING)....CHAR *S
TRING;.........INT BYTES;..INT *LINE =
214;.... BYTES = (40-STRLEN(STRING)
)/2;.... CURSOR(*LINE,BYTES);....
PUTS(STRING,STDIO);.........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL