Der VC 1526/MPS 802 als Grafikdrucker
Aufgabe des Programms ist es, die Punkte aus dem Bildspeicher (nachfolgend als HRBM — Hires-Bit-Map — bezeichnet) zu lesen und dem Drucker in geeigneter Form zu übergeben. Die gestellte Aufgabe läßt sich in die folgenden Abschnitte unterteilen: Initialisierung; Lesen des HRBM; Umformen der gelesenen Daten; Übergabe der Daten an den Drucker; Ende.
Betrachten wir das Ganze aus der Bit-Sicht. Das HRBM besteht aus 8 000 Bytes. Diese lassen sich als 8 x 8 Bit-Zeichen zusammenfassen. Man erhält dann also 25 Zeilen zu je 40 Spalten aus 8 x 8 Bit-Zeichen = 1000 solche Zeichen. Das Programm liest also ein solches Zeichen aus der HRBM und definiert nach diesem Muster einen neuen Character für den 1526. Im HRBM sind aber die Bytes horizontal orientiert, während sie der Drucker vertikal orientiert erwartet (siehe Skizze 1). Das Umformungsprogramm hat deshalb die Aufgabe, die Bits um die Diagonale zu spiegeln. Damit wären alle Teilprobleme gelöst.
Das Assemblerprogramm bietet noch folgende Vorzüge:
- Befehlssyntax: SYS 6 * 4096, T, P
T = Tabulator (0 <= T <= 40)
P*4096 = Anfangsadresse des HRBM (0 <= P <= 15) - das HR-Bild kann auf dem Drucker in der Horizontalen verschoben werden (Tab)
- durch einen speziellen Parameter wird das HRBM gewählt (auch das »versteckte« RAM unter dem Interpreter und dem Betriebssystem)
- durch RUN/STOP unterbrechbar (Files werden korrekt geschlossen)
- kein Zeilenvorschub, das heißt zwei nacheinander ausgedruckte Bilder fügen sich nahtlos aneinander
- das Programm liegt von $6000 bis $613b in einem günstigen Bereich und kann somit mit vorhandenen Basic-Erweiterungen verwendet werden
- hohe Geschwindigkeit durch reine Maschinensprache.
Wenn Sie das Hardcopy-Programm in Verbindung mit einer Basic-Erweiterung verwenden, beachten Sie bitte folgende Reihenfolge:
- Basic-Erweiterung laden und starten.
- Basic-Lader des Hardcopy-Programms laden und starten.
Das Maschinenprogramm schützt sich selbst vor dem Überschreiben.
Es kann sein, daß Sie vor dem Starten des Programms den Zeilenvorschub des VC 1526/MPS 802 verkleinern müssen:
OPEN 4,4: OPEN 6, 4, 6: PRINT#6, CHR$(18): PRINT#4: CLOSE 4: CLOSE 6
Simons Basic | P = 14 |
Screen-Graphics 64 | P = 10 |
Ultra-Basic 64 | P = 10 |
Supergrafik 64 | P = 10 & P = 14 |
Hi-Res Grafik Aid (64 intern) | P = 2 |
1 rem hi res hardcopy v10 2 rem durch sys 6*4096,t,p wird ein hi res hard- 3 rem copy auf den drucker 1526 ausgegeben. 4 rem t = tabulator (0<= t <= 40) 5 rem p * 4096 = anfangsadresse des hrbm 6 rem z.b. sys 6*4096,20,2 7 rem 8 rem v1 29.12.83 do by lk 9 rem v10 25. 1.84 mi by lk 10 rem 11 rem (c) '84 by lucas kalt 12 rem 13 rem nicht relokatibel!!! 14 fora=6*4096to6*4096+1*256+3*16+11:readb:x=x+b:pokea,b:next 15 ifx<>40377thenprint"** data-fehler **":stop 16 print"sys 6*4096,t,p":print 17 print"t = tabulator (0<=t<=40) 18 print"p*4096= anfangsadresse des hrbm 19 poke56,6*16:poke55,1:new 20 data169,106,162,4,160,6,32,212,96,162,106,32,201,255,169,20,32,210,255 21 data169,105,162,4,160,5,32,212,96,169,100,162,4,160,0,32,212,96,32,253 22 data174,32,158,183,224,41,176,12,134,252,32,253,174,32,158,183,224,16 23 data144,6,32,179,96,76,72,178,138,10,10,10,10,133,255,162,0,134,254,142 24 data60,3,169,0,141,61,3,32,223,96,32,28,97,240,41,162,105,32,201,255 25 data162,0,189,62,3,32,210,255,232,224,8,208,245,169,13,32,210,255,162 26 data100,32,201,255,32,42,97,169,254,32,210,255,169,141,32,210,255,24 27 data165,254,105,8,133,254,144,2,230,255,32,225,255,240,30,238,61,3,173 28 data61,3,201,40,208,181,162,100,32,201,255,169,13,32,210,255,238,60,3 29 data173,60,3,201,25,208,156,169,105,32,195,255,169,13,32,210,255,169 30 data100,32,195,255,162,106,32,201,255,169,36,32,210,255,32,204,255,169 31 data106,76,195,255,32,186,255,169,0,32,189,255,76,192,255,120,165,1,41 32 data253,133,1,162,0,138,157,62,3,232,224,8,208,248,169,128,133,253,160 33 data0,177,254,162,0,10,144,10,72,189,62,3,5,253,157,62,3,104,232,224 34 data8,208,238,70,253,200,192,8,208,227,165,1,9,2,133,1,88,96,162,0,138 35 data221,62,3,208,5,232,224,8,208,246,96,24,165,252,109,61,3,170,240,8 36 data169,32,32,210,255,202,208,250,96