VDC Grafikerweiterung

[RUN, März 1987, bisher unveröffentlicht]

Make Ultra Hires V 1.2

Im RUN-Computermagazin 6/86 wurde das Programm "Ultra Hires" (Version 1.0) veröffentlicht. Leider bot auch die im Heft 8/86 von RUN erschienene Erweiterung (Version 1.1) nicht die Möglichkeit Texte im OR-Modus auszugeben. Durch das kleine Programm MAKEUH V1.2 wird Ultra Hires um diese Variante des CHAR-Befehls erweitert. Um einen speziellen Effekt dieser Variation zu demonstrieren, ist der Service Disk auch ein Beispielprogramm beigefügt, das, basierend auf dem Demo "3D-Balkengrafik" aus Heft 6/86, "drei" Farben auf dem Bildschirm ermöglicht.

Programmbeschreibung: MAKEUH V1.2
Voraussetzung: Ultra Hires V 1.0 oder 1.1
System: C 128
Typ: Utility
Sprache: BASIC/ASM
Hinweis: @ wird im DIN-ZS als § dargestellt


Ultra Hires Erweiterung:
MAKEUH V1.2

Das Programm ULTRA HIRES bietet mit dem §CHAR-Befehl eine komfortable Möglichkeit der Einfügung von Text in die hochauflösende VDC-Graphik (640 x 200). Leider ist es nur möglich mit Punktinvertierung (XOR) oder im Überschreibmodus (die unter dem Text liegende Graphik wird gelöscht) zu arbeiten. Zwar sind beide Modi auch mit Inversdarstellung zu nutzen, doch bleiben die Möglichkeiten Texte in Rasterflächen einzufügen sehr eng begrenzt.
Um Texte problemlos mittels OR-Funktion in der Hintergrund- bzw. Vordergrundfarbe auch in Rasterflächen einfügen zu können, wurde das Programm MAKEUH V1.2 geschrieben.
Diese Erweiterung zu ULTRA HIRES stellt die zusätzlichen Steuercodes 'control' & 'h' für Ausgabe in Hintergrundfarbe und 'control' & 'v' für Ausgabe in der Vordergrundfarbe zur Verfügung.
Damit ist es erstmals möglich die Optionen des §clr-Befehls komfortabel zu nutzen und Texte in Raster (§PAINT-Befehl) einzufügen. Wie das Beispielprogramm zeigt (vergleiche: 3D-Balkengrafik aus RUN 6/86), können so sogar drei Farben (eine Mischfarbe) mit der VDC-Graphik erzeugt werden.
Ganz nebenbei wird auch noch eine andere Schwäche von ULTRA HIRES beseitigt. Bisher führte ein Neuladen von ULTRA HIRES unweigerlich zu einem Absturz, wenn ULTRA HIRES vorher schon einmal initialisiert worden war. (Die Umsetzung des Pointers in $31e7/$31e8 erfolgt nur bei der ersten Initialisierung!) Dieser Fehler wurde ebenfalls beseitigt.
Das Programm erklärt sich weitgehend selbst. Die einzelnen Programmfunktionen sind durch REM-Kommentare ausführlich erläutert, die Maschinenspracheunterroutinen durch Angabe des Assembler-Quellcodes und zusätzlicher Erläuterungen dokumentiert.
 
Um die neuen Steuerbefehle in ULTRA HIRES einzubinden, geht man wie folgt vor:

1.  MAKEUH V1.2 abtippen und zur Sicherheit speichern.
2. Die Diskette mit der bisher aktuellen Version von ULTRA HIRES einlegen und wenn nötig in 'ultra hires' umbenennen bzw. eineKopie unter dem Namen 'ultra hires' anfertigen.
3. MAKEUH V1.2 starten.
4. Im Menü ihre Programmversion auswählen (sehr empfehlenswert ist der Menüpunkt 6).
5. 'READY.' abwarten, Demoprogramm eintippen, starten und staunen.

PROGRAMMKURZBESCHREIBUNG:

100-140  Programmstart und einladen der alten ULTRA HIRES Version.
150-155 Durch umsetzen des Zeigers in $31e7/$31e8 auf die Fehlerroutine wird ein Rechnerabsturz nach versehentlichem neuladen von ULTRA HIRES verhindert.
160-295 Auswahlmenü für die Wahl des Speicherbereiches für die Erweiterung.
300-320 Einlesen der neuen Unterprogramme aus DATA-Teilen.
330-345 Erzeugt Sprung auf die neue §CHAR Steuerzeichenauswertungsroutine.
355-370 Erzeugt Sprung auf neue Flagauswertung für XOR / OR / XOR & OR.
380 Abspeichern der neuen ULTRA HIRES Version.
400-590 DATAs für die Erweiterungsroutinen.

HINWEIS: Beim Abtippen können alle REM-Kommentare weggelassen werden!

Reinhard Kratzberg

Download: [Download] [Ultra Hires v1.2]
[Directory]

"BAR IN 3 FARBEN" zeigt neue Möglichkeiten
100 rem 3-d balkengrafik, in drei farben, von reinhard kratzberg, langenhagen
110 fast
120 trap 320: rem text-modus einschalten, fehlermeldungen ausgeben, ende
130 :
140 rem programmstart
150 :
160 §graphic,7,2: §clr,85: rem hintergrund als mischfarbe
170 §char,53248,0,0,1,1,"{ctrl-x}"
180 §box,0,0,638,199,1
190 for x=0 to 599 step 48
200 ht=int(rnd(1)*19)+8
210 §bar,x,199,29,10,ht,1
220 z=199-ht+2
230 if ht<8 then 270
240 c$=str$(ht)
250 c$=right$(c$,len(c$)-1)
260 §char,53248,x,z,1,1,c$
270 next
280 §char,53248,9,11,2,2,"
{ctrl-h}hintergrund farbe mit 'or & xor'"
290 §char,53248,9,51,2,2,"
{ctrl-x}schattenschrift mit 'xor'"
300 §char,53248,9,91,2,2,"
{ctrl-v}vordergrund farbe mit 'or'"
310 sleep 10
320 §text: help: end

"MAKE UH V1.2" erzeugt Ultra Hires v1.2
100 rem    "make ultra hires v1.2"
105 rem  erweiterung des §char-befehls
110 rem reinhard kratzberg, langenhagen
115 :
120 graphic1,1:graphic5
125 :
130 print chr$(14) chr$(147)
135 print "Ultra Hires V1.2 wird generiert"
140 bload "ultra hires",b0,p7168
145 :
150 poke dec("31e7"),dec("3f"):rem verhindert den rechnerabsturz
155 poke dec("31e8"),dec("4d"):rem nach restart des ladeprogramms
160 :
165 print:print
170 print "Geben Sie Ihre Programmversion fuer die Wahl der Startadresse an:"
175 print
180 print "1.   Ultra Hires v1.0"
185 print "2.   Ultra Hires v1.1 ohne HCOPY"
190 print "3.   Ultra Hires v1.1 mit HCOPY fuer Olivetti PR 2300"
195 print "4.   Ultra Hires v1.1 mit HCOPY fuer Epson RX/FX und Kompatible"
200 print "5.   Ultra Hires v1.1 mit HCOPY fuer Mannesmann Tally Spirit 80"
205 print "6.   Ultra Hires v1.1 (Luecke bei $3bb0 nutzen)"
210 print "7.   Eingabe einer beliebigen Startadresse"
215 :
220 print chr$(7)
225 input "Ihre Wahl";w$
230 w=val(w$):if w<1 then 220
235 if w>7 then 220
240 on w goto 245,250,255,260,260,265,270
245 a0=12992:goto 300
250 a0=15616:goto 300
255 a0=15805:goto 300
260 a0=15941:goto 300
265 a0=dec("3bb0"):goto 300
270 print chr$(7)
275 input "Startadresse (Hexzahlen mit $ moeglich) ";w$
280 if left$(w$,1)="$" then a0=dec(mid$(w$,2)):else a0=val(w$)
285 if a0<12992 then 270
290 if a0>16330 then 270
295 :
300 read a$: as=a0: af=a0+29
305 do until a$="*"
310 poke a0,dec(a$):a0=a0+1
315 read a$:loop
320 :
325 rem sprung nach string-test
330 poke dec("2a05"),dec("4c"):rem jmp
335 poke dec("2a06"),asand255
340 poke dec("2a07"),as / 256
345 poke dec("2a08"),dec("00"):rem brk
350 :
355 rem sprung nach flag-test
360 poke dec("296a"),dec("20"):rem jsr
365 poke dec("296b"),afand255
370 poke dec("296c"),af / 256
375 :
380 bsave"ultra hires v1.2",b0,p7168 to p16383
385 end
390 :
395 rem maschinenprogramm-datas
400 rem
405 rem teste string auf:
410 rem 'crtl'+x = xor      (invertieren der punkte)
415 rem 'crtl'+v = or       (§char mit vordergrundfarbe)
420 rem 'crtl'+h=or & xor (§char mit hintergrundfarbe)
425 rem
430 rem  string-test
435 data  e0,18    :rem cpx #$18  ;'crtl'+x
440 data  d0,06    :rem bne nichtx
445 data  a9,40    :rem lda #$40  ;setze v-bit fuer xor
450 rem  ready
455 data  8d,29,32 :rem sta $3229 ;or/xor-flag
460 data  60       :rem rts
465 rem  nichtx
470 data  e0,16    :rem cpx #$16  ;'crtl'+v
475 data  d0,04    :rem bne nichtv
480 data  a9,80    :rem lda #$80  ;setze n-bit fuer or
485 data  d0,f4    :rem bne ready ;immer
490 rem  nichtv
495 data  e0,08    :rem cpx #$08  ;'crtl'+h
500 data  d0,04    :rem bne nix
505 data  a9,c0    :rem lda #$c0  ;setze n-bit & v-bit
510 data  d0,ec    :rem bne ready ;immer
515 rem  nix
520 data  4c,0d,2a :rem jmp $2a0d ;teste auf weitere steuercodes
525 rem
530 rem  setzt 'or' oder 'xor' bei §char
535 rem
540 rem  flag-test
545 data  2c,29,32 :rem bit $3229 ;teste flag ob 'or' oder 'xor'
550 data  08       :rem php
555 data  10,03    :rem bpl testxor
560 data  0d,2d,32 :rem ora $322d ;or ausfuehren
565 rem  testxor
570 data  28       :rem plp
575 data  50,03    :rem bvc return
580 data  4d,2d,32 :rem eor $322d ;xor ausfuehren
585 rem  return
590 data  60       :rem rts
595 data  *
 
"BOOT UH 1.2" initialisiert die Grafikerweiterung
10 graphic 1,1: graphic 5: rem 9 k puffer in bank 0 fuer maschinensprache
20 poke 47,0: poke48,68: clr: rem 16 k puffer in bank 1 fuer §stash
30 bload "ultra hires v1.2",b0,p7168
40 sys 8448: rem pc 128 ultra-hires aktivieren
50 print chr$(14) "{clr}PC-128 ULTRA-HIRES ist aktiviert."
60 print "
{down}Sie besitzen jetzt 16 KB zusaetzlichen Graphikspeicher."
70 print "Weiteren Graphikspeicherplatz erhalten Sie, durch Einpoken eines hoeheren"
80 print "Wertes in Zeropageadresse 48 (Zeile 20). Jede Ziffer ueber 68 erhoeht den"
90 print "Pufferspeicher um 256 Bytes. Um einen 32 KB grossen Pufferspeicher zu"
100 print "erhalten, aendern Sie die Zahl 68 in 132."
110 print "{down}Sie haben jetzt noch" fre(0) "Bytes in Bank 0 fuer Programmtext frei"
120 print "und" fre(1) "Bytes in Bank 1 fuer Variablen."
130 end
 

[Seitenanfang] [Artikel] [Info] [Links] [Download] [Home]
Erstellt von WTE, am 20. Februar 2006; überarbeitet am 21. Februar 2006