Login
Back to forumSee the full topicGo to last reply

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





Back to top


Copyright © Plus/4 World Team, 2001-2024