Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Alternative zu Basic++ (Zeiger, Funktionen etc) Kategorie: C-Control I V1.2/2.0 (von Manuel - 1.02.2006 19:24)
 Als Antwort auf Re: Alternative zu Basic++ (Zeiger, Funktionen etc) von Dietmar - 29.01.2006 21:14
Manuel nutzt:  CC1-M-Unit V1.2/2.0
Hallo Dietmar,

ich schicke dir den Code gerne zu - nur an welche Adresse? Kannst mir ja zuerst ne Mail schreiben, dann antworte ich dir...
OCBasic hab ich aber eigentlich schon abgeschlossen... hat ja nicht funktioniert mit meiner 2.02 upgedatet auf 2.03... Bei Aufruf der Zeiger (Inhalt) stürzt meine CControl ab..
Wie soll ich den Sourcecode unten eingeben? Mit oder ohne den Zahlen am Anfang - kann irgendwie nix damit anfangen.

Gruß

Manuel

> Hallo zusammen
>
> um der Sache mit den Zeigern auf den Grund zu gehen, habe ich ein kleines Testprogramm sowohl mit Basic++ als auch mit OCBASIC und Option CCBAS übersetzt. Es zeigen sich keine Unterschiede zwischen dem erzeugten Tokencode. Allerdings existiert in Basic++ offensichtlich ein Bug beim Adreßoperator "^". Der sollte die Adresse und nicht den Inhalt einer Variable zurückliefern.
>
> Der OCBASIC-Code läuft auf der Open-Micro und sollte auch auf der M-Unit ab Version 2.03 funktionieren. Die Open-Micro liefert beim OCBASIC-Code als Ausgabe die vier Zahlen 9, 20, 8 und 9 auf einem Terminal. Mich würde interessieren, was die V2 bei diesem einfachen Programm ausgibt.
>
>
> Basic++:
>                                       define ^a byte
>                                       define b byte
> 0004: 03 00 07    GOTO 0007    
> 0007: 16 09       PUSH BYTE[10]       a=^b
> 0009: 19 08       POP BYTE[9]  
> 000b: 14 00 14    PUSH 20             @a=20
> 000e: 16 08       PUSH BYTE[9]
> 0010: 24 02       HANDSHAKE ON
> 0012: 16 08       PUSH BYTE[9]        print a
> 0014: 1e          PRINT STACK  
> 0015: 1f 0d 0a 00 PRINT 13,10,0
> 0019: 16 08       PUSH BYTE[9]        print @a
> 001b: 24 00       HANDSHAKE OFF
> 001d: 1e          PRINT STACK  
> 001e: 1f 0d 0a 00 PRINT 13,10,0
> 0022: 16 08       PUSH BYTE[9]        print ^a
> 0024: 1e          PRINT STACK  
> 0025: 1f 0d 0a 00 PRINT 13,10,0
> 0029: 16 09       PUSH BYTE[10]       print ^b
> 002b: 1e          PRINT STACK  
> 002c: 1f 0d 0a 00 PRINT 13,10,0
> 0030: ff          END                 end
>
>
> OCBASIC mit Option CCBAS:
>                                       option ccbas
>                                       define ^a byte[9]
>                                       define b byte[10]
>
> 0004: 03 00 07    GOTO 0007           goto start
>                                       #start
> 0007: 14 00 09    PUSH 9              a=^b
> 000a: 19 08       POP BYTE[9]
> 000c: 14 00 14    PUSH 20             @a=20
> 000f: 16 08       PUSH BYTE[9]
> 0011: 24 02       HANDSHAKE ON
> 0013: 16 08       PUSH BYTE[9]        print a
> 0015: 1e          PRINT STACK
> 0016: 1f 0d 0a 00 PRINT 13,10,0
> 001a: 16 08       PUSH BYTE[9]        print @a
> 001c: 24 00       HANDSHAKE OFF
> 001e: 1e          PRINT STACK
> 001f: 1f 0d 0a 00 PRINT 13,10,0
> 0023: 14 00 08    PUSH 8              print ^a
> 0026: 1e          PRINT STACK
> 0027: 1f 0d 0a 00 PRINT 13,10,0
> 002b: 14 00 09    PUSH 9              print ^b
> 002e: 1e          PRINT STACK
> 002f: 1f 0d 0a 00 PRINT 13,10,0
> 0033: ff          END                 end
>
>
> Ohne "Option CCBAS" ist der OCBASIC-Code übrigens rund ein Drittel kleiner, aber dafür nur auf den OM-Kontrollern lauffähig.
>
> Viele Grüße
> Dietmar

 Antwort schreiben

Bisherige Antworten: