Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » CAOS 4.2 System-UP "PAUSE"? » Themenansicht

Autor Thread - Seiten: -1-
000
25.01.2011, 10:56 Uhr
Gast: Schnulli



Bevor ich das Rad neu erfinde, wollte ich fragen, ob sich im CAOS eine (versteckte) Warteschleife befindet, welche man "anzapfen" kann? Das hätte den Vorteil, daß man ohne Aufwand ein Programm schreiben kann, welches sich dynamisch im Speicher verschieben läßt.

Alternativ. Hat jemand eine Z80-Assembler-Routine parat, welche diese Aufgabe erfüllt und möglichst ohne statische Sprungbefehle auskommt? So einfach wie beim Z8 scheint es nicht zu sein, da "DJNZ" (laut M027-Doku) nur mit Register B funktioniert, was bei einer zweiteiligen Schleife nicht ausreicht.

Dieser Beitrag wurde am 25.01.2011 um 11:01 Uhr von schnulli editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
001
25.01.2011, 12:27 Uhr
Wusel_1



Warum soll das "DJNZ" in einer zweiteiligen Schleife mit Reg. B nicht reichen. Da musst du vorher B retten - mit Push BC und nach der inneren Schleife mit POP BC wieder "hochholen". Beispiel
PUSH BC
SL001 LD B, #12
SL002 PUSH BC
LD B,#0F
SL003 DJNZ SL003
POP BC
DJNZ SL002
POP BC
Sch.... warum bleiben die Leerzeichen nicht drin.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***

Dieser Beitrag wurde am 25.01.2011 um 14:32 Uhr von Wusel_1 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
25.01.2011, 16:02 Uhr
tp



Gibt es, siehe Systemhandbuch Kapitel 3.5. Systemschnittstellen und nutzbare CAOS-Unterprogramme:


Quellcode:
Name:...WAIT.....UP-Nr.: 14H
FKT.:           Warteschleife
PE:             A                       t = (A) * 6 ms
PA:             -
VR:             AF, B                   STACK: 2
Bemerkung:      Programmschleife arbeitet ohne Interrupt


--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
25.01.2011, 17:46 Uhr
susowa




Zitat:
schnulli schrieb
man ohne Aufwand ein Programm schreiben kann, welches sich dynamisch im Speicher verschieben läßt.

Dafür ist der UP-Verteiler auf Adresse 0F00FH gedacht, also relative Unterprogramme statt JP ... .


Zitat:
Alternativ. Hat jemand eine Z80-Assembler-Routine parat, welche diese Aufgabe erfüllt und möglichst ohne statische Sprungbefehle auskommt?

Siehe eben und JR Z,... - das erfüllt genau den gleichen Zweck wie DJNZ, hat allerdings die gleichen Beschränkungen beim erreichbaren Sprungbereich und ist ein Byte länger, da man mit DEC ... selbst nachhelfen muss.

Wenn man konsequent mit relativen UP's arbeitet, hat man keine solchen Beschränkungen.

MfG Ralf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
26.01.2011, 09:32 Uhr
Gast: Schnulli



Danke für den Tip mit "WAIT". Hat sogar einen einstellbaren Verzögerungsfaktor.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
005
27.01.2011, 09:58 Uhr
Gast: Schnulli



So, ich habe mal ein wenig herumexperimentiert. Hier das Ergebnis

Quellcode:
DEFW    7F7FH
DEFM    'TEST'
DEFB    1

CALL    0F003H
DEFB    23H
DEFM    'T'
DEFB    0

LD     A,166
CALL    0F003H
DEFB    14H
DEFB    0

CALL    0F003H
DEFB    23H
DEFM    'E'
DEFB    0

LD    A,166
CALL    0F003H
DEFB    14H
DEFB    0

CALL    0F003H
DEFB    23H
DEFM    'S'
DEFB    0

LD    A,166
CALL    0F003H
DEFB    14H
DEFB    0

CALL    0F003H
DEFB    23H
DEFM    'T'
DEFW    0D0AH
DEFB    0

RET

Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek