C 128
Grafik-Erweiterung

Hi-Spiegel – eine tolle Erweiterung zu Hi-Eddi

Dieses Programm ermöglicht erstmals die problemlose Spiegelung ganzer Grafikseiten und eignet sich ganz hervorragend zur Gestaltung eigener Vordrucke wie Briefköpfe oder Glückwunschkarten.

Zierrahmen: Banner mit dem Schriftzug »64'er« oben und gespiegelt unten, in den vier Ecken je ein Motorradfahrer

Hi-Eddi aus der 64'er Ausgabe 1/85 ist zwar eines der besten Malprogramme, aber eine Spiegelung von Grafikseiten war bisher nicht möglich. Mit diesem kleinen Zusatzprogramm wird das anders.

Das Maschinenprogramm (Listing 1) belegt den Bereich von C000 bis C256 und liegt damit im Grafikspeicher 5 von »Hi-Eddi«. Es ist aus diesem Grund nicht ständig im Speicher, sondern wird bei Bedarf ähnlich wie »Hi-Print« von Diskette nachgeladen. Dies ist kein Nachteil, da man es ja nicht ständig benötigt und das Laden nur 5 Sekunden dauert. Außerdem wird »Hi-Exe« nicht überschrieben und braucht daher nach der Spiegelung nicht nachgeladen zu werden. Allerdings werden die oberen Zeilen eines im Grafikspeicher 5 stehenden Bildes durch das Maschinenprogramm überschrieben. Daher sollte dort während der Spiegelung kein Bild gespeichert sein.

Die Spiegelroutine spiegelt stets das Bild im Grafikspeicher 1. Das zu spiegelnde Bild muß also beim Aufruf der Routine in diesem Bildspeicher stehen.

Der Aufruf ist ganz einfach: Immer wenn man die Tastenkombination <Commodore L> zum Laden von Bildern drückt, fragt das Steuerprogramm:

Spiegeln (J/N)

Gibt man <N> ein, folgt das gewohnte Lademenü. Gibt man <J> ein, erscheint die Meldung:

1=RUNTER 2=HOCH 3=RECHTS 4=LINKS

Nach Eingabe der entsprechenden Ziffer wird »Hi-Spiegel« geladen und die Spiegelung durchgeführt. Bei anderen Eingaben wird zwar Hi-Spiegel ebenfalls geladen, aber keine Spiegelung ausgeführt. Nach der Spiegelung wird sofort wieder das aktuelle Bild gezeigt.

Die Spiegelung wird mit dem Befehl <OR> ausgeführt, das heißt, der Inhalt der Bildhälfte, in die gespiegelt wird, wird dabei nicht gelöscht. Man kann dadurch sehr interessante Effekte erzielen. Natürlich kann man die Bildhälfte, in die gespiegelt werden soll, auch vorher mit Hi-Eddi löschen. Man kann auch ein Bild komplett spiegeln. Dazu sind allerdings mehrere Arbeitsgänge nötig:

— Bild kopieren (Hi-Eddi-Befehl) <ON>

— In einem Bild die linke, im anderen die rechte Hälfte löschen

— Das erste Bild nach Bildspeicher 1 übertragen und nach links spiegeln.

— Das zweite Bild ebenfalls nach Bildspeicher 1 übertragen und es dort nach rechts spiegeln.

— In jedem gespiegelten Bild die beiden »ursprünglichen« Hälften löschen und die beiden Bilder mit <ON> zusammenfügen.

Das Steuerprogramm Hi-Eddi (Listing 2) mußte natürlich ebenfalls um die entsprechenden Funktionen erweitert werden. Da der zur Verfügung stehende Speicherplatz durch das Original-Steuerprogramm schon fast belegt ist, waren einige Maßnahmen zur Verminderung des Platzbedarfs erforderlich. Sie bestehen im wesentlichen aus der Kürzung der Bildschirmmeldungen. So meldet sich zum Beispiel Hi-Eddi nun statt mit »BETRIEBSART« mit der Frage »MODUS«, das spart 6 Byte.

(Jürgen Mohr/ah)
PROGRAMM : HI-SPIEGEL     C000 C256
-----------------------------------
C000 : AD 2F C0 C9 01 D0 04 20   95
C008 : 30 C0 60 C9 02 D0 04 20   E1
C010 : 58 C0 60 C9 03 D0 04 20   21
C018 : 50 C1 60 C9 04 D0 03 20   AD
C020 : 70 C1 60 00 00 00 00 00   89
C028 : 00 00 00 00 00 00 00 00   29
C030 : A9 00 85 8B A9 20 85 8C   77
C038 : A9 07 85 8D A9 3E 85 8E   38
C040 : 20 80 C0 A9 00 85 8B A9   B3
C048 : 2F 85 8C A9 07 85 8D A9   B8
C050 : 2F 85 8E 20 0C C1 60 EA   10
C058 : A9 40 85 8B A9 30 85 8C   3F
C060 : A9 C7 85 8D A9 2D 85 8E   37
C068 : 20 80 C0 A9 04 85 8B A9   1C
C070 : 2F 85 8C A9 03 85 8D A9   A0
C078 : 2F 85 8E 20 0C C1 60 EA   38
C080 : A9 71 8D 2C C0 A9 02 8D   47
C088 : 2D C0 A9 0C 8D 2A C0 A9   82
C090 : 28 8D 2B C0 A0 08 20 FC   26
C098 : C0 18 88 F0 06 20 B9 C0   6E
C0A0 : 4C 96 C0 CE 2B C0 F0 06   CA
C0A8 : 20 CA C0 4C 94 C0 CE 2A   C6
C0B0 : C0 F0 58 20 DB C0 4C 8F   16
C0B8 : C0 20 EE C0 38 A5 8D E9   17
C0C0 : 01 85 8D A5 8E E9 00 85   DF
C0C8 : 8E 60 20 EE C0 18 A5 8D   EB
C0D0 : 69 0F 85 8D A5 8E 69 00   48
C0D8 : 85 8E 60 20 EE C0 38 A5   E2
C0E0 : 8D ED 2C C0 85 8D A5 8E   FF
C0E8 : ED 2D C0 85 8E 60 18 A5   E4
C0F0 : 8B 69 01 85 8B A5 8C 69   0C
C0F8 : 00 85 8C 60 8C 2E C0 A0   68
C100 : 00 B1 8B 11 8D 91 8D AC   D3
C108 : 2E C0 60 60 A9 28 8D 2B   23
C110 : C0 A0 04 20 FC C0 18 88   6D
C118 : F0 06 20 B9 C0 4C 13 C1   89
C120 : CE 2B C0 F0 06 20 2C C1   68
C128 : 4C 11 C1 60 18 A5 8B 69   29
C130 : 05 85 8B A5 8C 69 00 85   AE
C138 : 8C 18 A5 8D 69 0B 85 8D   0B
C140 : A5 8E 69 00 85 8E 60 FF   D5
C148 : 00 00 FF FF 00 00 FF FF   48
C150 : A9 00 85 8B A9 20 85 8C   97
C158 : A9 38 85 8D A9 21 85 8E   07
C160 : 20 90 C1 60 EA EA EA EA   CC
C168 : EA EA EA EA EA EA EA EA   67
C170 : A9 A0 85 8B A9 20 85 8C   07
C178 : A9 98 85 8D A9 20 85 8E   4F
C180 : 20 90 C1 60 EA EA EA EA   EC
C188 : EA EA EA EA EA EA EA EA   87
C190 : A9 80 8D 25 C0 A9 40 8D   F7
C198 : 26 C0 A9 20 8D 27 C0 A9   F5
C1A0 : 10 8D 28 C0 A9 08 8D 29   FC
C1A8 : C0 A9 04 8D 2A C0 A9 02   43
C1B0 : 8D 2B C0 A9 01 8D 2C C0   E7
C1B8 : A9 24 85 FB A9 C0 85 FC   05
C1C0 : A9 19 8D 2D C0 A9 14 8D   C4
C1C8 : 2E C0 A9 08 8D 2F C0 20   57
C1D0 : 35 C2 CE 2F C0 F0 09 20   F8
C1D8 : EE C0 20 27 C2 4C CF C1   65
C1E0 : CE 2E C0 F0 09 20 EE C0   E2
C1E8 : 20 FD C1 4C CA C1 CE 2D   51
C1F0 : C0 F0 09 20 0B C2 20 19   E8
C1F8 : C2 4C C5 C1 60 38 A5 8D   03
C200 : E9 0F 85 8D A5 8E E9 00   FA
C208 : 85 8E 60 18 A5 8B 69 A1   8F
C210 : 85 8B A5 8C 69 00 85 8C   1B
C218 : 60 18 A5 8D 69 D1 85 8D   F6
C220 : A5 8E 69 01 85 8E 60 18   05
C228 : A5 8D 69 01 85 8D A5 8E   87
C230 : 69 00 85 8E 60 A0 00 A2   1D
C238 : 00 B1 8B A0 08 0A 90 0B   31
C240 : 8D 24 C0 8A 18 71 FB AA   B3
C248 : AD 24 C0 88 D0 EF 8A A0   40
C250 : 00 11 8D 91 8D 60         93
Listing 1. »Hi-Spiegel« wird nach Bedarf nachgeladen. Ähnlich wie mit dem Programm »Print-Shop« können Sie nun auch mit »Hi-Eddi« Briefbögen und Grußkarten leicht und schnell gestalten. Ein Beispiel ist der Rahmen um diese beiden Listings.
|
1 ifa<2thena=a+2:load"hi-exe",8,1
2 ifa=3then7
3 ifa=4then31
4 ifa=6then39
5 input"modus";c:poke780,c:poke56,13:clr:w$="123456":sys3328
6 ifpeek(8037)and64thena=3:load"menue",8,1
7 sys3337:a=peek(8064)
8 ona+1gosub9,12,37,13,20,26,13,13,21,22,14:goto7
9 open3,8,0,"$0":get#3,c$,c$
10 get#3,c$,c$,l$,h$:ifc$=""thenclose3:wait198,1:return
11 print256*asc(h$+chr$(0))+asc(l$+chr$(0));:sys3334:goto10
12 print"{clr}{down}sequenz:":print"  "w$:input"{home}{down}{down}";w$:iflen(w$)<2then12
13 return
14 poke8115,8:print"{clr}{down}g=grafik":ifpeek(8073)>127thenprint"f=farbbild"
15 print"s=sprite":print"z=zeichensatz":print"{down}";
16 getc$:ifc$<>"g"andc$<>"f"andc$<>"s"andc$<>"z"then16
17 printc$:poke780,asc(c$):h$=w$:input"{down}name";w$:sys3331:w$=h$:h$=""
18 open1,8,15,h$:input#1,a,h$:printa;h$:ifa>0thenwait198,1
19 close1:return
20 poke631,34:poke198,1:h$="":input"{clr}{down}";h$:goto18
21 a=8075:goto23
22 a=8079
23 d=peek(8074):c=peek(a+d):print"{clr}{down}f"2*d+1:print"schrittweite:",c
24 inputc:ifc<1orc>160then24
25 pokea+d,c:return
26 input"{clr}{down}1.bild";d:c=(dand7)
27 input"{down}2.bild (oder 0)";d:c=c+8*(dand7):ifd>0thenc=c+64
28 ifd=0thenprint"{down}gross";:gosub34:ifc$="j"thenc=c+128
29 print"{down}drucken";:gosub34:ifc$="n"then32
30 ifa=5thena=4:load"hi-print",8,1
31 poke780,c:sys3328:print"{down}nochmal";:gosub34:ifc$="j"then26
32 ifa=5thenreturn
33 a=1:goto1
34 print" (j/n)";
35 getc$:ifc$<>"j"andc$<>"n"then35
36 printc$:return
37 print"spiegeln";:gosub34:ifc$="n"goto14
38 a=6:load"hi-spiegel",8,1
39 print"{clr}1=runter 2=hoch 3=rechts 4=links":inputc$
40 poke49199,val(c$):sys49152:a=3:goto1
  1 IF A<2 THENA=A+2:LOAD "HI-EXE",8,1 
  2 IF A=3 THEN7 
  3 IF A=4 THEN31 
  4 IF A=6 THEN39 
  5 INPUT"MODUS";C:POKE 780,C:POKE 56,13:CLR :W$="123456":SYS 3328 
  6 IF PEEK (8037)AND 64 THENA=3:LOAD "MENUE",8,1 
  7 SYS 3337:A=PEEK (8064) 
  8 ON A+1GOSUB 9,12,37,13,20,26,13,13,21,22,14:GOTO 7 
  9 OPEN 3,8,0,"$0":GET #3,C$,C$ 
 10 GET #3,C$,C$,L$,H$:IF C$="" THENCLOSE 3:WAIT 198,1:RETURN 
 11 PRINT256*ASC (H$+CHR$ (0))+ASC (L$+CHR$ (0));:SYS 3334:GOTO 10 
 12 PRINT"{CLR,DOWN}SEQUENZ:":PRINT"{2SPACE}"W$:INPUT"{HOME,2DOWN}";W$:IF LEN (W$)<2 THEN12 
 13 RETURN 
 14 POKE 8115,8:PRINT"{CLR,DOWN}G=GRAFIK":IF PEEK (8073)>127 THENPRINT"F=FARBBILD" 
 15 PRINT"S=SPRITE":PRINT"Z=ZEICHENSATZ":PRINT"{DOWN}"; 
 16 GET C$:IF C$<>"G"AND C$<>"F"AND C$<>"S"AND C$<>"Z" THEN16 
 17 PRINTC$:POKE 780,ASC (C$):H$=W$:INPUT"{DOWN}NAME";W$:SYS 3331:W$=H$:H$="" 
 18 OPEN 1,8,15,H$:INPUT#1,A,H$:PRINTA;H$:IF A>0 THENWAIT 198,1 
 19 CLOSE 1:RETURN 
 20 POKE 631,34:POKE 198,1:H$="":INPUT"{CLR,DOWN}";H$:GOTO 18 
 21 A=8075:GOTO 23 
 22 A=8079 
 23 D=PEEK (8074):C=PEEK (A+D):PRINT"{CLR,DOWN}F"2*D+1:PRINT"SCHRITTWEITE:",C 
 24 INPUTC:IF C<1OR C>160 THEN24 
 25 POKE A+D,C:RETURN 
 26 INPUT"{CLR,DOWN}1.BILD";D:C=(DAND 7) 
 27 INPUT"{DOWN}2.BILD (ODER 0)";D:C=C+8*(DAND 7):IF D>0 THENC=C+64 
 28 IF D=0 THENPRINT"{DOWN}GROSS";:GOSUB 34:IF C$="J" THENC=C+128 
 29 PRINT"{DOWN}DRUCKEN";:GOSUB 34:IF C$="N" THEN32 
 30 IF A=5 THENA=4:LOAD "HI-PRINT",8,1 
 31 POKE 780,C:SYS 3328:PRINT"{DOWN}NOCHMAL";:GOSUB 34:IF C$="J" THEN26 
 32 IF A=5 THENRETURN 
 33 A=1:GOTO 1 
 34 PRINT" (J/N)"; 
 35 GET C$:IF C$<>"J"AND C$<>"N" THEN35 
 36 PRINTC$:RETURN 
 37 PRINT"SPIEGELN";:GOSUB 34:IF C$="N"GOTO 14 
 38 A=6:LOAD "HI-SPIEGEL",8,1 
 39 PRINT"{CLR}1=RUNTER 2=HOCH 3=RECHTS 4=LINKS":INPUTC$ 
 40 POKE 49199,VAL (C$):SYS 49152:A=3:GOTO 1 
Listing 2. Neues »Hi-Eddi« Steuerprogramm
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →