10 ! SPELEDIT.BAC 20 ! Program av Magnus <8042> 1991 30 ! Det {r {r ett ritprogram f|r TELEDATA grafik p} ABC806 40 ! med v{nster scroll till en fil typ(.BAN). 50 ! Se SPELDEM2.BAC 60 ! Tyv{r s} finns ingen dokumentasion s} det {r bara att lista 70 ! och prova. 80 EXTEND : INTEGER : ATTRIBUTE 1 90 ; CHR$(12);TAB(20);RED EL "Spel Editor V 1.0" 100 ; " " : ; TAB(25);"Program av Magnus 1991" : ; SPACE$(320) 110 INPUT "Filnamn (Enhet:namn utan extension) ";Namn$ : Namn$=Namn$+".ban" 120 ON ERROR GOTO 640 130 PREPARE Namn$ AS FILE 1 140 ! ----------- Maskinkod f|r leftscroll ----------------- 150 POKE 55000,229,213,197,62,0,50,46,215,17,0,120,122,50,44,215,123 160 POKE 55016,50,45,215,33,0,192,58,46,215,79,6,0,9,26,119,35 170 POKE 55032,219,53,119,98,107,35,1,79,0,237,176,58,44,215,103,58 180 POKE 55048,45,215,111,1,80,0,9,62,127,188,194,31,215,62,208,189 190 POKE 55064,194,31,215,193,209,225,201,84,93,58,46,215,60,60,50,46 200 POKE 55080,215,195,227,214,0,0,0 210 REM Startadress = 55000 220 ! ---------------- slut p} Z80 kod ------------------ 230 DIM Bild$=0 : POKE VAROOT(Bild$),46,SWAP%(46),49152,SWAP%(49152),46,SWAP%(46) 240 ; CHR$(12) 250 FOR A=30720 TO 32719 : OUT 53,1 : POKE A,32 : NEXT A 260 F{rg=7 : Bakf{rg=0 270 DEF FNSetdot(Xkoor,Ykoor) LOCAL Xkoor,Ykoor,Bminne,Ystep 280 Ystep=Ykoor-INT(Ykoor/3)*3 290 Bminne=30720+Xkoor/2+(Ykoor/3)*80 300 IF Cu=2 THEN OUT 53,1 : POKE Bminne,32 : GOTO 350 310 Bm=PEEK(Bminne) : OUT 53.,F{rg+Bakf{rg*8. 320 POKE Bminne,Bm AND 159 330 IF (Xkoor AND 1) AND Ystep=2 POKE Bminne,PEEK(Bminne) OR 128 : GOTO 350 340 POKE Bminne,PEEK(Bminne) OR (4^Ystep+4^Ystep*(Xkoor AND 1)) 350 RETURN -1 360 FNEND 370 X=80 : Y=35 : Cu=1 380 IF SYS(5)=0 THEN 380 390 GET A$ 400 IF A$="`" THEN Cu=2 410 IF A$="'" THEN Cu=0 420 IF A$="~" THEN Cu=1 430 IF A$="8" THEN Y=Y-1 440 IF A$="2" THEN Y=Y+1 450 IF A$="4" THEN X=X-1 460 IF A$="6" THEN X=X+1 470 IF A$="1" THEN Y=Y+1 : X=X-1 480 IF A$="7" THEN Y=Y-1 : X=X-1 490 IF A$="9" THEN Y=Y-1 : X=X+1 500 IF A$="3" THEN Y=Y+1 : X=X+1 510 IF A$="f" THEN 610 520 IF A$="b" THEN 630 530 IF A$="s" THEN 670 540 IF A$="c" THEN 720 550 IF X<0 THEN X=0 560 IF X>158 THEN X=158 570 IF Y<0 THEN Y=0 580 IF Y>74 THEN Y=74 590 IF Cu=0 THEN 380 600 Z=FNSetdot(X,Y) : GOTO 380 610 IF SYS(5)=0 THEN 610 620 GET A$ : F{rg=VAL(A$) : GOTO 600 630 GET A$ : Bakf{rg=VAL(A$) : GOTO 600 640 ! ------ Error -------- 650 ; RED "Error ";WHT;ERRCODE 660 GOTO 110 670 ! --------- Scolla ett steg och spara ------------- 680 FGCTL BLK+RED : Z=CALL(55000) 690 PUT #1,Bild$ 700 FOR A=30799 TO 32719 STEP 80 : OUT 53,1 : POKE A,32 : NEXT A 710 X=X+2 : GOTO 380 720 Bild$="" : FOR Q=1 TO 46 : Bild$=Bild$+CHR$(0) : NEXT Q 730 PUT #1,Bild$ 740 CLOSE 1 750 END