Posted By
JamesC on 2014-11-14 18:01:43
| Re: 1541-II drive memory test
Okay, so the 1541 isn't keeping up after all.
After a few edits of the code above, I was able to get the 1541 and 1581 to get all the way through the test. To accomplish this, I had to blank screen, much like how the 16 blanks the screen when accessing the tape drive.
Working version of Craftsman's program: (in the first post) 0 TED=PEEK(65286):POKE65286,11 1 F=768:L=2047:A=40960:OPEN1,8,15:FORI=FTOL:C=PEEK(A+I):H%=I/256:L%=I-H%*256 2 PRINT#1,"M-W";CHR$(L%);CHR$(H%);CHR$(1);CHR$(C):PRINT".";:NEXTI:FORI=FTOL 3 C=PEEK(A+I):H%=I/256:L%=I-H%*256:PRINT#1,"M-R";CHR$(L%);CHR$(H%);CHR$(1) 4 GET#1,A$:IFLEN(A$)=0THENA$=CHR$(0):IFASC(A$)<>CTHENPRINT"X";:NEXTI:POKE65286,TED 5 PRINT"+";:NEXTI:POKE65286,TED
Working version of my program: 1 REM DRIVE BUFFER RAM TEST 5 TRAP 70 6 TED=PEEK(65286) 7 PRINT "CURRENT DISK STATUS:"DS$ 10 REM DECLARE VARIABLES 11 I = 0: D1 = 768: D2 = 2047: EC = 0: ED = 0: DB = 0 15 REM FILL THE DRIVE BUFFERS WITH ZEROES 16 PRINT "SENDING DATA TO DRIVE, PASS #1" 17 OPEN 1,8,15 : POKE65286,11 : REM ON 128, USE FAST INSTEAD 18 FOR I = D1 TO D2 19 : H = I/256: L = I - (H*256) 20 : PRINT#1,"M-W";CHR$(L);CHR$(H);CHR$(1);CHR$(DB) 22 NEXT I:CLOSE1 25 REM VERIFY THE DRIVE BUFFERS 26 PRINT "GETTING DATA FROM DRIVE, PASS #1" 27 OPEN 1,8,15 28 FOR I = D1 TO D2 29 : H = I/256: L = I - (H*256) 30 : PRINT#1,"M-R";CHR$(L);CHR$(H);CHR$(1) 31 : GET#1,A$: IF A$="" THEN A$=CHR$(0) 32 : IF A$ <> CHR$(DB) THEN EC = EC + 1 34 NEXT I:CLOSE1 40 REM FILL THE DRIVE BUFFERS WITH 255 41 DB = 255: PRINT "SENDING DATA TO DRIVE, PASS #2" 42 OPEN 1,8,15 43 FOR I = D1 TO D2 44 : H = I/256: L = I - (H*256) 45 : PRINT#1,"M-W";CHR$(L);CHR$(H);CHR$(1);CHR$(DB) 47 NEXT I:CLOSE1 50 REM VERIFY THE DRIVE BUFFERS 51 PRINT "GETTING DATA FROM DRIVE, PASS #2" 53 OPEN 1,8,15 54 FOR I = D1 TO D2 55 : H = I/256: L = I - (H*256) 56 : PRINT#1,"M-R";CHR$(L);CHR$(H);CHR$(1) 57 : GET#1,A$: IF A$="" THEN A$=CHR$(0) 58 : IF A$ <> CHR$(DB) THEN ED = ED + 1 60 NEXT I: CLOSE1: POKE65286,TED : REM ON 128 USE SLOW INSTEAD 65 PRINT"LOOP 1 ERROR COUNT"EC 66 PRINT"LOOP 2 ERROR COUNT"ED 67 END 70 REM ERROR TRAP. THIS WILL ONLY SEE PROGRAM ERRORS, NOT DRIVE ERRORS. 71 PRINT"ERROR!": POKE 65286,TED: REM ON 128 USE SLOW INSTEAD 72 PRINT"COMPUTER ERROR STATUS:"ERR$(ER) 73 PRINT"I/O STATUS:"ST 74 PRINT"DRIVE ERROR STATUS:"DS$ 75 PRINT"INDEX LOOP (768 TO 2047):"I 76 CLOSE1 77 PRINT"LOOP 1 ERROR COUNT"EC 78 PRINT"LOOP 2 ERROR COUNT"ED 79 PRINT"DRIVE CHANNEL CLOSED. PROGRAM STOPPED.": END
|