viewtopic.php?f=7&t=576
als auch
viewtopic.php?f=7&t=576&p=5316&hilit=BasiCode#p5316
fort.
Als Nutzer mit sehr wenig Erfahrung auf 8-bit-Ataris nahm ich 2022 am ABBUC-Softwarewettbewerb teil. Mein Programm schaffte es nur knapp, den letzten Platz zu verfehlen.
https://abbuc.de/2022/11/ergebnis-abbuc ... werb-2022/
Nun habe ich eine neue Version in Arbeit und hoffe auf rege Mitarbeit, sicher noch vorhandene Schwachstellen auszumerzen. Hierbei war mir bisher Andars eine große Hilfe, dem ich dafür großen Dank aussprechen möchte.
Von cas und Holger gab es schon Anregungen, die ich zum Teil bereits umgesetzt habe. So wies cas auf das Portable BitMap-Format hin, das ich nun einbeziehe. Holger vermisste einen kurzen Weg zur Directory-Anzeige - check! Bei einem Fehler wird jetzt, vorerst ohne weitere Auswertung, zum Menü zurückgekehrt.
In der ZIP-Datei sind zwei ATR-Dateien, die erste (bootfähig) mit Turbo Basic, dem Programm und Beispieldateien, die zweite mit weiteren Beispielen, außerdem eine PDF mit einer ausführlichen Beschreibung. Das Programm in lesbarer Form zum Vorinformieren ist hier (zugunsten der besseren Lesbarkeit hier noch recht ausschweifend):
Code: Alles auswählen
0 REM Atari BasiCode V. 1,1 08-18-89 by Andreas Graf
1 REM Anpassung Turbo-BASIC Thomas Rademacher Mai 2022
2 CLR :DIM OX$(3):GOSUB 100:HO=39:VE=23:HG=256:VG=192:DIM SR$(41):DIM O$(41):DIM IN$(41):DIM NF$(41)
10 POKE 82,0:GOTO 1000
18 ------------------------------
19 REM *** EINSCHALTEN TEXTMODUS ***
20 CLR :DIM OX$(3):GOSUB 100:HO=39:VE=23:HG=256:VG=192:DIM SR$(41):DIM O$(41):DIM IN$(41):DIM NF$(41):GOTO 1010
100 PRINT "}";:POKE 752,1:RETURN
108 ------------------------------
109 REM *** TEXT-CURSOR POSITIONIEREN ***
110 OE=INT(VE):OO=INT(HO):IF OE<0 THEN OE=0
111 IF OO<0 THEN OO=0
112 IF OE>23 THEN OE=23
113 IF OO>39 THEN OO=39
115 POKE 84,OE:POKE 85,OO:POKE 86,0:RETURN
118 ------------------------------
119 REM *** POSITION DES TEXT-CURSORS ERMITTELN ***
120 HO=PEEK(85):VE=PEEK(84):RETURN
148 ------------------------------
149 REM *** HERVORGEHOBENE TEXT-ANZEIGE ***
150 PRINT " ";CHR$(160);CHR$(160);:IF LEN(SR$)=0 THEN 170
160 FOR O=1 TO LEN(SR$):PRINT CHR$(ASC(SR$(O,O))+128);:NEXT O
170 PRINT CHR$(160);CHR$(160);" ";:RETURN
180 ------------------------------
195 IF IN=28 THEN IN=31:RETURN
196 IF IN>95 THEN IN=IN-32:GOTO 196
197 RETURN
198 ------------------------------
199 REM *** INKEY$-FUNKTION ***
200 IN=0:IN$="":IF PEEK(764)=255 THEN RETURN
201 IN=PEEK(64337+PEEK(764)):POKE 764,255:IN$=CHR$(IN)
202 IF IN=155 THEN IN=13:RETURN
203 IF IN=126 THEN IN=127:RETURN
204 IF IN=30 THEN IN=28:RETURN
205 IF IN=31 THEN IN=29:RETURN
206 IF IN=29 THEN IN=30:RETURN
207 GOTO 195
208 ------------------------------
209 REM *** WARTEN AUF TASTENDRUCK ***
210 GOSUB 216:GOSUB 200:IF IN=0 THEN 210
211 IF OG THEN PRINT " ";CHR$(30);
212 RETURN
216 OG=(PEEK(88)+256*PEEK(89))>48000:IF OG THEN PRINT CHR$(160);CHR$(30);
217 RETURN
218 ------------------------------
219 REM *** ZEICHEN VON BILDSCHIRM LESEN ***
220 IN=0:IF HO>39 OR HO<0 OR VE>23 OR VE<0 THEN RETURN
230 IN=PEEK(PEEK(88)+256*PEEK(89)+VE*40+HO) AND 127
231 IF IN<64 THEN IN=IN+32:RETURN
232 IF IN<96 THEN IN=32:RETURN
240 GOTO 196
248 ------------------------------
249 REM *** BEEP ***
250 SOUND 0,80,10,40:FOR O=0 TO 199:NEXT O:SOUND :RETURN
258 ------------------------------
259 REM *** ZUFALLSVARIABLE ***
260 O=PEEK(20)*PEEK(53770)/17.359:RV=O-INT(O):RETURN
268 ------------------------------
269 REM *** FREIER SPEICHERPLATZ? ***
270 FR=FRE(0):RETURN
278 ------------------------------
279 REM *** BREAK SPERREN/FREIGEBEN ***
280 O=192:IF FRTHENO=64
290 POKE 16,O:POKE 53774,O:RETURN
298 ------------------------------
299 REM *** UMWANDLUNG IN STRINGVARIABLE ***
300 SR$=STR$(SR)
301 IF ASC(SR$)=32 THEN SR$=SR$(2,LEN(SR$)):GOTO 301
302 IF ASC(SR$)<>45 OR LEN(SR$)<3 THEN 305
303 IF SR$(2,2)<>"." THEN 305
304 O$="-0":SR$=SR$(2,LEN(SR$)):O$(LEN(O$)+1)=SR$:SR$=O$
305 IF ASC(SR$)<>46 THEN 307
306 O$="-0":SR$=SR$(2,LEN(SR$)):O$(LEN(O$)+1)=SR$:SR$=O$
307 RETURN
308 ------------------------------
309 REM *** PRINT USING ***
310 O2=0:O1=SR:SR=INT(ABS(SR)*10^CN+0.5)
312 IF SR>=1000000000 THEN SR=INT(SR/10+0.5):O2=O2+1:GOTO 312
315 GOSUB 300:IF O2=0 THEN 319
317 FOR O=1 TO O2:SR$(LEN(SR$)+1)="0":NEXT O
319 GOSUB 320:SR=O1:RETURN
320 O=LEN(SR$):IF O<=CN THEN FOR O2=1 TO CN-O+1:O$="0":O$(LEN(O$)+1)=SR$:SR$=O$:NEXT O2
321 O=LEN(SR$):IF CN>0 THEN O$=SR$:SR$=O$(1,O-CN):SR$(LEN(SR$)+1)=".":SR$(LEN(SR$)+1)=O$(LEN(O$)-CN+1,LEN(O$)):O=O+1
322 IF O1*SR<0 THEN O=O+1:O$="-":O$(LEN(O$)+1)=SR$:SR$=O$
323 IF O>CT THEN SR$="":FOR O=1 TO CT:SR$(LEN(SR$)+1)="*":NEXT O:RETURN
324 IF O=CT THEN RETURN
326 O=CT-O:O$="":FOR O2=1 TO O:O$(LEN(O$)+1)=" ":NEXT O2:O$(LEN(O$)+1)=SR$:SR$=O$
328 ------------------------------
329 REM *** ZEICHENKETTE NUR IN GROSSBUCHSTABEN ***
330 IF LEN(SR$)=0 THEN RETURN
340 O$="":FOR O=1 TO LEN(SR$):O1=ASC(SR$(O,O))&127
341 IF O1>95 THEN O1=O1-32
342 O$(LEN(O$)+1)=CHR$(O1):NEXT O
344 SR$=O$:RETURN
348 ------------------------------
349 REM *** ZEILE AN DRUCKER ***
350 LPRINT SR$;:RETURN
358 ------------------------------
359 REM *** ZEILENVORSCHUB DRUCKER ***
360 LPRINT :RETURN
398 ------------------------------
399 REM *** TON-ERZEUGUNG ***
400 SOUND 0,121*EXP(((60-SP)/12)*LOG(2)),10,SV
401 FOR O=0 TO 200*SD:NEXT O:SOUND :RETURN
448 ------------------------------
449 REM *** BEGRENZTE ZEIT WARTEN AUF TASTENDRUCK ***
450 O=5*SD:POKE 20,0:POKE 19,0:GOSUB 217
460 IF PEEK(764)=255 THEN 480
470 SD=(O-256*PEEK(19)-PEEK(20))/5:GOTO 210
480 IF PEEK(19)*256+PEEK(20)<O THEN 460
490 SD=0:IN$="":IN=0:GOTO 211
498 ------------------------------
499 REM *** DATEI OEFFNEN ***
500 REM O=4:IF NF&1 THEN O=8
505 IF NF<0 OR NF>7 THEN IN=-1:RETURN
510 O$="B":IF NF<2 THEN 530
515 O$="C":IF NF<4 THEN 530
518 O$="D1:":IF NF<6 THEN 530
520 O$="D2:"
530 O$(LEN(O$)+1)=NF$:NF$=O$
531 OPEN #2,NF+3*(NF=5)-2*(NF=6)+(NF=7),0,NF$:RETURN
532 IF O=8 THEN 590
535 GOSUB 545:IF IN=1 THEN IN=0
537 RETURN
538 ------------------------------
539 REM *** AUS DATEI LESEN ***
540 O=INT(NF/2) AND 3:REM IN$=OX$(O)
545 O=INT(NF/2)&3:IF NF&1 THEN 555
550 IN$=""
551 GET #2,O
552 IF O=10 THEN 551
553 IF O<>13 AND O<>155 THEN IN$(LEN(IN$)+1)=CHR$(O):GOTO 551
555 IN=-1:RETURN
558 ------------------------------
559 REM *** IN DATEI SCHREIBEN ***
560 IF (NF&1)=0 THEN IN=-1:RETURN
570 FOR OE=1 TO LEN(SR$):O=ASC(SR$(OE,OE)):PUT #2,O:NEXT OE:PUT #2,13:GOTO 590
578 ------------------------------
579 REM *** DATEI SCHLIESSEN ***
580 CLOSE #2
590 IF IN THEN IN=-1
595 RETURN
598 ------------------------------
599 REM *** EINSCHALTEN GRAFIK-MODUS ***
600 GRAPHICS 24:SETCOLOR 1,3,15:SETCOLOR 2,1,0:RETURN
618 ------------------------------
619 REM *** PLOT ***
620 GOSUB 621:PLOT O1,O2:RETURN
621 O1=HO:IF O1<0 THEN O1=0
622 O2=VE:IF O2<0 THEN O2=0
623 O1=INT(O1*256)+32:IF O1>287 THEN O1=287
625 O2=INT(O2*192):IF O2>191 THEN O2=191
626 O=1:IF CN THEN O=0
627 RETURN
628 ------------------------------
629 REM *** DRAWTO ***
630 GOSUB 621:DRAWTO O1,O2:RETURN
648 ------------------------------
649 REM *** TEXT IN GRAFIK SCHREIBEN ***
650 GOSUB 621:IF O2>184 THEN O2=184
660 O1=INT(O1/8):IF O1>35 THEN O1=35
670 O=255:IF CN THEN O=0
680 REM T.PEEK(88)+256*PEEK(89)+40*O2+O1¬O,SR$:RETURN
949 REM *** BEENDEN BASICODE-BETRIEB ***
950 GOSUB 100:END
997 ------------------------------
998 ------------------------------
999 REM *** NACHFOLGEND BASICODE-PROGRAMM ***
1000 A=200:DIM A$(1):GOTO 20:REM *** GRAFIK AUS TEXTDATEI ***
1010 DIM A$(1):DIM NA$(8):DIM N2$(40):REM GOSUB 24000
1020 GOSUB 24400
1028 ------------------------------
1029 REM *** HAUPTSCHLEIFE IM TEXT-MODUS ***
1030 HO=17:VE=20:GOSUB 110
1040 INPUT A$:IF A$="E" OR A$="e" THEN 19800
1050 IF A$="M" OR A$="m" THEN 1020
1060 IF A$="A" OR A$="a" THEN GOSUB 24700:GOTO 1020
1070 IF A$="H" OR A$="h" THEN GOSUB 20000
1080 IF ASC(A$)>47 AND ASC(A$)<57 THEN V=ASC(A$)-48:HO=33:VE=4:GOSUB 110:PRINT ": ";V
1090 IF A$="G" OR A$="g" THEN GOSUB 23000
1100 IF A$="N" OR A$="n" THEN GOSUB 20300
1110 IF A$="X" OR A$="X" THEN GOSUB 20400
1120 IF A$="Z" OR A$="z" THEN GOSUB 20600
1130 IF A$="C" OR A$="c" THEN GOSUB 20800
1140 IF A$="B" OR A$="b" THEN GOSUB 21200
1150 IF A$="P" OR A$="p" THEN GOSUB 22000
1160 IF A$<>"D" AND A$<>"d" THEN 1030
1168 ------------------------------
1169 REM DIRECTORY ANZEIGEN ***
1170 GOSUB 100:INPUT " Directory von D1 / D2 ... ";IN$
1180 IN$(LEN(IN$)+1)=":*.*":DIR IN$:POKE 764,255
1190 I=PEEK(764):IF I=255 THEN 1190
1200 GOTO 1020
19799 ------------------------------
19800 REM *** Ende des Programms ***
19808 ------------------------------
19809 REM *** ANZEIGE VON WEBLINKS ***
19810 GOSUB 100:SR$="GRAFIK AUS TEXTDATEI":HO=9:VE=0:GOSUB 110:GOSUB 150:PRINT :PRINT
19820 PRINT " úõí ×åéôåòìåóåîº ":PRINT :PRINT
19830 PRINT "joyce.de/basicode/atari/atari.htm"
19835 PRINT " ... /atariHRG.htm":PRINT
19840 PRINT "joyce.de/basicode/download/Man_BC3C.pdf":PRINT
19850 PRINT "joyce.de/basicode/info/kurs.htm":PRINT
19860 PRINT "joyce.de/software/grafik/import.htm"
19870 PRINT " ... /import2.htm":PRINT
19880 PRINT "robhagemans.github.io/basicode/":PRINT
19890 PRINT "robhagemans.github.io/basicode/basicode/Verzamelcassette_9/B04_Videodat.bc3":PRINT
19900 PRINT "robhagemans.github.io/basicode/basicode/Verzamelcassette_9/B05_Alf-2.bc3"
19910 HO=29:VE=24:GOSUB 110:PRINT " > Ôáóôå <";
19920 IF PEEK(764)=255 THEN 19920
19930 PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :LIST 30000,30100:POKE 764,255:HO=29:VE=24:GOSUB 110:PRINT " > Ôáóôå <";
19940 IF PEEK(764)=255 THEN 19940
19990 TRAP 32768:GOTO 950
19999 ------------------------------
20000 REM *** HRT-DATEI LADEN ***
20010 IN$=""
20020 IN$(LEN(IN$)+1)=NA$
20030 IN$(LEN(IN$)+1)=".HRT"
20040 NF=4:NF$=IN$:GOSUB 500
20050 A$=""
20060 GOSUB 540:IF IN$<>"SCREEN" THEN 20180
20070 GOSUB 540:GOSUB 540:IF IN$<>"H320" THEN 20180
20080 GOSUB 540:IF IN$="V192" THEN V=0
20090 GOSUB 540
20100 GOSUB 540:GOSUB 600
20110 K=DPEEK(88)
20120 IF V<>0 THEN FOR I=1 TO V:GOSUB 540:GOSUB 540:NEXT I
20130 FOR I=0 TO 383
20140 GOSUB 540:FOR J=0 TO 19
20150 L=16*(ASC(IN$(1+2*J,1+2*J))-64)+ASC(IN$(2+2*J,2+2*J))-64:POKE K+J,L
20160 NEXT J
20170 K=K+20:NEXT I
20180 GOSUB 580
20188 ------------------------------
20189 REM *** HAUPTSCHLEIFE IM GRAFIK-MODUS ***
20190 I=PEEK(764):IF I=255 THEN 20190
20200 IF I=13 OR I=77 THEN 21400:REM FOR H=DPEEK(88) TO DPEEK(88)+7679:POKE H,255-PEEK(H):NEXT H
20210 IF I=61 OR I=125 THEN 23200
20220 IF I=57 OR I=121 THEN 23400
20230 IF I=10 OR I=74 THEN 22200
20240 IF I=37 OR I=101 THEN 20290
20250 IF I=63 OR I=127 THEN 20290
20260 IF I=42 OR I=106 THEN 20290
20270 POKE 764,255:GOTO 20190
20290 RETURN
20299 ------------------------------
20300 REM *** EINGABE DES NAMENS ***
20310 HO=21:VE=20:GOSUB 110:INPUT "Name: ",NA$,
20320 HO=3:VE=19:GOSUB 110:PRINT "Beschreibung (bis 40 Buchstaben)";
20330 HO=1:VE=21:GOSUB 110:INPUT " ",N2$:RETURN
20399 ------------------------------
20400 REM *** ZX81-BILD LADEN ***
20410 GOSUB 21000:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".B"
20420 GOSUB 600
20430 OPEN #1,4,0,SR$
20440 K=DPEEK(88)
20450 FOR J=0 TO 191
20460 FOR I=0 TO 3
20470 POKE K+I+J*40,0
20480 NEXT I
20490 FOR I=4 TO 35
20500 GET #1,O:POKE K+I+J*40,255-O
20510 NEXT I
20520 FOR I=36 TO 39
20530 POKE K+I+J*40,0
20540 NEXT I
20550 NEXT J
20560 CLOSE #1
20590 POKE 764,255:GOTO 20190
20599 ------------------------------
20600 REM *** ZX SPECTRUM-BILD LADEN ***
20610 GOSUB 21000:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".SCR"
20620 GOSUB 600
20630 OPEN #1,4,0,SR$
20640 K=DPEEK(88)
20650 FOR M=0 TO 5120 STEP 2560
20660 FOR L=0 TO 280 STEP 40
20670 FOR J=0 TO 2240 STEP 320
20680 FOR I=4 TO 35
20690 GET #1,O:POKE K+I+J+L+M,255-O
20700 NEXT I
20710 NEXT J
20720 NEXT L
20730 NEXT M
20740 CLOSE #1
20790 POKE 764,255:GOTO 20190
20799 ------------------------------
20800 REM *** COMMODORE-BILD LADEN ***
20810 GOSUB 21000:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".PRG"
20820 GOSUB 600
20830 OPEN #1,4,0,SR$
20840 K=DPEEK(88)
20850 GET #1,O:GET #1,O
20860 IF V<>0 THEN FOR I=0 TO 319:GET #1,O:NEXT I
20870 FOR L=0 TO 7360 STEP 320
20880 FOR J=0 TO 39
20890 FOR I=0 TO 280 STEP 40
20900 GET #1,O:POKE K+I+J+L,255-O
20910 NEXT I
20920 NEXT J
20930 NEXT L
20940 CLOSE #1
20990 POKE 764,255:GOTO 20190
20999 ------------------------------
21000 REM *** LESELAUFWERK WAEHLEN ***
21010 SR$="D1:":RETURN
21099 ------------------------------
21100 REM *** SCHREIBLAUFWERK WAEHLEN ***
21110 SR$="D2:":RETURN
21199 ------------------------------
21200 REM *** MS-PAINT-BILD LADEN ***
21210 GOSUB 21000:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".BMP"
21220 GOSUB 600
21230 OPEN #1,4,0,SR$
21240 K=DPEEK(88)
21250 FOR I=0 TO 61:GET #1,O:NEXT I
21260 FOR J=191 TO 0 STEP -1
21270 FOR I=0 TO 39
21280 GET #1,O:POKE K+I+J*40,O
21290 NEXT I
21300 NEXT J
21310 CLOSE #1
21390 POKE 764,255:GOTO 20190
21399 ------------------------------
21400 REM *** FARBEN TAUSCHEN ***
21410 K=DPEEK(88)
21420 FOR Q=0 TO 5760 STEP 1920
21430 FOR P=0 TO 1440 STEP 480
21440 FOR N=0 TO 80 STEP 40
21450 FOR M=0 TO 360 STEP 120
21460 FOR L=0 TO 31
21470 J=K+L+M+N+P+Q:POKE J,255-PEEK(J)
21480 NEXT L
21490 NEXT M
21500 NEXT N
21510 NEXT P
21520 NEXT Q
21530 FOR Q=0 TO 5760 STEP 1920
21540 FOR P=0 TO 80 STEP 40
21550 FOR N=0 TO 360 STEP 120
21560 FOR M=0 TO 1440 STEP 480
21570 FOR L=32 TO 39
21580 J=K+L+M+N+P+Q:POKE J,255-PEEK(J)
21590 NEXT L
21600 NEXT M
21610 NEXT N
21620 NEXT P
21630 NEXT Q
21790 POKE 764,255:GOTO 20190
21999 ------------------------------
22000 REM *** PBM-DATEI LADEN ***
22010 SR$="D1:":SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".PBM"
22011 OPEN #1,4,0,SR$
22012 GET #1,L:IF CHR$(L)<>"P" THEN 22015
22013 GET #1,L:IF CHR$(L)="4" THEN 22015
22014 PRINT "Dateikennung falsch":CLOSE #1:GOTO 22190
22015 GET #1,L:GET #1,L
22016 IF CHR$(L)<>"#" THEN 22021
22017 GET #1,L
22018 IF L=10 THEN 22020
22019 PRINT CHR$(L);:GOTO 22017
22020 GET #1,L
22021 IF CHR$(L)<>"3" THEN 22026
22022 GET #1,L
22023 IF CHR$(L)<>"2" THEN 22026
22024 GET #1,L
22025 IF CHR$(L)="0" THEN 22027
22026 PRINT "falsche Breite":CLOSE #1:GOTO 22190
22027 GET #1,L:GET #1,L
22028 IF CHR$(L)<>"1" THEN 22033
22029 GET #1,L
22030 IF CHR$(L)<>"9" THEN 22033
22031 GET #1,L
22032 IF CHR$(L)="2" THEN 22034
22033 PRINT "falsche Hehe":CLOSE #1:GOTO 22190
22034 GET #1,L
22039 GOSUB 600
22040 BGET #1,DPEEK(88),7680
22050 CLOSE #1:GOSUB 21400
22190 POKE 764,255:GOTO 20190
22199 ------------------------------
22200 REM *** SPEICHERN ALS PBM-DATEI ***
22210 GOSUB 21100:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".PBM"
22220 OPEN #2,8,0,SR$
22221 PUT #2,80:PUT #2,52:PUT #2,10:PUT #2,35
22222 FOR L=1 TO LEN(N2$)
22223 PUT #2,ASC(N2$(L,L))
22224 NEXT L:PUT #2,10
22225 PUT #2,51:PUT #2,50:PUT #2,48:PUT #2,10
22226 PUT #2,49:PUT #2,57:PUT #2,50:PUT #2,10
22227 L=DPEEK(88)
22228 FOR M=0 TO 7679
22229 PUT #2,255-PEEK(L+M)
22230 NEXT M
22240 CLOSE #2
22390 POKE 764,255:GOTO 20190
22999 ------------------------------
23000 REM *** GR8-DATEI LADEN ***
23010 GOSUB 21000:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".GR8"
23020 GOSUB 600
23030 OPEN #1,4,0,SR$
23040 BGET #1,DPEEK(88),7680
23050 CLOSE #1
23190 POKE 764,255:GOTO 20190
23199 ------------------------------
23200 REM *** SPEICHERN ALS GR8-DATEI ***
23210 GOSUB 21100:SR$(LEN(SR$)+1)=NA$:SR$(LEN(SR$)+1)=".GR8"
23220 OPEN #2,8,0,SR$
23230 BPUT #2,DPEEK(88),7680
23240 CLOSE #2
23390 POKE 764,255:GOTO 20190
23399 ------------------------------
23400 REM *** HRT-DATEI ERZEUGEN ***
23410 NF$=NA$:NF$(LEN(NF$)+1)=".HRT":NF=7:GOSUB 500
23420 SR$="SCREEN":GOSUB 560
23430 SR$=N2$:GOSUB 560
23440 SR$="H320":GOSUB 560
23450 SR$="V192":GOSUB 560
23460 SR$=" ":GOSUB 560
23470 SR$=" ":GOSUB 560
23480 L=DPEEK(88)
23490 FOR K=0 TO 191
23500 FOR J=0 TO 1
23510 SR$=""
23520 FOR I=0 TO 19
23530 M=PEEK(L+K*40+J*20+I):P=INT(M/16):Q=M-16*P+64:P=P+64
23540 SR$(LEN(SR$)+1)=CHR$(P):SR$(LEN(SR$)+1)=CHR$(Q)
23550 NEXT I
23560 GOSUB 560
23570 NEXT J
23580 NEXT K
23590 GOSUB 580:POKE 764,255:GOTO 20190
23999 ------------------------------
24000 REM *** INTRO ***
24010 GOSUB 100:HO=11:VE=1:SR$=" ":GOSUB 110:GOSUB 150
24020 HO=11:VE=2:SR$="HRG - Transfer":GOSUB 110:GOSUB 150
24030 HO=11:VE=3:SR$=" ":GOSUB 110:GOSUB 150
24040 HO=3:VE=12:GOSUB 110:PRINT " "
24050 HO=3:VE=13:GOSUB 110:PRINT " "
24060 HO=3:VE=14:GOSUB 110:PRINT " "
24070 HO=3:VE=15:GOSUB 110:PRINT " "
24080 HO=3:VE=16:GOSUB 110:PRINT " "
24090 HO=3:VE=17:GOSUB 110:PRINT " "
24100 HO=3:VE=18:GOSUB 110:PRINT " "
24110 HO=3:VE=20:GOSUB 110:PRINT " eingereicht für den"
24120 HO=3:VE=22:GOSUB 110:PRINT " Software Contest 2022"
24130 HO=1:VE=6:GOSUB 110:PRINT "Grafikaustausch mit fremden Computern"
24140 HO=1:VE=8:GOSUB 110:PRINT "Thomas Rademacher JOYCE-User-AG e.V.";
24150 HO=6:VE=10:GOSUB 110:PRINT " Šâåòáòâåéôåô Æåâòõáò ²°²³ "
24160 HO=19:VE=8:GOSUB 110:PRINT " ";:POKE 752,1
24170 SD=50:GOSUB 450
24190 GOSUB 100:RETURN
24399 ------------------------------
24400 REM *** Menue ***
24410 GOSUB 100:SR$="GRAFIK AUS TEXTDATEI":HO=7:VE=0:GOSUB 110:GOSUB 150:PRINT :PRINT
24420 PRINT " I. Î ame (bis 8 Buchstaben) Ä IR":PRINT
24430 PRINT " °®®®¸ Pixelzeilen Versatz":PRINT
24440 PRINT " II. È RT-Datei laden":PRINT :TRAP 1020
24450 PRINT " Ã 64-Bild laden Z Ø 81":PRINT
24460 PRINT " Â MP-Datei laden Ú X Spectrum":PRINT
24470 PRINT " Ç R8- / Ð BM-Datei laden"
24480 PRINT " --------------------------------------"
24510 PRINT " III. É nvertieren":PRINT
24520 PRINT " È RT-Datei erzeugen":PRINT
24530 PRINT " Speichern als Ç R8 / Ð BM":PRINT :PRINT
24540 PRINT :PRINT " Í enue Á bout... Å nde ";
24550 RETURN
24560 IF PEEK(764)=255 THEN 24560
24699 ------------------------------
24700 REM *** About... ***
24710 GOSUB 100:SR$="Was zum Geier ist":HO=12:VE=15:GOSUB 110:PRINT SR$:TEXT 9,17,"HRT":HO=7:VE=24
24720 GOSUB 110:PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :PRINT :TEXT 17,16,"?"
24730 PRINT :PRINT :PRINT :PRINT :SD=20:GOSUB 450:POKE 756,204
24740 POKE 764,255:PRINT :SR$="GRAFIK AUS TEXTDATEI":HO=7:VE=24:GOSUB 110:GOSUB 150:PRINT :PRINT
24750 PRINT "Èigh-Òesolution-Ôransfer-Dateien lehnen"
24760 PRINT "sich an das Öéäåïäáô-Verfahren des WDR"
24770 PRINT "aus den 1980er Jahren an, das íïîïãèòïíå";
24780 PRINT "Grafiken als ASCII-Dateien codiert, weil";
24790 PRINT "diese sich unproblematischer auf unter-"
24800 PRINT "schiedliche Computer übertragen lassen"
24810 PRINT "als Binärdateien. Dieses Programm kann"
24820 PRINT "aus so einer Datei ein Bild erzeugen und";
24830 PRINT "als ÇÒ¸-Datei abspeichern - auch der um-";
24840 PRINT "gekehrte Weg ist möglich. Auch Grafiken"
24850 PRINT "des Sinclair Úظ± und ÚØ Óðåãôòõí, ÂÍÐ-"
24860 PRINT "Dateien aus MS Paint sowie PRG-Dateien"
24870 PRINT "vom Ãïííïäïòå ¶´ können geladen werden."
24875 PRINT "Weiterhin können ";CHR$(34);"Ðortable ÂitÍap";CHR$(34);"-"
24880 PRINT "Dateien gelesen und geschrieben werden."
24885 PRINT " Äéå Âåäéåîõîç åòæïìçô íéô äåî èåòöïò ";
24890 PRINT " çåèïâåîåî Âõãèóôáâåî äåó ÍåîŠó® ";
24900 PRINT "Die Programmzeilen von 0 bis 999 stellen";
24910 PRINT "den noch in Entwicklung befindlichen"
24920 PRINT "Âáóãïäåò f
r Turbo-BASIC dar, der wie"
24930 PRINT "auch das Programm gern von jedermann"
24940 PRINT "weiterentwickelt werden darf.";
24950 HO=30:VE=24:GOSUB 110:PRINT "> Ôáóôå <";
24960 IF PEEK(764)=255 THEN 24960
24970 RETURN
29998 ------------------------------
29999 REM *** INFO ANZEIGEN BEI BEENDEN ***
30000 REM Mit dem Programm knnen hochauflösende
30010 REM monochrome Grafiken angezeigt werden, die
30020 REM von Computern anderen Typs stammen.
30030 REM Ausserdem können solche Grafiken als
30040 REM Textdateien codiert werden sowie aus solchen
30050 REM wiederhergestellt werden.
30060 REM Das Laden von Text- und Bild- Dateien
30070 REM erfolgt von Laufwerk D1:
30080 REM ¨ ‹îäåòâáò éî äåî Úåéìåî µ±¸ õîä ²±°±° ©,
30090 REM das Speichern auf D2:
30100 REM ¨ ‹îäåòâáò éî äåî Úåéìåî µ²° õîä ²±±±° ©.
31998 ------------------------------
31999 REM *** AUTOREN-INFO ***
32000 REM *********************************************
32010 REM * *
32020 REM * HRG - Transfer *
32030 REM * *
32040 REM * Thomas Rademacher JOYCE-User-AG e.V. *
32050 REM * *
32060 REM * Andreas Tartz ABBUC e.V. *
32070 REM * *
32080 REM * Februar 2023 *
32090 REM * *
32100 REM *********************************************