Annotation of researchv10no/games/trek/input.c, revision 1.1

1.1     ! root        1: #include "/usr/lib/a68defs"
        !             2: 
        !             3: 
        !             4: int    mkfault;
        !             5: int    stdin;
        !             6: char readbuf[255]; char *readptr;
        !             7: char eof, lastchar;
        !             8: 
        !             9: readchar()
        !            10: {
        !            11:        REG CHAR c;
        !            12: 
        !            13:        IF readptr==0
        !            14:        THEN    newline();
        !            15:        FI
        !            16:        IF eof ORF mkfault
        !            17:        THEN    c=EOF;
        !            18:        ELIF c = *readptr THEN readptr++; FI
        !            19:        return(lastchar=c);
        !            20: }
        !            21: 
        !            22: newline()
        !            23: {
        !            24:        readptr=readbuf;
        !            25:        WHILE eof==0 ANDF mkfault==0
        !            26:             ANDF ( eof = read(stdin,readptr,1)==0,
        !            27:                  *readptr++!=NL
        !            28:                )
        !            29:        DONE
        !            30:        *readptr++=0; readptr=readbuf;
        !            31: }
        !            32: 
        !            33: error(s1,s2)
        !            34: char *s1, *s2;
        !            35: {
        !            36:        prints(s1); prints(s2);
        !            37:        flushin();
        !            38: }
        !            39: 
        !            40: flushin()
        !            41: {
        !            42:        readptr=0;
        !            43: }
        !            44: 
        !            45: peekchar()
        !            46: {
        !            47:        REG CHAR c;
        !            48:        c=nextchar();
        !            49:        backspace();
        !            50:        return(c);
        !            51: }
        !            52: 
        !            53: nextchar()
        !            54: {
        !            55:        REG CHAR c;
        !            56: 
        !            57:        WHILE (c=readchar())==SP ORF c==TB DONE
        !            58:        return(c);
        !            59: }
        !            60: 
        !            61: readint(i)
        !            62: int *i;
        !            63: {
        !            64:        REG INT r;
        !            65:        REG CHAR c;
        !            66:        REG INT minus;
        !            67:        INT rc;
        !            68: 
        !            69:        IF (c=nextchar())=='-'
        !            70:        THEN    minus=TRUE; c=readchar();
        !            71:        ELSE    minus=FALSE;
        !            72:        FI
        !            73:        IF digit(c)
        !            74:        THEN    r = 0;
        !            75:                REP r =* 10; r =+ c-'0'; PER digit(c=readchar()) DONE
        !            76:                IF minus THEN r=(-r); FI
        !            77:                *i = r; backspace();
        !            78:                rc = 1;
        !            79:        ELSE    rc = 0;
        !            80:        FI
        !            81:        IF eof ORF mkfault
        !            82:        THEN    return(-1);
        !            83:        ELSE    return(rc);
        !            84:        FI
        !            85: }
        !            86: 
        !            87: readreal(a)
        !            88: float *a;
        !            89: {
        !            90:        REAL r;
        !            91:        INT rc;
        !            92:        REG INT fr;
        !            93:        REG CHAR c;
        !            94:        REG INT minus;
        !            95: 
        !            96:        IF (c=nextchar())=='-'
        !            97:        THEN    minus=TRUE; c=readchar();
        !            98:        ELSE    minus=FALSE;
        !            99:        FI
        !           100:        r = 0; rc = 0;
        !           101:        IF digit(c)
        !           102:        THEN    rc = 1;
        !           103:                REP r =* 10; r =+ c-'0'; PER digit(c=readchar()) DONE
        !           104:        FI
        !           105:        fr = 0;
        !           106:        IF c=='.'
        !           107:        THEN    WHILE digit(c=readchar())
        !           108:                DO r =* 10; r =+ c-'0'; fr++; OD
        !           109:                IF fr THEN rc = 1; FI
        !           110:        FI
        !           111:        WHILE fr-- DO r =/ 10; OD
        !           112:        IF minus THEN r = (-r); FI
        !           113:        IF rc THEN backspace(); FI
        !           114:        *a = r;
        !           115:        IF eof ORF mkfault
        !           116:        THEN    return(-1);
        !           117:        ELSE    return(rc);
        !           118:        FI
        !           119: }
        !           120: 
        !           121: reads(term, buffer)
        !           122: char *term; char buffer[];
        !           123: {
        !           124:        register char   c;
        !           125:        REG CHAR        *ptr;
        !           126: 
        !           127:        ptr=buffer;
        !           128:        WHILE !any(c=readchar(),term) ANDF c
        !           129:        DO *ptr++ = c; OD
        !           130:        IF mkfault ORF eof
        !           131:        THEN    return(-1);
        !           132:        ELIF ptr>buffer
        !           133:        THEN    *ptr++=0; backspace();
        !           134:                return(1);
        !           135:        ELSE    return(0);
        !           136:        FI
        !           137: }
        !           138: 
        !           139: backspace()
        !           140: {
        !           141:        IF readptr>readbuf
        !           142:        THEN    readptr--;
        !           143:        FI
        !           144: }
        !           145: 
        !           146: any(c,s)
        !           147: char c;
        !           148: char *s;
        !           149: {
        !           150:        register char a, b;
        !           151:        register char *p;
        !           152: 
        !           153:        p=s; a=c;
        !           154:        WHILE b = *p++
        !           155:        DO IF b==c THEN return(1); FI OD
        !           156:        return(0);
        !           157: }
        !           158: 
        !           159: digit(c)
        !           160: char c;
        !           161: {
        !           162:        return(c>='0' ANDF c<='9');
        !           163: }
        !           164: 
        !           165: lineended()
        !           166: {
        !           167:        return(readptr==0 ORF *readptr==0 ORF peekchar()==NL);
        !           168: }
        !           169: 
        !           170: sign(a)
        !           171: {
        !           172:        return(a<0?-1:(a!=0));
        !           173: }
        !           174: 
        !           175: cf(as1, as2)
        !           176: char *as1, *as2;
        !           177: {
        !           178:        REG char *s1, *s2;
        !           179: 
        !           180:        s1 = as1;
        !           181:        s2 = as2;
        !           182:        WHILE *s1++ == *s2
        !           183:        DO      IF *s2++==0
        !           184:                THEN    return(0);
        !           185:                FI
        !           186:        OD
        !           187:        return(*--s1 - *s2);
        !           188: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.