From Antitronics
*** 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