.title unmessage .library 'sys$library:lib' $mscdef $midxdef $mrecdef $mfacdef $secdef .psect _msg_code rd,nowrt,exe .entry unmessage,^m pushaq dyn_desc pushaq p1 calls #2,g^cli$get_value ; msg file to uncompile calls #0,init_output pushaq dyn_desc calls #1,g^msg_map_msgfile ; map it into memory jsb error addl #16,map_adr movl map_adr,r2 10$: movl (r2),r3 beql 20$ addl r3,map_adr calls #0,g^go_ahead addl #4,r2 movl r2,map_adr brb 10$ 20$: ret .entry go_ahead,^m movl map_adr,r2 cmpw msc$w_sanity(r2),#msc$c_sanity beql 10$ $exit_s code=#0 10$: addl3 r2,msc$l_index_off(r2),r3 cmpb midx$b_sanity(r3),#midx$c_sanity beql 20$ $exit_s code=#0 20$: movzwl midx$w_size(r3),r4 addl r3,r4 addl #midx$c_entries,r3 30$: pushl r3 calls #1,g^uncompile_message jsb error 40$: addl #midx$c_length,r3 cmpl r3,r4 blss 30$ ret .entry uncompile_message,^m movl 4(ap),r0 movl (r0),r2 ; message code addl3 map_adr,4(r0),r3 ; message address blbc r3,10$ ; if low bit set then this is a subindex ptr decl r3 cmpb midx$b_sanity(r3),#midx$c_sanity beql 2$ $exit_s code=#0 2$: movzwl midx$w_size(r3),r4 addl r3,r4 addl #midx$c_entries,r3 3$: pushl r3 calls #1,g^uncompile_message jsb error 4$: addl #midx$c_length,r3 cmpl r3,r4 blss 3$ ret 10$: extzv #sts$v_fac_no,#sts$s_fac_no,r2,r4 ; facility code tstb fac_flg ; is this first time through? beql 20$ cmpw r4,cur_fac bneq 20$ brw 50$ 20$: movb #1,fac_flg movl map_adr,r0 ; map address addl3 r0,msc$l_fac_off(r0),r5 movzwl (r5),r6 ; size of facility section addl r5,r6 ; facility end addl #2,r5 ; facility start 30$: cmpw mfac$w_number(r5),r4 ; right facility? beql 40$ movzbl mfac$b_namelen(r5),r7 addl #3,r5 addl r7,r5 ; point to next facility cmpl r5,r6 blss 30$ $exit_s code=#0 ; error=no matching facility 40$: bbc #11,mfac$w_number(r5),42$ pushab null brb 44$ 42$: pushab system 44$: bbs #15,mfac$w_number(r5),46$ tstw mfac$w_number(r5) beql 46$ ; bogus check for /share pushab null brb 48$ 46$: pushab shared 48$: extzv #0,#11,mfac$w_number(r5),-(sp) pushab mfac$b_namelen(r5) pushab buffer pushab buffer pushab facmsg calls #7,g^sys$fao jsb error pushab buffer calls #1,g^put_output jsb error movzbl #buffer_size,buffer ; fix up output buffer movw mfac$w_number(r5),cur_fac movw #1,cur_bas movb #-1,cur_sev 50$: extzv #sts$v_severity,#sts$s_severity,r2,r4 ; severity cmpb r4,cur_sev beql 60$ movb r4,cur_sev movab severities,r0 movzbl (r4)[r0],r4 addl3 r4,r0,-(sp) ; address of severity pushab buffer pushab buffer pushab sevmsg calls #4,g^sys$fao jsb error pushab buffer calls #1,g^put_output jsb error movzbl #buffer_size,buffer ; fix up output buffer 60$: extzv #sts$v_code,#sts$s_code,r2,r4 ; code cmpw cur_bas,r4 ; is this the code we expected next? beql 70$ movw r4,cur_bas pushl r4 pushab buffer pushab buffer pushab basmsg calls #4,g^sys$fao jsb error pushab buffer calls #1,g^put_output jsb error movzbl #buffer_size,buffer ; fix up output buffer 70$: incw cur_bas ; /detail= ; /user_value= ; /language= pushab mrec$b_identlen(r3) ; ident movzbl mrec$b_faocnt(r3),-(sp) ; fao count movzbl mrec$b_identlen(r3),r0 addl #10,r0 addl3 r3,r0,-(sp) ; error message pushl r2 ; error code pushab buffer pushab buffer pushab errmsg calls #7,g^sys$fao jsb error pushab buffer calls #1,g^put_output movzbl #buffer_size,buffer jsb error ; movzbl mrec$b_lang(r3),-(sp) ; movzbl mrec$b_userval(r3),-(sp) ; movzbl mrec$b_level(r3),-(sp) ; movzbl mrec$b_flags(r3),-(sp) ; movzbl mrec$b_type(r3),-(sp) ; pushab buffer ; pushab buffer ; pushab tmp ; calls #8,g^sys$fao ; jsb error ; pushab buffer ; calls #1,g^put_output ; movzbl #buffer_size,buffer ; jsb error ret ;tmp: .ascid '!!!_!XB,!XB,!XB,!XB,!XB' error: blbc r0,10$ rsb 10$: $exit_s code=r0 .entry msg_map_msgfile,0 ; ret-status = msg_map_msgfile ( msgfile ) movl 4(ap),r0 movb (r0),fab+fab$b_fns movl 4(r0),fab+fab$l_fna $open fab=fab blbc r0,10$ $crmpsc_s - inadr=inadr,retadr=map_adr,flags=#,- chan=fab+fab$l_stv,vbn=#2 10$: ret .psect _msg_local rd,wrt,noexe fab: $fab dnm=,fac=get,fop=ufo inadr: .long ^x200,^x200 map_adr: .quad cur_fac: .word ; current facility cur_bas: .word ; current expected base cur_sev: .byte ; current expected severity fac_flg: .byte ; first time through flag dyn_desc: .long ^x020E0000,0 buffer_size=255 buffer: .long buffer_size,bufadr bufadr: .blkb buffer_size .psect _msg_readonly rd,nowrt,noexe severities: .byte 0$-severities .byte 1$-severities .byte 2$-severities .byte 3$-severities .byte 4$-severities .byte 5$-severities .byte 5$-severities .byte 5$-severities 0$: .ascic 'WARNING' 1$: .ascic 'SUCCESS' 2$: .ascic 'ERROR' 3$: .ascic 'INFORMATION' 4$: .ascic 'FATAL' 5$: .ascic '?' p1: .ascid 'P1' facmsg: .ascid '.FACILITY!_!AC,!UW!AC!AC' system: .ascic ' /SYSTEM' shared: .ascic ' /SHARED' null: .byte 0 basmsg: .ascid '.BASE!_!_!UW' sevmsg: .ascid '.SEVERITY!_!AC' errmsg: .ascid '_!XL!_ /FAO=!UB /IDENT=!AC' .end unmessage