1 IF PEEK(&HF000)=&H7E THEN 10 2 GOSUB 957:GOTO 983 10 GOTO 1000:REM BASICODE-3 f}r Amstrad PCW v 1.03 20 GOSUB 100:CLEAR:RANDOMIZE (PEEK(&HFBF6)+PEEK(&HFBF7)+PEEK(&HFBF8)):SV=7:OSETCHAR=&HF000:OSETPOINT=&HF0BA:OPOINT2=&HF256:ODRAW=&HF162:OGETCUR=&HF263:OREADCHAR=&HF277:OFINDCHAR=&HF287 21 HO=39:VE=24:HG=659:VG=247 28 GOTO 1010 100 PRINT CHR$(27)"e"CHR$(27)"c?"CHR$(27)"b"CHR$(0);:WIDTH 255 101 PRINT CHR$(27)"E"CHR$(27)"H";:HO=0:VE=0:GOSUB 952:RETURN 110 HO=MAX(0,HO):HO=MIN(39,HO):VE=MAX(0,VE):VE=MIN(23,VE):PRINT CHR$(27)"Y"CHR$(32+VE)CHR$(32+HO);:RETURN 120 CALL OGETCUR:HO=PEEK(&HF26C):VE=PEEK(&HF26D):RETURN 150 PRINT CHR$(27)"p ";SR$;" "CHR$(27)"q";:RETURN 200 IN=0:IN$=INKEY$:IF IN$<>"" THEN IN=ASC(IN$) 201 IN=IN+32*((IN>96)AND(IN<127)) 202 IN=IN-27*(IN=1):IN=IN-23*(IN=6):IF IN=127 THEN GOSUB 120:IF HO>0 THEN IN$=CHR$(27)+"D "+CHR$(27)+"D" ELSE IN=0:IN$="" 203 RETURN 210 GOSUB 200:IF IN$<>"" THEN RETURN ELSE 210 220 IF ((HO<0) OR (HO>39)) THEN IN=0:RETURN 221 IF ((VE<0) OR (VE>24)) THEN IN=0:RETURN 222 POKE &HF278,VE:POKE &HF27A,HO:CALL OREADCHAR:CALL OFINDCHAR:IN=PEEK(&HF276):CN=-32*((IN>96)AND(IN<127)):IN=IN-CN:RETURN 250 PRINT CHR$(7);:RETURN 260 RV=RND:RETURN 270 FR=FRE(""):RETURN 280 OPTION RUN:IF FR=1 THEN OPTION STOP 281 RETURN 300 SR$=STR$(SR):IF SR>=0 THEN SR$=MID$(SR$,2) 301 RETURN 310 IF CN=0 THEN SR$=DEC$(SR,STRING$(CT,"#")) ELSE SR$=DEC$(SR,STRING$(CT-CN-1,"#")+"."+STRING$(CN,"#")) 311 IF LEFT$(SR$,1)="%" THEN SR$=STRING$(CT,"*") 312 RETURN 330 FOR OF=1 TO LEN(SR$) 331 IF ASC(MID$(SR$,OF,1))>95 THEN GOSUB 340 332 NEXT OF 333 RETURN 340 OSR=ASC(MID$(SR$,OF,1))-32 341 SR$=LEFT$(SR$,OF-1)+CHR$(OSR)+MID$(SR$,OF+1) 342 RETURN 350 LPRINT SR$;:RETURN 360 LPRINT:RETURN 400 IF SV=0 THEN 450 401 IF SD=0 THEN RETURN ELSE OP=SP:ODUUR=SD 402 OP=MAX(SP,11):OP=MIN(SP,112) 403 SD=SD*0.45:ODUUR=MAX(SD,1):ODUUR=MIN(SD,255) 412 OFREQ=880*(2^((OP-69)/12)):OCW=ROUND(400000!/3/OFREQ)-4:OCW=MAX(OCW,1):OCW=MIN(OCW,255) 413 OHLW=0.2*ODUUR*OFREQ:OHLW=MAX(OHLW,1):OHLW=MIN(OHLW,65535!) 415 OADR=&HF404:OLW=OHLW-256*INT(OHLW/256):POKE OADR,(OHLW-OLW)/256:OADR=&HF403:POKE OADR,OLW:OADR=&HF401:POKE OADR,OCW:OADR=&HF400 416 CALL OADR:RETURN 450 OSD=SD*3.45 451 OSD=OSD-1 452 GOSUB 200:IF IN=0 THEN 453 ELSE IF SD<>0 THEN 454 453 IF OSD>0 THEN 451 ELSE 457 454 SD=INT(OSD/3.45) 455 RETURN 457 SD=0:GOTO 455 500 ON NF+1 GOTO 541,541,516,521,516,521,516,521 516 OPEN "I",#2,NF$:INPUT #2,OBESTAND$:IN=0:RETURN 521 PRINT NF$:OPEN "O",#3,NF$:IN=0:RETURN 540 IN$="":IN=1:ON (NF+2)/2 GOTO 541,551,551,551 541 OTX$=CHR$(27)+"p Arbeit mit Tape am Parallelport au~erhalb Basic mit BCREAD.COM / BCWRIT.COM "+CHR$(27)+"q":GOSUB 951:RETURN 551 IN$=OBESTAND$:IF EOF(2) THEN 559 ELSE LINE INPUT #2,OBESTAND$ 552 IF OBESTAND$<>"" THEN OU$=MID$(OBESTAND$,1,1):IF ASC(OU$)=26 THEN OBESTAND$="":IN=1:RETURN 553 IF EOF(2) THEN 559 554 IN=0:RETURN 559 RETURN 560 IN=1:ON (NF+1)/2 GOTO 561,575,575,574 561 GOSUB 541:RETURN 575 PRINT #3,SR$:IN=0:RETURN 580 ON NF+1 GOTO 541,541,591,593,591,593,591,593 591 CLOSE #2:RETURN 593 PRINT #3,CHR$(26):PRINT #3,CHR$(26):CLOSE #3:RETURN 600 PRINT CHR$(27)"f"CHR$(27)"c"CHR$(0)CHR$(27)"b?";:GOSUB 101:RETURN 620 GOSUB 655:OPH%=INT(OHO*HG):OPV%=INT(OVE*VG):OPM%=CN XOR 1:CALL OSETPOINT(OPV%,OPH%,OPM%):CALL OPOINT2(OPV%,OPH%):RETURN 630 GOSUB 655:OPH%=INT(OHO*HG):OPV%=INT(OVE*VG):OPM%=CN XOR 1:CALL ODRAW(OPV%,OPH%,OPM%):CALL OPOINT2(OPV%,OPH%):RETURN 650 GOSUB 655:OVE=MIN(OVE,0.972):OPV%=INT(OVE*VG):FOR OPT%=0 TO LEN(SR$)-1:OPH%=INT(OHO*HG)+OPT%*16:OPH%=MIN(OPH%,652):OPC%=-(CN=0)*ASC(MID$(SR$,OPT%+1,1))-32*(CN=1):CALL OSETCHAR(OPV%,OPH%,OPC%):NEXT OPT%:RETURN 655 OHO=MAX(0,HO):OHO=MIN(OHO,0.998):OVE=MAX(0,VE):OVE=MIN(OVE,0.995):RETURN 950 GOSUB 100:INPUT;"welches BasiCode-Programm laden (ENTER f}r R}ckkehr zu Mallard Basic) : ",IN$:IF IN$<>"" THEN CHAIN MERGE IN$,10,ALL,DELETE 1000-:ELSE CLEAR:PRINT CHR$(27)"E"CHR$(27)"H":END 951 GOSUB 120:OLEN=0.5*(90-LEN(OTX$)):PRINT CHR$(27)"0"CHR$(27)"Y@ ";:PRINT STRING$(OLEN,32);OTX$;:GOSUB 110:WHILE INKEY$="":WEND 952 PRINT CHR$(27)"0"CHR$(27)"Y@ BasiCode-3 f}r Mallard Basic auf Amstrad PCW / Schneider JOYCE ";:GOSUB 110:RETURN 953 REM Grafik-Routinen aus "SCREENY" von J. Steingr{ber & U. Baumgarten, PCAI 2'88 954 REM Sound-Routine aus "JOYCE COMPOSER" von P.-R. Wolter, PCAI 10'89 955 REM GOSUB 220 nach M. Anton Joyce-Sonderheft 1'87 und Norbert Finke PCAI 6/7'91 956 REM dynamische Berechnung des XBIOS-Vektors nach einem Hinweis von Werner Cirsovius Korrektur Zufallszahlenerzeugung Paul Veltjens beide JOYCE-User-AG e.V. 957 GOSUB 100:PRINT CHR$(27)"Y"CHR$(57)CHR$(67);:MEMORY &HEFFF:OADR=&HF000:A$="7EEB5E235660694EFEF93802D6F832B1F07AFE02380E2804160018087BFEC93803D6C85F437BE6F85FED53B2F07932B4F078":GOSUB 982:OADR=OADR+50 958 A$="E60732B5F0473EFF2804CB3F10FC6F2F6722B6F06926002929297CC6B86722B8F0015CF0CD5AFCE900C90608C521B1F05E7E":GOSUB 982:OADR=OADR+50 959 A$="34E6074F1600EB297CC6B6675E2356EB290600B7ED42E5DDE12AB8F0ED5BB2F0DD19561E003AB5F047B72806CB3ACB1B10FA":GOSUB 982:OADR=OADR+50 960 A$="3A20F42AB6F0A4B23220F43A21F4A5B3CD22F421B8F034C110AEC90000000000000000007EEB5E235660694E47ED435BF1ED":GOSUB 982:OADR=OADR+50 961 A$="535DF101D4F0CD5AFCE900C9ED4B5BF1ED5B5DF178325CF17AFE02380E2804160018087BFED03803D6CF5F437BE6F85FED53":GOSUB 982:OADR=OADR+50 962 A$="5DF179E603325BF178E607325FF1473E802804CB3F10FC6F2F672260F1215CF15E7EE6074F1600EB297CC6B6675E2356EB29":GOSUB 982:OADR=OADR+50 963 A$="0600B7ED42E5DDE1ED5B5DF1DD193A5BF1DD46002A60F1B7200678A4DD7700C91F300678B5DD7700C978A528F618EB000000":GOSUB 982:OADR=OADR+50 964 A$="000000007EEB5E235660694E473A46F22A47F23246F2ED4342F2ED5344F22247F2900601200105300405052F3C4F783249F2":GOSUB 982:OADR=OADR+50 965 A$="AF47ED5211010020011B30091B1B7C2F677D2F6F23ED534BF2E5D1E5AFED427C324DF217E13006D5C5C5E1D1C1224EF2CB3C":GOSUB 982:OADR=OADR+50 966 A$="CB1D2250F2ED4352F2ED5354F201D8F1CD5AFCE900C9ED4B42F2ED5B44F2CDDCF03A4DF217380D2A44F2ED4B4BF2092244F2":GOSUB 982:OADR=OADR+50 967 A$="180BED4B42F23A49F2803243F22A50F2ED4B52F2AFED422250F23026ED4B54F2092250F23A4DF217300D2A44F2ED4B4BF209":GOSUB 982:OADR=OADR+50 968 A$="2244F2180BED4B42F23A49F2803243F22A4EF22B224EF2CB7C2897C900000000000000000000000000000000000000007E32":GOSUB 982:OADR=OADR+50 969 A$="46F2EB5E2356ED5347F2C9CD5AFCBF00226CF2C9000000000000000000000016001E00216EF2CD5AFC84F2C9CF64170190F2":GOSUB 982:OADR=OADR+50 970 A$="CD5AFCE900C91620DD216EF2FD2100B9DD7E00FDBE002038DD7E01FDBE012030DD7E02FDBE022028DD7E03FDBE032020DD7E":GOSUB 982:OADR=OADR+50 971 A$="04FDBE042018DD7E05FDBE052010DD7E06FDBE062008DD7E07FDBE072872143E7FBA2807010800FD0918B31620FD2100B9DD":GOSUB 982:OADR=OADR+50 972 A$="7E00EEFFFDBE002046DD7E01EEFFFDBE01203CDD7E02EEFFFDBE022032DD7E03EEFFFDBE032028DD7E04EEFFFDBE04201EDD":GOSUB 982:OADR=OADR+50 973 A$="7E05EEFFFDBE052014DD7E06EEFFFDBE06200ADD7E07EEFFFDBE07280F143E7FBA2807010800FD0918A316007A3276F2C9":GOSUB 982 974 OADR=&HF400:A$="0E00210000CD09F4C9F33E0BD3F84110FE3E0CD3F84110FE2B7CB5C20AF4FBC900003221F42AB6F0ED5B20F4DD7E10CB7C28":GOSUB 982:OADR=OADR+50 975 A$="0ECB7A2806CBFFCBF71804CBBFCBB7CB74280ECB722806CBEFCBE71804CBAFCBA7CB6C280ECB6A2806CBDFCBD71804CB9FCB":GOSUB 982:OADR=OADR+50 976 A$="97CB64280ECB622806CBCFCBC71804CB8FCB87DD7710DD7E18CB5C280ECB5A2806CBFFCBF71804CBBFCBB7CB54280ECB5228":GOSUB 982:OADR=OADR+50 977 A$="06CBEFCBE71804CBAFCBA7CB4C280ECB4A2806CBDFCBD71804CB9FCB97CB44280ECB422806CBCFCBC71804CB8FCB87DD7718":GOSUB 982:OADR=OADR+50 978 A$="DD7E00CB7D280ECB7B2806CBFFCBF71804CBBFCBB7CB75280ECB732806CBEFCBE71804CBAFCBA7CB6D280ECB6B2806CBDFCB":GOSUB 982:OADR=OADR+50 979 A$="D71804CB9FCB97CB65280ECB632806CBCFCBC71804CB8FCB87DD7700DD7E08CB5D280ECB5B2806CBFFCBF71804CBBFCBB7CB":GOSUB 982:OADR=OADR+50 980 A$="55280ECB532806CBEFCBE71804CBAFCBA7CB4D280ECB4B2806CBDFCBD71804CB9FCB97CB45280ECB432806CBCFCBC71804CB":GOSUB 982:OADR=OADR+50 981 A$="8FCB87DD7708C9":GOSUB 982:GOTO 995 982 FOR I=1 TO LEN(A$) STEP 2:POKE OADR+(I-1)/2,VAL("&H"+MID$(A$,I,2)):NEXT I:RETURN 983 SV=7:OSETCHAR=&HF000:OSETPOINT=&HF0BA:OPOINT2=&HF256:ODRAW=&HF162:OGETCUR=&HF263:OREADCHAR=&HF277:OFINDCHAR=&HF287 984 A$="9E9A9C20202020202020202020209A2020969A9C202020202020209E20202020202020202020969A9C":OPH%=16:OPV%=88:GOSUB 992 985 A$="9520952020969A9C20969A9C20209E202095202020969A9C20969A9D20969A9C202020202020202095":OPH%=16:OPV%=OPV%+8:GOSUB 992 986 A$="979A9B9C20969A9D20939A9C2020952020952020209520952095209520979A992020929A9820209A9D":OPH%=16:OPV%=OPV%+8:GOSUB 992 987 A$="9520209520952095202020952020952020952020209520952095209520952020202020202020202095":OPH%=16:OPV%=OPV%+8:GOSUB 992 988 A$="9B9A9A9920939A9B20939A9920209B2020939A9920939A9920939A9B20939A99202020202020939A99":OPH%=16:OPV%=OPV%+8:GOSUB 992 989 SR$="f}r Mallard Basic auf Amstrad PCW":OPH%=80:OPV%=OPV%+16:GOSUB 993:SR$="(P) 2004 Thomas Rademacher JOYCE-User-AG e.V.":OPH%=-16:OPV%=OPV%+8:GOSUB 993 990 SR$="welches BasiCode-Programm laden: ":OPH%=80:OPV%=OPV%+40:GOSUB 993:GOSUB 994:INPUT;"",IN$ 991 IF IN$<>"" THEN CHAIN MERGE IN$,10,ALL,DELETE 957-998 ELSE 950 992 SR$="":FOR I=1 TO LEN(A$)/2:SR$=SR$+CHR$(VAL("&H"+MID$(A$,I*2-1,2))):NEXT I 993 FOR OPT%=0 TO LEN(SR$)-1:OPH%=OPH%+16:OPC%=-(CN=0)*ASC(MID$(SR$,OPT%+1,1))-32*(CN=1):CALL OSETCHAR(OPV%,OPH%,OPC%):NEXT OPT%:RETURN 994 FOR j=0 TO 39:OPV%=88+j:OPH%=719:CALL opoint2(OPV%,OPH%):OPH%=0:OPM%=2:CALL odraw(OPV%,OPH%,OPM%):NEXT j:FOR j=0 TO 9:OPV%=183+j:OPH%=623:CALL opoint2(OPV%,OPH%):OPH%=80:OPM%=2:CALL odraw(OPV%,OPH%,OPM%):NEXT j:RETURN 995 A=256*PEEK(2)+PEEK(1)+87:IF A=&HFC5A THEN 998 996 AH=VAL("&H"+LEFT$(HEX$(A,4),2)):AL=VAL("&H"+RIGHT$(HEX$(A,4),2)):POKE &HF057,AL:POKE &HF058,AH:POKE &HF0CF,AL:POKE &HF0D0,AH 997 POKE &HF1D3,AL:POKE &HF1D4,AH:POKE &HF264,AL:POKE &HF265,AH:POKE &HF27F,AL:POKE &HF280,AH:POKE &HF28B,AL:POKE &HF28C,AH 998 RETURN