.title parse-routines ; parse_full (filename,resultname[,length][,defaultname][,flags]) ; parse_node (filename,resultname[,length][,defaultname][,flags]) ; parse_device (filename,resultname[,length][,defaultname][,flags]]) ; parse_directory (filename,resultname[,length][,defaultname][,flags]]) ; parse_filename (filename,resultname[,length][,defaultname][,flags]]) ; parse_filetype (filename,resultname[,length][,defaultname][,flags]]) ; parse_version (filename,resultname[,length][,defaultname][,flags]]) ; search_list (filename[,defaultname]) $fabdef $namdef fab: $fab nam=nam nam: $nam esa=esa,ess=nam$c_maxrss esa: .blkb nam$c_maxrss name_desc: .long 0 .long 0 .macro parse type,?l1,?l2 jsb parse_it blbc r0,l2 cmpl (ap),#3 blss l1 tstl 12(ap) beql l1 movzbl nam+nam$b_'type,@12(ap) l1: movl nam+nam$l_'type,name_desc+4 movzbl nam+nam$b_'type,name_desc pushaq name_desc pushl 8(ap) calls #2,g^str$copy_dx l2: .endm .entry parse_full,0 jsb parse_it blbc r0,2$ cmpl (ap),#3 blss 1$ tstl 12(ap) beql 1$ movzbl nam+nam$b_esl,@12(ap) 1$: movl nam+nam$l_esa,name_desc+4 movzbl nam+nam$b_esl,name_desc pushaq name_desc pushl 8(ap) calls #2,g^str$copy_dx 2$: ret .entry parse_filename,0 parse name ret .entry parse_filetype,0 parse type ret .entry parse_device,0 parse dev ret .entry parse_directory,0 parse dir ret .entry parse_node,0 parse node ret .entry parse_version,0 parse ver ret parse_it: movl 4(ap),r1 movb (r1),fab+fab$b_fns movl 4(r1),fab+fab$l_fna cmpl (ap),#4 blss 1$ movl 16(ap),r1 beql 1$ movb (r1),fab+fab$b_dns movl 4(r1),fab+fab$l_dna brb 2$ 1$: movb #0,fab+fab$b_dns movl #0,fab+fab$l_dna 2$: clrb nam+nam$b_nop cmpl (ap),#5 blss 10$ tstl 20(ap) beql 10$ tstl @20(ap) beql 10$ ; see if they want syntax check only (bit 1) bitb #1,@20(ap) beql 3$ bisb #nam$m_synchk,nam+nam$b_nop 3$: ; see if they want noconceal bitb #2,@20(ap) beql 4$ bisb #nam$m_noconceal,nam+nam$b_nop 4$: 10$: $parse fab=fab movl 8(ap),r1 rsb .entry search_list,0 movl 4(ap),r1 movb (r1),fab+fab$b_fns movl 4(r1),fab+fab$l_fna cmpl (ap),#2 blss 1$ movl 8(ap),r1 beql 1$ movb (r1),fab+fab$b_dns movl 4(r1),fab+fab$l_dna brb 2$ 1$: movb #0,fab+fab$b_dns movl #0,fab+fab$l_dna 2$: movb #nam$m_synchk,nam+nam$b_nop $parse fab=fab clrl r0 bitl #nam$m_search_list,nam+nam$l_fnb beql 5$ movl #1,r0 5$: ret .end