1 REM *****************************
2 REM * BDATA .BAS / Minne 16K..*
3 REM * VER 1.0 / 1982-??-?? *
4 REM * (c) Alf Wirdling / <4230> *
5 REM * Tel : 0470-26277 / V[XJ\ *
6 REM *****************************
100 REM BDATA
110 REM
120 REM Programmet startas normalt av
130 REM ADATA med CHAIN men om f|ljande
140 REM g|rs innan laddning av prog-
150 REM rammet, kan man l{gga till
160 REM redan skapade data-satser.
170 REM
180 REM POKE 65408,PEEK(65052)
190 REM POKE 65409,PEEK(65053)
200 REM POKE 65052,0,227 : NEW
210 REM
220 ; : ; CHR$(12);TAB(8);"DATA-GENERATE - VER 1.0"
230 ; TAB(8);"======================="
240 ; : ; "Programmet genererar data-satser direkt"
250 ; "i minnet, och vid program-avslut f|r-"
260 ; "vandlas programmet till dessa data-"
270 ; "satser."
280 DIM R$=120,L%(30%),L2%(30%)
290 REM SPARAD BOFA
300 B0%=PEEK(65408%)+PEEK(65409%)*256% : B%=B0%
310 REM MENY
320 ONERRORGOTO 320
330 ; : ; " MENY "
340 ; : ; "1 - Uppl{ggning data-layout"
350 ; "2 - Registrera data-satser"
360 ; "3 - Listning av data-satser"
370 ; "4 - Data-generering"
380 ; : ; "Val "; : GET R$ : ; R$
390 V%=VAL(R$) : IF V%<1% OR V%>4% THEN 310
400 ON V% GOTO 410,620,1180,1360
410 REM DATA-STRUKTUR
420 ; : ; " LAYOUT "
430 ; : ; "X = Str{ng 9 = Ej str{ng"
440 ; : ; "Tryck RETURN f|r avslut, / f|r backning" : ;
450 S%=0% : FOR I%=0% TO 30%
460 ; "F{lt";I%+1%;" (X/9)";TAB(15);
470 GET R$ : IF ASC(R$)=13% THEN L3%=I%-1% : ; : GOTO 310
480 IF R$="/" THEN S%=S%-L2%(I%-1%) : I%=I%-2% : ; : GOTO 610
490 IF R$="X" OR R$="x" THEN 530
500 IF R$<>"9" THEN 470
510 REM 9
520 L%(I%)=1% : ; R$; : GOTO 550
530 REM X
540 L%(I%)=2% : ; R$;
550 ; TAB(20);"Max-l{ngd ";
560 ONERRORGOTO 570 : INPUT L2%(I%) : GOTO 580
570 L2%(I%)=0%
580 S2%=S%+L2%(I%)+1% : IF L%(I%)=2% THEN S2%=S2%+2%
590 IF S2%<114% THEN S%=S2% : GOTO 610
600 ; : ; "<<< Total layout-l{ngd f|r l}ng >>>" : ; : GOTO 550
610 NEXT I%
620 REM REG DATA
630 ; : ; " REG DATA "
640 IF G%=1% THEN 780
650 ; : ; "Till{gg till gamla data-satser (J/N) ";
660 GET R$ : ; R$ : IF R$<>"J" AND R$<>"j" THEN 740
670 B%=B0%
680 REM SATS LOOP
690 IF PEEK(B%)=1% OR PEEK(B%+3%)<>147% THEN 710
700 R=PEEK(B%+1%)+PEEK(B%+2%)*256 : B%=B%+PEEK(B%) : GOTO 680
710 ONERRORGOTO 710
720 ; : ; "Steg-v{rde "; : INPUT R2 : G%=1%
730 R=R+R2 : GOTO 780
740 ; : ; "<<< Nyuppl{ggning >>>"
750 ONERRORGOTO 750
760 ; : ; "Fr}n och med rad-nr "; : INPUT R
770 ; "Steg-v{rde "; : INPUT R2 : G%=1%
780 ; : ; "<<< Start fr}n adress";65536+B%;" >>>"
790 ; : ; "/B backar ett f{lt"
800 ; "/F n{sta f{lt (utan ,)"
810 ; "/S n{sta sats"
820 ; "/M till menyn"
830 REM SATS LOOP
840 ; : ; "*** DATASATS";R;" ***"
850 B2%=B%+3% : S%=0% : FOR I%=0% TO L3%
860 ; : ; "F[LT NR";I%+1% : ; STRING$(L2%(I%),45%)
870 INPUTLINE R$ : ; : R$=LEFT$(R$,LEN(R$)-2%)
880 IF R$<>"/B" AND R$<>"/b" THEN 930
890 REM BACKA F[LT
900 FOR J%=B2%-1% TO B% STEP -1% : S%=S%-1%
910 IF PEEK(J%)=44% THEN B2%=J% : I%=I%-2% : GOTO 1100
920 NEXT J% : GOTO 830 : REM NOBACK
930 IF R$="/F" OR R$="/f" THEN 1100
940 IF R$<>"/S" AND R$<>"/s" THEN 970
950 REM N[STA SATS
960 B2%=B2%-1% : GOTO 1110
970 IF R$="/M" OR R$="/m" THEN 310
980 IF L2%(I%)=0% OR LEN(R$)<=L2%(I%) THEN 1010
990 REM F\R L]NG
1000 ; : ; "F|r m}nga tecken (max";L2%(I%);")" : GOTO 860
1010 S2%=S%+LEN(R$)+1% : IF L%(I%)=2% THEN S2%=S2%+2%
1020 IF S2%<114% THEN S%=S2% : GOTO 1040
1030 ; : ; "<<< Total sats-l{ngd f|r l}ng >>>" : GOTO 860
1040 X%=INSTR(1%,R$," ")
1050 IF L%(I%)=2% OR X%>0% POKE B2%+1%,34% : B2%=B2%+1%
1060 FOR J%=1% TO LEN(R$) : POKE B2%+J%,ASC(MID$(R$,J%,1%)) : NEXT J%
1070 IF L%(I%)=2% OR X%>0% POKE B2%+J%,34% : B2%=B2%+1%
1080 IF I%<>L3% POKE B2%+J%,44% : B2%=B2%+1%
1090 B2%=B2%+J%-1%
1100 NEXT I%
1110 POKE B2%+1%,13%,1% : REM RET
1120 POKE B%,B2%-B%+2% : REM L[NGD
1130 A2=INT(R/256) : A1=R-(A2*256)
1140 POKE B%+1%,A1,A2,147% : REM NR/KOD
1150 B%=B2%+2% : R=R+R2
1160 IF 65536+B%>57900 ; : ; CHR$(7);"<<< VARNING - MINNET SNART FULLT >>>"
1170 GOTO 830
1180 REM LISTA DATA
1190 ; : ; " LISTA DATA "
1200 ONERRORGOTO 1220
1210 ; : ; "Fr}n och med rad-nr (RET = start) "; : INPUT R3 : GOTO 1230
1220 R3=0
1230 ; : ; "Tryck RETURN f|r menyn" : ;
1240 B3%=B0%
1250 REM LIST LOOP
1260 IF PEEK(B3%)=1% THEN 310
1270 IF R3>0 AND PEEK(B3%+1%)+PEEK(B3%+2%)*256