From 27e2b86965abf1fceee0313c1bfef5a541df2b5b Mon Sep 17 00:00:00 2001 From: Jali Date: Tue, 21 Feb 2023 19:04:06 +0100 Subject: [PATCH] Allow mload to handle more than 255 bytes --- src/bas/mlloader.bas | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/bas/mlloader.bas b/src/bas/mlloader.bas index aacca05..299810d 100644 --- a/src/bas/mlloader.bas +++ b/src/bas/mlloader.bas @@ -46,12 +46,15 @@ 2100INPUT "Filename: ";H$ 2110WAIT:PRINT "Press PLAY on Tape" 2120WAIT0:PRINT "Loading ";H$ -2130DIM V(B-A) +2130DIM V((B-A)/255,255) 2140OPEN "CAS:"+H$ FOR INPUT -2150INPUT#1,V +2150INPUT#1,V(*) 2160CLOSE +2165C=0:D=0 2170FOR I=A TO B -2180POKE I,V +2180POKE I,V(C,D) +2185D=D+1 +2186IF D>255 THEN D=0:=C+1 2190NEXT I 2999RETURN 3000REM Saves a memory area to disk @@ -67,12 +70,15 @@ 3100INPUT "Filename: ";H$ 3110WAIT:PRINT "Press RECORD on Tape" 3120WAIT0:PRINT "Saving ";H$ -3130DIM V(B-A) -3140FOR I=1 TO B-A -3150V(I)=PEEK(A+I-1) +3130DIM V((B-A)/255,255) +3135C=0:D=0 +3140FOR I=A TO B +3150V(C,D)=PEEK(I) +3155D=D+1 +3156IF D>255 THEN D=0:C=C+1 3160NEXT I 3170OPEN "CAS:"+H$ FOR OUTPUT -3180PRINT#1,V +3180PRINT#1,V(*) 3190CLOSE 3999RETURN 4000REM Compares a memory area with the file on disk @@ -88,11 +94,14 @@ 4100INPUT "Filename: ";H$ 4110WAIT:PRINT "Press PLAY on Tape" 4120WAIT0:PRINT "Loading ";H$ -4130DIM V(B-A) +4130DIM V((B-A)/255,255) 4140OPEN "CAS:"+H$ FOR INPUT -4150INPUT#1,V +4150INPUT#1,V(*) 4160CLOSE -4170FOR I=1 TO B-A -4180IF V(I) <> PEEK(A+I-1) THEN PRINT "Error at address ";A;" Expected ";PEEK(A+I-1);" GOT ";V(I):BREAK +4165C=0:D=0 +4170FOR I=A TO B +4180IF V(C,D) <> PEEK(I) THEN PRINT "Error at address ";I;" Expected ";PEEK(I);" GOT ";V(C,D):BREAK +4185D=D+1 +4186IF D>255 THEN D=0:C=C+1 4190NEXT I 4999RETURN