Seite 12 von 20
Re: HBasic
Verfasst: Do 15. Nov 2012, 09:11
von PIC18F2550

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.
Das gibt mir die möglichkeit die Eigenen routinen in der Runtime mehrfach zu verwenden.
z.B. Laden des Bellatrixcodes.

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.

Re: HBasic
Verfasst: Do 15. Nov 2012, 17:49
von PIC18F2550

Seltsame zeichen beim Starten der Runtime?

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

Re: HBasic
Verfasst: Do 15. Nov 2012, 20:27
von PIC18F2550
HBasic mit HIVE-VGA-Treiber.
SPIN-PASM geht
HBasic mit HVGA-Treiber in PASM
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
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.
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
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.

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.
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 ?

Re: HBasic
Verfasst: Mi 21. Nov 2012, 07:27
von PIC18F2550

das /wr signal sollte immer mit ausgewertet werden.
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.

Das geht nicht weil ich nur ein Call habe aber mehrere ret.
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.