0 REM************ EDITOR ************** 1 REM*--------------------------------* 2 REM* * 3 REM* (C) 1985 BY THILO HERRMANN * 4 REM* POSTSTR. 6 * 5 REM* 7321 B\RTLINGEN * 6 REM* * 7 REM* TEL. 07161/52592 * 8 REM*--------------------------------* 9 REM********************************** 10 : 100 IFPEEK(50000)=56ANDPEEK(50001)=253THEN160 110 PRINT"SCROLL-MACHINE LADEN !" 120 END 130 : 140 : 150 REM ERWEITERUNG EIN 160 SYS49152 170 REM BASIC-SPEICHER UEBER 20000 180 REM FREIHALTEN 190 POKE56,78:POKE55,32:CLR 200 ZE=160:V=53248:AS=1024:SP=53240:M=1 210 SX=40:SY=180:TT=197:NT=64 220 XK=64:YK=8 230 H1=8:H2=16:H3=255:H4=256 240 UF=55296: REM ZWISCHENSPEICHER 250 A(0)=1:A(1)=0:A(2)=128 260 POKEV+21,0 270 A=3:GOSUB2240 280 GOSUB2280 290 : 300 REM *** EINGABE *** 310 GOSUB2500:_US0 320 PRINT"[147]" 330 SA=40960:XD=128:YD=64 340 GOSUB4860 350 : 360 : 370 REM ZEICHENSATZ KOPIEREN 380 PRINT"[147]":GOSUB5010 390 : 400 REM *** PARAMETER SETZEN *** 410 _RS:_ZF14 420 S2=SA-19-7*XD:GOSUB2130 430 _MTS2,XD,YD 440 _JS1,64,64 450 _GM1:_GRXD*8,XD*16-8,0,YD*8-8 460 DF=3*XD 470 : 480 REM TEXTFENSTER VERLEGEN 490 _RZ40,50,164 500 _SU0:_1R31,23,16 510 _RF6,6,6:_VI52224,15 520 : 530 IFWHTHEN760 540 _FU52224,53223,32 550 _US1:GOSUB2500:GOSUB3080 560 F(1)=14:F(4)=6 570 IFC=1THENF(1)=0:F(2)=7:F(3)=8:F(4)=10 580 GOSUB2500:GOSUB2930 590 : 600 REM PALETTE ERSTELLEN 610 A=52867:B=40:C=32 620 FORI=0TO7 630 FORT=0TO31 640 POKEA+I*B+T,I*C+T 650 NEXTT,I 660 : 670 REM *** LOESCHEN *** 680 GOSUB2500:PRINT"LOESCHEN (J/N)?" 690 GOSUB2060:ONAGOTO700,760 700 PRINT"[145]WIRKLICH (J/N)?" 710 GOSUB2060:ONAGOTO720,760 720 _FUSA,EA,32 730 : 740 : 750 REM *** SPRITES *** 760 _FUAS,AS+62,. 770 FORT=AS+6TOT+21STEP3:POKET,3:NEXT 780 FORT=AS+8TOT+21STEP3:POKET,192:NEXT 790 POKEAS+31,255:POKEAS+4,255 800 _UT AS,AS+64,55296,48,48 810 POKESP,96:POKESP+1,96 820 POKEV,175:POKEV+1,100 830 POKEV+2,0:POKEV+3,180 840 POKEV+40,7 850 POKEV+21,3 860 : 870 _FU960,1023,0 880 _FU1024,2023,32 890 _FU2040,2047,15 900 GOSUB2570 910 : 920 IFWHTHEN970 930 WH=1:REM FLAG SETZEN 940 : 950 REM AUF 0,0 -POSITION SETZEN 960 _POXD*8,0 970 _TM1:_US1:PRINT 980 E$="[255]":GOSUB4760:GOTO1070 990 : 1000 : 1010 REM ***** HAUPTROUTINE ***** 1020 : 1030 REM *** TASTATURABFRAGE *** 1040 REM CURSORTASTEN ABFRAGEN 1050 GETE$:IFE$=""THEN1490 1060 IFE$="[145]"ORE$=""ORE$="[157]"ORE$=""THENGOSUB2730:GOTO1410 1070 E=VAL(E$) 1080 REM ZEICHEN UNTER CURSOR LOESCHEN 1090 IFPEEK(TT)=.ORE$=CHR$(20)THENPOKEPO,32:GOTO1490 1100 IFE$=" "THENGOSUB4300 1105 IFE$="@"THEN5430 1110 IFE$="R"THENGOSUB4370 1120 IFE>0THEN:_ASE-1 1130 IFE$=""THENZE=32 1140 GOSUB2500 1150 _FU1024,2023,32 1160 IFE$="L"THEN680 1170 : 1180 : 1190 GOSUB2690 1200 IFE$="[136]"THENGOSUB2250 1210 IFE$="K"THENGOSUB2200 1220 IFE$="M"THENGOSUB4820 1230 IFE$="[205]"THENGOSUB5230 1240 IFE$="[133]"THEN1790 1250 IFE$="[134]"THEN1890 1260 IFE$=""THENPOKE648,4:_US0:PRINT"[147]";:END 1270 IFE$="F"THENGOSUB2910 1280 IFE$="Z"THEN3140 1290 IFE$="[215]"THENGOSUB3420 1300 IFE$="S"THENGOSUB3230 1310 IFE$="C"THENGOSUB5010 1320 IFE$="W"THENGOSUB4700 1330 IFE$="A"THEN5080 1340 IFE$="U"THENGOSUB3570 1350 IFE$="T"THEN5540 1360 IFE$="[203]"THENGOSUB3700 1370 IFE$="^"THENGOSUB5360 1390 IFE$="_"THENGOSUB4760 1400 REM BILDSCHIRM ZURUECKSETZEN 1410 GOSUB2570:PRINT 1420 _FU55896,56295,FS 1430 _FU55296,55855,F(4) 1440 POKEV+39,1:POKE198,0 1450 XC=ZEAND31:YC=INT(ZE/32) 1460 UT=1:GOSUB2780:UT=0 1470 PRINTTAB(26)"[145]NR. :"ZE"[157] " 1480 : 1490 GOSUB1580 1500 IFM2THENGOSUB1630 1510 IFUSR(4)THEN:GOSUB1540:POKEPO,ZE 1520 _SY1 1530 GOSUB1690:GOTO1050 1540 IFM1THENZE=K(PAAND7,KM):PA=USR(KD) 1550 IFWETHENZE=ZE+1:IFZE>W2THENZE=W1 1560 RETURN 1565 : 1570 REM ADRESSE BERECHNEN 1580 PO=USR(3)-DF 1590 IFPO<.THENPO=65536+PO 1600 RETURN 1610 : 1620 REM MICRO-PUNKT BERECHNEN 1630 PU=P2((P1AND1)+(P2AND1)*2) 1640 ZE=S(R(USR(PO))ORPU) 1650 P1=USR(1)/4:P2=USR(2)/4 1660 RETURN 1670 : 1680 REM X- UND Y-KOORDINATEN PRINTEN 1690 GOSUB1750 1700 PRINT"[145]X:"XP; 1710 PRINT"[157] Y:"YP; 1720 PRINT"[157] ADDR:"PO"[157] " 1730 RETURN 1740 : 1750 XP=INT(USR(1)/8-XD) 1760 YP=INT(USR(2)/8):RETURN 1770 : 1780 REM *** ABSPEICHERN *** 1790 PRINT"ABSPEICHERN (J/N)?" 1800 GOSUB2060:ONAGOTO1810,1410 1810 GOSUB5780:IFA$="K"THEN3960 1820 _MTSA,XD,YD 1830 _US0 1840 OPEN1,8,15,"S:"+N$:GOSUB1990 1850 _SV N$,EA 1860 GOSUB1980:GOTO420 1870 : 1880 REM *** LADEN *** 1890 PRINT"LADEN (J/N)?" 1900 GOSUB2060:ONAGOTO1910,1410 1910 GOSUB5780:IFA$="K"THEN4190 1920 _LD N$ 1930 GOSUB1980:IFENTHEN1950 1940 SA=USR(10):XD=USR(11):YD=USR(12) 1950 GOTO420 1960 : 1970 REM FLOPPYMELDUNG 1980 _US0:OPEN1,8,15 1990 INPUT#1,EN,ER$,ET,ES 2000 CLOSE1:_US1 2010 IF ER$="OK"THEN RETURN 2020 PRINT""EN;ER$;ET;ES 2030 WAIT197,63:POKE198,0:RETURN 2040 : 2050 REM J/N EINGABE 2060 POKE198,0 2070 GETA$ 2080 IFA$="J"THENA=1:RETURN 2090 IFA$<>"N"THEN2070 2100 A=2:RETURN 2110 : 2120 REM ENDADRESSE BERECHNEN 2130 EA=SA+XD*YD-1:RETURN 2140 : 2150 : 2160 REM HI/LO-BYTE UMRECHNUNG 2170 H=INT(A/256):L=A-H*256:RETURN 2180 : 2190 REM KONTUR EINSTELLEN 2200 GOSUB3880 2210 INPUT"GESCHWINDIGKEIT:8[157][157][157]";GE 2220 IFA<3THEN:XK=GE:YK=64:GOTO2240 2230 YK=GE:XK=64 2240 KM=A:KD=(A-1)/2+1 2250 WE=0:M1=1:M2=0:_JS1,XK,YK:RETURN 2260 : 2270 REM MICRO-DATAS 2280 DATA 32,108,123,98,124,225,255,254,126,127,97,252,226,251,236,160 2290 DIMR(255),S(15) 2300 RESTORE 2310 FORI=0TO15 2320 READA:S(I)=A:R(A)=I:NEXT 2330 : 2340 FORI=0TO3:P2(I)=2^(3-I):NEXT 2350 : 2360 REM Y - DATAS 2370 DATA100,111,121,98,248,247,227,160 2380 FORI=7TO0STEP-1:READA:K(I,3)=A 2390 K(I,4)=A+128AND255:NEXT 2400 : 2410 REM X - DATAS 2420 DATA101,116,117,97,246,234,231,160 2430 FORI=0TO7:READA:K(I,1)=A 2440 K(I,2)=A+128AND255:NEXT 2450 : 2460 RETURN 2470 : 2480 : 2490 REM NORMAL SCHALTEN 2500 POKE648,4 2510 _MC21,52,52 2520 _CI151,148,148 2530 GOSUB2650 2540 RETURN 2550 : 2560 REM PALETTE EINSCHALTEN 2570 _MC52,52,52 2580 _CI148,148,148 2590 POKE648,204 2600 POKE214,14:PRINT 2610 _FU55856,55895,6:REM HIN.FAR. 2620 RETURN 2630 : 2640 REM CURSOR SETZEN + ZEILE LOESCHEN 2650 POKE214,14:PRINT:PRINT" [145]" 2660 RETURN 2670 : 2680 REM AUF VIELFACHES VON 8 SETZEN 2690 GOSUB1750:_POXD*8+XP*8,YP*8:RETURN 2700 : 2710 : 2720 REM WAHL DES CHARACTERS 2730 IFE$="[145]"THENYC=YC-1:IFYC<0THENYC=7 2740 IFE$=""THENYC=YC+1:IFYC>7THENYC=0 2750 IFE$="[157]"THENXC=XC-1:IFXC<0THENXC=31 2760 IFE$=""THENXC=XC+1:IFXC>31THENXC=0 2770 REM SPRITESTEUERUNG 2780 CX=XC*H1+SX 2790 POKEV+2,CXANDH3 2800 POKEV+H2,SGN(CXANDH4)*2 2810 POKEV+3,SY+YC*H1 2820 : 2830 IFUTTHEN2860 2840 IFPEEK(TT)<>NTTHENGETE$:GOTO2730 2850 GOSUB2570:PRINT 2860 ZE=YC*32+XC:REM ZEICHEN BERECHNEN 2870 RETURN 2880 : 2890 : 2900 REM FARBENEINGABE 2910 GOSUB3080 2920 : 2930 PRINT 2940 A=1:GOSUB3050: 2950 ONCGOTO2960,2980 2960 A=2:GOSUB3050:POKEV+34,F(2) 2970 A=3:GOSUB3050:POKEV+35,F(3) 2980 _2R200+B,200,192+B 2990 A=4:GOSUB3050:_HF6,6,F(1) 3000 : 3010 FS=F(4) 3020 IFB=0THENFS=F(1) 3030 GOSUB2570:RETURN 3040 : 3050 PRINT"[145]FARBE"A": "F(A)"[157] " 3060 PRINT"[145]"TAB(10);:INPUTF(A):RETURN 3070 : 3080 PRINT"MULTICOLOR (J/N)?" 3090 GOSUB2060:GOSUB2500:B=(1-(A-1))*16:C=A 3100 RETURN 3110 : 3120 : 3130 REM ZEICHENSATZ LADEN 3140 PRINT"ZEICHENSATZ LADEN (J/N)?" 3150 GOSUB2060:ONAGOTO3160,3190 3160 INPUT"NAME: ";N$ 3170 REM LADEN AN 53248 - 2 3180 _LD N$,53246:GOSUB1980 3190 GOTO420 3200 : 3210 : 3220 REM SCHREIBEN 3230 _SY0:_TM0:_JS0:RT=USR(1) 3240 X=USR(1):Y=USR(2) 3250 GETA$:IFA$="[136]"THEN:_TM1:_JS1:RETURN 3260 IFA$=""THEN3250 3270 A=ASC(A$) 3280 REM CURSORSTEUERCODES BEACHTEN 3290 IFA=32THEN3360 3300 IFA=20ORA=157THENX=X-8:GOTO3380 3310 IFA=29THENX=X+8:GOTO3380 3320 IFA=17THENY=Y+8:GOTO3380 3330 IFA=145THENY=Y-8:GOTO3380 3340 IFA=13THENY=Y+8:X=RT:GOTO3380 3350 IFA=18ORA=146THENPRINTA$;:GOTO3250 3360 PRINT""A$;:A=PEEK(1024) 3370 POKEUSR(3)-DF,A:X=X+8 3380 _POX,Y:GOTO3240 3390 : 3400 : 3410 REM WECHSEL 3420 GOSUB2570:GOSUB2650 3430 PRINT"WECHSEL VON":GOSUB3500 3440 W1=ZE 3450 PRINT"[145]WECHSEL BIS":GOSUB3500 3460 W2=ZE:IFW2=SAANDA<=EATHENPOKEA,ZE 3650 _SY1 3660 GOTO3600 3670 : 3680 : 3690 REM KONTUREN DEFINIEREN 3700 GOSUB3880:A2=A 3710 GOSUB2570:GOSUB2650 3720 PRINT"ERSTES ELEMENT ?" 3730 GOSUB3500 3740 GOSUB2650 3750 : 3760 REM AUSTEIGEND ODER FALLEND 3770 PRINT"1...[-1] / 2...[+1]" 3780 GETA$:A=VAL(A$)*2-3 3790 IFA<-1ORA>1THEN3780 3800 A3=0 3810 REM IN VARIABLEN SCHREIBEN 3820 FORI=-3.5*ATO3.5*ASTEPA 3830 K(I+4,A2)=ZE+A3:A3=A3+1:NEXT 3840 A=A2:GOSUB2650:GOTO2210 3850 : 3860 : 3870 REM WAHL DES KONTURMODES 3880 PRINT"1...X+ [194] 2...X- [194] 3...Y+ [194] 4...Y- 3890 [161]A$:A[178][197](A$) 3900 [139]A[179]1[176]A[177]4[167]3890 3910 [142] 3920 : 3930 : 3940 [143] ABSPEICHERN AUF KASSETTE 3950 [143] SCHREIBEN VON SA,XD,YD 3960 _OF:[159]1,1,1,N$:[152]1,SA","XD","YD:[160]1 3970 [143] SCHREIBEN DES SCHIRMS 3980 [141]4050:A[178]SA:[141]2170 3990 [151]251,L:[151]252,H 4000 A[178]EA[170]1:[141]2170 4010 [151]780,251:[151]781,L:[151]782,H 4020 [158]65496:[160]1:[158]49152:[137]410 4030 : 4040 [143] OEFFNEN DES KASSETTENKANALS 4050 L[178][195](N$):[151]183,L 4060 S[178]256[172]204 4070 [139]L[178]0[167]4100 4080 [129]X[178]1[164]L 4090 [151]S[170]X[171]1,[198]([202](N$,X,1)):[130] 4100 [151]780,1:[151]781,1:[151]782,0 4110 [158]65466 4120 [151]780,L:[151]781,0 4130 [151]782,204:[158]65469 4140 [142] 4150 : 4160 : 4170 [143] LADEN VON KASSETTE 4180 [143] LESEN VON SA,XD,YD 4190 _OF:[159]1,1,0,N$:[132]1,S2,X2,Y2:[160]1 4200 [143] LESEN DES SCHIRMS 4210 [141]4050:A[178]S2:[141]2170 4220 [151]780,0:[151]781,L:[151]782,H 4230 [158]65493 4240 [139](ST [175] 48)[167][153]"BAND FEHLER !":[160]1:[146]197,63:[137]410 4250 SA[178]S2:XD[178]X2:YD[178]Y2:[158]49152:[137]410 4260 : 4270 : 4280 [143] SCHNELLGANG 4290 [143] SYNCRONISATION AUS + HF=GRUEN 4300 _SY0:_RF6,6,5:[151]V[170]39,1 4310 [141]1580:[141]1690 4320 [161]E$:[139]E$[178]""[167]4310 4330 E$[178]"":_RF6,6,6:[142] 4340 : 4350 : 4360 [143] RECHTECK AUSFUELLEN 4370 [141]4480:[143] BEREICH WAEHLEN 4380 [139]E$[178]"_"[167][142] 4390 : 4400 [143] RECHTECK FUELLEN 4410 [129]I[178]YS[164]YP 4420 BR[178]PS[170](YP[171]I)[172]XD 4430 _FU BR,BR[170](XP[171]XS),ZE 4440 [130] 4450 E$[178]"":[142] 4460 : 4470 [143] BEREICH WAEHLEN 4480 XS[178]XP:YS[178]YP:PS[178]PO:G[178][183](PS) 4490 [151]PS,([183](PS)[170]128)[175]H3 4500 [151]V[170]39,[194](V[170]39)[170]1[175]H3 4510 _SY1 4520 [141]1580:[141]1690 4530 [139][183](4)[167]4590 4540 [161]E$ 4550 [139]E$[178]""[167]4490 4560 [139]E$[178]" "[167][141]4300 4570 [139]E$[178]"_"[167][151]PS,G:[137]4760 4580 [137]4490 4590 [151]PS,G 4600 : 4610 [143] NORMALISIEREN 4620 [139]XP[171]XS[179]0[167]A[178]XP:XP[178]XS:XS[178]A 4630 [139]YP[171]YS[179]0[167]A[178]YP:YP[178]YS:YS[178]A 4640 PS[178]SA[170]YS[172]XD[170]XS 4650 [142] 4660 : 4670 : 4680 : 4690 [143] UMSCHALTEN AUF WECHSELMODUS 4700 WE[178]WE[170]1[175]1 4710 [139]WE[167]ZE[178]W1:[142] 4720 [137]2860 4730 : 4740 : 4750 [143] RESET 4760 M1[178]0:M2[178]0:[141]2690:_JS1,64,64 4770 WE[178]0:ZE[178]160 4780 [142] 4790 : 4800 : 4810 [143] MICRO - MODE SETZEN 4820 M2[178]1:M1[178]0:WE[178]0:_JS1,32,32:[142] 4830 : 4840 : 4850 [143] EINGABE VON AA,XD,YD 4860 [141]2650 4870 [153]"X- UND Y-AUSDEHNUNG "XD","YD 4880 [153]"ON"[166]23);:[133]XD,YD 4890 [153]"STARTADRESSE "SA 4900 [153]"ON"[166]16);:[133]SA 4910 [139]XD[179]1[176]YD[179]1[167]4860 4920 [141]2130 4930 [153]"START:"SA" ENDE:"EA 4940 [139]SA[179]20000[176](SA[177]49152[175]SA[179]57344)[176]SA[177]65530[167]4860 4950 [139](EA[177]49152[175]EA[179]57344)[176]EA[177]65535[167]4860 4960 [153]"RICHTIG (J/N)?" 4970 [141]2060:[145]A[137]4980,4860 4980 [142] 4990 : 5000 [143] ZEICHENSATZ VOM ROM INS RAM 5010 [141]2500:[153]"ZEICHENSATZ KOPIEREN (J/N)?" 5020 [141]2060:[145]A[137]5030,5040 5030 _CP 5040 [142] 5050 : 5060 : 5070 [143] UMFORMATIEREN EINES SCHIRMS 5080 SF[178]SA:EF[178]EA:XF[178]XD:YF[178]YD 5090 [141]4860:_US0:L[178]48 5100 L1[178]0:L2[178]YF[171]1:L3[178]1 5110 [139]XD[177]XF[167]L1[178]YF[171]1:L2[178]0:L3[178][171]1 5120 : 5122 [153]"LOAD SCHIRM AN NEUE ADRESSE KOPIEREN (J/N)?" 5123 [141] 2060:[145] A [137] 5140,5190 5130 : 5140 [129]I[178] L1 [164] L2 [169] L3 5150 A[178]SF[170]XF[172]I:B[178]SF[170]XF[172](I[170]1)[171]1:C[178]B[171]A 5160 _UT A,B,UF,L,L 5170 _UT UF,UF[170]C,SA[170]XD[172]I,L,L 5180 [130] 5190 [137]420 5200 : 5210 : 5220 [143] MICRO-ZEICHEN DEFINIEREN 5230 [141]2570:[141]2650 5240 [153]"ERSTES ELEMENT ?" 5250 [141]3500:[143] ZEICHEN WAEHLEN 5260 [139]ZE[177]240[167]5250 5270 [141]5320 5280 [129]I[178]0[164]15:S(I)[178]I[170]ZE:R(I[170]ZE)[178]I 5290 [130] 5300 [137]4820 5310 : 5320 [129]I[178]0[164]255:R(I)[178].:[130]:[142] 5330 : 5340 : 5350 [143] KONTUR UND MICRO RESET 5360 [153]"KONTUR UND MICRO ZURUECKSETZEN (J/N)?" 5370 [141]2060:[145]A[137]5380,5390 5380 [141]5320:[141]2300 5390 [142] 5400 : 5410 : 5420 [143] MICRO-MODE UMSCHALTEN 5430 R(32)[178]15[171]R(32) 5440 [129]I[178]0[164]15 5450 R(S(I))[178]15[171]I 5460 [130] 5470 [129]I[178]0[164]7 5480 A[178]S(I):S(I)[178]S(15[171]I):S(15[171]I)[178]A 5490 [130] 5500 [137]1490 5510 : 5520 : 5530 [143] TRANSFER EINES BEREICHES 5540 [141]4480:[143] BEREICH WAEHLEN 5550 [139]E$[178]"_"[167]420 5560 [141]2650:[153]"WOHIN (LINKER OBERER PUNKT) ?ON" 5570 [139][183](4)[167]5570 5580 PT[178]PS:XT[178]XS:YT[178]YS 5590 XR[178]XP:YR[178]YP:[141]4480 5600 [139]E$[178]"_"[167]420 5610 : 5620 [143] RECHTECK UEBERTRAGEN 5630 _US0 5640 [139]PO[177]PT[167]L1[178]YT:L2[178]YR:L3[178]1:[137]5660 5650 L1[178]YR:L2[178]YT:L3[178][171]1 5660 L[178]48 5670 [129]I[178]L1[164]L2[169]L3 5680 BR[178](YR[171]I)[172]XD 5690 A[178](XR[171]XT) 5700 _UT PT[170]BR,PT[170]BR[170]A,UF,L,L 5710 [139]PO[170]BR[170]A[177]EA[167]5730 5720 _UT UF,UF[170]A,PO[170]BR,L,L 5730 [130] 5740 [137]420 5750 : 5760 : 5770 [143] EINGABE FUER DISK & KASSETTE 5780 N$[178]"":[133]"NAME: ";N$ 5790 [153]"DWAITISK ODER KWAITASSETTE ? 5800 GETA$:IFA$<>"K"ANDA$<>"D"THEN5800 5810 RETURN 5820 GOSUB2280:RESTORE 5830 FORI=0TO15 5840 R(S(I))=15-I:READA:S(15-I)=A+128AND255 5850 NEXT 5860 FORI=0TO15:PRINTS(I);:NEXT