Annotation of 43BSD/contrib/cpm/src/physio.c, revision 1.1.1.1

1.1       root        1: /*     physio.c        1.6     83/07/18        */
                      2: 
                      3: #include <stdio.h>
                      4: #include "cpmio.h"
                      5: #include <sys/file.h>
                      6: 
                      7: /*
                      8:  * Write physical sector to floppy disk file
                      9:  */
                     10: 
                     11: putpsect(tr, sect, buf)
                     12:        char buf[];
                     13: {
                     14: 
                     15:        long newpos;
                     16: 
                     17:        if (sect > sectrk || sect < 1) {
                     18:                fprintf(stderr, "putpsect: sector number out of range: %d\n",
                     19:                                                                        sect);
                     20:                return (EOF);
                     21:        }
                     22:        newpos = (long) (sect + (tr * sectrk) -1 ) * seclth;
                     23:        if (lseek(fid, newpos, 0) == -1) {
                     24:                perror("putpsect");
                     25:                return (EOF);
                     26:        }
                     27:        if (write(fid, buf, seclth) == seclth) 
                     28:                return (1);
                     29:        perror("putpsect");
                     30:        fprintf(stderr, "track %d, sect %d\n", tr, sect);
                     31:        return (EOF);
                     32: }
                     33: 
                     34: /*
                     35:  * Read physical sector from floppy disk file
                     36:  */
                     37: 
                     38: getpsect(tr, sect, buf)
                     39:        char buf[];
                     40: {
                     41: 
                     42:        long newpos;
                     43: 
                     44:        if (sect > sectrk || sect < 1) {
                     45:                fprintf("getpsect: sector number out of range: %d\n",sect);
                     46:                return (EOF);
                     47:        }
                     48:        newpos = (long) (sect + (tr * sectrk) -1 ) * seclth;
                     49:        if (lseek(fid, newpos, 0) == -1) {
                     50:                perror("getpsect");
                     51:                return (EOF);
                     52:        }
                     53:        if (read(fid, buf, seclth) != seclth) {
                     54:                perror("getpsect");
                     55:                fprintf(stderr, "track %d, sect %d\n", tr, sect);
                     56:                return (EOF);
                     57:        }
                     58:        return (1);
                     59: }
                     60: 
                     61: /* 
                     62:  * Initialize a new floppy disk file in "name",
                     63:  * return its file pointer.
                     64:  */
                     65: 
                     66: initcpm(name)
                     67:        char *name;
                     68: {
                     69:        int f, i;
                     70:        char buf[512];
                     71: 
                     72:        if ((f = open(name, O_CREAT|O_RDWR, 0644)) < 0)
                     73:                return (EOF);
                     74:        for (i=0; i<512; i++)
                     75:                buf[i] = '\345';
                     76:        /*
                     77:         * Initialize (with 0xe5) the first four tracks
                     78:         * on the `floppy'
                     79:         */
                     80:        for (i=0; i < (4*seclth*sectrk); i += 512)
                     81:                write(f, buf, 512);
                     82:        return (f);
                     83: }

unix.superglobalmegacorp.com

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