Forum: Projekte & Code AVR-ChipBasic2 - BASIC-Computer mit ATMega 644


von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Danke Jörg,
Ja da liegt noch Arbeit vor mir.

Ich habe nun noch ein Schmankerl eingefügt. Sobald man ein Programm als 
Textdatei speichert ändert sich dementsprechend auch das Icon.
Dabei habe ich mal wieder festgestellt wie wenig Platz noch im Flash ist 
:)
Musste leider die apis dafür rausschmeißen.

Gruß
Dominik

von Dominik (Gast)


Lesenswert?

Schade... wenn ich den Border im Editor auf blau setze, gehen die 
einzelnen Programmzeilen trotzdem nach rechts bis zum Bildschirmrand und 
überlappen die Borderfarbe.
Warum ist das so?

von Dominik (Gast)


Lesenswert?

Moin,

eben den AT45DB081E getestet. Funktioniert nicht. Wird nicht erkannt! 
Laut Datenblatt sehe ich aber nicht, dass die nicht 5V tolerant sein 
sollen. Die In/Out's laufen mit LOW Vcc*0.3 bis HIGH Vcc+-0.6
Also das sollte funktionieren! Wobei das E in der bezeichnung auch nur 
die Revision ist.
Hilfe Jörg!!!

Nochmal zum Editor:
Trotz anderer Hintergrundfarbe der Editorzeilen und Border, ist der 
rechte Randbereich unangetastet dessen. Immer noch schwarz hinterlegt. 
wieso?
Hilfe Jörg die Zweite!!

ext. Eeproms:
Ist es viel Aufwand eine Funktion einzubinden, die 1 oder 2 oder mehr 
Programme wieder in das externe Eeprom schreiben kann?

*****

Ich habe jetzt 3 verschiedene Programmicons implementiert.
- Leeres Blatt = Kein Programm
- beschriebenes Blatt = Textdatei
- blauer Computer = BAS Programm

Außerdem lässt sich nun auf der Configpage zwischen 2 verschiedenen 
Farbschmemas umschalten. Dark und Bright. Dark ist das original Design 
und Bright das vom Screenshot. Genial :)

Wenn noch jemand Flash übrig hat, bitte her damit! :)

von Joerg W. (joergwolfram)


Lesenswert?

1. Was ist bei Dir Vcc+0,6V? Die maximale Versorgungsspannung liegt bei 
3,6V und damit käme man höchstens auf 4,2V. Oder betreibst Du den 
DataFlash direkt an 5V? In meiner Schaltung habe ich eine grüne LED 
dazwischengeschaltet, um ca 3-3,3V am Flash-Baustein zu haben. Bei den 
"alten" steht im Datenblatt explizit drin, dass die Eingänge 5V tolerant 
sind, das betrifft aber nicht die Versorgungsspannung.

2. Am Ende der Editorzeilen wird das Videosignal auf 0 gesetzt 
(vidm_tvm.asm Zeile 311-> out PORT_C,const_0). Das kann man schon 
ändern, halt ein passendes Register vor der Videosausgabe mit dem 
Border-Wert laden und dann ausgeben. Die Editorzeilen werden aber nicht 
genau die gleiche Länge wie der "Rest" haben.

3. Ja, es ist viel Aufwand. Man braucht ein Auswahlmenü für mehrere 
Programmplätze, eine "Weiche" für DataFlash und EEPROM, ggf. 
unterschiedliche Bereiche für Programmsopeicher und XPOKE...
Da wäre es wahrscheinlich einfacher, auf SD-Karten umzustellen (Pages 
nur zur Hälfte beschreiben und ggf. das Wear-Levelling für den DataFlash 
rausschmeißen).

Jörg

von Dominik (Gast)


Lesenswert?

Hi Jörg,
stimmt du hast Recht. Das Datenblatt vom "alten" Flash zeigt nur die 
Minimalwerte an den Aus und Eingängen.
Beim neuen Typ ist bei maximal Vcc+0.6 V als Highpegel Schluss... ach 
verdammt! :(

Also eine SD Karte wäre schon was tolles. Man hätte viel mehr 
Möglichkeiten der "Datensicherung" da man eher SD Karten bekommt als den 
Flash.

Wieviel Aufwand wäre der Umbau? Unterscheiden sich die beiden Flasharten 
SD/DF sehr oder könnte man ggf. in der Config aussuchen ob DF oder SD? 
Das wäre natürlich der Luxus!

von Dominik (Gast)



Lesenswert?

Hi Jörg,
wenn du mir sagst, wie man die libdfl anpassen muss für SD Karten, dann 
versuche ich das!! SD Karte wäre soooooooo genial!!

Anbei nochmal ein paar Fotos...
Na wer kennt noch das Spiel OEL vom C64? Oder Bundesliga Manager? :)
Da ich es jetzt geschafft habe Stringarrays vernünftig zu verarbeiten, 
kann ich solche Spiele nun mühelos portieren. Ok, 95 Zeilen werden nicht 
reichen aber selbst das Problem bekommt man ja gelöst.

Außerdem noch 2 Fotos vom aktuellen Menü mit 3 verschiedenen Icons.
Und der Editor im Expertenmodus (lässt sich umschalten) Original und 
Expert. Da kommt ein wenig C64 Flair auf und man hat eine bessere 
Übersicht.

von Dominik (Gast)


Lesenswert?

Aktueller Stand... alles auf Atmega1284 Basis
Rausgeflogen sind:
- screenshot Funktion
- api Funktionen
- Speicherung der Cursorposition im Editor
- XModem
- Keyboard Testfunktion im Intro

Hinzugekommen sind:
- 3 versch. Programmicons (.bas Programm, leeres Projekt, Texdateien)
- Systempage (Keyboardlayout, Videosignal, freier speicherplatz DF, 
etc.)
- Editormodus wählbar (standart, expert)
- Menü im Windows 2 Look

Ich will und werde noch ein paar neue sachen hinzufügen die meiner 
Meinung nach das Gesamtkonzept verbessern. Dafür musste ich eben ein 
paar Sachen rauswerfen die ICH jedenfalls nicht nutze.
Schön wäre jetzt nur noch eine SD karten Unterstützung.
Wenn Interesse besteht lade ich natürlich auch die Sourcen mal hoch mit 
Doku.
Vlt wäre ein neuer Thread a la Atmega1284 dafür geeignet wenn Jörg 
nichts dagegen hat?

von Joerg W. (joergwolfram)


Lesenswert?

Natürlich kannst Du einen neuen Thread aufmachen, der hier ist eh schon 
recht lang. Denn ich werde an dem Projekt (außer Fehlerbereinigung) 
sowieso nichts mehr machen. Aber ich hätte noch 8 DataFlash-Bausteine 
AT45DB081B-RC (OVP im Gurtabschnitt) übrig, bei Interesse bitte PMail an 
mich.

Jörg

von Kilo K. (kilo81)


Lesenswert?

Hm... XModem brauche ich um Programme wie CBTerm, keyboardlayout, etc. 
zu laden oder?
Dann muss ich es doch wieder mit reinnehmen.

von Joerg W. (joergwolfram)


Lesenswert?

Und das API brauchst Du auch. Denn die Binärprogramme nutzen auch 
Systemroutinen. Da sich die Position dieser aber bei Änderungen 
verschieben kann, gibt es das API. Das liegt an einer festen Stelle und 
enthält Sprünge zu den eigentlichen Systemroutinen. Dass es ein bisschen 
"durcheinander" aussieht liegt daran, dass neue Funktionen 
logischerweise nur ans Ende gestellt werden dürfen.

PS: Ich habe gemerkt, dass beim Source-Archiv der aktuellen Version die 
Sources für die Treiber/Binärprogramme fehlen. Das werde ich in den 
nächsten Tagen korrigieren.

Jörg

von Kilo K. (kilo81)


Lesenswert?

Mhh okay,
Dann schaue ich mal ob das Api noch passt mach meinen ganzen Änderungen. 
Ansonsten lasse ich die binär und Bibliothekssachen erstmal raus und 
überlege mir was anderes.

von Kilo K. (kilo81)


Lesenswert?

Hi Jörg,
kurze asm Verständnisfrage:
Ich habe im "fileman.asm", im Infobereich unter den Blöcken und Files 
eine weitere Zeile hinzugefügt, die mir anzeigt wieviele Dateien auf dem 
DF sind. (Wollte erst den freien Platz in Prozent anzeigen lassen aber 
so fit bin ich noch nicht.)
Es funktioniert soweit! Aber wenn ich nun ESC drücke um das Infofeld 
auszublenden, bleibt es stehen und im oberen Bereich taucht die 
Statuszeile vom Editor auf in der ich gefragt werde ob ich verlassen 
will ohne zu speichern.
Was ist hier passiert?
1. hängt es mit dem tempreg1 zusammen welches ich nochmals benutze?
2. wird das RETURN beim Tastendruck nicht richtig ausgeführt, weil ich 
nochmals einen CALL (call fsys_maxpage) Befehl gesetzt habe?
3. was ganz anderes?

Ich weiß, um asm zu lernen sollte man klein anfangen! :) Aber ich bin 
schon stolz, dass ich es geschafft habe mit 2 Werten zu rechnen.

1
    libmio_thistext
2
    .db 14,3,"Used: ",0    ;show message
3
    ldi  ctrl,0x0c    ;set format
4
    call  fsys_free
5
    push  YH      ;save free pages
6
    push  YL
7
    movw  XL,ZL      ;copy free files
8
    call  fsys_maxpage
9
    mov  XL,tempreg1
10
    ldi  XH,0x00
11
    sub XL,ZL                       ;maxpage-free
12
    adiw  XL,1                    ;+1
13
    libmio_outdez                   ;show files on DF
14
    libmio_thistext
15
    .db 255," ",0
16
    
17
18
fman_info_4:  ldi  XL,0x06      ;color scheme (inv. black on yellow)
19
    libmio_setcolor
20
    libmio_thistext
21
    .db 16,5,"   Press any key!  "0,0  ;sst cursor
22
    libmio_waitkey
23
    ret

von Kilo K. (kilo81)


Lesenswert?

Habs hinbekommen :)

Edit:
oder auch nicht :((

Entweder stimmt das Ergebnis nicht, weil ich irgendeine Zeile 
auskommentiert habe aber ich kann wieder zurück springen

oder das Ergebnis stimmt aber sobald ich eine taste drücke spinnt der 
Computer :(

: Bearbeitet durch User
von Kilo K. (kilo81)


Lesenswert?

Noch ne Frage bezüglich Seriellen Loader:

Ich habe jetzt die Version 1.50 auf mein 2. Board gespielt. Dort ist der 
seriel loader ja drauf und es wird nach dem Intro danach gesucht.

Schließe ich das Board jetzt an den PC an und starte mein 
terminalprogramm müsste doch eigentlich "Press Space to start" 
erscheinen oder?
Es kommt aber nichts!!
Muss ich im Configmenü irgendwas einstellen? Habe jetzt hier auf der 
Arbeit keinen Monitor um es zu testen. Dachte eigentlich das alles 
werksseitig eingestellt ist und ich nur im Terminalprogramm alles 
richtig setzen muss. Aber keine Chance. Der Loader meldet sich nicht.
Hilfe!

von Kilo K. (kilo81)


Lesenswert?

Hab auch das hinbekommen.
Eine verbindung auf der platine war unsauber.

Serielle Verbindung funktioniert jetzt. Aber der serielle loader funzt 
trotzdem nicht. Im terminal steht zwar press space to start aber egal 
auf welcher tastatur ich space drücke, er springt nichr in das menü vom 
loader...

: Bearbeitet durch User
von Kilo K. (kilo81)


Lesenswert?

Mh... basicprogramm vom cb2 an pc senden geht.
Vom pc empfangen geht aber nicht. Komisch. Xmodem geht auch nicht... 
version 1.50

von Patrick M. (patrick85)


Lesenswert?

Hast du in der Config an pd1 und pd3 gedacht?

von Kilo K. (kilo81)


Lesenswert?

Selbstverständlich.
Senden vom avr zum pc geht ja. Also textübertragung.

von Kilo K. (kilo81)


Lesenswert?

@patrick
Hast du eigentlich ein paar listings von programmen oder spielen? Würde 
dann auch noch welche die tage veröffentlichen ;)

von Kilo K. (kilo81)


Lesenswert?

Ich bekomme es nicht hin Daten zu empfangen!
Ein basic Programm zum PC senden geht einwandfrei!!
Wenn ich eins empfangen will kommt nichts an.
Bei wem klappt das denn??
Und wie muss die Datei auf dem PC liegen, ist das egal? Also welches 
Format. Hilfe... das kann doch nicht wahr sein! :(

@Jörg
In Basic gabs ja immer die DIM x(y) Anweisungen. Wie würde das denn bei 
dir im gegenzug aussehen?
Grund ist: Es gibt zig alte Retro Spiele die ich gerne umsetzen möchte. 
Viele nutzen aber die Arrays eben in diesem typischen Basicformat.

von Joerg W. (joergwolfram)


Lesenswert?

Das mit dem Loader werde ich mir bei Gelegenheit mal anschauen. Das 
1.50er Release ist jetzt über zwei Jahre alt und bis jetzt hat sich 
niemand beschwert. Wahrscheinlich nutzt es einfach (fast) niemand.

Mit dem DIM wird es etwas schwieriger, da es nur ein Array mit fester 
Größe gibt. Deswegen lassen sich verschiedene Arrays nur über Pointer 
auf verschiedene Bereiche im Array realisieren.

Jörg

von Kilo K. (kilo81)


Lesenswert?

Super Jörg, mach das bitte mal...
ich habe auch immer noch probleme beim Empfangen vom PC.
Auf dem RX liegen nur 0,8 Volt an... das wundert mich. Beim senden zeigt 
mein Terminal programm auch Fehler im Programmcode. Wirre Zeichen. Ziehe 
ich das serielle kabel ab liegen 5 Volt an und beim senden sind die 
Zeichen im terminal wieder normal.
Wie gesagt: Senden vom AVR zum PC funktioniert einwandfrei!! Nur 
empfangen nicht. Da weiß ich nicht mehr weiter.

von Kilo K. (kilo81)


Lesenswert?

ES FUNKTIONIERT!!!!!
Ich habe nun in der Schaltung auf der RS232 Buchse Pin 2 und 3 
getauscht!
ich glaube da ist im Schaltplan etwas durcheinander geraten!

Am PC ist Pin2 Eingang (Rx) und Pin3 Ausgang (Tx)

In deinem Schaltplan hast du das aber vertauscht. So wie es bei den 
Video Anschlüssen auch war (Scart). Der DSub Anschluss im Schaltplan ist 
demnach der 9 polige MALE Stecker vom PC und nicht eine FEMALE Buchse 
die man auf die Platine lötet.

Dadurch, das der PC nämlich auf dem Pin3 sendet, muss das Signal am AVR 
auf Pin2 der 9poligen Buchse ankommen.

Das da noch kein anderer gemeckert hat wundert mich!

Egal, es läuft!! Jetzt müsste der Serielle Loader auch funktionieren!

EDIT:
SL funktioniert.. aber die Zeichen die ankommen sind nicht lesbar!!
komisch!

: Bearbeitet durch User
von Kilo K. (kilo81)


Angehängte Dateien:

Lesenswert?

Und ich wieder...

Die "neuen" Dataflash mit der Bezeichnung  AT45DB081E (Revision E)
funktionieren einwandfrei!!!!

Einzige Änderung: den MOSI vom AVR kommend auf 3,3 Volt herabsenken. Das 
reicht. ich habe es testweise ebenfalls mit einer grünen LED gemacht und 
es klappt. Der DF wird erkannt, es lässt sich speichern und laden!

****************

Serieller Loader zeigt immer noch wirre Zeichen an. Alle Einstellungen 
stimmen aber. Bevor ich Pin 2 und 3 der seriellen Schnittstelle 
getauscht hatte, konnte man noch PRESS SPACE TO START lesen. Jetzt nach 
der tauschaktion nicht mehr. Jedoch funktioniert nun der serielle 
Austausch in beide Richtungen. Kurios!

***************

Habe nun mehrere Vintage Basic Spiele portieren können und es ist total 
genial! Vielleicht erstelle ich mal ein Verzeichnis mit Listings falls 
Interesse besteht.

***************

habe mir einen günstigen Video to VGA Konverter gekauft. Einfach weil 
ich mal testen wollte ob es funktioniert. Immerhin war er günstiger als 
ein 7 Zoll TFT.
Bild erscheint, wenn aber auch nur in schwarz weiß (Ich habe einen FBAS 
Konverter dazwischen). In manchen Kundenrezessionen konnte man lesen, 
dass alle mit einem Atari oder Commodore 64 dieses Problem haben. Bild 
wird in s/w dargestellt. Das liegt dann leider am Chipbasic und nicht am 
Konverter. Ich denke mal die Syncro macht hier nicht ganz mit. Schade!

***************
Anbei auch mal mein aktuelles Board mit FBAS Konverter

von Kilo K. (kilo81)


Lesenswert?

BAM.... hab jetzt einen FT232 drauf und kann per Jumper zwischen RS232 
und USB wählen.
Mit USB funktioniert auch der serielle Lader einwandfrei! HA! :)

Cool, die ganzen probleme die ich hier immer schreibe, löse ich ein paar 
tage später selber!
Ist aber auch ruhig geworden hier! Wo sind denn die ganzen Abos??

: Bearbeitet durch User
von Kilo K. (kilo81)


Angehängte Dateien:

Lesenswert?

Moin zusammen,

anbei hänge ich mal ein paar Listings von Programmen und Spielen.
In der .zip sind ein paar Chipbasic-Programme als Textdatei sowie eine 
.pdf die ich angefangen habe. Die soll später als eine Art Katalog 
dienen für Listings. Einfach mal reinschauen.
Muss dazu sagen: Einige Sachen sind natürlich WIP. Und bei anderen 
müsste man die Eingaben wie IN(1)=1 etc. gegen Tasturabfragen ändern 
wenn man keinen Joystick am Parallelport hat.

Außerdem noch der Schaltplan für den FBAS Konverter. Total simpel und 
schnell aufgebaut.

Joar, ob ich jetzt die Sourcen von dem Chipbasic mal hochladen soll 
welches ich etwas umgebaut habe weiß ich nicht. Anscheinend interessiert 
es keinen :) Sind auch eigentlich nur optische Änderungen sowie ein paar 
Features. Mehr ist leider nicht möglich wegen Platzmangel.

***

Der FT232 ist übrigens ein fertig aufgebauter Adapter von Ebay (3,50 €) 
der sich perfekt in das System integrieren lässt. Wie gesagt, SL läuft 
jetzt.
Außer: Egal ob RS232 der USB, ich kann keine Programme per XMODEM in das 
System laden. Der PC sendet zwar und der AVR flackert auch aber am Ende 
ist nichts angekommen außer wirre Zeichen auf dem Programmplatz.
Version 1.50!!! Vlt ein Bug? Oder ich bin zu doof. Wäre dann auch ein 
Bug :)

Wäre wirklich cool wenn sich nochmal welche hier melden würden.
Damals sind ja recht viele BASIC Projekte entstanden!!

: Bearbeitet durch User
von Patrick M. (patrick85)


Lesenswert?

Also mich interessiert dieses Projekt
Auf jeden Fall noch!
Ich versuche ja noch die rtc pcf8583
Irgendwie einzubinden das klappt nur noch nicht so ganz :(

von Kilo K. (kilo81)


Lesenswert?

was funktioniert denn nicht?
ich werde mal die DS1302 testen demnächst!

Ja das Projekt muss am Leben erhalten werden. Ich hab schon so viele 
alte Basic Programme portiert. Ist echt klasse.

von Joerg W. (joergwolfram)


Lesenswert?

Ich habe jetzt das Paket nochmal hochgeladen und hoffe, dass jetzt alles 
dabei ist. Die neue Versionsnummer kommt daher, dass ich die Releases 
praktisch komplett automatisch erzeuge und nicht die alte Version 
überschreiben wollte.

Bei mir ist ein DSUB9-Stecker am Basic-Computer und ich nehme ein 
Nullmodem-Kabel, bei dem ja RX und TX gekreuzt sind. Damit funktioniert 
bei mir jeglicher Transfer bei 1200 und 2400 ohne Probleme (für die 
andere Schnittstelle müsste ich erst Hardware zusammenbauen).

XMODEM ist NUR für Binärprogramme geeignet, Quelltext muss man via 
Loader oder Editor im normalen ASCII-Modus übertragen. Binärprogramme 
sind auch die "compilierten" BASIC-Programme, also so, wie sie im 
Speicher vorliegen.

Für die Weiterentwicklung ist es vielleicht sinnvoller, komplett auf den 
Mega1284P zu setzen, dann erübrigt sich erst mal das Thema Platz im 
Flash und im RAM.

Jörg

Beitrag #5216922 wurde von einem Moderator gelöscht.
von johannes zander (Gast)


Lesenswert?

Der thread ist zwar alt, aber vielleicht kommt hier noch jemand vorbei 
und kann mir eine frage beantworten:
Wie schreibe ich mit print zeichen nacheinander in ein Array?
Ich habe versucht:
For x=0 to 32
esge z:? @0,x;#3;z;
next

Es wird nur ein Zeichen in das Array geschrieben.
Für ein Hilfestellung wäre ich dankbar.

von johannes zander (Gast)


Lesenswert?

johannes zander schrieb:
> esge

meinte natürlich esget

von Joerg W. (joergwolfram)


Lesenswert?

Der Print-Befehl arbeitet die Zeile von links nach rechts ab. Setze erst 
den Kanal, bevor Du die Position festlegst. In Deinem Beispiel wird die 
Bildschirmposition auf 0,x gesetzt und dann auf Array-Ausgabe 
umgeschaltet, wobei die Default-Position erstmal 0 ist.

Jörg

von johannes zander (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort. Jetzt läufts!
Ziel der Übung ist das einlesen und Darstellen der Daten von einem GPS 
Modul.
Johannes

von Andy (Gast)


Lesenswert?

Hallo,

ich habe mir einen Chipbasic2 mit AtMega644 gebaut.

Leider bekomme ich kein Bild, nur wirre Streifen. Es sieht aus, als wenn 
er nicht synced.

Nun bin ich AVR Noob und mir fehlen vermutlich ein paar Grundlagen.

Vielleicht kann mir jemand Starthilfe geben.

Ich weiß nicht genau, ob ich richtig vorgehe:

- Ich nutze Atmel Studio 7 zur Programmierung mit einem STK500
- Ich nehmen das Hex File aus dem Ordner System (120KB groß). Der Flash 
beim 644er hat ja nur 64KB. Ist das in Ordnung?
- Ich flashe den AVR, klappt auch aber dann kommen eben nur die wirren 
Bildstreifen. Grundsätzlich scheint das System zu laufen, den er 
reagiert auf Tastendruck; (die Streifen verändern sich). Ich nutze nur 
BAS Videosignal.

Nun habe ich gelernt, dass auch die Fuses eine Role spielen. Dann hab 
ich die Fuse Einstellungen für Low, high, und ext, auf die in der Readme 
angegebenen Werte gestellt. Nun kann ich den AVR aber nicht mehr 
ansprechen. Es gab auch eine Warnung, die ich einfach übergangen habe 
(irgendwas mit JTAGen geht nicht mehr, wenn Du das tust).

Habe ich den Chip jetzt kaputt geflashed?

Kann mich jemand unterstützen? Habe noch weitere AVRs, will die aber 
nicht auch noch unbrauchbar machen.

von Andy (Gast)


Lesenswert?

Hi vergisst es,

Hatte Probleme mit dem Netzteil, deswegen hat der Quarz Probleme beim an 
schwingen. Außerdem Zahlendreher bei den Fuses.

Zum Glück kann mein Prommer AVR Fuses programmieren.

Läuft alles. Super Ding!!

von Karl M. (Gast)


Lesenswert?

Andy schrieb:
> Zum Glück kann mein Prommer AVR Fuses programmieren.

Wieso ?

Das geht doch immer mit allen ISP Programmieradaptern!

von Crazy H. (crazy_h)


Lesenswert?

Nein ich hab nicht alles gelesen ... trotzdem: Respekt!
Schon mal an einen XMega384A3U gedacht? Meine 256er der Serie laufen 
alle stabil mit 64MHz und Flash gäbe es reichlich.

von Joerg W. (joergwolfram)


Lesenswert?

> Schon mal an einen XMega384A3U gedacht?

Ja, an die Xmega hatte ich schon gedacht, aber letztendlich die Idee 
wieder verworfen. Ich hatte auch schon eine Lösung mit Mega1284P und 
XC9536 auf einem Daughterboard, welche dann höhere Auflösungen und auch 
VGA konnte. Das hätte aber ein komplettes Re-Design der Software 
bedeutet. Für mich ist das Projekt abgeschlossen, aber die Sourcen sind 
ja verfügbar...

von Andy (Gast)


Lesenswert?

Karl M. schrieb:
> Andy schrieb:
>> Zum Glück kann mein Prommer AVR Fuses programmieren.
>
> Wieso ?
>
> Das geht doch immer mit allen ISP Programmieradaptern!


Ja, aber nicht wenn Du auf externen Oszillator stellt und dieser nicht 
schwingt :)

Das hab ich nicht gerafft und hab deswegen die Fuses mit meinen Prommer 
wieder auf inter gestellt.

Ich sag, ja Bin AVR Noob, aber es geht aufwärts:)

Mache mir jetzt noch ein Custom Layout und will versuchen irgendwie 
einen seriell <-> USB Wandlermodul und eine USB Tastatur dranzutackern.

von Dominik (Gast)


Lesenswert?

Hallo Jörg,

Frohes Neues Jahr!

Ich habe die menu.asm ja so angepasst, dass beim speichern eines Basic 
Programms oder Textdatei unterschiedliche Icons angelegt werden.

Was jedoch nicht klappt ist die Definierung des Typs auf dem Dataflash. 
Da wird jede Datei als BAS abgespeichert. Obwohl für die Textdateien 
doch andere Bezeichnungen angelegt sind.

Wie kann ich das ändern damit abhängig vom Programmnamen auch auf dem 
Dataflash der richtige Typ steht?

von Joerg W. (joergwolfram)


Lesenswert?

Wenn Du mit SAVE speicherst, werden immer BAS (Typ 0x10) Dateien 
geschrieben. Außer Byte 12 im Header ist ein "N", dann wird eine native 
AVR-Datei geschrieben (Typ 0x18). Mehr hatte ich damals nicht 
vorgesehen, andere Dateitypen lassen sich nur mittels FCREATE erzeugen.

Wenn Du beim Speichern mehr Typen unterscheiden willst, musst Du das 
selbst implementieren. Die Funktionen zum Schreiben (fysys_bsave, 
fsys_bover) liegen in der modules/filesys.asm

Jörg

von Dominik (Gast)


Lesenswert?

Danke Jörg!

Ah okay... ich dachte es wird noch unterschieden ob beim speichern ein 
Unterstrich im Programmname ist. Wenn ja wird es als native oder text 
angegeben.

Wie was wo muss ein N im header stehen?

von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Schau mal Jörg,

ich habe das Dataflashmenü etwas angepasst und folgenden Code 
hinzugefügt:
1
libmio_thistext
2
.db 14,4,"Saved: ",0    ;show message
3
ldi  ctrl,0x0c    ;set format
4
call  fsys_maxpage
5
mov  XL,tempreg1
6
ldi  XH,0x00
7
adiw  XL,1
8
call  fsys_free
9
push  YH      ;save free pages
10
push  YL
11
    
12
sub XL,ZL
13
libmio_outdez
14
libmio_thistext
15
.db 14,14,"File(s)",0

Jetzt kann ich mir anzeigen lassen wie viele Dateien ich auf dem 
Dataflash gespeichert habe.
Aber: Wenn ich jetzt eine Taste drücke, startet der Computer neu anstatt 
zurück zum Menü zu gehen-
Warum?
Ich habe wie gesagt nur den oben gezeigten Code eingefügt!

Gruß
Dominik

von Joerg W. (joergwolfram)


Lesenswert?

Das ist nicht verwunderlich. Und zwar deswegen, weil das Y-Register auf 
den Stack gesichert aber nicht wieder abgeholt wird (pop).
Von daher stimmt die Rücksprungadresse nicht mehr und bei einem ret 
springt der Programm-Counter irgendwohin.

Die zwei Zeilen:
1
push  YH      ;save free pages
2
push  YL

sind wohl vom Kopieren übriggeblieben und müssen raus.

von Dominik (Gast)


Lesenswert?

Hallo Jörg,

ah okay! Wieder was gelernt! :)

Naja ich hab halt alles kopiert ab "call fsys_free" weil ich dachte es 
gehört mit dazu.
Weil beim Aufruf zuvor wird ja ebenfalls YH und YL auf den Stack gelegt 
und nicht durch pop abgeholt!?
Ich teste das heute Abend mal! Immerhin habe ich eine Subtraktion 
hinbekommen :)

von Joerg W. (joergwolfram)


Lesenswert?

> Weil beim Aufruf zuvor wird ja ebenfalls YH und YL auf den Stack gelegt
> und nicht durch pop abgeholt!?

Doch, weiter unten (13 Zeilen):
1
fman_info_2:
2
...
3
          pop XL
4
          pop XH
5
          libmio_outdez

Jörg

von Dominik (Gast)


Lesenswert?

Ach bin ich blöd.... natüüürlich!
Jetzt macht das Ganze auch Sinn! Hab das total übersehen.
Danke! Muss mal meine C-Brille ausziehen!

von Dominik (Gast)


Lesenswert?

Bezüglich speichern auf dem DF mit unterschiedlichen Formaten...
Ich habe mir das mal angeschaut aber es funktioniert irgendwie nicht.
1
;save file
2
;-------------------------------------------------------------------------
3
fsys_savebas:  clr  tempreg4    ;first file
4
5
fsys_save_00:  rcall  fsys_check    ;check for dataflash
6
    cpi  tempreg1,0x00    ;no valid FS
7
    breq  fsys_save_e
8
9
    rcall  fsys_fselbox4
10
    ldi  XL,0x10      ;BASIC
11
    sts  bas_partab+4,XL    ;set file type
12
    libmio_thistext
13
...

0x10 ist das BAS Programm. 0x18 steht für AVR native Programme. Änder 
ich zum testen mal XL,0x10 in XL,0x18 wird dennoch als BAS gespeichert.

Zum anderen weiß ich auch gar nicht wie ich unterscheiden soll beim 
speichern. Es muss ja abhängig sein vom Programmnamen als was 
gespeichert wird.
Naja egal.. das ist dann doch etwas zu hoch für mich

von Dominik (Gast)


Lesenswert?

Das Problem mit dem Neustart ist behoben.
Es lag tatsächlich an Y Register auf dem Stack :)

Was mir aufhegallen ist, auf einem DF habe ich 28 Dateien. Mir wird aber 
284 angezeigt.

Hab dann mal auf einem leeren DF eine nach der anderen Datei angelegt.
Bei 10 Dateien zeigt er mir plötzlich 11 an.
Hab ich was verkehrt gemacht in meiner Rechnung?

von Joerg W. (joergwolfram)


Lesenswert?

Dazu müsste ich mich wieder "einlesen", denn das ist schon ein paar 
Jahre her. Das habe ich aber nicht vor, für mich ist das Projekt 
abgeschlossen.
In der Dateiverwaltung war Vieles vorgesehen, aber nur das Nötigste 
umgesetzt.

Jörg

von Dominik (Gast)


Lesenswert?

Hi Jörg,
Nicht schlimm... ich finde den Fehler bestimmt noch.

Hab mal mit SD Karten experimentert, bekomme es aber leider nicht hin, 
dass sie wenigstens erkannt werden.

von Dominik (Gast)


Lesenswert?

So... Fehler gefunden!
Jetzt zeigt er exakt die Anzahl der gespeichteren Dateien auf dem 
Dataflash an. :)

Jetzt mal schauen was ich mit dem restlichen freien Platz im Flash noch 
anstellen kann.

von Dominik (Gast)


Lesenswert?

Hallo Jörg,

kurze Frage:
ich habe in der Keytavle.inc bei den entsprechenden Kaycodes die Zeichen 
ä,ö und ü eingetragen. Diese sind auch im Zeichensatz mit drin!
Tastatur ist deutsch! Dennoch funktioniert die Eingabe nicht nach dem 
kompilieren!

Einzig das 'ä' löst einen "Pfeil nach oben" Tastendruck aus.

von Joerg W. (joergwolfram)


Lesenswert?

Ich weiß zwar nicht, was Du alles geändert hast, aber das wird generell 
nicht funktionieren. Die Umlaute im Charset lassen sich nur PRINT %... 
ausgeben. Alles unter 0x20 und über 0x7F sind BASIC-Token, von daher 
könnte man die Umlaute gar nicht als Zeichen im BASIC speichern.

Jörg

von Dominik (Gast)


Lesenswert?

Ah okay...
danke Jörg! Dann kann das ja gar nicht funktionieren!
Ich dachte nur warum sind die im keytable nicht hinterlegt wenn sie doch 
auch im Zeichensatz sind.
Aber macht natürlich Sinn.

von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal mein aktueller Computer als tragbare Version!

Hardware:
- Alle(!) Schnittstellen nach außen geführt.
- FBAS Konverter auf Platine
- Video per Schalter zwischen Farbe und Monochrom umschaltbar

Software:
- Optische Anlehnung an Windows 2
- 3 verschiedene Programm Icons (Leer, Textdatei, BASIC Programm)
- Anzeige der Anzahl von gespeicherten Dateien auf Dataflash
- Extra Seite mit Infos zum System (CPU, Keyboard, Speicher, etc.)

Neue Programme:
- Kalender
- Mondphasenrechner
- Pferderennen
- Submarine
- Lunar Lander

Gibt es hier noch Leute, die sich ebenfalls noch mit dem Computer 
beschäftigen??

von Dominik (Gast)


Lesenswert?

Hi Jörg,

Da ich den 1284P nutze würde die Serial Pin Einstellung in der 
Configpage wegfallen.
Hätte dann Platz für eine andere Option.

Der Pin wird durch das 5. Bit der libmio_sysconf beeinflusst.
Leider finde ich nirgends die Abfrage dazu. Also wo finde ich den 
Eintrag wo sich die serielle Schnittstelle den Wert holt?

Das Einzige was ich gefunden habe ist in der library die Abfrage des 5. 
Bit bezüglich der 2. Seriellen Schnittstelle.

Ich will einfach nur dauerhaft auf PinD1 stellen.

von Dominik (Gast)


Lesenswert?

Naja ok... Dann nicht.

Vielleicht bekomme ich ja hierbei Hilfe:

XModem klappt immer noch nicht!
Ich versuche die Measlib.asm zu übertragen aber jedes Mal bei 22,9% ist 
Schluss und der Transfer wird abgebrochen!

Jeglicher Transfer über die Schnittstelle funktioniert, ob senden oder 
empfangen von Quelltext aus dem Editor.
Auch kann ich zum Beispiel den Loader per XModem an den PC senden, auch 
wenn die Zieldatei nicht wirklich lesbar ist.
Aber ein Transfer per XModem zum AVR funktioniert nicht!

Ich nutze noch die XModem Sourcen der 1.49 Version!

von Dominik (Gast)


Lesenswert?

Korrigiere... geht doch.

Nur wie du schon sagtest, ohne Api laufen die Bibliotheken nicht.
Hab dann versucht die Api Verweise der Bibliothek häbdisch einzufügen 
aber die Bibliothek stürzt dennoch ab und zu ab beim Aufruf des Beispiel 
Messprogramms. Bzw. Das programm friert ein.
Schade...

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Die Bedeutung der Bits in den Config-Bytes müsste ich auch erst wieder 
aus dem Code "herauslesen", das meiste steht aber in der configpage.asm.
Meine "Papierunterlagen" habe ich irgendwann entsorgt, als ich das 
Projekt bei mir geschlossen habe.

Die originale Measlib sollte aber mit der V1.49 OS Version 
funktionieren. Als erst mal die Binaries aus den Archiven testen und 
dann schrittweise austauschen. Warum fügst Du die API-Bibliothek 
händisch ein? Das geschieht doch normalerweise via Includes. Ich habe 
mal das Script angehängt, mit dem ich die Bibliotheken gebaut habe.

Jörg

von Dominik (Gast)


Lesenswert?

Hallo Jörg,
schön das du da bist :)

Danke für das build bin. Perl? Werde ich mal testen!

Ich hatte doch eine zusätzliche Infoseite im Hauptmenü eingebaut. Und 3 
unterschiedliche Programmicons eingefügt.
Dadurch flog bei mir die API und das XModem aus dem Include.
Problem ist halt der .org Platz zwischen Anfang und 0x4000

Xmodem passte zwar wieder rein aber die API's nicht. deshalb habe ich 
alle Api Sprünge in der Measlib händisch zu den libmio_... Sachen 
geändert. Brachte aber nichts außer Abstürze.

Ich überlege jetzt, wie ich am besten die API's wieder mit an Bord 
bringe UND meine zusätzlichen Icons und Infoseite beibehalten kann.
Kann man an den Org Sachen in der main noch irgendwas tricksen??

von Dominik (Gast)


Lesenswert?

PS:

Bezüglich den Configbits:
Ja, es sind alle Bits soweit beschrieben, bis auf Bit 5 für den 
seriellen Pin Input!
In der libmio/library.asm finde ich alle Config Bits und deren Abfrage. 
Jedoch nicht das 5. Bit für den Input Pin. Außer für die Konfiguration 
der 2. Schnittstelle. Da fragt er nur das 5. Bit ab ob gesetzt, wenn ja, 
dann aktiviere 2. Schnittstelle.
Aber von der Systemschnittstelle ist nichts zu finden!

PPS:
Die Unterlagen entsorgt??? :-O
Jörg, das wäre eine schöne Bettlektüre für mich gewesen!! :)

von Dominik (Gast)


Lesenswert?

Nochmal eine ganz blöde Frage:

im Systemordner liegen:
- api.asm
- api.inc
- api_macros.inc

In der MAIN wird aber nur api.asm eingebunden. Ist das richtig? Werden 
die anderen Dateien irgendwo anders included oder braucht man die gar 
nicht?

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Die beiden .inc Dateien braucht man für das System nicht, wohl aber für 
die Programmierung von Binärprogrammen, Treibern oder Bibliotheken.
Welches der beiden Includes man nimmt, hängt vom eigenen Gusto ab. Die 
Dateien werden nicht von Hand erstellt, dafür gibt es auch ein Script, 
welches die Adressen aus dem Listfile ermittelt.

Jörg

von Dominik (Gast)


Lesenswert?

Super...danke Jörg!

Habe jetzt ein paar Videmoded rausgeworfen und schon passeb die Apis 
wieder rein :)

Teste nachher mal die Measlib mit dem LCD Treiber und deinem 
Beispielprogramm.

Wie machst du das mit den .org Sachen in der Main? Weißt du aus dem Koof 
raus wie viel Platz die einzelnen Sachen brauchen oder siehst du das 
irgendwie? Wie gesgt, eine zusätzliche Seite im Menp UND Apis war 
zuviel.

von Dominik (Gast)


Lesenswert?

Ohne Videomode 3,4,5
stürzt mein Editor ab. Toll... also alles wieder rückgängig und gucken 
wo ich Platz herbekomme in den Org Directiven.

Was anderes:
Ich habe das ominöse 5. Bit der libmio_sysconfig gefunden!!!
Zufällig!

Es wird in der "vint_o.asm" abgefragt! Dort wird dann entschieden, ob 
PD1 oder PD3 genutzt wird! Juhuuu

von Dominik (Gast)


Lesenswert?

Also die libraries laufen alle wunderbar Jörg.
Hab auf die 1.50er gewechselt und dort mein Menü soweit wieder angepasst 
wie ich es hatte.

Musste dafür jetzt leider auf meine Extraseite verzichten weil der Platz 
so eng ist und ich beim compilieren Fehlermeldungen bezüglich .org 
bekomme.

Bis auf die Screenshotfunktion kann ich so auch nichts mehr 
rausschmeißen sonst laufen die libs nicht mehr.

Schade... ein paar kb mehr Speicher wäre super.
Oder nochmal die Frage: kann man bei den Org Anweisungen noch was ändern 
was den Speicher betrifft?

von Dominik (Gast)


Lesenswert?

Zur Measlib:

ich habe mir die Bibliothek auf einen Programmplatz gelegt und 
zusätzlich wie gefordert einen LCD Treiber (1x16).

Bei folgender Zeile im Beispielcode von MESS4:
1
92 OUT $A00+I,AR(J):NEXT

bekomme ich einen Syntax Error angezeigt!
Habe die Zeile dann auskommentiert und das NEXT verschoben, jetzt läuft 
das Programm.
Widerstände werden exakt gemessen. Bei Kondensatoren gibt es 
Abweichungen.
Warum die Zeile 92 einen Syntax Error ausgibt kann ich nicht 
nachvollziehen. Hoffe die Zeile ist nur für das LCD relevant?!

Ansonsten stelle ich jetzt erst fest wie komplex der Computer doch sein 
kann wenn man anfängt sich mit den binär Sachen zu beschäftigen!
Mir ist aufgefallen, dass die V1.50 größer ist als die 1.45. Warum? 
Außer Bugfixes wurde doch nichts weiter gemacht oder? Den ATmega1284P 
hatte ich bereits mit der 1.45 eingebunden.

Mir fehlt immer noch etwas Speicher für meine Zusatzseite! Mache mich 
jetzt auf die Suche ob noch irgendwas weg kann. In der Api zum Beispiel 
die XMEM Sachen brauche ich ja auch nicht.

von Joerg W. (joergwolfram)


Lesenswert?

Die .org Anweisungen sind dazu da, dass Tabellen immer an 256-Byte 
Grenzen im Flash liegen. so lassen sie sich einfacher und schneller 
indizieren. Wenn z.B. schon in ZL der Index liegt, braucht man nur ZH 
mit dem Tabellenstart zu laden und ein lpm ZL,Z zu machen.

> Außer Bugfixes wurde doch nichts weiter gemacht oder?

Für solche Zwecke wurde vor langer Zeit das Changelog erfunden ;-) 
Selbiges befindet sich übrigens am Ende der Haupt-Doku. Außerdem können 
auch "einfache" Bugfixes größere Veränderungen am Code nach sich ziehen.

Wenn man das Projekt erweitern will, kommt man um einen Mega1284P und 
großflächiges "Entwirren" nicht herum. Aus Platzgründen gibt es 
teilweise Sprünge anstatt ret am Ende von Subroutinen. Das Sprungziel 
befindet sich dann in einer anderen Subroutine, die dann den "Rest" des 
Codes abarbeitet. Damals war das notwendig, damit alles noch in den 
Mega644 passt.

Jörg

von Dominik (Gast)


Lesenswert?

Moin Jörg,

die Changelog kenne ich. :)
Leider fehlen die Änderungen von der 1.50 zur 1.51 Version. Aber egal!

Ja mit den Sprüngen habe ich gesehen. Ich blicke so langsam mehr und 
mehr durch den Code. Auch wenn vieles trotzdem noch sehr undurchsichtig 
scheint.

Ist ein Return nicht besser um einen Sprung abzuschließen, anstatt einen 
neuen Sprung zu machen??

Kannst du was zu dem Syntax Error sagen den ich bekomme bei dem 
Messprogramm?

von Joerg W. (joergwolfram)


Lesenswert?

> die Changelog kenne ich. :)
> Leider fehlen die Änderungen von der 1.50 zur 1.51 Version. Aber egal!

Du hattest aber explizit nach den Änderungen zwischen V1.50 und V1.45 
gefragt.

> Ist ein Return nicht besser um einen Sprung abzuschließen, anstatt einen
> neuen Sprung zu machen??

Wenn am Ende z.B. Ergebnisse an eine bestimmte Stelle geschrieben und 
Register vom Stack geholt werden müssen und das am Ende einer anderen 
Routine bereits gemacht wird, kann man direkt dorthin springen und damit 
Code einsparen. Gut, man erkauft sich das mit 2-3 Takten mehr, aber wie 
Du selbst gerade siehst, ist fehlender Platz oft das größere Problem.

> Kannst du was zu dem Syntax Error sagen den ich bekomme bei dem
> Messprogramm?

Nein. Denn das ist das /funktionierende) Programm, welches ich vom CB2 
auf den Computer übertragen habe. Tritt er auch mit originalem 
OS+Measlib auf?

Die Ungenauigkeiten bei der C-Messung muss man halt über die 
entsprechenden Array-Werte korrigieren. Die Messung nutzt den Komparator 
und die interne Referenz, die zwischen 1 und 1,2V liegen kann. Der 
dadurch entstehende Messfehler wird noch größer sein, da die 
Entladekurve bei ca. U/5 schon relativ flach ist.

Jörg

von Dominik (Gast)


Lesenswert?

Ja, der Fehler tritt auch bei original OS auf.
Deswegen hatte ich mich gewundert! Aber wie gesagt, das Programm läuft 
wenn ich die Zeile auskommentiere!

Meine Extra-Systemseite hab ich nun auch wieder in den Flash bekommen! 
:-)

Ich werde zu Hause mal versuchen eine .hex in eine .bin umzuwandeln. Das 
ist das nächste wichtigte Ziel!

von Dominik (Gast)


Lesenswert?

Hallo Jörg,

So....

1. cbterm.asm genommen, die includes angepasst und mit AVRA kompiliert. 
Hat geklappt!

2. cbterm.hex mit hex2bin umgeandelt. CBTERM.BIN (55kB) ist entstanden!

3. CBTERM.BIN geöffnet und alle bis zum Programmstart gelöscht, dann aus 
einer bereits existierenden CBTERM.BIN die Leerzeichen hinte dem 
Programm kopiert und eingefügt sodass meine .bin exakt 3072 Bytes groß 
ist.

4. Per XMODEM auf den CB2 übertragen. Hat funktioniert, Icon wurde 
erstellt.

5. Starten geht nicht, AVR stürzt ab, es gibt Bildstörungen, wie beim 
Empfang per XMODEM.

Was könnte ich falsch gemacht haben? Die .bin sieht mit dem Texteditor 
exakt genauso aus wie die original .bin. Habe nichts geändert! Größe 
passt auch. Dennoch startet sie nicht!

von Joerg W. (joergwolfram)


Lesenswert?

> Was könnte ich falsch gemacht haben?

Du hast nicht richtig verstanden, wie die Binaries erstellt werden und 
versuchst, das irgendwie unter Windows hinzubekommen. Spätestens wenn 
die "rohe" Binärdatei größer als 3K ist, müssten die Alarmglocken 
klingeln. Wenn ich cbterm.asm übersetze, ist das Hexfile 3450 Bytes groß 
und das Binary 1216 Bytes. Der Rest wird dann bis 3K mit Nullen 
aufgefüllt. Wahrscheinlich füllt Dein hex2bin von 0x0000 bis 0x6C00 auf 
und du musst 55296 Bytes vorne abschneiden.

> Die .bin sieht mit dem Texteditor
> exakt genauso aus wie die original .bin.

Das ist aber jetzt nicht Dein Ernst...

Wenn Deine Datei identisch wäre, würde sie ja genauso wie das Original 
funktionieren.

Jörg

von Dominik (Gast)


Lesenswert?

Ja was soll ich denn machen?
Klar ist das mein Ernst!

Ich hab AVRA.exe und HEX2BIN.exe
Und bin so vorgegangen wie du es beschrieben hast!

Ich weiß ja nicht warum hex2bin bis 0x6C00 auffüllt. Die cbterm.asm bzw. 
.hex ist die Originale!

Wenn ich natürlich Linux brauche, einen Ingenieurstitel und der Jupiter 
im Orion stehen muss dann kann das natürlich nicht funktionieren.
Immerhin bin ich der Erste seit Projektbeginn der sich mit den binaries 
mal auseinandersetzt.

von Joerg W. (joergwolfram)


Lesenswert?

> CBTERM.BIN (55kB) ist entstanden!

Und das ist Dir nicht komisch vorgekommen?

> Wenn ich natürlich Linux brauche, einen Ingenieurstitel und der Jupiter
> im Orion stehen muss dann kann das natürlich nicht funktionieren.
> Immerhin bin ich der Erste seit Projektbeginn der sich mit den binaries
> mal auseinandersetzt.

Ich denke, ab diesem Punkt können wir uns jede weitere Diskussion 
sparen.
Ich entwickle meine Projekte unter Linux und hin und wieder stelle ich 
welche davon der Allgemeinheit als OpenSource zur Verfügung. Ob das 
Einer nutzt, Millionen oder gar keiner, ist mir eigentlich egal. Aus 
diesem Grund habe ich auch vor längerer Zeit die Zugriffszähler von 
meiner Homepage entfernt. Das schürt nur unnötige Eitelkeiten.

Wer lieber Windows benutzt, mag das gerne tun. Unterstützung dafür wird 
es aber von mir nicht geben. Zumindest nicht in diesem Leben...

Jörg

von Dominik (Gast)


Lesenswert?

Na das hat ja auch keiner verlangt.
Wer den Thread von Anfang an verfolgt hat, der weiß das auch. Hab ja 
auch nie gemeckert deswegen. Im Gegenteil.

Natürlich kam mir das komisch vor mit der .bin
Ich ging aber davon aus, wenn ich in der bin alles bis zum eigentlichen 
Inhalt lösche und dann dahinter auffülle bis 3072 bytes sollte es 
reichen.

Aber allein dadurch, dass hex2bin die Datei anders erstellt als bei dir 
ist schon komisch. Ich weiß halt nur nicht warum.

von Dominik (Gast)


Lesenswert?

Siehe da...
ich habe jetzt 5 verschiedene Versionen von HEX2BIN gefunden.
Und bei der 5. hat es dann funktioniert.
Die erstellte BIN ist um die 2000 Bytes groß. Den Rest mit Nullen 
aufgefüllt.
Startet trotzdem nicht.

Eine fertige BIN aus deinen Sourcen läuft einwandfrei.

Kopiere ich den Inhalt der Bin in die von mir erstellte läufts auch 
nicht.
Nullen habe ich aufgefüllt bis 3072 Bytes.
Mh... bin wohl doch zu doof dafür :(

von Dominik (Gast)


Lesenswert?

HEUREKA!

Doch nicht zu doof!!
Es funktioniert!!!!

Musste mir natürlich alles auf Windows Ebene zurechtklamüsern!
Jetzt funktioniert alles und ich kann mir eine Batch schreiben.

Für die die es interessiert unter Windows:

1. Test.asm mit AVRA kompilieren
2. Test.hex mit HEX2BIN umwandeln
3. Mittels "fsutil file createnew" unter Eingabeaufforderung eine Dummy 
Datei erstellen. Größe der Datei = 3072 Bytes - Größe der .bin
4. Mittels "type DummyDatei >> Test.bin" die Dummy Datei anhängen

Es läääääuft!!!
Danke Jörg!

von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Hier für alle Windows-Benutzer folgende Dateien, damit man eine .bin 
Datei erstellen kann:

- HEX2BIN.exe (in den Ordner kopieren wo die .asm Datei liegt)
- AVREL.exe (auch in den Ordner mit der .asm Datei)
- BUILDBIN.bat (Aufruf: Buildbin [Datei])

Aus der .asm Datei wird eine .bin erstellt welche direkt auf den CB2 per 
XModem übertragen werden kann!
Das Script löscht dann alle erstellten Dateien wieder bis auf die .bin 
Datei.

von Dominik (Gast)


Lesenswert?

Passend zum Retro Computer habe ich mit Visual Basic ein kleines 
Programm geschrieben mit dem man die .bin Dateien etwas komfortabler 
erstellen kann.

Außerdem habe ich ein kleines Terminal eingebaut und einen Editor. Dort 
kann man BASIC Programme senden und empfangen und diese dann am PC 
bearbeiten. Mit automatischer farbiger Einfärbung von BASIC-Befehlen, 
Überwachung der Zeichen pro Zeile und und und... Soll aber kein Emulator 
werden!

Übrigens, hier mal eine kleine Übersicht wo ich einen AVR Chipbasic2 
einsetze bzw eingesetzt habe:

- Im Cabrio als Dachsteuermodul, etc,
- Als Wetterdaten Empfangsstation
- Für MSR Aufgaben
- Home- und Spielecomputer

Gerade im Auto und als MSR Rechner bieten sich die kleinen TFT 
Bildschirme an, da sie perfekt in Tischgehäuse passen.
Erinnert leicht an den Commodore-SX 64

Gruß
Dominik

PS: Ich hoffe es gibt noch ein paar CB2 Junkies hier??

von sv3ora (Gast)


Angehängte Dateien:

Lesenswert?

Hello,
Here is the complete schematic I have re-drawn for the AVR chipbasic2 
with the atmega644p.
I have included everything into a single schematic, no need for 
adaptors.
I have corrected some errors from the schematics of Joerg (I2C bus 
errors, 16 color extension errors, Serial port errors, SCART port 
error). R13 is still to be checked against B/W BAS or else it's position 
must be changed at the bottom of R14.

My additions to the schematic:
1. An embedded MCU programmer, so you do not need to buy a programmer. 
Tested with Ponyprog.
2. Jumper switches select either programmer or flash in the ICSP.
3. Jumper switches select between null-modem or ordinary serial cable in 
the serial port. So if you do not have a null-modem you can use an 
ordinary serial cable.
4. Scart port as well as Audio and Video RCA included.
5. HSYNC/VSYNC/CLK signals available in a pin-row.
6. Second serial port available into this pin-row.
7. PSU added, which can be fed from 220VAC, or 8-35VDC, or 8-35VAC. AC 
is automatically disabled with internal J1 switch. So you can use any 
PSU available at home, no matter AC or DC.

Enjoy!
de sv3ora http://qrp.gr


PS. Dominik, please email me (find my email at the end of my site) so 
that maybe we could exchange ideas about the computer.
Sorry I do not know German :(

von sv3ora (Gast)


Lesenswert?

> Habe nun mehrere Vintage Basic Spiele portieren können und es ist total
> genial! Vielleicht erstelle ich mal ein Verzeichnis mit Listings falls
> Interesse besteht.


Hallo, ich interessiere mich für diese Spiele. Können Sie eine ZIP-Datei 
erstellen und sie hier veröffentlichen, damit ich sie herunterladen 
kann?

von Horst (Gast)


Lesenswert?

Hallo, zusammen!

Gäbe es die Möglichkeit, etwas Hardware an diesen kleinen Computer 
anzuschließen? Wie das früher möglich war, zum Beispiel über einen 
8-Bit-Port, oder eine I2C-Schnittstelle. Und mittels Peek- und 
Poke-Befehlen zu verwenden oder sogar über echte BASIC-Befehle?

Leider kann ich das nicht selber machen; aber es wäre eine feine Sache.

Auf jeden Fall ein toller Computer!
Horst.

von Joerg W. (joergwolfram)


Lesenswert?

Gibt es doch. Direkt im Basic.

> 8-Bit-Port

- OUT, DIR ,IN(n), ADC(n)

> I2C-Schnittstelle

- ICOMM

SPI:

- SPISEL, SPI(n)

Jörg

von sv3ora (Gast)


Lesenswert?

Horst schrieb:
> Hallo, zusammen!
>
> Gäbe es die Möglichkeit, etwas Hardware an diesen kleinen Computer
> anzuschließen? Wie das früher möglich war, zum Beispiel über einen
> 8-Bit-Port, oder eine I2C-Schnittstelle. Und mittels Peek- und
> Poke-Befehlen zu verwenden oder sogar über echte BASIC-Befehle?
>
> Leider kann ich das nicht selber machen; aber es wäre eine feine Sache.
>
> Auf jeden Fall ein toller Computer!
> Horst.

Bitte sehen Sie sich den Schaltplan an, den ich im vorherigen Beitrag 
gepostet habe. Sie können alle von Joerg beschriebenen Schnittstellen in 
einem einzigen Schaltplan sehen. Ich arbeite derzeit auch an einer 
eingebetteten PS / 2-Tastatur und einer VGA-Schnittstelle, ohne weitere 
Chips hinzuzufügen.

von sv3ora (Gast)


Lesenswert?

Ich habe eine Facebook-Gruppe für dieses wundervolle Projekt erstellt. 
Ich weiß nicht, ob ich es hier posten darf, aber dies ist die URL, wenn 
jemand interessiert ist.

Https://www.facebook.com/groups/529571947566185/

Ich und andere werden dort unsere Arbeit zur Weiterentwicklung des 
Projekts veröffentlichen. Ich werde versuchen, auch dieses Forum mit den 
neuesten Nachrichten auf dem neuesten Stand zu halten, aber das 
Schreiben in deutscher Sprache von Google translate ist unbequem!

von Peter S. (petersieg)


Lesenswert?

Oh no! Plese NOT facebook!!

Peter

von sv3ora (Gast)


Lesenswert?

Peter S. schrieb:
> Oh no! Plese NOT facebook!!
>
> Peter

Ok perfectly understood and respect that.
Thank you

von sv3ora (Gast)


Lesenswert?

The new page I have built for the computer

http://qrp.gr/cb2/

There are also hardware extensions and the English translated manual 
there.
Thanks so much Joerg for this nice computer!

Enjoy!

von sv3ora (Gast)


Lesenswert?

Hi,
In that page http://qrp.gr/cb2/ I have released a "minimal version" of 
the hardware for the impatient. This requires the least wiring and the 
absolutely minimum effort required for a working computer. The extra 
options (LPT,I2C, ext-flash, ICSP) can be added later on if one wishes 
so. But they are not required if you want to have a BASIC computer to 
make programs on.
I have built and tested this CB2 hardware "clone" and it works great in 
every aspect.
Enjoy!

von sv3ora (Gast)


Lesenswert?

Hi,
In that page http://qrp.gr/cb2/ I have designed a universal modem for 
the CB2, under the "modem" link.
The modem is a 1200 baud CCITT V23 FSK modem, that communicates directly 
with the CB2 through the TTL level pins of the ATMEGA644P. The modem can 
be used for transferring data through CBterm, BASIC editor, or BASIC 
programs. The data can be transferred through the telephone lines (with 
the help of a telephone device for dialing and call-answering), and 
through HAM radio transceivers (automatic PTT enabled). The modem also 
allows for program storage and loading from audio recorders, so now you 
can store your programs on simple audio recorders (and cassette 
recorders if you like the vintage feeling) like it was done on 80s 
micros.
Enjoy!
De sv3ora

von sv3ora (Gast)


Angehängte Dateien:

Lesenswert?

sv3ora schrieb:
> Hi,
> In that page http://qrp.gr/cb2/ I have released a "minimal version" of
> the hardware for the impatient. This requires the least wiring and the
> absolutely minimum effort required for a working computer. The extra
> options (LPT,I2C, ext-flash, ICSP) can be added later on if one wishes
> so. But they are not required if you want to have a BASIC computer to
> make programs on.
> I have built and tested this CB2 hardware "clone" and it works great in
> every aspect.
> Enjoy!

Here is the picture of the CB2 clone.

von sv3ora (Gast)


Angehängte Dateien:

Lesenswert?

is a simple BBS written to run on the "minimal version" CB2. It requires 
a serial dial-up modem (external "smart" modem) to be connected on the 
RS-232 port of the CB2. microBBS handles the modem auto-answer and all 
the communications after the establishment of the dialup connection. 
With microBBS callers can write their own public messages and preview 
the list of public messages. They can also view information about the 
system. The program stores the messages in the internal EEPROM of the 
MCU, which is limited, so keep messages short. microBBS is designed to 
display the information correctly aligned on the CBterm of other CB2 
clients. On connection of a client from a PC, you may need to alter the 
printed messages spaces, to line up the information better on the PC 
terminal. If you want to run your own BBS, you may need to change the 
name of the BBS as well as the system information messages, to suit your 
needs.

von Max B. (citgo)


Lesenswert?

sv3ora schrieb:
> is a simple BBS written to run on the "minimal version" CB2. It requires
> a serial dial-up modem (external "smart" modem) to be connected on the
> RS-232 port of the CB2. microBBS handles the modem auto-answer and all
> the communications after the establishment of the dialup connection.
> With microBBS callers can write their own public messages and preview
> the list of public messages. They can also view information about the
> system. The program stores the messages in the internal EEPROM of the
> MCU, which is limited, so keep messages short. microBBS is designed to
> display the information correctly aligned on the CBterm of other CB2
> clients. On connection of a client from a PC, you may need to alter the
> printed messages spaces, to line up the information better on the PC
> terminal. If you want to run your own BBS, you may need to change the
> name of the BBS as well as the system information messages, to suit your
> needs.

Sorry, I have just been visited your site. Great! Really good work.
I like it how you represent the games and the other stuff with pictures 
and small descriptions.

After a long time a turned on my CB2 today and I'm ready to make some 
more stuff.
Did you get the calendar and the moon phase programs?

von Max B. (citgo)


Lesenswert?

Hach... immer wieder schön die Kiste mal auszupacken, an den TV zu 
klemmen und ein bißchen zu programmieren :)

von KOS (Gast)


Lesenswert?

Max B. schrieb:
> Sorry, I have just been visited your site. Great! Really good work.
> I like it how you represent the games and the other stuff with pictures
> and small descriptions.
>
> After a long time a turned on my CB2 today and I'm ready to make some
> more stuff.
> Did you get the calendar and the moon phase programs?

Not I did not! Can you email them to me please? The email is on my site 
http://cb2.qrp.gr

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Hi,
Respekt, nettes Projekt zum rumspielen! Was die relativ kurzen Basic 
Programme leisten beeindruckt mich.

Wo findet man denn die aktuellen Quellen? Ich will mir mal anschauen, 
wie das ein oder andere umgsetzt/realisiert wurde.

von Joerg W. (joergwolfram)


Lesenswert?

http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php

von dort aus -> Download

Demnächst wird es wohl auch eine Version mit ein paar Fehlerkorrekturen 
etc. geben.

Jörg

von Franz J. (franz_j179)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir den Chip-Basic2 in der Universalvariante (mit 9-poliger 
Buchse für Audio und Video) nachgebaut und er funktioniert tadellos.
Als Monitor nehme ich das (nicht mehr lieferbare) 4,3" Displayset von 
Pollin. Es hat jeweils einen Cinch-Audio und FBAS-Eingang.

Nun mein Problem:
Die normale Ausgabe über BAS (Pin 8 der D-Sub-Buchse) liefert ein 
tadelloses schwarz/weißes Bild.
Da ich zufällig einen CXA1645P in meinem Bestand habe, dachte ich mir, 
es mit FBAS zu versuchen. Von den Daten her müsste dieser doch ähnlich 
wie der in diesem Thread von manchen verwendete MC1377P sein - und das 
schöne daran, er läuft sogar mit 5 V.
Anhand der Sony-Applikationsschaltung (siehe Anhang) habe ich mir also 
den Encoder auf Lochraster nachgebaut, doch leider liefert er überhaupt 
kein Bild (nicht mal ein Flackern ist zu erkennen).
Im Gegensatz zum MC1377P kann nicht direkt ein Quarz angeschlossen,
sondern es muss an Pin6 ein Sinussignal mit der PAL-Frequenz angelegt 
werden.
Provisorisch habe ich 4,43619 MHz von meinem Netzwerktester (NWT1) an 
diesen Pin eingespeist (2,3 Vss) - später soll ein Quarzgenerator 
folgen.
Nach mehrmaligem Durchmessen der Schaltung konnte ich keinen Fehler 
finden und auch die Stromaufnahme ist im Sollbereich (ca. 40 mA).

Daraufhin habe ich wie in der MC1377-Applikation die RGB-Eingänge mit 75 
Ohm nach GND abgeschlossen und HSYNC über eine Diode und Csync über 10k 
jeweils zusammengeführt und über 68 Ohm an GND gelegt.
Einzig und allein die RGB-Eingangs-Koppelkondensatoren habe ich auf 
100nF belassen und bin von dort direkt an die Pins 1, 2, und 3 der 
DSUB-Buchse gegangen.

Leider findet man kaum Hinweise zu diesem Chip; vielleicht haj jemand 
eine Idee was ich noch überprüfen könnte?


Gruß

Franz

Beitrag #6266993 wurde von einem Moderator gelöscht.
von Giga G. (giga300)


Lesenswert?

Hallo, ich habe dieses Projekt aus einem Atmega644P erstellt (mein 
Atmega1284P funktioniert nicht, die Verbindung ist die gleiche wie beim 
644?) Ansonsten funktioniert alles einwandfrei.

Ich wollte die serielle Programmübertragung versuchen, da ich kein 
RS232-Kabel zur Hand habe. Ich habe ein Arduino Uno verwendet, um die 
Verbindung herzustellen (mit gekreuztem TX und RX), und am Ende bekam 
ich Auf HyperTerminal die Meldung "Press Space to Start", habe ich es 
geschafft, BASIC-Programme von Atmega zu senden, aber Binärprogramme wie 
Textprogramme werden nicht vom Computer gesendet. Hat jemand eine Idee? 
Mit der ExtraPutty-Software konnte ich etwas über Xmodem senden, aber 
das Senden scheint nicht zu enden und ich habe seltsame Zeichen im 
Programmsymbol. Außerdem wird das Programm "Serial Loader" nicht 
geöffnet, es soll geöffnet werden ?

EEPROM funktionieren auch nicht oder ich weiß nicht, wie ich sie 
verwenden soll ...

von Franz J. (franz_j179)


Lesenswert?

Habe das Problem gelöst.
Pin 10 (Sync) vom CXA1645 muss direkt mit HSYNC (Pin 5 auf Sub-D) 
verbunden werden. Vsync ist ohne Bedeutung.
Außerdem war mein Testkabel zu lang - das BAS-Signal kam noch 
einigermaßen durch (Pin 8 auf Sub-D), aber die R,G,B-Daten und vor allem 
die HSYNC waren total verrauscht (habe es auf dem Oszi beobachtet).

Habe parallel noch eine Version mit AD724 aufgebaut. Hier muss der VSYNC 
vom AD724 auf +5V gelegt werden, der HSYNC geht wieder direkt auf Pin5.

Beide Versionen laufen mit 5V.
Subjektiv kommt mir das Bild mit dem AD724 schärfer vor, es kann aber 
auch an meinen provisorischen Leitungen liegen.

von Max B. (citgo)


Lesenswert?

Frohes Neues Jahr zusammen,

2 Jahre später und immer noch aktuell.
Zur Zeit nutze ich die Atmega8 Version für kleinere Schaltaufgaben zu 
Hause.

Die 1284p Version habe ich mir jetzt nochmal aufgebaut aber diesmal mit 
Universal Video Buchse damit ich flexibler bin.

@Franz
Das ist interessant.
Ich nutze immer noch erfolgreich den MC1377. Aber gut zu wissen, dass es 
noch Alternativen gibt.

@Jörg
Gibt es noch Ideen, Features, etc. für die Zukunft?

von Joerg W. (joergwolfram)


Lesenswert?

> Gibt es noch Ideen, Features, etc. für die Zukunft?

Nein, da kommt nichts mehr. Zumindest nicht von mir, aber der Quellcode 
ist ja Open Source. Ich habe einfach keine Verwendung mehr dafür. Wer 
setzt sich  mit einer Tastatur vor einen 40" Flatscreen? Für VGA, was ja 
heute auch mehr und mehr obsolet wird hätte man zusätzliche Hardware 
benötigt. Vor fast genau 14 Jahren war das vielleicht eine tolle Sache, 
aber die Welt ist in der Zwischenzeit nicht stehen geblieben...

Jörg

von Max B. (citgo)


Lesenswert?

Ach Jörg...
Die Welt vielleicht nicht aber wir Retro Junkies :)
Ich bin froh noch einen kleinen Flat-TV mit Scart im Keller stehen zu 
haben für solche Geschichten. Selbst alte Konsolen sind über RGB einfach 
ein Muss.

Und ja, wenn ich den Chipbasic auspacke dann sitze ich da mit der alten, 
klobigen, vergilbten Tastatur.
Der Chipbasic ist eine tolle Sache und wird immer noch genutzt.
Es gibt hier einen User aus Griechenland der dem CB eine Webseite 
gewidmet hat. Samt Bibliothek sämtlicher Programme und Spiele dafür. 
Also es wird immer noch fleißig damit programmiert.

Ich würde das Projekt nicht so unterbewerten. Was du dir da aus dem Kopf 
gedrückt hast ist schon einzigartig.

Ja, es ist Open Source. Aber du hast wirklich jede noch so kleine 
Kleinigkeit erfolgreich implementiert.
Bis auf ein paar Verschönerungen am Layout und ein paar Änderungen am 
Menü habe ich auch nicht wirklich was gemacht.

von Max B. (citgo)


Lesenswert?

Moin zusammen,

für alle Interessierten kann ich nur nochmal Werbung für die Seite von 
Kostas machen:
http://cb2.qrp.gr

Er und ein paar Andere haben dort alle möglichen Programme und Spiele 
(Ja, es gibt neue Spiele) mit Screenshot und Quellcode angelegt.
Es gibt also tatsächlich noch welche, die den Computer nutzen und dafür 
programmieren. Spiele wie Tic Tac Toe, Mastermind, Reversi, etc. sind 
wirklich klasse gelungen für das System.

Demnächst erscheint dort auch der Urvater der Wirtschaftssimulationen. 
Ich habe erfolgreich das Spiel HAMURABI umgesetzt.
Zur Zeit bin ich dabei KAISER vom C64 auf den CB2 zu portieren. Leider 
mit ein paar Einschränkungen.

Übrigens, ich nutze sogar noch den Atmega8 Chipbasic, eingebaut in ein 
kleines Gehäuse mit Mini-TFT schaltet und regelt er ein paar Sachen bei 
mir zu Hause :)

Beitrag #7001578 wurde von einem Moderator gelöscht.
von Max B. (citgo)


Lesenswert?

Eben gefunden:

https://www.youtube.com/watch?v=or0Cev_Ziag

Hier hat jemand die 32er Basis vom Chipbasic genommen und in einen 
ATMega328 gepackt. Zwar alles auf russisch aber was mir besonders gut 
gefällt sind die verschiedenen Chartables die er zur Laufzeit nutzt.

Besonders im Editor. Dort sind jetzt farbliche Syntax Hervorhebungen :)
Sehr cool!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.