Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: Devilmarkus on 02. April 2020, 15:58:22

Title: 256K für jeden CPC
Post by: Devilmarkus on 02. April 2020, 15:58:22
Hier 256K für euch, zum Abtippen:

1 MEMORY &A000:MODE 1:FOR i=1 TO 49:READ a$:POKE &A000+i,VAL("&"+a$):NEXT:CALL &A000
2 DATA 3E,4B,06,00,CD,5A,BB,04,20,FA,3E,0D,CD,5A,BB,3E,0A,CD,5A,BB,3E,32,CD,5A,BB,3E,35,CD,5A,BB,3E,36,CD,5A,BB,3E,4B,CD,5A,BB,3E,21,CD,5A,BB,CD,06,BB,C9
Title: Re: 256K für jeden CPC
Post by: TFM on 02. April 2020, 16:55:23
Abtippen? Das ist doch nimmer zeitgemäß. Die kann man doch in 2020 auch runterladen.  ;D

Sogar ganz und gar umsonst (und kostenlos):
https://downloadmoreram.com/download.html
Title: Re: 256K für jeden CPC
Post by: Devilmarkus on 02. April 2020, 18:03:01
Quote from: TFM on 02. April 2020, 16:55:23
Abtippen? Das ist doch nimmer zeitgemäß. Die kann man doch in 2020 auch runterladen.  ;D

Sogar ganz und gar umsonst (und kostenlos):
https://downloadmoreram.com/download.html

Schon, aber nicht für den CPC!
Title: Re: 256K für jeden CPC
Post by: almasys on 02. April 2020, 18:48:55
Quote from: TFM on 02. April 2020, 16:55:23
Abtippen? Das ist doch nimmer zeitgemäß.
Stimmt, ein Microcontroller kann das übernehmen.
Title: Re: 256K für jeden CPC
Post by: TFM on 02. April 2020, 23:01:33
Quote from: almasys on 02. April 2020, 18:48:55
Quote from: TFM on 02. April 2020, 16:55:23
Abtippen? Das ist doch nimmer zeitgemäß.
Stimmt, ein Microcontroller kann das übernehmen.
Was sehen wir hier denn Schönes?
Title: Re: 256K für jeden CPC
Post by: almasys on 03. April 2020, 11:19:43
Die 10 Käfer in der Reihe sind Schieberegister á 8 Bit. Jedes dieser Schieberegister repräsentiert eine Tastenzeile.

Wie im CPC aktiviert ein 74LS145 (das IC in der Mitte) die jeweils gewünschte Tastenzeile, die dann vom Soundchip abgefragt wird.

Die Beschickung dieses 8x10 Bit erledigt ein ProMicro. Der zählt (über die Ausgänge der PIO) und misst zeitlich (für Situationen in denen der Zeilendraht gar nicht gewechselt wird), ob eine Tastenzeile bereits abgefragt wurde.

Das heisst, ich habe Dein 256K-Programm gar nicht eingetippt, sondern ein Terminalprogramm unter Linux aufgemacht und das Listing in den ProMicro geschuppst. Der hat das dann eingetippt. Diese Schaltung ist eine zweite Tastatur am CPC. Und ein Reset-Button.
Title: Re: 256K für jeden CPC
Post by: Devilmarkus on 03. April 2020, 12:42:50
Hmmm man hätte das Listing auch als Textdatei auf Disk schreiben können und dann mit LOAD" laden :D
Aber so gehts natürlich auch ;)
Title: Re: 256K für jeden CPC
Post by: almasys on 03. April 2020, 14:15:19
Meine Ursprüngliche Idee war, einen ProMicro per Interrupt auf die Umschaltung des Zeilendrahtes reagieren zu lassen. Das war meistens schnell genug - manchmal wurde also eine Taste der nachfolgenden Zeile versehentlich mitgedrückt. Darum die Lösung mit den Schieberegistern. Schon klar, dass ich damit mehr Aufwand in den Aufbau der Schaltung gesteckt habe, als ich in diesem Leben an Zeit dadurch einsparen werde.
Title: Re: 256K für jeden CPC
Post by: Devilmarkus on 03. April 2020, 14:47:05
Wie schnell ist es denn?
Autotype im Emulator (regulär) "darf" alle 2 VSync eine Taste drücken und alle 2 VSync später, wieder lösen... Macht 8 Zeichen pro Sekunde ca. (50/6)
JavaCPC ist da noch was anders, da schreibe ich den String direkt in den Tastaturbuffer, und brauche pro Zeile somit nur 1x "Enter" drücken und lösen...
Title: Re: 256K für jeden CPC
Post by: almasys on 03. April 2020, 15:17:49
Quote from: Devilmarkus on 03. April 2020, 14:47:05
Wie schnell ist es denn?
Autotype im Emulator (regulär) "darf" alle 2 VSync eine Taste drücken und alle 2 VSync später, wieder lösen... Macht 8 Zeichen pro Sekunde ca. (50/6)
Dazu steht in meinem Sketchconst int8_t delayscans[]={1,-3};, ein Tastendruck wird von der Firmware beim ersten Scan regisitriert, damit eine Taste als losgelassen registriert wird braucht es drei Durchläufe. Es gibt ja noch die Möglichkeit, dass ein Tastendraht gar nicht angewählt wird, daher berücksichtige ich noch die zeitliche Komponente. Stell Dir ein Spiel vor, das nur den Joydstick abfragt. Oder ich habe da eine Situation, da frage ich nur ESC ab.
QuoteJavaCPC ist da noch was anders, da schreibe ich den String direkt in den Tastaturbuffer, und brauche pro Zeile somit nur 1x "Enter" drücken und lösen...
Und woher weisst Du, dass ein Tastaturpuffer existiert?
Title: Re: 256K für jeden CPC
Post by: TFM on 03. April 2020, 15:22:47
Quote from: almasys on 03. April 2020, 11:19:43
Das heisst, ich habe ... gar nicht eingetippt, sondern ein Terminalprogramm ... aufgemacht und das Listing in den ProMicro geschuppst. Der hat das dann eingetippt. Diese Schaltung ist eine zweite Tastatur am CPC. ...

Faszinierend! So etwas wollte ich immer auch schon haben, so dass ein Computer einen anderen Programmieren kann. Wunderbar! :smiley027:

Bei der Entwicklung von FutureOS habe ich sogar darauf schon Rücksicht genommen, und die Tastatureingabe so ausgelegt, dass sie von etwas sehr viel schnellerem als einem Menschen bedient werden kann.

Es wäre schön, wenn ich die Schaltung z.B. auf der XzentriX 2020 mal sehen könnte.
Title: Re: 256K für jeden CPC
Post by: almasys on 03. April 2020, 15:45:46
Quote from: TFM on 03. April 2020, 15:22:47
Quote from: almasys on 03. April 2020, 11:19:43
Das heisst, ich habe ... gar nicht eingetippt, sondern ein Terminalprogramm ... aufgemacht und das Listing in den ProMicro geschuppst. Der hat das dann eingetippt. Diese Schaltung ist eine zweite Tastatur am CPC. ...
Faszinierend! So etwas wollte ich immer auch schon haben, so dass ein Computer einen anderen Programmieren kann. Wunderbar! :smiley027:
Da mein Druckerport eine USB-Tastatur ist kann auch der CPC in die Linux-Kiste etwas eintippen. Sie könnten sich also gegenseitig programmieren.
Title: Re: 256K für jeden CPC
Post by: TFM on 03. April 2020, 18:03:12
Na, DAS kann der Linux Kiste sicher nicht schaden  ;) :zunge0020: :smiley027:
Title: Re: 256K für jeden CPC
Post by: Devilmarkus on 04. April 2020, 22:17:56
Quote from: almasys on 03. April 2020, 15:17:49
Und woher weisst Du, dass ein Tastaturpuffer existiert?

Nun, der CPC hat einen einzeiligen Buffer, der somit 255 Chars enthalten kann. Füllt man diesen Buffer und drückt dann "Enter" ist der Text eingegeben ;)

Die Adresse dafür im RAM ist je nach CPC-Modell unterschiedlich, mein Emulator erkennt das allerdings...

Geht auch schön fix so ;)

https://cpcwiki.de/bastype/bastype.mp4