;$FM FMVID FMS-11 modify video attribute routine ;. 30-Oct-86 J. E. Kulaga ;. ;. This routine is capable of modifying the video attribute byte ;. of the data structure maintained by V2.0 of DEC's FMS-11 Forms ;. Management System. The call: ;. ;. call fmvid (impure, 'fieldn', vab) ;. ;. impure == impure area array used by the FMS-11 package ;. fieldn == field name (in ASCII) ;. vab == video attributes byte - lower 4 bits indicate following: ;. ;. bit 0 - underline bit 2 - bold ;. bit 1 - reverse video bit 3 - blink ;. ;. The 16 possible values of vab are: ;. ;. 0 = normal 8 = blinking ;. 1 = underline 9 = blinking, underlined ;. 2 = reverse video 10 = blinking, reverse video ;. 3 = reverse, underline 11 = blinking, reverse, underlined ;. 4 = bold 12 = blinking, bold ;. 5 = bold, undelined 13 = blinking, bold, underlined ;. 6 = bold, reverse video 14 = blinking, bold, reverse ;. 7 = bold, reverse, underlined 15 = blinking, bold, reverse, underlined ;. ;. .TITLE FMVID .IDENT /V01/ vab = 2 ; offset from name scan to video attribute byte lng = 44 ; offset to impure area length ofs = 400 ; offset to beginning search address FMVID:: MOV 2(R5),R0 ; get impure area address MOV R0,R1 ; copy impure area start address ADD lng(R0),R1 ; calculate impure area end address ADD #ofs,R0 ; advance to address where search begins MOV 4(R5),R2 ; get address of field name 1$: CMP R0,R1 ; test for end of impure area BGE XIT ; if end reached, simply exit ; NOTE: following assumes field name starts on a word boundary MOV R2,R3 ; copy start address of field name CMP (R0)+,(R3)+ ; compare first two characters BNE 1$ ; if no match, continue scan CMP (R0)+,(R3)+ ; compare second two characters BNE 1$ ; if no match, continue scan CMP (R0)+,(R3)+ ; compare last two characters BNE 1$ ; if no match, continue scan ; have a match at this point MOVB @6(R5),vab(R0) ; reset video attribute XIT: RETURN ; return to calling program .END