
# Define SciTE settings for MMIXAL files.

file.patterns.mmixal=*.mms
filter.mmixal=MMIXAL (mms)|$(file.patterns.mmixal)|
*filter.mmixal=$(filter.mmixal)

lexer.$(file.patterns.mmixal)=mmixal

*language.mmixal=MMIXAL|mms||

opcodes=2ADDU 4ADDU 8ADDU 16ADDU ADD ADDU AND ANDNH ANDNL ANDNMH ANDNML \
	BDIF BEV BN BNN BNP BNZ BOD BP BSPEC BYTE BZ CMP CMPU CSEV CSN CSNN CSNP CSNZ CSOD CSP CSWAP CSZ \
	DIV DIVU ESPEC EXPR FADD FCMP FCMPE FDIV FEQL FEQLE FIX FIXU FLOT FLOTU FMUL FREM FSQRT FSUB FUN FUNE \
	GET GETA GO GREG I_BIT INCH INCL INCMH INCML IS JMP LDA LDB LDBU LDHT LDO LDOU LDSF LDT LDTU LDUNC LDVTS LDW LDWU LOC LOCAL \
	MOR MUL MULU MUX MXOR NAND NEG NEGU NNIX NOR NXOR O_BIT OCTA ODIF OR ORH ORL ORMH ORML ORN \
	PBEV PBN PBNN PBNP PBNZ PBOD PBP PBZ POP PREFIX PREGO PRELD PREST PUSHGO PUSHJ PUT \
	RESUME SAVE SET SETH SETL SETMH SETML SFLOT SFLOTU SL SLU SR SRU \
	STB STBU STCO STHT STO STOU STSF STT STTU STUNC STW STWU SUB SUBU SWYM SYNC SYNCD TDIF TETRA TRAP TRIP UNSAVE \
	WDIF WYDEXOR ZSEV ZSN ZSNN ZSNP ZSNZ ZSOD ZSP ZSZ

special_register=rA rB rC rD rE rF rG rH rI rJ rK rL rM rN rO rP rQ rR rS rT rU rV rW rX rY rZ rBB rTT rWW rXX rYY rZZ

predef_symbols=@ Text_Segment Data_Segment Pool_Segment Stack_Segment \
	StdErr StdIn StdOut \
	Fopen Fclose Fread Fwrite Fgets Fputs Fgetws Fputws Ftell Fseek \
	TextRead TextWrite BinaryRead BinaryWrite BinaryReadWrite

keywords.$(file.patterns.mmixal)=$(opcodes)
keywords2.$(file.patterns.mmixal)=$(special_register)
keywords3.$(file.patterns.mmixal)=$(predef_symbols)

# Divsion of leading whitespace in line
style.mmixal.0=
# Comment
style.mmixal.1=$(colour.code.comment.line),$(font.code.comment.line)
# Label
style.mmixal.2=$(font.base)
# Opcode (not validated)
style.mmixal.3=
# Division between Label and Opcode
style.mmixal.4=
# Valid Opcode (as defined in opcodes above)
style.mmixal.5=$(colour.keyword),bold
# Unknown Opcode
style.mmixal.6=$(colour.error)
# Division between Opcode and Operands
style.mmixal.7=
# Division of Operands
style.mmixal.8=
# Number
style.mmixal.9=$(colour.number)
# Reference (to a Label)
style.mmixal.10=$(font.base)
# Char
style.mmixal.11=$(colour.char)
# String
style.mmixal.12=$(colour.string)
# Register (also special_register as defined above)
style.mmixal.13=fore:#7F007F
# Hexadecimal Number
style.mmixal.14=fore:#7F0000
# Operator
style.mmixal.15=bold
# Symbol (as defined in predef_symbols above)
style.mmixal.16=fore:#FF7777
# Include for those who use the preprocessor mmixali written by R. Loos.
# Comment otherwise.
#~ style.mmixal.17=$(colour.preproc)
style.mmixal.17=$(colour.code.comment.line),$(font.code.comment.line)

comment.block.mmixal=%

tab.size.$(file.patterns.mmixal)=16
indent.size.$(file.patterns.mmixal)=16

command.compile.$(file.patterns.mmixal)=mmixal -l $(FileName).map -b 200 $(FilePath)
command.go.$(file.patterns.mmixal)=mmix $(1) $(FileName).mmo
#~ mmotype
command.name.2.$(file.patterns.mmixal)=mmotype
command.2.$(file.patterns.mmixal)=mmotype $(FileName).mmo $(FileName).out
