10 ! TEST806C.BAS 1000 ! *********************************************************************** 1010 ! * 1020 ! * Testprogram f|r ABC 806 " 1030 ! * (c) Luxor Datorer AB Motala SWEDEN 1040 ! * Ver 1.0 1.1 1.2 1.3 1.4 1050 ! * 1060 ! * 1070 ! *********************************************************************** 1080 ! 1085 EXTEND : INTEGER 1090 Sysname$="ABC806" 1100 Ver$="Ver:1.1 18 Oct-83" 1110 Q=FNInit 1130 ! 1140 ON ERROR GOTO 1140 1160 Piltext$="Tryck tangent f|r }terg}ng till huvudprog" 1162 Text1$="Tryck tangent " 1170 ! 1180 ! ********************************************************************** 1190 ! * 1200 ! 1210 ! ******************************************************************** 1220 ! * 1230 ! * Meny 1240 ! * 1250 RESTORE 1260 ; CHR$(12) ' System test ';Sysname$;'  Program ';Ver$ 1270 ; STRING$(PEEK(65364),ASCII('=')) 1280 ; CUR(5,45) "--> BASIC ver:";Basicver$ CUR(5,63) "typ:";Basictyp$ 1290 ; CUR(6,45) "--> DOS ver:" Dosver$;CUR(6,63) "typ:";Dostyp$ 1300 ; CUR(8,45) "--> WIDTH i startmode:" Startmode$ 1310 ; CUR(4,5);"0 Automatstegning av test" 1320 ; CUR(5,5);"1 Tangent test" 1330 ; CUR(6,5);"2 Teckengenerator test" 1340 ; CUR(7,5);"3 Attribute test" 1350 ; CUR(8,5);"4 Width 40/80 test" 1360 ; CUR(9,5);"5 HR test" 1370 ; CUR(10,5);"6 System test" 1380 ; CUR(11,5);"7 Slut" 1390 ! ; CUR(12%,5%);"8 ABC NET test (Ej Implementerad)" 1400 ! ; CUR(13%,5%);"9 BUSS Test (Ej Implementerad)" 1410 ; CUR(16,11);"V{lj |nskad rutin."; 1420 IF Auto=0 THEN INPUT F ELSE F=F+1 1430 ; CUR(F+4,1) "-->" 1440 Q=FNDelay 1450 IF F=0 THEN Auto=1 1460 IF F=1 THEN ; FNTangentbordstest$; 1470 IF F=2 THEN Q=FNChartest 1480 IF F=3 THEN Q=FNAttest 1490 IF F=4 THEN Q=FNModetest 1500 IF F=5 THEN Q=FNHrtest 1510 IF F=6 THEN CHAIN 'RAM:SYS806T' 1520 IF F=7 THEN ; : ; : ; : ; : ; : ; : CHAIN 'nul:' 1530 ! IF F=8 THEN Q=FNNettest 1540 ! IF F=9 THEN CHAIN 'MEM:30' 1550 GOTO 1250 1560 ! 1570 ! 1580 ! ******************************************************************** 1590 ! * 1600 ! * Tangentbords test 1610 ! * 1620 DEF FNTangentbordstest$ 1630 ! 1640 ! 1650 ON FNKeymeny RESTORE 2270 1660 ; TAB(4); : INPUT "Ska ASCII v{rdestest |verhoppas (J/N)"A$ 1670 IF A$="J" OR A$="j" THEN 1700 1680 Slask=FNKeytest 1690 ; 'Tryck RETURN '; : GET X$ : Q=FNLjudtest 1700 RETURN '' 1710 FNEND 1720 DEF FNKeymeny LOCAL Slask$=160 1730 ; CHR$(12) ' Tangentbordstest  ';Sysname$ 1740 ; STRING$(PEEK(65364),ASCII('=')) 1750 Slask=FNS{ndkbtest 1751 ; CHR$(12) 1760 ; CUR(3,5) 'Tryck genom alla tangenter:' 1770 ; CUR(5,5) '1 till Mellanslag (Alfanumeriska)' 1790 ; CUR(7,5) 'PF1 till PF8 (Funktions)' 1800 ; CUR(9,5) '0 till . (Numeriska)' 1810 ; : ON ERROR GOTO 1730 1820 Slask$='1' : ! INPUT 'Vilket land (1-9): 'Slask$ : ON ERROR GOTO 1830 IF LEN(Slask$)<>1 AND INSTR(1,'1',Slask$)=0 THEN 1730 1840 RETURN VAL(Slask$) 1850 FNEND 1860 DEF FNKeytest LOCAL Slask$=1,Readkey,Slask 1870 Slask=1 1880 READ Max 1890 WHILE Slask<>Max 1900 READ Readkey 1901 ; CUR(15,30); 1910 GET Slask$ 1911 ; CUR(15,0) STRING$(80,32); 1920 IF ASCII(Slask$)<32 OR ASCII(Slask$)>127 ; CUR(15,30); ELSE ; CUR(15,30) Slask$; 1930 IF ASCII(Slask$)<>Readkey THEN IF FNKeyfel(Readkey) THEN 1910 1940 Slask=Slask+1 1950 WEND 1955 ! ; Slask : STOP 1960 RETURN -1 1970 FNEND 1980 DEF FNKeyfel(Slask) 1990 IF Slask>127 THEN Slask$=FNPf$(Slask) 2000 IF Slask<=32 THEN Slask$=FNCtrl$(Slask) 2010 IF Slask$='' THEN Slask$=CHR$(Slask) 2020 ; CUR(15,30) CHR$(7);'Fel tangent!! Skall vara "' Slask$ '"'; 2030 Slask$='' 2040 RETURN -1 2050 FNEND 2060 DEF FNPf$(Slask) 2070 IF Slask>=240 THEN RETURN 'SHIFT+CTRL PF'+CHR$((Slask AND 7)+49) 2080 IF Slask>=224 THEN RETURN 'CTRL PF'+CHR$((Slask AND 7)+49) 2090 IF Slask>=208 THEN RETURN 'SHIFT PF'+CHR$((Slask AND 7)+49) 2100 IF Slask>=192 THEN RETURN 'PF'+CHR$((Slask AND 7)+49) 2110 RETURN '' 2120 FNEND 2130 DEF FNCtrl$(Slask) 2140 IF Slask=8 THEN RETURN '<-- (v{nster pil)' 2150 IF Slask=9 THEN RETURN '--> (h|ger pil)' 2160 IF Slask=13 THEN RETURN 'RETURN' 2170 IF Slask=24 THEN RETURN 'CE' 2180 IF Slask=32 THEN RETURN 'mellanslag' 2190 RETURN '' 2200 FNEND 2210 ! 2220 ! 2230 ! ****************************************************************** 2240 ! * 2250 ! * Tangentbords data 2260 ! * 2270 DATA 74 2280 DATA 49,50,51,52,53,54,55,56,57,48,43,96,60 2290 DATA 113,119,101,114,116,121,117,105,111,112,125,126,13 2300 DATA 97,115,100,102,103,104,106,107,108,124,123,39,8 2310 DATA 122,120,99,118,98,110,109,44,46,45,9,32 2360 DATA 192,193,194,195,196,197,198,199 2410 DATA 48,49,50,51,52,53,54,55,56,57,24,45,13,46 2420 ! * 2430 ! * LJUD GENERATOR TEST 2440 ! * 2450 DEF FNLjudtest 2460 ; CHR$(12) ' Ljudgenerator test  ';Sysname$,Ver$ 2470 ; STRING$(PEEK(65364),ASCII('=')) 2480 FOR I=1 TO 1000 : A=INP(5) : NEXT I 2490 OUT 34,7 : ! Beep 2500 RETURN 0 2510 FNEND 2520 ! 2530 ! 3030 ! 3040 ! 3050 ! ===== ABC 806 Character Test ===== 3060 ! 3070 DEF FNChartest 3075 Stat=0 3080 ; CHR$(12) CUR(0,0) ' System test  ';Sysname$,Ver$ 3090 ; CUR(1,0) STRING$(PEEK(65364),ASCII('=')) 3100 ; CUR(2,5) 'Kontroll av teckengenerator' 3110 ; CUR(15,70) 'De h{r tv}' 3111 ; CUR(16,70) 'raderna' 3112 ; CUR(17,70) 'skall vara' 3113 ; CUR(18,70) 'lika' 3140 Q=FNChargen 3160 ATTRIBUTE 1 3220 ; CUR(4,4) DBLE GRN Alfaver$ 3225 ; CUR(6,4) DBLE GRN Alfagem$ 3230 ; CUR(9,4) DBLE GRN Alfanum$ 3235 ; CUR(11,4) DBLE GRN Alfasp$ 3236 ; CUR(14,4) GRN NWBG DBLE GRED Graf1$ BLBG ' ' 3237 ; CUR(17,4) RED NWBG DBLE GGRN Graf2$ BLBG ' ' 3240 ; CUR(20,10) Piltext$; : GET A$ 3245 IF ASCII(A$)=13 THEN Stat=1 3250 RETURN Stat 3260 FNEND 3270 ! 3280 ! ===== CHARACTER INIT ===== 3290 ! 3300 DEF FNChargen 3380 Graf1$=' !"#$%&'+"'"+'()*+,-./0123456789:;<=>?' 3381 Graf2$='~}|{zyxwvutsrqponmlkjihgfedcba`' 3390 Alfaver$='ABCDEFGHIJKLMNOPQRSTUVWXYZ][\ ' 3400 Alfagem$='abcdefghijklmnopqrstuvwxyz}{| ' 3410 Alfasp$='!"#$%&/()=?+@`<>~^'+"'"+'*-_.:,;' 3420 Alfanum$="0 1 2 3 4 5 6 7 8 9 " 3440 Alfa$=Alfaver$+Alfagem$ 3480 RETURN 0 3490 FNEND 3500 ! 3620 ! ===== ABC 806 Mode test ===== 3630 ! 3640 DEF FNModetest 3650 Q=FNMode40 3660 Q=FNText40 3670 Q=FNMode80 3680 Q=FNText80 3690 RETURN 0 3700 FNEND 3710 ! 3720 ! 3730 ! ********************************************************************** 3740 ! * 3750 ! * Initsiering av testsystem och program 3760 ! * 3770 DEF FNInit 3780 Basicver$=NUM$(PEEK(38)) 3790 Basictyp$=NUM$(PEEK(39)) 3800 Dosver$=NUM$(PEEK(24687)) 3810 Dostyp$=NUM$(PEEK(24688)) 3820 Startmode$=NUM$(PEEK(65364)) 3830 WIDTH 80 3840 ; CHR$(12) 3850 DIM A$=256,Q$=160 3860 Invers$=" Testprogram f|r "+Sysname$+' '+Ver$+" Luxor Datorer AB " 3880 Rad25$=Invers$ 3890 Q=FNRad25 3895 Q=FNTimeset 3900 RETURN 0 3910 FNEND 3915 DEF FNTimeset 3920 ; CUR(5,5) CYA; : INPUT 'Vill du st{lla klocka/kalender (J/N) ?'L$ 3922 IF L$="j" OR L$="J" THEN 3923 ELSE 3925 3923 CHAIN 'ram:timeset' 3925 RETURN 0 3927 FNEND 3930 ! 3940 ! ********************************************************************** 3950 ! * 3960 ! * Mode 40 tecken/rad 3970 ! * 3980 DEF FNMode40 3990 WIDTH 40 4000 A$="R a d 2 5 k a n a n v { n d a s f | r s y s t e m i n f o . " 4010 FOR I=1 TO LEN(A$) : POKE 32639+I,ASCII(MID$(A$,I,1)) : NEXT I 4020 FOR I=LEN(A$) TO 80 : POKE 32640+I,32 : NEXT I 4030 RETURN 0 4040 FNEND 4050 ! 4060 ! 4070 ! ********************************************************************** 4080 ! * 4090 ! * Mode 80 tecken/rad 4100 ! * 4110 DEF FNMode80 4120 A$="** Luxor personal computer ABC802 **" 4130 Invers$=A$ 4150 Rad25$=Invers$ 4160 Rad25$=SPACE$(20)+Rad25$ 4170 Q=FNRad25 4180 ; CHR$(12) 4190 RETURN 0 4200 FNEND 4210 ! 4220 ! 4230 ! ********************************************************************** 4240 ! * 4250 ! * Text i 40 teckens mode WIDTH #Lu 40 4260 ! * 4270 DEF FNText40 4280 ; CHR$(12) 4290 ; " ";Sysname$;" i 40 teckens mode  " 4300 ; "========================================"; 4310 ; CUR(7,3) "Tryck tangent f|r omkoppling" 4320 ; CUR(8,3) "till 80 teckens mode."; : GET Inchar$ 4330 RETURN 0 4340 FNEND 4350 ! 4360 ! 4370 ! ********************************************************************* 4380 ! * 4390 ! * Text i 80 teckens mode WIDTH #Lu 80 4400 ! * 4410 DEF FNText80 4420 ; CHR$(12) 4430 ; " ";Sysname$;" i 80 teckens mode  ";Ver$;" " 4440 ; "===============================================================================" 4450 ; CUR(7,5) "Tryck tangent f|r att komma tillbaka till huvudprogrammet."; : GET Inchar$ 4460 RETURN 0 4470 FNEND 4480 ! 4490 ! 4500 ! ********************************************************************* 4510 ! * 4520 ! * Delay loop 4530 ! * 4540 DEF FNDelay 4550 FOR I=0 TO 1200 4560 NEXT I 4570 RETURN 0 4580 FNEND 4590 ! 5050 ! ********************************************************************** 5060 ! * 5070 ! * Skriv systemrad p} rad 25 5080 ! * 5090 DEF FNRad25 5100 OUT 56,6,57,25 5110 WIDTH 80 5120 FOR I=1 TO LEN(Rad25$) : POKE 32639+I,ASCII(MID$(Rad25$,I,1)) : NEXT I 5130 FOR I=LEN(Rad25$)+1 TO 80 : POKE 32639+I,32 : NEXT I 5140 RETURN 0 5150 FNEND 5480 ! ********************************************************************** 5490 ! * 5500 ! * ABC NET test 5510 ! * 5520 DEF FNNettest 5530 ; CHR$(12) CUR(0,0) ' ABC-NET Network test  ';Sysname$ 5540 ; CUR(1,0) STRING$(PEEK(65364),ASCII('=')) 5550 ; CHR$(7) 5560 ; CUR(5,5) "TESTEN EJ IMPLEMENTERAD !!!!!" 5570 ; CUR(6,5) "Tryck tangent f|r }terg}ng till huvudprog."; : GET Inchar$ 5580 RETURN 0 5590 FNEND 5600 Q=FNS{ndkbtest 5610 END 5620 ! ******************************************************************** 5630 ! * 5640 ! * S{nd Data till tangentbord ( CAPS LOCK ON/OFF ) 5650 ! * och koll av KEY DOWN = SYS(8) 5660 ! * 5670 DEF FNS{ndkbtest 5680 ; CUR(6,5) "Blinkar CAPS LOCK dioden ( JA = TRYCK TANGENT )" 5690 FOR O=0 TO 50 5700 Q=FNKbtx(136) 5710 FOR I=0 TO 800 : NEXT I 5720 Q=FNKbtx(8) 5730 FOR I=0 TO 800 : NEXT I 5740 IF SYS(8)<>0 THEN 5770 5750 NEXT O 5760 ; CHR$(7) CUR(7,5) "TIMEOUT KEYDOWN FUNGERAR EJ" 5770 ; CUR(8,5) "Piper h|gtalaren ?" 5780 FOR I=0 TO 3 5790 OUT 34,7 5800 Q=FNDelay 5810 NEXT I 5820 RETURN 0 5830 FNEND 5840 ! ********************************************************************* 5850 ! * 5860 ! * Data ut till tangentbord 5870 ! * 5880 DEF FNKbtx(C) 5890 OUT 35,32+16+5,35,64+32+8 5900 OUT 35,0 5910 IF (INP(35) AND 4)=0 GOTO 5900 5920 OUT 34,C 5930 RETURN 0 5940 FNEND 6000 ! **************************************************************** 6010 ! * 6020 ! * HR-test 6030 ! * 6040 DEF FNHrtest 6041 ; CHR$(12) 6042 Q9=FNHru2test 6044 FGPICTURE 0,0,2 6046 Q9=FNBild1 6048 FGPICTURE 1,1,2 6050 Q9=FNBild2 6052 ! FGPICTURE 3,3,4 6054 ! Q9=FNBild3 6058 FGCTL BLK+GRED+GGRN+GBLU : FGPICTURE 0,0,2 : GET A$ 6059 FGCTL BLK+GBLK+RED+GRED+GRN+GGRN+YEL+GYEL+BLU+GBLU+MAG+GMAG+CYA+GCYA+WHT+GWHT 6060 FGPICTURE 1,1,2 : GET A$ 6062 ! FGCTL 3 : FGPICTURE 3,3,4 : GET A$ 6064 FGCTL BLK 6095 RETURN 0 6097 FNEND 6100 ! * 6102 ! * Test HRU II prom i ABC806 6104 ! * 6106 DEF FNHru2test 6107 RESTORE 6126 6108 READ Hruadr,Hrudata : IF Hruadr=999 THEN 6130 6110 IF Hruadr>255 THEN 6112 ELSE 6114 6112 Hruadr=Hruadr-256 : OUT 54,130 : GOTO 6116 6114 OUT 54,2 6116 A=INP(55+(Hruadr*256)) AND 15 6120 IF A<>Hrudata THEN ; CUR(2,10) EL RED 'HRUII prom fel' : GOTO 6123 6122 GOTO 6108 6123 ; CUR(4,10) Text1$ : GET A$ 6125 ! * Data hru2 test 6126 DATA 0,0,148,1,228,2,268,3,284,4,488,5,504,6 6128 DATA 9,9,10,10,11,11,15,12,19,13,23,14,511,15,999,999 6130 RETURN 0 6132 FNEND 6200 ! * 6201 ! * HR-test bild 1 6202 ! * 6203 DEF FNBild1 6204 FGCTL GBLK+RED+GRN+BLU 6205 FGPOINT 0,0,0 6206 FGFILL 511,239 6207 FOR I=0 TO 285 6208 PRINT "ABC806 "; 6209 NEXT I 6211 FGPOINT 0,0,0 6212 FGFILL 511,239 6213 FGLINE 0,239,1 6214 FGLINE 0,0 6215 FGLINE 511,0 6216 FGLINE 511,239 6217 FGLINE 0,0 6218 FGPOINT 0,239 6219 FGLINE 511,0 6220 FGPAINT 100,20,3 6221 FGPAINT 20,100,2 6222 FGPAINT 400,100,1 6223 ; CUR(24,0) EL Text1$ : GET A$ 6224 RETURN 0 6225 FNEND 6295 ! * 6296 ! * HR testbild 2 6297 ! * 6300 DEF FNBild2 6302 ATTRIBUTE 1 6304 ; CHR$(12) 6305 FGCTL BLK+GBLK+RED+GRED+GRN+GGRN+YEL+GYEL+BLU+GBLU+MAG+GMAG+CYA+GCYA+WHT+GWHT 6308 FGPOINT 0,0,0 6310 FGFILL 255,239,0 6312 FGPOINT 0,119,2 6314 FGLINE 255,119,0 6316 FGPOINT 0,0,0 : A=0 : B=0 6318 FOR C=1 TO 15 STEP 2 6320 A=(A+32) 6322 IF B=0 THEN B=118 ELSE B=0 6324 FGFILL A-1,B,C 6326 NEXT C 6328 FGPOINT 0,120,0 : A=0 6330 FOR C=0 TO 14 STEP 2 6332 A=(A+32) 6334 IF B=120 THEN B=239 ELSE B=120 6336 FGFILL A-1,B,C 6338 NEXT C 6340 ; CUR(11,0) EL WHT 'BLK RED' RED ' GRN YEL BLU MAG CYA WHT' 6342 ; CUR(23,0) EL WHT 'BLK RED' RED ' GRN YEL BLU MAG CYA WHT'; 6344 ; CUR(4,20) EL RED ' TEXT SKALL VARA SYNLIG' 6346 ; CUR(5,20) EL RED ' P] \VRE HALVAN AV BILDEN ' 6348 ; CUR(6,20) EL RED ' MEN EJ P] UNDRE' 6350 ; CUR(15,20) EL RED ' TEXT SKALL EJ VARA' 6352 ; CUR(16,20) EL RED ' SYNLIG P] UNDRE' 6354 ; CUR(17,20) EL RED ' HALVAN AV BILDEN' 6356 ; CUR(8,22) RED 'Tryck tangent -> n{sta bild'; : GET A$ 6358 RETURN 0 6360 FNEND 6390 ! * 6391 ! * HR testbild 3 6392 ! *< 6400 DEF FNBild3 6402 ; CHR$(12) 6406 FGCTL 3 6409 FGPOINT 0,0,0 6412 FGFILL 239,239,0 6415 Q9=FNCircle(119,119,119,1) 6418 Q9=FNCircle(80,119,119,1) 6421 Q9=FNCircle(40,119,119,1) 6424 FGPAINT 119,119,1 6427 FGPAINT 119,60,2 6430 FGPAINT 119,30,3 6433 RETURN 0 6436 FNEND 6490 ! * 6491 ! * rita cirkel 6492 ! * 6500 DEF FNCircle(Radie,X,Y,Colour) 6501 FGPOINT Radie*1+X,Y 6502 FOR I=0 TO 6.4 STEP .05 6503 FGLINE COS(I)*Radie*1+X,SIN(I)*Radie*1+Y,Colour 6504 NEXT I 6505 RETURN -1 6506 FNEND 7000 ! 7005 ! 7010 ! 7015 DEF FNAttest 7017 ; CHR$(12) 7020 ATTRIBUTE 3 7025 ; DBLE ULN ' Testbild attribute ' NULN ' ' 7030 ; : ; : ; 7035 ; 'TEXT : ' WHT NWBG BLK ' SVART ' BLK NWBG RED ' R\D ' GRN 'GR\N ' YEL 'GUL ' BLU 'BL] ' MAG 'MAGENTA ' CYA 'CYAN ' WHT 'VIT ' 7040 ; 7045 ; 'GRAFIK : ' WHT NWBG GBLK ' svart ' BLK NWBG GRED ' r|d ' GGRN 'gr|n ' GYEL 'gul ' GBLU 'bl} ' GMAG 'magenta ' GCYA 'cyan '; 7050 ; GWHT 'vit ' 7055 ; 7060 ; 'BAKGRUND :' CHR$(128,157,135) ' SVART ' CHR$(129,157,128) ' R\D ' GRN NWBG BLK ' GR\N ' YEL NWBG BLK ' GUL '; 7065 ; BLU NWBG BLK ' BL] ' MAG NWBG BLK ' MAGENTA ' CYA NWBG BLK ' CYAN ' WHT NWBG BLK ' VIT ' BLK NWBG ' ' 7070 ; 7075 ; EL 'Dold text : ' NRML 'Detta skall synas ' RED HIDE 'men inte detta' 7080 ; 7085 ; DBLE 'Dubbel h|jd ' EL 'Dubbel bredd ' NRML 'Normal bredd och h|jd' 7090 ; : ; 7095 ; EL ULN ' Understruket ' NULN ' Ej understruket' 7100 ; 7105 ; EL FLSH 'Blinkande text' STDY ' Fast text ' 7110 ; 7115 ; EL 'F|r test soft-scroll tryck S' : ; : ; EL 'Om testsida {r r{tt tryck RETURN ' 7116 ; CUR(24,0) YEL 'Text p} 25:e rad skall f|rsvinna vid soft-scroll'; 7117 GET A$ : IF A$='s' OR A$='S' THEN 7120 ELSE 7125 7120 FOR I=1 TO 5 : ; : NEXT I : GOTO 7020 7125 ATTRIBUTE 0 : RETURN G 7130 FNEND 7135 ! 7140 ! Ladda RAM: med fil 7145 ! 7200 DEF FNRamladda(Source$,Dest$,File$) 7202 ; File$, 7204 Felkod=FNCopy(Source$,Dest$,File$) 7206 IF Felkod<>0 THEN PRINT ' Fel ';Felkod ELSE PRINT ' Kopiering klar' 7207 RETURN 0 7208 FNEND 7209 DEF FNCopy(Source$,Dest$,File$) 7210 ON ERROR GOTO 7224 7212 OPEN Source$+File$ AS FILE 1 7214 PREPARE Dest$+File$ AS FILE 2 7216 WHILE -1 7218 GET #1,Buf$ COUNT 253 7220 PUT #2,Buf$ 7222 WEND 7224 ON ERROR GOTO 7230 7226 IF ERRCODE=38 OR ERRCODE=37 THEN 7232 7228 CLOSE 1,2 7230 RETURN ERRCODE 7232 ON ERROR GOTO 7236 7234 PUT #2,Buf$ 7236 CLOSE 1,2 7238 RETURN 0 7240 FNEND