|
|
1.1 ! root 1: # ! 2: # 33iofile.s ! 3: # ! 4: # FILE HOUSEKEEPING OPERATIONS ! 5: # ! 6: _DEFNAME: ! 7: calls $0,_getname ! 8: movl r1,sp ! 9: bisw2 $FDEF,FUNIT(r0) ! 10: jmp (r8) ! 11: _BUFF: ! 12: cvtbw (r10)+,_bufopt ! 13: jmp (r8) ! 14: _RESET: ! 15: cvtbl (r10),r3 #attempt to rewind only if stdin ! 16: bneq l3301 # and no name is given ! 17: cmpl *(sp),$stdin ! 18: bneq l3301 ! 19: tstb stdin+FNAME ! 20: bneq l3301 ! 21: pushl stdin+FBUF ! 22: calls $1,_rewind ! 23: tstl r0 # -1 => error ! 24: blss eseek ! 25: addl2 $3,r10 ! 26: addl2 $4,sp #clear stack ! 27: bicw2 $EOF+EOLN,stdin+FUNIT ! 28: bisw2 $SYNC,stdin+FUNIT ! 29: jmp (r8) ! 30: l3301: ! 31: calls $0,_getname ! 32: movl r1,sp ! 33: movl r0,r6 ! 34: pushal rdopen ! 35: pushal FNAME(r6) ! 36: calls $2,_fopen ! 37: tstl r0 ! 38: beql eopen ! 39: movl r0,FBUF(r6) ! 40: bisw2 $SYNC+FREAD,FUNIT(r6) ! 41: jmp (r8) ! 42: eseek: ! 43: movl stdin+PFNAME,_file ! 44: movw $ESEEK,_perrno ! 45: jbr error ! 46: eopen: ! 47: movl PFNAME(r6),_file ! 48: movw $EOPEN,_perrno ! 49: jbr error ! 50: _REWRITE: ! 51: calls $0,_getname ! 52: movl r1,sp ! 53: movl r0,r6 ! 54: movl PFNAME(r6),_file ! 55: pushal wtopen ! 56: pushal FNAME(r6) ! 57: calls $2,_fopen ! 58: tstl r0 ! 59: beql ecreat ! 60: movl r0,FBUF(r6) ! 61: bisw2 $EOF+FWRITE,FUNIT(r6) ! 62: jmp (r8) ! 63: ecreat: ! 64: movw $ECREATE,_perrno ! 65: jbr error ! 66: _FLUSH: ! 67: incl r10 ! 68: calls $1,_unit ! 69: bbc $fWRITE,FUNIT(r7),l3302 ! 70: pushl FBUF(r7) ! 71: calls $1,_fflush ! 72: l3302: ! 73: jmp (r8) ! 74: _REMOVE: ! 75: cvtbl (r10)+,r3 #r3 has filename length ! 76: bneq l3303 ! 77: cvtwl (r10)+,r3 ! 78: l3303: ! 79: movl r3,r6 #r6 has stack length ! 80: blbc r6,l3304 ! 81: incl r6 ! 82: l3304: ! 83: addl3 r3,sp,r1 #r1 pts to end of name ! 84: l3305: ! 85: cmpb -(r1),$blank #delete trailing blanks ! 86: bneq l3306 #(note: could use "spanc" here) ! 87: clrb (r1) ! 88: sobgtr r3,l3305 ! 89: l3306: ! 90: movl sp,_file #remove file ! 91: pushl sp ! 92: calls $1,_unlink ! 93: tstl r0 ! 94: bneq eremove ! 95: addl2 r6,sp ! 96: jmp (r8) ! 97: eremove: ! 98: movl _file,sp #recover filename ! 99: movw $EREMOVE,_perrno ! 100: jbr error ! 101: _MESSAGE: ! 102: incl r10 ! 103: calls $0,_pflush ! 104: pushal stderr ! 105: calls $1,_unit ! 106: jmp (r8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.