letzter Beitrag von Spider1982 am
Elektronischer Schreibschutz
- DerSchatten
- Erledigt
-
-
Sehe ich das richtig, dass diese Schaltung es ermöglicht, auf physisch schreibgeschützte Disketten zu speichern? Wäre es andersrum nicht auch sinnvoll? Also Verhinderung des Speicherns auf nicht geschützte Disketten?
Ja, beides ist sinnvoll.
Das habe ich auch vor 30 Jahren schon gemacht, ohne große Technik.
Einfach nur ein Kippschalter mit drei Stellungen:Normal, immer Schreibschutz, kein Schreibschutz
Lief tadellos, nur die Erkennung des Diskwechsel ist ein "Schönheitsfehler".
Der Atmel berücksichtigt auch das ... -
Nee leider, ich habe gestern die externen platten durchgesehen.
Da sind keine Sourcen von so Atmel Mini Projekten.
Höchstens auf einem USB Stick in einer bastelkiste.
Das finde ich aber höchstens zufällig.Aber wir können ja gemeinsam ein kleines Arduino Projekt starten?
So als Arduino Lern Objekt wo dann am Ende auch was sinnvolles raus kommt ...
Es kann so jeder was lernenwie man einen Arduino programmiert.Erst mal auf einem normalen Arduino bis es passt.
Am Ende soll es dann auf einem 5€ Nano laufen ...Sowas ist ja schnell zusammen geklickt, wenn man sich erst mal einig wird, wie es ganz genau funktionieren soll.
Machen wir kurz ein Brain Storming. Was wollen wir:
- Schreibschutz ein, aus, normal
- Kernal Umschaltung 4 fach (normales DOS, Jiffy, Speed-DOS, ...)
- Geräte Umschaltung (drive 8, 9, 10, 11)
- Reset
- optional LCD Display zweizeilig 16 Zeichen
- optional Drehimpulsgeber
- optional Taster und LED
- optional 7 Segment (Geräte Nummer)
Diese Lösung könnte man dann auch auch am C64 verbauen, für Kernel Umschaltung, Zeichensatz, Reset und Modul Kennung.
Im einfachsten Fall ist nur eine LED und ein Taster für Schreibschutz:
- Nach dem einschalten der Floppy ist alles normal, LED ist aus
- Der Taster schaltet drei Modi durch: Schreibschutz aus, Schreibschutz ein, Automatic über Lichtschranke
- Die LED ist aus (für automatic/normal), ein wenn Schreibschutz aktiv, blinkend wenn Schreibschutz aus
- wenn die Lichtschranke betätigt wird, als ein Diskettenwechsel stattfinden, wird in den Automatic Modus gewechselt
Optional dazu die Geräteumschaltung einfach:
- ein Taster wechselt durch die geräte nummer: 8, 9, 10, 11
- der Atmel speichert es in dem EEPROM, sodass die Gerätenummer erhalten bleibt beim ausschalten
- Optional eine 7 Segment der die Geräte Nummer anzeigt, ein oder zweistellig (8, 9, A, b) - (8, 9, 10, 11)
Die komplexere Lösung hat eine LCD Anzeige:
- erste Zeile im Display zeigt den Kernal Name
- zweite Zeile zeigt die Gerätenummer, den Schreibschutz, den Lichtschrankenstatus
- der Drehimpuls Geber dient dazu, alles schalten zu können
- Optional: die zwei Taster aus der simplen Lösung
-
Trackanzeige war auch noch gewünscht
-
Trackanzeige war auch noch gewünscht
Wäre machbar
Das Problem, man kann es nur inkrementell lesen.
Man weiß nie ganz wirklich, wo man ist.Nur nach einem Format kann man es genau sagen ...
Klar kann man vermuten, dass der erste Lesezugriff nach dem einschalten die BAM ist, also Spur 18.
Aber wer braucht ene Trackanzeige wirklich???
-
GI-Joe hat das ja mit seiner Trackanzeige Platine mit EPROM's aber auch gelöst.
-
Hallo @Diddl
Das hört sich sehr gut an.
Bin voll dabei. Bin Anfänger, aber die Grundusstattung habe ich ja hier.
Trackanzeige wäre super.
Bin gerade dabei eine Lüftersteuerug aus zu probieren, die ich in einem anderem Forum gefunden habe, wo der Lüfter nach Temperatur ein und ausgeschaltet wird.
Das könnte man dann gut kombinieren, und alles später auf dem LCD ausgeben.
Gruß Spider
-
Gut, fangen wir mal klein an.
Erste Version mit einem Taster und einer LED.
Nur Laufwerks Schreibschutz.Werde mir morgen Abend mal eine Arduino Workbench aufsetzen und das mal rein klopfen.
Muss mir auch im Keller eine funktionierende 1541 suchen.
Und einen C64, oder zumindest ein Zoomfloppy.
Um es zu testen.Es sollte ganz easy funktionieren:
- einen digitalen Eingang für die Lichtschranke
- einen digitalen Eingang für den Taster
- einen digitalen Ausgang für die LED
- einen digitalen Ausgang zum Schreibschutz der Floppy
In der Main Loop:
- drei Stati: locked, unlocked, auto
- Taste abfragen, ggf. den Status ändern
- Status locked: schreibschutz setzen, LED ein
- Status unlocked: schreibschutz löschen, LED blinken
- Status auto: Lichtschranke lesen und schreibschutz setzen bzw. löschen, LED aus
- Schreibschutz abfragen: bei wechsel auf Status "auto" wechseln
-
Für die Entwicklung/Test empfehle ich ein beliebiges Arduino Set, zB.: (39 €)
https://www.amazon.de/Kuman-Up…ccessories/dp/B074GN4HCX/Da ist alles dabei, Arduino, 7 Segment, LCD Anzeige, Taster, LED, Drehgeber, Box ...
Für den Einbau in die Floppy empfehle ich ein Nano, zB.: (3 Stück 13 €)
https://www.amazon.de/dp/B0793S8NJ8/ -
Das heißt den Nano komplett in die Floppy, anstatt sich eine Platine selbst zu machen ?
-
Wenn du das kannst, dann mach dir die Platine selber.
Es ist nur so, dass die meisten (inklusive mir) das nicht können, bzw. sich sehr schwer tun damit.
Was aber bei einem Preis von nur 4€ eh völlig egal ist, selbermachen kann kaum viel billger sein.
Zudem hat der Nano ja auch schon alles drauf, was dieses Mini Projekt braucht.Aber eine Platine wäre trotzdem genial.
Wo Taster und LCD schon drauf ist.Die man quasi nur noch in der Floppy einbauen müßte.
-
Danke für die Info.
Versuche gerade zu viel zu machen
Meine Werkbank/statt zu bauen, mich mit Arduino beschäftigen und mit Kikad
Ach ja, zur Arbeit gehen noch vergessen
Gruß Spider
-
optional Taster und LED
Pfui. Heutzutage bohrt man keine Löcher mehr in klassiche Computer oder Peripherie. Das geht sehr viel eleganter: Rückmeldung über einen kleinen Beeper, der auch außerhalb des Floppy-Gehäuses sehr gut hörbar sein kann.
Das "Bedienen" der neuen Schaltung kann gut über die Lichtschranke erfolgen, nämlich indem man mit Herausziehen und reinstecken einer Disk eine Art Morse code übergibt.
Das Problem, man kann es nur inkrementell lesen.
Man weiß nie ganz wirklich, wo man ist.drei Möglichkeiten, alle für einen Atmel aus heutiger Sicht kein Thema:
- Überwachung der Adresse $40 (current track number - es gibt noch andere Adressen in denen der zuletzt gelesene Track steht)
- Überwachung der step-Pulse (STP0 und STP1) und Zählen - das ist zwar inkrementell, wird sich aber ultimativ auf den richtigen Track einstellen
- Auswerten der Lese-Signale und Dekodieren des sector headers im Atmel. Die serialisierten Daten kommen "fast im Klartext" am Gate Array Pins 23 und 24 an. Ein Atmel mit mehreren zehn MHz sollte das in Echtzeit hinbekommen.Jens
-
Ah, diese trackanzeige meinst du?
http://home.foni.net/~gero-ihde/trackdisplay.htm
Raffiniert, der PLA überwacht schreibzugriffe auf die Speicherzelle, wo die Track Nummer drin ist.
Danke Wiesel.
Ja, die drei Möglichkeiten sehe ich auch.
Wobei, den Zugriff auf den Speicher ...
Ein 16 MHz Atmel, der den adressbus überwacht, also ein Signal das nur eine Mikro Sekunde lang ansteht ...Möglicherweise geht es knapp.
Aber dann tut der Atmel nix anderes mehr.
Und man braucht eine Menge IO ...Nee ...
Schön wäre, den Track zu lesen!
Und den Sektor Header zu dekodieren.Den Code dazu habe ich sogar schon da liegen.
Mit einem 1284 könnte man sogar den Track buffern. Denn der hat 8kb RAM
Man hätte die RAW Daten, - verlockend!
Aber im Zuge einer Arduino Schulung zu komplex ...
----------
Ich denke wir lesen die inkrements vom Stepper.
Dann geht die Anzeige auch ohne Diskette.
Bzw. mit unformattierter Diskette. -
Ah, diese trackanzeige meinst du?
http://home.foni.net/~gero-ihde/trackdisplay.htm
Raffiniert, der PLA überwacht schreibzugriffe auf die Speicherzelle, wo die Track Nummer drin ist.
Danke Wiesel.
Ja, die drei Möglichkeiten sehe ich auch.
Wobei, den Zugriff auf den Speicher ...
Ein 16 MHz Atmel, der den adressbus überwacht, also ein Signal das nur eine Mikro Sekunde lang ansteht ...Möglicherweise geht es knapp.
Aber dann tut der Atmel nix anderes mehr.
Und man braucht eine Menge IO ...Nee ...
Du könntest an das CS Signal des Floppy-RAMs dran gehen und beim Low einen interrupt im AVR auslösen lassen, dann lauscht er auf die RamAdressen. Und wenn die 6502-cpu im Rom ist, macht der AVR den Rest der Arbeit.
-
Ah, diese trackanzeige meinst du?
Ja die ist klasse, das Laufwerk hab ich von GI-Joe vor einigen Jahren erhalten und Trackanzeige und elek.Disklocher sind einfach genial Hier mal ein Bild:
Trackanz.jpg -
Du könntest an das CS Signal des Floppy-RAMs dran gehen und beim Low einen interrupt im AVR auslösen lassen, dann lauscht er auf die RamAdressen. Und wenn die 6502-cpu im Rom ist, macht der AVR den Rest der Arbeit.
Du hast recht, das wäre elegant.
In AVR Assembler auch sicher machbar ...Aber in C habe ich die Erfahrung gemacht, dass der Interrupt ziemlich lange braucht.
Die ganzen Register sichern ...Und wenn man andere Interrupts auch noch hat, Timer, UART, etc, dann ist es sowieso vorbei mit so schnellen Sachen.
-
Phase 1:
So, ich habe mich ein bisschen gespielt mit dem Arduino.
Der Aufbau ist wie folgt (für die, die es mitmachen und testen wollen):
Schreibschutz Sketch_Steckplatine.png
Die rote LED und der Taster daneben sind für die Anzeige und Bedienung, werden also in die Floppy eingebaut.
Die grüne LED steht für den Zustand des Schreibschutz, der unserem 1541 Laufwerk signalisiert wird.
Der Taster daneben steht für die Lichtschranke des Laufwerk.Zustand AUTO nach dem einschalten (Normalzustand):
die rote LED ist aus.
die grüne LED zeigt den Zustand des grünen TasterDer Schreibschutz hängt also direkt mit der Lichtschranke zusammen.
Zustand UNLOCKED:
die rote LED blinkt als Warnung, dass die Diskette ungeschützt ist.
die grüne LED ist an (kein Schreibschutz)Der Schreibschutz ist also immer aus, jede Diskette kann beschrieben werden.
Zustand LOCKED:
die rote LED ist ein.
die grüne LED ist aus (immer Schreibschutz).Der Schreibschutz ist also immer ein, die Diskette ist geschützt.
Taster:
Mit dem roten Taster kann man zwischen den drei Zuständen AUTO, LOCKED und UNLOCKED wechseln.
Lichtschranke:
Mit dem grünen Taster, also der Lichtschranke, wird immer der Zustand AUTO eingenommen.
Damit ist gewährleistet, dass der Diskettenwechsel erkannt wird.
Und dass nicht versehentlich eine andere Diskette gelöscht wird.Und das Schaltbild des Schreibschutz:
Und der Code: (Besprechung des Code und/oder Fragen sind erwünscht)
C: Schreibschutz_01- /*
- 1541 Schreibschutz
- */
- const byte tDebounce = 100;
- const byte ioLED = 7;
- const byte ioKEY = 8;
- const byte ioWriteProtect = 9;
- const byte ioLichtschranke = 10;
- unsigned long timer2 = 0;
- boolean fWP = LOW;
- void setup()
- {
- // initialize the digital pin as an output.
- pinMode(ioLED, OUTPUT);
- pinMode(ioWriteProtect, OUTPUT);
- digitalWrite(ioKEY, HIGH); // turn on pullup resistors
- digitalWrite(ioLichtschranke, HIGH); // turn on pullup resistors
- DoLED(0);
- }
- void DoLED(int mode)
- {
- static unsigned long timer = 0;
- static boolean fLED = LOW;
- unsigned long t;
- switch(mode)
- {
- case 0:
- // off
- fLED = HIGH;
- break;
- case 1:
- // on
- fLED = LOW;
- break;
- case 2:
- // blink
- if((t=millis()) - timer > 300)
- {
- timer = t;
- fLED = !fLED;
- }
- break;
- }
- digitalWrite(ioLED, fLED); // set LED
- }
- bool GetKeyDown()
- {
- static unsigned long timer = 0;
- static bool prev = HIGH;
- bool key = digitalRead(ioKEY);
- bool state = LOW;
- if(key == LOW && prev == HIGH && millis() - timer > tDebounce)
- {
- state = HIGH;
- timer = millis();
- }
- prev = key;
- return state;
- }
- void loop()
- {
- static byte zst = 2;
- static bool fLastLS = HIGH;
- bool fLS = digitalRead(ioLichtschranke);
- if(fLS != fLastLS)
- {
- // photo sensor changed
- fLastLS = fLS;
- DoLED(0);
- zst = 2;
- }
- switch(zst)
- {
- case 0:
- // write protect unlocked
- DoLED(2);
- if(GetKeyDown())
- {
- digitalWrite(ioWriteProtect, HIGH); // set write protect state
- DoLED(1);
- zst++;
- }
- break;
- case 1:
- // write protect locked
- if(GetKeyDown())
- {
- zst++;
- DoLED(0);
- }
- break;
- default:
- // auto
- if(GetKeyDown())
- {
- digitalWrite(ioWriteProtect, LOW); // set write protect state
- zst = 0;
- }
- else
- {
- digitalWrite(ioWriteProtect, fLS); // set write protect state
- }
- break;
- }
- }
-
-
Es wäre schön wenn es jemand an einer richtigen Floppy testen könnte.
Irgendwie kann ich mich nicht aufraffen, das Zeug aus dem Keller zu holen und alles aufzubauen.