HBasic

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

HBasic

Beitrag von PIC18F2550 »

Wie währe es mit einem Basic wo jeder Befehl nur 2long's lang währe.
Die ausgeschriebenen Zeilen baut der Bellatrix zusammen.
Die Eingabezeile wird auch im Bellatrix Zusammengebaut.
Regnatix bekommt doppelrolle einmal compiler und einmal Runtime.
Token im hRam Variabeln bis long im hRam 4x26Long's
Texte und Strings Quelltexte und compilierter Cod vor Start der Runtime im Externen Ram
Hauptroutine mit 1.COG arbeitet nach starten in Spinn und stellt schnittstelle zur Hive Hartware zur verfügung.
Zur Zeit nur mal so eine IDEE :D :D :D
Zuletzt geändert von PIC18F2550 am Sa 10. Nov 2012, 12:52, insgesamt 3-mal geändert.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TokenBasic

Beitrag von drohne235 »

Also an einem Basic besteht definitiv Interesse, wurde ja schon öfters hier erwähnt.

Idee: Warum muss der Compiler in Regnatix laufen, verschwendet dort doch nur wertvollen hRAM?! Im Prinzip könnte in Regnatix doch nur die Runtime laufen und Bella compiliert komplett. Das compilieren wäre ja auch nicht zeitkritisch, weshalb man den Compiler in Bella auch in Spin realisieren könnte. So könnte man fertige Compilate auch mit maximalen Ressourcen in ganz anderen Props laufen lassen - man benötigt nur die die Basic-VM und der Rest des Speichers ist frei für das eigentliche Programm.

Wenn man das weiterdenkt, könnte der Basic-Compiler im Prinzip auch Spin-Bytecode erzeugen.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: TokenBasic

Beitrag von PIC18F2550 »

Hi,

keine VM.

Der Compiler kann fast den gesamten hRam verwenden. Der Quelltext und das compilat liegen im externen Ram.
Nach einem reeboot von Regnatix wird von IDE auf Runtime umgeschaltet(Regnatix wird neu geladen RuntimeCOG's werden gestartet und Token werden in hRam umgeladen und COG's gestartet)
Der obere teil ist nur die Runtime1 die IDE ist noch nicht in arbeit.

Der Speicher im bellatrix ist im graphigmodus für den Quelltext viel zu klein.

Die Runtime ist ausschließlich auf den 6xCOG-Ram beschränkt die Variabeln 4x26 longs,1x26 long's mit Zeigern in den externenRam (64K für 0 therminierte Strings und Text Konstanten)

Am ende stehen ca 16k (4000 befehle) zur verfügung.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: TokenBasic

Beitrag von drohne235 »

Klingt interessant! :)
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: TokenBasic

Beitrag von PIC18F2550 »

Hi drohne235.

Hat du schon ein modul das die kommunikation über den Bus in PASM realisiert?

Wenn ich die Bus und Ram sachen auf ein oder 2 COG's aufteilen kann hätte ich den Speicher von 0x01F8 bis 0x7FFF für den Programmcode frei. :mrgreen:
Zuletzt geändert von PIC18F2550 am So 23. Sep 2012, 20:41, insgesamt 1-mal geändert.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: HBasic

Beitrag von drohne235 »

Der m-Core hat die Kommunikation direkt per PASM integriert. Schau mal in dem letzten Archiv hier im Forum (Link unten), dort findest du das im Regnatix-Code, Ordner "rom". Ist aber nur die Kommunikation von Regnatix aus, die Slaves haben noch Spin-Code.

http://hive-project.de/board/download/file.php?id=1618
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: HBasic

Beitrag von PIC18F2550 »

Super teilchen Danke.
Als erstes einmal Printchr und Printstr unabhängig vom graphigtreiber.

Das Problem sind die underschiedlichen busaufrufe der Treiber.

Wenn aufruf zum Treiber nich passt ist mis... vorprogrammiert.

VGA, TV, g0, ... sollten gemeinsame Schnittstelle besitzen und in einer Fehlansprache eine Fehlermeldung mit der LED Ausgeben.

Das würde den verwaltungsaufwand in den Programmen erheblich verringern(reg-ios).
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: HBasic

Beitrag von drohne235 »

Im m-Core findest du auch gleich fertige PASM-Routinen, um auf den externen RAM zuzugreifen.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: HBasic

Beitrag von PIC18F2550 »

Nicht so schnell mit dem alten Gaul. :shock:
Erstmal mus das Grundgerüst sauber laufen (Print und Input)
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: HBasic

Beitrag von PIC18F2550 »

Habe mal meinen Z80 verseuchtes Gedankengut gelöscht. :D so geht das ja nimmer. :shock:

Hier mal das neue Runtime Grundmodell.

Code: Alles auswählen

PUB Start(status)
    result := cognew(@runtime, status) + 1              'Status ist zeiger auf syncronzelle der COG's

DAT{{Runtime COG***********************************************************************************}}
runtime
              org       0
              rdlong    stat,   #par                    'Statuszeiger laden
              mov       areg,   stat
              add       areg,   h00000001               'Adresszeiger berechnen
RESTART
              mov       line,   stat
              add       line,   hline                   'Linezeiger berechnen (80 Variabeln/Zeiger+Adressregister)

TLOOP         wrlong    areg,   line                    'neuen Linezeiger schreiben

RTLOOP        rdlong    temp,   stat                    'status laden
              cmp       temp,   h00000000
        if_z  jmp       #RESTART                        'Test auf startfreigabe =0 = Stop >0 = Start

              rdlong    line,   areg                    'Linezeiger laden
              rdlong    code,   line                    'Code und Arg1 laden
              mov       arg1,   code                    '
              shr       code,   h00000010
              and       arg1,   h0000ffff

              add       line,   h00000001

              rdlong    arg23,  line                    'Arg2 und Arg3 Laden
              mov       arg2,   arg23                   '
              mov       arg3,   arg23                   '
              shr       arg2,   h00000010
              and       arg3,   h0000ffff

              add       line,   h00000001               '(Zeiger auf neuen TOKEN)

              cmp       code,   T0000  wz               'Token 0000 = NEW
        if_z  jmp       #J0000
              cmp       code,   T0001  wz               'Token 0000 = END
        if_z  jmp       #J0001
              cmp       code,   T0002  wz               'Token 0000 = STOP
        if_z  jmp       #J0002

              jmp       #RTLOOP

'Konstanten & Variabeln
h00000000 long    $00000000     '0
h00000001 long    $00000001     '1
h00000010 long    $00000010     '16 bit verschieben
h0000ffff long    $0000FFFF     '16 bit Lowmaske
hline     long 6 * 26 + 1       'Adressberechnung
temp      long 0                'Merker
stat      long 0                'Zeiger auf Statusregister
areg      long 0                'Zeiger auf token im hRAM
line      long 0                'Merker line Nummer
code      long 0                'Tockencode
arg1      long 0                'Tokenargument 1
arg23     long 0                'Longargument
arg2      long 0                'Tokenargument 2
arg3      long 0                'Tokenargument 3
{{Tokencode}}

T0000 long $0000 'NEW
J0000   ' Statusregister auf 0 setzen um alle Runtimmodule zu stoppen und ihre internen Register in grundstellung zu bringen
        ' Zeilenregister auf 1. Zeile stellen
              jmp       #TLOOP
T0001 long $0001 'END
J0001   ' Statusregister auf 0 setzen um alle Runtimmodule zu stoppen und ihre internen Register in grundstellung zu bringen
        ' Zeilenregister auf 1. Zeile stellen
              wrlong    stat,   #0
              jmp       #RESTART
T0002 long $0002 'STOP
J0002   ' Statusregister auf 1 setzen um IDE zu zeigen das ein STOP-Befehl empfangen wurde
        ' Zeilenregister zeigt auf nächste Zeile
              wrlong    stat,   #1
              jmp       #TLOOP

              fit   $1F0
'**************************************************************************************************
Bildschirmfoto_24.09.2012.png
Das währen ca.400longs für Routinen :D
Kann mal jemand drüberschaun ob das so richtig ist?
Zuletzt geändert von PIC18F2550 am Di 13. Nov 2012, 18:11, insgesamt 1-mal geändert.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten