10 REM PROGRAM : EMBMAKE
20 REM VERSION : 1.0
30 REM (C) : Ulf Dahl`n, <2422>
40 REM B]STAD 1984-06-25
50 REM
60 DIM Q0$=253%,Q$=253%,R1$=44%,R2$=11%,R3$=4%,R4$=11%
70 FOR J%=1% TO 44% : READ I% : R1$=R1$+CHR$(I%) : NEXT J%
80 REM Rad 10
90 DATA 130,43,10,0,134,128,199,128,0,204,194,146,92,0,0,191,58,131,193,145
100 DATA 92,0,0,199,41,254,206,54,199,42,254,206,54,199,0,1,250,245,199,6,0
110 DATA 245,183,13
120 REM
130 FOR J%=1% TO 11% : READ I% : R2$=R2$+CHR$(I%) : NEXT J%
140 DATA 134,129,193,145,92,0,0,213,186,44,199
150 REM
160 R3$=CHR$(0%,186%,44%,199%)
170 REM
180 FOR J%=1% TO 11% : READ I% : R4$=R4$+CHR$(I%) : NEXT J%
190 DATA 0,186,58,131,194,146,92,0,0,203,34
200 REM
210 ; INP(3%)CHR$(12%)TAB(14%)"EMBMAKE"
220 ; TAB(13%)"========="
230 ; CUR(3%,0%)"Detta program skapar en EMB-fil av en"
240 ; "eller flera delar av minnet."
250 ; CUR(6%,0%)"Ange antal minnesfragment (1-9): "; : L%=1% : GOSUB 850
260 GOSUB 970 : A%=I-1 : IF E% OR A%<0% GOTO 250
270 DIM F(1%,A%)
280 ; CUR(8%,0%)"Fragment"TAB(12)"Startadress"TAB(28)"Slutadress"
290 FOR I%=0% TO A%
300 ; CUR(9%+I%,3%)I%+1%
310 ; CUR(9%+I%,14%); : L%=5% : GOSUB 850 : GOSUB 970
320 IF E% GOTO 310 ELSE F(0%,I%)=I
330 ; CUR(9%+I%,30%); : L%=5% : GOSUB 850 : GOSUB 970
340 IF E% OR I253% GOSUB 800
580 L%=128% : IF L%>L L%=L
590 IF LEN(Q$)+L%+40%>253% L%=253%-LEN(Q$)-40%
600 R%=R%+10%
610 Q$=Q$+CHR$(34%+L%,R%,R%/256%)+R2$
620 Q$=Q$+CHR$(I)+R3$+CHR$(I/256%)+R4$+CHR$(L%)
630 FOR J=I TO I+L%-1%
640 Q$=Q$+CHR$(PEEK(J)) : NEXT J
650 Q$=Q$+CHR$(184%,13%)
660 I=I+L% : L=F(1%,I%)-I+1%
670 IF L GOTO 570
680 NEXT I% : Q$=Q$+CHR$(1%) : GOSUB 800
690 CLOSE 1%
700 REM
710 ; : ; : ; "KLART."
720 END
730 REM
740 REM --- FEL ---
750 ; : ; : ; CHR$(7%)"FEL"ERRCODE"!"
760 ; "AVBRYTER."
770 CLOSE 1%
780 END
790 REM
800 REM --- SKRIV BLOCK ---
810 Q$=Q$+STRING$(253%-LEN(Q$),0%)
820 Z%=CALL(28666%,1%) : Q0$=Q$ : Z%=CALL(28670%,P%)
830 P%=P%+1% : Q$="" : RETURN
840 REM
850 REM --- GENERELL INPUT-RUTIN ---
860 I$="" : G%=PEEK(65011%)+SWAP%(PEEK(65012%)) : ; SPACE$(L%)STRING$(L%,8%);
870 GET G$ : IF G$=CHR$(13%) RETURN
880 IF G$=CHR$(8%) IF LEN(I$) I$=LEFT$(I$,LEN(I$)-1%) : GOTO 930 ELSE 950
890 IF G$=CHR$(9%) IF LEN(J$) G$=LEFT$(J$,1%) : J$=RIGHT$(J$,2%) ELSE 950
900 IF G$=CHR$(24%) I$="" : GOTO 930
910 IF LEN(I$)=L% 950
920 I$=I$+G$
930 ; CUR(G%,SWAP%(G%))I$SPACE$(L%-LEN(I$))STRING$(L%-LEN(I$),8%);
940 GOTO 870
950 ; CHR$(7%); : GOTO 870
960 REM
970 REM --- TALKONTROLL ---
980 E%=0% : ONERRORGOTO 1000
990 I=VAL(I$) : GOTO 1010
1000 E%=-1%
1010 ONERRORGOTO 0 : RETURN