Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » CP/A » Themenansicht

Autor Thread - Seiten: -1-
000
14.12.2021, 21:43 Uhr
PIC18F2550

Avatar von PIC18F2550

Welche wert ist für CP/A der richtige?
Irgend wo hatte ich gelesen das es da einen unterschied gibt gegenüber CP/M.


Quellcode:

;BDOSA        EQU    0005H        ;CCP primary bdos entry point
BDOSA        EQU    0006H        ;BDOS address field of jmp BDOS




Gibt es eine tabelle wo der Dpeicherbereich bis 0FFH beschrieben ist?

Quellcode:

;    low memory locations
REBOOT        EQU    0000H        ;reboot system
IOLOC         EQU    0003H        ;i/o byte location
DISKA         EQU    0004H        ;disk address for current disk
;BDOSA        EQU    0005H        ;CCP primary bdos entry point
BDOSA         EQU    0006H        ;BDOS address field of jmp BDOS
CLKBCD:       EQU    0050h        ; BCD-Buffer für CLK orig 50h, z9001 1Dh
FCB           EQU    005CH        ;default file control block
COMREC:       EQU    007Ch
BUFF          EQU    0080H        ;default buffer
TRAN          EQU    0100H


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 14.12.2021 um 21:47 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
15.12.2021, 07:45 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

0005: JP
0006: BDOS

das ist allg. gültig für CP/M.

Quellen zu CP/A findest Du bei mir:
https://hc-ddr.hucki.net/wiki/doku.php/cpm/cpa

auch BDOS,CCP, zum Vergleich mit den DR-Originalen.

Page 0 wird wie im CP/M-Handbuch beschrieben genutzt, undokumentierte Adressen können vom BIOS frei genutzt werden, in Anwenderprogrammen sind diese Adressbereiche tabu.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
15.12.2021, 10:22 Uhr
Bert




Zitat:

;BDOSA EQU 0005H ;CCP primary bdos entry point
BDOSA EQU 0006H ;BDOS address field of jmp BDOS


Meines Erachtens schließt sich das nicht aus.
Auf Adresse steht 5 steht ein JP xxyy. Damit sieht es im RAM so aus:

Quellcode:

0005: C3
0006: yy
0007: xx


Also steht auf Adresse 6 die Adresse vom Einsprungpunkt und wenn ich eine BDOS-Funktion nutzen möchte, mache ich ein CALL 5.

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
15.12.2021, 10:48 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

das hab ich ja auch geschrieben. du musst dich nur entscheiden, was Du unter "BDOSA" ansprechen willst :-)

Vom Namen her klingt BDOSA wie BDOS-Adresse, damit Adresse 0006. Details müsstest Du aus Deinem Quelltxt entnehmen.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 15.12.2021 um 10:48 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
15.12.2021, 16:35 Uhr
PIC18F2550

Avatar von PIC18F2550

Ich hab mal in ccp_cpa2 und bdos_cpa2 geschaut.

In ccp heist es: BDOSA EQU 0005H ;primary bdos entry point.
Es wird C3 nnnn auf 0005H angesprungen.

Was mich irritiert ist das bis auf eine Stelle alles CALL aufrufe sind.
delete:
ld c, DELF
bdos_jmp: jp BDOSA
;
renamecom:



In bdos heist es : BDOSA EQU 0006H ;address field of jmp BDOS.
Beim Suchen im Quelltext konnte ich es nicht finden ... eine EQU Leiche?

Na dann ist es ja Ok bis auf den einen Jmp?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
15.12.2021, 17:08 Uhr
jde

Avatar von jde

Durch den JP hat der sparsame Programmierer 1 Byte gespart.

Dabei wird das RET aus dem anderen Programmteil benutzt.
Man hätte kompliziert scheiben können:
LD C, DELF
CALL BDOSA
RET

oder um 1 Byte Kürzer mit der Gleichen Wirkung
LD C, DELF
JP BDOSA

Das RET ist in einem Fall wenn es direkt nach einen CALL folgt unnötig.

Also alle CALL xxxx denen direkt danach ein RET folgt, ersetzt ein sparsamer Programmierer durch JP xxxx ohne RET.

Gruß
Jonny

Dieser Beitrag wurde am 15.12.2021 um 17:11 Uhr von jde editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
15.12.2021, 18:18 Uhr
PIC18F2550

Avatar von PIC18F2550

Ok das könnte stimmen.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

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