ACTION! Problem bei I/O mit externer Runtime

Bild Alles zum Thema Programmierung
Bild All around programming

Moderatoren: Sven, Sleepy, Wolfgang, cas, des-or-mad

ACTION! Problem bei I/O mit externer Runtime

Beitragvon Jac » Fr 13. Apr 2012, 23:14

Hi,

Ich habe eine Kleine BLOAD Routine geschrieben. Solange die Runtime des Module verwendet wird, ist alles in Butter. Wenn ich die Runtime von Disk nehme, geht's nach dem 2-5 BGET in die Hose. Erstrichtig (ROM), dann falsch (Disk).

Error-BLOAD-Rom.png
OK
Error-BLOAD-Rom.png (7.33 KiB) 1223-mal betrachtet
Error-BLOAD-Runtime.png
Nicht OK
Error-BLOAD-Runtime.png (7.51 KiB) 1223-mal betrachtet

Code: Alles auswählen
; GET A BLOCK OF DATA
PROC BGET(BYTE CHANNEL, BYTE ARRAY ADR, CARD LEN)
  BYTE OFFSET


  PRINTF("%I %H %H%E",CHANNEL,ADR,LEN)

  OFFSET=CHANNEL LSH 4
  POKE($342+OFFSET,7)
  POKEC($344+OFFSET,ADR)
  POKEC($348+OFFSET,LEN)
  CIOV2(0,OFFSET)
RETURN


PROC BLOAD_ERROR_EOF(BYTE ERROR_CODE)
  ERROR=BLOAD_ERROR
; IF ERROR_CODE=136 THEN
  BLOAD_DONE=1
; FI 
RETURN

; GET A BLOCK OF DATA     
PROC BLOAD(BYTE CHANNEL)
  BYTE OFFSET
  BYTE STATUS
  BYTE ARRAY BLOAD_BUFFER=$400
  BYTE ARRAY BLOAD_BUFFER2=$402
  CARD BLOAD_START=$400
  CARD BLOAD_END=$402

  OFFSET=CHANNEL LSH 4
  BLOAD_ERROR=ERROR
  BLOAD_DONE=0
  DO
    ERROR=BLOAD_ERROR_EOF
    BGET(CHANNEL,BLOAD_BUFFER,2)
    STATUS=PEEK($343+OFFSET)
    ERROR=BLOAD_ERROR
    IF STATUS=1 THEN
      IF (BLOAD_BUFFER(0)=$FF AND BLOAD_BUFFER(1)=$FF) THEN
        BGET(CHANNEL,BLOAD_BUFFER,4)
      ELSE
        BGET(CHANNEL,BLOAD_BUFFER2,2)
      FI
      BGET(CHANNEL,BLOAD_START,BLOAD_END-BLOAD_START+1)
    FI

  UNTIL STATUS<>1 OR BLOAD_DONE=1
  OD
  IF STATUS<>1 AND STATUS<>136 THEN
    PRINTBE(STATUS)
    DO
    OD
  FI   
RETURN


Ratlosigkeit.... :?
Dateianhänge
bug.zip
Source, ATARI Format mit $9b
(3.51 KiB) 95-mal heruntergeladen
Jac
Star Poster
Star Poster
 
Beiträge: 458
Registriert: Do 1. Jan 1970, 01:00
Wohnort: 66822 Lebach

Re: ACTION! Problem bei I/O mit externer Runtime

Beitragvon eda70 » Sa 14. Apr 2012, 07:56

Welche Runtime nimmst du denn?

Edit: Ah, die Finzel -cas -Version
Ich bin mir nicht sicher, ob die 100% entfehlert ist. Auf jeden Fall ist sie stellenweise deutlich langsamer als die originale Runtime.
Das es mit der Cart geht und ohne nicht spricht m.E. auch dafür, dass es an der RT liegt...
Benutzeravatar
eda70
Super Poster
Super Poster
 
Beiträge: 1000
Registriert: Do 1. Jan 1970, 01:00

Re: ACTION! Problem bei I/O mit externer Runtime

Beitragvon FlorianD » Sa 14. Apr 2012, 22:12

ich bin mir nicht ganz sicher, aber ich glaube,
UNTIL mit komplexen Ausdrücken (z.B. A=1 AND B=0) geht nicht immer. UNTIL kann nur einen Ausdruck sicher auswerten.
Workaround: vorher mit IF ... THEN einen einfachen ausdruck basteln.

ausserdem sehe ich in Deinem Code nicht,wo BLOAD_ERROR definiert wird. Fehlen da noch Code-Teile?
RUN $E477
--
Benutzeravatar
FlorianD
Night&Day Poster
Night&Day Poster
 
Beiträge: 1609
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Frankfurt am Main


Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron