(M)SD2KC87 SD-Kartenleser fuer KC87/Z9001 Userport Version 2012

SD-OS V1.0 by Kingstener 2007/2012 Firmware zur privaten Nutzung!

*Das Nutzungsrecht der Firmware bezieht sich nur auf den Eigenbedarf,
kommerzielle Nutzung und Veroeffentlichung ist nicht erwuenscht!*

++ Besonderen Dank an A.Fitzenreiter(http://www.fitzenreiter.de/kc85/kc85cf.htm) ++
++ und H.Klabunde(http://www.holger-klabunde.de/avr/avrboard.htm#cf) auf deren   ++
++ Softwarecodes,dieses Projekt basiert!                                         ++ 

Dies ist ein Terminalmodul fuer den direkten Speichertransfer zwischen KC und
SD-Karte. Unterstuetzt werden Dateien im TAP-Format nach A.Fitzenreiter. Programme,
welche in der Folge auf Tape-Funktionen angewiesen sind werden nicht unterstuetzt!
Fuer die vorliegende Version ist ein KC87/Z9001 und ein im Festspeicher enthaltenes
Terminalprogramm "SDX" noetig oder dies muss ueber den optionalen Tapeanschluss
geladen werden.
Die LED des Modules signalisiert mehrere Zustaende:
- Dauerleuchten = SD-Card erkannt
- nur kurzes Aufleuchten = keine Karte erkannt,
- blinken = Firmwareupdate laeuft
- schnelles Blinken (kaum warnehmbar, LED scheint nur etwas dunkler zu leuchten)= Tape-
  uebertragung laeuft.(dazu muss die Datei load87 im Root der SD-Card vorhanden sein)

Kurzuebersicht:
-das SD-OS V1.0 unterstuetzt SD/MMC-Karten mit FAT12/16/32
 (Achtung! Bootloader unterstuetzt nur FAT12/16)
-neue Hardwareversion mit Atmega328P
-Anschluss fuer LCD-Anzeige entfallen
-direkt am Userport aufsteckbar
-Kommandos:
  Q         return to OS           
  H or ?    show this help 
  V         show version info 
  I         drive informations 
  D         list current directory 
  CD (name) change dir (name) 
  MD (name) make dir (name) 
  RM (name) remove (name) 
  RN (name),(new name) rename (name) 
  WB        WBASIC 
  M AAAA or (name) shows Mem or File
  J AAAA    jump to AAAA 
  EOR       RAM-Ende 
  EOB       BASIC-Ende 
  L (name)  load file (name) ^ = ~ 
  S AAAA EEEE ssss (name) save file (name) ssss=FFFF no auto
  AAAA Anfangsadresse, EEEE Endadresse, ssss Startadresse, immer 4 stellig!

-es koennen zum Laden/Speichern nur 8.3 Dateinamen verarbeitet werden! 
-unkommentiertes Kommando LL (list long) zum Listen langer Dateinamen
 (experimentell, Laenge max. 30 Zeichen)
-Laden von Dateien mit laengeren Namen als 8.3 mit Eingabe der Tilde
 ( Eingabe ^ als Ersatz fuer ~ )
-D/LL nach 16 Zeilen Enter fuer weiter, jede andere Taste+Enter = Stopp
-BASIC-Warmstart (WB) setzt ein initialisiertes BASIC voraus
 oder eine Datei, welche auf 300H den Sprung zum Interpreter enthaelt
-EOR letzte nutzbare RAM-Adresse (+Ueberschreibschutz wenn SDX im RAM laeuft)
-EOB BASIC-Ende Hilfe fuer das Abspeichern von BASIC-Programmen 
 (ab 300 H oder 401 H bis EOB)
-M AAAA zeigt 8 Bytes+ASCII ab AAAA 
-M (name) zeigt ersten Block des Files

Ein Hot-Plug fuer die SD-Karte ist eigentlich nicht vorgesehen, bisher 
habe ich dies aber regelmaessig getan, natuerlich nur, wenn kein 
Schreib-/Lesezugriff stattfindet, man sollte aber unbedingt nach dem
Stecken der Karte einmal "I" aufrufen zum Initialisieren.

Fuer eventuell auftretende Schaeden an Hardware oder Verlust von Software
uebernehme ich keinerlei Verantwortung, Nutzung geschieht auf eigenes Risiko!
Das Projekt befindet sich noch im experimentellen Stadium und ist auf
Mitarbeit der Anwender angewiesen, Fehlerbericht und aenderungsvorschlaege
bitte im Board von http://www.robotrontechnik.de oder direkt an

Kingstener@arcor.de


V1.1
-	tape - Routine integriert fuer Hardware ohne MegaROM (kalibriert)
-	M AAAA oder name zeigt 8Bytes+ASCII im RAM oder von einem File
 	Enter naechste 8 Byte, Stop+Enter beendet 
-	Autostart Maschinenprogramme entfernt use -> J AAAA jump to...
-	(test)Laden von BASIC-Programmen (.sss) ohne Header
V1.2
-	Bugfix fehlende 8.3 Namen bei LL
-	fix EOR bei MegaROM (da SDX im ROM laeuft, wird Ueberschreibschutz am
	RAM-Ende	nicht	benoetigt, als Kriterium dient die Datei load87 auf SD)
V1.2p
-	fix wegen evtl. falschen H-Fuse Start Bootloader (at 0x3800 rjmp to 0x3C00  )
V1.3
	zwei Kommandos hinzugefügt zum Rohdatenaustausch ohne Header und Blocknummer
-  LR AAAA (name)raw load file (SD->RAM)
-  SR AAAA EEEE (name) raw save file (RAM->SD)
V1.3a
-  Bugfix der Fehler im LR Kommando, RN Kommando und EOR
V1.4
-	your feature ??

Das Terminalprogramm SDX beherrscht 5 Funktionen (simplex):
- Konsoleingabe (CONSI)
- Konsolausgabe (CONSO)
- Speicherbereich lesen
- Speicherbereich schreiben
- eine Adresse anspringen
Nur Funktionen, die daraus kombinierbar sind, koennen realisiert werden 
