Hallo zusammen,
also, hab jetzt die 1.43 Version wieder drauf. Im Moment läuft alles
stabil! Hoffe das bleibt auch so, ist echt ärgerlich wenn plötzlich
alles weg ist!
Naja Jörg, ist nicht schlimm!
Kenne sowas noch aus alten C64 Zeiten... da haste grad 1000 Zeilen
abgetippt und dann fällt der Strom aus! :)))
Werde halt alles nochmal neu programmieren! Hab viele alte Retro Games
portiert... naja... auf ein neues!
PS: Danke nochmal Jörg das du weiter machst mit dem Projekt! Meine Jungs
sind total begeistert was alles möglich ist!
PPS: Ob du nochmal darüber nachdenken wirst Grafik und Sound auszulagern
in einem 2. oder 3. MCU?
Wahrscheinlich hab ich schon den "Übeltäter" gefunden, beim Senden der
SPI-Selektion wird "tempreg1" nicht gesichert. Aber das muss ich noch
etwas ausgiebiger testen.
Zum Auslagern gibt es zumindest für Grafik schon ein (noch
unveröffentlichtes) Projekt. Mit einem Mega644(20MHz) + 128K SRAM +
74CHT374 + ein paar Widerständen geht 320x240 bei 256 Farben auf TV oder
VGA. Auch ein Modus mit 160x120 und 4 Screens von denen man 2 als
Z-Buffer nutzen kann ist schon integriert. Angesteuert wird seriell mit
max. 250Kbit/s, jede Menge 2D und auch einige 3D-Funktionen sind schon
integriert. Aber das ruht momentan...
Jörg
ohhh Jörg,
2D, 3D, VGA, 256 farben.... das ist wie Honig in meinen Ohren :)))
Wow, hoffentlich ruht es nicht sooo lange!! :))
Ähm, aber:
Wenn ich den SRAM nutze, dann ist doch der Parallelport für andere
Anwendungen nicht mehr nutzbar, richtig??
Das wäre doof, da ich an diesem port mein gamepad angeschlossen habe! :(
Somit kann ich michnur entscheiden zwischen:
Spiele mit Tastatur spielen oder mit gamepad aber dafür gibts kein SRAM
und anscheinend auch nicht die Grafikauslagerungen welche noch ruht!
ahhhh... teufelskreis!
Das hast Du jetzt nicht richtig verstanden. Die "Grafikkarte" ist ein
standalone Projekt bei dem der AVR einzig und allein für die Grafik
verantwortlich ist. Angeschlossen wird er an den UART des
"Zentralprozessors". Das sollte mal ein modulares Nachfolgekonzept zum
ChipBasic werden, mit getrennten Controllern für Grafik, Sound, Netzwerk
und Massenspeicher. Zentralprozessor mit RAM hätte einen eigenen
Steckplatz und wäre somit beliebig austauschbar. Letztendlich habe ich
das Projekt aber aus verschiedenen Gründen (z.B. Zeit) wieder verworfen.
Jörg
Ah ok! Jetzt hab ich es verstanden!
Schade, ich glaube damit wäre nicht nur ich glücklich gewesen! :)
Besteht die Möglichkeit mit einem am Parallelport angeschlossenem
"Joystick" sich durch das menü zu klicken?
Somit bräuchte man die Tastatur nur zum editieren von programmen!
Das soll jetzt kein Aufruf werden eine Spielekonsole zu entwickeln...
Hi Jörg,
wie sind im Assembler die Farben definiert?
Warum hast du einmal 0x0c für Gelb auf Schwarz benutzt und danach kommt
0x60 für schwarz auf gelb? Schwarz ist die 0 aber warum ist gelb einmal
c und einmal 6?
Blicke da nicht ganz durch!
Hi patrick,
muss wie gesagt erstmal alles neu schreiben, ging ja alles verloren beim
DFLASH Problem!
Aber ich hatte:
- PONG one (Einzelspieler Pong gegen den AVR mit Auswahl von 3
Schwierigkeitsstufen)
- SPACE INVADERS
- PACMAN (Jörgs Beispiel auf 2 Programme verteilt, mehr "Levels")
- TENNIS
- SQUASH
- ASTEROIDS
- SUBMARINE
- SNAKE (Beispiel von Klaus, jedoch mehr levels)
Alle Spiele waren mit Startbildschirm (Credits), Auswahloption für
levels, Schwierigkeit, Player, spielbar mit umgebauten SNES Gamepad,
etc. sowie der Highscore Speicherung im externen Eeprom
Gruß
Dominik
Hi Jörg,
ONSYNC steht ja außerhalb einer Programmschleife, richtig?
So... wenn ich jetzt mit ONSYNC 20,50 jede Sekunde die zeile 20 aufrufe,
ich aber nach einiger zeit, zum Beispiel ab einer bestimmten Punktzahl,
die Zeit ändern will, wie kann ich da wieder auf das ONSYNC zugreifen.
ich will dem Intervall von ONSYNC eine variable zuweisen!
Und erklär doch bitte mal kurz wie sich das mit Assembler und den farben
(green on black, x0e, etc.) verhält!
Gruß
Dominik
Hallo Dominik,
1. ONSYNC L,N kann auch Variablen verwenden, bei jedem Aufruf wird dann
das Ganze neu gesetzt. Wenn L (die Zeilennnummer) 0 ist, wird der
zyklische Aufruf abgeschaltet. Was nicht geht, ist nur die Variable zu
ändern.
2. Im Bildspeicher liegen die Bits so: GRBIgrbi, beim Aufruf von
Setcolor wird das entsprechend umgerechnet, da hier die Bits so liegen:
IRGB. Durch die Umrechnung bleibt die Komatibilität von 8 und 16 Farben
gewahrt. Teilweise habe ich, um Code zu sparen die Umrechnung umgangen
und gleich die "Bildspeicherwerte" genommen statt vorher umzurechnen.
3. In den Videomodi 4 und 6 lassen sich eigene Zeichen definieren. Bei
Mode 4 sind es 127 Zeichen Äquivalent zu Mode 0, bei Mode 6 gibt es 63
Zeichen, bei denen die Farbe jedes Punkes definiert werden kann. Zudem
wäre auch der Tiles/Sprites Treiber eine weitere Möglichkeit.
Jörg
Hallo Jörg,
danke für die Antwort!
zum Onsync: Muss ich mal probieren! Ein erneuter Aufruf! Ok, aber Onsync
in eine Schleife setzen zum Beispiel geht nicht!?
Zu den farben: Puh... Ich glaub das versteht nur der Entwickler :) Naja,
ich kann es ja mal versuchen und mich drangeben!
Zum Charset: Nunja, wie kriege ich denn den Tile Treiber geladen?? Ich
such natürlich nach einer Lösung die wenig zeilen beansprucht. Wenn ich
jetzt im Sourcecode den zeichensatz schon anpassen könnte, wäre das
natürlich perfekt! Zum Beispiel das Smiley (%27).. kann man das im
Zeichensatz, im Sourcecode ändern? Zum beispiel das es böse guckt?
Ich meine Änderungen am zeichensatz die nicht zur Laufzeit des ganzesn
Systems geschehen!
Gruß
Dominik
Hallo Dominik,
zum Tiletreiber gibt es auch ein Beispiel, man muss ihn einfach nur via
XMODEM auf einen beliebigen Programmplatz übertragen und mit VMODE 7
aktivieren.
Den Onsync kann man aufrufen wenn man will, selbst in der aufgerufenen
Subroutine. In einer Schleife sollte es natürlich auch gehen.
Wenn man den System-Zeichensatz ändern will, muss man das im Sourcecode
(libmio/generator) tun. Dazu kann man die ctab_f0.dat abändern und
danach das Script generate_chartable.pl starten sowie das Projekt neu
assemblieren.
Ich habe eine neue V1.44 erstellt und im Download-Bereich ausgetauscht.
Bei mir hat es mit dem Speichern geklappt aber trotzdem ist es ratsam
vorher die Daten zu sichern da ich sicher nicht alle Konstellationen
getestet habe.
jörg
Ahaaaaaa, da versteckt sich der zeichensatz also :)))
Danke Jörg!!!
So, also mittlerweile habe ich zig Anwendungsbereich für den Mini
Computer gefunden! Es ist sooo geil!!!
Onsync funktioniert nicht so wie ich will.. komisch! Ich muss nochmal
testen und bescheid geben!
Ha! Hab jetzt die Tetris Musik emuliert! genial! leider leider ist es
nicht so einfach unter eine melodie zum beispiel eine "Bass" oder
"Drum"-Spur als einzelne Note zu legen, da der Sequencer wirklich seeehr
mager ist!
Jörg, ist iiiiirgendwas noch möglich was den Sound betrifft?
ich bleibe erstmal bei der 1.43er bis ich alles an Software fertig habe!
Gruß
Dominik
PS: Hab einen Super mario Klon so gut wie fertig! Wenn alles soweit
fertig ist werde ich mal ein listing veröffentlichen! Hinzu kommen noch
Textverarbeitungsprogramme sowie Steuerprogramme für SPS, etc
Argh,
kriege mit avra.exe den code nicht kompiliert!
Irgendwie macht die M644Pdef.inc probleme...
es kommen fehlermeldung das #pragma ist unbekannt... etc.
also die 32er version funktioniert einwandfrei... aber die 64er 1.43
bekomme ich nicht kompliliert, was kann das sein??
So... es lag an avra.exe
mit avrasm2.exe gehts!
Aber nun bekomme ich folgende fehlermeldungen:
zig redefinitions fehler und: too deeply nested macro(16)
waruuuuum??
Mit dem letzten AVRA (1.3.0) sollte es eigentlich gehen, zur Not kann
man auch das def.inc kopieren und die mit # bginnenden Zeilen
rauslöschen. Über Probleme mit dem avrasm.exe und Makros ist auch hier
im Thread weiter oben zu lesen, das ist wohl eher ein aussichtsloses
Unterfangen.
Jörg
Hi Jörg,
danke für die Antwort!
Stimmt, habs oben schon gelesen! Aber eine Lösung wurde nicht gepostet,
da Klaus es ja anscheinend hinbekommen hat!
mist... irgendwie muss es doch gehen!!
Jörg, kannst du das SOURCE Verzeichnis mal aktualisiern und alle Dateien
reinschmeissne die man braucht?
Libdef.asm fehlt zum beispiel!
geht alles nicht...
weder AVRA, noch AVRASM2 noch AVRASM32...
alle melden Worng Device M644Pdef.inc
und danach kommen zig Fehlermeldungen... ahhhh ich verzweifel!
Hallo Dominik,
ich hab mir mal die Quellen vom "aktuellen" AVRA angesehen, da fehlen
u.a. der ATMega644, 644P und 1284P. Bis jetzt hat sich noch niemand in
der Hinsicht gemeldet, so dass das nicht aufgefallen ist. Dass der
AVRASM mit dem Makros nicht klarkommt "ist halt so", mehr als zur
Kenntnis nehmen kann ich da auch nicht. Eine Möglichkeit wäre noch der
avr-as (vom AVR-GCC) aber der kommt leider auch nicht mit dem Source
klar.
Ich hab mal ein erweitertes device.c File angehängt, wenn man den AVRA
damit compiliert sollte es eigentlich gehen.
Jörg
Hi Jörg,
danke schön!
Kann leider den Avra nicht kompilieren, bin auf eine .exe angewiesen :(
Versuche jetzt noch den tavrasm .. hab gehört das der auch funktionieren
soll.. mal schauen!
Ansonsten:
Kannst du vlt die Sourcen aktualisieren auf deiner Seite und vlt auch
einen kompilierten Avra mit anbieten?
Ich werde eine neue Version bereitstellen, bei der dann hoffentlich alle
Source-Dateien dabei sind. Die aus /usr/local/include/chipbasic2 fehlen
ja leider in den aktuellen Archiven. Das AVRA-Binary (dazu müsste ich ja
auch noch den Sourcecode mit anbieten) würde Dir aber auch nichts
nutzen, da es lediglich unter Linux und vielleicht noch BSD lauffähig
ist.
Jörg
Hallo Jörg,
sind wir eigentlich nur noch die Einzigen die hier schreiben? :-)
Es war doch mal so viel los hier!
Also mit dem kompilieren muss ich mir mal was einfallen lassen!
Bis dahin fummel ich die ganze Zeit am 32er rum!
Mh.. habe zum beispiel mal versucht im Menü anstelle des Pfeils, die
Auswahl zu invertieren, genau wie beim 644er...
Dachte eigentlich das geht ganz easy mit SWAP und der Farbe aber....
naja... Assembler ist immer noch nicht mein Freund :)
Gruß Dominik
Hallo Dominik,
wie hieß es so schön in einem Lied "Jedes Ding hat seine
Halbwertszeit..."? ChipBasic2 ist immerhin schon fast 5 Jahre alt.
Das mit dem selber compilieren ist z.B. ein Grund oder auch die recht
hohe Komplexität der Programme. Und das es die Transferprogramme nicht
als exe gibt. Da ich aber meine Projekte in erster Linie für mich selbst
entwickle, sehe ich darin kein Problem wenn es fast niemenden
interessiert (wie z.B. beim AX82). Und manchmal überlege ich, ob bei
neuen Projekten ein Hinweis im Bereich "Mikrocontroller" nicht
ausreicht.
Für die Erstellung von Programen in Assembler gibt es ja die
API-Funktionen, wobei die halt nicht alle in der Dokumentation stehen.
Jörg
Hey Jörg,
also ich, wir, er, Sie, Es kann ja froh sein das du das Ganze überhaupt
veröffentlichst und auch noch unter GPL stellst.. von daher!
Naja, ich bin jemand, ich muss wissen was ich da gebaut habe! Ich schaue
mir den Source an und versuche ihn zu verstehen!
ich lasse da auch nicht locker! :)
Wie gesagt, den 32er Code kann ich kompilieren und da bastel ich gerade
viel rum.
Wenn ich zum beispiel die Zeilenanzahl von 51 auf 52 erhöhe stürzt der
Editor ab... warum weiß ich nicht, aber das sind so sachen die ich eben
rausfinden will!
Gruß
Dominik
Nein, es muss niemand froh darüber sein. Ich betreibe das als Hobby und
aus Spaß und muss damit weder reich noch berühmt werden. Dass der AVRA
seit längerem nicht mehr weiterentwickelt wird (der Feature-Request für
den Mega644 ist schon seit über einem Jahr offen), dafür kann ich
nichts. Dafür dass Quelldateien im Projekt fehlen, schon. Und das werde
ich auch mit dem nächsten Update beheben. Wie ich gelesen habe, ist der
TAVRASM seit 2004 nicht mehr weiterentwickelt worden und von daher wohl
auch keine Alternative.
Am einfachsten wäre es, wenn jemand den AVRA mit der geänderten Datei
unter Windows übersetzen und dann den anderen das Binary zur Verfügung
stellen könnte. Für Linux könnte ich das übernehmen.
Wenn Du die Anzahl der Zeilen auf 52 erhöhst, kann es natürlich sein
dass die 52.Zeile z.B. schon den Stack im RAM überschreibt. Da während
des Editierens das gesamte Programm im RAM gehalten werden muss, ist die
Anzahl der möglichen Zeilen durch den freien Speicher limitiert.
Jörg
Hi Jörg,
ahaaa.. ok!
Weißt du, ich bin gelernter Scharfschütze, Panzerkommandant und
Verwaltungsfachangestellter! Elektronik hab ich mir selber angeeignet
und damit sogar einen Arbeitsplatz in einer Firma für Labortechnik
bekommen!
Also ich lerne!!! ;)
Ok... ich werde mich mal schau machen ob das unter windows jemand kann!
Dann dürfte der rest kein problem sein!
Gruß
Dominik
Ein bisschen länger hat es dann doch gedauert, da ich mir erst einmal
einen originalen CB2 "zurückbauen" musste. Ich hoffe, jetzt sind alle
Quelldateien mit dabei, ein bisschen habe ich auch den Verzeichnisbaum
umgebaut.
http://www.jcwolfram.de/downloads/main.php#chipbasic2
Jörg
PS: Da sich beim AVRA scheinbar nichts mehr tut bin ich am Überlegen,
meine gepatchte Version als Fork zu veröffentlichen.
Danke Jörg!
Wollte dich mal fragen,ob ich demnächst
Einen wikipediaartikel über dieses tolle Projekt Machen darf,
unter der Kategorie 8bit Rechner
Gruss Patrick
Hallo Jörg,
wie Dir sch per Mail mitgeteilt, hab ich mal eine Schaltung getestet
welche aus einem RGB H+V - Signal ein FBAS - Signal macht.
Mit Erfolg. Diesen Erfolg will ich gern hier im Forum teilen.
Ich habe die entsprechenden Dateien als *.GIF angehängt.
Wer gern die Orignale Target.3001 Datei hätte, soll sich bei mir melden.
Kernstück ist ein MC1377 von Motoro. Sind leicht zu bekommen.
Habe mir gleich drei für 10Euro zu gelegt.
Die 1nF Kondensatoren sind im Wert unbedingt einzu halten.
Bei längeren Kabelverbindungen, ist es sinnvoll die 68Ohm Widerstände
gegen 75Ohm zu tauschen. Wegen des Wellenwiderstandes von Videokabeln
(75Ohm).
Ich war noch nicht zu Ende,
wenn beim INP - Befehl zu viele Zeichen eingegeben werden, startet der
Controller neu. Dieser Fehler wird nicht sinnvoll abgefangen.
Ebenso wenn ausversehen die Pfeiltasten benutzt werden.
Zu einer Deutschen Tastatur gehören auch die Umlaute und das ß.
Gruß Ralf
Hallo Ralf,
Das mit den zuvielen Zeichen und den Pfeiltasten werde ich mir bei
Gelegenheit mal ansehen. Wenn noch ein bisschen Flash frei ist, könnte
man vllt. eine zusätzliche Abfrage einbauen.
>Zu einer Deutschen Tastatur gehören auch die Umlaute und das ß.
Das mag zwar sein, ist aber nicht vorgesehen und kann auch nicht
nachräglich ergänzt werden. Einfach deswegen, weil alle Bytes ausserhalb
des ASCII-Zeichensatzes als Token interpretiert werden. Im Zeichensatz
selbst sind sie vorhanden, allerdings höchstwahrscheinlich nicht
kompatibel zu irgendwelchen Windows-Codepages.
Jörg
Hallo Joerg
Unglaublich, was Du da entwickelt hast. Und das mit einem Mega644.
Sogar ein Moinitor kann man anschliessen!!!
Den muss ich mir einfach nachbauen.
Dieser Basic Computer schlägt selbst meinen C64 und den Amiga 500!
Gruss
Ferenc
Hm... meine Antwort wurde gar nicht angezeigt... also nochmal:
Frohes Neues jahr Jörg :))
Den Atmega644 Source bekomme ich immer noch nicht compiliert! Aber
egal..
Jörg,
Hast du nochmal darüber nachgedacht video und sound in einerm 2. Atmega
auszulagern? Ich bekomme es leider nicht hin alleine, mit dem Code...
Aber das wäre endlich mal was geniales. Mehr Platz im Flash und mehr
Möglichkeiten!!!!
Gruß
Dominik
Hallo Dominik,
gesundes Neues Jahr wünsche ich ebenfalls.
Mit dem AVRA sollte sich der Code aber übersetzen lassen. Mit einem
anderen Assembler kann es durchaus schwierig werden, insbesondere mit
dem avrasm. Da ich in letzter Zeit mehr mit anderen Controllern mache
(Freescale, Renesas, MSP430) und dort durchgängig den ASL benutze habe
ich schon versucht, einzelne AVR-Projekte dorthin zu portieren.
Letztendlich war es aber einfacher, den AVRA weiter zu benutzen und für
neue Controller einfach selbst zu patchen.
Was die Modularisierung anbetrifft, genau das Gegenteil war das Ziel vom
ChipBasic. Alles in einen Controller und minimale Hardware außenrum. Es
gibt zwar einen Prototypen von einem Nachfolger, der eine
CPU-Adapterplatine mit Mega1284P und CPLD auf dem original Board nutzt
und auch VGA bei 320x240 kann, letztendlich wird aber die Zahl der
Interessenten eher verschwindend klein sein.
Natürlich reizt es mich, einen Computer zu bauen, den man auch für
"ernsthafte Dinge" einsetzen kann. Aber dazu sind meiner Meinung nach
noch einige "Zwischenschritte" notwendig. Vor allen Dingen muß man
Applikationen in C schreiben können, die vom externen Datenträger in das
RAM geladen und ausgeführt werden.
Jörg
Hallo Jörg,
Klar ist der Computer mit einem Chip einzigartig!
In den 80ern wärst du wahrscheinlich Millionär damit geworden :)
Mich stören halt nur etwas die 95 Zeilen die man zur Verfügung hat!
Spiele und Programme können ja in den Dataflash abgelegt werden.
Aber max. 256 Farben und ein guter Sound wäre schon was geniales!!
Siehe Uzebox...
ich nochmal...
Du hast mal geschrieben:
Digitaler Joystick sollte kein Problem sein, einfach die Schalter
zwischen I/O und Masse. Gelesen wird dann mittels IN(n).
Muss dafür nicht der I/O Port auf High liegen?
Denn wenn er LOW ist, dann muss ich die Schalter ja gegen 5 Volt ziehen!
ich kann ja in Basic die Ausgänge High setzen, aber dann doch nicht mehr
per In lesen oder?
So,
ich hab dann auch mal ein layout erstellt, welches ich vermutlich
demnächst auch ätzen lasse.
Schnittstellen und Peripherie:
- Scart
- Chinch Video und Audio
- PS/2 Anschluss
- Serielle RS232
- USB an 2. serielle Schnittstelle
- 9 pol. parallel (Joystick, Belegung wie Atari, C64, etc.)
- Stiftleiste parallel I/O
- I²C
- 10 pol. und 6 pol. ISP
Bauteile:
- 2 x EEPROM
- Dataflash auf Platine
- FT232RL USB Modul
- MAX232 für die serielle
Hoffe das mit den Schnittstellen funktioniert.
Habe jetzt nochmal versucht die Version 1.45 zu compilieren mit AVRA und
AVRASM2 und AVRASM32.... keine Chance... immer wieder unterschiedliche
Fehlermeldungen :(((((
Kannst Du mal die Fehlermeldungen von AVRA posten? Welche Version
benutzt Du? Mit den anderen beiden Assemblern kann ich nichts anfangen,
da ich kein Windows habe.
Zum Joystick: man kann über OUT die internen Pullups einschalten und muß
dann halt z.B.
IF IN(0)=0 THEN ...
zur Abfrage verwenden. Alternativ kann man natürlich auch Pull-Downs in
den Joystick-Adapter einbauen, dann entfällt die Invertierung.
Jörg
Mit dem PLAY-Befehl kann man auch Noten im Hintergrund abspielen lassen.
Wie es bei der Uzebox geht kann ich nicht sagen, da ich mich nie damit
beschäftigt habe. Machen lässt sich bestimmt noch einiges, z.B. den
Wellenformspeicher in das Array legen um beliebige Wellenformen zu
kreieren. Dazu müsste man eine "Weiche" einbauen, mit der die Daten
wahlweise aus dem Flash oder dem RAM geholt werden. Für eine zweite
Stimme sind horizontal nicht in allen Modes genügend Takte übrig.
Für mich ist das Projekt allerdings abgeschlossen, mehr als Bugfixes ist
nicht drin.
Jörg
Oha... das klingt zu kompliziert! :(
Bin ja auch nicht so bewandert was Assembler angeht!
Zeichensatz ändern ist nicht das Problem. Die Farben hab ich mir auch
schon angepasst auf C64 Style :))
Die Cursorsteuerung im menü ist mir noch nicht so klar. Wollte
eigentlich ein weiteres Icon neben dem Info legen und dort die
Statuszeile ablegen! Aber da blicke ich noch nicht ganz durch!
Genauso wie mit dem Sound.
Ich habe in den Sourcen nur das perl script gefunden um den soundtable
zu erstellen!
LG
Dominik
PS: Habe vor die Basic Referenzen was aufzupeppeln sowie ein paar
listings zu erstellen von meinen ganzen Spielen!
Vlt noch ein kleines handbuch dazu, mal schauen!
Die Menü-Routinen liegen in "modules/menu.asm", dort gibt es auch
Routinen zum Zeichnen der Symbole (z.B. "menu_cfgicon"). Eine solche
brauchst Du auch für das eigene Icon. Nach "menu_main_11" müsste dann
noch die Abfrage für das zusätzliche Icon und Aufruf der zugehörigen
Funktion integriert werden. Ob dafür aber noch Platz im Flash ist, wage
ich zu bezeifeln.
Die Soundausgabe läuft fast komplett im Video-Interrupt, zu finden im
File "libmio/vint_o.asm". Dort nach "calculate sound" suchen.
Für das Assemblieren und Übertragen kann man sich auch ein Script
basteln:
1. main.hex löschen
2. avra main.asm
3. wenn main.hex existiert, per Programmer an den Controller übertragen
Bei einem Assemblierungsfehler wird die main.hex nicht erzeugt und der
gesamte Vorgang abgebrochen.
Jörg
Hallo Jörg,
danke für deine Antwort!
Wie sich das mit draw_icon, etc. verhält habe ich bereits rausgefunden!
Ganz blicke ich noch nicht durch mit der Cursorsteuerung. Denn DOWN
funktioniert ja nur wenn ich mit dem Cursor in der ersten Zeile bin und
unter mir entweder das FLASH Symbol, Config oder Info ist. tricky...
Ich speicher die einzelnen .asm Dateien immer und compiliere
anschließend alles mit deinem AVREL.exe. Dadurch sehe ich leider nicht
wieviel Platz ich noch frei habe!
Ok, wenn du sagst es hat keinen Sinn irgendetwas neues hinzuzufügen,
dann lasse ich es natürlich!
Ich könnte es natürlich auch versuchen und schauen ob es beim
compilieren ein Fehler gibt.
Eventuell werde ich die Statusleiste mit MCU, VID und KBD in die INFO
verlagern.
Gruß
Dominik
PS: OT: Dadurch das es hier nur 1 Seite gibt bei dem Thema stürzt
ständig die Seite bei mir beim Antworten ab wegen Skriptfehler etc.
Gibts da ne Lösung?
Kilo schrieb:> PS: OT: Dadurch das es hier nur 1 Seite gibt bei dem Thema stürzt> ständig die Seite bei mir beim Antworten ab wegen Skriptfehler etc.> Gibts da ne Lösung?
Da hilft im Forum anmelden und Seitenaufteilung einschalten. Oder halt
einen gscheiten Browser nehmen, beim FF sürzt bei mir nichts ab.
Jörg
Mal ne andere Frage.
Angenommen ich würde Unterprogramme oder ähnliches rausnehmen die ich
nicht brauche...
könnte ich damit alleine die Zeilenanzahl im Editor erhöhen, sprich den
Flash oder reicht das alleine nicht aus?
Sorry wenn ich nerve... (Bin ja eh der Einzige momentan)
1. Wo wird das Loader Icon erstellt?
Alle Icons werden in menu.asm erstellt und angezeigt. Das Loader Icon
finde ich nicht.. will es löschen. Bzw. hab es gelöscht aaaaaber: Da ich
ja jetzt einen blauen Hintergrund habe, ist der Hintergrund bei dem das
Loader Icon war immer noch schwarz!
2. Im Menü wird ja der Fensterrahmen angezeigt. Über der Statuszeile ist
eine Leiste. Die Box habe ich wegbekommen. Die Zeile in der die Leiste
angezeigt wird finde ich nicht. Ich meine den Balken der die Icons von
der Statuszeile trennt.
Hallo Dominik,
der Loader ist ein quasi vorinstalliertes Binärprogramm. Das lässt sich
auch einfach löschen. Bei Nicht-BASIC-Programmen steht die
Icon-Definition im Programmheader. Dafür gibt es im Bereich "Interna"
den Abschnitt "Das API für Binärprogramme".
Wenn Du den Loader nicht brauchst, dann einfach in der main.asm einfach
bei 0x6000 das include rausschmeißen und durch einen leeren Block z.B.
vom Programm darüber ersetzen.
Der Code für die Zwischenzeile geht in der menu.asm ab Zeile 45 los.
Dort werden 0xf8, 28 x 0xf1 und abschließend 0xf9 in die entsprechenden
Bildschirmspeicherzellen geschrieben.
Die Anzahl der Zeilen wird in erster Linie durch das RAM limitiert, da
während des Editierens der gesamte Quelltext im RAM liegen muß. Beim
Flash könnte man einfach für eine höhere Zeilenanzahl die Zahl der
Programme verringern. Man kann aber Subroutinen in andere Programme
auslagern. Wenn das nicht reicht, könnte man einen ATMega1284P nehmen
und den Code entsprechend umschreiben.
Jörg
Hallo Jörg,
danke schön...
ach bin ich blöd! Dass ich das nicht gesehen habe!! :(
Klaro geht das bei den Programmen auch mit CALL.
Pacman zum Beispiel. Dem habe ich einen Startbildschirm und
Joysticksteuerung verpasst. Dazu brauchte ich natürlich einen 2.
Programmplatz. Ist halt immer nur blöd beim laden...
Obwohl warte mal...
Theoretisch könnte man doch z.b. auf P1 ein Programm schreiben mit einer
Liste von Spielen. Suche ich mir dort eins aus, dann läd der computer
dieses Spiel aus dem DFlash in den Mega und startet es.
Wäre es dein ein großer Aufwand den Code bei einem ATMega1284P
umzuschreiben?
Gruß Dominik
PS: Ich bin immer noch total begeistert von deinem Computer! :-)
Hallo Patrick,
Ich habe an meinem Parallelport einen Schmitt Trigger hängen. Jetzt kann
ich perfekt meinen digitalen Joystick dran hängen.
Spiele habe ich auch schon ein paar aber ehrlich gesagt die serielle
Schnittstelle noch nicht getestet. Von daher müsste ich alles abtippen
und dafür war ich bislang zu faul.
@Jörg
Kabel an die serielle, CTRL+P und schon wird ein screenshot an meinen pc
gesendet? als Bild??
ah ok aber vllt kannst du den bildschirm abfotrogafieren, mit den
listings,dann kann ich mir das von den pics selbst abtippen ,
vielen Dank im Vorraus
gruss Patrick
Jörg,
bei deinem Mega16 Projekt konnte man den Zeichensatz mehrfahrbig
darstellen! Das war natürlich genial!!!
Geht das beim aktuellen 644 Projekt nicht???
Ich meine in der .dat Datei... jetzt bestehen die Zeichen aus ... und
xxx
im 16er war durch einen Buchstaben die Farbe angegeben!
1. zum Senden der Listings über die serielle Schnittstelle: Im Editor
CTRL +F2, steht auch in der Anleitung
2. Man kann für jedes Zeichen Vordergrund- und Hintergrundfarbe
festlegen, warum sollte das dann auch noch in den Zeichensatz. Der
Mega16 hatte nicht genügend RAM für extra Attribut-Bytes
Jörg
Hi Jörg,
nein.. hast mich falsch verstanden...
Im Zeichensatz der 16er Version war z.B. die Kugel für Pong mit einem
weißen Schatten.
Der Smily war gelb und hatte rote Augen! Das war bereits im Zeichensatz
festgelegt...
Beispiel:
644:
.....
.xxx.
xxxxx
.xxx.
.....
.....
Ergebnis: Ein einfarbiger Ball
16er:
.....
.YYY.
YYBYY
.YYY
.....
Ergebnis: Ein gelber Ball mit blauem Punkt in der Mitte.
Im aktuellen Zeichensatz nehmen die "Öffnungen" der Augen eines Smilies
ja die farbe des Hintergrundes auf. Wenn ich jedoch im Zeichensatz
anstelle eine X ein R für rot eingeben könnte, dann würden die Augen rot
sein und die Kopf farbe kann ich in BASIC wählen.
Dafür gibt es (mit Einschränkungen) den Videomode 6 oder den Tile/Sprite
Treiber. Theoretisch könnte man auch die Ansteuerung wie beim Mega16 in
einen ladbaren Treiber packen.
Jörg
Wenn man einen schnelleren Algorithmus findet, die Pixel auszugeben oder
den Controller übertaktet oder die Ausgabe der Pixel in externe hardware
(CPLD) auslagert ... theoretisch schon.
Allerdings müssten die Speicheraufteilung (zu Lasten der Array-Größe)
sowie jede Menge anderer Dinge, die sich auf die 30 Zeichen je Zeile
beziehen, überarbeitet werden.
Jörg
So,
hier nun eins meiner Spiele!
Es ist ein kleines Jump'n'run.
gesteuert wird mit Joystick, links, rechts und hoch!
Die Belegung muss sich natürlich jeder selber einstellen:
Zeile 11 => Joystick rechts
Zeile 12 => Joystick links
Zeile 13 und 85 => Joystick hoch
In den einzelnen levels stehen Bäume am Boden, logisch, welche von level
zu Level mehr werden. Ihr dürft diese Bäume nicht berühren sonst
verliert ihr Leben!
Die gelben Münzen bringen Punkte. Ab 10 Punkten könnt ihr sogar höher
springen!
Wenn ihr gegen den grünen Block springt, erscheint an irgendeiner Stelle
eine lila Glocke. Springt auch gegen diese und ihr erhaltet ein
zusätzliches Leben.
Ab einem bestimmten Level gibt es diese Glocken nicht mehr und es ist
nur noch eine Frage der Zeit wie lange ihr durchhaltet!
Gruß
Dominik
PS: Als nächstes werd eich hier mal Pong One veröffentlichen. Ein
One-Player Pong mit 3 Schwierigkeitsstufen!
Im Moment versuche ich mich an einem etwas flexibleren Konzept. Die
meisten BASIC-Dialekte sind halt nicht miteinander kompatibel und das
schreckt ab. Außerdem fehlt, wie Du schon bemerkt hast, ein
Simulator/Emulator.
Meine Idee ist es daher, dass man seine Programme in C schreiben kann
und diese im RAM des Controllers ausgeführt werden. Die ganzen
Bibliotheken liegen aber im Flash, so dass der Code recht kompakt
bleibt. Das schließt den AVR natürlich aus, da der keinen Code aus dem
RAM ausführen kann. Nun, es gibt ja auch noch andere Controller, zur
Zeit verwende ich einen MC9S12XD128 von Freescale in einem "Nachfolger"
von meinem AVR-Handheld. Aber das gehört jetzt eigentlich nicht mehr in
diesen Thread...
Jörg
Ach Jörg,
ich glaube das würde dann schon wieder zu weit gehen!
Für die Uzebox programmiere ich auch Spiele am PC in C und compiliere
sie dann auf SD Karte... Du hast natürlich viel mehr Möglichkeiten aber
das Flair das dein Computer hat ist dann weg!
Ich habe den Dataflash fest auf meiner Platine. Mehr braucht man gar
nicht. Spiele programmieren, auf den Flash speichern und du kannst
jederzeit das System neu machen ohne das die Programme weg sind.
man könnte auch nen Bootloader in den Avr schmeißen und alles von SD
Karte oder Flash lesen lassen.. aber dann hast du wieder eine
Spielekonsole a la Uzebox!
Das sind erstmal nur Tests, später soll schon ein "richtiger" Computer
folgen. Nur dass man seine Anwendungen dort in C und nicht mehr in BASIC
erstellt. In einen größeren Controller (die S12XE gehen bis 1MB Flash)
sollte dann auch ein einfacher C-Compiler nebst Editor und Assembler mit
reinpassen.
Jörg
Och, wenn du einen dicken MC auspackst kannst du doch sicherlich ein
TinyBASIC mit einbauen. Das wäre dann sogar kompatibel zu den ganzen
alten Spielebüchern und wäre sehr nah am "Industriestandard" MSBASIC
2.0, würde halt nur das Fließkommazeugs fehlen. :)
So, bin grad an Breakout (Arkanoid) dran.
Das blöde ist die Ball Physik... will den Abprallwinkel ja abhängig von
der Paddlebewegung machen!
Das Paddel besteht aus 3 Zeichen. Ich könnte quasi wenn der Ball das
mittlere Zeichen trifft den Winkel so lassen, wie bei Pong.
Und dann abhängig ob die linke oder rechte Seite des Paddle getroffen
wird den Winkel vergrößern... aber wie? Leider kann ich nur mit ganzen
Zahlen arbeiten.
hi Dominik wie kommt man bei deinem ballE game wieder auf dem
Startbildschirm? er wurde mir nur einmal angezeigt ,wo ich das erste mal
das Spiel gestartet hab ? sonst echt super Spiel !!
Hi,
Danke :)
Wenn du Game Over bist, dann gelangst du wieder zurück...
Ansonsten musst du abbrechen mit CTRL+C
Im Moment sind halt nur die 4 Himmelsrichtungen sowie 1 Feuerknopf in
Verwendung!
Greetings Kilo
Can i purchase one of these boards, I have the original chipbasic2 board
with Atmega1284 insitu. I primarily use it with the AX81 configuration!
regards
Frank
Kilo schrieb:> So,> ich hab dann auch mal ein layout erstellt, welches ich vermutlich> demnächst auch ätzen lasse.>> Schnittstellen und Peripherie:> - Scart> - Chinch Video und Audio> - PS/2 Anschluss> - Serielle RS232> - USB an 2. serielle Schnittstelle> - 9 pol. parallel (Joystick, Belegung wie Atari, C64, etc.)> - Stiftleiste parallel I/O> - I²C> - 10 pol. und 6 pol. ISP>> Bauteile:> - 2 x EEPROM> - Dataflash auf Platine> - FT232RL USB Modul> - MAX232 für die serielle>> Hoffe das mit den Schnittstellen funktioniert.>> Habe jetzt nochmal versucht die Version 1.45 zu compilieren mit AVRA und> AVRASM2 und AVRASM32.... keine Chance... immer wieder unterschiedliche> Fehlermeldungen :(((((
Hi Frank,
I don't really sell the boards!
First I have to let produce them first but I'm still not satisfied with
the layout. I will change some of the hardware like USB, Sound, and so
on.
****
Bin noch in der Bastelphase... Zur zeit mache ich ein paar neue Spiele
und bastel noch was am Board. Teste ein wenig mit dem FT232RL Baustein.
Vielleicht wäre es dann sinnoll, die schnellere Hardware-Schnitstelle
des 644P als Systemschnittstelle zu nutzen. Der Aufwand dazu sollte sich
in Grenzen halten, da die Kommunikation über die libmio läuft. Die
ursprüngliche (Software-) Systemschnittstelle könnte dann entfallen,
dafür würde dann auch noch ein bisschen Flash frei.
Jörg
Hi Jörg,
ach das wäre ja super!!
geht das Pinmäßig auch mit dem ATMega1284P?
Wenn ja müsste man dann nur die def.inc ändern damit der AVREL.exe damit
umgehen kann oder? Weil ich hab zur Zeit nur den ATMega1284P rumfliegen,
keinen 644P
Hallo Dominik,
theoretisch sollte der Mega1284P auch mit dem "normalen" Hexfile gehen
und als Mega644P in der Statuszeile erscheinen. Ansonsten halt mit
anderem Include-File assemblieren.
Jörg
Ah ok...
das wäre ja noch besser!
Ich werde es mal ausprobieren! Danke :)
Würdest du die libmio denn anpassen an die 644P/1284P Version?
Dann baue ich das mal mit dem USB auf!
Hi Jörg,
kannst du mal kurz anreissen wie das mit dem Sound funzt?
Wie hast du das soundtable erstellt, auf welcher Grundlage?
Wären theoretisch 2 Kanäle machbar?
Wie funktioniert der Sound allgemein?
Gruß
Dominik
PS: bei diesem projekt bereue ich kein Assembler zu können!
So,
im Moment bastel ich an Breakout (Arkanoid)... Hab momentan schon 3
Level! Klappt super!!!
Anbei auch mal mein aktuelles Menü-layout im C64 Style :)
Und den aktuellen Zeichensatz. Hab ihn erweitert um Spielerelevante
Zeichen wie Hubschrauber, Motorrad, Raumschiff, Herz, Karo, pik und
Kreuz und und und... bin aber noch nicht fertig!
Auch am Sound habe ich was gearbeitet. die Noten mit langer Hüllkurve
klingen zur Zeit etwas elektronisch verzerrt. Bei Musik nicht schlecht.
Aber gefällt mir noch nicht ganz! Ich will ein etwas polyphoneren Ton
haben und etwas verzerrter!!
Auch das Platinenlayout wird sich wieder ändern. Bin mir aber nicht ganz
sicher ob ich das System modular aufbauen soll oder alles auf eine
Platine schmeißen soll. PCB würde mich momentan 39 € kosten :(
Hallo Jörg,
sag mal... wo sind denn die Farbeinstellungen der Zeilen im Editor?
Finde nur den Hintergrund.. also Border..
aber da wo die Zeilennummern stehen ist es immer noch schwarz :(
Ehrlichgesagt, dazu müsste ich auch erst den Sourcecode "durchkämmen",
aber das habe ich eigentlich nicht vor. Gleiches betrifft auch die
serielle Schnittstelle. Wenn ich in der offiziellen Version die
Schnittstelle permanent umstelle, würde ich mich selbst aussperren da
ich immer noch die RS232 nutze. Und andere vielleicht auch. Von daher
ist das für mich keine Option.
Jörg
Ich hab noch einmal drüber nachgedacht, vielleicht ließe sich die
Umschaltung des seriellen Interfaces über die Baudratenumschaltung
realisieren. Auf die 1200 Baud kann ich durchaus verzichten, dafür
könnte man dann 38400 Baud an der zweiten Schnittstelle nehmen. Da ich
zum Probieren keinen FTDI rumliegen hab, dafür aber einen AVR-CDC wäre
das die höchstmögliche Baudrate. Und Kompatibilität wäre immer noch da.
Allerdings zieht das weitere Kreise als nur Änderungen in der libio.
Wenn das OK wäre, würde ich mich im Laufe der Woche mal dransetzen.
Jörg
Hallo Jörg,
also ICH habe nichts dagegen :)
Musste übrigens den Dataflash baustein von der Platine schmeißen. Beim
Flashen des AVR wird dieser gelöscht. Das heißt er muss steckbar sein
und darf nicht parallel zum ISP liegen :(
Bislang habe ich es nur geschafft ein bißchen Zeichencode und Farben zu
ändern. Naja bis auf den Editor, da finde ich keine Farbinformationen
der einzelnen Zeilen.
Ich schaffe es einfach nicht mich durch die Bytes zu arbeiten um zum
Beispiel mehr Zeilen im Editor hinzukriegen. Also ich kriege schon eine
96. zeile hin, aber dann gibts nur Systemkomplikationen :)
Gruß
Dominik
PS: An der Auflösung im Textmodus lässt sich nichts mehr ändern so
einfach oder?
Hallo Dominik,
es sollte reichen, den /RESET Pin des Dataflash mit dem des ATMega zu
verbinden. Dann beibt der DF während der ISP im idle und es sollte
nichts überschrieben werden. Bei "Erweiterungen" ist das auch so
dargestellt.
Ich glaube nicht dass es möglich ist, an Auflösung oder Zeilenanzahl
noch groß zu optimieren ohne andere Dinge in Mitleidenschaft zu ziehen.
Weil meiner Meinung nach ganz einfach der Controller schon fast bis auf
das letzte Bit ausgereizt ist.
Die Farbe für die Editorzeilen findet sich übrigens in der Datei
libmio_tvm.asm (Videoausgabe für den editor) ca. bei Zeile 232 und nicht
im Editor selbst:
ldi YL,0x0e ;1 dark white on black
Jörg
Danke Jörg!!!
Ach herrjeh... da steckt die Zeile also... :))
ich dachte auch eher an den 128P als Controller...
weniger Arbeit bei mehr Flash!
Das mit dem reset Pin verstehe ich nicht ganz!
Um den DF im Betrieb zu beschreiben, muss dieser doch zwangsläufig mit
allen Pins verbunden werden laut "Erweiterungen"
Wenn ich nun parallel dazu den Flash des Atmegas beschreibe also eine
neue Hex reinflashe, bekommt der DF alles mit ab! Welche Pins müsste ich
denn dann physikalisch trennen durch Jumper?
Während des Flashens über ISP wird der ATMega im Reset gehalten (=LOW),
bei einer Verbindung zum Dataflash befindet sich dieser damit auch im
Reset und sollte nicht auf Kommandos reagieren. Ebenso könnte man dem
CS-Signal noch einen Pull-Up spendieren.
Getestet habe ich das aber nicht, da sich bei meinem Aufbau
(Dataflash-Module) ISP und Dataflash gleichzeitig rein mechanisch
ausschließen ;-)
Beim Mega1284P sollten sich mittels eines entsprechenden IRAM-Treibers
zumindest 12K RAM als Array-Erweiterung nutzen lassen. Alles andere ist
wohl mit größerem Aufwand, tiefgreifenderen Änderungen im System und
Verlust der Komatibilität zum Mega644(P) verbunden.
Jörg
Mh, ich werde mal schauen was ich mache. Schön ist natürlich so eine
kleine "Festplatte" mit an Board zu haben. Naja, der Dataflash wollte
nach dem flashen des Atmegas neu formatiert werden. Von daher hat er
sich beim flashen irgendwie daneben benommen. Soll ich also mal CS und
Reset einen Pullup am DF spendieren?
Das ist natürlich schade mit dem Aufwand. Wenn ich Assembler genauso gut
könnte wie Deutsch, dann würde ich mich da ransetzen :(
Nichts für ungut Jörg, der Chipbasic Compi ist genial, das steht außer
Frage... Aber mehr Platz für Basiczeilen, eine bessere Auflösung und VGA
wären natürlich das Optimum mit nur einem Chip!
Mensch, VGA hat doch beim ZX auch funktioniert... :(
Hallo!
Am Wochenende war endlich mal Zeit sich Jörgs 1A "homecomputer" selbst
aufzubauen um damit aus dem Schatten der "nur Mitleser" zu treten..
Nachdem die Schlatung auf einer Experimentierplatine aufgebaut war
(siehe Bilder 644LPunten/oben) den 644 mit dem hex file aus dem Paket
von Jörgs Seite programmiert und schon ging es los.
Ich bin echt begeistert was der 644 leistet im Vergleich zum seeligen
ZX81. Die Limitierung auf 90 code Zeilen war nur auf den ersten Blick
eine denn Unterprogramme lassen sich ja zur Laufzeit nachladen - sehr
schlaues Konzept!!
Der Spaß ließ dann nach einer Weile nach weil das Bild ein Geisterbild
verunziert... siehe Bilder "Bildausgabe"..
Es sieht so aus als ob der Takt des 644 instabil ist also 20MHz Quarz
eingelötet und die SMD Kondensatoren durch bedrahtete ausgetauscht.
Leider keine Änderung.
Die Bilder sind mit einer Wandlerbox FBAS - VGA von einem LCD Monitor
aufgenommen, das Problem bleibt aber auch mit anderem Kabel, an einem
analogen Fernseher gleich.
Die 5V Versorgungsspannung sind auch nicht Quelle der Störungen
Ich früchte damit sind die Hardwaremäsigen Fehlermöglichkeiten
abgeklappert oder fällt jemandem noch etwas ein?
So wie ich Jörgs Konzept verstehe, wie das Bild erzeugt wird, bleibt da
kaum eine Möglichkeit für einen "jitter", richtig?
Bleibt die Frage ob der hex-file ne Macke haben kann und ich mir selbst
einen hex-file erstelle. Jörg kann das sein?
Die fuse settings sind dreimal geprüft und sind so gesetzt wie sie
sollen.
Sachdienliche Hinweise zur Ergreifung des Übeltäters nehm ich gerne
entgegen!
Vielen Dank auf jeden Fall für das schöne Wochenendprojekt und einen 1A
homecomputer!!
Alex
Beim AX81 war das Ganze monochrom, und soviel höher war die Auflösung
auch nicht. Von daher eher keine sinnvolle Alternative.
Ohne externe Hardware wird auch nicht viel mehr zu schaffen sein. Mit
externem 128K RAM + Video-Register (HC374) komme ich bei 20MHz AVR-Takt
(Mega644) auf maximal 320x240 bei 256 (festen) Farben für TV und VGA.
Das ist zwar nicht schlecht und auch recht schnell, aber 320x240 ist
halt für ernsthaftere Anwendungen als Spiele zuwenig. Jetzt bin ich am
überlegen, den HC374 durch ein kleines CPLD zu ersetzen. Dann sollten
wenigstens auch 640x480 bei 4 Farben (aus 16) möglich sein.
Jörg
@ Alexander
tritt das Phänomen auch bei RGB auf? Eventuell hilft es, den
Videoausgang auf der Leiterplatte mit 100-150 Ohm "abzuschließen". Auf
das Hexfile als Ursache würde ich nicht tippen. Das Ausfransen des
Borders in Bild 2 ist normal (gilt auch für das Border-Ende am rechten
Bildrand), da hier keine aufwändige Synchronisation auf den Timer
gemacht wird.
Bei den den Geräten, mit denen ich getestet habe liegt das aber
außerhalb des Sichtbereiches.
Jörg
@ Jörg
mhhh, das klingt natürlich sehr verlockend! Und hey, wenn wir jetzt
schon tolle Spiele programmieren können, was wäre dann erst mit 320x240
bei 256 farben möglich??? Das ist doch ausreichend!!!!
Aaaaaaber: Mein problem ist, der Parallelport! Da hängt natürlich ne
Joystickbuchse dran! Sprich: Ich habe 6 der I/O pins belegt. Da würde
kein externer RAM mehr dranpassen... Nur was nützt die neue Auflösung
und die 256 farben wenn man die Spiele nicht mehr mit Joystick spielen
kann? :(((
Heul... ist das tricky..
Nein, mit der ChipBasic Hardware funktioniert das überhaupt nicht, das
war ein eigenes Projekt, eine Art "Grafikkarte", die seriell angesteuert
wird. Außer den beiden seriellen Portleitungen war auch kein weiterer
Pin mehr am Controller frei ;-)
Das Projekt ist eigentlich schon aus dem Jahr 2011, wegen Zeitmangels
für die Doku habe ich es aber nie veröffentlicht. Ohne Doku ist es aber
mehr oder weniger nutzlos, da es glaube ich knapp 100 verschiedene
Funktionen bis hin zum (rudimentären) 3D-Rendering gab und dazu noch
jede Menge Parameter.
Mit der bestehenden Hardware und einem Mega1284P wären bei VGA grob
gerechnet 200x150 Pixel (16 Farben je Pixel) möglich, wenn man die
unterschiedliche Pixelbreite (3 / 2 Takte) akzeptiert. Das VRAM benötigt
dann aber schon 15K, da beleibt für den Rest nicht mehr viel übrig.
Jörg
Mh.. naja ich vermisse halt die Textauflösung wie sie beim C64 z.B. war
oder bei anderen AVR Computer Projekten.
naja ok, theoretisch sollte man den nötigen Platz für das VRAM ja schon
kriegen, wenn man Sachen rausschmeißt die man nicht unbedingt braucht.
Vor allen Dingen musst Du Dir ein schnelleres Timing einfallen lassen,
um die Zeichen auszugeben. Momentan braucht es 30 Takte je Zeichen, 5 je
Pixel. Um 40 Zeichen darzustellen musst Du das auf 4 Takte je Pixel
reduzieren, also 6 Takte je Zeichen einsparen. Durch Aufrollen der
Schleife, verlagern der Zeichentabelle in das RAM und geschickte
Registernutzung lässt sich das sicher hinbiegen. Dann kommt aber noch
der ganze "Rattenschwanz" an funktionalen Änderungen dazu (z.B. Menüs).
Irgendwann ist es einfacher, das Ganze komplett neu zu entwickeln.
Monochrom geht es auf jeden Fall schneller, siehe 60-Zeichen Treiber.
Jörg
Hallo Jörg!
Danke für Deine Tips!
Der erste Tip, nach einer Fehlanpassung des Videoausgangs in Richtung
zur FBAS-VGA Wandlerbox zu suchen hat keine Änderung gebracht.
Der zweite Tip, Deine Erklärung zu dem "ausgefransten" linken Bildrand
hat jetzt wohl auch die Erklärung für meine Schatten behaftete Ausgabe
gegeben.
Mein Videosignal hat mit dem Scope gemessen die gleiche zeitliche
Unsicherheit (siehe Bild) und wird damit der Grund für die Macke in der
Bildausgabe sein -> also erstmal "working as designed".
Bei nächster Gelegenheit probiert ich den Tip aus den Fernseher per RGB
- Scart mit einem Signal zu versorgen und werde dann wieder berichten.
Es war doch mal einer hier im threat der die RGB Bildausgabe mit einem
IC auf FBAS gewandelt hat.
War das Bild dort so scharf und ruhig wie man es sich wünscht?
Bzw. hat noch wer anders die gleichen Anzeigeprobleme gesehen?
Danke wieder für eure Hilfe!
Alexdander
Hallo Alexander,
ich kann jetzt die Messung nicht nachvollziehen, aber der Beginn der
Bildinformation (nicht des farbigen Randes) sollte sich bezüglich zum
horizontalen Synchronimpuls nicht ändern. Ansonsten wäre ja das ganze
Bild ausgefranst. Eventuell könntest Du das Oszi im "Normalmodus" (nicht
Video) betreiben und auf die steigende Flanke vom HSYNC triggern.
@Dominik
Ich habe die Änderungen bezüglich seriell fertig, muss sie aber noch
testen. Vielleicht komme ich am WE dazu.
Jörg
Hi Jörg,
ui.... das klingt ja klasse!
Bin mal gespannt und freue mich :)
Ach man... bei Pollin gibts wieder tolle kleine PAL TFT's.. könnte man
nen super Laptop bauen aber dafür ist die Bildausgabe per Bas s/w und
das ist blöd :(
Ich werde jetzt mal einen Computer aufbauen und in ein altes
Modemgehäuse einpflanzen + der FBAS Schaltung weiter oben von Ralf -
Rainer Ratke!
Die Modemgehäuse eignen sich perfekt, zumal Aussparungen für die
wichtigesten Anschlüsse vorhanden sind.
Momentan weiß ich noch nicht genau wie ich mit dem Parallelport umgehen
soll. Entweder mit einem Schmitt-Trigger als Joystickport oder als I/O.
Oder kombinieren, dann hab ich aber nur einen Input Port mit passiven
Schaltern die auf Masse gezogen werden. Steuern und regeln hat sich dann
erledigt! :(
@Ralf - Rainer Ratke
Woher hast du die Motorrola IC's denn bezogen? Ich habe sie nur bei Ebay
gefunden und dort auch nicht wirklich massig!!
Gruß
Dominik
Kurzer Zwischenstatus: die Änderungen sind leider noch nicht fehlerfrei,
manchmal hängt das System beim seriellen Loader und start sich laufend
neu. Da muss ich jetzt die nächsten Tage mal drüberschauen.
Zu den FBAS-Schaltungen habe ich keine Erfahrungen, lediglich für den
CPLD-FBAS-Encoder, den ich ursprünglich für den ChipBasic Computer
entwickelt hatte. Und den konne man einfach an den unveränderten "UNI"-
Videoport anstecken.
Jörg
Hallo Jörg,
nungut, ich baue die FBAS Schaltung mit dem Motorrola mal zu Ende und
hänge sie an den Videoport. Mal schauen was passiert!
Bei Pollin gibts übrigens für 14 Euro ein kleines LCD mit FBAS Anschluss
PAL/NTSC... perfekt
Außerdem eine kleine Platine auf der man die Flashbausteine auflöten
kann und mit Stiftleisten versehen kann... Noch perfekter.
@ Dominik
Die Wiederstände für den SCART Ausgang brauchst Du auch für das
converter IC.
Über die unterschiedlichen Spannungspegel die auf den Ausgängen Rot,
Grün, Blau ausgegeben werden wird die aktuelle Farbe des Bildpunktes
"gemsicht".
Die eigentliche Funktion des converter ICs ist die 3 Spanungspegel
zusammen zu fassen, damit die Farbe des Bildpunkts ermitteln und diesen
Wert in eine
Frequenz umzuwandeln - fertig ist das FBAS Signal... in der groben
Übersicht!
Das Pollin Display habe ich auch schon gesehen, kam mir aber aber etwas
klein vor und wenn ich es richtig gelesen haben zeigt es 16:9 an womit
die
Darstellung in der Breite verzerrt ist. Leider habe ich in den
Pollinunterlagen nichts gefunden ob man auf 4:3 umschalten kann.
Berichte mal von Deinen Erfahrungen wenn Du es Dir kaufen solltest.
Übrigens auch ohne das converter IC sollte ein Bild zu sehen sein, halt
nur in Schwarz/Weiß.
@ Jörg
Du hast das Scopebild genau richtig interpretiert!
Das Scope triggert auf den Vertikalimpuls und so kommt es daß die h-sync
Impluse "zittern" wenn ich eine einzelne Zeilen anzeigen lasse.
Trigger ich auf den h-sync steht das Signal wie eine 1 genau so wie Du
es vermutet hast!
Die zeitliche Unsicherheit am linken Rand fällt bei dieser Anzeige nicht
auf. Ich seh in dieser Ansicht auch absolut keine Störungen die mein
Schattenbild erklären könnten. Auch unterschiedliche Abschlußwiderstände
ändern an dem sehr sauberen Signal nichts, lediglich an der Amplitude
(wie erwartet).
@Alex
Na das man auch so ein Bild sieht ist mir klar... aber ich will ja eben
kein s/w sondern in farbe und bunt! :))
ich muss nochmal nachgucken.. wenn das wirklich 16:9 ist, dann ist das
ein bißchen blöd!
Egal.. mal testen!
Sooo... FBas Schaltung gebaut, drangehängt, kein Signal! :(
Das Signal am Scope gefällt mir auch irgendwie nicht.. mh!
Jetzt beginnt die Fehlersuche...
Halloe.
Ich habe da seit einiger Zeit ein Problem, eine SPI-Erweiterung über das
Kommando SPISEL und SPI() ans laufen zu kriegen und komme einfach nicht
weiter. Ich habe eine nette kleine Platine gebastelt und wollte an den
SPI- Bus eine Multiselekt-Erweiterung anbauen, da ich mehrere SPI Geräte
steuern wollte.
Das ganze liegt nu schön länger auf meinem Tisch und will einfach net
laufen. Nun hab ich mir letzte Woche endlich mal einen 10 Euro
Logikanalyser gekauft und bin dem Problem näher auf den Grund gegangen.
Ich verwende die Version 1.45 von ChipBasic auf meinem 644p(er) Board.
Das angehängte Bild zeigt einen Scann der Kommunikation mit folgenden
Befehlen:
SPISEL 0
A = SPI ( 85 )
SPISEL $FF
A = SPI ( 15 )
Was mich wundert ist, das die ChipSelekt- Leitung mit Signal (SS) auf
Pin5 ihren zustand nicht wie beschrieben ändert, sie bleibt die ganze
Zeit auf LOW. Ich hätte erwartet, das sie bei dem Commando SPISEL 0 auf
HIGH wechselt.
Ich hab inzwischen auch schon selbst im Sourcecode rumgesucht, konnte
den Fehler aber nicht wirklich finden. Eigentlich wird der Port wie in
der Anleitng beschrieben umgeschatet, aber irgendwie scheint der Port
nicht auf Ausgabe zu stehen obwolh das im Init-Block am Anfang
eigentlich richtig gesetzt wird, oder ich habe sonst noch was übersehen.
Hat schon jemand erfolgreich eine MultiSelekt Erweiterung ans laufen
bekommen und wie sah eure Schaltung aus ?
Freundliche Grüße
Frank
hallo,
Ich will Chip-8-Programme laden und der Autor sagt: "Der
Chip8-Interpreter Braucht sterben daten in Einem bestimmten Format, und
Zwar Einem 4 KBytes grossem Speicherabbild zusatzlich Sind Verzögerung
und sterben Tastenbelegung hinterlegt..
Wann & DaZu sterben Programm Aus dem Internet heruntergeladen und Werden
mittels der Programme im TOOL-Ordner Konvertiert Werden. "
Wo ist das Programm, um Chip-8-Dateien konvertieren??
Tut mir leid, mein Deutsch, aber sie sind von google translate.
@Frank
da scheint sich wirklich noch ein Fehler eingeschlichen zu haben der
dazu führt, dass immer nur das DatanFlash angesprochen wird. Einen Fix
habe ich schon, muss ihn aber noch testen
@711LAB
The tool for converting chip8 programs is currently missing in the
archive (like the examples). You will find it in the 1.43 package.
Jörg
Thanks! Ich hatte das Programm von Cygwin auf WindowsXP ausführen, wird
es ok. Ich habe alle chip8 Spiele, die ich im Internet finden umwandeln
und Getestet habe ich sie auf der Chip-8 Emulator, funktioniert es ok.
Wissen Sie, wie die EMU-8080 funktioniert? In welcher Position ich es
laden und muss ich laden zusätzliche Bibliothek?
711LAB .. schrieb:> Hallo, ich habe dieses Problem auf 16 Farben SCART. Das Monitorbild ist> sehr schlecht. Was ist das Problem?
Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht
bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde
mal schauen, ob da nicht ggf. ein Fehler im Layout ist.
Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten,
das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9
poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten.
Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte,
muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über
Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle
anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum
Thema Scart sehr weiter geholfen.
Grüße
Frank
Lange genug hat es ja gedauert, die aktuelle Version (V1.48) ist ab
sofort verfügbar:
http://www.jcwolfram.de/downloads/main.php#chipbasic2
- Bugfix bei SPISEL (zumindest im LA scheint es jetzt zu passen)
- Bugfix: Cursortasten bei INPUT konnten zum Absturz führen
- Die System-Schnittstelle geht jetzt auch wahlweise über 38,4K / USART1
- IRAM-Treiber für Mega1284P (experimentell)
Jörg
Hallo Patrick,
das sollte ohne Probleme möglich sein. Den IRAM12-Treiber habe ich auch
damit entwickelt und getestet, wenn auch nicht mit der finalen Version.
Jörg
Hallo Jörg , ich kann mit dem 1284 leider keine Programme laden, weder
vom d-flash noch aus dem editor, er atmega speichert sie nicht ab weder
unter der 1,48 noch einer älteren version (zum Test die 1,43
Aufgespielt) wenn ich im editor ein Programm schreibe bleibt der nach
dem speichern der Cursor jn der position, so wie es sein soll aber das
Textfeld ist dann leer
Hast du eine Idee , woran das liegen kann? Vielen Dank
Patrick
Hallo Patrick,
erst musste ich auch überlegen, warum das so ist. Letztendlich ist mir
dann doch wieder eingefallen, dass beim Mega1284P eine minimale Änderung
notwendig ist, die aber zum Mega644(P) inkompatibel ist.
Neben einem anderen Include-File für den Mega1284P, welches auch mit dem
Mega644(P) funktioniert, müssen in der main.asm die letzten 3 ORG
Anweisungen geändert werden:
Hallo Jörg,danke dachte schon der neue ATmega wäre kaputt
leider klappt das kompilieren nicht unter Windows
,bringst du evtl. noch eine passende HEX für den mega1284
raus, das wäre echt super weil der Computer macht echt
viel Spass!
nochmals vielen Dank!
gruss Patrick
Ich habe jetzt eine neue Version (v1.49) hochgeladen, bei der auch ein
Binary für den Mega1284P mit dabei ist. Fuses sind die gleichen wie beim
Mega644(P). Zusätzlich gibt es zwei neue Befehle für Textlänge bestimmen
(TLEN), rudimentäre Suche in Texten (TFIND) und einen Bugfix bei CTEXT
(hier wurden teilweise zuviele Bytes in das Array kopiert)
http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php
Jörg
Frank Zoll schrieb:> Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht> bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde> mal schauen, ob da nicht ggf. ein Fehler im Layout ist.>> Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten,> das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9> poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten.>> Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte,> muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über> Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle> anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum> Thema Scart sehr weiter geholfen.
hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass
die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht.
Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen
sie die richtigen Farben. Aber noch kein Sync.
Wie kann kein Sync getan werden? es gibt keine Sync Pins in den
Scart-Anschluss.
sv3ora schrieb:>> hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass> die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht.> Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen> sie die richtigen Farben. Aber noch kein Sync.> Wie kann kein Sync getan werden? es gibt keine Sync Pins in den> Scart-Anschluss.sv3ora schrieb:> Frank Zoll schrieb:>> Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht>> bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde>> mal schauen, ob da nicht ggf. ein Fehler im Layout ist.>>>> Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten,>> das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9>> poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten.>>>> Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte,>> muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über>> Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle>> anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum>> Thema Scart sehr weiter geholfen.>> hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass> die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht.> Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen> sie die richtigen Farben. Aber noch kein Sync.> Wie kann kein Sync getan werden? es gibt keine Sync Pins in den> Scart-Anschluss.
Ich überprüfte die hsync VSync r g b-Signale auf einem
Oszilloskop, scheinen sie von einem ersten Blick in Ordnung. aber wie
wird das RGB synchronisiert, wenn kein Sync-Signal wird durch sie
hindurch an den Fernseher?
Das Sync kommt über das Composite Video Signal an Pin 20 der Scart
Buchse. Dort muss das normale (s/w) BAS Signal ankommen, dazu muss J2
offen sein (CSYNC). VSYNC wird bei Scart und BAS nicht gebraucht, nur
beim TFT. Das BAS-Signal von Pin 20 der (Scart) kann man mittels
Cinch-Stecker am Fernseher testen. Nur RGB zum Scart zu führen, reicht
nicht aus.
Jörg
Ja Stift 20 verbunden und ich kann das BAS-Signal (B & W) im Fernsehen
von diesem Stift zu sehen. Jedoch kann das Farbvideosignal nicht
stabilisieren. Ich habe dies auf 2 Röhrenfernseher und 2 LCD-Fernseher
getestet. Die LCD-Fernseher nicht jedes Bild an allen zu zeigen! Ich
weiß nicht, was falsch ist. Hat jemand versucht, den Computer ohne die
Leiterplatte zu bauen, wie ich es tat?
Nachdem durch das Fehlen der Farbe enttäuscht, bin ich den Aufbau einer
minimalistischen Version der Computer, nur mit B & W.
Diese Version hat einen eingebetteten Programmierer und ein
Null-Modem-Verbindung, also kann es so programmiert werden und laden die
Programme ohne spezielle Kabel. Nur die notwendigen Komponenten sind
enthalten.
Es ist sehr schwer, mich auf Deutsch zu schreiben, über Google zu
übersetzen ...
Halloe.
Ich habe mitlerweile erfolgreich eine eigene Platine erstellt und dabei
keine Probleme mit dem Sync oder den Farben. Ich habe hier mal meinen
aktuellen Entwicklungsstand als ZIP- File drann gehängt.
Wobei ich von den 3 Platinen an denen ich arbeite nur die Hauptplatine
angehängt habe. Auf den Fotos sieht man noch die SPI I2C RS232
Erweiterungsplantine. An dieser debugge ich noch, da ich da mit der SPI-
Selekt- Logik probleme habe. (p.s. Konnte die aktuelle Version der
Firmware aus Zeitgünden noch nicht testen...).
Von Links kommt das Kabel von der Netzteilplatine rein, welche ich für
dieses Projekt ebenfalls selbst erstellt habe.
Ich habe das ganze mit KiCad entwickelt und dann mal beim Chinaman je 10
Platinen in Auftrag gegeben. Bisher habe ich nur einen Satz platinen
wirklich bestückt. Ich bin noch dabei alle Funktionen durchzutesten.
Aber der Scrat- Anschluss an dem hier interesse besteht, funktioniert
bei mir Problemlos mit 2 verschiedenen Fernsehern. Für die, die kein
KiCad installieren möchten, habe ich den entscheidenen Ausschnitt aus
dem Schaltplan als JPG extrahiert.
Wie man sieht habe ich das Composite- Signal nicht auf Pin 20 sondern
auf Pin 19 der Buchse gebracht. Auch das ist beim Scart- Kabel über
Kreuz und ich hab lange rumgesucht bei meinem ersten Verauch um das raus
zu bekommen :-) Dachte immer, ich hätte bei meiner ersten, noch selbst
geätzten Platine irgendwo einen anderen Bug...
Hoffe ich konnte helfen.
Grüße
Frank
Haben Sie bemerkt, dass die Scart-Schaltplan in Jörgs Website ist
falsch? zwei der Farben müssen getauscht werden. Also das schematische
funktionierte gut für Sie?
Ich muss Kuppel haben einige Fehler auf mir, denn ich kann es nicht
laufen Farbe auf den Scart.
Ich habe noch mal nachgeschaut, im Schaltplan "Uni auf Scart" sind
wirklich Rot und Grün vertauscht. Das werde ich in den nächsten Tagen
korrigieren. Ursache dafür ist, dass ich den Uni-Anschluss damals erst
anders geplant hatte. Der Schaltplan mit Scart direkt, den wohl die
meisten Nachbauer benutzen, hat diesen Fehler nicht.
Läuft der Scart-Anschluss mit dem BAS-Signal stabil in S/W (Ohne
Austast-Signal an Stift 16 des Scart)?
Jörg
Wenn ich richtig verstehe Ihre Frage (Google Translate), Die B &
W-Signal funktioniert ok durch den Scart-Anschluss. Es ist nur das
Farbsignal, das nicht funktioniert (vertikal und horizontal sync
Verlust).
Wenn ich einen RGB zu Composite-Video-Chip von außen (wie der AD724),
dann färben Composite-Video kommt aus ok.
Aber die AD724 kommt RGB als auch H-Sync und V-Sync-Signale als Eingabe.
Es scheint irgendwie, dass es ein Problem mit dem Fernseher, um die
H-Sync und V-Sync-Signale auf den Scart-Version ohne den AD724 zu
erkennen.
Es gab seinerzeit mindestens 2 Leute die sich daran versucht haben,
ChipBasic nach C zu portieren. Aber wahrscheinlich sind sie daran
gescheitert, würde mich auch nicht wundern. Es fängt schon damit an,
dass ich bestimmte Register als Konstanten benutze (const_0,const_1)
oder aus Geschwindigkeitsgründen für die Videoausgabe reserviere
(vline_l/vline_h). Außerdem wimmelt es von Stack-Manipulationen, um
Codegröße zu sparen. Ohne diese und andere "Tricks" würde das Ganze auch
in ASM nicht in das Flash passen. Ich stecke jetzt nicht soweit drin,
aber ob der Compiler erkennt, dass an anderer Stelle die Register in der
gleichen Reihenfolge vom Stack geholt werden und bei zeitunkritischen
Stellen einfach dorthin gesprungen wird anstelle dieselbe POP-Orgie
wieder zu veranstalten.
Auch beim "Nachfolgerprojekt" (mit anderem Controller) bin ich nach
einem kurzen Ausflug nach C (das nutze ich praktisch nur auf dem PC)
wieder zu ASM zurückgekehrt. Allerdings wird es da Systemschnittstellen
geben, über die man Anwendungen problemlos auch in C schreiben kann.
Jörg
Hi Jörg,
ich kann da echt nur den Hut vor ziehen!
In C würde das mit Sicherheit nicht in den µC passen!
Aber ich finde es schade das ich den ASM Code nicht so gut lesen kann
wie eben C Code...
Es hapert ja wie gesagt schon an den Farben!
Beispiel 1:
Ich habe die Zeilen im Editor blau gemacht.
Der Hintergrund ist aber trotzdem schwarz. Und zwar so, dass zwischen
den Blauen Zeilen im Editor immer noch schwarze Striche zu erkennen
sind. Blöd, wenn man alles blau haben will, man aber nicht die Farbe des
Hintegrund findet.
Beispiel 2: ich finde nirgends die Farbinformationen der Leiste mit den
Funktionstasten (EXIT, LOAD, SAVE, etc.)
Ähm, wie verhält sich das eigentlich mit dem Bibliotheken?
Wenn ich jetzt den Tile/Sprite nutzen will, sagt er mir, die Bibliothek
ist nicht vorhanden! Wie geht denn das?
Hallo Dominik,
1. Während der Zeilenzwischenräume (linien 10 und 11) wird kein Video
ausgegeben, daher beliben die Zwischenräume schwarz. Um das zu ändern,
müsste man das Video-out an der richtigen Position auf blau schalten und
dann auch wieder an der richtigen Position am Zeilenende auf schwarz.
2. Die Farben für die Menüs sind in libmio/library.asm ab dem Label
libmio_menu_at fest codiert.
3. Viedotreiber funktionieren generell nur auf Programmplatz 8, da die
Einsprungadressen fix sind. Um den Tilemode zu nutzen, muß
*tilemode.bin* an Programmplatz 8 geladen werden. Dann sollte es auch
klappen.
Jörg
Hi Jörg,
danke schön!
Das mit den Farben hab ich jetzt gefunden!
Jetzt hab ich aber noch andere Grundsatzfragen zum Thema asm:
1. Farben
Woran sehe ich, welche Farbe 0x80 das ist? oder das: 0x2e
2. Api
In der Doku sind die Api beschrieben. Wie werden diese denn benutzt?
3. Seriell
Kann ich, den CB Computer an einen PC anklemmen und ohne TV mit diesem
kommunizieren? In der Doku steht was mit dem seriellen Lader... press
space to start... etc. wo erscheint das dann?
Hallo Dominik,
1. Da die RGB(I)-Ausgänge an PORTC.4-PORTC.7 liegen, haben die Bits
folgende Bedeutung:
1
7 Hintergrund grün
2
6 Hintergrund rot
3
5 Hintergrund blau
4
4 Hintergrund Intensität (nur mit 16-Farb-Erweiterung)
5
3 Vordergrund grün
6
2 Vordergrund rot
7
1 Vordergrund blau
8
0 Vordergrund Intensität (nur mit 16-Farb-Erweiterung)
0x80 ist demnach schwarz auf grün und 0x2e weiß auf rot (beide Male ohne
Intensity)
2. Man muss halt die api.inc oder api_macros.inc mit includen. Steht
auch mit kleinem Beispiel in der Dokumentation (Interna). Wichtig dabei
ist auch, dass der Header (Icon, Flags) richtig konfiguriert ist.
3. Das erscheint dann auf dem PC, falls Du dort gerade ein
Terminalprogramm am Laufen hast.
Hallo Jörg,
danke für die Info!
Ja mit dem seriellen lader... das klappt irgendwie nicht, oder ich habe
irgendwas vergessen.
Chipbasic an die serielle, Terminal am PC einrichten, Chipbasic
starten... nix passiert! Muss ich den seriellen Lader auf Autostart
stellen?
ich bastel gerade hardwaremäßig ein wenig an einem Tongenerator bzw.
Synthesizer, der hinter der Soundausgabe liegt.
ich möchte versuchen den Soundkanal etwas polyphoner klingen zu lassen
und verzerrter. Erste Versuche zeigten das ich auf dem richtigen weg bin
:)
So,
ich werde jetzt mal ein Spiel programmieren und das wie folgt machen:
Titel, Sound, Grafik, Levels, etc. auslagern auf verschiedene
Programmplätze, dann ins Dataflash speichern. Auf P1 einen Gameloader
programmieren der das Spiel, bzw. seine Elemente auf die verschiedenen
Plätze legt.
Dadurch ist das ganze Spiel auf dem DF und es ist möglich viiiiel mehr
als 95 Zeilen zu nutzen.
Jörg:
Kann man noch was am Sound machen? Vlt 2 stimmig?
So ich nochmal...
Multisync ist ja nicht gleich Multisync oder?
Gibt es überhaupt einen TFT Monitor, und ich meine nicht so ein
Einbaudisplay, das die Zeilenfrequenz des CB2 kann????
Huhu?
Hier ist ja nix mehr los :((
Frage:
ich bräuchte arrays, und zwar wie folgt:
array1 = "Test"
array2 = "Test2"
...
? @2,2;array1
Wie geeeeeeht das??? :(
Blöd ist, ich kann kein Array wie folgt definieren: array(1)$=".."
mache ich es mit Data 0,"Test",0
Und schreibe Ar(0) dann wird mir nur das "T" ausgegeben.
Ich kann das Array aber nicht in eine Schleife setzen, weil mit
irgendwann die variablen ausgehen bei mehreren Arrays...
Hilfe :(
Da das Projekt von mir kaum noch aktiv weiterentwickelt wird, schaue ich
auch nur von Zeit zu Zeit hier rein.
1. Der Lader muß nur da sein, allerdings habe ich ihn mit den 38,4K an
der zweiten seriellen Schnittstelle nie getestet. Kannst Du Listings aus
dem Editor über Deine serielle Schnittstelle senden?
2. Eine zweite Stimme wird wahrscheinlich am Platz im Flash und an der
verfügbaren Zeit in der horizontalen Austastlücke scheitern.
3. Es gibt das NEC-Display (NL3224AC35-01, mittlerweise relativ teuer),
eventuell gehen die Displays aus elektronischen Rückfahrspiegeln.
4. Du kannst ja an den Anfang des Arrays eine Tabelle legen, in der die
Positionen der "Teilarrays" hinterlegt sind. Ausgabe geht nur in einer
Loop, da es kein explizites Stringhandling gibt. So in der Art (ohne
Gewähr):
Hallo Jörg,
danke für deine Antwort.
Puh... das wird hart! Es geht sich um die Portierung von "Manager" eines
Bundesligamanagers vom C64.
Da liegen natürlich alle Mannschaften als Array vor die dann abgerufen
werden um die Spielpaarungen zu generieren. Ich glaube das wird für
Chipbasic zu kompliziert und komplex... schade :(
Man müsste wirklich irgendwie sowas anlegen können wie beim C64 a la
DATA und READ und per Read den String auslesen bzw. die Konstanten...
schade!
Ich hab mir auch schon überlegt anstatt das Menü zu Beginn einen
Bildschirm a la C64 darzustellen, sprich direkt den Editor. Aber ohne
zeilennummern, die müsste man selber eintragen. Gespeichert wird dann
"per hand" auf die 8 "unsichtbaren" Plätze... etc etc etc.
Nur wäre das wieder zu umfangreich umzubauen!
Nochwas: Wovon hängt die Auflösung im textmodus ab? Könnte man nicht auf
40 Zeichen pro Zeile kommen?
Eine andere Möglichkeit wäre, das Array vom Anfang her auf 0-bytes zu
durchsuchen, ist halt etwas langsamer. Und natürlich gehen auch 50 oder
60 Zeichen/Zeile, allerdings dann nur noch monochrom (siehe
Video-Treiber). Es sei denn, Du findest eine effizientere Methode zum
Pixel ausgeben oder änderst das Timing und übertaktest den Controller
auf 25MHz. Für einen "Nachfolger" hatte ich eine Zwischenplatine mit
CPLD und einen Mega1284P verwendet, das Projekt habe ich aber inzwischen
zugunsten eines neuen Konzepts mit dem S12XE aufgegeben.
Jörg
Hi Jörg,
mal zum Verständnis:
Hätte ich 40 Zeichen pro Zeile, dann würde die effektive Zeile im Editor
auch länger oder? Dem Parser ist es doch egal wie lang die Zeile ist
oder?
Wo finde ich die Zeilenanzahl? Also es wird wohl kaum im Source stehen:
Zeilen = 32
:-)))
Das heißt, wenn ich den µC übertakte, reicht das schon aus?
Sorry wenn ich so nerve aber ich seh da im Moment ne menge potenzial und
leider kann ich nicht so gut asm.
Naja, ganz so einfach ist es leider nicht. Denn beim Speichern im Editor
werden die Zeilen schon "vorcompiliert", d.h. Schlüsselworte zu Token
und auch Zahlen werden schon in Binärform gespeichert. Hauptgrund ist
natürlich die Ausführungsgeschwindigkeit. Beim Zurücklesen in den Editor
wird das Ganze Zeile für Zeile wieder in Text gewandelt. Die
Konvertierungen erfolgen zwischen zwei 40 Byte großen Puffern, wobei
aber nur jeweils 32 Bytes genutzt werden (können). Der gleiche Parser
übernimmt aber auch teilweise das Auswerten von INPUT.
Wenn Du den Controller übertakten möchtest, um mehr Zeichen je Zeile zu
bekommen, reicht es natürlich nicht, nur einen Meg1284P und einen
anderen Quarz zu nehmen.
- Video-Timing muss angepasst werden (libmio/definitions.asm)
- Die Videoausgaberoutinen müssen angepasst werden
- Das Video-RAM muß vergrößert werden (Adressen verschieben sich)
- Die Runtime ist auf 32 Bytes lange Zeilen ausgelegt
Mehr Zeichen bedeuten entweder weniger Zeilen oder längere Programme,
was dann natürlich auch Änderungen in weiteren Teilen (Load/Save) nach
sich zieht. Außerdem wird hinterher keiner der Videotreiber mehr richtig
funktionieren, es sei denn, man passt die auch alle an.
Das ist alles irgendwie machbar. Aber schon freie Zeilennummer-Eingabe
ist mit dem von mir entwickelten Konzept unverträglich. Denn
Zeilennummern existieren nicht als solche, sondern geben nur an, die
wievielte Zeile gemeint ist. Ein GOTO 7 bedeutet halt nur, dass die
Programmabarbeitung ab dem 224.Byte des Programmes fortgesetzt wird.
Denn eine leere Zeile wird trotzdem als 32 Bytes mit Zeilenende-Token im
ersten Byte gespeichert.
Von daher wirst Du Dein Ziel auch mit ASM-Kenntnissen ohne ein
grundsätzliches Re-Design nur sehr schwer erreichen.
Jörg
Also kurz gesagt:
Ich will aus einem Fiat Panda einen BMW X5 bauen und das am besten ohne
das Chassis zu verändern?
Ok, habs verstanden... :)
Schade! Da sind halt ein paar Sachen die nicht so einfach zu ändern
sind. Leider. Mit dem Array ist schon blöd.. Wollte einen Fußballmanager
programmiern :(
Auch blöd ist: Wenn ich Linien zeichne, welche unterschiedliche Farben
haben sollen, diese sich aber berühren oder nur dicht beieinander
liegen, so vermischen sich die Farben. Ich glaube das liegt eher an der
Blockgröße 6x8 die bestehen bleibt selbst wenn ich per PLOT ein Pixel
setze oder?
Also:
1
10 PLOT 2,2,1
2
20 PLOT 2,3,2
beide Pixel werden rot anstatt einer blau und einer rot...
hallo,
Wenn Sie die Schaltpläne und das PCB in dieser Seite sehen
http://www.jcwolfram.de/projekte/avr/chipbasic2/hard.php sie stimmen
nicht überein. Bitte auf die 15, 16, 17, 18 Pins des Mikrocontrollers
beziehen. Die Sende- und Empfangssignale nicht übereinstimmen die
Leiterplatte. Welcher Weg ist der richtige, dem Schaltplan oder die
Leiterplatte?
Es gibt jetzt eine neue Version (1.50), hauptsächlich gibt es jetzt
wieder die 1200 Bps als Baudrate, daneben noch einen Bugfix bei den
Screenshots. Aus Platzgründen musste dafür die Prüfsummenberechnung auf
der Konfigurationsseite entfallen.
Jörg
- Das mit den Pixeln ist normal bei Modus 0 und 1, wenn jedes Pixel
seine eigene Farbe haben soll, gehen nur die Videomodi 2 und 3. Denn
wenn ein Attribut-Byte für mehrere Pixel zusändig ist (2x2
Pseudografikpixel im Modus 0 bzw. 8x8 Pixel im Modus 1), bleibt ja gar
nichts anderes möglich.
Hallo Jörg ist das technisch möglich über ein ladbares Binär Programm
ein Update der chipbasic2 Firmware über serial zu flashen,das man nicht
immer an den isp rann muss(so wie der damalige Bootloader)?
Vielen Dank
Patrick
Hallo Patrick,
Ja, das geht. Und zwar über die API-Funktion api_wpage. Die RAM-Adresse
ist nicht mehr in in der API-Beschreibung im Y-Register, sondern liegt
fest bei Array-zelle 512. Je Aufruf werden 256 Bytes ab dem Z-Register
gelöscht und beschrieben. Während dieser Zeit werden keine Interrupts
bedient. Zu beachten ist dabei, dass es gegenüber dem alten Bootloader
damit möglich ist, das System komplett zu "zerschießen".
Jörg
Ich habe mal eine frage zu der FBAS Schaltung. Ich habe sie jetzt
mittlerweile zum 2. Mal aufgebaut und ich bekomme einfach kein signal.
Der fernseher erkennt zwar etwas und schaltet um auf schwarz aber es
kommt kein bild.
Wenn ichnkurioser weise die masseverbindung trenne dann erkenne ich ein
flackerndes buntes bild. Mehr nicht.
Wo kann hier der fehler sein? IC kaputt? Quarz kaputt?
Am Scope erkenne ich zwar ein signal aber es sieht alles andere als ein
fbas signal aus.
Hiiiilfe
Ich muss dazu sagen, dass ich das ganze per scart adapter an den
fernseher angeschlossen habe. Kann das fbas so gar nicht funktionieren?
Bas jedoch schon?
Hallo Dominik,
es wird kein FBAS-Sinal erzeugt, sondern BAS+RGB. Ich würde folgende
Vorgehensweise vorschlagen:
Wenn Du Pin16 des Scart-Steckers nicht beschaltest (oder den 180 Ohm
Widerstand entfernst), solltes Du ein Graustufenbild sehen. Wenn nicht,
Aufbau kontrollieren, insbesondere die verschiedenen Masseanschlüsse.
Wenn das Graustufenbild OK ist, Verbindung zu Pin16 herstellen. Wenn die
RGB-Signale richtig verdrahtet sind, sollte jetzt ein Farbbild auf dem
TV zu sehen sein.
Bei allen mir bekannten TVs muss man exlizit auf AV umschalten, damit
man ein Farbbild bekommt. Da liegt daran, dass die Spannung für die
AV-Umschaltung fehlt. Bei manchen schaltet die RGB-Umschaltung auch ohne
AV um, dann entstehen oft irgendwelche "Flackereffekte".
Jörg
Hallo Jörg,
schön das du auch noch da bist!! :)
Du hast mich falsch verstanden. Ich habe mir die FBAS Schaltung
nachgebaut mit dem MC1377 IC. Die wurde ja hier von Ralf - Rainer Ratke
vorgestellt.
Zuerst habe ich den Computer per BAS an den fernseher gesteckt. Also:
BAS -> Cinch/Scart Adapter -> Fernseher.
Funktioniert. Ich habe ein s/w Bild.
Jetzt habe ich das FBAS Signal aus der Wandlerschaltung genauso
angeklemmt.
Der TV erkennt zwar etwas, schaltet auf schwarz aber es kommt kein
Bild!!!
Gruß
Dominik
Sooo.... habe annäherend das gleiche problem wie Alex ganz oben gehabt.
Schwarzer linker rand auf dem bild. Nachdem ich die gemeinsame masse
getrennt habe. Anscheinend benötigt die fbas schaltung eine seperate
Versorgung. Na ganz toll. Dabei wollte ich sie mit auf dem Board haben.
Hätte nicjt gedacht, dass das sl kompliziert wird. Schade das der Ralf
sich hier nicht mehr meldet.
Hi Jörg,
ich bin ja immer noch am überlegen ob man nicht irgendwie ein GLCD
einbinden kann als TV Ersatz.
Was wäre der Computer ein Hammer, wenn er autark laufen würde und ich
den Editor auf einem GLCD laufen lassen könnte.
Würde das theoretisch gehen? Da ja ein GLCD eben als solches fungiert
und eigentlich keine Strings verarbeiten kann oder würde es eher mit
einem LCD funktionieren?
Gruß
Dominik
Moin,
habe gestern spaßeshalber mal den Computer per YPbPr an den TV
geklemmt. Also Bild war zu sehen! Sehr scharf sogar! Aber dennoch in s/w
und es flackerte!
Könnte man da was am Timing machen Jörg?
ich suche nach Lösungen für Farbdarstellung ohne Scart nutzen zu müssen.
Habe jetzt mittlerweile meinen 5. oder 6. Computer aufgebaut ohne das es
langweilig wird. Diesmal mit Onboard-Sound! Genial!
Hallo Dominik,
als LCD hatte ich damals das NEC NL3224AC35 getestet, das braucht
einfach RGB und Sync. Eine spätere (nie veröffentlichte) Variante des
BASIC-Computers mit Daughterboard (Mega1284P + CPLD) konnte auch u.a.
320x240 Displays mit 8 Graustufen ansteuern, das Projekt hatte ich aber
in einem frühen Stadium zugunsten des AX81 aufgegeben.
Wenn das Bild flackert und einen sehr starken Kontrast zeigt, kannst Du
probieren, einen 75 Ohm Widerstand zwischen Videosignal und Masse zu
schalten.
Am Timing kann man schon noch einiges machen, insbesondere lässt es sich
so verstellen, dass hinterher gar nicht mehr geht ;-) Aber hier würde
ich auch nicht zuerst den Fehler suchen, denn selbst mit meinem simplen
CPLD-FBAS-Encoder hat das mit zwei verschiedenen TVs ohne Probleme
geklappt.
Jörg
Hi Jörg,
ja die Frage ist ob meine FBAS Schaltung eine getrennte
Spannungsversorgung braucht. Denn erst wenn ich die Masseverbindung
auftrenne sehe ich immerhin ein Bild. Das ist komisch! Solange aber
keiner der Verantwortlichen der FBAS Schaltung hier antwortet sehe ich
keine Chance auf eine Lösung :)
Zum Thema flacken: ich habe nur rot grün und blau an den TV
angeschlossen als YPbPr Signal. Ohne Videosignal, das wird nicht
gebraucht. Das funktionierte!! Bis eben auf das flacken und s/w.
Und wie sieht es mit einem furznormalen GLCD aus a la DIP128-6 mit dem
beliebten KS controller?
ich meine jetzt nicht die Verwendund als handheld, sondern die
Darstellung des Editors auf diesem GLCD.
> ich habe nur rot grün und blau an den TV> angeschlossen als YPbPr Signal. Ohne Videosignal ...
Und woher soll dann die Synchronisation kommen? Irgendwelches Geflacker
auf dem Bildschirm würde ich jetzt nicht unbedingt mit "funktioniert"
betiteln.
Der Editor hat 23 Zeilen zu je 35 Zeichen. Wie soll das mit einem 128x64
LCD gehen? Mit Braille-Schrift um 90 Grad gedreht käme man auf
theoretische 21 Zeilen zu je 32 Zeichen, lesbar ist das aber nicht ;-)
Jörg
Bei YPbPr brauchst du kein extra Signal mehr! Es reichen drei
Leitungen! Aber es war eh nur zum Spaß gedacht. Ich glaube dafür müsste
man das Timing in der Software ändern! Jedenfalls war die Bildschärfe um
einiges besser!!
Ja ok, Thema GLCD kann man abhaken :) Naja man hätte die Editorzeilen ja
scrollen können! :) Zumal du dann auch keine probleme mehr mit den
ganzen TV Timing Sachen hast!
Hi Jörg,
Hab ne frage zum ADC.
Wenn ich das Oszi aufrufe zeigt es mir standardmäßig 5volt an obwohl nix
anliegt. Port A liegt aber die ganze zeit auf high. Warum? Schreibe ich
bei programmbeginn ein out 0,0 dahin dann beginnt liegt der port auf low
und die linie liegt bei 0 volt.
Aber: lege ich jetzt 2,56 volt an dann zeigt er mir 5 volt an.
Wie bekomme ich es hin, dass bei angelegten 2.56 volt auch nur ein adc
wert von 512 angezeigt wird und nicht 1023???
Hallo Jörg ,gibt es eine Möglichkeit die xmem 64 Erweiterung mit
Standard TTL ICS Aufzubauen, bzw hast du evtl einen Schaltplan?
Leider komm ich an den xillinx Baustein nicht ran geschweige hab ich die
Möglichkeit die Platine zu ätzen
Vielen Dank
Gruß Patrick
@Dominik
welchen Controller verwendest Du und funktionert die Anzeige zwischen 0
und 2,56V richtig? Evtl. stimmt die eingestellte Referenz nicht, hab im
Moment keinen "freien" CB2, um das zu verifizieren. Vllt. komme ich im
Laufe der Woche dazu.
@Patrick
Möglich wäre es schon, dafür müsste man den VHDL-Code in eine Schaltung
"übersetzen". Eine Schaltung an sich gibt es nicht, da die Logik in VHDL
geschrieben ist.
Jörg
Hallo Jörg,
das wäre super!!
Ich habe den 644er. Mich wundert es halt, dass der Port A ständig auf
high steht und ich erst mit dem DIR Befehl ihn auf Eingang setzen muss
bevor ich das Oszi verwenden kann.
zwischen 0 und 2,56 V habe ich noch nicht getestet.
Danke Jörg dann werde ich mal versuchen den Code umzusetzen,
Dann hab ich noch eine Frage ,wie kann ich eine RTC am besten
einbinden,hab noch eine pcf8583
Aus einen alten Videorecorder ,mit icomm hat das leider nicht
funktioniert
Gruß Patrick
Also Jörg...
2.56 volt am adc entsprechen 1023.
Das ist in meinem fall mies. Hab einen temp sensor angeklemmt und 12
volt spannungsüberwachung per spannungsteiler sowie ein poti. Adc0-2
Wie bekomme ich nun 5 volt referenzspannung anstelle der 2.56
momentan???
Hiiiiilfe
Nabend,
so, ich habe immer noch Probleme mit der blöden FBAS Schaltung. Immer
noch kein Bild! Kann denn hier niemand helfen???? Wo ist denn der
Entwickler der Schaltung? Muss man den CSYNC/HSYNC Jumper schließen??
Hiiilfe...
@Jörg
Hast du nicht noch zufällig eine FBAS Schaltung von dir rumfliegen??
Wenn Du Composite Sync brauchst, muss J2 offen sein, bei HSYNC
geschlossen. Bei CSYNC enthält das Saignal ein Gemisch aus horizontalem
und vertikalem Sync.
An eigenen Projekten kann ich nur das Folgende anzubieten, habe aber
selbst seit Jahren nichts mehr damit gemacht...
http://www.jcwolfram.de/projekte/vhdl/fbas_enc/main.php
Jörg
Mal ne andere Frage Jörg...
Ich will 12 volt messen. Bzw. 10-15 volt und habe einen spannungsteiler
genommen. 20k und 3,3k.
Normalerweise würde ich so rechnen:
ADCWert × 5 / 1024 × spannungsteilerverhältnis
Leider kann der computer ja keine kommazahlen.
Nutze ich aber das format !22 oder !44 oder was auch immer, dann kommt
nicht der richtige wert raus. Ich müsste meine zahlen so stark ändern
das zwar ein annähernd richtiges ergebnis kommt, der wert sicj aber
nicht im verhältnis zur soannung ändert.
Wenn ich folgendes eingebe:
ADCWert × 5 / 102 × 71 / 10
Dann wird mir ca. 12 volt angezeigt aber wie gesagt der wert ändert sich
kaum.
Wie kann ich das vernünftig machen???
Für solche Aufgaben gibt es den SCALE Befehl, der rechnet intern mit 32
Bit.
1
SCALE Variable,Y0,Y1,X0,X,X1
Bei 3,3K und 20K liegen bei 15 Volt Eingangsspannung 2,12V am ADC-Pin
an. Bei 2,56V Referenzspannung und 10Bit sollte das einen ADC-Wert von
850 ergeben. Das Ganze könnte dann so aussehen
Moin Jörg,
Ah ok danke...
Ja ich hab den ADMUX aus 5 volt referenz eingestellt. Ich rechne in
meinen C Projekten immer mit 5 volt ref.
Was mir halt wichtig ist wäre eine dezimale Ausgabe: 12,4 volt
Zum beispiel. Ich teste das mal.
Hi Jörg,
funktioniert!!
Hatte mich zwar vertan, Spannungsteiler ist 22k und 3,3k aber egal...
das wäre dann anstatt 850, 401
Auf jeden Fall funktioniert es! Danke.
hab an SCALE gar nicht gedacht!
Mahlzeit,
ich möchte Euch mal den Stand der Dinge zeigen. Ich habe etwas an der
Hardware und der Software geschraubt. Bin aber noch lange nicht fertig.
Kompakt und modular aufgebaut lässt sich der Computer perfekt im mobilen
Einsatz als Regel- und Steuercomputer einsetzen.
Hardwaremäßig wurden alle Schnittstellen nach außen geführt und sind
direkt erreichbar. Ein LED Treiber sowie ein LED Baustein stellen die
parallele Schnittstelle visuell dar.
Der Sound lässt sich per Jumper auf Intern oder Extern stellen. Einen
Port Expander sowie eine Relaiskarte habe ich aufgebaut und erfolgreich
getestet.
Softwaremäßig habe ich die Farben für den Schwarz/Weiß Betrieb angepasst
und die Menüs etwas überarbeitet, da es ohne Farben zu überladen und
unübersichtlich wirkt. Anstelle bunter Felder für die Funktionstasten
gibts nun deutliche Bezeichnungen wie "F1=Edit".
Gruß
Dominik
@Jörg
Nur mit dem seriellen Loader funktioniert bei mir irgendwie nicht.
Ich kann Programme über die serielle empfangen und senden aber der
Loader meldet sich jedenfalls nicht.
och, hier ist ja nichts mehr los!
Jörg, lebst du noch?
So langsam wird es eng, was die Beschaffung der dataflash angeht.
Mittlerweile gibt es dir 81 und 41er nicht mehr. Und die erhältlichen
liefen ja nicht erfolgreich mit dem Computer.
Was kann man jetzt tun?
Ich hatte das Glück mein Dataflash aus einer simens gigaset-basisstation
mit Anrufbeantworter ausschlachten zu können. Vieleicht gibt es da noch
möglichkeiten.
Patrick
Die Frage ist ob die neuen Typen unterstützt werden. Naja wie auch
immer. Ich hab ja noch 2 rumfliegen.
Ich habe jetzt auch endlich erfolgreich die FBAS Schaltung aufgebaut.
Jetzt gibt es Farbe über den Bas Anschluss.
Naja, das Projekt ist mittlerweise 7 Jahre alt. Wenn die neuen Typen
nicht funktionieren (hat das jemand ausprobiert) ließe sich das Programm
sicher anpassen. Es ist ja Open Source. Wichtig ist auf jeden Fall, dass
der AT45DB081E scheinbar nicht mehr 5V-tolerante Eingänge hat. Also
braucht man entsprechende Pegelwandlung, z.B. durch Spannungsteiler.
Jörg
Hallo Jörg,
Schön das du noch da bist. Der C64 ist auch uralt und trotzdem gibts ihn
noch. :)
Ich werde mir mal einen neuen flashbaustein bestellen und mal schauen
was sich machen lässt. Wäre schade wenn es nicht gehen würde.
Kurze frage: die color funktion kann ja 2 parameter haben. Die farben
wiederholen sich ja sobald man die Zahl 16 überschreitet. Wo ist das
festgelegt?
Jetzt habe ich noch ein merkwürdiges Verhalten festgestellt.
Ich habe einen 10 pol und eine 6 pol Wannenstecker auf dem Board für die
ISP. Auf der 6 Pol sitzt mein MySmart USB AVR Programmer.
Auf der 10 pol ist der Dataflash verbunden. Mit einem Flachbandkabel.
Der DF wird erkannt, kann aber nicht lesen und schreiben. Das gibt nur
Fehler. Klare Sache: Der Programmer muss dafür ab und darf nicht
parallel angeschlossen sein.
Jetzt wird der DF nicht mehr erkannt. Erst wenn ich ihn direkt auf das
Board stecke. Das heißt: Das Kabel ist zu lang! Kann das sein? Ist die
ISP/SPI so anfällig bei langen Datenstrecken?
Man ey...
10 cm kabel am Dataflash und er gibt eine Fehlermeldung aus. Dataflash
direkt auf das Board gesteckt und alles funktioniert. Das kann doch
nicht wahr sein.
Ich muss dazu sagen, denselben DF hatte ich mal an einem anderen CB2
Computer mit 20cm kabel und es funktionierte. Irgendwie stimmen die
Pegel nicht.
Hab den Atmega1284 drauf mit der include von AVR und in der main die
.org Anweisungen geändert bzw. Die neue main.asm version 1.50 genommen.
So... bräuchte echt mal Hilfe!
Ich habe festgestellt, dass aus dem MOSI Pin am Atmega nix rauskommt. Da
liegen 0 Volt. Kann ja dann gar nicht funktionieren.
Stecke ich einen Atmega644 mit der CB2 Software drauf und messe, dann
liegen an allen Pins 5 Volt. Auch an dem MOSI.
Versuche ich aber vom Dataflash zu laden, kommt die Fehlermeldung und
der Mosi Pin ist wieder bei 0 Volt!
Auf meinem 2. CB Board funktioniert es tadellos! Also muss doch
irgendwas an der Schaltung verkehrt sein. Ich weiß aber nicht was.
Wonach soll ich gucken??
Moin,
ich wieder...
Also:
mit einem kurzen, 5cm Kabel funktioniert es.
Bei meinem anderen Basic Computer funktioniert es aber auch mit einem
20cm langen kabel.
Das heißt, auf dem jetzigen Board scheinen sich die Pegel irgendwo im
Kabel zu verlieren. Sprich beim lesen/schreiben.
Warum ist das so?
Software ist die Gleiche. Hardware auch. Das flashen vom µC funktioniert
ja auch.
Irgendwo muss sich eine Spaßbremse versteckt haben. ich weiß aber nicht
wo!
So, Kommando zurück!
ich habe jetzt soviele Posts geschrieben, dass ich nach jedem nochmal
nachgeguckt habe auf meinem Board.
Ich hatte eine schlechte Masseverbindung. Die ISP Wannenstecker waren
nur an das gehäuse einer der 9 pol Buchsen angeschlossen. Die lagen zwar
auch an Masse aber als ich die ISP/SPI dann direkt an die Masse geklemmt
habe ging alles wieder!
Puh...
Schade das hier dennoch so wenig los ist
@Jörg
falls du noch da bist:
ich würde gerne der SPI eine weitere Geschwindigkeit zuweisen können in
der Configpage.
Laut asm wird hier glaube ich nur getoggled bei der Auswahl, da ich ja
nur 2 Einträge auswählen kann(5MHz und 128kHz).
Wie bekomme ich einen weiteren Eintrag rein, der mit ausgewählt werden
kann?
Was muss ich in der library.asm unter set config for I2C and SPI ändern?
Dazu brauchst Du ein freies Config-Bit (GPIOR1,3 oder GPIOR1,7 sollten
gehen). Dann in der library.asm unter libmio_setconf: die SPI abhängig
von diesem Bit konfigurieren. Und zum Schluss noch in der configpage.asm
die Auswahl mit Tasten und die Ausgabe der gewählten Geschwindigkeit
hinzufügen.
Das sollte reichen.
Jörg
Danke Jörg,
so ähnlich habe ich mir das auch schon gedacht.
Kann ich denn irgendwie dieses Bit hochzählen bei jedem tastendruck und
abhängig vom Wert im Bit die unterschiedlichen SPI Geschwindigkeiten
anzeigen lassen?
Und wenn ich speicher dann sehe ich welcher Wert gerade das Bit hat und
setze dementsprechend die SPI?!
Bin noch nicht so asm bewandert.
Hi Jörg,
Noch eine Frage:
Ich wollte eine zusätzliche Infoseite einbauen. Kopie von infopage.asm.
und include dieser datei.
Da hat er aber gemeckert wegen den .org Anweisungen.
Ich habe dann den inhalt als weitere sprungmarke auf die bestehende
infopage eingefügt. Da hat er auch gemeckert.
Sind den seiten spezielle größen zugeordnet? Wie ändere ich das, damit
ich noch eine seite einfügen kann? Wenn ich die orgs erhöhe dann habe
icj probleme mit der tastatur.
Ich habe jetzt das Problem mit dem Dataflash gelöst. Es lag wohl doch
nicht an der Masse!
Da ich auf dem Board ebenfalls die RGB->FBAS Schaltung drauf habe,
welche mit 12 Volt läuft, giong ich von Problemen bei der
Spannungsversorgung aus.
Auf meinem Board arbeitete erst ein 5V Schaltregler mit 500mA.
Aufgefallen ist mir, dass der Dataflash gefunden wurde, wenn ich ein 9
Volt Steckernetzteil mit 600mA nutzte. Nur leider konnte man dann wenig
sehen auf dem Monitor, da die FBAS Schaltung ja 12 Volt benötigt.
Mit einem 12V Steckernetzteil und 800mA lief dann das Bild wieder aber
der Dataflash wurde nicht gefunden.
Ich habe dann den Schaltregler gegen einen Linearregler mit 1A
ausgetauscht. Das Verhalten wurde besser. Zusätzlich habe ich der
Dataflash Spannungsversorgung einen eigenen Schaltregler spendiert und
siehe da: Jetzt gibt es keine Kommunikationsprobleme mehr. Selbst mit
den geforderten 12V.
Ich frage mich natürlich inwiefern der Dataflash nun abhängig ist von
einem 9V, 600mA netzteil und einem 12V, 800mA Netzteil, obwohl er seine
Spannungsversorgung aus einem 5V regler bezieht. Und ob der nun 500mA
kann oder 1A... soviel braucht der Dataflash doch gar nicht.
****************
Zum .org Problem:
Ich habe testweise das XModem mal rausgeschmissen und dadurch in dem Org
Bereich Platz bekommen für ein zusätzliches Menüicon + dazugehöriger
Seite.
Spaßeshalber habe ich die Benutzeroberfläche mal dem guten alten Windows
2 angepasst :)
Im Moment bastel ich noch weiter, sofern meine extrem geringen asm
Kentnisse mich lassen!
@Jörg
Gibt es eine Möglichkeit das externe EEProm ähnlich wie den Dataflash
aus dem menü heraus anzusprechen um zu sehen wieviel belegt ist?
Bezüglich SPI Geschwindigkeit ändern...
die SPI holt sich ja den Wert vom dritten Bit von r18.
ich habe testweise r18 mal raufzählen lassen und konnte so mehrere
Geschwindigkeiten anzeigen. Es haben sich aber auch andere Werte in der
Config geändert da ja alle über das r18 arbeiten.
ich weiß nicht was du mit GPIOR1,3 meinst? Ich habe die Version 1.45
drauf. Für die SPI benötige ich aber kein Bit weil ich ja nicht togglen
will sondern mindestens 4 Werte anzeigen lassen will. Theoretisch weiß
ich wie es geht. Also in C. Ich würde einfach eine Variable nehmen und
die hochzählen lassen. Und davon abhängig ist die SPI Geschwindigkeit.
Nur leider habe ich keine Ahnung wie ich das in asm übertragen soll.
Welches Register wäre denn dafür frei??
Mit den .org Direktiven werden meistens Tabellen auf durch 256 teilbare
Adressen gelegt. Das ist dann meist mit weniger Code und mehr
Geschwindigkeit verbunden, da u.U. das Addieren wegfällt. In den Lücken
zwischen den Tabellen ist dann der Code drin. Das Ganze ist halt recht
voll, in der 1.50er Version sind insgesamt gerade mal 368 Bytes (das
sind rund 0,56%) frei. Das ist halt im Laufe der Zeit so "gewachsen". Um
neue Funktionen einzubauen muss man alte entfernen oder bezüglich Platz
optimieren oder einen größeren Controller nehmen.
Auf dem EEPROM gibt es ja keine Dateien, wie soll da die
Belegungsanzeige aussehen? Platz dafür wäre wahrscheinlich sowieso
keiner. Aber Dich hält niemand davon ab, das in BASIC zu realisieren und
auf einen der freien Programmplätze zu legen.
So in der Art Videomode 1 + Rechteck + farbige Punkte für Werte <> 0xFF
Zum Thema SPI-Konfiguration könntest Du zwei benachbarte Bits aus dem
dritten Config-Byte (PCMSK0/tempreg3) verwenden. r18 ist ja nur der
temporäre Wert während die Config-Page angezeigt wird, ansonsten ist der
Wert über GPIOR0 verfügbar. Allerdings sind hier alle Bits belegt. Das
zweite Config-Byte liegt in r19/GPIOR1, hier sind m.W. noch Bit 3 und
Bit 7 frei. Bit 0-2 ist die EEPROM-Adresse und Bit 4-6 das gewählte
Autostart-Programm. Vom dritten Config-Byte (tempreg3/PCMSK0) ist nur
Bit 0 belegt mit der Erweiterung der seriellen Geschwindigkeiten.
Jörg