Els fitxers MYR consten de tres parts ben diferenciades:
- La primera part (capçalera), te 180 bytes i és on apareix informació relativa a les caracteristiques de l'estructura del fitxer.
- La segona part del fitxer (cos), és on hi ha el dibuix. Més endavant es concretará la seva estructura.
- La tercera part (cua), te 512 bytes repartits en dos grups. El primer és de 192 bytes, i el segon, de 160 words de 2 bytes.
Eks fitxers mantenen un ordre de bytes propi del sistema operatiu UNIX, on el byte mes significatiu apareix abans que el menys significatiu. O sigui, que es llegeixen d'esquerra a dreta.

Especificació del contingut
Capçalera
Bytes 0 - 28
- Un conjunt de bytes que inclouen el tipus de maquina (MASCHINENTYP). S'ha de tenir en compte que els dos primers bytes no es poden canviar i contenen els valors 77 i 65 respectivament. El 77 correspon a una 'M' i el 65 correspon a una 'A'. En aquests 29 bytes s'inclou el nom del camp ('MASCHINENTYP :') i a continuació, el valor corresponent, que és el tipus de maquina. El valor del camp s'omple d'espais fins que s'acava d'ocupar tota la longitud, que és de 12 bytes. Seguidament venen els 2 últims bytes que corresponen al 13 i al 10 (retorn de carro i canvi de linea)
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 |
| M | A | S | C | H | I | N | E | N | T | Y | P | : |
- 00-01: Bytes inalterables.
- 02-13: Encara que aquests valors sempre s'han trobat iguals, sembla ser que es pot posar el que es vulgui (tant en majuscules com en minuscules).
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| M | R | S | J | 7 | 8 | / | 1 | S | U | L | 13 | 10 |
- 14-25: El nom de la maquina sempre ocupa aquests 12 bytes.
- 15: Aquest byte s'utiliza en el calcul del numero secret 1
- 26: Sempre hem trobat un espai
- 27-28: Retorn de carro i canvi de linia.
Bytes 29 - 58
- En aquests bytes es guarda informacio del nom del dibuix (MUSTER). De la mateixa manera que en l'apartat anterior, al principi hi ha el nom del camp propiament dit ('Muster...... : ') i despres apareix el valor del camp. Aquest ultim tambe s'omple d'espais fins arribar a la seva longitud (12 bytes). En aquest cas els 2 ultims bytes que venen a continuacio, tambe corresponen al 13 i al 10.
| 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
| M | u | s | t | e | r | . | . | . | . | . | . | : |
- 29-42: Sembla que es pot posar la cadena de caracters que es vulgui, tant en majuscules com en minuscules
- 43: Sempre és un espai
| 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
| V | E | R | S | 13 | 10 |
- 44-55: El nom del dibuix sempre ocupa aquests 12 bytes
- 46: Aquest byte s'utiliza en el calcul del numero secret 1
- 56: Sempre hem trobat un espai
- 57-58: Retorn de carro i canvi de linia.
Bytes 59 - 88
- Aqui trobem informacio sobre la data del dibuix (DATUM). Igualment que en els apartats anteriors, primer apareix el nom del camp ('Datum....... : ') i tot seguit el valor que li correspon, per la qual cosa hi ha disponibles 12 bytes. Per últim, ens tornem a trobar amb els dos bytes 13 i 10 respectivament.
| 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
| D | a | t | u | m | . | . | . | . | . | . | . | : |
- 59-72: Sembla que es pot posar la cadena de caracters que es vulgui, tant en majuscules com en minuscules
- 73: Sempre és un espai
| 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 |
| 2 | 4 | . | 0 | 2 | . | 9 | 7 | 13 | 10 |
- 74-85: El nom del dibuix sempre ocupa aquests 12 bytes
- 75: Aquest byte s'utiliza en el calcul del numero secret 1
- 86: Sempre hem trobat un espai
- 87-88: Retorn de carro i canvi de linia.
Byte 89
- Conte el valor 0 indicant que la cadena amb les informacions anteriors s'ha acabat.
Byte 90
- Aquest byte el podem destriar en 2. Dividint per 16 trobariem els 4 bits de mes pes i fent el modul de 16, els quatre bits de menys pes. El primer guarda informacio sobre X-rt i el segon sobre X-blocksize.
Byte 91
- De la mateixa manera que l'anterior, tambe el podem destriar per obtenir informacio sobre Y-rt i Y-blocksize.
Byte 92
- Numero total de cintes de que consta el dibuix.
Byte 93
- Numero de cinta al que correspon el fitxer MYR.
Bytes 94 - 95
- Desconegut.
Bytes 96 - 97
- Numero d'agulles que te la maquina (maxim 32000 en aquest word)
Bytes 98 - 99
- Numero de bits del jacquard. El valor d'aquests dos bytes definira en el cos del fitxer la quantitat de bytes reservats a guardar informacio sobre les agulles del jacquard a cada pasada. Aquest numero de bytes surt del numero de bytes que s'indica aqui:
- Versio 1 o 2
- En les maquines mes antigues, aquest valor es el valor del Raport exactament. Per tant ens podem trobar un 9 o un 234 per exemple.
- Versio 3 o 4
- En les maquines mes actuals, aquest valor és el resultat de sumar els valors previament arrodonits a byte dels diferents Raports que hi ha des de la posicio 152,253 fins a la 162,163. Per tant sempre sera un valor divisible per 8.
- Versio 1 o 2
Bytes 100 - 101
- Numero de pasades totals de que consta el dibuix, tenint en compte totes les cintes, no nomes l'actual, que és a la que pertany el fitxer MYR.
Bytes 102 - 103
- Numero de pasada en que comença aquesta cinta. Si es tracta de la primera cinta, hi hauria d'haver un 1. En canvi si el fitxer actual correspon a una cinta que no es la primera, aquest valor sera el del numero de pasada en que acabava la cinta anterior mes 1.
Bytes 104 - 105
- Numero de pasada en que acaba aquesta cinta. Si la cinta actual es la ultima de la serie, aquest valor contindra el numero total de pasades que te el dibuix comptant totes les cintes (valor dels bytes 100 i 101).
Bytes 106 - 107
- Numero de bytes de que consta la informacio corresponent als getribes a cada pasada del dibuix.
Byte 108
- Numero de barres de planxa.
Byte 109
- Desconegut.
Bytes 110 - 111
- Designa els bytes totals de que constara en el fitxer la informacio corresponent a cada pasada. El valor d'aquest word es el resultat de sumar el numero de bytes que ocupen els bits de jacquard apuntats pels bytes 98 i 99 i el numero de bytes que indiquen els bytes 106 i 107 corresponents als bytes de getribes, mes dos bytes que s'afegeixen i que son els bytes del checksum que es fa a cada pasada.
- La operacio que es fa amb els bits de jacquard, es ajustar per sobre el nombre de bytes que ocupen perque siguin multiple de dos. Si per exemple s'especifiquen 9 bits, s'utilitzaran dos bytes. Si s'especifiquen 8 bits tambe s'utilitzan dos, pero si hi ha un valor, per exemple, de 17 bits, s'hauran d'utilitzar 4 bytes.
Bytes 112 - 113
- Numero de pasada en que comença la cinta 1.
Bytes 114 - 115
- Numero de pasada en que acava la cinta 1.
Bytes 116 - 117
- Numero de pasada en que comença la cinta 2.
Bytes 118 - 119
- Numero de pasada en que acava la cinta 2.
Bytes 120 - 121
- Numero de pasada en que comença la cinta 3.
Bytes 122 - 123
- Numero de pasada en que acava la cinta 3.
Bytes 124 - 125
- Numero de pasada en que comença la cinta 4.
Bytes 126 - 127
- Numero de pasada en que acava la cinta 4.
Bytes 128 - 129
- Numero de pasada en que comença la cinta 5.
Bytes 130 - 131
- Numero de pasada en que acava la cinta 5.
Bytes 132 - 133
- Numero de pasades de que consta el primer raport de pasades.
Bytes 134 - 135
- Numero de pasades de que consta el segon raport de pasades.
Bytes 136 - 137
- Numero de pasades de que consta el tercer raport de pasades.
Bytes 138 - 139
- Numero de pasades de que consta el quart raport de pasades.
Bytes 140 - 141
- Numero de pasades de que consta el cinque raport de pasades.
Byte 142
- Indica quantes vegades es repetira el numero de raport de pasades que assenyala el seguent byte.
Byte 143
- Numero de raport de pasades que es repetira les vegades que indiqui el byte anterior.
Byte 144
- Indica quantes vegades es repetira el numero de raport de pasades que assenyala el seguent byte.
Byte 145
- Numero de raport de pasades que es repetira les vegades que indiqui el byte anterior.
Byte 146
- Indica quantes vegades es repetira el numero de raport de pasades que assenyala el seguent byte.
Byte 147
- Numero de raport de pasades que es repetira les vegades que indiqui el byte anterior.
Byte 148
- Indica quantes vegades es repetira el numero de raport de pasades que assenyala el seguent byte.
Byte 149
- Numero de raport de pasades que es repetira les vegades que indiqui el byte anterior.
Byte 150
- Indica quantes vegades es repetira el numero de raport de pasades que assenyala el seguent byte.
Byte 151
- Numero de raport de pasades que es repetira les vegades que indiqui el byte anterior.
Bytes 152 - 153
- Numero d'agulles de que consta el primer raport d'agulles.
Bytes 154 - 155
- Numero d'agulles de que consta el segon raport d'agulles.
Bytes 156 - 157
- Numero d'agulles de que consta el tercer raport d'agulles.
Bytes 158 - 159
- Numero d'agulles de que consta el quart raport d'agulles.
Bytes 160 - 161
- Numero d'agulles de que consta el cinque raport d'agulles.
Bytes 162 - 163
- Numero d'agulles de que consta el sise raport d'agulles.
Byte 164
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 165
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Byte 166
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 167
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Byte 168
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 169
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Byte 170
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 171
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Byte 172
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 173
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Byte 174
- Indica quantes vegades es repetira el numero de raport d'agulles que assenyala el seguent byte.
Byte 175
- Numero de raport d'agulles que es repetira les vegades que indiqui el byte anterior.
Bytes 176 - 177
- Primer numero secret.
- El primer numero secret s'obte d'unes operacions realitzades sobre el byte numero 15, el byte numero 46 i el byte numero 75 del fitxer MYR, seguint la formula:
- N1 = (((3*(Byte[15]))%210) + ((3*(Byte[46]))%210) + ((3*(Byte[75]))%210))%210
- Tambe el segon numero secret s'obte de realitzar determinades operacions amb la majoria de bytes d'aquesta primera part i alguns bytes de la tercera part. Al capitol corresponent a la tercera part, es parlara amb mes deteniment d'aquest segon numero secret.
- El primer numero secret s'obte d'unes operacions realitzades sobre el byte numero 15, el byte numero 46 i el byte numero 75 del fitxer MYR, seguint la formula:
Bytes 178 - 179
- Checksum.
Cos
La segona part del fitxer MYR comença a partir de la posicio 181 o sigui, el byte 180 i correspon al cos del fitxer que es on realment hi figura tota la informacio referent al dibuix. Totes les dades hi figuren ordenades segons les pasades. Cada pasada consta d'un numero de bytes que s'indica a la primera part del fitxer, de la que s'ha parlat anteriorment, concretament als bytes numero 110 i 111. S'ha de tenir en compte que de tots els bytes que conformen la pasada, els dos ultims corresponen a un checksum parcial que s'aplica a cada pasada del fitxer i que es la suma dels valors que contenen tots i cada un dels bytes de que consta la pasada.
En cadascuna de les pasades hi figura primer la informacio corresponent als getribes, amb un tamany en bytes igual a l'indicat per els bytes numero 106 i 107, i despres ve la informacio corresponent a les agulles del jacquard amb un tamany que sortira de fer el tractament anteriorment assenyalat als bytes 98 i 99.
Aquesta segona part del fitxer, te una longitud total igual al numero de bytes de cada pasada, multiplicat pel numero de pasades de que consta el fitxer. Aquestes dades ens les indiquen els bytes 110, 111 fent referencia als bytes de cada pasada, i el valor que surt de restar el numero de pasada en que acaba el fitxer, menys el numero de pasada en que comença menys 1. Per tant, el numero de pasades de que consta el fitxer MYR surt de fer la seguent operacio:
- Np=((byte[104]*256 + byte[105]) - ((byte[102]*256 + byte[103]) - 1))
D'aquesta manera podem calcular facilment el byte on comença la tercera part del fitxer sumant 180 a la longitud total de la segona part.
Cua
Nomes els fitxers que son de la revisio 2 presenten els 512 bytes que conformen la tercera part dels fitxers MYR.
Aquesta darrera part esta dividida fonamentalment en 2 arees. La primera d'elles te una longitud de 192 bytes i representa informacio sobre el copyright, i el nom de la empresa.
Seguidament ve un grup de dades de 160 shorts. En aquest grup, apareixen el segon numero secret i el checksum de la tercera part. Aquesta informacio correspon als quatre ultims bytes del fitxer per aquest ordre:
- Els primers 192 bytes es podrien dividir en 3 subgrups:
- Bytes 0 - 79: Missatge de copyright. D'aquests 80 bytes no es poden modificar els que van del 0 al 45. Aquests bytes corresponen a la cadena: "Copyright (C) KARL MAYER Textilmaschinenfabrik". Tots els altres bytes es poden veure modificats lliurement.
- Bytes 80 - 111: Missatge de drets reservats. Tots aquests 32 bytes es poden modificar a voluntat.
- Bytes 112 - 191: Aquests 80 bytes informen del nom de la companyia. Els 46 primers bytes pertanyen a la formula que permet trobat el segon numero secret.
El segon numero secret surt de calcular la seguent formula:
N2 =
(Byte[0] % company[1]) + (Byte[1] % company[0]) +
(Byte[2] % company[3]) + (Byte[3] % company[2]) +
(Byte[4] % company[5]) + (Byte[5] % company[4]) +
(Byte[6] % company[7]) + (Byte[7] % company[6]) +
(Byte[8] % company[9]) + (Byte[9] % company[8]) +
(Byte[10]% company[11]) + (Byte[11]% company[10]) +
(Byte[12]% company[13]) + (Byte[13]% company[12]) +
(Byte[14]% company[15]) + (Byte[15]% company[14]) +
(Byte[16]% company[17]) + (Byte[17]% company[16]) +
(Byte[18]% company[19]) + (Byte[19]% company[18]) +
(Byte[20]% company[21]) + (Byte[21]% company[20]) +
(Byte[42]% company[1]) + (Byte[43]% company[0]) +
(Byte[44]% company[3]) + (Byte[45]% company[2]) +
(Byte[46]% company[5]) + (Byte[47]% company[4]) +
(Byte[48]% company[7]) + (Byte[49]% company[6]) +
(Byte[50]% company[9]) + (Byte[51]% company[8]) +
(Byte[52]% company[11]) + (Byte[53]% company[10]) +
(Byte[54]% company[13]) + (Byte[55]% company[12]) +
(Byte[56]% company[15]) + (Byte[57]% company[14]) +
(Byte[58]% company[17]) + (Byte[59]% company[16]) +
(Byte[60]% company[19]) + (Byte[61]% company[18]) +
(Byte[62]% company[21]) + (Byte[63]% company[20]) +
(Byte[64]% company[23]) + (Byte[65]% company[22]) +
(Byte[66]% company[25]) + (Byte[67]% company[24]) +
(Byte[68]% company[27]) + (Byte[69]% company[26]) +
(Byte[70]% company[29]) + (Byte[71]% company[28]) +
(Byte[72]% company[31]) + (Byte[73]% company[30]) +
(Byte[74]% company[33]) + (Byte[75]% company[32]) +
(Byte[76]% company[35]) + (Byte[77]% company[34]) +
(Byte[78]% company[37]) + (Byte[79]% company[36]) +
(Byte[80]% company[39]) + (Byte[81]% company[38]) +
(Byte[82]% company[41]) + (Byte[83]% company[40]) +
(Byte[84]% company[43]) + (Byte[85]% company[42]) +
(Byte[86]% company[45]) + (Byte[87]% company[44])
Referent als bytes que indiquen el segon numero secret (bytes 508 i 509 de la tercera part del fitxer), s'ha de dir que no mantenen la logica de significacio de bytes propia del Unix, sino l'ordre propi del sistema operatiu DOS. Es a dir, el primer byte (508) es el menys significatiu, i el segon (509) es el que correspon al byte mes significatiu. D'aquesta manera
cal multiplicar el segon byte (509) per 256, i sumar-li el primer (508) per obtenir el numero que ens facilita la formula.
Cal entendre que la numeracio de bytes que s'indica en aquesta formula, correspon als numeros de bytes del fitxer MYR sencer, i no pas de la tercera part. En canvi, els bytes que assenyalen la variable 'company' i corresponen als bytes de la tercera part que van del byte 112 al byte 157, seguint l'ordre que indica l'index de la variable, a partir del byte 112 del fitxer.
Analisi de fitxer
A continuacio es procedira a fer l'analisis d'un fitxer tipus MYR. El fitxer que s'analitzara es diu vers5pas.myr i es una reduccio feta amb el programa twingo del fitxer vers9.myr fins a deixar-lo nomes amb 5 pasades i 10 bytes de getribes, com es veura mes endavant. A mes, s'ha modificat el cos del fitxer per tal de facilitar mes informacio. S'ha escollit aquest fitxer sobretot perque es un fitxer de la revisio 2 i aixo permet que es pugui analitzar tambe la tercera part del fitxer MYR.
Es convenient que a l'hora de fer el seguiment dels bytes es disposi d'una finestra amb el programa 'sector' mostrant l'aspecte real del fitxer MYR. Aixo potser ajudara a comprendre del tot la seva estructura.
Analisi de la primera part
Els bytes que van del 0 al 13 indiquen el nom del camp corresponent al nom de la maquina. Ens trobem en els dos primers bytes un 77 i un 65 que son invariables en tot fitxer MYR. En aquests 14 bytes apareixen els valors corresponents als caracters 'MASCHINENTYPE :' o sigui la sequencia seguent:
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 |
| 77 | 65 | 83 | 67 | 72 | 73 | 78 | 69 | 78 | 84 | 89 | 80 | 32 | 58 |
| M | A | S | C | H | I | N | E | N | T | Y | P | : |
A continuacio venen una sequencia de 12 bytes on s'indica el nom propiament dit de la maquina. Concretament:
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 77 | 82 | 83 | 74 | 70 | 53 | 51 | 47 | 49 | 47 | 50 | 52 | 32 | 13 | 10 |
| M | R | S | J | 7 | 8 | / | 1 | S | U | L | CR | LF |
- 15: El valor que conte (82), el farem servir per calcular la formula corresponent al primer numero secret
- 19-20: Els caracters que contenen, representen els numeros 7 i 8 (78) i indiquen el numero de getribes que te, encara que no es fa cas d'aquest numero, sino d'una dada que apareix en els primers 180 bytes del fitxer
- 26: Sempre val el mateix (32), sembla ser una indicacio de fi de cadena.
- 27-28: Canvi de linia, si els modifiquem no s'efectua el canvi de linia i la informacio apareix seguida
Pasem ara a la seguent sequencia. Apareix el nom del camp corresponent al nom del dibuix:
| 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
| 77 | 117 | 115 | 116 | 101 | 114 | 46 | 46 | 46 | 46 | 46 | 46 | 32 | 58 | 32 |
| M | u | s | t | e | r | . | . | . | . | . | . | : |
Com es pot observar, aquesta vegada apareix el nom del camp en minuscules, la qual cosa certifica el fet que es pot canviar tant com es vulgui. El byte numero 43 tambe pertany a aquesta part i no al nom del dibuix que ve a continuacio. Seguidament venen una altra vegada 12 bytes on s'indica el nom del dibuix.
| 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
| 86 | 69 | 82 | 83 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 13 | 10 |
| V | E | R | S | CR | LF |
- 46: El valor que conte (82), el farem servir per calcular la formula corresponent al primer numero secret
- 56: Sempre val el mateix (32), sembla ser una indicacio de fi de cadena.
- 57-58: Canvi de linia, si els modifiquem no s'efectua el canvi de linia i la informacio apareix seguida
S'estudiara a continuacio el tercer camp que es la data del creacio del dibuix. Con en els dos apartats anterir primerament apareix el nom del camp.
| 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 |
| 50 | 52 | 46 | 48 | 50 | 46 | 57 | 55 | 32 | 32 | 32 | 32 | 32 | 13 | 10 |
| 2 | 4 | . | 0 | 2 | . | 9 | 7 | 13 | 10 |
- 75: El valor que conte (4), el farem servir per calcular la formula corresponent al primer numero secret
La data apareix segons el format DD.MM.YY i sempre ha estat d'aquesta manera. No obstant, es un camp que tambe es deixa modificar a voluntat sense cap mena de problema.
Per acabar aquest primer gran bloc de la primera part del fitxer MYR, apareix el byte numero 89 amb el seguent valor:
- Byte[89] = 0
Aixo indica la finalitzacio de la informacio anterior. A partir d'aqui, els seguents bytes, que es procedira a analitzar a continuacio, assenyalaran caracteristiques importants del fitxer.
- Byte[90] = 17
- Byte[91] = 2
Aquests dos bytes s'agafaran per separat i s'extreuran els quatre bits de mes pes i els quatre bits de menys pes realizant les seguents operacions:
- Byte[90]/16 = 1 (quatre bits de mes pes)
- Byte[90]%16 = 1 (quatre bits de menys pes)
- Byte[91]/16 = 0 (quatre bits de mes pes)
- Byte[91]%16 = 2 (quatre bits de menys pes)
Amb aquests quatre valors, podem extreure informacio sobre:
- Byte[90]
- 1 -> X-rt
- 1 -> X-blocksize
- Byte[91]
- 0 -> Y-rt
- 2 -> Y-Blocksize