TriOS Revisionen

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: TriOS Revisionen

Beitrag von yeti »

PIC18F2550 hat geschrieben:Bezogen auf die reinen Befehle ist das OK.

Ich denke da aber eher an die darin eingebetteten Texte die nicht direkt zum Befehl gehören.

z.B. Print "Hallo Text"

Hier sollte spätestens der Programmiere sagen wie der "Hallo Text" zu behandeln ist damit er auf dem Zielsystem richtig ausgegeben wird.
Aber der Prop hat nur einen 8-Bit-Zeichensatz im ROM...

Warum kam da überhaupt einer auf die schmale Planke UTF-16 für das PropellerTool als DeFAULT-Zeichenkodierung zu nehmen?

Wir müssen eventuell nach Umstieg auf UTF-8 noch in ein paar numerischen Konstanten oder Stringkonstanten nachbessern, aber das war's dann vermutlich auch. Viele Stellen, an denen mit numerischen Zeichenwerten rumgerechnet wird, wird es vermutlich nicht geben. (Groß-/Klein-Wandlung?)

Mein Ziel ist, die TriOS-Quellen endlich wieder in ein Versions-Verwaltungs-System zu bekommen und das bedeutet heutzutage in 96,7036% aller Fälle "Git".

GitHubs Hilfe spuckt weder zu UTF-16, noch zu UTF-8 sinnvolle Hinweise aus, aber wenn UTF-8 in 99,798% der Zeilen alles ASCII-identisch darstellt, weil sie eh nur Code enthalten oder wenn Strings, dann nur keine "bösen Sonderzeichen", dann greifen wenigstens Diff- und Patchtools und man kriegt eine überwiegend rund laufende Verwaltung hin.

Ich hab übrigens beim Versuch TriOS mit OpenSpin durchzunudeln Stellen entdeckt, wo man in PASM Stringkonstanten-Umlaute durch ihre numerischen Werte ersetzen muß, damit OpenSpin nicht hustet. Ich glaub, das waren die Definitionen der Umlauttasten im Tastaturtreiber. Aber dazu später mal mehr. OpenSpin kotzt uns beim TriOS-Bauen an noch viel mehr Stellen auf die frisch geputzten Schuhe! Aber das verfolge ich auch nicht mit voller Energie.

Erstmal unter Beibehaltung des <zombiefilm-musik> BSTC-Übels </zombiefilm-musik> TriOS in Git kriegen.

Pasta!!!
      Ramen!!!
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: TriOS Revisionen

Beitrag von yeti »

...zwischendurch nur mal unverbindlich laut gedacht...

Code: Alles auswählen

$ ls -l
insgesamt 16
drwxr-xr-x 2 yeti yeti 4096 Sep 20  2017 BAK
-rw-r--r-- 1 yeti yeti  116 Sep 20  2017 config.spin
-rw-r--r-- 1 yeti yeti  530 Sep 20  2017 main.spin
-rw-r--r-- 1 yeti yeti  298 Sep 20  2017 Makefile
$ /opt/bst/bin/bstc -L /opt/parallax.spin.src/spin  main.spin
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
Compiled for i386 Linux at 08:17:46 on 2009/07/20
Loading Object main
Loading Object config
Loading Object FullDuplexSerial
Program size is 928 longs
Compiled 198 Lines of Code in 0.008 Seconds
$ ls -l
insgesamt 16
drwxr-xr-x 2 yeti yeti 4096 Sep 20  2017 BAK
-rw-r--r-- 1 yeti yeti  116 Sep 20  2017 config.spin
-rw-r--r-- 1 yeti yeti  530 Sep 20  2017 main.spin
-rw-r--r-- 1 yeti yeti  298 Sep 20  2017 Makefile
$ █
...das sieht doch gut aus, oder?

BSTC schreibt kein Binary, wenn weder "-e", noch "-b" angegeben wird. Die Ausgabe eines solchen "trockenen" Laufes kann ich also vermutlich nachparsen und so die Abhängigkeiten eines (Haupt-)Programmes bestimmen.

Code: Alles auswählen

$ make bin/flash/admflash.binary -B
./bstc.linux -L lib -b -O a flash/administra/admflash.spin
Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved
Compiled for i386 Linux at 08:17:46 on 2009/07/20
Loading Object admflash
Loading Object adm-fat
Loading Object adm-rtc.spin
Loading Object adm-hss
Loading Object adm-wav
Loading Object adm-rtc
Loading Object adm-com
Loading Object adm-plx
Loading Object glob-con
Program size is 14352 longs
2 Constants folded
Compiled 3179 Lines of Code in 0.153 Seconds
mv admflash.binary bin/flash/admflash.binary
$ █
...wobei ich bis heute nicht kappiere, warum BSTC alle Objekte außer "adm-rtc.spin" ohne die Extension ausgibt. Ich werd mich heftigst bemühen, mich an dieser Frage nicht verbeißen, sondern möglichst hübsch und elegant drumherum zu programmieren... ommmMMMmmm...

Zu spääät!!!

Code: Alles auswählen

$ grep -r "adm-rtc.spin"
Makefile:       $(LIB)/adm-rtc.spin \
Makefile:       $(LIB)/adm-rtc.spin \
Makefile:       $(LIB)/adm-rtc.spin \
Makefile:       $(LIB)/adm-rtc.spin \
Makefile:       $(LIB)/adm-rtc.spin \
Makefile:       $(LIB)/adm-rtc.spin \
lib/adm-fat.spin:                rtc            : "adm-rtc.spin"
make.log:Loading Object adm-rtc.spin
make.log:Loading Object adm-rtc.spin
make.log:Loading Object adm-rtc.spin
make.log:Loading Object adm-rtc.spin
$ █
BSTC ist leider unschuldig daran...
Schaaaaadeeee...
:mrgreen:

...aber bitte erstmal drin lassen... mein Dependenzensucher muß mit und ohne ".spin" am Ende klarkommen, da sowas ja jederzeit wieder auftauchen könnte...

Bisher hab ich in meinem "Makefile" dies für jedes Toplevel-Spin-Objekt manuëll bestimmt und dort festgehalten, was jetzt wo es eine neue Version gibt ohne daß man mir gesagt hat welche Files neu hinzukamen wieder eine Höllenarbeit würde...

Also ich denk mal, ich krieg das vereinfacht und dann wird das in Zukunft nur noch manuëll gemacht für Programme, die beim Übersetzen z.B. wegen "#defines" abweichende Kommandozeilen brauchen.

Es wäre ultrahübsch, wenn wir sowas in Zukunft im Programmheader frestschreiben könnten, damit ich das von meiner Lieblingstextanalysehilfskraft (AWK) da rausfischen lassen kann...

Hier mal der heutige Stand meines Makefiles für "hive-trios-r57-source-2014-06-22-yeti.wip":
hive-trios-r57-source-2014-06-22-yeti.wip_Makefile.zip
(4.42 KiB) 582-mal heruntergeladen
Ich denke, es ist verständlich, daß ich davon mehr automagisieren will.

Schön, daß wir mal d'rüber gesprochen haben... mir geht's auch fast schon wieder etwas besser damit... :mrgreen:
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

hive-trios-2018-04-30

Beitrag von yeti »

Alldieweil in der Dimension Unix

----------8<-----{20180501-0842-GMT}----->8----------

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ chmod +x make.bstc.sh
hive-trios-2018-04-30-yeti.wip$ ./make.bstc.sh
bash: ./make.bstc.sh: /bin/sh^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden
Öööiiijjj!!!

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ file make.bstc.sh 
make.bstc.sh: POSIX shell script, ASCII text executable, with CRLF line terminators
hive-trios-2018-04-30-yeti.wip$ sed -i 's/\r//' make.bstc.sh
hive-trios-2018-04-30-yeti.wip$ quiet ./make.bstc.sh && echo 'Koa Fehlers net.'
Koa Fehlers net.
;-)

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ { find bin -type f ; ( cd ../hive-trios-2018-04-30-dr235.orig ; find bin -type f ); } | sort | uniq -c | awk '$1!=2'
      1 bin/sdcard/system/matrix.bel
      1 bin/sdcard/system/tvcol.bel
Zwei Neuzugänge in der Intensivstation.
Hmmm...
"make.bstc.sh" anpassen oder gleich aufs Makefile-Bauen stürzen?
Darüber muß ich erstmal mediYETIeren

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ diff -u0 ../hive-trios-r57-source-2014-06-22-dr235.orig/make.bat ../hive-trios-2018-04-30-dr235.orig/make.bat 
--- ../hive-trios-r57-source-2014-06-22-dr235.orig/make.bat     2014-06-19 21:20:04.000000000 +0000
+++ ../hive-trios-2018-04-30-dr235.orig/make.bat        2018-04-30 17:29:30.000000000 +0000
@@ -13 +13 @@
-REM Alte Versionen l�schen
+REM Alte Versionen löschen
@@ -53 +53 @@
-REM htxt, g0key
+REM htxt, g0key, tools
@@ -61,0 +62,3 @@
+rename *.binary *.bel
+
+for %%x in (.\system\bellatrix\tools\*.spin) do %BSTC% -L %libpath% -D __VGA -D __VGA_MONSET1 -b -O a %%x 
hive-trios-2018-04-30-yeti.wip$ █
Insgesamt:
"make.bstc.sh" läuft nach miminmalinvasiven Eingriffen wohl noch halbwegs gut und die Tu-Du-Liste (Mwhuaaahahahahaa! Ich muß es ja wohl doch selber tun!) ist übersichtlich kurz: Nur die beiden Neuzugänge einbauen (siehe "diff").

----------8<-----{20180501-1406-GMT}----->8----------

"diff alt neu" nach Anpassen von "make.bstc.sh", wodurch meine Variante wohl automagisch brav mit unixoiden Zeilenenden gespeichert wurde, behauptete erst, jede Zeile sei geändert.
Erklärung folgt:

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ file ../hive-trios-2018-04-30-dr235.orig/make.bstc.sh make.bstc.sh 
../hive-trios-2018-04-30-dr235.orig/make.bstc.sh: POSIX shell script, ASCII text executable, with CRLF line terminators
make.bstc.sh:                                     POSIX shell script, ASCII text executable
Öööiiijjj!!!

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ tr -d '\r' < ../hive-trios-2018-04-30-dr235.orig/make.bstc.sh | diff -u2 - make.bstc.sh 
--- -   2018-05-01 13:55:58.896803943 +0000
+++ make.bstc.sh        2018-05-01 13:46:42.115314826 +0000
@@ -11,4 +11,10 @@
 ##
 ## - auch Enddatum ausgeben
+##------------------------------------------------------------------------------
+## 20180501/yeti
+##
+## - Uebersetzung von ./system/bellatrix/tools/*.spin -> ${sd_sys}/*.bel
+##   hinzugefuegt. Derzeit betrifft dies nur matrix.bel und tvcol.bel is aber
+##   wie in der DOSWIN-Vorlage als Schleife auf weitere Kundschaft vorbereitet.
 ################################################################################
 set -e ## exit on error
@@ -66,5 +72,5 @@
 ## Slave-Dateien erzeugen
 ## admsid, admay, admterm
-## htxt, g0key
+## htxt, g0key, tools
 
 ${BSTC} -L ${libpath} -b -O a ./system/administra/admsid/admsid.spin
@@ -78,4 +84,7 @@
 for i in *.binary ; do mv ${i} ${sd_sys}/${i%%.binary}.bel ; done
 
+for x in ./system/bellatrix/tools/*.spin ; do ${BSTC} -L ${libpath} -D __VGA -D __VGA_MONSET1 -b -O a $x ; done
+for i in *.binary ; do mv ${i} ${sd_sys}/${i%%.binary}.bel ; done
+
 ##------------------------------------------------------------------------------
 ## Systemdateien erzeugen
hive-trios-2018-04-30-yeti.wip$ quiet ./make.bstc.sh && echo 'Koa Fehlers net.'
Koa Fehlers net.
Seid ihr alle daaaaaa?

Code: Alles auswählen

hive-trios-2018-04-30-yeti.wip$ ( cd ../hive-trios-2018-04-30-dr235.orig ; find bin -type f ) | wc -l ; find bin -type f | wc -l
82
82
Jaaaaaa...
@Scheffe: Bitte in Zukunft Dateien für die Dimension Unix nicht mit CRLF abspeichern.

----------8<-----{20180502-2222-GMT}----->8----------

Nach CRLF->LF-Wandel für "make.bstc.sh" in 20180430-dr235 (Name des Astes in Git) difft diese nun wieder ohne das ganze File als geändert anzusehen mit meinem Ast 20180430-yeti:

Code: Alles auswählen

gitlab/hive-trios$ git diff 20180430-dr235 20180430-yeti
diff --git a/.gitlab-ci.yml.off b/.gitlab-ci.yml.off
new file mode 100644
index 0000000..0ebdf04
--- /dev/null
+++ b/.gitlab-ci.yml.off
@@ -0,0 +1,4 @@
+make.bstc.sh:
+  script:
+    - chmod +x make.bstc.sh
+    - ./make.bstc.sh | tee ./make.bstc.sh.log
diff --git a/bstc.linux b/bstc.linux
new file mode 100755
index 0000000..200c412
Binary files /dev/null and b/bstc.linux differ
diff --git a/make.bstc.sh b/make.bstc.sh
old mode 100644
new mode 100755
index d9261e0..70fd6f4
--- a/make.bstc.sh
+++ b/make.bstc.sh
@@ -10,6 +10,12 @@
 ## 20170515/yeti
 ##
 ## - auch Enddatum ausgeben
+##------------------------------------------------------------------------------
+## 20180501/yeti
+##
+## - Uebersetzung von ./system/bellatrix/tools/*.spin -> ${sd_sys}/*.bel
+##   hinzugefuegt. Derzeit betrifft dies nur matrix.bel und tvcol.bel is aber
+##   wie in der DOSWIN-Vorlage als Schleife auf weitere Kundschaft vorbereitet.
 ################################################################################
 set -e ## exit on error
 set -x ## echo commands
@@ -27,7 +33,7 @@ sd_sys="./bin/sdcard/system"
 flash="./bin/flash"
 libpath="./lib"
 
-BSTC="/opt/bst/bin/bstc"
+BSTC="./bstc.linux"
 
 ##------------------------------------------------------------------------------
 ## Alte Versionen loeschen
@@ -65,7 +71,7 @@ mv regime.binary ${sd}/reg.sys
 ##------------------------------------------------------------------------------
 ## Slave-Dateien erzeugen
 ## admsid, admay, admterm
-## htxt, g0key
+## htxt, g0key, tools
 
 ${BSTC} -L ${libpath} -b -O a ./system/administra/admsid/admsid.spin
 ${BSTC} -L ${libpath} -b -O a ./system/administra/admay/admay.spin
@@ -77,6 +83,9 @@ ${BSTC} -L ${libpath} -b -O a ./system/bellatrix/bel-htext/htext.spin
 ${BSTC} -L ${libpath} -b -O a ./system/bellatrix/bel-g0/g0key.spin
 for i in *.binary ; do mv ${i} ${sd_sys}/${i%%.binary}.bel ; done
 
+for x in ./system/bellatrix/tools/*.spin ; do ${BSTC} -L ${libpath} -D __VGA -D __VGA_MONSET1 -b -O a $x ; done
+for i in *.binary ; do mv ${i} ${sd_sys}/${i%%.binary}.bel ; done
+
 ##------------------------------------------------------------------------------
 ## Systemdateien erzeugen
 ## - div. externe Kommandos
Viel ist offensichtlich nicht gescheh'n, aber es schneckt voran: So ist es auch nicht Stillstand.

----------8<-----{20180502-2245-GMT}----->8----------

Da ich nun in 20180430-dr235 etwas geändert habe (make.bstc.sh CRLF->LF), ist das ja nichtmehr dr235s Original. Das Original will ich ja auch noch im Zugriff haben. Aber für jeden solchen Kleinkram einen Branch anlegen? Mal einen Tag (Anhängeschildchen) antesten:

Code: Alles auswählen

gitlab/hive-trios$ git tag 20180430-dr235-original 0cef59c7e5f6c4c95079ffe2018c86affef600d0
gitlab/hive-trios$ git branch
  20140622-r57-dr235
  20140622-r57-yeti
  20180428-dr235
* 20180430-dr235
  20180430-yeti
  master
gitlab/hive-trios$ git tag
20180430-dr235-original
Wie die Entwicklung sinnig auf Branches und Tags verteilt wird, muß sich noch einspielen. OmmmMMMmmmPtimistisch bleiben!

----------8<-----{20180502-2300-GMT}----->8----------

Aaaaah jetzt jaaaa...

Code: Alles auswählen

gitlab/hive-trios$ git push origin 20180430-dr235-original 
Total 0 (delta 0), reused 0 (delta 0)
To gitlab.com:yeti/hive-trios.git
 * [new tag]         20180430-dr235-original -> 20180430-dr235-original
Tags muß man also explizit hochschubsen, Siehe auch [stackoverflow] How to push a tag to a remote repository using Git? für erhellende Worte der Art "Kannste machen, musste aber nich!".

----------8<-----{Vermutlich demnächst in diesem OP...}----->8----------

Die GIT-Diskussion!
Ohne VCS fällt einfach zuviel sinnfreie Doppelarbeit an.

Ich hab jetzt erst raus, daß "bstc.exe" nicht im DOS-Modus rennt, also ist "make.bat" eindeutig ein Windows-Ding.
Das wird noch in den Kommentaren angepaßt ("DOSWIN" -> "Windows"). ;-)

----------8<-----{In seinem Nudeligen Namen: Pasta und Ramen!}----->8----------
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Antworten