Das Betriebssystem UDOS ist an das RIOS von Zilog angelehnt, um es mit einem Euphemismus zu bezeichnen. Die hier liegenden Diskettenimages sind mit einem Kopier- schutz versehen, der es verhindert, von einer bootfähigen Diskette eine weitere bootfähige Diskette herzustellen. Möglicherweise gab es dafür ein spezielles Tool oder einen geheimen Switch im copy.disk-Program. Der Kopierschutz arbeitet folgendermassen: In die Lücke zwischen der Sektor-ID und der Data-Mark wird anstelle eines Byte 04Eh ein Byte 027h geschrieben. Die Sektor-ID und die Lücke werden bei jedem Schreiben eines Sektors neu geschrie- ben. Auch bei westlichen Standardcontrollern wie dem uPD765 oder den diversen Western Digital Kontrollern WD 17xx. Diese, sowie die Standardschreibroutinen des BFOS schreiben dabei aber dann das normgerechte 04Eh in die Lücke. Auch Programme wie Anadisk oder Teledisk beachten die Lücken- inhalte nicht besonders und formatieren normgerecht mit 04Eh. Direkt nach dem Laden des bfos, das noch durch die ROM-Routinen des PC1715 geschieht, wird immer der Sektor 01h in Spur 16h der Systemdiskette, die den Directorydescriptor enthält gelesen. (UDOS beginnt die Zählung der Sektoren mit 00. In Wirklichkeit hat der Sektor 0 jedoch die Nummer 1 usw. Dieser Sektor wird normalerweise nur ein einziges Mal ge- schrieben, nämlich beim Formatieren der Diskette oder mit dem Programm copy.disk. Bfos springt nun nach dem Laden dieses Sektors eine hinter- haeltige Routine an, die nachschaut, ob 027h oder 04Eh in der Lücke steht. Steht 04Eh drin, dann werden große Teile von bfos von dieser Routine mit 04Eh überschrieben und der Rechner stürzt ab. Steht 027h drin, dann weiß die Routine, daß es sich um eine 'legale' Kopie handelt und patcht ihren eigenen Aufruf aus dem bfos-Code heraus, so daß alle nachfolgenden Lesezu- griffe ohne Überprüfung geschehen. Nur, wenn der Sektor 1 in Spur 0 von irgendeinem anderen Pro- gramm neu beschrieben wurde, greift der Kopierschutz. Hier eine Anleitung, um den Kopierschutz auf verschiedene Weise zu umgehen: (Natürlich kann man den Kopierschutz damit auch wieder rein- basteln, um den Kumpel zu ärgern, oder damit es ganz auten- tisch wird.) Grundvorraussetzung: Rudimentäre Kenntnisse mit dem Umgang mit UDOS und den zugehörigen Utilities wie dem Debugger, copy.disk, format file.debug etc. kk, 25.11.2002 Dank an Christian Corti für die Disassemblierung von bfos und dem EPROM-Inhalt, sowie an seinen Amiga, der uns mit genügend kopiergeschützten Disketten zum streßfreien Verüben versorgt hat. ============================================================ 1. Voraussetzung: Eine bootfähige, kopiergeschützte UDOS- Systemdiskette, eine z. B. unter UDOS formatierte Zieldiskette. (Beim Kopieren braucht kein System mitkopiert zu werden). 2. Vorgehen: a. UDOS booten. b. Kommando debug geben. c. mit debug-Kommando den Vektor bei 0EEEh notieren. d 0EEE 0EEF (High-Low-Reihenfolge beachten!). zeigt z. B. auf Adresse 0AB4h. d. bei dieser Adresse den Wert 04Eh durch 027h ersetzen. d 0AB4 027 Q e. den Vktor in Adresse 0EEEh/0EEFh durch einen Dummy ersetzen, z. B. durch den Wert 0FFFFh. d 0EEE FF FF Q f. debug mit Q beenden g. mit copy.disk die System-Disk auf die formatierte Diskette kopieren. Man erhält eine kopiergeschützte, bootfähige UDOS-Diskette. ============================================================ 1. Vorraussetzung: Eine nicht mehr bootfähige, z. B. mit Tele- disk oder nicht gepatchtem copy.disk erzeugte UDOS-System- diskette. Eine bootfähige UDOS Systemdiskette oder ein Pro- gramm wie z. B. Anadisk oder sonstetwas, mit dem man einzelne Sektoren lesen und schreiben kann. 2. Vorgehen mit UDOS. a. UDOS booten von funktionierender Diskette. b. nicht bootende Diskette in Laufwerk 0 einlegen. c. Kommando file.debug starten. d. in file.debug Kommando R 000F geben. (Liest Sektor Nr. 15 ein) e. Kommando debug geben. f. mit D 4C15 die folgenden 3 Bytes: CD 50 4e gegen die Bytes: 22 A0 0E austauschen. g. debug mit Kommando Q verlassen. h. wieder zurueck in file.debug den Sektor zurückschreiben: W Y i. file.debug mit Q verlassen. Diskette ist jetzt nicht mehr kopiergeschuetzt und bootfähig. Anm.: Bei file.debug ist die Lage des Sektorpuffers gemäß der Dokumentation zu berücksichtigen! ============================================================ Auf der UDOS-Diskette befindet sich ein File mit Namen boot. Dieser enthält den gleichen Inhalt, wie die ersten 16 Sektoren der Spur 0. Startet man diesen File, passiert das Gleiche, als ob der Rechner per Reset gebootet wird. Allerdings mit dem Unterschied, daß eben das Binary des Files boot und nicht das, welches sich in Spur 0 befindet, geladen und ausgeführt wird. Ich nehme an, daß es eine Utility gibt, mit der man analog zum CP/M-Programm 'sysgen' den Inhalt von 'boot' in die System- spur schreiben kann. Daraus folgt, daß man auch 'boot' patchen sollte, wenn man den Kopierschutz entfernen will. Auch das ist mit file.debug und debug möglich: 1. Voraussetzung: Ein laufendes UDOS-System mit dem Programm file.debug und boot auf der Diskette. 2. Vorgehen: a. file.debug starten. b. Kommando o boot geben. (Öffnet den File boot) c. exakt 15 mal das Kommando R innerhalb von file.debug eingeben. Das liest den 15. Sektor des Files in den Daten- puffer von file.debug. d. Kommando debug geben. e. mit D 4C15 die folgenden 3 Bytes: CD 50 4e gegen die Bytes: 22 A0 0E austauschen. f. debug mit Kommando Q verlassen. g. wieder zurueck in file.debug den Sektor zurückschreiben: W Y h. file.debug mit Q verlassen. Auch hier gilt: Erst nachprüfen, ob der Datenpuffer von Filedebug wirklich bei 4C00h liegt.