You are not logged in.

Dear visitor, welcome to Forum64. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

ssdsa

C64 Asm Coder - S.E.S./Crest

  • Send private message

member since 54 month member since 54 month member since 54 month

21

Friday, January 20th 2012, 2:11pm


Es gab auch eine einzelne Zahl deren Eingabe den V2-Interpreter abschmieren laesst.

Welche denn, und in welchem Zusammenhang?

Das würde mich jetzt auch interessieren, denn davon habe ich noch nie gehört!

Aber hier noch was anderes:

Source code

1
2
3
4
5
6
7
8
9
1   2   3   print"hallo"
list

123 print"hallo"
ready.
goto123
hallo

ready.

Mir war bisher nicht bekannt, dass bei einer Zahl mittendrin Leerzeichen enthalten sein dürfen und diese kommentarlos ignoriert werden!

Haubitze

Trainee

  • "Haubitze" is male

Posts: 168

Date of registration: Nov 18th 2009

Location: Dresden

  • Send private message

member since 36 month member since 36 month

22

Friday, January 20th 2012, 2:36pm

Source code

1
2
10 print""+-100
run

oder das ganze im direktmodus eingeben

eine zahl die man mal versuchen kann ist zB

Source code

1
350800



salute

ssdsa

C64 Asm Coder - S.E.S./Crest

  • Send private message

member since 54 month member since 54 month member since 54 month

23

Friday, January 20th 2012, 3:03pm


eine zahl die man mal versuchen kann ist zB

Source code

1
350800

Ja, cool! Die Eingabe einer Basic-Zeile mit der Zeilennummer 350800, oder eben einfach die Eingabe dieser Zahl 350800 ohne weitere Zeichen dahinter, bewirkt einen Effekt, als hätte man Run/Stop + Restore gedrückt (Warmstart).
Die Ursache liegt in einem Fehler im BASIC-ROM (ab Adresse $A97B). Dort soll eigentlich geprüft werden, ob die eingegebene Zahl zu groß ist. Falls ja, soll die Fehlermeldung SYNTAX ERROR ausgegeben werden. Der Sprung zur Fehlermeldung enthält aber eine Lücke (ab Adresse $A953), in die man tappt, wenn der Inhalt des Akkus zufällig gleich #$89 ist.
Bei Eingabe von 350800 wird diese Zahl Ziffer für Ziffer verarbeitet. Das Zwischenergebnis 35080 ist hexadezimal $8908, das MSB ist also #$89!
Dann wird nicht wie beabsichtigt zur Fehlermeldung gesprungen, sondern stattdessen unbeabsichtigt eine Teil-Routine des Basic-Befehls ON [GOTO, GOSUB] ausgeführt (ab Adresse $A957). Diese Teil-Routine geht aber davon aus, dass ein Zwischenwert auf dem Stack liegt, und holt ihn wieder vom Stack herunter. Dadurch wird die Rücksprungadresse zerstört und beim folgenden RTS-Befehl springt er nach Sonstwo und landet vermutlich letztendlich in einem BRK-Befehl, der den Warmstart auslöst.

Der Fehler müsste bei allen Zahlen auftreten, die mindestens 6 Ziffern haben, und bei denen die ersten 5 Ziffern zwischen 35072 und 35327 liegen.

24

Friday, January 20th 2012, 3:24pm

Cool, oder? :)

schlonkel

Landgräfin Schnorchel von Möhren

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

Posts: 10,758

Date of registration: Jul 6th 2004

Location: Gießen

  • 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

25

Friday, January 20th 2012, 4:16pm

Ha, lustig. Bei der zweiten Eingabe macht er dann einen echten JAM (zumindest der VC20, aber das ROM dürfte diesbezüglich gleich sein) :) - Was es so alles gibt. Könnte man mit einer Stackmanipulation vielleicht was sinnvolles erreichen? OK, mir fällt da nix ein. Ihr seid die Freaks.

Ich wusste zB bis vor kurzem nicht dass goto ohne Angabe einer Sprungadresse "goto 0" entspricht. Funktioniert im Direktmodus als auch im Programm.

0 print "hallo"
1 goto
Ready.
goto [RETURN]

;)

DoReCo #37: 22.06.2013 - INFO - Stammtisch #29: xx.06.2013 - INFO

peiselulli

Professional

  • "peiselulli" is male

Posts: 944

Date of registration: Sep 14th 2006

  • Send private message

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

26

Friday, January 20th 2012, 4:18pm

schön ist auch:

Source code

1
2
3
4
5
6
7
8
0 print "hallo"

poke 2051,255
poke 2052,255

list

65535 print "hallo"


Läuft, versucht aber mal, die Zeile zu editieren ... ;-)

schlonkel

Landgräfin Schnorchel von Möhren

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

Posts: 10,758

Date of registration: Jul 6th 2004

Location: Gießen

  • 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

27

Friday, January 20th 2012, 4:56pm

Ja, es stellte sich mir schon immer die Frage -> warum ist bei Zeilennummer 63999 Schluss? Es gab in der 64er(?) mal ein Programm das renumberte ein Basicprogramm in die Sphären ab Zeilennummer 64000. Sprungbefehle funktionieren auch dort oben noch ohne Probleme, nur das editieren macht etwas Umstände :)

DoReCo #37: 22.06.2013 - INFO - Stammtisch #29: xx.06.2013 - INFO

28

Friday, January 20th 2012, 5:10pm

Kein wirklicher bug aber meinen Fizzbuzz entry konnte man mit poke 1,. starten ;-)

ssdsa

C64 Asm Coder - S.E.S./Crest

  • Send private message

member since 54 month member since 54 month member since 54 month

29

Friday, January 20th 2012, 5:39pm

Der positive Aspekt ist: Auch wenn der C64 mit den Jahren schwerhörig wird und man beim Programmieren langsam und deutlich schreiben muss, kann er den Befehl immer noch ausführen. :)
ssdsa has attached the following image:
  • schwerhörig.png

schlonkel

Landgräfin Schnorchel von Möhren

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

Posts: 10,758

Date of registration: Jul 6th 2004

Location: Gießen

  • 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

30

Friday, January 20th 2012, 5:41pm

:lol27: SCHREIEN musste man ja schon immer ;)

DoReCo #37: 22.06.2013 - INFO - Stammtisch #29: xx.06.2013 - INFO

31

Friday, January 20th 2012, 5:43pm

schoen auch

Source code

1
?syntax error...

32

Friday, January 20th 2012, 9:36pm

Und warum kommen bei

Source code

1
?popel nase...

vier Nullen?

schlonkel

Landgräfin Schnorchel von Möhren

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

Posts: 10,758

Date of registration: Jul 6th 2004

Location: Gießen

  • 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

33

Friday, January 20th 2012, 9:58pm

popel nase ... = popelnase ... = 0 0 0 0

syntax error... = syntaxerr or ... = 0 0 0

:D

DoReCo #37: 22.06.2013 - INFO - Stammtisch #29: xx.06.2013 - INFO

34

Friday, January 20th 2012, 11:15pm

Gute Nacht und schoene Gruesse

Colt Seavers

Blödmann

  • "Colt Seavers" is male

Posts: 1,723

Date of registration: Jan 17th 2008

Location:

  • Send private message

member since 54 month member since 54 month member since 54 month

35

Friday, January 20th 2012, 11:55pm

Mir war bisher nicht bekannt, dass bei einer Zahl mittendrin Leerzeichen enthalten sein dürfen und diese kommentarlos ignoriert werden!


Das hab ich auch zum ersten Mal bei der Gotoless Basic Compo gesehen. Schon immer wieder erstaunlich, wie man den Interpreter misshandeln kann :)
"Wer Ahnung hat, soll zum Arzt gehen." (H. Schmidt)

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male
  • "BASIC-FAN" started this thread

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

36

Sunday, January 22nd 2012, 1:27am

ASC-Fehler

Hallo, hier wieder ein anderer Fehler:

a=asc(a$)
a=asc("")

kann zu einem Fehler führen, wenn a$ leer ist.

Abhilf bringt:

a=.: ifa$>""then:a=asc(a$)

Schönen Gruß, Dirk

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male
  • "BASIC-FAN" started this thread

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

37

Sunday, January 22nd 2012, 1:37am

FEHLERNUMMER ermitteln in BASIC

Hallöchen,
hier noch einmal ein Basic-Schmankerl.
Das ermitteln der Fehlernummer in Basic. Unmöglich ???
Dann probiert einmal folgenden Code aus.

Source code

1
2
3
10: poke768,43:poke769,255
11: poke168,0:::a=1e99:::sys58451
12: printpeek(168)

Der Trick biegt den Basic-Start-Zeiger 768/9 auf ein :stx168:rts: um.
So daß nun die Fehlernummer in Speicherstelle 168 gespeichert wird.

Damit kann man nicht nur ein ON ERROR-GOTO realisieren, sondern nun auch beliebig auf die Fehlerursache reagieren. Das sys58451 setzt den Startzeiger wieder auf die Zeileneingabe.

Schönen Gruß, Dirk

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,351

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

38

Sunday, January 22nd 2012, 2:14am

geht das auch in basic oder wieder nur in asm? =P
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male
  • "BASIC-FAN" started this thread

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

39

Sunday, January 22nd 2012, 2:20pm

Ich denke einmal, daß der Trick sowohl in ASM als auch in Basic funtioniert.

Schönen Gruß, Dirk

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male
  • "BASIC-FAN" started this thread

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

40

Sunday, January 22nd 2012, 2:27pm

INPUT ohne Fehlermeldungen

Wie bekannt kann der Input-Befehl in Basic eine ganze Reihe von Fehlermeldungen produzieren.
Wäre es da nicht toll, wenn man die einfach auspoken könnte???

Source code

1
2
3
10: poke768,157:poke769,172:poke19,1
11: input"input(a,b):";a,b:print:printa,b
12: sys58451:poke19,0:::::wait198,15:geta$:goto10


Man kann nun statt der Zahlen auch Buchstaben eingeben oder mehr Parameter, als gefordet.

Schönen Gruß, Dirk