100 REM Ins{nt av 1789 101 ! ********************************************************************** 102 ! Program MONITOR.800 Utg}va 3.83 1984-03-13 103 ! av Ulf Hedlund, {ndrad av Bo Kullmar 104 ! Ins{nd av Bo Kullmar, 1789 105 ! F|r ABC800M ABC800C ABC802 ABC806 106 ! Testad p} ABC806 107 ! I FNDOSINI kan parametrar f|r alla DOS s{ttas. Anv{nds UFD-DOS:et 108 ! kan en funktion FNUFD anv{ndas f|r att MSG skall kunna l{ggas upp 109 ! p} olika bibliotek. Till programmet h|r filen NYHELPM.800 110 ! ********************************************************************** 1000 EXTEND : INTEGER 1010 DIM A$=80,B$=80,C$=80,D$=4,F$=10,Dr0$=4,Dr1$=4,Drop$=4,Sysnamn$=30,Systel$=20 1020 WIDTH 80 ! S{tts {ven p} V24:an, m}ste tas bort om prg inte k|rs p} ABC802/806 1030 DIM Rad$=119,Radin$=159,Rad$(60)=77,Antalfiler(16),Stor$=39,Reset$=3 1040 Monitor$='V24:VEA70C72.22B' 1050 ! Monitor$='CON:' 1060 Filslut$='/*' : V24=1 1070 Stor$=CHR$(6,112,205,15,96,33,0,0,58,21,253,192,6,118,221,33,4,252,85,221) 1080 Stor$=Stor$+CHR$(126,0,60,200,221,126,1,230,31,60,95,25,221,35,221,35,16,237,201) 1090 Ctrlb$=CHR$(2) ! Reset$=CHR$(205,0,0) : POKE 65452,VARPTR(Reset$),SWAP%(VARPTR(Reset$)) ! Reset vid error 1100 IF MID$(TIME$,6,2)='I5' THEN Z=FNSettime 1110 Flagga=0 : Wid=40 1120 Z=FNDosini : Z=FNMonitor 1130 DEF FNSettime LOCAL ],M,D,T,M1,S 1140 ON ERROR GOTO 1230 1150 INPUT ']r '] 1160 INPUT 'M}nad 'M 1170 INPUT 'Dag 'D 1180 INPUT 'Timme 'T 1190 INPUT 'Minut 'M1 1200 INPUT 'Sekund 'S 1210 POKE -17,],M,D,T,M1,S 1220 RETURN 0 1230 RESUME 1150 1240 FNEND 1250 DEF FNInkey$(L{ngd,T,Echo,Text$) LOCAL L{ngd,In$=1,Ut$=160 1260 Ut$=Text$ : IF Echo ; #V24 '> '; 1265 IF LEN(Ut$) THEN ; #V24,Ut$; 1270 WHILE LEN(Ut$)'CON:' THEN OUT 65,16 : IF (INP(65) AND 8)=0 THEN CHAIN Drop$+'MONITOR.BAC' 1290 GET #V24,In$ : In$=CHR$(ASCII(In$) AND 127) 1300 Z=ASCII(In$) : IF Z=13 THEN 1370 1310 IF LEN(Ut$)=0 AND Z=26 THEN RETURN In$ 1320 IF (Z=8 OR Z=127) AND LEN(Ut$)<>0 THEN Ut$=LEFT$(Ut$,LEN(Ut$)-1) : ; #V24 In$;' ';In$; : GOTO 1290 1330 IF Z<32 AND Z<>12 THEN 1290 ! Ogiltiga tecken 1340 Ut$=Ut$+In$ 1350 IF Echo ; #V24 In$; 1360 WEND 1370 IF T THEN RETURN Ut$+CHR$(13) ELSE RETURN Ut$ 1380 FNEND 1390 DEF FNValue 1400 ON ERROR GOTO 1440 1410 Radin$=FNInkey$(4,0,1,'') 1420 Z=VAL(Radin$) 1430 RETURN Z 1440 Z=0 : RESUME 1430 1450 FNEND 1460 DEF FNV{rde(I$) LOCAL I$=30 1470 ON ERROR GOTO 1500 1480 Z=VAL(I$) 1490 RETURN Z 1500 Z=0 : RESUME 1490 1510 FNEND 2000 DEF FNMonitor 2010 ON ERROR GOTO 2640 2020 ; CHR$(12) 'Monitorprogrammmet har startat!' 2030 OPEN Monitor$ AS FILE V24 : WIDTH #V24,Wid 2040 IF Test THEN Test=0 : ; #V24 : ; #V24 'V{lkommen tillbaka till Monitorn!' : GOTO 2060 2050 Slask=FNLogin 2060 ; #V24 2070 IF Klar=3 THEN 2490 2080 ; #V24 TIME$ 2090 ; #V24 : ; #V24,'Ok!' 2100 ON ERROR GOTO 2630 2110 Help=0 : \$=FNInkey$(30,0,1,'') 2120 ; #V24 2130 IF LEN(\$)>8 THEN ; #V24,'Kommandol{ngd h|gst 8 tecken!!' : GOTO 2100 2140 IF LEN(\$)=0 THEN 2310 ELSE \$=FNStora$(\$) 2150 IF LEFT$('SENDFIL ',LEN(\$))=\$ THEN Z=FNSend : GOTO 2060 2160 IF LEFT$('LIB'+SPACE$(8),LEN(\$))=\$ THEN Z=FNLib : GOTO 2060 2170 IF LEFT$('GETFIL ',LEN(\$))=\$ THEN Z=FNGet : GOTO 2060 2180 IF LEFT$('BYE ',LEN(\$))=\$ THEN 2490 2190 IF LEFT$('HELP ',LEN(\$))=\$ THEN Help=1 : Slask=FNL{s : GOTO 2060 2200 IF LEFT$('MSG ',LEN(\$))=\$ THEN Slask=FNMsg : GOTO 2060 2210 IF LEFT$('?'+SPACE$(7),LEN(\$))=\$ THEN 2340 2220 IF LEFT$('INFO ',LEN(\$))=\$ THEN Help=2 : Slask=FNL{s : GOTO 2060 2230 IF LEFT$('L[SFIL ',LEN(\$))=\$ THEN Z=FNL{s : GOTO 2060 2240 IF LEFT$('WIDTH ',LEN(\$))=\$ THEN Z=FNWid : GOTO 2060 2270 IF LEFT$('D\DAFIL ',LEN(\$))=\$ THEN Z=FND| : GOTO 2060 2280 IF \$='DISABLE' THEN Z=CALL(0) 2290 ; #V24 2300 ; #V24,\$ ' finns tyv{rr inte!' 2310 ; #V24 'HELP ger hj{lptext' 2320 ; #V24 '? visar giltiga kommandon' 2330 GOTO 2110 2340 ; #V24,'Giltiga kommandon:' : ; #V24 2350 Help=0 2360 ; #V24,'MSG Meddelanden' 2370 ; #V24,'HELP Hj{lptext' 2380 ; #V24,'INFO Info om systemet' 2390 ; #V24,'WIDTH Radbredd' 2420 ; #V24 'LIB LIB lista (endast ' Dr0$ ')' 2430 ; #V24 'SENDFIL S{nda fil till Monitorn' 2440 ; #V24,'GETFIL H{mta fil fr}n Monitorn' 2450 ; #V24,'L[SFIL L{sa fil vid Monitorn' 2460 ; #V24,'D\DAFIL [ndrar extention till .D\D' 2470 ; #V24,'BYE Avsluta' 2480 GOTO 2090 2490 ; #V24 2500 Slask=FNOpmsg 2510 ; #V24,Sysnamn$ ' tackar f|r' 2520 ; #V24,'kontakten och |nskar:' 2530 ; #V24,CHR$(13,10) 'V{lkommen ]ter!' CHR$(13,10) 2540 Tid1=VAL(MID$(TIME$,12,2))*60+VAL(MID$(TIME$,15,2)) 2550 IF Tid112 THEN 3270 3090 ON ERROR GOTO 3280 3100 PREPARE Dr0$+\$ AS FILE 2 3110 ; #V24,Ctrlb$ \$;' {r |ppnad!' 3120 WHILE -1 3130 Radin$=FNInkey$(159,0,0,'')+CHR$(13,10) 3140 IF LEFT$(Radin$,2)=Filslut$ THEN 3190 3150 ; #2,Radin$; 3160 Z=FNDelay(100.) 3170 ; #V24,Ctrlb$ '>' 3180 WEND 3190 CLOSE 2 3200 Radin$=FNInkey$(159,0,0,'') 3210 Z=FNDelay(100.) 3220 ; #V24,'Filen finns p} DR0: som ';\$ 3230 ; #V24,'Vill du s{nda flera filer? (J/) '; 3240 \$=FNInkey$(30,0,1,'') 3250 ; #V24 3260 IF (ASCII(\$) AND 223)=74 THEN 3010 3270 RETURN 0 : WIDTH #V24,Wid 3280 Z=FNError : RESUME 3270 3290 RESUME 3270 3300 FNEND 4000 DEF FNGet 4010 ON ERROR GOTO 4280 : WIDTH #V24,160 4020 Z=FNDelay(1000.) 4030 ; #V24,Ctrlb$ 'SYNK' 4040 \$=FNInkey$(30,0,0,'') 4050 IF \$='SYNKSVAR' THEN 4060 ELSE 4020 4060 ! Synkroniserad 4070 \$=FNInkey$(30,0,0,'') ! Filnamnet 4080 POKE -188,0 4090 OPEN Dr0$+\$ AS FILE 2 4100 ; #V24,Ctrlb$ 'OPENED' 4110 C$=FNInkey$(30,0,0,'') 4120 WHILE -1 4130 INPUT LINE #2,Radin$ 4140 Z=FNDelay(200.) 4150 ; #V24,Ctrlb$ Radin$; 4160 C$=FNInkey$(30,0,0,'') 4170 WEND 4180 IF ERRCODE=21 THEN ; #V24,Ctrlb$;"Filen " \$+" finns inte" : GOTO 4220 4190 IF ERRCODE=58 THEN Z=FNDelay(200.) 4200 ; #V24,Ctrlb$ Filslut$ 4210 Rad$=FNInkey$(159,0,0,'') 4220 Z=FNDelay(1000.) 4230 IF ERRCODE=34 THEN ; #V24,'Filen ' \$ ' slut!' 4235 IF ERRCODE=58 THEN ; #V24,"Filen " \$+" {r inte en ASCII-fil" 4240 ; #V24,'Vill du h{mta flera filer? (J/) '; 4250 \$=FNInkey$(30,0,1,'') : ; #V24 4260 IF (ASCII(\$) AND 223)=74 THEN 4020 4270 WIDTH #V24,Wid : RETURN 0 4280 IF ERRCODE=21 OR ERRCODE=58 THEN RESUME 4180 4290 IF ERRCODE=34 THEN RESUME 4200 4300 ; #V24,Ctrlb$;"Fel nr" ERRCODE : RESUME 4270 4310 FNEND 5000 DEF FNL{s 5010 ; #V24 : I=0 5020 IF Help=1 THEN F1$='HELP.TXT' : GOTO 5070 5030 IF Help=2 THEN F1$='HELPINFO.TXT' : GOTO 5070 5040 ; #V24,'Filnamn '; 5050 F1$=FNInkey$(12,0,1,'') : ; #V24 5060 F1$=FNStora$(F1$) 5070 ON ERROR GOTO 5320 5080 OPEN Dr0$+F1$ AS FILE 2 5090 ; #V24 5100 WHILE -1 5110 INPUT LINE #2,Radin$ 5120 Radin$=LEFT$(Radin$,LEN(Radin$)-2) 5130 I=I+1 5140 IF Radin$=Filslut$ THEN 5230 5150 ; #V24,Radin$ 5160 IF MOD(I,Wid/4)<>0 THEN 5220 5170 ; #V24 'Tryck ! '; 5180 \$=FNInkey$(30,0,1,'') 5190 ; #V24 CHR$(13) SPACE$(20) CHR$(13); 5200 IF ASCII(\$)<>0 AND Help THEN 5300 5210 IF ASCII(\$)<>0 THEN 5230 5220 WEND 5230 CLOSE 2 5240 GOTO 5260 5250 ; #V24,CHR$(13,10) 'Vill du l{sa n}gon annan fil (J/)'; : GOTO 5270 5260 ; #V24,CHR$(13,10) 'Vill du l{sa fler filer (J/)'; 5270 \$=FNInkey$(30,0,1,'') 5280 ; #V24 5290 IF (ASCII(\$) AND 223)=74 THEN 5010 5300 ! HOPP HIT ! 5310 RETURN 0 5320 IF ERRCODE=34 AND Help<>0 THEN ; #V24,'Slut p} hj{lptexten.' : RESUME 5300 5330 IF ERRCODE=34 THEN ; #V24,'Slut p} filen ' F1$ : RESUME 5260 5340 IF ERRCODE=21 THEN ; #V24,F1$ ' finns ej!!' : RESUME 5250 5350 IF ERRCODE=58 THEN ; #V24,F1$ ' {r ingen ASCII-fil!' : RESUME 5250 5360 Z=FNError : RESUME 5310 5370 FNEND 6000 DEF FNMsg 6005 ON ERROR GOTO 6170 6010 Z=FNUfd ! *************** Endast f|r UFD-DOS !!! ************** 6015 WHILE -1 6020 OPEN Dr1$+"ANTAL.TXT" AS FILE 9 6025 GET #9,Min$ COUNT 2 : GET #9,Max$ COUNT 2 6030 Min=CVT$%(Min$) : Max=CVT$%(Max$) 6035 CLOSE 9 6040 ; #V24 6045 ; #V24,'Det finns MSG fr}n #' Min 'till #' Max 6050 ; #V24 6055 ; #V24 'MSG ' Ufd$ 6060 IF Klar=3 THEN ; #V24 '>BYE' : GOTO 6165 6065 Msgnr=0 6070 \$=FNInkey$(30,0,1,'') 6075 ; #V24 6080 Msgnr=FNV{rde(\$) : IF Msgnr=0 THEN 6095 6085 IF Msgnr<0 OR Msgnr>Max THEN ; #V24 'Finns inte!' : GOTO 6040 6090 GOTO 6120 6095 IF LEN(\$)=0 THEN Svar=0 : GOTO 6105 ELSE \$=FNStora$(\$) 6100 Svar=INSTR(1,'IL]?HBR',LEFT$(\$,1)) 6105 IF Svar=0 THEN ; #V24," ? visar giltiga kommandon." : GOTO 6070 6110 ON Svar GOTO 6115,6120,6165,6125,6125,6160,6123 6115 Slask=FNNyttmsg : GOTO 6040 6120 Slask=FNL{smsg(Msgnr) : GOTO 6040 6123 Slask=FNL{srubriker : GOTO 6040 6125 ; #V24 'MSG Kommandon:' 6130 ; #V24 6135 ; #V24,'I - Inskrivning av nytt meddelande' 6140 ; #V24,'L - L{sning av tidigare meddelanden.' 6145 ; #V24,'R - Listning av {renderubriker' 6150 ; #V24,'? - Denna text ' 6155 WEND 6160 Klar=3 6165 RETURN 0 6170 Z=FNError : RESUME 6165 6175 FNEND 6180 DEF FNNyttmsg 6185 ON ERROR GOTO 6330 6190 Klar=0 6195 ; #V24 CHR$(13,10) 'Nytt meddelande' 6200 ; #V24 'Du f}r max 60 rader med h|gst 76 tkn.' 6205 ; #V24 CHR$(13,10) 'Tryck RETURN f|r att komma till Editorn' CHR$(13,10) 6210 FOR Rad=1 TO 60 6215 ; #V24 USING "##" Rad; 6220 IF Rad=1 THEN Radin$=FNInkey$(76,0,1,'[rende: ') ELSE Radin$=FNInkey$(76,0,1,'') 6225 IF ASCII(Radin$)=26 THEN ; #V24 : GOTO 6265 6230 IF LEN(Radin$)<>0 THEN 6240 6235 Slask=FNMsgedit : IF Klar=0 THEN 6215 ELSE IF Klar=1 THEN 6260 ELSE IF Klar>=2 THEN RETURN 0 6240 Rad$(Rad)=Radin$ 6245 ; #V24 6250 NEXT Rad 6255 Slask=FNMsgedit 6260 ! HOPP HIT ! 6265 ; #V24 CHR$(13,10) 'V{nta medan meddelandet sparas!'; 6270 OPEN Dr1$+"ANTAL.TXT" AS FILE 9 6275 Max=Max+1 6280 PUT #9,Min$+CVT%$(Max) 6285 CLOSE 9 6290 PREPARE Dr1$+"TEXT."+NUM$(Max) AS FILE 9 6295 ; #9 TIME$ 6300 FOR I=1 TO Rad-1 6305 ; #9 Rad$(I) 6307 IF I=1 THEN ; #9 6310 NEXT I 6315 CLOSE 9 6320 ; #V24,CHR$(13) 'Text nr' Max '{r klar! ' 6325 RETURN 0 6330 Z=FNError : RESUME 6325 6335 FNEND 6340 DEF FNL{smsg(Msgnr) 6345 Edit=0 6350 ON ERROR GOTO 6460 6355 IF Msgnr THEN Nr=Msgnr : GOTO 6380 6360 ; #V24 'Vilket nr '; 6365 Nr=FNValue 6370 IF Nr=0 THEN Nr=Min 6375 ; #V24 6380 IF Nr<1 OR Nr>Max THEN ; #V24 'Finns inte!' : GOTO 6360 6385 ; #V24 'Texten h{mtas..'; 6390 OPEN Dr1$+"TEXT."+NUM$(Nr) AS FILE 9 6395 ; #V24,CHR$(13) SPACE$(15) CHR$(13); 6400 I=1 : ; #V24,Ufd$ ' MSG nr' Nr 6405 INPUT LINE #9,Radin$ 6410 Rad$(I)=LEFT$(Radin$,LEN(Radin$)-2) 6415 I=I+1 : GOTO 6405 6420 Rad=I : Z=FNVisa : IF Z=1 THEN ; #V24 : GOTO 6432 6430 ; #V24 'Slut p} MSG nr' Nr 6432 IF Nr=Max THEN 6455 6435 ; #V24 'Tryck RETURN f|r n{sta MSG!'; 6440 \$=FNInkey$(30,1,1,'') : ; #V24,CHR$(13) SPACE$(30) CHR$(13) 6445 IF \$<>CHR$(13) THEN 6455 6450 Nr=Nr+1 : GOTO 6385 6455 RETURN 0 6460 IF ERRCODE=210 THEN RESUME 6455 6465 IF ERRCODE=34 THEN RESUME 6420 6470 IF ERRCODE=21 THEN ; #V24,CHR$(13) SPACE$(15) CHR$(13); 6475 IF ERRCODE=21 THEN ; #V24,CHR$(13,10) 'MSG nr' Nr '{r bortagen!' : RESUME 6432 6480 Z=FNError : RESUME 6455 6485 FNEND 6490 DEF FNMsgedit 6495 Edit=1 6500 WHILE -1 6505 ; #V24 6510 ; #V24 'MSG Editor' 6515 \$=FNInkey$(15,0,1,'') 6520 ; #V24 6525 IF LEN(\$)=0 THEN ; #V24,' ? visar giltiga komandon' : GOTO 6515 6530 \$=LEFT$(FNStora$(\$)+' ',1) : IF ASCII(\$)=26 THEN \$='S' 6535 Svar=INSTR(1,'F[IRSL?HAB',\$) 6540 IF Svar=0 THEN ; #V24 'Finns ej!' : ; #V24 ' ? visar giltiga kommandon' : GOTO 6515 6545 ON Svar GOTO 6550,6555,6645,6755,6900,6825,6835,6835,6895,6890 6550 GOTO 6905 6555 ! {ndra 6560 ; #V24 6565 ON ERROR GOTO 6635 6570 ; #V24 'Vilket radnummer '; 6575 Nr=FNValue : IF Nr=0 THEN 6630 6580 Nr=INT(Nr) 6585 ; #V24 6590 IF Nr<1 OR Nr>Rad-1 THEN ; #V24 'Finns ej!' : GOTO 6560 6595 ; #V24 Rad$(Nr) 6600 ; #V24 Nr ':'; 6605 Radin$=FNInkey$(76,1,1,'') 6610 Radin$=LEFT$(Radin$,LEN(Radin$)-1) 6615 ; #V24 6620 IF LEN(Radin$)=0 THEN 6560 6625 Rad$(Nr)=Radin$ 6630 ; #V24 : GOTO 6505 6635 IF ERRCODE=210 THEN RESUME 6630 6640 ; #V24,'Fel nr' ERRCODE : RESUME 6905 6645 ! Insert 6650 ON ERROR GOTO 6745 6655 IF Rad=60 THEN ; #V24 'Du kan inte s{tta in n}gon' : ; #V24 'rad n{r du har skrivit 60 rader!' : GOTO 6515 6660 ; #V24 'Efter vilken rad vill du s{tta in' : ; #V24 'din nya rad '; 6665 Nr=FNValue : IF Nr=0 THEN 6740 6670 ; #V24 6675 Nr=INT(Nr) 6680 IF Nr>=Rad THEN ; #V24 'Anv{nd kommandot F !' : GOTO 6505 6685 IF Nr<1 THEN 6665 6690 FOR J=Rad-1 TO Nr+1 STEP -1 6695 Rad$(J+1)=Rad$(J) 6700 NEXT J 6705 Nr=Nr+1 6710 ; #V24 Nr ':'; 6715 Radin$=FNInkey$(76,1,1,'') : ; #V24 6720 Radin$=LEFT$(Radin$,LEN(Radin$)-1) 6725 IF LEN(Radin$)=0 THEN Radin$=' ' 6730 Rad$(Nr)=Radin$ 6735 Rad=Rad+1 6740 ; #V24 : GOTO 6505 6745 IF ERRCODE=210 THEN RESUME 6740 6750 ; #V24,'Fel nr' ERRCODE : RESUME 6905 6755 ! Radera 6760 ; #V24 6765 ; #V24 'Vilken rad vill du radera '; 6770 ON ERROR GOTO 6820 6775 Nr=FNValue : IF Nr=0 THEN 6815 6780 ; #V24 6785 Nr=INT(Nr) 6790 IF Nr<1 OR Nr>Rad-1 THEN ; #V24 'Finns ej!' : GOTO 6505 6795 FOR J=Nr+1 TO Rad-1 6800 Rad$(J-1)=Rad$(J) 6805 NEXT J 6810 Rad=Rad-1 6815 GOTO 6505 6820 ! 6825 ! Visa 6830 Z=FNVisa : GOTO 6505 6835 ! Kommandotexter ! 6840 ; #V24 6845 ; #V24 'F - Forts{tt textinskrivning' 6850 ; #V24 '[ - [ndra rad i texten' 6855 ; #V24 'I - Insert (skjut in rad i texten)' 6860 ; #V24 'R - Radera en rad' 6865 ; #V24 'S - Spara texten p} disk' 6870 ; #V24 'L - L{s texten' 6875 ; #V24 'A - Avbryt (Texten sparas inte)' 6880 ; #V24 6885 WEND 6890 Klar=3 : GOTO 6905 6895 Klar=2 : GOTO 6905 6900 Klar=1 6905 RETURN 0 6910 FNEND 6915 DEF FNVisa 6920 ; #V24 STRING$(Wid,61) 6925 FOR I=1 TO Rad-1 6930 IF Edit THEN ; #V24 USING "##";I; : ; #V24; : ; #V24 '>'; 6935 ; #V24 Rad$(I) 6940 IF MOD(I,Wid/4)<>0 THEN 6965 6945 ; #V24 'Tryck ! '; 6950 \$=FNInkey$(30,1,1,'') 6955 ; #V24 CHR$(13); : ; #V24,SPACE$(20); : ; #V24 CHR$(13); 6960 IF ASCII(\$)<>13 THEN RETURN 1 6965 NEXT I 6970 ; #V24 STRING$(Wid,61) 6975 RETURN 0 6980 FNEND 7000 DEF FNOpmsg 7010 ON ERROR GOTO 7300 7020 ; #V24 7030 ; #V24 'Vill du l{mna ett meddelande' : ; #V24 'till Operat|ren? (J/) '; 7040 \$=FNInkey$(30,0,1,'') 7050 ; #V24 7060 IF (ASCII(\$) AND 223)<>74 THEN 7290 7070 OPEN Drop$+"ANTALINL.TXT" AS FILE 9 7080 GET #9,Nr$ COUNT 2 : GET #9,Min$ COUNT 2 : GET #9,Max$ COUNT 2 7090 Nr=CVT$%(Nr$) 7100 CLOSE 9 7110 ; #V24 : ; #V24 'Du f}r 12 rader med max 76 tkn/rad:' 7120 ; #V24 'Avbryt med , ingen editering {r m|jlig!' 7130 FOR Rad=1 TO 12 7140 ; #V24 Rad ':'; 7150 Radin$=FNInkey$(76,1,1,'') 7160 Radin$=LEFT$(Radin$,LEN(Radin$)-1) 7170 IF LEN(Radin$)=0 THEN 7210 7180 Rad$(Rad)=Radin$ 7190 ; #V24 7200 NEXT Rad 7210 ; #V24 : ; #V24 'V{nta ...'; 7220 PREPARE Drop$+"MSG"+NUM$(Nr)+".OP" AS FILE 9 7230 FOR I=1 TO Rad-1 7240 ; #9,Rad$(I) 7250 NEXT I 7260 CLOSE 9 7270 ; #V24 CHR$(13) 'Klart! ' 7280 ; #V24 7290 ; #V24 : RETURN 0 7300 Z=FNError : RESUME 7290 7310 FNEND 7320 DEF FNDelay(Y.) LOCAL I. 7330 WHILE I.95 THEN X$=X$+CHR$(A AND 223) ELSE X$=X$+CHR$(A) 7420 NEXT J 7430 RETURN X$ 7440 FNEND 7450 DEF FNError 7460 ; #V24,CHR$(13,10) 'Fel nr' ERRCODE 7470 ! Z=CALL(0) ! Om reset |nskas vid fel som inte hanteras p} annat s{tt! 7480 RETURN 0 7490 FNEND 7500 DEF FNWid 7510 ; #V24,'WIDHT? '; 7520 Bredd=FNValue 7525 IF Bredd=0 THEN ; #V24,CHR$(13,10,10) 'WIDTH' Wid 'g{ller!' : RETURN 0 7530 IF Bredd<20 OR Bredd>80 THEN ; #V24,CHR$(13,10,10) 'Felaktig WIDTH! Min 20 max 80!' : RETURN 0 7535 Wid=Bredd 7540 WIDTH #V24,Wid 7550 RETURN 0 7560 FNEND 7600 DEF FNL{srubriker LOCAL I,Nr$=4,Datum$=40,Rubrik$=79 7610 ON ERROR GOTO 7860 7620 ; #V24 'Fr}n vilket nr '; 7630 Nr=FNValue 7640 IF Nr=0 THEN Nr=Min 7650 ; #V24 CHR$(13,10) 7660 IF Nr<1 OR Nr>Max THEN ; #V24 'Finns inte!' : GOTO 7620 7670 WHILE -1 7680 Nr$=NUM$(Nr) : I=I+1 7690 IF LEN(Nr$)<4 THEN Nr$=' '+Nr$ : GOTO 7690 7700 OPEN Dr1$+"TEXT."+NUM$(Nr) AS FILE 9 7710 INPUT LINE #9,Datum$ : INPUT LINE #9,Rubrik$ 7720 Datum$=LEFT$(Datum$,LEN(Datum$)-2) : Rubrik$=LEFT$(Rubrik$,LEN(Rubrik$)-2) 7730 IF LEN(Rubrik$)>Wid THEN Rubrik$=LEFT$(Rubrik$,Wid) 7740 Datum$='MSG nr '+Nr$+' '+Datum$ 7750 IF Wid<40 THEN Datum$=LEFT$(Datum$,12) 7760 ; #V24,Datum$ CHR$(13,10) Rubrik$ CHR$(13,10) 7770 IF MOD(I,7)<>0 THEN 7820 7780 ; #V24 'Tryck ! '; 7790 \$=FNInkey$(30,0,1,'') 7800 ; #V24 CHR$(13) SPACE$(20) CHR$(13); 7810 IF ASCII(\$)<>0 THEN 7850 7820 Nr=Nr+1 7830 IF Nr>Max THEN 7850 7840 WEND 7850 RETURN 0 7860 IF ERRCODE=21 OR ERRCODE=34 THEN ; #V24,'MSG nr ' Nr$ ' {r bortagen!' CHR$(13,10) : RESUME 7820 7870 Z=FNError : RESUME 7850 7880 FNEND 8000 DEF FNLogin 8010 Tid=VAL(MID$(TIME$,12,2))*60+VAL(MID$(TIME$,15,2)) 8020 L=0 : Klar=0 8030 ON ERROR GOTO 8240 8040 ; #V24 CHR$(13,10,10,10) 8050 ! H{r kan man l{gga in en trevlig text som kommer 8060 ! att visas vid varje inloggning 8070 ! 8080 ! Man kan {ven t{nka sig att ha en rutin f|r 8090 ! login & password h{r... 8100 ! 8110 ; #V24,'Tryck ! '; 8120 \$=FNInkey$(30,0,1,'') 8130 ; #V24,CHR$(13,10) 8140 ; #V24 STRING$(39,42) 8150 ; #V24 '* ' Sysnamn$ ' *' 8160 ; #V24,'* ' Systel$ ' *' 8170 ; #V24 STRING$(39,42) 8180 OPEN Drop$+"ANTALINL.TXT" AS FILE 9 8190 GET #9,Nr$ COUNT 2 : Nr=CVT$%(Nr$) : Nr=Nr+1 8200 ; #V24 CHR$(13,10) 'Detta {r inloggning nr' Nr '!' 8210 ; #V24,'WIDTH' Wid 'g{ller.' 8220 POSIT #9,0 : PUT #9,CVT%$(Nr) : CLOSE 9 8230 RETURN 0 8240 RESUME 8230 8250 FNEND 9000 DEF FNLib LOCAL Ix 9010 ! Under f|ruts{ttning att r{tt parametrar s{tts i FNDOSINI 9020 ! s} skall LIB-rutinen fungera f|r alla DOS (hoppas jag, Bo Kullmar) 9030 POKE -747,0 : Ix=0 : Ix2=0 9040 POKE -767,Drselect 9050 IF FNErr THEN 9450 9060 ; #V24 CHR$(13,10) Sysnamn$ 9070 ; #V24 'Diskinneh}ll Drive ' Dr0$ CHR$(13,10) 9080 Z=CALL(24678,FNSectoradr(Bitmap,Faktor)) 9090 IF FNErr THEN 9450 9100 ! H[MTA ANTAL FILER UR BITMAP ! 9110 FOR I=1 TO Maxdirsector 9120 Antalfiler(I)=PEEK(62720+238+I) 9130 NEXT I 9140 FOR Dirsector=Maxdirsector TO 1 STEP -1 9150 IF Antalfiler(Dirsector)=0 THEN 9340 9160 Z=CALL(24678,FNSectoradr(15+Dirsector,Faktor)) 9170 IF FNErr THEN 9340 9180 FOR I=16 TO 1 STEP -1 9190 X$='' 9200 Size=PEEK(62720+((I-1)*16)+2)+PEEK(62720+((I-1)*16)+3)*256 9210 FOR J=4 TO 14 9220 A=PEEK(62720+J+((I-1)*16)) 9230 IF J=12 X$=X$+'.' 9240 X$=X$+CHR$(A) 9250 NEXT J 9260 IF ASCII(X$)=255 THEN 9330 9270 IF X$='SYSDIR .SYS' OR RIGHT$(X$,10)='D\D' THEN 9320 9280 IF Size=0 THEN Size=FNSize 9290 IF ASCII(X$)<>0 ; #V24 X$ ' '; : ; #V24 USING "###_ " Size; : Ix=Ix+1 9300 IF MOD(Ix,Wid/20)=0 THEN ; #V24 : Ix2=Ix2+1 9310 IF Ix2=15 THEN Z=FNLibcr : IF Z<>0 THEN 9350 9320 X$='' 9330 NEXT I 9340 NEXT Dirsector 9350 Antal=0 9360 Z=CALL(24678,FNSectoradr(Bitmap,Faktor)) 9370 IF FNErr THEN 9450 9380 FOR I=0 TO Maxsektorer/8/Cluster-1 9390 Z=PEEK(62720+I) 9400 FOR J=0 TO 7 9410 IF (Z AND 2^J) THEN Antal=Antal+Cluster 9420 NEXT J 9430 NEXT I 9440 ; #V24,CHR$(13,10,10) Maxsektorer-Antal 'lediga sektorer.' 9450 RETURN 0 9460 FNEND 9470 DEF FNErr 9480 IF PEEK(-747)=0 THEN RETURN 0 9490 ; #V24 'L{sfel fr}n skivan!' 9500 RETURN -1 9510 FNEND 9520 DEF FNLibcr 9530 Ix2=0 9540 ; #V24,'Tryck '; : \$=FNInkey$(30,0,1,'') : ; #V24,CHR$(13); : ; #V24,SPACE$(20) CHR$(13); 9550 RETURN ASCII(\$) 9560 FNEND 9570 DEF FNSize LOCAL Ribad 9580 Ribad=Cluster*SWAP%(PEEK2(62720+((I-1)*16)))/32 9590 RETURN Cluster*CALL(VARPTR(Stor$),FNSectoradr(Ribad,Faktor)) 9620 FNEND 10000 DEF FNDosini 10010 Sysnamn$='ABC-Monitor, Databyn ' 10020 Systel$='01 - 01 01 01 01' 10030 Dr0$='MO0:' : Dr1$='MO1:' : Drop$='MO1:' 10040 Drselect=12 ! 0 f|r DR0, 8 f|r MF0, 12 f|r MO, 16 f|r SF 10050 Bitmap=6 ! 6 f|r 830 disk, 14 f|r |vriga 10060 Cluster=1 ! 1 f|r 830, 4 f|r 832 och 838 10070 Faktor=1 ! 32 f|r DOS ABC6-1x, 800 f|r DOS 800 8", 1 f|r |vriga 10080 Maxsektorer=640 ! 640 f|r 830, 2560 f|r 832, 3978 f|r 838 10090 Maxdirsector=16 ! F|r DOS ABC6-1x 8, f|r |vriga 16 10100 RETURN 0 10110 FNEND 10120 DEF FNSectoradr(Sector,Faktor) 10130 IF Faktor=800 THEN RETURN Sector/Cluster*32+(Sector AND (Cluster-1)) 10140 RETURN Sector*Faktor 10150 FNEND 11000 DEF FNUfd LOCAL I 11010 DIM Ufd$(10)=8,Ufd$=20 11020 POKE 65529,Drselect+1 : Dr1$='UFD:' : Antalufd=2 ! Max antalufd = 10 11030 Ufd$(1)='HACKERS' : Ufd$(2)='DIVERSE' 11040 Ufdadr(1)=34 : Ufdadr(2)=52 ! Lika med PEEK2(65527) n{r UFD:et {r aktivt 11050 ; #V24,CHR$(10) 'V{lj bibliotek!' 11060 \$=FNInkey$(30,0,1,'') 11070 IF LEN(\$)>8 THEN ; #V24,'Max 8 tecken!' : GOTO 11060 11080 IF LEN(\$)=0 THEN Z=FNVisaufd : GOTO 11050 ELSE \$=FNStora$(\$) 11090 IF ASCII(\$)=63 THEN Z=FNVisaufd : GOTO 11050 11100 I=0 11110 WHILE I