100 INTEGER : EXTEND 110 ! Ur Servicemanualen f|r ABC806 120 ! 130 ; CHR$(12) "Test av grafikminnet i ABC 806" 140 INPUT "Test med 4K- eller 32K-blockning (4/32) ? ";Bl 150 IF Bl=4 THEN 2000 160 IF Bl<>32 THEN 140 170 ! 180 ! 1000 ; CHR$(12) 1010 ; '*********** TEST AV 128K BYTE MINNET P] VU-KORTET ABC806 **************' 1020 ; '*********** med 32K blockning **************' 1030 DIM Ts$=4096,Ts1$=4096 1040 Ts$=STRING$(4096,128+32+8+2) : Ts1$=STRING$(4096,0) 1050 ! 1060 ! 1070 IF FNMemtest32 THEN ; 'Fel p} adress' FNAdr. 'i krets(?)' FNKrets$ 'Prova med att byta.' ELSE ; : ; 'Minnestest OK.' 1080 END 1090 ! 1100 ! 1110 DEF FNKrets$ LOCAL Raw$=2,Col$=21 1120 IF Adr AND 1 THEN Raw$='I' ELSE Raw$='H' 1130 IF Bit AND 128 THEN Col$=',12' 1140 IF Bit AND 64 THEN Col$=Col$+',11' 1150 IF Bit AND 32 THEN Col$=Col$+',10' 1160 IF Bit AND 16 THEN Col$=Col$+',9' 1170 IF Bit AND 8 THEN Col$=Col$+',8' 1180 IF Bit AND 4 THEN Col$=Col$+',7' 1190 IF Bit AND 2 THEN Col$=Col$+',6' 1200 IF Bit AND 1 THEN Col$=Col$+',5' 1210 RETURN Raw$+Col$ 1220 FNEND 1230 ! 1240 ! 1250 DEF FNAdr. LOCAL Sdata,Ldata 1260 Adr=1 1270 WHILE Adr<=4096 1280 IF MID$(Ts$,Adr,1)=MID$(Ts1$,Adr,1) THEN Adr=Adr+1 : WEND : RETURN 0 1290 Sdata=ASCII(MID$(Ts$,Adr,1)) : Ldata=ASCII(MID$(Ts1$,Adr,1)) 1300 Adr=Adr-1 1310 Bit=Sdata XOR Ldata AND 255 1320 RETURN (4096.*Bladr)+Adr 1330 FNEND 1340 ! 1350 ! 1360 DEF FNMemtest32 LOCAL Xmskriv,Xml{s 1370 Xmbl=0 1380 WHILE Xmbl<4 1390 Bladr=0 1400 WHILE Bladr<8 1410 Xmskriv=FNXm32(VARPTR(Ts$),Bladr*4096,Xmbl) 1420 Xml{s=FNXm32(Bladr*4096,VARPTR(Ts1$),Xmbl) 1430 IF Ts$<>Ts1$ THEN RETURN -1 1440 ; 'Block' Xmbl 'Adress' 4096*Bladr, : Bladr=Bladr+1 : WEND : Xmbl=Xmbl+1 : ; : WEND : RETURN 0 1450 FNEND 1460 ! 1470 ! 1480 DEF FNXm32(Fr}n,Till,Xmbl) LOCAL Mkod$=38,Ant,Adress,Move 1490 Mkod$=CHR$(243,197,62,5,6,104,14,35,203,248,237,121,237,65,197,33,0,0) 1500 Mkod$=Mkod$+CHR$(17,0,0,1,0,0,237,176,193,62,5,203,184,237,121,237,65) 1510 Mkod$=Mkod$+CHR$(193,251,201) 1520 Adress=VARPTR(Mkod$) 1530 Ant=4096 1540 OUT 6,Xmbl*16 1550 POKE Adress+16,Fr}n,SWAP%(Fr}n) 1560 POKE Adress+19,Till,SWAP%(Till) 1570 POKE Adress+22,Ant,SWAP%(Ant) 1580 Move=CALL(Adress) 1590 RETURN 0 1600 FNEND 1610 ! 1620 ! 2000 ! 2010 ; CHR$(12) 2020 ; '************** TEST AV 128K BYTE MINNET P] VU-KORTET ABC806 **********' 2030 ; '************** med 4 K blockning **********' 2040 ; 2050 ! 2060 DIM Ts$=4096,Ts1$=4096 2070 Ts$=STRING$(4096,0) : Ts1$=STRING$(4096,0) 2080 POKE VAROOT(Ts$)+2,0,0 2090 ! 2100 ! 2110 IF FNMemtest4 THEN ; 'Fel p} adress' FNAdr. ' i krets(?) ' FNKrets$ ' Prova med att byta.' ELSE ; : ; 'Minnestest OK.' 2120 END 2130 ! 2140 ! 2150 DEF FNMemtest4 LOCAL Xmskriv,Xml{s 2160 Bladr=0 2170 WHILE Bladr<32 2180 Xmskriv=FNXm4(VARPTR(Ts$),4096,Bladr) 2190 Xml{s=FNXm4(4096,VARPTR(Ts1$),Bladr) 2200 IF Ts$=Ts1$ THEN ; 'Block' Bladr, : Bladr=Bladr+1 : WEND : RETURN 0 2210 RETURN -1 2220 FNEND 2230 ! 2240 ! 2250 DEF FNXm4(Fr}n,Till,Xmembl) LOCAL Adress,Mkod$=35,Ant,Cpubl 2260 Mkod$=CHR$(243,197,6,0,62,0,14,52,203,255,237,121,197,33,0,0,17,0,0) 2270 Mkod$=Mkod$+CHR$(1,0,0,237,176,193,237,120,203,191,237,121,193,251,201) 2280 Adress=VARPTR(Mkod$) 2290 Ant=4096 2300 Cpubl=1 2310 POKE Adress+3,Cpubl*16 2320 POKE Adress+5,Xmembl 2330 POKE Adress+14,Fr}n,SWAP%(Fr}n) 2340 POKE Adress+17,Till,SWAP%(Till) 2350 POKE Adress+20,Ant,SWAP%(Ant) 2360 Z=CALL(Adress) 2370 RETURN 0 2380 FNEND