System test software

Anything QL Software or Programming Related.
User avatar
Cristian
Aurora
Posts: 960
Joined: Mon Feb 16, 2015 1:40 pm
Location: Veneto

System test software

Post by Cristian »

Is the system test program mentioned in the service manual available somewhere?


User avatar
klausfrank
Chuggy Microdrive
Posts: 61
Joined: Wed Jan 26, 2011 10:47 am
Location: Silkeborg, Denmark

Re: System test software

Post by klausfrank »

I have a master - still working from a backup ! I have both microdrive and disc.
Regards


User avatar
Cristian
Aurora
Posts: 960
Joined: Mon Feb 16, 2015 1:40 pm
Location: Veneto

Re: System test software

Post by Cristian »

klausfrank wrote:I have a master - still working from a backup ! I have both microdrive and disc.
Regards
Great! I sent you a PM :)


User avatar
Outsoft
Super Gold Card
Posts: 695
Joined: Sat Apr 19, 2014 1:30 pm
Location: Italy
Contact:

Re: System test software

Post by Outsoft »

klausfrank wrote:I have a master - still working from a backup ! I have both microdrive and disc.
Regards
I don't remember If we have preserved or not ;)


Bytesguy
ROM Dongle
Posts: 29
Joined: Tue Mar 03, 2020 7:08 pm

Re: System test software

Post by Bytesguy »

Would anyone be. able to share this one with me, trying to debug my microdrive issues, it might prove useful. Thanks! :)


Chris_68
Bent Pin Expansion Port
Posts: 95
Joined: Thu Aug 31, 2023 1:44 pm

Re: System test software

Post by Chris_68 »

Hi, Sorry for stealing the thread, anyone willing to share the test program?

thanks in advance
/Chris


User avatar
klausfrank
Chuggy Microdrive
Posts: 61
Joined: Wed Jan 26, 2011 10:47 am
Location: Silkeborg, Denmark

Re: System test software

Post by klausfrank »

Send me a PM, and will what I can do.
Regards
Klaus


User avatar
Chr$
QL Wafer Drive
Posts: 1304
Joined: Mon May 27, 2019 10:03 am
Location: Sachsen, Germany
Contact:

Re: System test software

Post by Chr$ »

The program (below) that goes through and tests stuff (originally on the ROM of the factory test jig, here: https://qxl.win/test_jig_with_dongle.htm) is just in SuperBasic and tests mdv functions read/write etc etc, but it's not really much good for fault finding as it will just either pass or fail :? .

Code: Select all

1000 MODE 256
1010 set_scr
1015 REMark SYSCOMP V1.1
1020 REMark COMBINED SYS2/COMPATIBILITY
1030 REMark EDITED 19.9.85, C.Selby
1060 sv_respr=RESPR(10000)
1070 PAUSE 10
1080 test1
1085 STOP
1090 DEFine PROCedure test1
1100   display
1110   sound
1120   network
1130   rs_232_c
1140   keyboard
1150   joysticks
1160   clock
1170   mdrive
1190   complete
1200 END DEFine test1
1210 DEFine PROCedure set_scr
1220   WINDOW 512,256,0,0
1230   PAPER 0
1240   INK 7
1250   CLS
1260   WINDOW 400,200,50,20
1270   BORDER 4,255
1280 END DEFine 
1290 DEFine PROCedure display
1300   INK 7
1310   CLS
1320   PRINT "Display test:";
1330   FLASH 1:PAPER 7:INK 0:PRINT " FLASHING TEXT ":PAPER 0: INK 7:PRINT "              FLASHING TEXT":FLASH 0
1340   PRINT \"Colour test:"\
1350   FOR row=0 TO 7
1360     FOR col=0 TO 7
1370       INK row:STRIP col
1380       PRINT "Test";
1390     END FOR col
1400     PRINT \
1410   END FOR row
1420   STRIP 5:INK 2
1430   PRINT "Display test complete"\"Type OK to continue"
1440   STRIP 0:INK 4
1450   REPeat l:a$=INKEY$:IF a$="o" OR a$="O" THEN EXIT l
1460   PRINT "O";
1470   REPeat l1:a$=INKEY$:IF a$="k" OR a$="K" THEN EXIT l1
1480   PRINT "K"
1490   PAUSE 50
1500 END DEFine display
1510 DEFine PROCedure sound
1520 INK 7
1530 CLS:PRINT "Sound test"\\"Two cycles of Trimphone"
1540 PRINT "followed by low pitch tone"
1550 FOR l=1 TO 2
1560 FOR m=1 TO 2
1570 FOR n=1 TO 6+2*m
1580 BEEP 100,1
1590 a$=INKEY$(1)
1600 END FOR n
1610 a$=INKEY$(20)
1620 END FOR m
1630 a$=INKEY$(50)
1640 END FOR l
1650 BEEP 0,240:PRINT \\
1660 PRINT "Sound test complete"\\
1670 STRIP 5:INK 2
1680 PRINT "If sound OK, type OK to continue"
1690 REPeat l2:a$=INKEY$:IF a$="o" OR a$="O" THEN EXIT l2
1700 STRIP 0:INK 4:PRINT "O";
1710 REPeat l3:a$=INKEY$:IF a$="k" OR a$="K"THEN EXIT l3
1720 PRINT "K"
1730 BEEP
1740 END DEFine sound
1750 DEFine PROCedure network
1760 INK 7
1770 CLS:PRINT "Network test: ";
1780 tmode=PEEK(164000):POKE 164000,24
1790 POKE 98306,24
1800 IF PEEK(98336)MOD 2 THEN INK 2:PRINT "Failed":STOP
1810 POKE 98306,152
1820 IF PEEK(98336)MOD 2<>1 THEN INK 2:PRINT "Failed":STOP
1830 INK 4:PRINT "OK"
1840 POKE 98339,tmode:POKE 164000,tmode
1850 PAUSE 50
1860 END DEFine network
1870 DEFine PROCedure rs_232_c
1880 CLS:INK 7
1890 PRINT "RS-232-C loopback test"
1900 STRIP 0:INK 7
1910 OPEN#3;ser1:OPEN#4;ser2
1920 FOR n=9600,4800,2400,1200,600,300,75
1930 BAUD n
1940 PRINT n;" baud: ";
1950 IF n=9600 THEN 
1960   t$="1234567890abcdefghijklmnopqrstuvwxyz"
1970   t$=t$ & t$ & t$
1980   FOR i=1 TO 19
1990   rssub
2000   NEXT i
2010 ELSE 
2020   t$="Test"
2030   rssub
2040 END IF 
2050 INK 4
2060 PRINT "OK"
2070 INK 7
2080 END FOR n
2090 CLOSE#3:CLOSE#4
2100 PRINT \"RS-232-C test complete"
2110 END DEFine rs_232_c
2120 DEFine PROCedure rssub
2130 PRINT#3;t$:PRINT#4;t$
2140 INPUT#3;a$
2150 INK 2
2160 IF a$<>t$ THEN PRINT "failed":STOP
2170 INPUT#4;b$
2180 IF b$<>t$ THEN PRINT "failed":STOP
2190 END DEFine srsub
2200 DEFine PROCedure keyboard
2210 BORDER 4,255
2220 CLS:CURSOR 0,80
2230 STRIP 0:PRINT "Keyboard test"\\
2240 STRIP 5:INK 0:PRINT "Press the dark blue key":STRIP 0:INK 7
2250 CURSOR 0,0
2260 row1$="F1Es1 2 3 4 5 6 7 8 9 0 - = ` \ "
2270 row2$="F2TaQ W E R T Y U I O P [ ] "
2280 row3$="F3CLA S D F G H J K L ; ' En"
2290 row4$="F4ShZ X C V B N M , . / Sh"
2300 row5$="F5CtLeRiSpUpDoAl"
2310 STRIP 0:INK 7
2320 PRINT row1$\row2$\row3$\row4$\row5$
2330 x=0
2340 FOR n=232,27,49,50,51,52,53,54,55,56,57,48,45,61,96,92
2350 CURSOR x*12,0
2360 STRIP 1:PRINT row1$(x+1 TO x+2);
2370 REPeat loop:IF CODE(INKEY$(-1))=n THEN EXIT loop
2380 CURSOR x*12,0
2390 STRIP 4:PRINT row1$(x+1 TO x+2);
2400 x=x+2
2410 END FOR n
2420 x=0
2430 FOR n=236,9,113,119,101,114,116,121,117,105,111,112,91,93
2440 CURSOR x*12,10
2450 STRIP 1:PRINT row2$(x+1 TO x+2);
2460 REPeat loop2:IF CODE(INKEY$(-1))=n THEN EXIT loop2
2470 CURSOR x*12,10
2480 STRIP 4:PRINT row2$(x+1 TO x+2);
2490 x=x+2
2500 END FOR n
2510 CURSOR 0,20:STRIP 1:PRINT "F3";
2520 REPeat loop3:IF CODE(INKEY$(-1))=240 THEN EXIT loop3
2530 CURSOR 0,20:STRIP 4:PRINT "F3";
2540 STRIP 1:PRINT "CL";
2550 caps=40*16^3+136
2560 REPeat loop4:IF PEEK_W(caps)<>0 THEN POKE_W caps,0:EXIT loop4
2570 CURSOR 24,20:STRIP 4:PRINT "CL";
2580 x=4
2590 FOR n=97,115,100,102,103,104,106,107,108,59,39,10
2600 CURSOR x*12,20
2610 STRIP 1:PRINT row3$(x+1 TO x+2);
2620 REPeat loop5:IF CODE(INKEY$(-1))=n THEN EXIT loop5
2630 CURSOR x*12,20
2640 STRIP 4:PRINT row3$(x+1 TO x+2);
2650 x=x+2
2660 END FOR n
2670 CURSOR 0,30:STRIP 1:PRINT "F4";
2680 REPeat loop6:IF CODE(INKEY$(-1))=244 THEN EXIT loop6
2690 CURSOR 0,30:STRIP 4:PRINT "F4";
2700 STRIP 1:PRINT "Sh";
2710 REPeat loop7:IF KEYROW(7)=1 THEN EXIT loop7
2720 CURSOR 24,30:STRIP 4:PRINT "Sh";
2730 x=4
2740 FOR n=122,120,99,118,98,110,109,44,46,47
2750 CURSOR x*12,30
2760 STRIP 1:PRINT row4$(x+1 TO x+2);
2770 REPeat loop8:IF CODE(INKEY$(-1))=n THEN EXIT loop8
2780 CURSOR x*12,30
2790 STRIP 4:PRINT row4$(x+1 TO x+2);
2800 x=x+2
2810 END FOR n
2820 STRIP 1:PRINT "Sh";
2830 REPeat loop9:IF KEYROW(7)=1 THEN EXIT loop9
2840 STRIP 4:CURSOR 288,30:PRINT "Sh";
2850 STRIP 1:CURSOR 0,40:PRINT "F5";
2860 REPeat loop9:IF CODE(INKEY$(-1))=248 THEN EXIT loop9
2870 STRIP 4:CURSOR 0,40:PRINT "F5";
2880 STRIP 1:PRINT "Ct";
2890 REPeat loop10:IF KEYROW(7)=2 THEN EXIT loop10
2900 CURSOR 24,40:STRIP 4:PRINT "Ct";
2910 x=4
2920 FOR n=192,200,32,208,216
2930 CURSOR x*12,40
2940 STRIP 1:PRINT row5$(x+1 TO x+2);
2950 REPeat loop11:IF CODE(INKEY$(-1))=n THEN EXIT loop11
2960 CURSOR x*12,40
2970 STRIP 4:PRINT row5$(x+1 TO x+2);
2980 x=x+2
2990 END FOR n
3000 STRIP 1:PRINT "Al";
3010 REPeat loop12:IF KEYROW(7)=4 THEN EXIT loop12
3020 STRIP 4:CURSOR 24*7,40:PRINT "Al"
3030 STRIP 0
3040 CURSOR 0,120:INK 4:PRINT "Keyboard test complete"
3050 PAUSE 50
3060 END DEFine keyboard
3070 DEFine PROCedure joysticks
3080 joy$="F1F2F3F4F5LeRiSpUpDo"
3090 CLS:PAPER 0:INK 7
3100 PRINT "Joystick test"
3110 STRIP 5:INK 0:PRINT "Plug in joystick test board"\"and type keys from left to right"
3120 CURSOR 0,60:STRIP 0:INK 7:PRINT joy$
3130 x=0
3140 FOR n=232,236,240,244,248,192,200,32,208,216
3150 CURSOR x*12,60:STRIP 1:PRINT joy$(x+1 TO x+2)
3160 REPeat loop12:IF CODE(INKEY$(-1))=n THEN EXIT loop12
3170 STRIP 4:CURSOR x*12,60:PRINT joy$(x+1 TO x+2)
3180 x=x+2
3190 END FOR n
3200 CURSOR 0,110:STRIP 0:INK 4:PRINT "Joystick test complete"
3210 PAUSE 50
3220 END DEFine joysticks
3230 DEFine PROCedure complete
3240   PAPER 0:INK 4:CLS
3250   CSIZE 1,1:CURSOR 50,60
3260   PRINT "QL test complete"
3270 END DEFine complete
3280 DEFine PROCedure clock
3290   CLS:PAPER 0:INK 7
3300   PRINT "Real-time clock test"\\
3310   PRINT "Reset test: ";
3320   rtc=24*16^3
3330   POKE rtc,0
3340   IF PEEK_L(rtc) THEN fail_rtc:RETurn 
3350   INK 4:PRINT "OK":INK 7
3360   PRINT "Step test: ";
3370   INK 2
3380   FOR n=1 TO 4
3390     FOR byte=0 TO 3
3400       POKE rtc+1,255-2^(byte+1)
3410       IF PEEK(rtc+3-byte)<>n THEN fail_rtc:RETurn 
3420     END FOR byte
3430   END FOR n
3440   INK 4:PRINT "OK":INK 7
3450   PRINT "Count test: ";
3460   POKE rtc,0
3470   PAUSE 180
3480   IF PEEK_L(rtc)<>3 THEN fail_rtc
3490   INK 4:PRINT "OK"
3500   INK 7
3510 END DEFine clock
3520 DEFine PROCedure fail_rtc
3530   failed=1
3540   INK 2:PRINT "Failed"
3550   INK 7
3560 STOP
3570   RETurn 
3580 END DEFine 
5000 DEFine PROCedure mdrive
5010 mdvtest
5012 compat
5013 END DEFine mdrive
5014 DEFine PROCedure compat
5020 set_scr
5050 REMark microdrive compatibility
5060 set_scr
5070 CSIZE 2,0
5080 rtc=24*16^3
5090 DIM dt(3,2)
5100 DIM t(2)
5110 DIM s(2)
5120 write
5130 setup
5140 readback
5150 dt(1,1)=t(1):dt(1,2)=t(2)
5160 swap
5170 setup
5180 readback
5190 dt(2,1)=t(1):dt(2,2)=t(2)
5200 swap
5210 setup
5220 readback
5230 dt(3,1)=t(1):dt(3,2)=t(2)
5240 test
5250 END DEFine compat
5260 DEFine PROCedure write
5265 CSIZE 2,1:PRINT "DRIVE COMPATIBILITY TEST":CSIZE 0,0
5270 AT 3,0 :PRINT"Writing onto microdrives..."
5280 FOR d=1 TO 2:SBYTES "mdv"&d&"_dump",0,32*1024
5290 END DEFine 
5300 DEFine PROCedure readback
5310 CLS
5320 FOR i=1 TO 2
5330 s(i)=PEEK_L(rtc)+1
5340 IF PEEK_L(rtc)<>s(i) THEN GO TO 5340
5350 LBYTES "mdv"&i&"_dump",131072
5360 set_scr
5370 t(i)=PEEK_L(rtc)-s(i)
5380 CLS
5390 NEXT i
5400 PRINT "Times were ";t(1);" & ";t(2)
5410 END DEFine 
5420 DEFine PROCedure swap
5430 AT 3,6:PRINT "Swap cartridges"
5440 AT 4,6:PRINT "then press space bar"
5450 PAUSE
5460 END DEFine 
5470 DEFine PROCedure setup
5480 PRINT \"Setting up..."
5490 DIR mdv1_:DIR mdv2_
5500 PAUSE 100
5510 END DEFine 
5520 DEFine PROCedure output
5530 CLS
5540 PRINT:PRINT
5550 PRINT "   Times were"
5560 PRINT
5570 FOR i=1 TO 3
5580 PRINT "   Run ";i;":   ";dt(i,1),dt(i,2)
5590 NEXT i
5600 END DEFine 
5610 DEFine PROCedure test
5620 REMark 
5630 IF dt(1,1)<=8 AND dt(1,2)<=8 AND dt(2,1)<=8 AND dt(2,2)<=8 AND dt(3,1)<=8 AND dt(3,2)<=8 THEN 
5640 pass
5650 ELSE 
5660 fail
5670 END IF 
5680 END DEFine 
5690 DEFine PROCedure pass
5700 output
5710 PRINT:PRINT
5720 PRINT"     DRIVES PASSED":CSIZE 2,0
5725 PAUSE 100
5730 END DEFine 
5740 DEFine PROCedure fail
5750 output
5760 PRINT:PRINT
5770 FLASH 1:PRINT"     REJECT UNIT"\"     RECORD DETAILS"\"     HAND TO FAULT FINDING":FLASH 0:CSIZE 2,0
5780 END DEFine 
5790 DEFine PROCedure update
5800 DELETE mdv1_mcomp:SAVE mdv1_mcomp
5810 END DEFine 
5820 DEFine PROCedure mdvtest
5830 MODE 256
5840 set_scr
5845 PRINT "PLACE BLANK TAPES IN DRIVES"\"AND PRESS SPACE..."
5847 BEEP 150,2:PAUSE 5:BEEP 150,2:PAUSE
5850 REMark MICRODRIVE TEST
5890 sv_respr=RESPR(10000)
5900 PAUSE 10
5910 scrset 1
5920 spin 1
5930 mdtest 1
5940 PAUSE 40
5950 scrset 2
5960 spin 2
5970 mdtest 2
5980 END DEFine mdvtest
5990 DEFine PROCedure scrset (drive)
6000   WINDOW 512,256,0,0
6010   PAPER 0
6020   INK 7
6030   CLS
6040   WINDOW 400,200,50,20
6050   BORDER 4,255
6060  CSIZE 2,1: PRINT "MICRODRIVE ";drive;" FORMAT TEST"
6070 CSIZE 0,0
6080 END DEFine 
6090 DEFine PROCedure mdvr(drive)
6100 REMark (run,write & erase)
6110   POKE 164000,24
6120   POKE 98336,3:POKE 98336,1
6130 IF drive = 2 THEN POKE 98336,2 : POKE 98336,0
6140   POKE 98336,12
6150 END DEFine 
6160 DEFine FuNction ftest(drive)
6170   LOCal total,bad,errcode
6180   INK 0:STRIP 5
6190   formt(drive)
6200   INK 7:STRIP 0
6210   IF errcode THEN INK 7:PRINT\"Format failed"
6220   IF total<214 THEN errcode=1:INK 7:PRINT\ "Total sectors too low"
6230   IF total>225 THEN errcode=1:INK 7:PRINT\"Total sectors too high"
6240   IF bad>7 THEN errcode=2:INK 7:PRINT "Too many bad sectors:"
6250   PRINT "Bad/total sectors:"!bad;"/";total
6260   RETurn errcode
6270 END DEFine 
6280 DEFine PROCedure formt(drive)
6290   LOCal drive$,n
6300   drive$="mdv"&drive&"_test"
6310   POKE_W sv_respr+8,LEN(drive$)
6320   FOR n=1 TO LEN(drive$):POKE sv_respr+9+n,CODE(drive$(n))
6330   CALL 63488,sv_respr:REMark hex F800
6340   errcode=PEEK_L(sv_respr)
6350   total=PEEK_W(sv_respr+6)
6360   bad=total-PEEK_W(sv_respr+4)
6370 END DEFine 
6380 DEFine FuNction ftest1(drive)
6390     IF ftest(drive) THEN RETurn 1
6400   END IF 
6410   RETurn 0
6420 END DEFine 
6430 DEFine PROCedure mdtest(drive)
6450   IF ftest1(drive) THEN 
6460       STRIP 0:INK 7
6470      FLASH 1: PRINT "Failed microdrive test": FLASH 0
6480 BEEP 10000,50
6490 STOP
6500   END IF 
6510   INK 7:STRIP 0
6520   PRINT "Microdrive"!drive!"test OK"
6530 BEEP 5000,4
6540   PAUSE 100
6550 END DEFine 
6560 DEFine PROCedure save_data_io
6570   OPEN#4;ser1
6580   PRINT#4;CHR$(0);CHR$(255);
6590   CLOSE#4
6600   PAUSE 50
6610   SAVE ser1
6620 END DEFine save_data_io
6630 DEFine PROCedure spin (drive)
6640   POKE 98336,3:POKE 98336,1
6650 IF drive = 2 THEN POKE 98336,2 : POKE 98336,0
6660 PAUSE 350: POKE 98336,2:POKE 98336,0
6670 IF drive = 1 THEN POKE 98336,2 : POKE 98336,0
6680 END DEFine 


https://QXL.WIN
Collector of QL related computers, accessories and QL games/software.
Ask me about felt pads - I can cut them to size and they have proved excellent for mdv data recovery.
Chris_68
Bent Pin Expansion Port
Posts: 95
Joined: Thu Aug 31, 2023 1:44 pm

Re: System test software

Post by Chris_68 »

Hi,

Great thank you, now I just have to figure out how to copy it to vdrive and run it,

Regards
Chris


User avatar
Chr$
QL Wafer Drive
Posts: 1304
Joined: Mon May 27, 2019 10:03 am
Location: Sachsen, Germany
Contact:

Re: System test software

Post by Chr$ »

Copy that text into a normal text file (not with windows standard notepad!), then copy it into an .mdv file.... oh hang on, just use this .mdv image in vDrive! Then load the SYSCOMP_BAS file.
Attachments
SYStest.zip
(6.42 KiB) Downloaded 45 times


https://QXL.WIN
Collector of QL related computers, accessories and QL games/software.
Ask me about felt pads - I can cut them to size and they have proved excellent for mdv data recovery.
Post Reply