# Contributed by:
#
# Michael Taylor
# miket@pcug.org.au     Michael_Taylor@splwg.com. 
# http://www.pcug.org.au/~miket/

colorize ASM370 {
    SyntaxParser = 'SIMPLE';
    
    color {
        { 'Normal',        'Editor_Default' },
        { 'Keyword',       'Editor_Keywords' },
        { 'Number',        'Lang_DecimalNumber' },
        { 'HexNumber',     'Lang_HexNumber' },
        { 'Punctuation',   'Lang_Punctuation' },
        { 'String',        'Lang_String' },
        { 'Comment',       'Lang_Comment' },
        { 'CPreprocessor', 'Lang_Preprocessor' },
        { 'Function',      'Lang_Function' },
        { 'Label',         'Lang_Label' },
    };

# assembler commands
    keyword 'Editor_Keywords' {
        'a', 'ah', 'al', 'alr', 'ap', 'ar',
        'b', 'bal', 'balr', 'bc', 'bcr', 'bct', 'bctr', 'be', 'bh', 'bhe',
        'bl', 'ble', 'bne', 'bnh', 'bnl', 'bnlr', 'bnz', 'bnzr', 'br',
        'bxhr', 'bxh', 'bxle', 'bxler', 'bzr', 'bz', 'bmr', 'bm', 'bor',
        'bo', 'bnor', 'bno', 'bpr', 'bp', 'bnpr', 'bnp',
        'c', 'cl', 'clc', 'cli', 'clr', 'clm', 'clcl', 'cp', 'cr', 'cs',
        'cds', 'ch', 'cvb', 'cvd',
        'd', 'dp', 'dr',
        'ed', 'edmk', 'ex',
        'ic', 'icm',
        'l', 'la', 'lm', 'lr', 'ltr', 'lh', 'lcr', 'lnr', 'lpr',
        'm', 'mc', 'mh', 'mp', 'mr', 'mvc', 'mvi', 'mvn', 'mvo', 'mvz',
        'n', 'nc', 'ni', 'nr',
        'o', 'or', 'oc', 'oi',
        'pack',
        's', 'sp', 'sr', 'srp', 'st', 'sll', 'srl', 'sh', 'stc',
        'stcm', 'stck', 'sth', 'stm', 'spm', 'slda', 'srda', 'sra', 'sla',
        'srdl', 'sldl', 'slr', 'sl',
        'ts', 'tm', 'tr', 'trt',
        'unpk',
        'x', 'xr', 'xc', 'xi',
        'zap'
    };

# define storage, define constant
    keyword 'Editor_Keywords2' {
        'ds', 'dc'
    };

# assembler directives
    keyword 'Editor_Keywords3' {
        'end',
        'equ',
        'csect',
        'dsect',
        'ltorg',
        'org',
        'using',
        'drop',
        'eject',
        'title',
        'copy',
        'aif',
        'anop',
        'ago'
    };

# extended assmebler directives - used by MicroFocus 370 Assembler
    keyword 'Editor_Keywords4' {
        'xdeco',
        'xdeci',
        'xdump',
        'xprnt',
        'xread'
    };

    keyword 'Editor_Keywords5' {
        'r0',
        'r1',
        'r2',
        'r3',
        'r4',
        'r5',
        'r6',
        'r7',
        'r8',
        'r9',
        'r10',
        'r11',
        'r12',
        'r13',
        'r14',
        'r15'
    };


    h_state 0 { 'Normal' }
    h_trans { 5, '-s', 'a-zA-Z_$@', 'Normal' }
    h_trans { 1, '<', '*', 'Comment' }
    h_trans { 2, '<', '\'', 'String' }
    h_trans { 3, '<', '"', 'String' }
    h_trans { 4, '-s', '0-9', 'Number' }
    h_trans { 0, 'S', 'a-zA-Z0-9_$@', 'Punctuation' }

    h_state 1 { 'Comment' }
    h_trans { 0, '$', '', 'Comment' }

    h_state 2 { 'String' }
    h_trans { 0, '$', '', 'Normal' }
    h_trans { 0, '', '\'', 'String' }

    h_state 3 { 'String' }
    h_trans { 0, '$', '', 'Normal' }
    h_trans { 0, '', '"', 'String' }

    h_state 4 { 'Number' }
    h_trans { 0, '$', '', 'Normal' }
    h_trans { 0, 's', 'Hh', 'Number' }
    h_trans { 0, '-S', '0-9A-Fa-f', 'Number' }

    h_state 5 { 'Normal' }
    h_trans { 0, '$', '', 'Normal' }
    h_wtype { 0, 0, 0, 'i', 'a-zA-Z0-9_$@' }
}

mode ASM370: PLAIN {
    FileNameRx          = /\.\c{{CPY}|{MLC}}$/;
    HilitOn             = 1;
    Colorizer           = 'ASM370';
    AutoHilitParen      = 1;
    
    SaveFolds           = 2;      # save fold info at end of line
    CommentStart        = '*';
    CommentEnd          = '';
    KeepBackups         = 0;
    AutoIndent          = 1;
    Trim                = 1;
}
