1 REM Ins{nd av Mikael Lid`n <5651> 1986-03-16 19.44.36 2 REM Se /TEXT/DIV/KONTROLL.TXT f|r info. 1000 INTEGER : EXTEND 1010 DIM Sect$=256,Sf$(3)=300 1020 POKE VAROOT(Sect$)+4,0,1 1030 ! 1040 ! 1050 DEF FNCerr$ 1060 IF E9 AND 128 RETURN 'LUCKAN \PPEN' 1070 IF E9 AND 64 RETURN 'SKIVAN SKRIVSKYDDAD' 1080 IF E9 AND 32 RETURN 'SKRIV FEL' 1090 IF E9 AND 16 RETURN 'S\K-FEL' 1100 IF E9 AND 8 RETURN 'CRC-FEL' 1110 RETURN '\VRIGT FEL' 1120 FNEND 1130 ! 1140 ! 1150 DEF FNRsect(Dev$,Sect) 1160 D=FNDsel(Dev$) 1170 IF LEFT$(Dev$,2)='MO' Z=FNContcom(1+2,D,Sect/8,Sect*32) 1180 IF LEFT$(Dev$,2)='MF' Z=FNContcom(3,D,Sect/32,Sect/4*32+(Sect AND 3)) 1190 IF (FNStatus AND 8)=0 E9=FNRdat : RETURN E9 1200 RETURN FNRbuf 1210 FNEND 1220 ! 1230 ! 1240 DEF FNWsect(Dev$,Sect) 1250 D=FNDsel(Dev$) 1260 IF LEFT$(Dev$,2)='MO' Z=FNContcom(12,D,Sect/8,Sect*32) 1270 IF LEFT$(Dev$,2)='MF' Z=FNContcom(12,D,Sect/32,Sect/4*32+(Sect AND 3)) 1280 Z=FNWbuf 1290 IF (FNStatus AND 8)=0 E9=FNRdat 1300 RETURN E9 1310 FNEND 1320 ! 1330 ! 1340 DEF FNFormdisk(Dev$,Dd,Ft,Tt) 1350 D=FNDsel(Dev$) 1360 Z=FNFormat(D,Dd,Ft,Tt) 1370 RETURN 0 1380 FNEND 1390 ! 1400 ! 1410 DEF FNFdisk(Dev$) 1420 Z=FNFormdisk(Dev$,-1,0,79) 1430 Z=FNRwait 1440 IF (FNStatus AND 8)=0 E9=FNRdat 1450 RETURN E9 1460 FNEND 1470 ! 1480 ! 1490 DEF FNDsel(Dev$) 1500 IF LEFT$(Dev$,2)='MF' Z=FNCsel(44) 1510 IF LEFT$(Dev$,2)='MO' Z=FNCsel(45) 1520 IF LEFT$(Dev$,2)='SF' Z=FNCsel(46) 1530 RETURN ASCII(RIGHT$(Dev$,3))-48 1540 FNEND 1550 ! 1560 ! 1570 DEF FNFormdat(Dd) LOCAL A,B,I,J 1580 IF Dd RESTORE 1720 : I=3 ELSE RESTORE 1690 : I=2 1590 WHILE J-1 1630 Sf$(J)=Sf$(J)+STRING$(A,B) 1640 READ A,B 1650 WEND 1660 J=J+1 1670 WEND 1680 RETURN 0 1690 DATA 6,0,1,254,4,0,1,247,11,255,6,0,1,251,128,64,1,247,97,255,-1,-1 1700 DATA 256,255,-1,-1 1710 ! 1720 DATA 12,0,3,245,1,254,3,0,1,1,1,247,22,78,12,0,3,245,1,251,197,64,-1,-1 1730 DATA 59,64,1,247,196,78,-1,-1 1740 DATA 256,78,-1,-1 1750 FNEND 1760 ! 1770 ! 1780 DEF FNFormsend(Dd) LOCAL I,J 1790 Z=FNFormdat(Dd) 1800 Z=FNContcom(4,0,0,0) 1810 Sect$=Sf$(0) : Z=FNWbuf 1820 WHILE Dd 1830 Z=FNContcom(4,64,0,0) 1840 Sect$=Sf$(1) : Z=FNWbuf 1850 Z=FNContcom(4,128,0,0) 1860 Sect$=Sf$(2) : Z=FNWbuf 1870 RETURN 0 1880 WEND 1890 Z=FNContcom(4,128,0,0) 1900 Sect$=Sf$(1) : Z=FNWbuf 1910 RETURN 0 1920 FNEND 1930 ! 1940 ! 1950 DEF FNFormat(Drive,Dd,Ftrack,Ttrack) 1960 Z=FNFormsend(Dd) 1970 Z=FNContcom(16,Drive+8,Ftrack,Ttrack) 1980 RETURN 0 1990 FNEND 2000 ! 2010 ! 2020 DEF FNCsel(Card) 2030 OUT 1,Card 2040 RETURN 0 2050 FNEND 2060 ! 2070 ! 2080 DEF FNRescard=INP(7) 2090 ! 2100 ! 2110 DEF FNStatus=INP(1) 2120 ! 2130 ! 2140 DEF FNRdat=INP(0) 2150 ! 2160 ! 2170 DEF FNWdat(D) 2180 OUT 0,D 2190 RETURN 0 2200 FNEND 2210 ! 2220 ! 2230 DEF FNCommand(Com,D) 2240 OUT 1+Com,D 2250 RETURN 0 2260 FNEND 2270 ! 2280 ! 2290 DEF FNContcom(C0,C1,C2,C3) 2300 Z=FNCommand(1,0) 2310 WHILE FNStatus AND 2 : WEND 2320 Z=FNSbyte(C0) 2330 Z=FNSbyte(C1) 2340 Z=FNSbyte(C2) 2350 Z=FNSbyte(C3) 2360 RETURN 0 2370 FNEND 2380 ! 2390 ! 2400 DEF FNRwait 2410 WHILE (FNStatus AND 128)=0 : WEND 2420 RETURN 0 2430 FNEND 2440 ! 2450 ! 2460 DEF FNBusy 2470 WHILE (FNStatus AND 1)=0 : WEND 2480 RETURN 0 2490 FNEND 2500 ! 2510 ! 2520 DEF FNSbyte(B) 2530 Z=FNBusy 2540 Z=FNWdat(B) 2550 RETURN 0 2560 FNEND 2570 ! 2580 ! 2590 DEF FNRbuf LOCAL J,V 2600 WHILE FNStatus AND 64 : WEND 2610 V=VARPTR(Sect$) 2620 WHILE J<256 2630 Z=FNBusy 2640 POKE V+J,FNRdat 2650 J=J+1 2660 WEND 2670 RETURN 0 2680 FNEND 2690 ! 2700 ! 2710 DEF FNWbuf LOCAL J,V 2720 WHILE FNStatus AND 4 : WEND 2730 V=VARPTR(Sect$) 2740 WHILE J<256 2750 Z=FNBusy 2760 Z=FNWdat(PEEK(V+J)) 2770 J=J+1 2780 WEND 2790 RETURN 0 2800 FNEND