Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: corado on 28. October 2016, 16:35:02

Title: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: corado on 28. October 2016, 16:35:02
Sind direkte Zugriffe möglich oder geht das nur mit ASM?
Und geht ASM direkt im Basic oder nur im CP/M?
Gibts irgendwo Beispiele?
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: Gelöschter User on 29. October 2016, 08:15:56
Direkte Zugriffe möglich: Nein, geht nur mit ASM.
ASM direkt in Basic: Nein, ganz direkt nicht, nur in der Form, bsp.:
   ; lade das "A"-Register mit 255    (ASM:  "LD A,&FF")
   poke &4000,&3e
   poke &4001,&FF
   ; Zurück zu BASIC
   poke &4002,&C9                         (ASM: "RET")
   und Start: call &4000

Aber wo willst Du hin mit Deiner Frage?
Im Beispiel hast Du das CPU-Register "A" vom Wert geändert, es passiert in dem Beispiel aber nichts.
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: TFM on 31. October 2016, 16:52:30
Für das native CPC-OS und FutureOS würde ich Dir den Maxam Assembler empfehlen. Die ROM Version ist hier von Vorteil, die Disketten Version ist aber auch gut nutzbar (nur etwas weniger RAM ist hald frei). Da Maxam z.B. Anweisungen wie READ"Source" bietet kann man damit beliebig große Sources assemblieren. Nun, der schnellste ist er leider nicht.

Für CP/M Plus empfehle ich den Maxam II (Ziele können alle OS sein). Er hat zusätzlich auch noch Makos und alles mögliche. Ist praktisch eine Entwicklingsumgebung.

Vor kurzem kam Orgams auf den CPC Markt, ein neuer schneller Assembler, aber komplett ROM basiert. Was aber beim geringem Preis der X-MEM kaum interessieren sollte.

Falls Google nicht hilft kann ich ja irgendweleche Links posten. Kommt drauf an was Du genau brauchst.

So und nun Viel Spass beim Assemblieren!  :)
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: corado on 17. November 2016, 09:46:47
ich würde halt gerne zu Bastelzwecken direkt auf die Schnittstellen bzw Register zugreifen wollen.
Aber bis das System mal so läuft..nervt es etwas :-(
Wenn mein Datentransfer mal endlich klappen würde, könnte ich mit auf Turbo PAscal stürzen..aber...
Habe jetzt 3" Disketten, ein 3,5" Floppy für CPC und PC und eine....3,5" Diskette
Es wäre halt super, wenn man entweder einfach über den Tape Eingang direkt Dateien vom PC auf die 3" Disketten kopieren könnte oder unter Windows einfach die Dateien auf die 3,5" Disketten kopieren könnte...was dann aber wieder nichts bringt..da ich unter BAsic nichts von einem Laufwerk auf das andere kopieren kann...
Sehe ich das richtig, das ich unter BAsic nicht mal Dateien löschen kann? Keine Ahnung ob ich das damals immer unter PC/M gemacht habe?!
War bislang zu faul mal ins HAndbuch zu schauen...
Es ist halt etwas nervig, wenn man einfach nur mal etwas in die alte Zeit zurück will..aber nichts so klappt wie damals...denn natürlich will ich schlussendlich mit den 3" Disketten arbeiten (habe hier 5 formatierte liegen)
Am einfachsten wäre es..wie früher....sich  einfach treffen und die Disketten direkt zu kopieren oder zu tauschen haha
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: corado on 17. November 2016, 09:50:32
ah :-)
HAbe dazu gerade eine andere Frage gefunden :-)
https://cpcwiki.de/forum/index.php/topic,411.0.html

"Die einzelnen Bits des Drucker Ports kann man einzeln aus und einschalten wenn man unter BASIC folgendes tut:

z.B.

OUT &EF00,&04

schaltet das 3. Bit ein.


Achtung: Das 8. Bit ist mit Strobe verbunden."
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: slartibartfast on 17. November 2016, 20:48:45
Hallo corado,

Tapes auf dem PC einlesen ist an sich schon möglich, nur ist das Schreiben auf Disketten etwas schwierig ... (viele PCs haben heute ja kein Floppy-Anschluss mehr).
Ja, der physische Austausch fehlt. Ich war noch nie auf einer CPC-Party. Vielleicht findet sich ja mal eine Gelegenheit.

Zum Problem: Tapes auf dem PC einlesen sollte gut gehen (hab ich selber noch nie gemacht).
Eine 3"-Floppy am PC anschliessen ist etwas schwieriger (Ich habe dazu schon einen Artikel gesehen - Wahrscheinlich im CPCWiki).
Mit entsprechendem Treiber, passendem Windows (XP) und evtl. einem CPC Emulator könnte das sogar funktionieren. Direkt am CPC ist das aber wahrscheinlich noch am Einfachsten. Discology ist da immer recht hilfreich gewesen.

Gruß,

slarti
Title: Re: Direkter Zugrif auf die CPU Register über Basic möglich?
Post by: TFM on 18. November 2016, 18:20:18
Naja, die Portadressen kann man ja mit OUT &XXXX,XX bzw a=INP(&XXXX) bearbeiten.

Ob es überhaupt Sinn macht die Z80 CPU Register in BASIC zu lesen / schreiben sei dahingestellt, da ja jeder BASIC Befehl die Register sowieso wieder verändert.