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>>" : GOTO 310 1310 ; " DATA "; 1320 R$="" : FOR I%=B3%+4% TO B3%+PEEK(B3%)-1% 1330 R$=R$+CHR$(PEEK(I%)) : NEXT I% : ; R$ 1340 GET R$ : IF R$=CHR$(13%) THEN 310 1350 B3%=B3%+PEEK(B3%) : GOTO 1260 1360 REM  DATA GEN  1370 ; : ; "[r du s{ker (J/N) "; 1380 GET R$ : ; R$ : IF R$<>"J" AND R$<>"j" THEN 310 1390 IF B%<0% THEN B=65536+B% ELSE B=B% 1400 A2=INT((B-1)/256) : A1=(B-1)-(A2*256) 1410 A4=INT(B/256) : A3=B-(A4*256) 1420 POKE 65052%,PEEK(65408%),PEEK(65409%) 1430 POKE 65054%,A1,A2 1440 POKE 65056%,A3,A4 1450 ; : ; "*** PROGRAMMET [R NU DATA-SATSER ***" 1460 END