Hello, Guest the thread was viewed3.6k times and contains 34 replies

last post from Goodwell at the

Printfox 1.3

  • Ich habe nun das Thema von hier: printfox am 1581 bzw auf d81 ausgelagert.

    Im verlinktem Thread geht es darum, Printfox mit einem 1581-Laufwerk zu verwenden, bzw. Printfox von anderen Laufwerksnummern zu starten, und zu benutzen.


    Angeregt durch die Anfrage von Goodwell , Printfox unabhaengig vom fest eigestelltem Laufwerk 8 zu benutzen, habe ich nun eine Version 1.3 von Printfox erstellt.


    Was wurde gemacht:


    1. Der Printfox-Lader auf der Diskette wurde angepasst.

    Dazu wurde der Code so abgeaendert, das nun nicht mehr vom voreingetelltem Laufwerk 8, sondern von dem Laufwerk welches in der Speicherstelle $BA hinterlegt geladen wird.


    2. Die Programme "SETUP", und "FARBEN" wurden von Goodwell angepasst.


    3. Die Laderoutinen im Hauptprogramm wurden von Stephan Scheuer angepasst.

    Nun wird auch im Hauptprogramm von dem in der Speicherstelle $BA hinterlegtem Laufwerk geladen und gespeichert.


    4. Die Funktion < C= D > wurde angepasst.

    Damit ist es nun moeglich, die Laufwerksadresse neu einzustellen.


    5. Die Laufwerksanzeige wurde mit eingebaut.

    Es wird das aktuelle Laufwerk in der ersten Zeile angezeigt.


    6. Meldetexte wurden hinzugefuegt.

    Es werden entsprechende Meldungen ausgegeben.

    Es wurden neue Texte zu der vorhandnen Texttabelle hinzugefuegt.


    7. Eine Laufwerksueberpruefung wurde hinzugefuegt.

    Es wird geprueft, ob das eingegebenes Laufwerk existiert.

    Damit wird verhindert, dass Printfox einfriert, falls auf ein nicht existierendes Laufwerk zugegriffen werden soll.



    Wie wurde es gemacht:


    Auf die Punkte 1 bis 2 will ich hier nicht naeher eingehen.

    Punkt 3 findet noch Erwaehnung


    zu den Punkten 4 bis 7:


    Um 'nicht so einfache' Aenderungen am Hauptprogramm machen zu koennen habe als erstes Printfox disassembliert, und mir den Source-Code erstellt.

    Danach habe ich den Sorce-Code analysiert, und an einigen Stellen geringfuegig dokumentiert.

    Im naechste Schritt habe ich mir angeschaut, wie man am 'einfachsten' Aenderungen machen kann.

    Bisher habe ich keine einfache Methode gefunden um neue Befehle zu integrieren, deswegen habe ich mir die vorhandenen Befehle angeschaut, und ueberlegt wo ich ansetzen kann.

    Das einfachste erschien mir, den Befehl < C= D >, welcher fuer Diskettenbefehle zustaendig ist zu erweitern.

    Ich habe dort nun eine Abfrage auf Laufwerksnummern von 8 - 19 eingearbeitet.

    Bei ersten Tests habe ich festgestellt, das Printfox 'abschmiert' wenn auf ein Laufwerk zugegriffen werden soll, welches nicht existiert.

    Also habe ich noch schnell eine Routine eingebaut, welche ueberprueft, ob ein angegebes Laufwerk ueberhaupt angeschlossen ist.

    Bei weiteren Tests habe ich noch einen kleinen Fehler in den Aenderungen von Stephan Scheuer gefunden.(Punkt 3).

    Der Fehler tritt nicht auf, wenn man auf nur ein Laufwerk zugreifen kann.

    Wechselt man aber die Laufwerksnummern, kann es dazu fuehren, das ein angeschlossenes Laufwerk mit gueltiger Diskette nicht mehr angesprochen werden kann.

    Diesen Fehler habe ich korrigiert.


    Damit man auch was sieht, habe ich noch eine Laufwerksanzeige in der ersten Zeile mit eingebaut, und auch entsprechende Textmeldungen fuer die zweite Zeile mit reinprogrammiert.


    Wie funktioniert es:


    Nun, wie schon vorher erwaehnt, habe ich dem < C= D > Kommando eine neue Funktion hinzugefuegt.

    Mit diesem Kommando wird normalerweise ein Befehl an ein angeschlossenes Laufwerk gesendet.

    Ich habe diese Kommando so erweitert, das nun die Zahlen von 8 bis 19 als Eingaben zur Laufwerkswahl erkannt werden.

    (Allerdings mueesen die Zahlen direkt ohne fuehrende (Leer-)Zeichen eingegeben werden.)


    Als erstes drueckt man die Taste 'C=' danach die Taste D. Jetzt erscheint in der zweiten Zeile das Wort "Befehl:', und in der dritten Zeile erscheint 'CAPS'.

    hier kann man nun eine Zahl zwischen 8 und 19 eingeben. Drueckt man anschliessend Return, wird zunaechst geprueft, ob das gewaehlte Laufwerk vorhanden (angeschlossen) ist.

    Wenn es vorhanden ist, wird die Speicherstelle $BA angepasst, die Laufwerksanzeige wird angepasst, und in der dritten Zeile wird 'OK' angezeigt.


    Ist das eingegebene Laufwerk nicht vorhanden, bleibt die Speicherstelle $BA, und die Anzeige auf dem alten Stand, und es wird eine Fehlermeldung in der zweiten Zeile ausgegeben.



    Doch nun ein paar Beispielbolder mit kurzen Erlaeuterungen:


    Bild 1 : rechts oben in der ersten Zeile ist die Laufwerksanzeige


    Bild 2: Die Meldung 'OK' erscheint, wenn eine Laufwerksaenderung erfolgt ist. (Es wird nicht ueberprueft, ob eine Diskette vorhanden ist)


    Bild 3: Die Meldung 'Laufwerk nicht vorhanden" erscheint wenn versucht wurde ein Laufwerk, welches nicht existiert, einzubinden. (Die Anzeige rechts oben ' LW:10" hat damit nichts zu tun.)


    Bild 4: Die Fehlermeldung '31,Syntax error,00,00' kommt vom Laufwerk wenn eine Laufwerksnummer kleiner 8, oder groesser 19 eigegeben wurde.

    Dann wird naemlich der 'Befehl' als Floppykommando gesendet, und kann dort nicht verarbeitet werden. (Es wird im Moment nur auf eine gueltige Zahl von 8 - 19 geprueft. alle anderen eingebenen Zahlen fuehren zu diesem Fehlerbild.)


    An dieser Stelle moechte ich Goodwell fuer die Idee danken, und auch Stephan Scheuer fuer seine Vorarbeit.

    Und natuerlich allen Anderen, welche irgendwie damit zu tun hatten, bzw. haben.


    Was fehlt noch?:

    Ach ja, das Programm,

    Da ich wirklich einige Aenderungen am Code von Printfox vorgenommen habe, und ich mir nichtt 100%tig sicher bin, dass alles ok ist, moechte ich das Programm hier so noch nicht veroeffentlichen.

    Weil viel zu schnell wird es sonst eventuell fehlerbehaftet im Internet verteilt, und das moechte ich vermeiden.

    Ich bitte um euer Verstaendniss.

    Wer es testen will kann mir gerne eine PN schreiben.




    Mit freundlichen Gruessen aus dem fernen China

    Claus

  • Nur der Ästhetik halber: Ich würde entweder die Laufwerksangabe um eine Stelle nach links versetzen oder die Seitenangabe um eine nach rechts, damit beide bündig abschließen.


    Ansonsten: Wow! Das ist eine ganz wichtige Arbeit von euch! Danke dafür!

    Arndt

  • So, auf Anregung von GoDot , habe ich die Anzeige fuer das Laufwerk noch etwas verschoben.

    Sieht nun besser aus.;)


    Und noch eine Anmerkung:

    Der Source-Code von Printfox v1.2, inklusive 1.3 wird natuerlich auch auf GitHub bereitgestellt.

  • Anscheinend kann ja der PrintFox auch (wenn vorhanden) das zusätzliche RAM des PageFox Modul nutzen.


    Stimmt das überhaupt?

    Und wenn ja, wie kann man das prüfen ob der PrintFox das RAM nützt?




    Ich frage weil ich das PageFox hier habe und ich liebe diese Software.


    Und ich habe ein Jedec für die UC-2 die das RAM des UC-2 genau so präsentiert wie das PageFox Modul.

    Da würde ich gerne prüfen, ob die Kompatibilität ausreichend ist.

  • Soweit mir bekannt ist, kann Printfox nicht das RAM von Pagefox nutzen.

    Ich habe auch keinerlei Informationen darueber im Quellcode gefunden. Es mussten ja dann die typischen Adressen in $DExx irgendwo vorhanden sein.

    Zudem ist Printfox ja vor Pagefox entstanden, somit schliesst sich das meiner Meinung nach aus.


    Es gibt allerdings andere Produkte von Scanntronik, welche sehr wohl das RAM von Pagefox nutzen.

  • Es gibt allerdings andere Produkte von Scanntronik, welche sehr wohl das RAM von Pagefox nutzen.

    Welche Produkte sind das?

    https://www.c64-wiki.de/wiki/P…_das_Pagefox-Modul_nutzen

  • Anscheinend kann ja der PrintFox auch (wenn vorhanden) das zusätzliche RAM des PageFox Modul nutzen.

    Diese Erweiterung kann das, meine ich: Printfox Erweiterungen

  • Eine weitere Idee:


    wäre super wenn nicht nur XF ausgeführt werden könnte, sondern evtl XF0 - XF9

    Also das Cmd+X wiederum um eine Zifferneingabe ergänzen. Oder sogar alle alphanumerischen Zeichen?
    Und Cmd+X und Leertaste könnte wie bisher XF laden.


    Bislang muss man sich pro XF eine Diskette zurechtlegen, das müsste nicht sein

  • Ich habe heute noch einen wirklich groben Fehler gefunden, welchen ich noch schnell gefixt habe.

    Aber nun sollte es OK sein.


    Ich selbst habe nun keine weiteren Fehler mehr gefunden, und ich denke dass es die finale Version sein wird.


    Ich moechte hier aber auch auf einen Nachteil der Erweiterung hinweisen.

    Leider braucht jede Erweiterung Platz im Speicher, welcher dann vom verfuegbaren Textspeicher abgezogen wird.

    Somit stehen statt der 8030 freien Zeichen nun nur noch 7892 freie Zeichen fuer den Text zur Verfuegung.



    Das bedeutet, dass die Erweiterung nun 138 bytes verbraucht.

    Das ist fuer mich noch vertretbar, aber jede weitere Erweiterung wuerde noch mehr Textspeicherplatz verbrauchen.


    P.S. Die Textmeldungen, welche ich neu hinzugefuegt habe, verbrauchen dabei keinen zusaetzlichen Platz, da diese noch in einem Bereich eingebunden werden konnten, welcher nicht als Textspeicher genutzt werden kann.


    An diejenigen die mich per P.N. angeschrieben haben, oder noch anschreiben wolen, sende ich eine personalisierte Vorabversion zum testen.



    Claus

  • wäre super wenn nicht nur XF ausgeführt werden könnte, sondern evtl XF0 - XF9

    Dabei hab ich natürlich nicht bedacht, dass verschiedene Extensions verschiedene Anforderungen an den Speicher haben.
    allerdings werden die eh immer just in time geladen. Also können sich extensions problemlos überschreiben, sie werden eh wieder geladen wenn sie benötigt werden.


    Wechselwirkungen können aber evtl nicht ausgeschlossen werden.

  • Ich habe nun den Source-Code von PrintFox1.2 auf meiner GitHub-Seite veroeffentlicht.

    Wer Interesse hat kann ja mal reinschauen.


    https://github.com/LeshanDaFo/C64-PrintFox1.2

    Viel habe ich nicht dokumentiert, mir war halt wichtig die Teile zu verstehen, welche ich fuer die Anpassung des PrintFox1.3 gebraucht habe.


    Der SourceCode fuer den PrintFox1.3 wird dann nach der Testphase veroeffentlicht.

    Also bitte noch etwas Geduld.


    LG

    Claus

  • Etwas neues zum Printfox 1.3


    Ich hatte ja vor den hier kurzfristig zu veroeffentlichen, doch da habe ich doch noch eine Fehlermeldung bekommen.

    DEr Fehler aeussert sich wenn man auf ein anderes Laufwerk als das Startlaufwerk zugreifen moechte.

    Man kann zwar das Laufwerk wie gewuenscht auswaehlen, aber bei einem Lade-, oder Speicherversuch wird nur ein "00,ok,00,00" angezeigt, also kein Disketteninhalt.

    Es hatte bei mir aber schon funktioniert.

    Wie es nun der Zufall (meine Schusseligkeit Unachtsamkeit) oder wie immer man das nennen will, so wollte, hatte ich beim letzten Erstellen des Programms den falsche Source-Code verwendet, und den funktionierenden geloescht.


    Nun habe ich einen sehr alten Stand wieder aufbuegeln muessen. :(

    Stand ist nun, dass ich wieder einen aktuellen Source-Code habe.:whistling:


    Es gibt aber immer noch (ein paar) Baustellen, welche ich beheben will.


    Eine Baustelle ist die Adresse $BA,

    diese wird bei der Benutzung einer Druckerroutine auf #$04 (oder andere) eingestellt. Das soll ja auch so sein.

    Ist der Druck nun aber abgeschlossen, so verbleibt die #$04 in der Adresse $BA

    Will man jetzt etwas vom zuletzt eingestelltem Laufwerk laden, dann funktioniert das halt nicht.

    Um das zu umgehen, und um sicher zu stellen das man alte Druckerroutinen weiter verwenden kann, werde ich noch eine kurze Routine einbauen, welche mir den Inhalt der Adresse sichert, dann die Druckerroutine aufruft, und danach wieder zurueck schreibt.

    Das sind nochmal zusaetzliche 10 Byte an Speicher, welche fuer Texte verloren gehen.


    Eine weitere Baustelle, ist die Verwendung von XF, dazu das

    Eine weitere Idee:


    wäre super wenn nicht nur XF ausgeführt werden könnte, sondern evtl XF0 - XF9

    Also das Cmd+X wiederum um eine Zifferneingabe ergänzen. Oder sogar alle alphanumerischen Zeichen?
    Und Cmd+X und Leertaste könnte wie bisher XF laden.


    Bislang muss man sich pro XF eine Diskette zurechtlegen, das müsste nicht sein

    Das ist ein Punkt, welchen man einarbeiten kann, damit wurde aber wieder mehr Textspeicher veloren gehen.


    Was ich mir vorstellen kann ist, dass man ein spezielles XF-File erstellt, in welchen man dann ein anderes XFx-File auswaehlen kann.

    Das bedeutet aber auch, das man erst das XF laden muss, und danach ein zweites XFx-File.

    Das schaue ich mir zu gegebener Zeit genauer an.


    Eine weitere Aregeng von Goodwell kam per PN.

    Und zwar geht es auch um die Druckerroutine.

    Ich zitiere:

    Quote

    ... Wärs möglich, beim Drucken auszuwählen, ob man Dev #4, Dev #5 oder UserPort will?

    Dementsprechend müsste natürlich das SETUP angepasst werden, sodass eben eine PRINTER4 PRINTER5 oder PRINTERU geschrieben wird

    (kann natürlich auch C für CENTRONICS statt U sein).

    Es ist so, das die Druckeradresse im entsprechendem Druckertreiber selbst hinterlegt ist.

    Moechte man wirklich unterschiedliche Adressen nutzen, so muss man fuer jeden Drucker eine Routine schreiben.


    Dann koennte man auch hier eine kurze Routine schreiben, welche dann die Auswahl auf die zu verwendete Druckerroutine gibt.

    So wie auch schon fuer den XF-Befehl vorgeschlagen.


    Auch das schaue ich mir zu gegebener Zeit genauer an.



    Bitte um Feedback zu meinen Vorschlaegen.


    P.S. mein C128D aus old Germany ist nach 9 Tagen heute hier bei mir in China eingetroffen.

    Der Zusatnd ist eine mittlere Katastophe;(


    MfG aus dem fernen China

    Claus