ENIGMA Doku aus Mahlerts

ZX-Team Forum
Antworten
Benutzeravatar
siggi
User
Beiträge: 1825
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim
Kontaktdaten:

ENIGMA Doku aus Mahlerts

Beitrag von siggi » 09.04.2017, 09:49

Hallo zusammen

nach Roelofs Vortrag in Mahlerts hatte ich im Forum ja nach Source seinen ENIGMA-Programmes für den Speccy gefragt:
viewtopic.php?f=2&t=1895&start=225

Roelof hat mir dann per E-Mail seine ganze Enigma-Doku zugeschickt, die ich nun (nach Absprache mit ihm) Euch nicht vorenthalten will. Hier seine Beschreibung aus der E-Mail und die gezippte Programmdoku. Viel Spaß beim ent/verschlüsseln :mrgreen:

Siggi
Roelof hat geschrieben: Die Zeddy Version wurde von ZXHeinz hergestellt, und ueberprueft. Nur
nicht ausgebaut wie ich das mit Spectrum getan habe. Und sicherlich
nicht optimalisiert.

Man sieht dass ich jede $ 'drei-breit' verwende so das ich 'overflow'
beim drehen nicht testen darf. Wenn ich nur in die 'mittlere $' des
naechsten 'Walzes' wieder anfange. (deswegen die 10,11,12, =
CharCode - ZX81offset + 27) (Abziehen musste jedenfalls)
3/4 Teil des Progs ist nur Einstellung!
Fur Spectrum ist das noch viel schlimmer und musste noch MC dabei..

M.N. Spectrum 'aufschmuck' hat viel Zeit genommen, dann war den
Spass ans dekodieren von historische Berichte schon wieder vorbei.
Und auch die Lust um am Txt fuers Manual weiter zu arbeiten und an
die Eingabe Seiten die noch kein 'Atmosphaere' haben.

Zeddy Prog ist nicht optimiert, die Strings sollen nicht alle zugleich in die
Luft sein wenn es wenig Platz gibt. (Vorbild hangt irgendwo dran)

Bausatze wie die von Jens kosten etwa 150 EUR (ohne HolzKabinet!)
und scheinen ziemlich viel Interesse zu finden. Also ein richtige Zeddy
version wird bestimmt attraktiv sein und konnte Zeddy vorne an bringen.
EnigmaDefinitiefverzendDEF.zip
(166.95 KiB) 13-mal heruntergeladen
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
Jens
User
Beiträge: 986
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser
Kontaktdaten:

Re: ENIGMA Doku aus Mahlerts

Beitrag von Jens » 09.04.2017, 12:00

Hallo User!
Bausatze wie die von Jens kosten etwa 150 EUR (ohne HolzKabinet!)
und scheinen ziemlich viel Interesse zu finden.
Es gibt inzwischen einige Lösungen - Software und auch Hardware.

Dies hier ist mein Bausatz (die Enigma-E): http://www.cryptomuseum.com/kits/

Es gibt hier auch ein (sehr teures aber zugegeben optisch schönes) Kickstarter-Projekt: https://www.kickstarter.com/projects/43 ... t?ref=live

Oder man baucht die Maschine mechanisch nach: http://www.enigma-maschine.de/projekt oder http://www.enigma.hs-weingarten.de/gallery.htm

Die Enigma-E ist meiner Meinung nach die beste Wahl. Sie ist einigermaßen günstig und funktioniert gut. Und: sie kann Morsen :-)


Gruß
Jens
Wenn du tot bist, dann merkst du das selber nicht. Es ist nur schwer für die anderen. Wenn du blöd bist, dann ist es genauso.
Und: uıɐbɐ ʎɐqǝ uo pɹɐoqʎǝʞ ɐ ʎnq ɹǝʌǝ ɹǝʌǝu ןןıʍ ı

Benutzeravatar
ZX-Heinz
User
Beiträge: 1148
Registriert: 05.12.2011, 14:45

Re: ENIGMA Doku aus Mahlerts

Beitrag von ZX-Heinz » 09.04.2017, 12:34

siggi hat geschrieben:
09.04.2017, 09:49
Roelof hat mir dann per E-Mail seine ganze Enigma-Doku zugeschickt,
Siggi
Roelof hat geschrieben: Die Zeddy Version wurde von ZXHeinz hergestellt, und ueberprueft. Nur
nicht ausgebaut wie ich das mit Spectrum getan habe. Und sicherlich
nicht optimalisiert.
EnigmaDefinitiefverzendDEF.zip
Anmerkung: Die Zeddy-Version EINIGMA.P ist tatsächlich von mir. Läuft z.B. auf dem EightyOne. Nach dem Start Geduld haben: Der Zeddy ist nicht so schnell und muss alles (Walzenemulation usw. ) erst einrichten. Also Geduld, dann kommen die Nachricht.
Gruß, Heinz

Benutzeravatar
siggi
User
Beiträge: 1825
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim
Kontaktdaten:

Re: ENIGMA Doku aus Mahlerts

Beitrag von siggi » 12.04.2017, 12:07

Hallo Heinz
habe mal ein Listing erzeugt und dazu einige Verständnisfrage. Hier aber erstmal das Listing:

Code: Alles auswählen

            10 REM ENIGMA SIMULATION
            12 REM R.KONING 2016
            22 REM INPUTS RED
            23 REM WALZENLAGE: U,D,C,B,A
            25 LET C=2
            26 LET B=1
            27 LET A=3
            34 REM UKW UND 4
            35 LET D=0
            36 LET U=0
            37 GOSUB 6000
            38 GOSUB 9000: REM DO ROTORS
            40 REM RINGSTELLUNG + KERBEN
            48 LET N$="ZWD"
            50 GOSUB 9300
            60 REM STECKERBRETT
            66 LET O$="UI JO RW MV EZ BL PX "
            68 GOSUB 9400
           101 REM GRUNDSTELLUNG
           110 LET T$="FRX"
           115 GOSUB 9510
           142 LET Q$="HCA"
           144 GOSUB 9500
           180 LET Q$="HCALNU QKRQ WUQTZ KFXZO MJFOY RHYZW VBXYS IWMMV WBLEB DMWUW BTVHM RFLKS DCCEX IYPAH RMPZI OVBBR"
           190 CLS 
           191 PRINT Q$
           210 LET T$=""
           215 FOR F=7 TO LEN Q$
           220 LET T$=""
           230 LET I$=Q$(F)
           232 LET H7=0
           234 REM IF I$>"Z" THEN GOTO 240
           235 GOSUB 1000
           242 LET T$=T$+CHR$ H7
           244 PRINT CHR$ H7 AND H7<>0;
           249 NEXT F
           250 PRINT ,,T$
           255 STOP 
           299 
           999 REM  SUBS
          1000 REM THE ROTOR MECHANISM
          1002 LET H7=0
          1005 IF I$=" " THEN RETURN 
          1009 LET POSA=POSA+1
          1010 LET DSTEP=(POSB=KERBB1+1) OR (POSB=KERBB2+1)
          1011 IF DSTEP THEN LET POSB=POSB+1
          1012 IF DSTEP THEN LET POSC=POSC+1
          1013 IF POSA=KERBA1+2 OR POSA=KERBA2+2 THEN LET POSB=POSB+1
          1020 IF POSA>26 THEN LET POSA=1
          1030 IF POSB>26 THEN LET POSB=1
          1040 IF POSC>26 THEN LET POSC=1
          1041 REM POSD UNLIKELY TO GO>26
          1044 REM NOW STECKER
          1045 LET I$=S$(CODE I$-37)
          1049 REM NOW 4 ROTORS + UKW
          1050 LET H7=CODE Z$(CODE Y$(CODE X$(CODE W$(CODE R$(CODE D$(CODE C$(CODE B$(CODE A$(CODE I$-12+POSA)-11-POSA+POSB)-11-POSB+POSC)-11-POSC+POSD)-10-POSD)-12+POSD)-11-POSD+POSC)-11-POSC+POSB)-11-POSB+POSA)-POSA+1
          1060 IF H7<38 THEN LET H7=H7+26
          1064 REM NOW STECKER AGAIN
          1070 LET H7=CODE S$(H7-37)
          1090 RETURN 
          2999 STOP 
          3999 

          5999 REM ROTORS TYPE I UND M4 :1-8
          6000 DIM V$(5,28)
          6001 LET V$(1)="EKMFLGDQVZNTOWYHXUSPAIBRCJ"+"QQ"
          6002 LET V$(2)="AJDKSIRUXBLHWTMCQGZNPYFVOE"+"EE"
          6003 LET V$(3)="BDFHJLCPRTXVZNYEIWGAKMUSQO"+"VV"
          6004 REM  DATA "ESOVPZJAYQUIRHXLNFTGKDCMWB","JJ"
          6005 REM  DATA "VZBRGITYUPSDNHLXAWMJQOFECK","ZZ"
          6006 REM  DATA "JPGVOUMFYQBENHZRDKASXLICTW","ZM"
          6007 REM  DATA "NZJHGRCXMYSWBOUFAIVLPEKQDT","ZM"
          6008 REM  DATA "FKQHTLXOCBJSPDZRAMEWNIUYGV","ZM"
          6100 REM  XROTORS TYPE M4: B,C
          6101 LET V$(4)="LEYJVCNIXWPBQMDRTAKZGFUHOS"
          6102 REM  DATA "FSOKANUERHMBTIYCWLQPZXVGJD"
          6200 REM REFLEKTORS TYPE M4: B,C
          6201 LET V$(5)="ENKQAUYWJICOPBLMDXZVFTHRGS"
          6202 REM  DATA "RDOBJNTKVEHMLFCWZAXGYIPSUQ"
          6300 RETURN 

          9000 REM       SUB
          9019 REM READ WALZENLAGE +KERBS
          9020 REM "A" = RIGHTMOST
          9030 LET A$=V$(A,1 TO 26)
          9035 LET K$=V$(A,27 TO 28)
          9040 LET B$=V$(B,1 TO 26)
          9045 LET L$=V$(B,27 TO 28)
          9050 LET C$=V$(C,1 TO 26)
          9055 LET M$=V$(C,27 TO 28)
          9100 REM READ 4TH + UKW=REFLECTR
          9110 LET D$=V$(4,1 TO 26)
          9120 LET R$=V$(5,1 TO 26)
          9130 REM  RESTORE 6101+D: READ D$
          9131 REM  RESTORE 6201+U: READ R$
          9139 REM CREATE 4 RETURNPATHS
          9140 LET X$=".........1.........2......"
          9142 LET Y$=X$
          9144 LET Z$=X$
          9146 LET W$=X$
          9150 FOR F=1 TO 26
          9152 LET Z$(CODE A$(F)-37)=CHR$ (F+37)
          9154 LET Y$(CODE B$(F)-37)=CHR$ (F+37)
          9156 LET X$(CODE C$(F)-37)=CHR$ (F+37)
          9158 LET W$(CODE D$(F)-37)=CHR$ (F+37)
          9160 NEXT F
          9169 REM MAKE 9 WORK STRINGS
          9170 LET A$=A$+A$+A$
          9172 LET B$=B$+B$+B$
          9174 LET C$=C$+C$+C$
          9176 LET D$=D$+D$+D$
          9178 LET R$=R$+R$
          9180 LET W$=W$+W$+W$
          9182 LET X$=X$+X$+X$
          9184 LET Y$=Y$+Y$+Y$
          9186 LET Z$=Z$+Z$+Z$
          9190 RETURN 
          9244 

          9299 REM       SUB
          9300 REM RINGSTELLUNG DOES INVERTED PRESET:"A"=0, "B"=25, "Z"=1
          9311 LET PREA=(64-CODE N$(3+(LEN N$>3)))*(N$(3+(LEN N$>3))<>"A")
          9312 LET PREB=(64-CODE N$(2+(LEN N$>3)))*(N$(2+(LEN N$>3))<>"A")
          9313 LET PREC=(64-CODE N$(1+(LEN N$>3)))*(N$(1+(LEN N$>3))<>"A")
          9314 LET PRED=0+((64-CODE N$(1))*(N$(1)<>"A") AND (LEN N$>3))
          9326 REM K$= KERBCODE FROM READ   N$= OFFSET RINGSTELLNG
          9330 LET KERBA1=(CODE K$(1)-CODE N$(3+(LEN N$>3)))+(26 AND CODE K$(1)-CODE N$(3+(LEN N$>3))<1)
          9332 LET KERBA2=(CODE K$(2)-CODE N$(3+(LEN N$>3)))+(26 AND CODE K$(2)-CODE N$(3+(LEN N$>3))<1)
          9333 
          9334 LET KERBB1=(CODE L$(1)-CODE N$(2+(LEN N$>3)))+(26 AND CODE L$(1)-CODE N$(2+(LEN N$>3))<1)
          9336 LET KERBB2=(CODE L$(2)-CODE N$(2+(LEN N$>3)))+(26 AND CODE L$(2)-CODE N$(2+(LEN N$>3))<1)
          9342 REM KERBE C =N$(1) AND     ROTOR4 ARE IRRELEVANT
          9350 RETURN 
          9399 REM       SUB
          9400 REM MAKE STECKERBRETT IN S$
          9410 LET S$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
          9415 IF LEN O$<=1 THEN GOTO 9430
          9420 FOR F=1 TO LEN O$ STEP 3
          9422 LET N$=O$(F)
          9424 LET S$(CODE N$-37)=O$(F+1)
          9426 LET S$(CODE O$(F+1)-37)=N$
          9428 NEXT F
          9430 RETURN 

          9498 REM       SUB
          9499 REM DECODE POS. FOR WALZEN
          9500 LET T$=""
          9502 FOR F=1 TO LEN Q$
          9504 LET I$=Q$(F)
          9506 GOSUB 1000
          9507 LET T$=T$+CHR$ H7
          9508 NEXT F
          9509 REM     ENTRY SUB
          9510 REM SET WALZEN IN POS. T$
          9518 LET H2=LEN T$>3
          9520 LET H=PREA+CODE T$(3+H2)-37
          9521 LET POSA=H-26*(H>26)
          9522 LET H=PREB+CODE T$(2+H2)-37
          9523 LET POSB=H-26*(H>26)
          9526 LET H=PREC+CODE T$(1+H2)-37
          9527 LET POSC=H-26*(H>26)
          9530 LET H=PRED+CODE T$(1)-37
          9532 LET POSD=(NOT H2)+(H-26*(H>26) AND H2)
          9550 RETURN 

          9599 
          9999 SAVE "ROELOFENIGMA"
  
Fragen:

Code: Alles auswählen

            23 REM WALZENLAGE: U,D,C,B,A
            25 LET C=2
            26 LET B=1
            27 LET A=3
            34 REM UKW UND 4
            35 LET D=0
            36 LET U=0
Wie kommt man da zu den Werten? Was ist 0, bzw 1,2,3?

Code: Alles auswählen

          5999 REM ROTORS TYPE I UND M4 :1-8
          6000 DIM V$(5,28)
          6001 LET V$(1)="EKMFLGDQVZNTOWYHXUSPAIBRCJ"+"QQ"
          6002 LET V$(2)="AJDKSIRUXBLHWTMCQGZNPYFVOE"+"EE"
          6003 LET V$(3)="BDFHJLCPRTXVZNYEIWGAKMUSQO"+"VV"
          6004 REM  DATA "ESOVPZJAYQUIRHXLNFTGKDCMWB","JJ"
          6005 REM  DATA "VZBRGITYUPSDNHLXAWMJQOFECK","ZZ"
          6006 REM  DATA "JPGVOUMFYQBENHZRDKASXLICTW","ZM"
          6007 REM  DATA "NZJHGRCXMYSWBOUFAIVLPEKQDT","ZM"
          6008 REM  DATA "FKQHTLXOCBJSPDZRAMEWNIUYGV","ZM"
          6100 REM  XROTORS TYPE M4: B,C
          6101 LET V$(4)="LEYJVCNIXWPBQMDRTAKZGFUHOS"
          6102 REM  DATA "FSOKANUERHMBTIYCWLQPZXVGJD"
          6200 REM REFLEKTORS TYPE M4: B,C
          6201 LET V$(5)="ENKQAUYWJICOPBLMDXZVFTHRGS"
          6202 REM  DATA "RDOBJNTKVEHMLFCWZAXGYIPSUQ"
          6300 RETURN 
          
         
Was haben die "REM DATA" mit den "V$-Zuweisungen" zu tun? Ich sehe da keinen Zusammenhang.
Das sind wohl die Codierungen der 4+1 Walzen, oder? Wo steckt denn die Codierung für Hinweg und die für den Rückweg (nach der Umkehrwalze) drin? Oder ist der identisch?
Diese Zeilen müssen wohl angepaßt werden, wenn die Reihenfolge der Walzen oder die Walzen selbst geändert werden. Richtig?

Habe ich das richtig verstanden, daß bis Zeile 180 alles die Grundeinstellung der Maschine ist und bei Zeile 180 der verschlüsselte Text eingegeben wird und danach die Entschlüsselung beginnt?

Code: Alles auswählen

           180 LET Q$="HCALNU QKRQ WUQTZ KFXZO MJFOY RHYZW VBXYS IWMMV WBLEB DMWUW BTVHM RFLKS DCCEX IYPAH RMPZI OVBBR"

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

roko
User
Beiträge: 127
Registriert: 13.03.2008, 16:02
Wohnort: Groningen Holland

Re: ENIGMA Doku aus Mahlerts

Beitrag von roko » 12.04.2017, 14:12

Was ich anbringen kann:

Wenn der 'D' (vierte) Walze und dabei gehoerende 'U' Umkehrwalze beide 0 oder beide 1 sind dann benimmt die 4-Walzen Maschine sich als 3-Walzen Maschine mit entweder UKW 0 oder 1.
Diese Moeglichkeit war damals schon vorgesehen so dass 4W-er auch als 3W-er kommunizieren konnten, man bemerkt dann kein Unterschied

Die StringData Zeilen folgen genau die originelle Verdrahtungen, man wahlt 3 aus 5, oder 4 aus 8. (und noch UKW)
Deswegen die vielen DATA Zeilen, die waren schon da weil Spectrum ja einfach mit RESTORE und READ anzeigen und einlesen kann.
Fuer den Rueckweg werden 'umgekehrte' Kopien der $trings verwendet welche hergestellt worden (Zeile 9139) sobald die Walzen gewahlt worden sind.

Zeilen 180-255 versorgen Input aus Q$, Verarbeitung pro Buchstabe (GOSUB 1000), und Output in T$.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot], tokabln und 4 Gäste