1. Aktuelles
Projekt
|
DEC RL02 Simulator |
|
Wie schon Eingangs erwähnt geht es mir bei diesem Projekt um die Erhaltung der Software. Die Software ist allerdings direkt abhängig von dem einwandfreien Zustand des Storage Laufwerks, in diesem Fall eine DEC RL02. Das damals ( ~1980 ) erschienene RL02 Laufwerk entpuppte sich als ALLROUND-Laufwerk und war durchgehend auf allen DEC System-Plattformen vertreten, wie PDP-8, PDP-11, VAX mit den Betriebs Systemen OS-8, RT-11, RSX-11, MUMBS, RSTS und VMS. Dies war der Hauptgrund warum ich mich für die Simulation dieses Laufwerks entschieden hatte. Diese Laufwerke stehen nicht mehr lange funktionsfähig zur Verfügung. Die meisten Laufwerke funktionieren leider eh nicht mehr. Ersatzteile gibt es sowieso nicht mehr und so muss man mit großem Zeitaufwand aus vielleicht 3 defekten Laufwerken ein funktionierendes Laufwerk bauen. Auch an den Datenträgern nagt die Zeit, denn die Magnetschicht unterliegt auch der Alterung und die Daten werden bald nicht mehr zur Verfügung stehen. Read-Error und zu viele Bad Blocks sind die typischen Symptome. Um das Projekt überhaupt starten zu können benötigte ich die dementsprechende Hardware, welche mir das Computer-Museum in München ( http://www.computermuseum-muenchen.de/ ) zur Verfügung stellte. Eine Micro-PDP-11 mit 11/23+ CPU + RLV-12 Controller und eine RL02, welche ich wieder so einigermaßen instand setzen konnte. Vielen Dank an Hr. DR. John G. Zabolitzky und Hr. Wolfgang Kainz-Huber. Projektstart war September 2009. Da ich eine Wissenslücke seit 1995 von gut 15 Jahren hatte, mußte ich mich Stück für Stück auf die neue Technologie umstellen, wie C-Programmierung auf ARM-7 CPU's. Das war nicht einfach für mich. Ein Video von Fritz Weld zeigt ein RL02-Laufwerk in Aktion: RL02-in-action Das Projekt startete. Meine Motivations Gründe für dieses Projekt ist sicherlich auch Nostalgie, die Liebe zu den Computer-Oldtimer und auch die Herausforderung, etwas zu realisieren, was es weltweit noch nicht gibt.
In eigener Sache: Da ich dieses Projekt ausschliesslich in meiner Freizeit durchführe und somit leider nicht kontinuierlich daran arbeiten kann , gibt es immer wieder Verzögerungen. Für jeden Hinweis bin ich deshalb sehr dankbar. |
|
Meine aktuelle Entwicklungsumgebung in meinem Arbeitszimmer ist im folgenden Bild sichtbar. Das RL02 Laufwerk wurde aus Platzgründen buchstäblich an die Wand geschraubt. Immerhin fast 40Kg schwer. Darunter ist das Scope und meine PDP-11/23SE ( Kapitel 5 ) zu erkennen. Nicht zu sehen auf diesem Bild ist die Micro-PDP-11 zwischen Schreibtisch und PDP-11/23SE. Die Simulator Hardware ist auf den Schreibtisch zu erkennen. |
Die wichtigsten Spezifikationen des RL02 Laufwerk
|
Physical Specification |
19 inch RETMA Rack compatible Depth: 63.5 cm , Height: 26.5 cm Weight: 34 kg ( emty ) |
|
Generel |
Linear bit density: 147 Bits/mm Number of sectors: 30/track Number of recording tracks: 512/surface, Number of Surface:2 Encoding method: MFM |
|
Transfer Rate |
4.1 magabits/sec +/- 1% , Bit Cell With: 244 nsec , Words(16 bit): 256 kilowiords/sec +/- 1% |
|
Seek Time |
Average: 55 msec ( 120 tracks ) One cylinder track 4 msec max seek time. |
Detaillierte Infos bei : RL02-Dokumentation
|
Hier noch ein Bild aus anderem Blickwinkel mit sichtbare Micro-PDP-11. |
|
Der Aufbau begann im September 2009. Zuerst musste ich ein spezielles, 40 poliges Flachbandkabel anfertigen für die Verbindung zwischen RLV-12 Controller und dem RL02 Laufwerk mit einen zusätzlichen Connector für die Hardware des RL02 Simulator um sich quasi in den RL02-Bus einzuhängen. Das Design des RL02-Bus beruht auf einer Differential Bus Architektur mit +/- 5 Volt, jeweils 6 Signale für beide Richtungen . Ich fand keinen vernünftigen Ersatz für die nötigen Bus Receiver/Transmitter Chips und hatte erst mal große Mühe, die Original Chips vom Typ 75113 und 75107 aufzutreiben. Letztendlich ist mir dies dann doch gelungen und ich baute eine Schaltung in Wire-Wrap Technik auf . Ein zusätzlicher DC/DC Konverter war dazu auch noch erforderlich um die benötigen +/- 5Volt zu erhalten. Somit konnte ich erstmal die Signale auf TTL-Level für Messzwecke mit Scope und für die weitere Verarbeitung konvertieren. Der Aufbau ist im folgenden Bild ersichtlich. Oben ist der 40-polige Connector für den RL02-Bus. |
|
|
|
A) Im Überblick ist hier die gesamte Entwicklungs-Hardware zu sehen. Oben links ist das QL200 PIC-MCU Development Board zu sehen. Es war der erste Versuch. Allerdings stellte sich sehr schnell heraus, daß eine PIC 16Bit MCU vollkommen unzureichend war für dieses Projekt. Das Programmieren in Assembler mit dem Integrated Development Environment MPLAP von Fa. MICROCHIP war für mich kein Problem und es zeigte sich sehr schnell, daß der Durchsatz und die Bandbreite mit 8 Bit nicht ausreichten. Fehlinvestition für dieses Projekt , aber es ging weiter.... |
|
|
|
... und hier sind alle 3 aktiv benützen und verkabelten Komponenten zu sehen ( Stand FEB 2010 ): |
|
|
|
B) Im Oktober 2009 war ich dann in der Entscheidungs- Phase, welche MCU ich benützen soll Nach langem Recherchieren habe ich mich dann für das LPC-P2148 Development Board von Fa. OLIMEX entschieden. Dieses Board arbeitet mit einer MCU: 16/32 bit ARM7TDMI-S™ ( Fa. Philips ) with 512K Bytes Program Flash, 42K Bytes RAM, USB 2.0, RTC, 10 bit ADC 2.44 uS, 2x UARTs, 2x I2C, SPI, 2x 32bit TIMERS, 6x PWM, 8x CCR, 1x DAC, WDT, 5V tolerant I/O, up to 60MHz operation. Dieses Board ist Ideal für den Einstieg gewesen und bestens für die Entwicklungsphase geeignet. Im Endausbau wird es dann wohl ein Board wie z.B. das LPC-H2294 werden. Im folgenden Bild ist mein LPC-P2148 Bord zu sehen mit zusätzlichen 16 Leuchtdioden um den Datentransfer, welchen ich mit 16 Bit realisierte zu überwachen und zu testen. |
|
|
|
C) Nun ging es eher zäh weiter. Die Software Entwicklungs-Umgebung musste aufgesetzt werden ( Siehe 1.4 ) und die Hardware des RL02 Simulator musste Stück für Stück entwickelt werden. Im ersten Schritt entwickelte ich eine Schaltung um das Command-Register des RL02-Laufwerks auszulesen, da es die Basis für alles Weitere ist. Da ich noch von der „Alten Schule“ bin, bzw. damals war, realisierte ich dies mühevoll mit Wire-Wrap Technik und Lötkolben. Die Schaltung funktionierte letztendlich und der Aufbau ist im folgenden Bild ersichtlich. Die Schaltung dazu ist hier einsehbar: Schaltung-Command-Register |
|
|
|
D) Der bisher größte Durchbruch bei diesem Projekt: FPGA. Ich selbst als „Oldi“ verweigerte mich sehr lange diese neue Technologie einzusetzen und im Nachhinein ärgere ich mich , weil ich diesen Schritt nicht früher gemacht hatte. Ich war jetzt voll in der embedded systems Welt angekommen. Und es ging zügig weiter. Ich entschied mich für den MAXII-FPGA von Fa. ALTERA . Dieser FPGA befindet sich komfortabel vor-montiert auf einen MAXII-Micro-Kit-Board inklusive USB Blaster von Fa. Terasic Technologies Inc , bezogen von Fa. Digi-Key . Mit der mitgelieferten Quartus II 9.1 Web Edition Software von Fa. ALTERA kann ich nun in einen Bruchteil der Zeit eine Schatung entwickeln. Das Micro-Kit-Board habe ich Steck-Kompatibel zur obigen TTL-Schaltung aufgebaut und ist im folgenden Bild ersichtlich: |
|
|
Resümee:
Ich brauch nicht mehr Löten und Wire-Wrap fädeln !
|
Environment:
Für das Programmieren der Entwicklungsumgebung aus Kapitel 1.3. benütze ich einen Laptop mit Windows XP. Die serielle Schnittstelle ist mit dem LPC-P2148 Development Board , RS232-0 verbunden, um die HEX-Dateien herunterzuladen. Über einen 4-Port USB-HUB und 2 USB/Serial-Konverter ist die Console der Micro-PDP-11 und die RS232-1 Schnittstelle des LPC-P2149 Board verbunden. Die verbleibenden 2 USB-Ports sind mit dem Micro-Kit-Board und dem QL200 PIC-MCU Development Board verbunden. Da mein Laptop schon in die Jahre gekommen ist, lasse ich die Quartus II 9.1 Web Edition Software von Fa. ALTERA für die Programmierung des FPGA auf meinen Quad-Core PC unter Windows-Vista laufen, welcher über ein Netzwerk Laufwerk mit meinen Laptop verbunden ist. Der Laptop wird somit beim Programmieren des FPGA in meinem Fall meistens nur für das Flashen des FPGA benützt.
|
|
Software:
Meine gesamte Software Umgebung für die ARM-7 Programmierung ist “Free Software“, basierend aus dem GNU Compiler Collection ( GCC ) Bereich. Meinen Laptop habe ich nach vielen Hin und Her und Ausprobieren mit folgenden Tools in folgender Reihenfolge installiert, was dann auch zum Erfolg führte. Zuerst das Dev-C++ Integrated Development Environment (IDE) installieren. Als nächstes benötigt man die Cygwin Umgebung, um mit Unix Commandos arbeiten zu können. Nun braucht man noch den arm-none-eabi-gcc C-compiler für den ARM7. In der Cygwin Umgebung ist leider kein der make Utility dabei. Ich benütze das mingw32 Utility, läuft ohne Probleme. Das Flash-Tool von Philips sollte die Version 2.2.3 beim Einsatz des LPC-P2148 Board sein ( Flash-Utility-Doku ). Die Programmierung des MAXII-Micro-Kit-Board erfogt mit der Quartus II 9.1 Web Edition Software von ALTERA. Die Neue Version 9.1 ist ohne Probleme vom ALTERA Online-Update-Service zu beziehen. Diese Version läuft ohne Probleme auf meinen Windows-Vista 64Bit System. |
|
Block diagram: |
|
|
|
Aufbau der gesamten Entwicklungsumgebung basierend auf der ARM-7 MCU und MAXII FPGA
|
|
|
|
September 2010 : Neues DE1 Board mit Cyclone® II FPGA. ARM-7 wird durch NIOS MCU abgelöst.
|
|
|
|
Action |
Timeframe |
Status |
|
Install , repair and recover Micro-PDP-11 + RL02 disk drive. |
SEP-2009 |
DONE |
|
Hardware engineering of the RL02 Receive/Transmit Bus-Board based on TTL-logic. --> 1.2 |
SEP/OKT-2009 |
DONE >> Able to monitor/watch the RL02-Bus signals via scope. |
|
Test with PIC MCU's --> 1.3-A) |
OKT-2009 |
DONE, = not useable. |
|
Implementation of ARM-7 MCU based on LPC2148 development board. --> 1.3-B) |
OKT-2009 |
DONE |
|
Development of the Software environment. --> 1.4 |
OKT-2009 - JAN-2010 |
DONE |
|
Hardware engineering, prototype = TTL based logic board to be able to receive and read the RL02 Command Register. Writing C-code for ARM-7 MCU. --> 1.3-C) |
NOV-2009 to JAN-2009 |
DONE
|
|
Installing and customizing MAXII FPGA Hardware + Software + I/O Tests to be able to verify data flow RL02-FPGA-ARM-7 --> 1.3-D) |
DEZ-2009 to JAN-2009 |
DONE
|
|
Design FPGA schematic circuit diagram and write C-Code to be able to receive RL02 Command-Register and send Status-Word. |
FEB-2010 to APR-2010 |
DONE |
|
Install and setup RT-11 environment to be able to write FORTRAN, BASIC or MACRO-11 assembler programs. |
APR-2010 to MAI-2010 |
DONE |
|
Implement Sector-Puls generator running in FPGA |
APR-2010 |
DONE |
|
New investment necessary : Logic Analyser. |
MAI-2010 |
DONE |
|
Implement MFM Decoder running in FPGA. ( 1 of 2 major problem ) |
MAR-2010 to MAI- 2010 |
DONE |
|
Implement MFM Encoder running in FPGA. ( 2 of 2 major problem ) |
MAI-2010 |
Ongoing (most = done ) |
|
Write C-code for the ARM-7 MCU to get access to the SD-card. Fake the RL02 data structures concerning sector size/header and CRC checking. |
FEB-2010 |
Ongoing |
|
Up-to-date
status , 27-MAI-10 : |
|
Implement data transfer, either per Sector oder per Track Financial problem: Investment of new Hardware!
|
?? ?? ?? |
Testing started
I would need a sponsor
|
|
During the summertime of 2010: My last attempt based on the MAXII and ARM-7 environment: The idea was to read one or two ( HEAD-0 and HEAD-1 ) complete tracks into the memory of the ARM-7 MCU. One track contains 40 sectors and one sector contains 280 Bytes, = 11200 Bytes per track x 2 = 22400 Byte ( HEAD-0 and HEAD-1 ). The available Memory on my used ARM-7, LPC2148 is 42K Bytes RAM and this would be enough to hold 2 tracks in the ARM-7 memory. Next step would be to save all tracks on a SD-Card which results in a RL02-like formated SD-Card. This would be an ideal starting point for a much simpler implementation because we have not to take care about Header+CRC sector structures. Sorry, but I was not able to solve this challenge with the current used environment. More details can be gathered from chapter 1.6 and any input/hints to this issue is very welcome. |
|
Up-to-date status, 20-AUG-10: I
made another investment with the following
product: |
|
The following picture shows the new DE1 board based on Cyclone® II from Altera. To be able to connect the RL02 bus-signals to the DE1 board an new adapter board must also be developed and is visible in the right part. |
|
|
|
Implement new environment and replace ARM C-Code by NIOS
C-Code. |
SEP-2010
OCT-2010 |
EXIT |
|
|
|
I could solve the problem as described above by replacing the DC005 and the DC004 Q-Bus chips. Unfortunately, an error has happened to me when soldering and now I have contact problems. The RLV-12 controller does not always work and sometimes I have to replug it several times until I can continue to work. This handicaps me in my work very much and I am continuous searching for a replacement. Again, any help is welcome |
|
The project goes on. A MFM decoder with Clock and Data Recovery ( CDR ) is available and up and running. For more details, see chapter 1.7 |
|
Fix and implement all open issues from MAXII environment in the new DE1 board environment. |
FEB-2011 |
Ongoing
|
|
In view of the very sad events in Japan, I can't enjoy continuing to work at the moment! |
|
The development based on blockdiagram got more problematic and inefficient. I have given up this kind of development and replaced most of my modules by Verilog programs. |
FEB-2011
JUL-2011 |
Closed
|
|
SD Card I/O implemented to be able to reconstruct the RL02 Format on a SD Card via NIOSII system. |
MAR-2011 JUN-2011 |
Closed
|
|
Developing data/timing sequencer and dual port RAM Verilog
design. |
MAY-2011 JUL-2011 |
Closed
|
|
Benutzung
der SD Card: |
|
Servo/Header
struktur der RL02 Cartridge macht Probleme: |
|
Zurücknahme Mein letzter
Versuch mit der MAXII /ARM-7 Entwicklungsumgebung: ( Sommer 2010
) Die
Herausforderung war nun : CLOCK RECOVERY ohne PLL ERGEBNIS:
Bis jetzt war ich nicht in der Lage, diese Herausforderung zu
lösen- |