
#------------------------------------------------------------------------------
# $File: forth,v 1.4 2021/04/26 15:56:00 christos Exp $
# forth:  file(1) magic for various Forth environments
# From: Lubomir Rintel <lkundrak@v3.sk>
#

# Has a FORTH stack diagram and something that looks very much like a FORTH
# multi-line word definition. Probably a FORTH source.
0       regex   \[[:space:]]\\(([[:space:]].*)?\ --\ (.*[[:space:]])?\\)
>0      regex   \^:\[[:space:]]
>>0     regex   \^;$				FORTH program
!:mime  text/x-forth

# Inline word definition complete with a stack diagram
0       regex   \^:[[:space:]].*[[:space:]]\\(([[:space:]].*)?\ --\ (.*[[:space:]])?\\)[[:space:]].*[[:space:]];$	FORTH program
!:mime  text/x-forth

# Various dictionary images used by OpenFirware FORTH environment

0	lelong	0xe1a00000
>8	lelong	0xe1a00000
# skip raspberry pi kernel image kernel7.img by checking for positive text length
>>24	lelong	>0		ARM OpenFirmware FORTH Dictionary,
>>>24	lelong	x		Text length: %d bytes,
>>>28	lelong	x		Data length: %d bytes,
>>>32	lelong	x		Text Relocation Table length: %d bytes,
>>>36	lelong	x		Data Relocation Table length: %d bytes,
>>>40	lelong	x		Entry Point: %#08X,
>>>44	lelong	x		BSS length: %d bytes

0	string	MP
>28	lelong	1		x86 OpenFirmware FORTH Dictionary,
>>4	leshort	x		%d blocks
>>2	leshort	x		+ %d bytes,
>>6	leshort	x		%d relocations,
>>8	leshort	x		Header length: %d paragraphs,
>>10	leshort	x		Data Size: %d
>>12	leshort	x		- %d 4K pages,
>>14	lelong	x		Initial Stack Pointer: %#08X,
>>20	lelong	x		Entry Point: %#08X,
>>24	lelong	x		First Relocation Item: %d,
>>26	lelong	x		Overlay Number: %d,
>>18	leshort	x		Checksum: %#08X

0	belong	0x48000020	PowerPC OpenFirmware FORTH Dictionary,
>4	belong	x		Text length: %d bytes,
>8	belong	x		Data length: %d bytes,
>12	belong	x		BSS length: %d bytes,
>16	belong	x		Symbol Table length: %d bytes,
>20	belong	x		Entry Point: %#08X,
>24	belong	x		Text Relocation Table length: %d bytes,
>28	belong	x		Data Relocation Table length: %d bytes

0	lelong	0x10000007	MIPS OpenFirmware FORTH Dictionary,
>4	lelong	x		Text length: %d bytes,
>8	lelong	x		Data length: %d bytes,
>12	lelong	x		BSS length: %d bytes,
>16	lelong	x		Symbol Table length: %d bytes,
>20	lelong	x		Entry Point: %#08X,
>24	lelong	x		Text Relocation Table length: %d bytes,
>28	lelong	x		Data Relocation Table length: %d bytes

# Dictionary images used by minimal C FORTH environments, any platform,
# using native byte order.

# Weak.
#0	short	0x5820		cForth 16-bit Dictionary,
#>2	short	x		Serial: %#08X,
#>4	short	x		Dictionary Start: %#08X,
#>6	short	x		Dictionary Size: %d bytes,
#>8	short	x		User Area Start: %#08X,
#>10	short	x		User Area Size: %d bytes,
#>12	short	x		Entry Point: %#08X

0	long	0x581120	cForth 32-bit Dictionary,
>4	long	x		Serial: %#08X,
>8	long	x		Dictionary Start: %#08X,
>12	long	x		Dictionary Size: %d bytes,
>16	long	x		User Area Start: %#08X,
>20	long	x		User Area Size: %d bytes,
>24	long	x		Entry Point: %#08X
