1 REM SVAR TILL CURSORST.YRN ANG 300 BAUDS CURSOR 2 REM DETTA PROGRAM TOG JAG HEM FR]N MONITORN 3 REM ]RET. DET G\R ABC80 TILL "DATACENTRAL". 4 REM DET KALLADES D] "CENTRAL.BAS". 5 REM DU B\R KUNNA HITTA DEN DEL SOM 6 REM BROMSAR NER HASTIGHETEN (K\R LOKALT)! 7 REM H[LSNING VALTER PETTERSSON 2008 10 REM *** ABC80 SOM DATACENTRAL ****** 20 REM *** LOGON = 'GBK' ************** 30 REM 40 I8%=4% : ; CHR$(12%) : ; '* Vill Du k|ra lokalt ? (J/N) ' : GET V$ : IF V$='J' OR V$='j' THEN I8%=16% 50 DIM A$=120%,B$=120%,B1$=137%,C$=8%,C1$=20%,C2$=8%,C3$=72%,D$(10%)=80%,E$(10%)=80%,F$(10%)=80%,H$=8%,V$=1% 60 A$='' : B1$='' : C1$=' '+STRING$(19%,42%) : C2$=STRING$(4%,13%) : C$=CHR$(13%,13%,13%,10%)+C2$ 70 C3$=C2$+'MMMMMMMM'+C2$+'WWWWWWWW'+C2$+'********'+C2$+'KKKKKKKK'+C2$+'HHHHHHHH'+C2$+'########' 80 ; CHR$(12%) : GOSUB 180 : ONERRORGOTO 80 90 IF I8%=16% THEN ; '*LOGON=GBK' : GOTO 510 100 REM 110 REM *** CHECK DCD AND CTS ********* 120 REM 130 IF INP(58%) AND 4% THEN GOSUB 170 : GOTO 80 ELSE OUT 58%,INP(58%) AND 239% OR 8% 140 IF INP(58%) AND 2% THEN GOSUB 170 : GOTO 80 150 GOTO 510 : REM BRANCH TO SYSTEM/P * 160 REM 170 ; CUR(3%,9%); : ; '* INGEN F\RBINDELSE *' 180 FOR Q2%=1% TO 2000% : NEXT Q2% : RETURN 190 REM 200 REM 210 REM *** TRANSMIT RTN ************** 220 REM 230 B1$=C$+B$+C$ 240 I9%=0% : FOR I%=1% TO LEN(B1$) : Q6%=ASC(MID$(B1$,I%,1%)) : GOSUB 270 : IF INP(58%) AND I8% THEN 260 ELSE NEXT I% 250 RETURN 260 I9%=-1% : RETURN 270 ; CHR$(Q6%); : Q5%=1% : Q6%=Q6%+Q6%+512% : Q4%=Q8% AND 247% : Q3%=Q8% OR 8% 280 FOR Q7%=0% TO 9% : IF Q6% AND Q5% THEN 290 ELSE 300 290 OUT 58%,Q3% : Q6%=Q6% XOR 256% : GOTO 310 300 OUT 58%,Q4% : Q6%=Q6% OR 0% : GOTO 310 310 Q5%=Q5%+Q5% : FOR Q2%=1% TO 1% : NEXT Q2% : NEXT Q7% : RETURN 320 REM 330 REM *** RECEIVE RTN *************** 340 REM 350 A$='' : I%=1% 360 IF I8%=4% THEN 390 ELSE GET V$ : IF ASC(V$)=13% THEN RETURN ELSE IF ASC(V$)=8% THEN 380 370 I%=I%+1% : IF I%>120% THEN RETURN ELSE A$=A$+V$ : ; V$; : GOTO 360 380 IF I%=1% THEN 360 ELSE I%=I%-1% : A$=LEFT$(A$,I%-1%) : ; V$; : GOTO 360 390 IF INP(58%) AND 4% THEN 650 ELSE IF NOT INP(58%) AND 1% THEN 400 ELSE 390 400 FOR Q2%=1% TO 6% : NEXT Q2% : Q5%=1% : Q6%=0% 410 FOR Q7%=0% TO 6% : IF INP(58%) AND 1% THEN Q6%=Q6%+Q5% ELSE Q2%=Q2%+Q5% 420 Q5%=Q5%+Q5% : FOR Q2%=1% TO 4% : NEXT Q2% : NEXT Q7% 430 IF Q6%=13% OR Q6%=27% OR I%=120% THEN RETURN : REM "CR" = EOT ************* 440 IF Q6%<>8% THEN 450 ELSE IF I%=1% THEN 390 ELSE I%=I%-1% : A$=LEFT$(A$,I%-1%) : GOTO 390 450 ; CHR$(Q6%); : A$=A$+CHR$(Q6%) : I%=I%+1% : GOTO 390 460 REM 470 REM 480 REM *** SYSTEM/P PROPER ********** 490 REM 500 FOR Q2%=1% TO 5000% : NEXT Q2% : B$=C$ : GOSUB 230 : B$='* GO' : GOSUB 230 : GOTO 560 510 FOR Q2%=1% TO 10000%/(I8%-3%) : NEXT Q2% : B$='* SYSTEM/P - LOGON '+C1$ : GOSUB 230 : T=1E-100 : RANDOMIZE 520 GOSUB 350 : REM GET LOGON ******** 530 IF INSTR(1%,A$,'GBK')=0% THEN GOSUB 240 : GOTO 520 540 B1$=C3$ : GOSUB 240 : B$='* SYSTEM/P - WELCOME'+C1$ : GOSUB 230 : GOSUB 710 550 B$='* JAN 2, 1982 - WE WISH YOU A HAPPY NEW YEAR' : GOSUB 230 560 B$=C$+'* FOLLOWING COMMANDS AVAILABLE: /P0 /P1 /P2 /P3 /P4 /P5 /OFF /CA' : GOSUB 230 : GOSUB 350 570 IF INSTR(1%,A$,'/OFF')<>0% THEN 650 580 IF INSTR(1%,A$,'/P0')<>0% THEN 750 590 IF INSTR(1%,A$,'/P1')<>0% THEN 830 600 IF INSTR(1%,A$,'/P2')<>0% THEN 1070 610 IF INSTR(1%,A$,'/P3')<>0% THEN 1230 620 IF INSTR(1%,A$,'/P4')<>0% THEN 1380 630 IF INSTR(1%,A$,'/P5')<>0% THEN 1510 640 B$='* ILLEGAL COMMAND' : GOSUB 230 : GOTO 560 650 T1=T : GOSUB 710 : T1=T1-T : IF T1<0 THEN 670 ELSE P=8*T1 : B$='* SYSTEM/P - LOGOFF '+C1$ : GOSUB 230 660 B$='* COMPUTER RESOURCE USED: '+NUM$(FIX((T1*10)+.5)/10)+' MINUTES -'+NUM$(FIX(P+.5)/100)+' KRONOR' : GOSUB 230 670 OUT 58%,0% : FOR X=1 TO 10000 : NEXT X : GOTO 60 680 REM 690 REM *** TIME RTN ****************** 700 REM 710 T=(65536*PEEK(65010)+256*PEEK(65009)+PEEK(65008))/3000 : RETURN 720 REM 730 REM *** /P0 RTN ******************* 740 REM 750 B$=C$+C$+'* CHAR SET DEMO:' : GOSUB 230 : B$=C$ : GOSUB 230 760 FOR J%=1% TO 5% 770 B$='0123456789 ABCDEFGHIJKLMNOPQRSTUVXYZ][\ abcdefghijklmnopqrstuvxyz}{| !"#$%&/()=?+@@><^^*_-:.;, ' 780 GOSUB 230 : IF I9% THEN 500 790 NEXT J% : B$=C$ : GOSUB 230 : B$='* DONE' : GOSUB 230 : GOTO 560 800 REM 810 REM *** /P1 RTN ******************* 820 REM 830 B$=C$+C$+'* SVENSKA ORDSPR]K (AVSLUTA MED /CA, FORTS[TT MED "CR")' : GOSUB 230 : B$=C$ : GOSUB 230 840 IF Q%=1% THEN 860 : Q%=1% 850 FOR I%=0% TO 10% : READ D$(I%) : READ E$(I%) : READ F$(I%) : NEXT I% 860 FOR J%=1% TO 5% 870 D%=11%*RND : IF D%=D1% THEN 870 880 E%=11%*RND : IF E%=E1% THEN 880 890 F%=11%*RND : IF F%=F1% THEN 890 900 B$=D$(D%)+' '+E$(E%)+' '+F$(F%) : GOSUB 230 : IF I9% THEN 500 : D1%=D% : E1%=E% : F1%=F% : NEXT J% 910 GOSUB 350 : IF INSTR(1%,A$,'/CA')<>0% THEN 560 ELSE 860 920 DATA 'ANDERS OCH BRITA','PRASSLAR I S[NGHALMEN','BAKOM EN LITEN GR\NAKTIG BUSKE I HAGEN' 930 DATA 'HAR DU SETT HERR KANTARELL ? HAN','LOSSAR SAND F\R HAND EN STUND IBLAND','UTAN ATT DET M[RKS' 940 DATA 'HAVER DU SETT KARLSSON : HAN','L[GGER NER R\R','P] S\DER M[LARSTRAND' 950 DATA 'MOR [R RAR MEN FAR HAN','[TER [RTER OCH FL[SK','I AMSTERDAMS GL[DJEKVARTER' 960 DATA 'K[NNER DU AMANDA LUNDBOM - HON','HAR TV] VIND\GDA BR\DER','I EN GR\NM]LAD B]T SOM [R GJORD F\R TV]' 970 DATA 'DET S[GS OM KEJSAREN AV KINA ATT HAN','FIRAR SIN T O L F T E M\HIPPA','MED EN FLICKA P] VART KN[' 980 DATA 'FLICKAN I HAVANNA, HON','BADAR GETTER & KRITTER & FYRFOTA F[N','TILLSAMMANS MED PASTOR JANSSON' 990 DATA 'FRITIOF ANDERSSON, MIN GAMLE BARNDOMSV[N','LEVER F\R K[RLEK OCH SOLSKEN OCH S]NG' 1000 DATA 'P] DEN GLITTRANDE BL]A OCEAAAN' 1010 DATA '[R DET INTE FINGAL OLSSON SOM','SITTER D[R BORTA','UTAN ATT R\RA P] SIG' 1020 DATA 'H[R [R POLISEN SOM MITTIGATAN ST]R - HAN','T[NKER P] STORMANDE N[TTER','MED KRANS AV FIKONL\V OM MAGEN' 1030 DATA 'HAR DU SETT MIN LILLA GRIS : HAN','NIGER OCH S[GER ATT NU [R DET V]R','L]NGT UPP I NORRA BOHUSL[N' 1040 REM 1050 REM *** /P2 RTN ******************* 1060 REM 1070 B$=C$+C$+'* DET URGAMLA SPELET "SAX, STEN, PAPPER":' : GOSUB 230 : GOSUB 1470 : J0%=0% : J1%=0% : J2%=0% 1080 B$='* V[LJ SAX, STEN ELLER PAPPER' : GOSUB 230 : GOSUB 350 : I%=3%*RND 1090 J%=-1% : IF INSTR(1%,A$,'/CA')<>0% THEN 1180 ELSE IF INSTR(1%,A$,'SA')<>0% THEN J%=0% 1100 IF INSTR(1%,A$,'ST')<>0% THEN J%=1% ELSE IF INSTR(1%,A$,'PA')<>0% THEN J%=2% 1110 IF J%=-1% THEN 1080 ELSE IF I%-J%=0% THEN 1140 1120 IF I%=0% AND J%=1% OR I%=1% AND J%=2% THEN 1150 1130 IF I%=2% AND J%=0% THEN 1150 ELSE 1160 1140 B$='* OAVGJORT !' : J0%=J0%+1% : GOTO 1170 1150 B$='* DU VANN !' : J1%=J1%+1% : GOTO 1170 1160 B$='* JAG VANN !' : J2%=J2%+1% 1170 GOSUB 230 : B$=C$ : GOSUB 230 : GOTO 1080 1180 B$='* OAVGJORT'+NUM$(J0%)+' SLAG' : GOSUB 230 : B$='* DU VANN '+NUM$(J1%)+' SLAG' : GOSUB 230 1190 B$='* JAG VANN'+NUM$(J2%)+' SLAG' : GOSUB 230 : GOTO 560 1200 REM 1210 REM *** /P3 RTN ****************** 1220 REM 1230 B$=C$+C$+'* F\RS\K ATT GISSA ETT FEMSIFFRIGT TAL' : GOSUB 230 : B$='* F\R R[TT SIFFRA P] R[TT PLATS' 1240 B$=B$+' F]R DU ETT +' : GOSUB 230 : B$='* F\R R[TT SIFFRA P] FEL PLATS F]R DU ETT -' : GOSUB 230 1250 GOSUB 1470 : H$=NUM$(FIX(1E+5*RND)) : J1%=0% 1260 IF LEN(H$)<6% THEN H$=H$+'0' : GOTO 1260 1270 B1$=C$+'* DU GISSAR ATT TALET [R ' : GOSUB 240 : B1$=' ' : GOSUB 350 : IF INSTR(1%,A$,'/CA')<>0% THEN 1340 1280 IF LEN(A$)<>5% THEN B1$=' * M]STE VARA FEM SIFFROR !' : GOSUB 240 : GOTO 1270 1290 FOR J%=1% TO 5% : IF MID$(A$,J%,1%)=MID$(H$,J%+1%,1%) THEN B1$=B1$+'+' : GOTO 1320 1300 FOR J0%=2% TO 6% : IF MID$(A$,J%,1%)=MID$(H$,J0%,1%) THEN B1$=B1$+'-' : GOTO 1320 1310 NEXT J0% 1320 NEXT J% : J1%=J1%+1% : IF B1$=' +++++' THEN 1330 ELSE GOSUB 240 : GOTO 1270 1330 GOSUB 240 : B$='* BRAVO - R[TT EFTER'+NUM$(J1%)+' F\RS\K - N[STA TAL:' : GOSUB 230 : GOTO 1250 1340 B$='* DU SKULLE HA GISSAT P]'+H$ : GOSUB 230 : GOTO 560 1350 REM 1360 REM *** /P4 RTN ****************** 1370 REM 1380 B$=C$+'* BER[KN AV CHECKSIFFRA ENLIGT 10-MODULMETODEN' : GOSUB 230 : GOSUB 1470 : B$='* ANGE TALET:' : GOSUB 230 1390 GOSUB 350 : IF INSTR(1%,A$,'/CA')<>0% THEN 560 ELSE J0%=0% : I%=LEN(A$) : IF I%<>0% THEN 1410 1400 B$='' : GOSUB 230 : GOTO 1390 1410 IF I%-I%/2%*2%<>0% THEN A$='0'+A$ : I%=I%+1% 1420 FOR J%=1% TO I% STEP 2% : FOR J1%=1% TO 2% : J2%=ASC(MID$(A$,J%+J1%-1%,1%))-48% 1430 IF J2%<0% OR J2%>9% THEN 1460 ELSE J2%=J2%*J1% : IF J2%>9% THEN J2%=J2%-9% 1440 J0%=J0%+J2% : NEXT J1% : NEXT J% : J0%=(10%+J0%)/10%*10%-J0% : IF J0%=10% THEN J0%=0% 1450 B1$=' -'+NUM$(J0%)+C$ : GOSUB 240 : GOTO 1390 1460 B1$=' - EJ NUMERISKT'+C$ : GOSUB 240 : GOTO 1390 1470 B$='* DU KAN AVBRYTA MED /CA N[R DU VILL' : GOSUB 230 : RETURN 1480 REM 1490 REM *** /P5 RTN ***************** 1500 REM 1510 B$=C$+'* T[NDSTICKSSPELET: VI DRAR VARANNAN G]NG - DEN SOM DRAR SIST HAR F\RLORAT' : GOSUB 230 : J6%=0% : J7%=0% 1520 GOSUB 1470 1530 B$='* HUR M]NGA STICKOR SKALL VI B\RJA MED ?' : GOSUB 230 : GOSUB 350 : GOSUB 1850 : H$='' 1540 IF I9% THEN 1530 ELSE IF J%<1001% THEN J0%=J% : GOTO 1550 ELSE B$='* MAX 1000 !' : GOSUB 230 : GOTO 1530 1550 IF J0%>9% THEN 1560 ELSE B$='* MINST 10 !' : GOSUB 230 : GOTO 1530 1560 J2%=J0%/4%+1% : B$='* OCH HUR M]NGA (1 -'+NUM$(J2%)+' ST) F]R VI H\GST DRA VARJE G]NG ?' 1570 GOSUB 230 : GOSUB 350 : GOSUB 1850 : IF I9% THEN 1560 ELSE IF J%<=J2% THEN J1%=J% : GOTO 1590 1580 B$='* DU M]STE V[LJA 1 -'+NUM$(J2%)+' !' : GOTO 1570 1590 B$='* VEM DRAR F\RST - DU ELLER JAG ?' : GOSUB 230 : GOSUB 350 : IF INSTR(1%,A$,'D')<>0% THEN H$='D' 1600 I9%=0% : J9%=0% : IF INSTR(1%,A$,'J')<>0% THEN H$='J' 1610 IF H$='' THEN 1590 ELSE IF H$='D' THEN 1670 1620 B$='* HUR M]NGA DRAR DU ?' : GOSUB 230 : GOSUB 350 : IF INSTR(1%,A$,'/CA')<>0% THEN 560 ELSE GOSUB 1850 1630 IF I9% THEN 1620 ELSE IF J%<=J1% THEN 1640 ELSE GOSUB 1740 : IF I9% THEN 1820 ELSE 1620 1640 J0%=J0%-J% : IF J0%=1% THEN 1700 ELSE IF J0%>1% THEN 1660 ELSE J0%=J0%+J% : B$='* D] DRAR DU SJ[LV DEN SISTA' 1650 GOSUB 230 : GOSUB 1900 : B$='* '+B$+'...' : GOTO 1710 1660 B1$=' '+NUM$(J0%)+' KVAR'+C2$ : GOSUB 240 1670 FOR J4%=0% TO J0% : J2%=J0%-J4%*(J1%+1%)-1% : IF J2%>J1% THEN NEXT J4% ELSE IF J2%=0% THEN J2%=J1%*RND+1% 1680 J0%=J0%-J2% : B$='* JAG DRAR'+NUM$(J2%)+' '+NUM$(J0%)+' KVAR' : GOSUB 230 : IF J0%<>1% THEN 1620 1690 B$='* D] F]R DU TA DEN SISTA...' : GOSUB 230 : GOSUB 1900 : B$='* '+B$+'...' : GOTO 1710 1700 B$='* DU VANN !' : GOSUB 230 : GOSUB 2000 : B$='* '+B$+'...' 1710 GOSUB 230 : B$='* VILL DU F\RS\KA IGEN ?' : GOSUB 230 : GOSUB 350 : IF INSTR(1%,A$,'/CA')<>0% THEN 560 1720 IF INSTR(1%,A$,'J')<>0% THEN 1730 ELSE IF INSTR(1%,A$,'N')<>0% THEN 560 ELSE B$='* JA ELLER NEJ !' : GOTO 1710 1730 GOTO 1530 1740 I9%=0% : J9%=J9%+1% : ON J9% GOTO 1750,1760,1770,1780,1790 1750 B$='* FUSKA INTE !' : GOTO 1800 1760 B$="* FUSKA INTE SA' JAG" : GOTO 1800 1770 B$='* JAG HAR JU SAGT ATT DU INTE SKALL FUSKA !' : GOTO 1800 1780 B$='* FUSKA INTE ! NU S[GER JAG INTE TILL FLER G]NGER !' : GOTO 1800 1790 B$='* NU HAR JAG TR\TTNAT P] DITT FUSK. NU SLUTAR JAG.' 1800 GOSUB 230 : IF J9%=5% THEN I9%=-1% : RETURN ELSE RETURN 1810 RETURN 1820 B$='* MAN F]R FAKTISKT INTE BEHANDLA EN DATOR HUR SOM HELST !' 1830 GOSUB 230 : GOTO 560 1840 REM *** ASCII->NUM CONV RTN ****** 1850 I9%=0% : J%=0% : IF LEN(A$)<1% THEN I9%=-1% : RETURN 1860 FOR I%=1% TO LEN(A$) : Q2%=ASC(MID$(A$,I%,1%))-48% : IF Q2%<0% OR Q2%>9% THEN I9%=-1% : RETURN 1870 J%=10%*J%+Q2% : IF J%>1000% THEN RETURN ELSE NEXT I% : IF J%<1% THEN I9%=-1% 1880 RETURN 1890 REM *** COMMENTS RTN ************* 1900 J7%=J7%+1% : IF J7%>7% THEN 1980 ELSE ON J7% GOTO 1910,1920,1930,1940,1950,1960,1970 1910 B$='MEN DU VET: OTUR I SPEL' : RETURN 1920 B$='SOM SAGT - OTUR I SPEL' : RETURN 1930 B$='DET H[R G]R JU RIKTIGT BRA' : RETURN 1940 B$='INTE L[TT ATT SPELA MOT EN DATOR' : RETURN 1950 B$='NU B\RJAR JAG ATT TRIVAS' : RETURN 1960 B$='HURRA VAD JAG [R BRA' : RETURN 1970 IF J6%=0% THEN B$='INTE EN ENDA G]NG HAR DU VUNNIT HITTILLS' : RETURN 1980 IF J6%=0% THEN 1970 ELSE B$='HITTILLS HAR DU VUNNIT'+NUM$(J6%)+' G]NGER OCH JAG'+NUM$(J7%)+' G]NGER - INTE ILLA' 1990 RETURN 2000 J6%=J6%+1% : IF J6%>7% THEN 2080 ELSE ON J6% GOTO 2010,2020,2030,2040,2050,2060,2070 2010 B$='GRATTIS - DIN F\RSTA VINST' : RETURN 2020 B$='EN VINST TILL - BRAVO' : RETURN 2030 B$='NU HAR DU ALLT F]TT UPP ]NGAN ORDENTLIGT' : RETURN 2040 B$='DET H[R G]R JU GALANT' : RETURN 2050 B$='NU BORDE DU N[STAN HA MEDALJ' : RETURN 2060 IF J6%>J7% THEN B$='DU HAR FLER VINSTER [N JAG' : RETURN ELSE B$='DU HAR INTE FLER VINSTER [N JAG' : RETURN 2070 IF J7%=0% THEN B$='OCH JAG SOM INTE VINNIT EN ENDA G]NG' : RETURN 2080 IF J7%=0% THEN 2070 ELSE B$='DU HAR VUNNIT'+NUM$(J6%)+' G]NGER OCH JAG'+NUM$(J7%)+' G]NGER' : RETURN