Wäre das möglich? Was wäre zu tun?
1. Es würde ein Adapter für den Erweiterungs-Port gebraucht werden (das ist machbar). Siehe Anhang.
2. Es müssten von 16 Bit I/O (CPC) auf Bit I/O umgestellt werden. Der CPC nutzt &FBEE für den LS, der PcW Port &EE ... wird NICHT benutzt, siehe hier: https://www.chiark.greenend.org.uk/~jacobn/cpm/pcwports.html
Könnten wir den LambdaSpeak FS bald auch am PcW nutzen?
Wenn das umgesetzt werden kann, da wäre ich interessiert :)
Quote from: TFM on 11. June 2022, 19:02:19
2. Es müssten von 16 Bit I/O (CPC) auf Bit I/O umgestellt werden. Der CPC nutzt &FBEE für den LS, der PcW Port &EE ... wird NICHT benutzt, siehe hier: https://www.chiark.greenend.org.uk/~jacobn/cpm/pcwports.html
Werden am PCW die oberen 8 Bit der Portadressen nicht ohnehin ignoriert? Dann würde &FBEE passen.
Am PcW schon, aber bei CPC Erweiterungen werden 16 Bit dekodiert (und wenn auch manchmal weniger, so in jedem Falle doch einige der High-Bits).
Um die Software würde ich mich kümmern, aber den Adapter (wohl machbar) müsste sich jemand anders kümmern.
@LambdaMikel: Hättest Du Lust dazu?
Ich würde auch die Adapterplatine machen können. Welche Kontakte werden benötigt abgesehen von den D , A, 5V, OV ?
Adressen- und Datenbits, Sound und alles andere müsste ich auf GitHub finden lassen.
Aber ich bin mir sicher Michael kann das viel besser erklären :-)
https://github.com/lambdamikel/LambdaSpeak-FS
Man müsste den LS wohl so beschalten, dass er als Highbyte immer &FB 'sieht', falls der PcW beim I/O nur die unteren 8 Adressbits liefert. Aber das wissen die Hardware-Leute besser.
Denke das müsste so passen, mehr Verbindungen braucht es nicht. So wären die Kontakte überschaubar.
Interessante Idee - ich habe leider keinen Joyce / PCW.
Die verwendeten Signale vom CPC Exp.-Bus sind in der Grafik zu ersehen.
Ansonsten ist ja alles Software - die IO-Addressen können also einfach geändert werden:
https://github.com/lambdamikel/LambdaSpeak-FS/blob/master/firmware/ls195/gal22v10/ls195-address-decoder-U1.PLD
Ob SSA1, Dktronics Emulation, oder Amdrum ("Digitracker"?) Sinn machen am Joyce, kann ich nicht beurteilen (die Software gibt es ja nicht)
Native Epson / DecTalk, RTC, MP3, Serial Interface wohl schon.
Leider ist der Versand zu Dir nicht gerade billig, sonst hätte ich Dir einen meiner Umbauten geschickt :)
Du meinst mich? Lieb von Dir, aber ich habe ja ohnehin keinen Joyce :-) Also, viel Spaß beim Umbauen - freue mich auf das Ergebnis!
Gut, meine Idee was es den LS mittels einer Adapter-Platine (bzw. Stecker und Buchse) and die Joyce anzuschließen. Dabei wird am LS nichts verändert, so dass er nach wie vor am CPC genutzt werden kann.
Es würde sich anbieten folgenden Adapter zum bauen: Der Expansion-Port des PcW wird durchgeschleift. Und zusätzlich enthält er einen MX4 Port in den der LambdaSpeak eingesteckt werden kann.
Zum Thema Software: Darum würde ich mich kümmern.
Was brauchts?
Jemanden der Lust hat einen Prototypen des oben beschriebenen Adapters zu planen bzw. zu bauen.
Testen könnte ich das ganze bei mir zu Hause.
Zum Thema High Byte: wenn das obere Byte egal ist (also A8 bis A15 ignoriert werden), kann man die ja einfach aus den PAL Gleichungen entfernen.
Also, z.B. ändern von
SSA1 = adr15 & adr14 & adr13 & adr12 &
adr11 & !adr10 & adr9 &
adr7 & adr6 & adr5 & !adr4 &
adr3 & adr2 & adr1 & !adr0 & ! AMDRUM_ENABLE ;
in
SSA1 =
adr7 & adr6 & adr5 & !adr4 &
adr3 & adr2 & adr1 & !adr0 & ! AMDRUM_ENABLE ;
usw, und analog für DK und AMDRUM Gleichungen. Ich kann gerne ein entsprechendes JED File erstellen, aber Ihr könnt das auch selbst - einfach WinCUPL runterladen, ist umsonst ;)
Falls
// fbee = 1111 1011 1110 1110 and ! AMDRUM_ENABLE
// faee = 1111 1010 1110 1110
prinzipiell OK sind, kann man ja sonst auch auf dem Adapter einfach die oberen 8 Bits entsprechend auf 5V (aber mit 10 K Widerstand bitte) bzw. GND ziehen (und so dass es der Joyce nicht sieht, also A8 bis A15 nicht an den Joyce durchführen!), dann sollte das auch ohne GAL-Firmware-Änderung gehen.
Quote from: LambdaMikel on 14. June 2022, 16:46:09
Zum Thema High Byte: wenn das obere Byte egal ist (also A8 bis A15 ignoriert werden), kann man die ja einfach aus den PAL Gleichungen entfernen.
Wenn das Highbyte vom restlichen PCW und allen anderen Erweiterungen ignoriert wird kann man es doch auch unverändert mitsenden?
Quote from: TFM on 14. June 2022, 14:51:57
Gut, meine Idee was es den LS mittels einer Adapter-Platine (bzw. Stecker und Buchse) and die Joyce anzuschließen. Dabei wird am LS nichts verändert, so dass er nach wie vor am CPC genutzt werden kann.
Es würde sich anbieten folgenden Adapter zum bauen: Der Expansion-Port des PcW wird durchgeschleift. Und zusätzlich enthält er einen MX4 Port in den der LambdaSpeak eingesteckt werden kann.
Zum Thema Software: Darum würde ich mich kümmern.
Was brauchts?
Jemanden der Lust hat einen Prototypen des oben beschriebenen Adapters zu planen bzw. zu bauen.
Testen könnte ich das ganze bei mir zu Hause.
Ich habe mir schon alle Infos zusammen gesucht das ich den Adapter dann anfertigen kann. Wie Du schon geschrieben hast, einfach die Pins so auflegen das man ohne eine Änderung die bestehende Karte schließen kann. Hoffe das ich diese Woche noch diese Zeichnen kann. Die Platinen werde dann noch etwa 14 Tage brauchen wenn ich sie bestellt habe. Dann wäre der Prototyp (en) in etw 4 Wochen auf deinen Tisch :-).
Hoho! Feine Sache! Schließ Dich aber auch gerne noch - wenn Du willst - mit dem Michael per PM kurz, sobald der 'Schaltplan' steht. Sicher ist sicher.
Vor allem ist mir selber noch ein Detail nicht klar:
- Schicke ich vom PcW aus Daten an den 16 Bit I/O Bereich. Also liegen beim PcW auch alle 16 Adressbits am Expansion-Port an. Oder...
- Müssen die 8 höherwertigen Bits für dem LS auf &FB gesetzt werden - durch den Adapter?
Ok, noch eine Frage:
Verwendet der LS den WAIT Eingang um die Z80 anzuhalten? (So weit ich mich erinnere: ja). Wie macht man das beim PcW?
Das hätte ich sowieso gemacht den Michael drüber schauen lassen, Fehlerteufel schleicht sich doch immer ein :)
Bzgl wait / z80_ready - ich gucke gerade mal in den Sourcecode. Ja, wird verwendet... aber nur in "Ausnahmesituationen". S. z80_halt macro im C source.
Der Joyce hat /wait signal wenn ich das richtig sehe.
Also wenn der Joyce nur 8 bit sendet, muss der Adapter die obern "fb" bereit stellen. Sonst müsstet ihr halt den GAL Adressdekodierer umprogrammieren so dass es ihm egal ist, wie gesagt.
Ich habe schon mal eine Platine gezeichnet und muss sie aber noch richtig überprüfen. Zusätzlich habe ich den Videoausgang dazu gebaut , so kann man einen zweiten Monitor anschließen. Dazu noch die Verbindungen Joyce->CPC Signale.
Super!
Von Prodatron weiß ich jetzt (Danke!) dass auch der PcW beim I/O alle 16 Address-Bits auf den Bus legt. Wir müssen also am PcW für den LS nicht extra irgendein High-Byte generieren.
Super, der LS kann mittels Adapter-Platine direkt am PcW angeschlossen werden. :smiley027:
Hier was Prodi geschrieben hat:
Yes.We are using #B0 for the lower 8bit part of the I/O port for connecting MSX hardware like the Graphics9000 to the PCW. It is then addressed with the higher 8bit part of the I/O port, which makes it possible to use the whole port range of the MSX (like on the CPC+Amsdap with #FFxx).#xxB0 is ignored by existing internal/external PCW hardware (suggestion by Habi, already realised and tested by Gflorez with the G9K).
Quote from: AndiCPC on 15. June 2022, 13:08:19
Ich habe schon mal eine Platine gezeichnet und muss sie aber noch richtig überprüfen. Zusätzlich habe ich den Videoausgang dazu gebaut , so kann man einen zweiten Monitor anschließen. Dazu noch die Verbindungen Joyce->CPC Signale.
Falls du so einen Prototypen hast, dann sollten die CP/M Programme '
SP.COM' und '
LS-TIME.COM' von der Disk für den CPC bereits auch auf der Joyce funktionieren.
einfach mal:
SP Hello World ausprobieren :)
Jetzt müssen wir 2 Wochen warten, dann müssten die Platinen kommen. Ich habe zwei verschiedene bestellt. Einmal so wie vorgestellt (etwas noch geändert) mit Videoausgang und eine ohne aber die benötigten Kontakte für den Videoumbau nach außen gelegt.
Die Zeit vergeht und jetzt konnte ich endlich mal weiter machen. Leider sind die I/O falsch (oben ist unten und unten ist oben). Daher muss ich die Platine neu machen. Auch kein Beinbruch, da sowieso die Lötpunkte für den Sockel zu klein sind und ich die aufbohren musste. Die 5V passen da bin ich schon mal erleichtert. Es lässt sich schon erahnen wenn das Teil funktioniert :-).
Super, dass DU dran bleibst!!! :jubelaola:
Also die neue Platine ist da und schon getestet. Ansteuern würde er den Talk aber der redet leider nicht das was ich schreibe. Hört sich an wie beim ersten Start. Genau genommen wenn man den Reset Taster an der Platine betätigt oder einfach nur "SP" eingibt, dann kommt der selbe Text. Jetzt bin ich kein Programmierer was das betrifft, kann man irgendwie per Basic oder so was testen um zu sehen was nicht passt oder angepasst werden muss ? Ich muss dazu sagen das ich die "Speak 1.95" benutze. Die "FS" habe ich zwar ausprobiert macht aber keinen Ton, Jumperstellung ?
Wenn man "LS-TIME" ausführt kommt "Error : Illegal TIMEROM+ setting" (mit der FS) bei der Speak 1.95 sagt er (logisch) nicht gefunden.
Das TimeROM gibt's nicht am PCW. Das Programm aber liest von beiden Uhren, wenn möglich.
Die RTC is auch nur im LambdaSpeak FS vorhanden (nicht im 1.x oder 2.x) also ist das LS-TIME.COM mit dem 1,95 nicht nutzbar. Es sollte am CPC mit LS3 und FS laufen.
Die Jumperstellung muss am PCW wohl so eingestellt sein, dass kein Sound in den Computer zurückgeleitet wird. Sound-rückleitung geht nur am CPC.
An den LambdaSpeak am PCW muss dann also direkt eine Stereoanlage / Verstärker / Aktivboxen etc. angeschlossen werden. Also an den Sound-Ausgang des LS.
Egal, schick einfach mal das Byte &C8 and den Port &FBEE.
Im CPC BASIC wäre das: OUT &FBEE,&C8
Beim PCW wäre es wohl OUT &EE,&C8 oder so, hängt vom BASIC und seinen Befehlen ab.
Die Sprachmodis lassen sich ja so einstellen (hier der LS3):
https://github.com/lambdamikel/LambdaSpeak3
Die Seite vom LFS ist weniger ausführlich.
Aber Achtung am 1.95 am besten nur die Sprach-Sachen machen.
Viel Glück! :smiley027: :smiley027: :smiley027:
Ich habe meine kleine Aktivbox direkt an dem Speak Modul angeschlossen. Bei der Speak 1.95 kommt ja nur der eine Text, als würde bei jedem senden ein Reset ausgeführt werden. Die FS Version macht nichts (keinen Ton) aber die LEDs arbeiten. Nicht das ich das falsch verstehe, mit mit Befehl "SP ...." wir das Speak Modul angesteuert und nicht der SP0256 oder ? Werde aber das andere noch ausprobieren. Das mit dem Time , klar die 1.95 kann nicht gehen, aber die FS sollte was machen. Wie schon geschrieben, kommt da dann die Fehlermeldung.
Beim FS muß eventuell der Epson Modus eingeschalten werden. (Ein Code Byte senden: &EF). Dann sollte SP.COM funktionieren.
Du kannst auch testen, ob alle Bits richtig beim LS ankommen:
- Zuerst Byte &F0 an &FBEE (PcW: Port &EE) senden
- das folgende Byte wird von der LED-Bar gezeigt.
Beispiele (vom CPC):
- Senden von &F0, dann &FF - alles LEDs sind an
- Senden von &F0, dann &55 - vier der acht LEDs sind an
- Senden von &F0, dann &AA - die anderen vier der acht LEDs sind an
Heute schaffe ich es nicht mehr , werde ich morgen in Ruhe alles testen. Aber schon mal Danke für die Unterstützung.
Irgendwie will da gar nichts leuchten. Ich habe folgendes gemacht :
Erst mal alle Ports auf Ausgabe
OUT &HA7, &H80
Dann einzeln die Ports angesprochen beginn mit Port A dann B und dann C auf 0 dann auf 1
OUT &HA4,&H00
OUT &HA4,&HFF
Das habe ich mit &HA5 und &HA6 auch gemacht, aber die dritte LED von links leuchtet durch die DIP Schalter immer. Wenn ich die DIP Schalter auf OFF setze dann logisch sind alle aus. Mehr als Ports setzen kann ich nicht oder muss da noch ein BIT gesetzt werden ?
Wieso gehst Du nicht über Port &EE? Beim CPC wird der LS via Port &FBEE angesprochen. Da frage ich jetzt nur, weil ich nicht weiß wie der LS am PCW von Dir angesprochen wird. :)
Wenn alles 1:1 verdrahtet ist, dann könntest Du doch direkt Port &FBEE nehmen.
Was meint @LambdaMikel dazu?
Kannst Du folgendes MC Programm mal testen:
LD BC,&FBEE
LD DE,&F055
OUT (C),D
OUT (C),E
xxx jp xxx
Entweder ist stelle mich blöd oder keine Ahnung. Das mit dem MC Code haut irgendwie nicht hin. Ich habe mit "ED test.asm" eine Datei angelegt oder besser gestartet. Da ist mir aufgefallen das mein Laufwerk immer sagt das die Disc schreibgeschützt ist. Ist zwar nicht der Fall, aber das schaue ich später. Nun dann kommt "*" und ich kann was eingeben. Wenn ich dann "ld bc,fbee" eingebe akzeptiert er das nicht. Wenn ich das richtig verstehe ist FB00 ein Word und mit Basic kann man kein Word ansprechen. Der Befehl OUTW existiert nicht beim CP/M Mallard Basic. Unabhängig davon schaue ich nochmal meine Platine an, was mich etwas verwirrt, wenn ich beim Basic mit "System" raus gehe wird wieder so ein Reset durchgeführt und auch wenn ich links oben den Pfeil betätige passiert das selbe. Aber was mich noch beschäftigt, wieso tut der Talk mit der 1.95 Karte was und mit der FS nicht? So ganz stimmt das nicht, die LED geht aus und wieder an von der 8 LED Balken. Jetzt erst mal die Verbindungen anschauen, nochmal checken ob ich da kein Fehler gemacht habe.
Das hätte ich mir einfacher vorgestellt , aber einfach kann ja jeder :-).
Kann gut sein dass der 1.95 und der FS in verschiedenen Sprachmodis starten. Den 1.95 hab ich nicht.
Bei FS startet er im Amdrum Modus wimre.
Wie macht Deine Adapter-Platine das mit den Ports? Wird die I/O Portadresse geändert, oder ist das eine 1:1 Verbindung der 16 Adressbits?
Die Platine macht nur da der CPC die I/O anders belegt hat eine Änderung auf die I/O vom Joyce. Aber ich habe etwas nachgelesene und da würde der Expansion Port auf Adresse 80h-EFh sein. Aber das beschreiben auf 80h hatte auch kein Erfolg.
Das habe ich im Internet so gefunden:
The standard interfaces on the processor board occupy I/O channels on the Z80 as follows:
ADDRESS OUTPUT USE INPUT USE
======= ========== =========
00h **Do Not Use** Floppy Disc Status
01h Floppy Disc Data Floppy Disc Data
02h-7Fh **Do Not Use** **Do Not Use**
80h-EFh Expansion Port Expansion Port
F0h 0000h-3FFFh Mem. Map **Do Not Use**
F1h 4000h-7FFFh Mem. Map **Do Not Use**
F2h 8000h-BFFFh Mem. Map **Do Not Use**
F3h C000h-FFFFh Mem. Map **Do Not Use**
F4h Mem. Map R/W Control Timer Interrupt Counter
F5h VDU Pointer Table Addr. **Do Not Use**
F6h VDU Pointer Top Scan **Do Not Use**
F7h VDU Video Control **Do Not Use**
F8h System Control System Status
F9h **Do Not Use** UART Status (Prototype)
FAh **No Effect** **Undefined**
FBh **No Effect** **Undefined**
FCh Printer Data Printer Data
FDh Printer Commands Printer Status
FEh UART Data (Prototype) UART Data (Prototype)
FFh **Do Not Use** **Do Not Use**
Expansion port peripherals must decode their I/O addresses on A0 to A7. Expansion port I/O channels in the address range E0h to EFh are reserved as follows:
ADDR. A0-A7 USE
=========== ===
E0h-E7h Reserved for Communications Interface
E8h-EFh Reserved for External Printer Interface
Der Bereich E0-EF ist scheinbar schon reserviert.
Reserviert anscheinend. Genutzt aber nicht! :)
Es gibt heute wohl nur wenige Leute die einen zusätzlichen externen Drucker haben, der diesen Port auch noch nutzt. Wenn dann eher über das serielle Interface.
Habe das schon etwas recherchiert, das Low-Byte &EE scheint frei zu sein.
Also kann man am PCW sicher den Port &FBEE nutzen, so wie am CPC. :) :)
Jetzt weiß ich aber immer noch nicht was Dein Adapter/Interface macht. ;)
Der Adapter macht nur die Joyce I/O auf Stand CPC I/O. Da die Schnittstelle CPC und Joyce leider nicht identisch sind. Alle I/O's die es beim CPC gibt und beim Joyce habe ich verbunden. Ich habe nochmals die Platine gecheckt, also die erste die ich meinte die falsch ist ist richtig und die neue ist falsch. Ich verwende derzeit CP/M 1.4 auf dem Joyce liegt es vielleicht an dem (gehe zwar nicht davon aus) ? Die Nachricht mit den Ports a,b,c ist was anderes , man kann ja an die Schnittstelle einen 8255er anschließen und damit hat man dann so die Ports, also gehört nicht dazu. Leider habe ich nächste Woche keine Zeit , erst wieder am Wochenende. Aber das Thema werde ich schon fertig machen , weil jetzt will ich es wissen warum es nicht so hinhaut wie ich will.
Alles klar, es ist 1:1 verbunden - Gut! :)
Ja, mach mal die Woche Pause, manchmal hilft es etwas Abstand zu bekommen. Ist bei mir auch so, manchmal sieht mal den Wald vor Bäumen nicht.
Bin zwar keine CP/M Programmierer, aber ich werde mal versuchen ein kleines Programm zum schreiben, zum Testen der Adapter-Karte mit dem LambdaSpeak FS.
Das wäre ja gelacht, wenn wir das nicht hinbekommen. :smiley027:
Nochmal überprüft und jetzt weiß ich wo der Fehler ist. Ich habe mich hauptsächlich auf die A15-A0 und D7-D0 fixiert bei der neuen Platine. Und die sind richtig nur dann die restlichen wie M1 und so da habe ich oben mit unten vertauscht. Zum testen müsste ich wissen welche Anschlüsse den noch richtig sein müssten. Da hätte ich einige zur Auswahl -> BUSRQ,BUSAK,RD,M1,INT,Warte, MREQ, IORQ. Den dann würde ich einfach mal auf der Platine das ändern (Bahn auf machen und mit einem Draht anderes verbinden).
Genau genommen kann ich nur RD,IORQ,WR noch verbinden. Beim Joyce gibt es kein READY und den RESET und keinen BUS RESET.
Ich habe jetzt all das angeschlossen was da war. Und eines ist jetzt besser, der Reset wird nicht mehr durchgeführt. Aber je mehr ich lese und teste kommt mir langsam der Gedanke das es nicht funktioniert. Ich habe zum testen einfach alle Adressen (was natürlich auch zu einem Problem führt) auf "1" gesetzt. Außer das dann der PCW streikt (Adresse die man nicht einfach beschreiben sollte) hat sich nichts getan. Die Adressen bin ich mit einer FOR Schleife durch gegangen :-).
Das heißt natürlich nicht das ich aufgebe, es gibt immer eine Lösung :-)
Es geht voran! :smiley027:
Welche Signale genau angeschlossen werden müssen, daß weiß der @LambdaMikel am besten, vielleicht liest er gerade mit und kann helfen.
Ansonsten sollte der Aufbau des LS auch in den Github Seiten Aufschluss geben.
Als I/O Adresse einfach die &FBEE verwenden, wenn die 1:1 angeschlossen ist. :)