Ich hatte einen Traum...

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
paulruiz
Beiträge: 25
Registriert: Di 20. Dez 2011, 11:38

Re: Ich hatte einen Traum...

Beitrag von paulruiz »

drohne235 hat geschrieben:Ich schaue mal ob ich die Zeit finde das im Code von Administra zu integrieren.
Keine Eile: mein Urlaub ist fast zum ende, und die Stecker fur serial Kabel sind erst naechste Woche da :cry:

Paul
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Ich hatte einen Traum...

Beitrag von drohne235 »

Keine Eile: mein Urlaub ist fast zum ende, und die Stecker fur serial Kabel sind erst naechste Woche da
Wird auch nicht ganz so schnell gehen, da ich noch einige andere Sachen auf der Agenda stehen habe. Im Prinzip ist es ja auch noch nicht nötig, denn bevor ein Code im eRAM läuft braucht es ja erst einige andere Sachen wie die virtuelle CPU/MMU die funktionieren müssen - bis dahin haben wir sicher eine passende Lösung.
"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
josto
Beiträge: 41
Registriert: So 11. Dez 2011, 11:48

Re: Ich hatte einen Traum...

Beitrag von josto »

An Paul:

Bei den 16-Bit Opcodes dachte ich an 9-Bit Instruction und 7 Bit Operand oder 7 + 16 Bit Operand (32 Bit).

Bei Small-C gibt es nur wenige Register wie Primary, Secondary, Stack-Pointer.

Ein "ADD PR, SR" wird zu einem 16-Bit Code ohne Operand
Ein "ADD PR, #10 wird zu einem 16-Bit Code mit 7-Bit Operand
Ein "ADD PR, #1000 wird zu einem 16-Bit Code mit 23-Bit Operand
23 Bit bedeutet max 8 MB Adressraum, sollte reichen.

Die 9 Bit Instruction nutze ich direkt als Adresse im Cog-RAM:

Code: Alles auswählen

code_fetch              rdword  inst, PC
                        add     PC, #2
                        jmp     inst
ADD RP, #10 wird dann zu:

Code: Alles auswählen

ADD_RP                  shr     inst, #9
                        add     PR, inst 
                        jmp     code_fetch
oder so ähnlich...
Täglich verschwinden Rentner im Internet, weil sie "Alt" + "Entfernen" gleichzeitig drücken...
paulruiz
Beiträge: 25
Registriert: Di 20. Dez 2011, 11:38

Re: Ich hatte einen Traum...

Beitrag von paulruiz »

Seht sich gut aus: etwa 3 mips im LMM mode. Wie seht dass aus mit XMM, oder ist das nicht dein Ziel?
josto
Beiträge: 41
Registriert: So 11. Dez 2011, 11:48

Re: Ich hatte einen Traum...

Beitrag von josto »

Doch doch, aber ich realisiere erst mal die LMM Variante.
Ich habe auch noch keine reale HW, um eine XMM Lösung zu testen. Bisher spiele ich mit einem Propeller Demo Board + PASD rum. Dieses hat kein externes RAM. Und bei meinem HIVE komme ich im Moment nicht weiter, weil ich (wie du) keine RS232 Verbindung zu Stande bringe.

Ca. 20 Instructions von vielleicht 150 hab ich schon :roll:
Mal sehen, wie weit ich dieses WE noch komme (Wetter pass ganz gut :lol: ) Ab nächste Woche muss ich auch wieder ran...
Täglich verschwinden Rentner im Internet, weil sie "Alt" + "Entfernen" gleichzeitig drücken...
paulruiz
Beiträge: 25
Registriert: Di 20. Dez 2011, 11:38

Re: Ich hatte einen Traum...

Beitrag von paulruiz »

Anbei zwei Spin Dateien:
cvm.spin, dies ist das CPU / VM fur Bellard's fbcc Bytecode
run_cvm.spin, dies ist ein kurzes Spin Programm um das CVM objekt zu laden und um ein minimales OS zu schaffen
Genau wie josto hab ich angefangen mit ein einfaches LMM Entwurf.

Mein hardware ist noch nicht fertig, also ungetested aber es wird von BST kompiliert ohne Fehler. Mit der run_cvm.spin Datei brauch Ich Hilfe vom Spin und TriOS experten.

Danke!

Paul
Dateianhänge
run_cvm.spin
(3.17 KiB) 455-mal heruntergeladen
cvm.spin
(18.62 KiB) 461-mal heruntergeladen
josto
Beiträge: 41
Registriert: So 11. Dez 2011, 11:48

Re: Ich hatte einen Traum...

Beitrag von josto »

Hallo

Gratulation, sieht auf den ersten Blick gut aus, mehr kann ich nicht leider nicht sagen.
Zu deiner Frage: "Are these the same locations as in cvm.spin ?"

Variablenadressen zw. Spin und ASM sind grundsätzlich nicht identisch. ASM kennt nur die Variablen im COG-RAM, Spin nur im Main-RAM. Der Offset zwischen beiden ist abhängig, was du sonst so im Main-RAM hast. Die einzige Möglichkeit ist das PAR-Register, was du in der init Funktion auch schon nutzt.
Ist das die Antwort auf deine Frage?

Ich bin mit meiner VM noch nicht viel weiter. Ich habe inzwischen am Compiler und ASM/Linker gearbeitet. Der Compiler ist in der Lage folgendes Mini-Programm korrekt zu übersetzen und eine ASM-File gemäß meiner VM zu generieren:

Code: Alles auswählen

main()
{
  test();
}
  
test() 
{
  while(1)
  {
    led(1);  
    delay(1000);
    led(0);  
    delay(1000);
  }
}
Das ASM File sieht dann wie folgt aus:

Code: Alles auswählen

CODE SEGMENT
PUBLIC _main
_main:
	ENTER
	MOV CR, #0 ;ARGCNTn
	CALL _test
	RETRN
PUBLIC _test
_test:
	ENTER
_3:
	MOV PR, #1 ;GETw1n
	PUSH PR
	MOV CR, #1 ;ARGCNTn
	CALL _led
	ADD SP, #1
	MOV PR, #1000 ;GETw1n
	PUSH PR
	MOV CR, #1 ;ARGCNTn
	CALL _delay
	ADD SP, #1
	MOV PR, #0 ;GETw1n
	PUSH PR
	MOV CR, #1 ;ARGCNTn
	CALL _led
	ADD SP, #1
	MOV PR, #1000 ;GETw1n
	PUSH PR
	MOV CR, #1 ;ARGCNTn
	CALL _delay
	ADD SP, #1
	JMP _3
_4:
	RETRN
Meine clib besitzt 2 in ASM geschrieben Funktionen led() und delay() [in ms].

Der Assember/Linker (ein Python Script) macht aus den ASM-Files plus der VM ein Spin-File.

Nach vielen Iterationen nun endlich: Die LED blinkt !!! :lol: :lol: :lol:

Komisch, meine Frau konnte meine Freude nicht verstehen ;)

Unser Hobby macht manchmal ganz schön einsam.
Täglich verschwinden Rentner im Internet, weil sie "Alt" + "Entfernen" gleichzeitig drücken...
paulruiz
Beiträge: 25
Registriert: Di 20. Dez 2011, 11:38

Re: Ich hatte einen Traum...

Beitrag von paulruiz »

:lol: es ist auch nicht das blinkende led, sonst das ganze was da hinten legt das Spass macht. Und sag nun mal selbst: retro computing ist eine völlig unproduktive Benutzung von Zeit, nicht?

Gratuliere mit das Erfolg!!! Bald wird es vielleicht zwei Hive autarken C compiler geben. Mein Ziel ist um im Kurzen teile von Unix v6/7 kernel nach Hive über zu setzen und die Zusammenarbeit mit TriOS (zugriff zu Schirm, Tastatur, SD Karte, usw.) zu Entwerfen. Dies kan dann in Parallel mit die PDP11 Arbeit, die bestimmt noch viele Monaten laufen wird.

Paul
paulruiz
Beiträge: 25
Registriert: Di 20. Dez 2011, 11:38

Re: Ich hatte einen Traum...

Beitrag von paulruiz »

Danke fur Auskunfte re. Spin Variabelen.

Jetzt hohl Ich das Address auf ("sys_op_addr := cvm.getsysopaddr"), aber wie greift man dan auf die Variabele zu?

Ist
"op := long[sys_op_addr]"
und
"long[sys_op_addr] := 0"
richtiges Spin?
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Ich hatte einen Traum...

Beitrag von yeti »

paulruiz hat geschrieben::lol: es ist auch nicht das blinkende led, sonst das ganze was da hinten legt das Spass macht. Und sag nun mal selbst: retro computing ist eine völlig unproduktive Benutzung von Zeit, nicht?
Unproduktiv?
Neeee!

Ein benutztes Hirn bleibt länger fit!
Und Spaß stärkt das Immunsystem!
Es entsteht also Fitneß/Gesundheit!
Nebenbei entsteht Wissen!
Und Code und Geräte entstehen!
Kontakte!
Nicht nur gelötete Tröpfchen sondern menschlicherdings Welchige!
...und bestimmt noch viel mehr wenn man mal länger nachdenkt!

Ich seh also nicht wo das unproduktiv sein soll!

Genug Ausrufungszeichen?
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Antworten