|
|
1.1 ! root 1: # ! 2: # Copyright (c) 1979 Regents of the University of California ! 3: # ! 4: # char sccsid[] = "@(#)33iofile.s 4.2 10/14/80"; ! 5: # ! 6: # FILE HOUSEKEEPING OPERATIONS ! 7: # ! 8: _DEFNAME: ! 9: incl r10 ! 10: calls $4,_getname ! 11: bisw2 $FDEF,FUNIT(r0) ! 12: jmp (r8) ! 13: _BUFF: ! 14: cvtbl (r10)+,r0 ! 15: bneq l3301 ! 16: pushl $0 ! 17: brb l3303 ! 18: l3301: ! 19: cmpl r0,$1 ! 20: bgtr l3302 ! 21: jmp (r8) ! 22: l3302: ! 23: pushal __sobuf ! 24: l3303: ! 25: pushl stdout+FBUF ! 26: calls $2,_setbuf ! 27: jmp (r8) ! 28: _RESET: ! 29: incl r10 ! 30: tstl 8(sp) #attempt to rewind only if stdin ! 31: bneq l3304 # and no name is given ! 32: cmpl *12(sp),$stdin ! 33: bneq l3304 ! 34: tstb stdin+FNAME ! 35: bneq l3304 ! 36: pushl stdin+FBUF ! 37: calls $1,_rewind ! 38: tstl r0 # -1 => error ! 39: blss eseek ! 40: addl2 $16,sp #clear stack ! 41: bicw2 $EOF+EOLN,stdin+FUNIT ! 42: bisw2 $SYNC,stdin+FUNIT ! 43: jmp (r8) ! 44: l3304: ! 45: calls $4,_getname ! 46: movl r0,r6 ! 47: pushal rdopen ! 48: pushal FNAME(r6) ! 49: calls $2,_fopen ! 50: tstl r0 #check for valid open ! 51: bneq l3305 ! 52: bbc $fTEMP,FUNIT(r6),eopen #if TEMP file, set at EOF ! 53: bisw2 $EOF,FUNIT(r6) ! 54: l3305: ! 55: movl r0,FBUF(r6) ! 56: bisw2 $SYNC+FREAD,FUNIT(r6) ! 57: jmp (r8) ! 58: eseek: ! 59: movl stdin+PFNAME,_file ! 60: movw $ESEEK,_perrno ! 61: jbr error ! 62: eopen: ! 63: movl PFNAME(r6),_file ! 64: movw $EOPEN,_perrno ! 65: jbr error ! 66: _REWRITE: ! 67: incl r10 ! 68: calls $4,_getname ! 69: movl r0,r6 ! 70: movl PFNAME(r6),_file ! 71: pushal wtopen ! 72: pushal FNAME(r6) ! 73: calls $2,_fopen ! 74: tstl r0 ! 75: beql ecreat ! 76: movl r0,FBUF(r6) ! 77: bisw2 $EOF+FWRITE,FUNIT(r6) ! 78: jmp (r8) ! 79: ecreat: ! 80: movw $ECREATE,_perrno ! 81: jbr error ! 82: _FILE: ! 83: incl r10 ! 84: pushl FBUF(r7) ! 85: jmp (r8) ! 86: _FLUSH: ! 87: incl r10 ! 88: calls $1,_unit ! 89: bbc $fWRITE,FUNIT(r7),l3306 ! 90: pushl FBUF(r7) ! 91: calls $1,_fflush ! 92: l3306: ! 93: jmp (r8) ! 94: _REMOVE: ! 95: incl r10 ! 96: movl (sp)+,r4 #r4 has max name length ! 97: movl (sp)+,r5 #r5 pts to name ! 98: locc $blank,r4,(r5) #check for trailing blanks ! 99: subl2 r0,r4 #deduct blanks if any ! 100: addl3 $2,r4,r6 #r6 has name + 1 aligned to word ! 101: bicl2 $1,r6 ! 102: subl2 r6,sp #allocate space ! 103: movc5 r4,(r5),$0,r6,(sp) #move in name with zero end ! 104: pushl sp #unlink file ! 105: calls $1,_unlink ! 106: tstl r0 #check for errors ! 107: bneq eremove ! 108: addl2 r6,sp #deallocate space ! 109: jmp (r8) ! 110: eremove: ! 111: movl sp,_file #point to name ! 112: movw $EREMOVE,_perrno ! 113: jbr error ! 114: _MESSAGE: ! 115: incl r10 ! 116: calls $0,_pflush ! 117: pushal stderr ! 118: calls $1,_unit ! 119: jmp (r8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.