PASM Bootloader

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!

Braucht der HIVE einen PASM Bootloader?

Umfrage endete am Fr 20. Sep 2013, 21:02

nein der SPINN-Loader reicht vollkommen aus
1
33%
Ja es wird Zeit
2
67%
Ist mir Wurscht.
0
Keine Stimmen
 
Insgesamt abgegebene Stimmen: 3

Benutzeravatar
PIC18F2550
Beiträge: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

deleted new Code:kleine correkturen und ein paar longs eingespart.
Zuletzt geändert von PIC18F2550 am Di 17. Sep 2013, 21:51, insgesamt 2-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
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: PASM Bootloader

Beitrag von kuroneko »

PIC18F2550 hat geschrieben:
kuroneko hat geschrieben:Wieviele cogs schaltet Dein Code dann ab?
alle auser sich selbst.
Wunschdenken :)
PIC18F2550 hat geschrieben:par Zeiger wert muß der in long oder byte sein
par ist immer long, man hat ja nur 14bit zur Verfuegung, die unteren beiden bits werden als 0 betrachtet (4n).
PIC18F2550 hat geschrieben:COGID von 0 - 7? weil 8 bit freigehalten werden :shock: ist doch irgendwie 1 Bit zuviel oder habe ich was übersehen.
Ist doch wirklich nicht so schwer. 2x14bit gehen fuer die Adressen drauf. Bleiben 4bit. Bit 3 = 1 heisst cognew (next free ID), die unteren 3bit sind dann egal (%1---). Laesst Du bit 3 auf 0 dann werden die unteren 3bit als cogid interpretiert (%0ccc, coginit, explicit ID).
PIC18F2550 hat geschrieben:mit dem syntax binn ich immer noch am kämpfen :(
mov reg_a, $4 'direktwert in reg_a schreiben
mov reg_a, #$4 'inhalt des in long $4 enthaltenden wertes laden
mov reg_a, @wert 'adresse wo wert gespeichert ist laden (0-1FF)direktwert
Vergiss @ in PASM (allgemein in DAT). Das gibt Dir nur das relative Offset im aktuellen Object. In SPIN kriegst Du was Du erwartest (absolute hub address). Muss man wissen, dafuer hat bst dann @@@. Und die ersten beiden Varianten funktionieren genau andersherum.

Code: Alles auswählen

DAT             org     0

entry           cogid   $ nr                    ' $000  $0C7C0001
                mov     a, #0                   ' $001  a := 0
                mov     a, 0                    ' $002  a := $0C7C0001
                mov     a, entry                ' $003  a := $0C7C0001

a               res     1
Benutzeravatar
PIC18F2550
Beiträge: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

Ooook :oops:

da mach ich mich mal an die Arbeit meinen Mist zu korrigieren.

cognew (next free ID) ist genau richtig und das was ich suche.
Muß PAR $0001 beim start des Interpreters was übergeben werden? ich denke ja was steckt im 2. long vom hRAM eigendlich drinn.

interpreter long $0001 << 18 + $3C01 << 4 + %1000

mov reg_a, #$4 'direktwert in reg_a schreiben
mov reg_a, $4 'inhalt des in long $4 enthaltenden wertes laden
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: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

Damit kann ich jetzt mein Zeigerfeld erzeugen.

Code: Alles auswählen

MEL_01Z     long  @@@MEL_01 /4-@@@MEL_01Z/4+1
ERRLIST     long  @@@ERRT_01/4-@@@MEL_01Z/4+1
            long  @@@ERRT_02/4-@@@MEL_01Z/4+1
            long  @@@ERRT_03/4-@@@MEL_01Z/4+1
...
:D

Die Texte müssten dazu auf long Grenzen verschoben werden.

Alles ist relativ auch der WAHNSINN.

Danke kuroneko jetzt entsteht auch das richtige compilerlisting. :DAUMENHOCH
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: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

so das ist der heutige Stand file deleted @kuroneko ist der Teil mit dem cogstop richtig?
Zuletzt geändert von PIC18F2550 am Mi 18. Sep 2013, 15:55, 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
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: PASM Bootloader

Beitrag von kuroneko »

PIC18F2550 hat geschrieben:Muß PAR $0001 beim start des Interpreters was übergeben werden? ich denke ja was steckt im 2. long vom hRAM eigendlich drinn.
Schau Dir mal den Einsprung Code des Interpreters an. Es werden 5 words beginnend ab Adresse 6 geladen (long[0] == clkfreq, byte[4] == clkmode, byte[5] == checksum).

Code: Alles auswählen

' initial parameters
'
'       par     word
'       -----------------
'       +2      pbase
'       +4      vbase
'       +6      dbase
'       +8      pcurr
'       +A      dcurr
'
' Entry
'
DAT                     org

                        mov     x,#$1F0-pbase           'entry, load initial parameters
                        mov     y,par
:loop                   add     y,#2
:par                    rdword  pbase,y
                        add     :par,#$100              'inc d lsb
                        add     :par,#$100
                        djnz    x,#:loop
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: PASM Bootloader

Beitrag von kuroneko »

PIC18F2550 hat geschrieben:@kuroneko ist der Teil mit dem cogstop richtig?
Nicht ganz. Wenn Du eine djnz Schleife bastelst und N Dein Index ist dann "sieht" die Schleife nur N..1. Wie willst dann jemals cog 0 loswerden?

Code: Alles auswählen

                mov     ccnt, #7                ' seven contenders
                cogid   this                    ' and us
                or      spin, this              ' remember for restart
                add     them, #1                ' everyone but us
                cogstop them                    ' sayonara ...
                djnz    ccnt, #$-2              ' to all of them
                
                coginit spin                    ' launch SPIN interpreter

' initialised data and/or presets

spin            long    $0004 << 16 | $F004 << 2 | %0000

' uninitialised data and/or temporaries
                                                
ccnt            res     1                       ' cog shutdown loop index
this                                            ' our cog ID
them            res     1                       ' and our contenders
Die dritte Zeile kannst/musst Du weglassen da Dein loader erhalten bleiben soll.
Benutzeravatar
PIC18F2550
Beiträge: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

Frage:

wenn ich ein eeprom-file ab adresse 0 in den lRam lade sind doch da die Werte pbase, vbase, dbase, pcurr und dcurr gesetzt?

Dann muss ich doch nur noch einen beliebigen freien COG mit

Code: Alles auswählen

                coginit spin

spin            long    $0004 << 16 | $F004 << 2 | %1000
starten.

Oder lieg ich hier vollkommen Falsch.
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
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: PASM Bootloader

Beitrag von kuroneko »

PIC18F2550 hat geschrieben:Frage:

wenn ich ein eeprom-file ab adresse 0 in den lRam lade sind doch da die Werte pbase, vbase, dbase, pcurr und dcurr gesetzt?

Dann muss ich doch nur noch einen beliebigen freien COG ... starten.

Oder lieg ich hier vollkommen Falsch.
Noe, EEPROM oder BINARY Files haben diese 5 Werte schon vorbereitet (einfach zu sehen im PropTool mit F8, in bst etwas weniger offensichtlich). Fuer letzteres musst Du aber die Marker setzen und VAR loeschen. Und beim EEPROM File vielleicht Adresse $7FFC ausklammern (vom Loader genutzt).
Benutzeravatar
PIC18F2550
Beiträge: 2851
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM Bootloader

Beitrag von PIC18F2550 »

Spinnteil mit Grundgerüst erweitert.
Bellatrixloader fehlt immer noch:(
datei deledet

@kuroneko

$7FFC kann ruhig überschieben werden da der Wert nach dem laden von regnatix neu vom loader gesetzt wird.
Der COG vom Spinninterpreter ist da noch beim laden also Entwarnung.

Was meinst Du mit "Marker setzen und VAR loeschen"? :oops:
Zuletzt geändert von PIC18F2550 am Do 19. Sep 2013, 11:01, 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