Seite 12 von 20

Re: HBasic

Verfasst: Do 15. Nov 2012, 09:11
von PIC18F2550
:SCHREIEN Erstmal muß ich die Runtime umbauen.
z.Z. verwende ich noch ein jmp für die Berechnung des Sprungverteilers das wird auf ein call umgestellt.
Der Rücksprung ist dann natürlich ein ret. :DAUMENHOCH
Das gibt mir die möglichkeit die Eigenen routinen in der Runtime mehrfach zu verwenden.
z.B. Laden des Bellatrixcodes. :LACHEN

Re: HBasic

Verfasst: Do 15. Nov 2012, 12:19
von PIC18F2550
Ein Thema beschäftigt mich immer noch:
wie sag ich Bellatrix und Administra das das gerade übertragene Byte das 1. byt von einer Bytfolge ist.?

ich dachte da das beim 1. Byte das /cs Signal bei clk aktiv ist und bei den nachvolgenden nicht sondern nur das clk signal wechselt.
/wr und /hs werden dabei normal weiter bedient.

in Regnatix kommt nur eine weitere Sende-Routine hinein.
in Administra und Bellatrix eine Empfangs-Routine hinzu.

das dürfte keine große mühe machen. :DAUMENHOCH

Re: HBasic

Verfasst: Do 15. Nov 2012, 17:49
von PIC18F2550
:shock: Seltsame zeichen beim Starten der Runtime?

:EIEI Das ist nicht r48 sondern r50 da wurde ein Befehl "zum laden eines neuen Treibers für Bellatrix" verschoben :LACHEN

Re: HBasic

Verfasst: Do 15. Nov 2012, 20:27
von PIC18F2550
HBasic mit HIVE-VGA-Treiber.
2012-11-15_20-14-58_588.jpg
SPIN-PASM geht

HBasic mit HVGA-Treiber in PASM
2012-11-15_20-15-19_233.jpg
leider scheind die PASM-PASM Kopplung nicht richtig zu arbeiten mal sehen woran das liegt.(es fehlt die letzte Zeile)

Re: HBasic

Verfasst: Di 20. Nov 2012, 20:47
von PIC18F2550
Ich hab mal die bus-routine zu bellatrix neu erfunden :LACHEN

Code: Alles auswählen

'---------------------------------------------------------------------
'                    +- /hs
'                    |+- /wr
'                    ||+- busclk
'                    |||+- hbeat
'                    |||| +- al
'                    |||| |+- /bel
'                    |||| ||+- /adm
'                    |||| |||+- /ram2
'                    |||| ||||+- /ram1
'                    |||| |||||           +-a0..10
'                    |||| |||||           |
'                    |||| |||||           |        +- d0..7
'                    |||| |||||+-- -------+ +------+
'port   long    %00000000_00000aaa_aaaaaaaa_dddddddd  ' a: adr, d: daten'Konstanten
_csb    long    %00000000_01000000_00000000_00000000  ' cs=1 Bellatrix
_csa    long    %00000000_00100000_00000000_00000000  ' cs=1 Administra
_hs     long    %00001000_00000000_00000000_00000000  ' hs=1
bput
                and     temp1,      #$FF    ' Daten Formatieren
                waitpeq _hs,        _hs     ' warten bis hs=1
                or      dira,       #$FF    ' P00-P07 auf ausgabe schalten
                or      outa,       temp1   ' Daten ausgeben
                andn    outa,       _csb    ' CS an Bellatrix
                waitpeq h00000000,  _hs     ' warten bis hs=0
                or      outa,       _csb    ' CS an Bellatrix deaktivieren
                waitpeq _hs,        _hs     ' warten bis hs=1
                andn    dira,       #$FF    ' P00-P07 auf eingabe schalten
bput_ret        ret
' ---------------------------------------------------------------------
Richtig der busclk ist seiner Aufgabe entbunden.
Möglich wird das weil nur Regnatix die /cs signale setzt. :LACHEN

Als nächstes ist der HVGA-Treiber tran.

Re: HBasic

Verfasst: Di 20. Nov 2012, 21:20
von PIC18F2550
So und hier das gegenstück im Bellatrix :LACHEN

Code: Alles auswählen

'       hbeat   --------+
'       clk     -------+|
'       /wr     ------+||
'       /hs     -----+||| +------------------------- /cs
'                    |||| |                 -------- d0..d7
'port   long    %00000000_00000000_00000000_dddddddd  ' a: adr, d: daten'Konstanten
_cs     long    %00000000_10000000_00000000_00000000
_hs     long    %00001000_00000000_00000000_00000000
rbus    'ein byte vom bus lesen
                waitpeq     h00000000,  _cs         ' cs = 0
                mov         temp1,      ina         ' Daten einlesen
                andn        outa,       _hs         ' Daten quittieren
                and         temp1,      #$FF        ' Daten formatieren
                waitpeq     _cs,        _cs         ' cs = 1
                or          outa,       _hs         ' Daten quittieren
rbus_ret        ret
Jetzt nur noch Testen. :mrgreen:

Re: HBasic

Verfasst: Mi 21. Nov 2012, 07:23
von PIC18F2550
Bellatrix mit M1 erkennung.
Sollte der zu erwartende 1. Befehl kein M1 sein bleibt der Bus stehen und mit einem LED-Testbord kann der aktuelle Byte auf dem Bus angesehen werden. :DAUMENHOCH

Code: Alles auswählen

'       hbeat   --------+
' M1    clk     -------+|
'       /wr     ------+||
'       /hs     -----+||| +------------------------- /cs
'                    |||| |                 -------- d0..d7
'port   long    %00000000_00000000_00000000_dddddddd  ' a: adr, d: daten'Konstanten
_cs1    long    %00000010_10000000_00000000_00000000
_cs     long    %00000000_10000000_00000000_00000000
_hs     long    %00001000_00000000_00000000_00000000


_cs1    'erstes byte vom bus lesen
                waitpeq     h00000000,  _cs1        ' cs = 0 & clk = 0
                jmp         #_cs01
rbus    'ein byte vom bus lesen
_cs
                waitpeq     h00000000,  _cs         ' cs = 0
_cs01           mov         temp1,      ina         ' Daten einlesen
                andn        outa,       _hs         ' Daten quittieren
                and         temp1,      #$FF        ' Daten formatieren
                waitpeq     _cs,        _cs         ' cs = 1
                or          outa,       _hs         ' Daten quittieren
rbus_ret        ret
drohne235 währe so etwas was für TRIOS & FORTH ? :SCHRAUBEN

Re: HBasic

Verfasst: Mi 21. Nov 2012, 07:27
von PIC18F2550
:SCHREIEN das /wr signal sollte immer mit ausgewertet werden.

Code: Alles auswählen

_cs1   ' M1-Befehl nur lesend
_cs_r
_cs_w

Re: HBasic

Verfasst: Do 22. Nov 2012, 09:09
von PIC18F2550
PIC18F2550 hat geschrieben:Erstmal muß ich die Runtime umbauen.
z.Z. verwende ich noch ein jmp für die Berechnung des Sprungverteilers das wird auf ein call umgestellt.
:SCHREIEN Das geht nicht weil ich nur ein Call habe aber mehrere ret. :evil:

Jetzt binn ich beim jmpret angekommen.

jumpret arg1, arg2

arg2 ist das ziel wo hingesprungen wird das ist schon klar (Zelle oder Marke)

arg1 ist die rückkehr adresse (wenn ich richtig gelesen habe wird diese beim jumpret gesetzt? stimmt das so?)


besser währe wenn ich arg1 selber bestimmen kann (Zelle oder Marke).

Re: HBasic

Verfasst: Do 22. Nov 2012, 12:39
von kuroneko
PIC18F2550 hat geschrieben:besser währe wenn ich arg1 selber bestimmen kann (Zelle oder Marke).
Kannst Du ja auch. jmpret a, [#]b macht zwei dinge, movs a, #$+1 und jmp [#]b. Der Assembler transformiert ein call #label auch nur in ein jmpret label_ret, #label damit ret funktioniert.