Booten vom Stahl-Lochstreifen
Was passiert, wenn man die Maschine während des Lesens oder während des Zurückspulens abschaltet?
Booten vom Stahl-Lochstreifen
Was passiert, wenn man die Maschine während des Lesens oder während des Zurückspulens abschaltet?
Booten vom Stahl-Lochstreifen
Was passiert, wenn man die Maschine während des Lesens oder während des Zurückspulens abschaltet?
Per Netzschalter? Geht nicht, während des Transports wird der Einschalter überbrückt
Beim Stecker ziehen: Maschine öffnen und den Mechanismus von Hand auf Rückspulen schalten. Danach aus- und wieder einschalten.
Kurze Zwischenfrage: kann man noch irgendwo 100mm Rollenpapier kaufen? Ich bin bei Google nicht fündig geworden!
Ich habe hier 3 Rollen Normalpapier liegen. 100mm breit, Rolle außen 74mm, Kern hat ein Kernloch von 11mm und (Kunststoff)Kern selbst hat 15mm. Im Kern ist eine Führungsnut, mit blossem Auge gemessen ca. 0,7mm im Quadrat
Wusste nie, für was die gut sind (da ich bei google auch nichts gefunden hatte)
würdest du die Rollen loswerden wollen?
Kurze Frage in die Runde... ich bin gerade dabei, zu verstehen, wie die gespeicherten Befehlssequenzen in BCD-Binärcodes übersetzt werden... irre...
Ein Programm P0 1 x 1 = # A (Multiplikation zweier Zahlen mit zusätzlicher Druckausgabe) führt zur Zahlensequenz
371 999 298 977 792
Ein Programm P0 1 : 1 = # A (wie oben, nur mit Division) fürhrt zu
368 700 762 882 048
Beide Programmsequenzen sind nicht mal annähernd ähnlich.
Auch das Übersetzen in 5-Bit-Häppchen hat mich nicht weitergebracht...
Wie kommt die Diehl auf diese Werte? Und wieso reichen die BCD-Werte aus? Binärzahlen über 9 können ja hier nicht auftreten...
Ich würde es gerne verstehen...
Wie kommt die Diehl auf diese Werte? Und wieso reichen die BCD-Werte aus? Binärzahlen über 9 können ja hier nicht auftreten...
Ich würde es gerne verstehen...
Die von lgp30 hier irgendwo erwähnte Bachelorarbeit Entwicklung einer Programmierhilfe für die Diehl Combitron hast Du Dir schon angeschaut?
hast Du Dir schon angeschaut?
Ja, mehrfach. Ich habe mich auf die dort dokumentierte Mnemonic-Liste konzentriert - kann aber trotzdem kein sinnvolles Muster erkennen.
Das, was man als Benutzer programmiert, sind keine Maschinenbefehle, sondern nur Tastencodes. Wenn ich mich jetzt nicht täusche, werden quasi die "Scancodes" abgelegt, und das Tischrechnerprogramm, also die Firmware, die vom Lochstreifen gelesen wird, interpretiert diese entsprechend. Der Diehl Dilector macht auch nichts anderes, als von außen Tastencodes in die Maschine zu prügeln. Genauer weiß ich es ehrlich gesagt nicht, das ist schon zu lange her.
Man kann beides: Tastencodes durch Tippen des Rechenablaufs einprogrammieren, die werden dann in Assembler umcodiert - oder aber direkt die Maschinensprachesequenz in den P-Speicher reintippen...
BCD auf meinen Rechner war vier bit pro Ziffer
Das war mir klar. BCD ist immer 4 Bit pro Ziffer - aber: mit BCD lassen sich nicht alle Bitkombinationen darstellen, A-F fehlen nämlich.
Die Maschinensprachebefehle bei der Combitronic sind offensichtlich 5 Bit lang... dafür gibt es auch eine Liste.
15*4 Bit im P0 sind ja bekanntlich 60 Bit, die dann auch 12*5 Bit wären - also max. 12 Maschinencodes in P0.
Sind die Maschinencodes so geschickt gewählt, dass die Binärcodes 1010, 1011, 1100, 1101, 1110 und 1111 nicht vorkommen können?
Ich würde das so gerne verstehen...
Alles anzeigenBCD auf meinen Rechner war vier bit pro Ziffer
Das war mir klar. BCD ist immer 4 Bit pro Ziffer - aber: mit BCD lassen sich nicht alle Bitkombinationen darstellen, A-F fehlen nämlich.
Die Maschinensprachebefehle bei der Combitronic sind offensichtlich 5 Bit lang... dafür gibt es auch eine Liste.
15*4 Bit im P0 sind ja bekanntlich 60 Bit, die dann auch 12*5 Bit wären - also max. 12 Maschinencodes in P0.
Sind die Maschinencodes so geschickt gewählt, dass die Binärcodes 1010, 1011, 1100, 1101, 1110 und 1111 nicht vorkommen können?
Ich würde das so gerne verstehen...
Wer sagt, dass die Zahlen in BCD gespeichert werden? Ich glaube mich düster daran zu erinnern, dass bei der Eingabe der Ziffern der alte Wert *10 genommen wird und die neue Ziffer dazuaddiert wird. Also schlußendlich werden die Zahlen normal im Dualsystem gespeichert. Die Zahl 9.999.999.999.999.999 wird als 1000.1110.0001.1011.1100.1001.1011.1111.0000.0011.1111.1111.1111.11 gespeichert, das sind 54 Bits, plus Vorzeichen. Vermutlich stammt daher die Wortbreite von 55 Bits.
Und zumindest auf der Combitron kann man keine Maschinenbefehle von außen eingeben. Das muss über das interne Lochstreifeninterface passieren.
das sind 54 Bits, plus Vorzeichen. Vermutlich stammt daher die Wortbreite von 55 Bits.
Klingt plausibel!
Sind die Maschinencodes so geschickt gewählt, dass die Binärcodes 1010, 1011, 1100, 1101, 1110 und 1111 nicht vorkommen können?
Ich würde das so gerne verstehen...
Zumindest dabei kann ich dir helfen: Dieses PDF vom FTP Server der Uni-Stuttgart hat die Maschinencodes, nämlich
Kurzbefehle
00000 NUL keine Operation
00001 T1 C = Leitung K1
01000 T2 C = Leitung K2
01001 T3 C = Leitung K3
10000 T4 C = Leitung K4
10001 T C = Leitung K5
00010 T6 C = Leitung K6
00011 e1 Wiederladen von Band
01010 e2 Druckersteuerung auf jeweiliger Leitung
01011 e3 Druckersteuerung auf jeweiliger Leitung
10010 d Decrement
10011 c Loeschen /IP in der R-Delay-Line
00100 + Addieren: A, C, +1rP
00101 - Subtrahieren: A, C, +1rP
00110 b Bringe P
00111 r Abspeichern P
01100 x exchange
01101 s shift
01110 p1 Druckersteuerung auf jeweiliger Leitung
01111 /r Abspeichern /P
Doppelbefehle
10100 C Conditional Fill
10101 F Fill (unconditional)
10110 B Bringe P (doppelt)
10111 R Abspeichern P (doppelt)
Langbefehle
11000 W1 wait 33-64 R-cycles
11001 W0 wait 1-32 R-cycles
11010 S1 shift 33-64 R-cycles
11011 S0 shift 1-32 R-cycles
11100 D1 divide
11101 D0 divide
11110 M1 multiply
11111 M0 multiply
Alles anzeigen
Also kommen 1010, 1011, 1100, 1101, 1110 und 1111 alle vor.
(Dieses Dokument liest sich übrigens besser als die Bachelorarbeit).
Ansonsten verstehe ich nicht, wie du die "Programme" eingibst, und wie daraufhin diese Zahlen entstehen. Drückst die die Tasten, und die Kiste druckt dann die Zahl aus? Oder was genau hast du da gemacht?
Alles anzeigenEin Programm P0 1 x 1 = # A (Multiplikation zweier Zahlen mit zusätzlicher Druckausgabe) führt zur Zahlensequenz
371 999 298 977 792
Ein Programm P0 1 : 1 = # A (wie oben, nur mit Division) fürhrt zu
368 700 762 882 048
Beide Programmsequenzen sind nicht mal annähernd ähnlich.
Und auch wenn ich immer noch nicht genau weiß, wo die Zahlen herkommen: Wenn man sie nicht als BCD, sondern als Dezimalzahlen ansieht, und ins Binäre konvertiert, bekommt man
371999298977792 = 1010100100101010011010110000100101000000000000000
368700762882048 = 1010011110101010011010110000000000000000000000000
Da gibt es in der Mitte nun durchaus Ähnlichkeiten, deshalb tippe ich darauf, dass es nicht BCD, sondern Dezimal ist.
Vielen Dank für eure Hilfe und für eure Gedanken - es war offensichtlich zielführend!
Ich habe diverse Programmabläufe analysiert, die Dezimalen Werte in Binärzahlen konvertiert und dann in Fünfergruppen geteilt:
J0 A
40681930227712
00000.00001.00101.00000.00000.00000.00000.00000.00000.00000.00000
J1 A
41781441855488
00000.00001.00110.00000.00000.00000.00000.00000.00000.00000.00000
J2 A
42880953483264
00000.00001.00111.00000.00000.00000.00000.00000.00000.00000.00000
J3 A
43980465111040
00000.00001.01000.00000.00000.00000.00000.00000.00000.00000.00000
J4 A
45079976738816
00000.00001.01001.00000.00000.00000.00000.00000.00000.00000.00000
CHGSGN CJ7 J2 A
214818392899584
00000.00110.00011.01100.00001.00111.00000.00000.00000.00000.00000
+ KRD1 - * CJ6 A
459817356722176
00000.01101.00010.00110.01110.01001.00011.01011.00000.00000.00000
KRD2 KWR1 KRD0 : KRD1 + A
78209279822029
00000.00010.00111.00100.00110.00010.00101.01111.00010.00110.01101
KRD2 = + + * KWR3 A
78732565028864
00000.00010.00111.10011.01101.01101.01001.00100.01000.00000.00000
NUM # KWR0 KWR2 * KRD2 : A
364081298311407
00000.01010.01011.00100.00101.00100.00111.01001.00010.00111.01111
NUM + NUM + * # J0 A
366495241638912
00000.01010.01101.01010.01101.01001.01011.00001.00101.00000.00000
NUM + NUM - * # J0 A
366496315380736
00000.01010.01101.01010.01110.01001.01011.00001.00101.00000.00000
Alles anzeigen
Die 55 Bit pro Register teilen sich in 11 5-Bit-Worte auf. Das erste Wort ist offensichtlich immer 00000 (NOP), nicht benutzte Befehle rechts werden mit NOPs aufgefüllt. Das erklärt auch, warum ohne Jump einfach mit dem nächsten Programmregister weiter gemacht wird.
Tastaturcodes entsprechen nicht den Assemblercodes!
Hier mal der Unterschied zwischen + und -...
NUM + NUM - * # J0 A
366496315380736
00000.01010.01101.01010.01110.01001.01011.00001.00101.00000.00000
NOP NUM + NUM - * # JMP P0 NOP NOP
NUM + NUM + * # J0 A
366495241638912
00000.01010.01101.01010.01101.01001.01011.00001.00101.00000.00000
NOP NUM + NUM + * # JMP P0 NOP NOP
Daraus ergeben sich die bisher gefundenen OPCODES:
CODE FUNCTION ADDRESS
===========================================
00000 NOP
00001 JMP(ADDR)
00010 KRD(ADDR)
00011 CJMP(ADDR)
00100 KWR(ADDR)
00101 0
00110 CHGSGN 1
00111 2
01000 3
01001 * 4
01010 NUM (Zahleneingabe) 5
01011 # 6
01100 7
01101 +
01110 -
01111 :
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Alles anzeigen
... freut mich, das du das gute Stück wider hinbekommen hast.
Nachdem ich das Video gesehen habe, habe ich auch verstanden, was du da tust (denn dazu hatte ich noch keine Dokumentation gefunden):
Offenbar kann man 10 "Programme" eingeben mit P + Nummer eingeben, und sie dann ausführen, wobei Zahlen bei der Programmierung nur Platzhalter sind, die dann bei der Ausführung durch neu eingebenene Zahlen (mit A) ersetzt werden.
Das ist also so eine Art "Makro"-Programmierung, und verschieden von der eigentlichen Maschinensprache. Vermutung: Ein Programm wird jeweils in einem Wort gespeichert, ein Programm kann also nicht länger als 11 Schritte sein.
Die platzsparendste Art, das im "Betriebssystem" zu implementieren, wäre, die gleiche Auswertungsroutine, die Tasten im normalen Betrieb auswertet, mit dem Programm zu füttern. Das geht am einfachsten, wenn man die Tastencodes selbst speichert. Ich würde also vermuten, dass deine 5-Bit-Befehle mit den Tastencodes korrelieren, und es ein paar Zusatz-Codes gibt, wie "Num".
Leider haben die Combitron-Varianten verschiedene Tastaturen, mit kann also die Tastencodes der Tastaturmatrix aus den vorliegenden Anleitungen nicht übernehmen. Es sollte aber nicht schwer sein, die Tastaturleitungen K1..K6 mal schnell für alle Tasten durchzumessen, und so die Codes der Tasten zu ermitteln.
Bei der Combitron ist K1 immer 0 für das Dezimalrad und 1 für die eigentlichen Tasten, daher muss man nur K2..K6 als 5 Bits speichern, wenn das bei der Combitronic genauso ist.
Wenn man das alles nachvollziehen will, muss man sich das "Betriebssystem" auf dem Metallband genauer anschauen. Es wäre also nicht falsch, davon mal einen Dump zu machen, ist ja nur ein Bit. Das eine Bit kann man ggf. auch von der Lichtschranke über einen Pegelwandler an den Soundeingang des PCs hängen, beim Bootvorgang der Combitronic eine WAV-Datei aufnehmen und dann mit einem kleinen Programm auslesen, wenn du nicht sowieso einen Logikanalysator oder so etwas hast. (Wäre auch dann sinnvoll, wenn das Metallband irgendwann kaputtgeht, und man ein neues machen muss...)
Nur so als Anregungen.
Habt ihr keine Doku zur Maschine? Dann sollte ich die mal einscannen. Es sind auch mehrere Leitz-Ordner mit Programmbeispielen bzw. Unterroutinen vorhanden.
Habt ihr keine Doku zur Maschine? Dann sollte ich die mal einscannen. Es sind auch mehrere Leitz-Ordner mit Programmbeispielen bzw. Unterroutinen vorhanden.
Zumindest ich nicht... Und auf ftp://ftp.informatik.uni-stuttgart.de gab's im wesentlichen Service-Manuals usw.
Und um weiterzuspekulieren: Wenn die Programme so eine Art Makro-Programm sind, braucht man auch einen Programmzähler. Wenn man das Wort in 5-Bit-Häppchen unterteilen muss, geht das am einfachsten, wenn man den am Anfang des Wortes zur Hand hat, und dann eine geeignete Shift/Verzögerung einbaut.
Deshalb vermute ich, dass die fünf "NOP" Nullen am Anfang des Programmes den Programmzähler enthalten, denn also fauler Programmierer hätte ich ihn dorthin getan.
Zumindest ich nicht... Und auf ftp://ftp.informatik.uni-stuttgart.de gab's im wesentlichen Service-Manuals usw.
Ich weiß, ist ja unser FTP-Server Ok, dann setze ich die Manuals mal auf die Zu-Scannen-Liste
Zumindest ich nicht... Und auf ftp://ftp.informatik.uni-stuttgart.de gab's im wesentlichen Service-Manuals usw.
Ich weiß, ist ja unser FTP-Server Ok, dann setze ich die Manuals mal auf die Zu-Scannen-Liste
Ich weiß, dass es euer Server ist, ich wollte nur mit dem Zaunpfahl winken...
Der Server macht übrigens nur noch FTP und nicht mehr HTTP wie früher, ist das Absicht? Filtert natürlich die Leute, die darauf zugreifen können/wollen...
Aus dem Ber
ZitatOben rechts neben MEM 5111 befindet sich ein unscheinbares Metall-IC - auch von GI. Hier drin befindet sich vermutlich das Äquivalent zum separaten kleinen Laufzeitspeicher der Combitron (R-Delay-Line, 218 Bit Kapazität, Registerspeicher) in Form eines 218-Bit-Halbleiter-Schieberegisters.
Ist die Dose ein 1404?
Habe an das Ding nostalgische Erinnerungen.
Das Speicherboard mit Dutzenden dieser Dinge aus dem Textsystem von 1973 um eine IBM Selectric herum, welches ich 1984 für 100 DM gekauft hatte, um die Schreibmaschine am PC als Drucker zu verwenden, hatte ich erst vor ein paar Jahren weggeworfen.
hatte ich erst vor ein paar Jahren weggeworfen
Ich hoffe, du hattest nur die Idee weggeworfen...
hatte ich erst vor ein paar Jahren weggeworfen
Ich hoffe, du hattest nur die Idee weggeworfen...
Nein, wirklich... seinerzeit hatte ich alle Karten des Systems, die nach der Modifikation (Einbau eines Parallelinterfaces zum PC) funktionslos geworden waren, entfernt und als TTL-Lager genutzt. 1984 war das Teil ja noch kein Dutzend Jahre alt, keineswegs schon "Retro".
Die Speicherkarte mit den vielen 1404er-Dosen war richtig hübsch, die habe ich erst in den 2010ern weggeworfen.
Die Schaltunterlagen hierzu habe ich In meinem Schmierpapierstapel getan und eben die Angaben zum 1404 gesucht und wiedergefunden. Das Textsystem hiess "ASINT-Scribona", falls das jemandem was sagen sollte.
Ich weiß, dass es euer Server ist, ich wollte nur mit dem Zaunpfahl winken...
Der Server macht übrigens nur noch FTP und nicht mehr HTTP wie früher, ist das Absicht? Filtert natürlich die Leute, die darauf zugreifen können/wollen...
Zaunpfahl angekommen
Nein, der hat noch nie HTTP gemacht. Die Files waren immer schon nur per FTP erreichbar. Ich hab mir überlegt, zusätzlich einen HTTP-Zugang einzurichten, war aber zu faul Aber es hatte zumindest früher, und heute evtl. noch mehr, auch den Grund, tatsächlich zu filtern, allerdings eher die Suchmaschinen und Saugroboter.
der Speicher ist kein 1404, er hat ja auch 10 Pins. Dieser Speicher hier dürfte ein kundenspezifisch maskenprogrammiertes 288 Bit Schieberegister sein. GI hat in der Zeit sowas angeboten.
Der Server macht übrigens nur noch FTP und nicht mehr HTTP wie früher, ist das Absicht? Filtert natürlich die Leute, die darauf zugreifen können/wollen...
Früher konnten die Browser einfach noch FTP...