BrotherFileFormat

From Antitronics

Revision as of 22:59, 28 July 2009 by Sconklin (Talk | contribs)
Jump to: navigation, search
*** UNKNOWNS
*** Where are number of rows and columns in current pattern stored,
*** for ppreprogrammed patterns
*** What effect does the 'M' button have?
*** What effect (if any) does detection of a G carriage have?

*** TODO
Document changes to directory entries when programs added and deleted

*** NOTES
*** Memory can be cleared by entering 888 (from service manual)
*** This work was greatly helped by prior work performed by John R. Hogerhuis and posted on the kminternals yahoo group.
*** This file is maintained by Steve Conklin, and a current copy may be found here: http://www.antitronics.com/wiki/index.php?title=BrotherFileFormat

--------------------------------------
Beginning of file format documentation
--------------------------------------

*** Note about the following section -
*** This data is BCD, and the data for each motif
*** are not byte-aligned. In this document, each
*** index into the file is listed twice - MSN first
*** then LSN

format is:
0xnnnn: MSN
0xnnnn: LSN

*** Here are up to 99 entries for each custom program that may be saved
*** These have program numbers 901-999

***
*** Program memory can extend dowward into the directory entry
*** Space - This seems to be able to cause problems for the knitter.
*** For example, if you add a first user program (number 901) of
*** 140 stitches x 96 rows, it will fill memory from 0x06DF down
*** to 0020. The next time you try to save a program, the knitting
*** machine hangs up.
***


0x0000: pgm info FF if not used, 01 if used, maybe 00 if never used and FF if deleted
0x0001: unknown
0x0002: rows 100
0x0002: rows 10
0x0003: rows 1
0x0003: stitches 100
0x0004: stitches 10
0x0004: stitches 1
0x0005: unknown
0x0005: pgm number hundreds
0x0006: pgm number tens
0x0006: pgm number ones
***
*** These previous seven bytes of pgm info data repeated up to 99 more times
***

------------------- [Snip]

0x02B7: last byte of maximum pgm info entry 99 - End of pgm entries

*** End of 99 custom program entries ***
*** 
*** Custom programs grow downward in this space

------------------- [Snip]

*** Programs grow downward from here
***
*** Program storage consists of the memo information for the program,
*** starting at the highest address and growing downward. Memo storage
*** is one nibble per row in the pattern, padded by one nibble for an
*** odd number of rows
*** Program rows of stitches are stored as a bitmap, stored from LSbit to MSbit,
*** LSnibble to MSnibble, and padded out to a complete nibble at the
*** end of each row. The entire program is padded out to the next
*** complete byte at the end.
***
0x06DF: Beginning of first saved program (first memo entry)

*** End of custom program storage

0x06E0: when M pressed, changes to 0x81 (stays when M unset)
0x06E1: when M pressed, changes to 0x02 (stays when M unset)
0x06E2: 
0x06E3: 
0x06E4: 
0x06E5: 1766

0x06E6: End (lowest address) of current row needle pattern
[Snip]  *** Stored as a row of 200 stitches
0x06FF: Beginning (highest address) of current row needle pattern

0x0700: On memory clear - init to 01
0x0701: On memory clear - init to 20, changed to 40 once
0x0702: LSN is current row number hundreds
0x0703: Current Row Number within the pattern
0x0704: 
0x0705: 
0x0706: 
0x0707: 
0x0708: 
0x0709: 
0x070A: 
0x070B: 
0x070C: 
0x070D: Changes when selector 2 chosen, and 0x80 appears to be 'M pressed'
0x070E: Changes when we change the left end of pattern in Selection 1
    for pattern 39 when start=L7, is 0x81 - when start=L21, is 0x85
0x070F: Carriage Moving to right == 2, Moving to left == 0, 
0x0710: always 0x07
0x0711: always 0xF9
0x0712: 
0x0713: 
0x0714: 
0x0715: Changes 0 to 01 when M set (stays when M unset)

0x0716: End (lowest address) of next row needle pattern. changes 0 to 0x80 when M set, Stays when M unset.
[Snip]  *** Stored as a row of 200 stitches
0x072F: Beginning (highest addrss) of next row needle pattern 

0x0730: Note (speculation) if memo ends here (growing down) then there is room for 300 rows of memo
0x0731: 
0x0732: 
0x0733: 
0x0734: 
0x0735: 
0x0736: 
0x0737: 
0x0738: to 0x20 when M set (stays when M unset)
0x0739: 
0x073A: to 0x20 when M set (stays when M unset)
0x073B: 
0x073C: to 0x20 when M set (stays when M unset)
0x073D: 
0x073E: to 0x20 when M set (stays when M unset)
0x073F: 
0x0740: to 0x20 when M set (stays when M unset)
0x0741: 
0x0742: to 0x20 when M set (stays when M unset)
0x0743: 
0x0744: to 0x20 when M set (stays when M unset)
0x0745: 
0x0746: 
0x0747: to 0x20 when M set (stays when M unset)
0x0748: 
0x0749: 
0x074A: 
0x074B: to 0x20 when M set (stays when M unset)
0x074C: 
0x074D: to 0x20 when M set (stays when M unset)
0x074E: 
0x074F: 
0x0750: to 0x20 when M set (stays when M unset)
0x0751: 
0x0752: to 0x20 when M set (stays when M unset)
0x0753: 
0x0754: 
0x0755: 
0x0756: to 0x20 when M set (stays when M unset)
0x0757: 
0x0758: 
0x0759: 
0x075A: to 0x20 when M set (stays when M unset)
0x075B: 
0x075C: 
0x075D: 
0x075E: to 0x20 when M set (stays when M unset)
0x075F: 
0x0760: 
0x0761: 
0x0762: to 0x20 when M set (stays when M unset)
0x0763: 
0x0764: 
0x0765: 
0x0766: 
0x0767: 
0x0768: 
0x0769: 
0x076A: 
0x076B: 
0x076C: 
0x076D: 
0x076E: 
0x076F: 
0x0770: 
0x0771: 
0x0772: 
0x0773: 
0x0774: 
0x0775: 
0x0776: 
0x0777: 
0x0778: 
0x0779: 
0x077A: 
0x077B: 
0x077C: 
0x077D: 
0x077E: 
0x077F: 
0x0780: 
0x0781: 
0x0782: 
0x0783: 
0x0784: 
0x0785: 
0x0786: 
0x0787:
*** Memo information may continue into lower addresses from here,
*** but the longest preprogrammed pattern I could find is #179
***  which is 144 rows
0x0788: Last two rows of memo dat for program #179
------------------- [Snip] *** Memo information
0x07CF: Beginning of memo info (lowest numbered two rows, right nibble is row 1)
0x07D0: 
0x07D1: 
0x07D2: 
0x07D3: 
0x07D4: to 0x20 when M set (stays when M unset)
0x07D5: to 0x20 when M set (stays when M unset)
0x07D6: 
0x07D7: 
0x07D8: 
0x07D9: 
0x07DA: 
0x07DB: 
0x07DC: 
0x07DD: 
0x07DE: 
0x07DF: 
0x07E0: 
0x07E1: 
0x07E2: 
0x07E3: 
0x07E4: 
0x07E5: to 0x20 when M set (stays when M unset)
0x07E6: to 0x20 when M set (stays when M unset)
0x07E7: to 0x20 when M set (stays when M unset)
0x07E8: to 0x20 when M set (stays when M unset)
0x07E9: to 0x20 when M set (stays when M unset)

*** Note about the following section -
*** This data is BCD, and the data for each motif
*** are not byte-aligned. In this document, each
*** index into the file is listed twice - MSN first
*** then LSN

format is:
0xnnnn: MSN
0xnnnn: LSN

0x07EA: Selector number - 1 for selector position one, 2 for selector position two
0x07EA: pattern number hundreds
0x07EB: pattern number tens
0x07EB: pattern number ones
0x07EC: unknown (unused?) nibble
0x07EC: Motif 6 position hundreds & 0x80 for RIGHT SIDE
0x07ED: Motif 6 position tens
0x07ED: Motif 6 position ones
0x07EE: Motif 6 # of copies hundreds
0x07EE: Motif 6 # of copies tens
0x07EF: Motif 6 # of copies ones
0x07EF: Motif 5 position hundreds & 0x80 for RIGHT SIDE
0x07F0: Motif 5 position tens
0x07F0: Motif 5 position ones
0x07F1: Motif 5 # of copies hundreds
0x07F1: Motif 5 # of copies tens
0x07F2: Motif 5 # of copies ones
0x07F2: Motif 4 position hundreds & 0x80 for RIGHT SIDE
0x07F3: Motif 4 position tens
0x07F3: Motif 4 position ones
0x07F4: Motif 4 # of copies hundreds
0x07F4: Motif 4 # of copies tens
0x07F5: Motif 4 # of copies ones
0x07F5: Motif 3 position hundreds & 0x80 for RIGHT SIDE
0x07F6: Motif 3 position tens
0x07F6: Motif 3 position ones
0x07F7: Motif 3 # of copies hundreds
0x07F7: Motif 3 # of copies tens
0x07F8: Motif 3 # of copies ones
0x07F8: Motif 2 position hundreds & 0x80 for RIGHT SIDE
0x07F9: Motif 2 position tens
0x07F9: Motif 2 position ones
0x07FA: Motif 2 # of copies hundreds
0x07FA: Motif 2 # of copies tens
0x07FB: Motif 2 # of copies ones
0x07FB: Motif 1 position hundreds & 0x80 for RIGHT SIDE
0x07FC: Motif 1 position tens
0x07FC: Motif 1 position ones
0x07FD: Motif 1 # of copies hundreds
0x07FD: Motif 1 # of copies tens
0x07FE: Motif 1 # of copies ones
0x07FE: Selector One position hundreds & 0x80 for RIGHT SIDE
0x07FF: Selector One  position tens
0x07FF: Selector One  position ones

===================================================
Individual locations not yet understood:

070A and 070B -

Not known what these values mean.

Patt No	Stitches	Rows	070A	070B	070A	070B
17	24		24	0x21	0x48	33	72
18	36		24	0x21	0xA7	33	167
20	28		28	0x22	0xF8	34	248
11	60		56	0x1E	0x6B	30	107
14	55		82	0x1F	0x65	31	101

Personal tools