Hello, Guest the thread was called642 times and contains 20 replays

last post from muffi at the

Fehlercode der 1541 als Zahl auslesen

  • Ich möchte gerne den Fehlercode einer Floppy als Zahl und nicht als Zeichen auslesen.

    Wenn ich z.B. die Fehlermeldung "62, FILE NOT FOUND,00,00" habe, dann benötige ich die 62 als Zahl

    und nicht als ASCII Zeichen 36 und 32.

    Ich würde gerne eigene Fehlermeldungen generieren und benötige dafür den Zahlencode um damit

    weiterzuarbeiten. Entsprechend soll natürlich anschließend der Status auch wieder auf 00 gesetzt werden.

    Leider finde ich in keinem Buch ein Programmbeispiel um das Problem zu lösen.

  • Vom ASCII-Code der ersten Ziffer $30 abziehen, mit 10 multiplizieren (zB durch die leicht mit LSL und Addition umsetzbare Äquivalenz "10 * x = (8 + 2) * x = (8 * x) + (2 * x)"), den ASCII-Code der zweiten Ziffer addieren, nochmal $30 abziehen.


    Der Status wird vom Laufwerk automatisch wieder auf "00,OK,00,00" gesetzt wenn man die komplette Fehlermeldung gelesen hat.

  • Dein Denkfehler ist, dass du denkst, dass Assembler die gleichen Variablentypen hätte, wie Basic.

    Die Floppy liefert einfach Zeichen und der Basic Input-Befehl macht einen numerischen Wert daraus. Die Umwandlung erledigt der Basic-Interpreter.


    Bist du sicher, dass du das in Assembler machen möchtest? ;)

  • So sah das bei Soulless 2 aus. Ich meine, beim Testen hatte ich dann schön File Not Found, oder Device not ready bekommen. Mit folgenden Fehlercodes:


    ;BAD SUBSCRIPT $12 18

    ;NEXT WITHOUT FOR $0A 10

    ;BREAK $1E 30

    ;NOT INPUT FILE $06 6

    ;CAN'T CONTINUE $1A 26

    ;NOT OUTPUT FILE $07 7

    ;DEVICE NOT PRESENT $05 5 OUT OF DATA $0D 13

    ;DIVISION BY ZERO $14 20 $BB8A OUT OF MEMORY $10 16 $A435

    ;FILE DATA $18 24 $AB66 OVERFLOW $0F 15 $B97E

    ;FILE NOT FOUND $04 4 REDIM'D ARRAY $13 19

    ;FILE NOT OPEN $03 3 RETURN WITHOUT GOSUB $0C 12 $A8E0

    ;FILE OPEN $02 2 STRING TOO LONG $17 23 $A571

    ;FORMULA TOO COMPLEX $19 25 $B4D0 SYNTAX $0B 11 $AF08

    ;ILLEGAL DEVICE NUMBER $09 9 TOO MANY FILES $01 1

    ;ILLEGAL DIRECT $15 21 $B3AB TYPE MISMATCH $16 22 $AD99

    ;ILLEGAL QUANTITY $0E 14 $B248 UNDEF'D FUNCTION $1B 27 $B3AE

    ;LOAD $1D 29 $E19D UNDEF'D STATEMENT $11 17 $A8E3

    ;MISSING FILENAME $08 8 VERIFY $1C 28



  • Vorsicht, die Nummern von Kernal-I/O-Fehlern (z.B. 4 = file not found, 5 = device not present) sind etwas komplett anderes als die Nummern von den verschiedenen DOS-Status-Meldungen (z.B. 20 bis 24 = read error, 62 = file not found, ...).


    EDIT: Endurions Liste enthält auch noch Basic-Fehlernummern, diese erweitern die Kernal-I/O-Fehlernummern: Bis einschließlich 9 sind es I/O-Fehler vom Kernal, ab 10 sind es Fehler des Basic-Interpreters.

  • Ich verlinke mal an ein von mir gesuchtes Programm, mit dem man die Fehlermeldung der 1541 als String ausgeben kann.

    Vielleicht kann es dir weiterhelfen.

    Suche Floppy-Fehlerkanal Programm aus einer 64'er

    :)


    Ich weiß aber bis heute noch nicht, wo diese Programm abgedruckt war.

  • Hab dir mal was in dem alten Thread geantwortet. Kommt anscheinend nicht auf die Startseite, weil das Thema ALT! ist?


    EDIT: Nun ist es doch auf der Startseite.

  • Ich setze das mal hier fort, weil es jetzt um das 64er-Programm geht.


    Also, ich finde das Programm ja wie gesagt interessant, auch wenn ich den praktischen Nutzen nicht unbedingt sehe. :)


    Habe mal aus Neugier die Binärdatei genommen und so gut ich konnte reassembliert und mit Kommentaren versehen. Vielleicht ist das ja auch für den einen oder anderen ebenfalls interessant.


    Hier also noch der Code: