S-JiffyDOS für C64


  • NLQ
  • 6052 Aufrufe 25 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • S-JiffyDOS für C64

    S-JiffyDOS (SJD) ist ein C64-Betriebssystem, das im C64 oder einer Flash 8 in einem EPROM, im Turbo-Chameleon64 oder unter C64-Emulatoren läuft. Es ist ein Patch für JiffyDOS (JD). Da es ein Patch für JiffyDOS V6.01 ist, läuft es ohne dieses gar nicht. Es benutzt die Original JD-IEC-Bus-Routinen, sodass es mit allen JD- und Nur-CBM- Floppys zusammenarbeitet und auch auf die gleiche Geschwindigkeit kommt. SJD im C64 funktioniert uneingeschränkt mit allen Normal-JiffyDOS-Laufwerken (1541, 1571, 1581, CMD-FD, CMD-HD, IEC-ATA, SD2IEC, NLQ-HD). Wenn ihr JD habt, probiert gleich mal das Programm "test s-jiffydos" aus und schaut euch die Features an:

    Nachteil gegenüber JD:
    - keine RS232-Routinen
    - die Floppybefehle müssen in Anführungszeichen eingegeben werden (Dies wird einem jedoch durch die F-Tastenbelegung erleichtert, weil sie diese vorgeben)

    Vorteil gegenüber JD:
    - erweiterte Funktionstastenbelegung:
    F1 @"$" Directory
    F3 /% intelligent load
    F5 ^Pfund intelligent start
    F7 @" : Floppy Status/Befehl
    F2 @d list von Disk
    F4 @t text von Disk
    F6 <- save
    F8 @s: scratch
    CBM&F1 lI list
    CBM&F3 rU run
    CBM&F5 c=12:sY4096*c startet Maschinenspracheprogramm bei $c000
    CBM&F7 @l lock / unlock
    - Bei intelligent load/start wird, wenn kein Filename angegeben wird, das erste File der Disk geladen.
    - intelligente Laderoutine: SJD lädt ein Programm fast immer an die richtige Adresse, je nachdem, ob es ein Maschinensprache- oder Basicprogramm ist. Es analysiert hierzu die Startadresse des Programms von der Disk. Wenn sie $0401 (VC20 oder Dir), $0801 (C64), $1001 (C16/+4) oder $1c01 (C128 ) ist, wird an den Basic-Anfang geladen, ansonsten an die Disk-Startadresse. Nach dem Laden überprüft SJD noch, ob der Basic Anfang innerhalb der Anfangs- und Endadresse des geladenen Files ist; wenn ja werden die Basic-Ende-Vectoren gesetzt und bei F5 zusätzlich ein RUN ausgeführt, wenn nicht, passiert nichts bzw. ein SYS <Ladeadresse>. Mit F3 werden fast alle Programme einer Disk richtig geladen, auch wenn man nicht weiß, ob es ein Basic- oder MSP- Programm ist, und mit F5 richtig gestartet.
    - zeigt die Ladeadressen hexadezimal an
    - Nach einem Reset sind alle Leitungen des IEC-Busses inaktiviert, sodass ein Deviceswap mit CMD Laufwerken sofort geht.
    - Alle RAM-Vektoren sind identisch zu CBM, sodass problemlos zwischen CBM und SJD umgeschaltet werden kann, ohne vorher ein @x eingeben zu müssen
    - Ctrl & <Return> führt immer zum Zeilenanfang und beendet den Einfüge-, Hochkomma- und Reversmodus
    - Ctrl & <Delete> löscht den Rest der Zeile
    - <Stop> beendet den Einfüge-, Hochkomma- und Reversmodus
    - die Reset-Funktion ist erweitert:
    & Space überspringt die CBM80 Kennung
    & Stop wie Stop & Restore
    & q wie Stop, erhält aber die Hardwarevektoren
    & 1 & <Pfeil links> löscht den Speicher (in der Testversion bitte nicht machen, weil hier SJD in diesem RAM ist)
    Anstelle des Reset Tasters ist oft auch die Retore Taste benutzbar
    - shift & Ctrl & CBM zeigt den SJD Status als Rasterbar an
    - shift & Ctrl & CBM & 1-4 ändert den SJD Status:
    -1 aus
    -2 Userport Drucker ein
    -3 JiffyDOS Wedge Befehle ein
    -4 Funktionstasten ein
    - es gibt auch eine Kernal-Version mit deutscher Tastaturbelegung, die die Sonderzeichen korrekt zu Epson-kompatiblen Druckern wandelt.
    - unterstützt einen Centronics Drucker am Userport. Am besten ist ein Epson-Kompatibler, weil nur hier die deutschen Sonderzeichen richtig ausgegeben und die reversen Zeichen zu kursiven (und nicht zu internationalen Sonder-) Zeichen gewandelt werden. Am Drucker sollte der Kursiv- und der deutsche landesspezifische Zeichensatz eingestellt sein. Das Druckermenü muss so eingestellt werden, dass bei einem Carriage Return zusätzlich ein Linefeed ausgeführt wird. Bei Geräteadresse 4 überprüft SJD zuerst, ohne am Userport etwas zu ändern, ob ein serieller Drucker vorhanden ist. Erst wenn dies nicht der Fall ist, testet es auf einen Userportdrucker und leitet die IEC-OUT-Routine gegebenenfalls um. Die Sekundäradresse bewirkt folgendes:
    - 0-7 serieller oder paralleler Drucker
    - 8-11 nur paralleler Drucker (wenn man genau weiß, dass in einem selbstgeschriebenen Basicprogramm ein Userportdrucker vorhanden ist, sollte man 8-11 nehmen, um zu verhindern, dass bei vollem Druckpuffer ein DEVICE NOT PRESENT ERROR entsteht)
    - 12-15 nur serieller Drucker
    Man kann also zwei Drucker am C64 ständig eingeschaltet lassen, und nur über die Sekundäradresse bestimmen, auf welchen der Ausdruck erfolgen soll.
    - 0 & seriell: keine Wandlung
    - 0 & parallel: Grafikzeichen -> Space, Revers -> Kursiv
    - 1-3,11,15 keine Wandlung
    - 4,8,12 & US-Kernal: keine Wandlung
    - 4,8,12 & DE-Kernal: Klein <-> Groß und deutsche Sonderzeichen Wandlung
    - 5,9,13 Klein <-> Groß Wandlung
    - 6,10,14 Grafikz.->Space / Rev->Kursv
    - 7 & seriell: keine Wandlung
    - 7 & parallel & US-Kernal: Klein <-> Groß Wandlung
    - 7 & parallel & DE-Kernal: Klein <-> Groß u. dt. Sonderz. Wandlung
    Wenn man bei einem selbstgeschriebenen Basicprogramm einerseits Buchstaben wandeln, andererseits ESC Befehle ungewandelt übertragen will, öffnet man am Besten zwei Kanäle:
    10 open4,4,11 : rem linearkanal
    20 open5,4,9 : rem codewandelkanal
    und gibt die ESC Befehle mit print#4 und die Texte mit print#5 aus.
    Basic-Listings druckt man mit "open4,4,9:cmd4:list" aus, weil hier evtl. vorhandene reverse Zeichen zu kursiven gewandelt werden, und so z.B. ein "Ctrl-L" nicht zu einem Blattauswurf führt.
    Bei Textverarbeitungsprogrammen sollte der Linearkanal gewählt werden, also Sekundäradresse 11.

    Vielen Dank an '1570',der einen Online-Patcher programmiert hat, der JD zu SJD patcht: dtvforge.ath.cx/sjiffy/

    nlq.de
    nlq@gmx.de
    Dateien
  • " SJD lädt ein Programm fast immer richtig, je nachdem, ob es ein Maschinensprache- oder Basicprogramm ist. "
    da würde ich lieber "an die richtige adresse" schreiben, das klingt sonst etwas komisch =)
  • NLQ schrieb:

    Vielen Dank an '1570',der einen Online-Patcher programmiert hat, der JD zu SJD patcht: dtvforge.ath.cx/sjiffy/

    Da sag ich Dir und 1570 auch besten Dank. Allerdings scheint der Online-Patcher nicht mit dem SX-64 Kernal zu funktionieren. Da kommt dann diese Fehlermeldung: Invalid JiffyDOS image: Version 6.01, 8192 or 8194 bytes needed. Das Image das ich patchen wollte ist genau 8192 Bytes lang also geht der SX Kernal wohl grundsätzlich nicht. Macht ihr auch noch Versionen für die anderen Jiffy-Dos ROMs?
    Der alleinige Zweck dieses Beitrags ist es meinen Counter zu inkrementieren. Jeglicher Sachbezug dient ausschließlich der Dekoration.
    --- "Meine kleinen Projekte"
    --- "3D-Modelle" --- "Platinen" ---
  • Allerdings scheint der Online-Patcher nicht mit dem SX-64 Kernal zu funktionieren. Da kommt dann diese Fehlermeldung: Invalid JiffyDOS image: Version 6.01, 8192 or 8194 bytes needed. Das Image das ich patchen wollte ist genau 8192 Bytes lang also geht der SX Kernal wohl grundsätzlich nicht. Macht ihr auch noch Versionen für die anderen Jiffy-Dos ROMs?
    Stimmt, du hast Recht. Beim 64SX-JiffyDOS sind drei Bytes für die Farben anders, was der Online-Patcher bemerkt. Bezüglich anderer Versionen kann ich selbst nichts sagen. Alternativ kannst du die BIN-Files auf deinem SX64 selbst erstellen mit den angehängten Files. Du bekommst dann auch die SX64-Bildschirmfarben.
    Dateien
  • InsertDisk2 schrieb:

    Ich würde mir gerne S-Jiffy in meinem C64II einbauen ohne die Möglichkeit die Kernal zu switchen, reicht es dazu das in ein 256er EPROM zu brennen?


    Ein 27128 ist es, was du willst. In die ersten 4k den BASIC-Interpreter, in die letzten 4k das S-Jiffy. Das ROM kannst du 1:1 gegen das EPROM tauschen.
    Hab ich grad vor ca. 2 Stunden selbst gemacht :)
    Das Steckschwein - ein Homebrew-Computer auf 65C02-Basis
  • Ich würde mir gerne S-Jiffy in meinem C64II einbauen ohne die Möglichkeit die Kernal zu switchen, reicht es dazu das in ein 256er EPROM zu brennen?
    Mich verunsichert auf dem Plan auf dem .D64 Image der Schalter S2 mit der Diode. Für was ist der zweite Schalter denn?
    Ah ja du hast Recht ein 128er reicht. Aber du meinst sicher 8k und nicht 4k
    Benötige ich Char-ROM? Bzw was ist da anders gegenüber dem normalen?
    Wie bereits erwähnt wurde reicht ein 128er.
    Den Schalter mit Diode bräuchtest du nur, falls du SJD mit deutscher Tastaturbelegung wolltest (also so gut wie niemand).
    Das 128er enthält 8kB Basic- und 8kB-SJD-Kernal-ROM.
    Das Char-ROM bräuchtest du nur, falls du einen deutschen Zeichensatz wolltest (also so gut wie niemand).
  • Hallo,

    ich wollte mir mal nach dem Plan von der NLQ-Seite ein Druckerkabel basteln.
    Dazu hab ich allerdings noch ein paar Fragen.
    1. Einige Pins scheinen nicht zu stimmen (Hab mal die richtigen in Klammern dahinter geschrieben.)
    2. Wie sind denn die grnds miteinander zu verbinden? Das verstehe ich irgendwie nicht.
    3. Was muss ich mit 14 Autofeed XT verbinden?
    4. Wie lang sollte das Kabel maximal sein?

    Vielen Dank für die Antworten.
    Bilder
    • SJiffy Druckerkabel.jpg

      119,55 kB, 904×409, 82 mal angesehen
  • Das ist doch auf der Belegung die du angehängt hast vermerkt.

    Die Userport-Pins 1,12,A,N und Centronics-Pins 16,19 bis 30 zusammen löten und miteinander verbinden. Dann je nach dem von dir verwendetet Drucker, die Masse zusätzlich auf Pin 14 am Centronics-Stecker anlöten, oder halt weglassen. Ich würde da aber einen kleinen Schalter anbauen, damit man Autofeed als Option schalten kann.