QUCIK Ecke 32 von Harald Schönfeld Eines der begehrtesten Eingabegeräte auf den Classic ATARIs ist wohl die Maltafel (Touch Tablet) von ATARI. Dieses Gerät wird einfach an den Joystickport 0 angeschlossen und schon kann man relativ einfach mit einem Stift auf der Tafel malen und hat zusätzlich 2 weitere Knöpfe an der Maltafel mit denen man zusätzliche Funktionen auswählen kann. Leider (aber verständlicher Weise) ist die Genauigkeit der Tafel nicht sehr gross. Besonders beim Bewegen des Stiftes und beim Auf- und Absetzen kommt es zu Positionsfehlern. Die Position des Stiftes wird in den Paddle-registern des Joystickports geliefert und bewegt sich zwischen 0 und ca. 220. Wenn der Stift nicht aufgesetzt ist erhält man 228. Wie man sieht kann man mit diesen Werte etwa Grafik 15 abdecken, wenn man sie ein wenig umrechnet. Vor allem aber muss man etwas gegen die vielen Ausreißer und Fehler unternehmen, die auftreten können. Man macht dazu am besten Plausibilitätsuntersuchungen der gelieferten Werte. D.h. man läßt das Programm entscheiden, ob es sein kann daß die Werte wirklich korrekt sind. Das alles ist nicht ganz einfach, deshalb haben wir das vor einiger Zeit in eine Library gesteckt, mit deren Hilfe ein Interrupt (VBI) installiert wird, der sich um die Abfrage und Korrektur der Positionen kümmert. Wer also die Maltafel in QUICK abfragen möchte, sollte sich unbedingt das QUICKmagazin 6 von PPP besorgen. Dann geht es einfacher als in jeder anderen Sprache! TABLET.LIB Die Maltafel Library besteht nach außen hin aus 3 Routinen: - TBLT-ON Installiert den Abfrage VBI. Bevor man die folgenden Routinen nutzen kann muß man also diese Routine aufrufen. - TBLT-OFF Schaltet den VBI wieder aus. Das spart ein wenig Rechenzeit, wenn man die Tafel für längere Zeit nicht braucht. - TBLT-READ(MODE,X,Y) Diese Routine liefert die X und Y Position, normalisiert auf Werte zwischen 0 bis 159, bzw. 0 bis 191. Falls der Wert ungültig ist hat X den Wert 228. D.h. dann daß der Stift nicht aufgesetzt ist oder daß der Stift sehr schnell und chaotisch bewegt wurde. Außerdem kann man beim Aufruf den Mode 0 oder 1 wählen. Bei 0 wird sofort ein Wert geliefert, bei 1 wird dagegen unwiederuflich solange gewartet, bis es einen gültigen Wert gibt. Außerdem gibt es noch interne Routinen, die aber nicht benutzt werden können. Die Abfrage geschieht leicht gepuffert, da ja Werte erst mit vorhergehenden verglichern werden müssen um zu entscheiden ob sie korrekt sind, oder nicht. Achtung: Die Mauspositionvariablen MX und MY werden durch die Routine geändert. Die Knöpfe Die Maltafel bietet 3 Knöpfe: Einen am Stift und 2 an der Tafel selbst. Die beiden letzteren liefern Werte wie Joystick links/rechts, der am Stift liefert den Wert wie der Joystick nach vorne. Das Demo-Programm Das Programm liegt wie immer fertig compiliert vor. Wer es ändern will braucht die TABLET.LIB aus QUICKmag 6 von PPP. Das Programm schaltet zunächst Grafik 15 ohne Textfenster ein. Danach installiert es den VBI zur Abfrage der Maltafel. Nun beginnt eine Endlosschleife, in der die Tafel abgefragt wird. In einer ersten Schleife wird nun gewartet, bis der Stift zunächst wenigstens ein mal aufgesetzt wurde. In diesem Fall wird mit der Routine POINT ein kurz blinkender Cursor angezeigt. Dann beginnt die Abfrage der Tafel. Wird der Stift aufgesetzt ohne einen Knopf zu Drücken, dann sieht man wieder den Cursor. Wird der Knopf am Stift gedrückt, wird eine Linie von der letzten Cursorposition zur aktuellen Position gemalt. Wurde der linke Knof am Tablet gedrückt, wird ein Rechteck gezeichnet und wenn der rechte Knopf gedrückt wurde, wird ein ausgefülltes Rechteck gezeichnet. Diese Schleife wird solange wiederholt, bis X den Wert 228 hat, also bis ein ungültiger Wert kommt (wahrscheinlich weil der Stift abgehoben wurde). Dieses kleine Programm zeigt wie unglaublich einfach es in QUICK ist die Maltafel abzufragen. Natürlich kann man mit der Maltafel sehr viel sinnvollere Anwendungen erledigen als das hier. Das zeigt z.B. unser Zeichensatzeditor QUICK Ed, wo mit Hilfe einer Schablone auf der Maltafel ganz schnell und einfach gearbeitet werden kann. * QUICK ECKE 32 * von Harald Schoenfeld * Maltafel Demo * braucht TABLET.LIB aus QUICKmagazin 6 INCLUDE (+ D8:GRAPH.LIB D8:TABLET.LIB )+ BYTE (+ X,Y X1,Y1 STICK=632,CH=764 OCOL,NCOL )+ MAIN UNSIGN OCOL=0 NCOL=1 .GRAPHICS(31) .TBLT-ON -1 REPEAT .TBLT-READ(0,X,Y) IF X<>228 :Stift aufgesetzt? .POINT :Cursor zeigen ENDIF UNTIL X<>228 WHILE X<>228 .TBLT-READ(0,X,Y) IF X<>228 IF STICK=14 :DRAW falls Taste am DRAW(X,Y) :Stift gedrueckt ELSE ADD(X,20,X1) ADD(Y,8,Y1) IF STICK=11 :linke Taste COLOR(2) :Rahmen .FRAME(X,Y,X1,Y1) COLOR(NCOL) ELSE IF STICK=7 :rechte Taste COLOR(3) .BOX(X,Y,X1,Y1) :Box COLOR(NCOL) ELSE .POINT :Sonst Cursor zeigen ENDIF ENDIF ENDIF ENDIF WEND JUMP(1) :von vorne ENDMAIN *Cursor zeigen und wieder loeschen PROC POINT BEGIN POS(X,Y) LOCATE(OCOL) PLOT(X,Y) COLOR(OCOL) PLOT(X,Y) COLOR(NCOL) ENDPROC