ACTION! Problem bei I/O mit externer Runtime
von Jac » Sa 14. Apr 2012, 00:14Hi,
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).
Ratlosigkeit....
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).
- 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....