HBasic
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
HBasic
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
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
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
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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: TokenBasic
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.
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
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: TokenBasic
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.
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
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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: TokenBasic
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
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: TokenBasic
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.
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.
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
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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: HBasic
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
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
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: HBasic
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).
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
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
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: HBasic
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
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: HBasic
Nicht so schnell mit dem alten Gaul.
Erstmal mus das Grundgerüst sauber laufen (Print und Input)
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
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
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: HBasic
Habe mal meinen Z80 verseuchtes Gedankengut gelöscht. so geht das ja nimmer.
Hier mal das neue Runtime Grundmodell. Das währen ca.400longs für Routinen
Kann mal jemand drüberschaun ob das so richtig ist?
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
'**************************************************************************************************
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
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