.title fip_3 -- misc file operations .library 'god$lib:' .library 'fip' ; ; formats: ; status = FIP$DELETE ( [fip], [file], ,, [ofile], [olen] ) ; status = FIP$REMOVE ( [fip], [file], ,, [ofile], [olen] ) ; status = FIP$CREATE ( [fip], [file], ,, [ofile], [olen] ) ; status = FIP$ENTER ( [fip], [file], fid,, [ofile], [olen] ) ; registers: ; r2 = address of fip ; r3 = argm mask ; $fipdef $esect _fip$code ;============================================================================== .entry fip$delete, ^m jsb fip_argm_fip_file blbc r0, 30$ $prepare_file , err=30$ bitl #^Cfip$m_open_r!fip$m_open_w, fip$f_flags(r2) beql 10$ movl #fab$m_nam, fip$l_fop(r2) $erase fip$f_fab(r2) brb 20$ 10$: movl #fab$m_dlt, fip$l_fop(r2) $close fip$f_fab(r2) 20$: movl r0, fip$f_status(r2) blbc r0, 30$ bisb2 #fip$m_search, fip$f_flags(r2) 30$: jsb fip_get_name blbc r0, 40$ clrl fip$f_flags(r2) 40$: ret ;------------------------------------------------------------------------------ .entry fip$remove, ^m jsb fip_argm_fip_file blbc r0, 30$ $prepare_file , err=20$ $prepare_file , err=20$ movl r2, r4 ; r4 = addr of original fip clrl r2 jsb fip_alofip ; r2 = addr of scratch fip blbc r0, 20$ movb fip$b_rsl(r4), fip$b_rsl(r2) ; put rs into scratch fip as fnm movl fip$l_rsa(r4), fip$l_rsa(r2) jsb fip_reparse_rs ; parse it blbc r0, 10$ $remove fip$f_fab(r2) ; remove it (searches automatic) movl r0, fip$f_status(r4) ; save status in original fip 10$: jsb fip_frefip ; free scratch fip movl r4, r2 ; resume using original fip jsb fip_get_name ; return name bisb2 #fip$m_search, fip$f_flags(r2) ; clear Searched flag (file gone) movl fip$f_status(r2), r0 ; return Remove status 20$: ret 30$: jsb fip_get_name ret ;------------------------------------------------------------------------------ .entry fip$create, ^m jsb fip_argm_fip_file blbc r0, 10$ $prepare_file , err=10$ movb #fab$m_cr, fip$b_rat(r2) clrq fip$q_rdt(r2) clrw fip$w_rvn(r2) movw #-1, fip$w_pro(r2) $create fip$f_fab(r2) movl r0, fip$f_status(r2) blbc r0, 10$ bisb2 #fip$m_open_w!fip$m_display!fip$m_search, fip$f_flags(r2) 10$: jsb fip_get_name ret ;------------------------------------------------------------------------------ .entry fip$enter, ^m jsb fip_argm_fip $check_arg 3, err=20$ $check_file $prepare_file blbc r0, 10$ movaq @fip$p_new(ap), r0 movaq fip$w_fid(r2), r1 movl (r0)+, (r1)+ movw (r0), (r1) $enter fip$f_fab(r2) movl r0, fip$f_status(r2) blbc r0, 10$ bisb2 #fip$m_search, fip$f_flags(r2) 10$: jsb fip_get_name 20$: ret ;============================================================================== .end