You are not logged in.

MOS

Intermediate

  • "MOS" started this thread

Posts: 413

Date of registration: Jun 3rd 2010

  • Send private message

member since 12 member since

1

Friday, March 4th 2011, 3:40pm

Cursor bei GET Abfragen

ich schreibe mir gerade einen strunz simplen Editor für meinen CBM8032. wie bekomme ich bei GET Abfragen einen Cursor? Meine Lösung war POKE 167,0. Das hat aber den Nachteil, daß der Cursor, wenn ich eine Zeile etwa mit Return beende und der Cursor ist gerade an ist, ich in dieser Zeile ein inverses Zeichen bekomme, das stehenbleibt. ich fürchte fast ich brauche eine Routine, welche die Blinkphase des Cursors abfrägt, bevor ich eine Zeile beende.

Paradroid

Beginner

  • "Paradroid" is male

Posts: 34

Date of registration: Nov 28th 2008

Location: Saarbrücken

  • Send private message

member since 36 month member since 36 month member since 36 month

2

Sunday, March 6th 2011, 11:34am

hi,
ich kenne mich bei den cbm's leider nicht so gut aus, aber beim cevi schaltet man den cursor mit poke 204,0 ein. in speicherzelle 207 steht dann der zustand der blinkphase, für das abschalten des cursors dann einfach über wait 207,1(?):poke 204,1 schreiben, dann klappts.
speicherzelle 207 könnte bei dir theoretisch zelle 170 sein(?)
hoffe ich helfe dir damit weiter.
^^ up the irons ^^

Wiesel

mit der Lizenz zum Löten

  • "Wiesel" is male
  • »Wiesel« is a verified user

Posts: 2,656

Date of registration: Dec 9th 2004

Location: in der Wildnis

  • Send private message

member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month

3

Sunday, March 6th 2011, 12:07pm

Anderer Ansatz: Cursor ausschalten, und in einer IRQ-Routine einen Sprite-Cursor setzen. Dann kann der Cursor auch ne andere Farbe haben, sich evtl. flüssiger bewegen und muss nicht im normalen Bildschirmspeicher herumfuhrwerken.

Jens
größter Sauhund aller Zeiten.

Telespielator

▬▬INFERIOR▬▬ Swappen?►Mail! BILD lügt!!! www.bildblog.de

  • "Telespielator" is male
  • »Telespielator« is a verified user

Posts: 10,003

Date of registration: Jul 30th 2005

Location: Bonn

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month

4

Sunday, March 6th 2011, 12:11pm

Sprite
ne andere Farbe
CBM8032


Na, wenigstens werden nicht nur meine Posts nicht richtig gelesen... :D

Vielleicht kann man das viel einfacher lösen. Wenn der String eingegeben ist, läßt man diesen von einer kurzen Routine überprüfen. Wenn das letzte Zeichen größer als X ist, wird X abgezogen und man ist das invertierte Zeichen los. X ist dabei die Adresse, ab der die inversen Zeichen im ROM liegen. Habe jetzt gerade die Zeichensatzadressen des 8000ers nicht im Kopf, aber beim C64 stehen ja die Werte 0-127 für die normalen und 128-255 für die invertierten Zeichen...! Beim C64 wäre X halt 127, beim CBM evtl. ein anderer Wert, das habe ich gerade nicht im Kopf. Sollte ja im Handbuch stehen. Sollte doch so klappen, oder?
Bitte beachten: Telespielatorgesetz (TspG)
Verstöße gegen das TspG werden umgehend und gnadenlos von Supererdbeeregeahndet!

Posts: 1,629

Date of registration: Aug 28th 2005

Location: Leverkusen

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month

5

Sunday, March 6th 2011, 1:57pm

Genau so wird das nicht klappen, da ja im String nicht abgelegt wird, ob der Cursor an war oder nicht. Wenn man keine inversen Zeichen eingeben möchte, kann man aber im Bildschirmspeicher die Bits 7 alle zurück setzen, damit erscheinen alle Zeichen normal dargestellt. In BASIC wäre es vermutlich noch schneller, die komplette Zeile (also den kompletten Eingabestring) noch einmal auszugeben, und damit ein evtl. invertiertes Zeichen zu überschreiben.
Elegant ist das alles nicht, aber ich bezweifel, dass auch die scheinbar elegantere Abfrage, ob der Cursor an war, in BASIC richtig zuverlässig funktioniert - BASIC ist einfach zu langsam und könnte es nicht mitbekommen, wenn der Cursor an war, das Zeichen invertiert dargestellt wurde, und vor der Abfrage aber schon wieder ausgeschaltet wurde.

Mein Tipp: bastel Dir Deinen eigenen Cursor und benutze nicht den Kernel-Cursor. Das geht auch in BASIC sehr gut.

MOS

Intermediate

  • "MOS" started this thread

Posts: 413

Date of registration: Jun 3rd 2010

  • Send private message

member since 12 member since

6

Sunday, March 6th 2011, 2:03pm

Das mit den 127 klappt nicht weil an der Stelle wo der Cursor steht ja noch gar kein Zeichen ist. Der Cursor zeigt lediglich an wo ein Zeichen hinkäme wenn ich eine taste drücken würde. Und wenn ich dann Return drücke ist der ASCII wert 13 keinesfalls mehr als 127. Mit einem return mache ich auch kein weiteres zeichen in die Bildschirmzeile. Der Cursor ist eben immer eines voraus.

Posts: 1,629

Date of registration: Aug 28th 2005

Location: Leverkusen

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month

7

Sunday, March 6th 2011, 2:10pm

Ich suche heute mal die Routinen raus, ich hatte sowas schon mal in BASIC programmiert...

MOS

Intermediate

  • "MOS" started this thread

Posts: 413

Date of registration: Jun 3rd 2010

  • Send private message

member since 12 member since

8

Sunday, March 6th 2011, 2:41pm

Ich habe jetzt eine strunz einfache Lösung gefunden. Bevor ich das CHR$(13) mache einfach noch einen SPACE Character, der überschreibt die Stelle an, an welcher der Cursor gestanden hat.

Wiesel

mit der Lizenz zum Löten

  • "Wiesel" is male
  • »Wiesel« is a verified user

Posts: 2,656

Date of registration: Dec 9th 2004

Location: in der Wildnis

  • Send private message

member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month

9

Sunday, March 6th 2011, 2:51pm

Na, wenigstens werden nicht nur meine Posts nicht richtig gelesen... :D

:-)

OK, Dann also mehr Software. Und da ich vom 8032 keine Ahnung habe, auch ohne Tips von meiner Seite.

Jens
größter Sauhund aller Zeiten.

GoDot

C64 Image Processing

  • "GoDot" is male

Posts: 575

Date of registration: Jan 5th 2003

Location: Minden

  • Send private message

member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month

10

Sunday, March 6th 2011, 5:37pm

Was macht ihr hier für ein Gedöns? Wozu haben wir denn so prima BASIC-Befehle wie WAIT? Das geht dann etwa so:

90 POKE 204,0 : WAIT 204,255,1
100 GET A$ : IF A$ = "" THEN 100
105 IF A$ = "{Abbruchtaste}" THEN 130
110 PRINT A$
120 GOTO 90
130 ...

Arndt
GoDot C64 Image Processing
www.godot64.de

schlonkel

Landgräfin Schnorchel von Möhren

  • "schlonkel" is male
  • »schlonkel« is a verified user

Posts: 8,142

Date of registration: Jul 6th 2004

Location: Giessen

  • Send private message

member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month

11

Sunday, March 6th 2011, 5:41pm

Nach print a$ noch ein ; dann passt's :)

DoReCo #32 am 26.05.2012 - Infos HIER
www.lust-auf-nostalgie.de - http://www.thelostcaves.de

Lysosom

Positioniert sich ganz klar gegen kommentarloses Löschen im Forum

  • "Lysosom" is male
  • »Lysosom« is a verified user

Posts: 1,768

Date of registration: Nov 21st 2009

Location: New York

  • Send private message

member since 24 month member since 24 month

12

Sunday, March 6th 2011, 6:25pm

Und das mit Poke 204,x klappt dann auch beim CBM8032? Nur mal so gefragt.....
Hardware (Retro): Amiga 1000 (NTSC), Amiga 1200 (PAL), Amiga 2000 (PAL), Amiga 4000 (PAL), Schneider CPC 464, Atari Portfolio, Sharp PC E 220 / Hardware (aktuell) : 2 Gaming PC,iMac 20", Powerbook, Amigaone 500 (eingetroffen) / Software: C64 (Power64),Amiga (E-UAE, WinUAE, JanusUAE), AROS (auf altem IBM Thinkpad)

Brainstorm

Jetzt mit Vitamin C=

  • "Brainstorm" is male

Posts: 757

Date of registration: Dec 18th 2003

Location: Bei Nürnberg

  • Send private message

member since 96 month member since 96 month member since 96 month member since 96 month member since 96 month member since 96 month member since 96 month member since 96 month

13

Monday, March 7th 2011, 1:06am

Vermutlich nicht.
Die CBMs haben eine andere Speicheraufteilung als der C64. Damit sind auch die Poke-Adressen andere. Es wäre purer Zufall, wenn ein C64 Poke am CBM denselben effekt hätte, aber eigentlich kann man erwarten, daß C64 Pokes am CBM alles mögliche erzeugen, nur nicht das was am C64 rauskommt.
**** Commodore 64 Basic V2 ****
64K RAM System 38911 Basic Bytes Free
READY.

Lysosom

Positioniert sich ganz klar gegen kommentarloses Löschen im Forum

  • "Lysosom" is male
  • »Lysosom« is a verified user

Posts: 1,768

Date of registration: Nov 21st 2009

Location: New York

  • Send private message

member since 24 month member since 24 month

14

Monday, March 7th 2011, 1:43am

Dann täten die Poster wohl gut daran den ganzen Thread zu lesen bevor sie hier posten....... (Gruss an Tele ;) )
Hardware (Retro): Amiga 1000 (NTSC), Amiga 1200 (PAL), Amiga 2000 (PAL), Amiga 4000 (PAL), Schneider CPC 464, Atari Portfolio, Sharp PC E 220 / Hardware (aktuell) : 2 Gaming PC,iMac 20", Powerbook, Amigaone 500 (eingetroffen) / Software: C64 (Power64),Amiga (E-UAE, WinUAE, JanusUAE), AROS (auf altem IBM Thinkpad)

15

Monday, March 7th 2011, 2:02am

Einfach mal vergleichen:
PET
C64/VIC20

Telespielator

▬▬INFERIOR▬▬ Swappen?►Mail! BILD lügt!!! www.bildblog.de

  • "Telespielator" is male
  • »Telespielator« is a verified user

Posts: 10,003

Date of registration: Jul 30th 2005

Location: Bonn

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month

16

Monday, March 7th 2011, 10:20am

Hmmm... mal so ganz doof gefragt: Wofür braucht man eigentlich bei GET 'nen Cursor?

Und warum machste das nicht einfach in Assembler? :weg:

:biglach:
Bitte beachten: Telespielatorgesetz (TspG)
Verstöße gegen das TspG werden umgehend und gnadenlos von Supererdbeeregeahndet!

schlonkel

Landgräfin Schnorchel von Möhren

  • "schlonkel" is male
  • »schlonkel« is a verified user

Posts: 8,142

Date of registration: Jul 6th 2004

Location: Giessen

  • Send private message

member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month

17

Monday, March 7th 2011, 10:34am

Mit den GET-Abfragen ersetzt du die INPUT-Abfrage. Die ist dein größter Gegner bei der Übergabe eines Programmes an den Anwender. Da du aber bei der GET-Abfrage vom System keinen Cursor gestellt bekommst, der Anwender aber mit sowas rechnet gibst du ihm einen vor. Er kennt sich bei der Eingabe wieder aus und du hast das erhabene Gefühl dass er dich nicht mehr reinlegen kann.

Als Kind nutzte ich zeitweise diesen Cursor :) [File "get cursor"]
schlonkel has attached the following file:
  • dice.d64 (174.85 kB - 7 times downloaded - latest: Mar 22nd 2011, 11:47pm)

DoReCo #32 am 26.05.2012 - Infos HIER
www.lust-auf-nostalgie.de - http://www.thelostcaves.de

Telespielator

▬▬INFERIOR▬▬ Swappen?►Mail! BILD lügt!!! www.bildblog.de

  • "Telespielator" is male
  • »Telespielator« is a verified user

Posts: 10,003

Date of registration: Jul 30th 2005

Location: Bonn

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month member since 72 month

18

Monday, March 7th 2011, 1:33pm

Ach, damit ein durch Fehleingabe erzeugtes "?REDO FROM START" o.ä. einem nicht den Bildschirmaufbau kaputt macht, oder was?

Und wie wäre es, wenn man einfach eine gestrichelte Linie vorgibt?

Source code

1
2
GEBEN SIE IHREN NAMEN EIN:
                          ------------------------------
Bitte beachten: Telespielatorgesetz (TspG)
Verstöße gegen das TspG werden umgehend und gnadenlos von Supererdbeeregeahndet!

schlonkel

Landgräfin Schnorchel von Möhren

  • "schlonkel" is male
  • »schlonkel« is a verified user

Posts: 8,142

Date of registration: Jul 6th 2004

Location: Giessen

  • Send private message

member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month member since 84 month

19

Monday, March 7th 2011, 2:37pm

Ja, Tele. Mit einem normalen Inputbefehl konnte der User die Maske zerstören. Das war nicht akzeptabel.

Ohne von der eigentlichen Frage ablenken zu möchten habe ich die Eingabemaske immer mit ">" begonnen und mit "<" beendet. Dazwischen waren Leerstellen und dort wurde eingegeben. Man konnte auch mit dem Cursor hin und her wandern und einfügen. Da begannen aber die Probleme, da viel Stringmanipulation entstand was sich durch noch mehr Stringmüll bemerkbar machte... Außerdem musste das Zeichen wo man gerade mit dem Cursor drüberlief blinken (sonst wusste man ja nicht wo der ist). War spaßig das zu machen. Und viel eleganter als Input.

DoReCo #32 am 26.05.2012 - Infos HIER
www.lust-auf-nostalgie.de - http://www.thelostcaves.de

20

Monday, March 7th 2011, 2:51pm

Und warum machste das nicht einfach in Assembler?


Oh, das böse A-Wort.

Raw-OCR: http://www.cbmhardware.de/cbmwiki/index.…Tastatur/Schirm

In ASM ist das wirklich einfach, übersichtlicher und schneller. Habe schon diverse Software für den CBM 8* geschrieben.
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -