Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » LC-80 reloaded - Platinenlayout für Neuauflage » Themenansicht

Autor Thread - Seiten: [ Erste Seite ] ... [ 2 ] [ 3 ] [ 4 ] -5- [ 6 ] [ 7 ] [ 8 ]
400
20.01.2016, 21:13 Uhr
KK

Avatar von KK

@Holm

Glückwunsch, der Fehler war wohl nicht fies genug, um deiner Hartnäckigkeit zu widerstehen. ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
401
21.01.2016, 10:28 Uhr
holm

Avatar von holm

Danke für die Blumen, aber ich muß mich erst mal um andere Sachen kümmern, hoffe das ein Anderer mal weiter macht.

Ich habe den ganzen Schraddel auf http://www.tiffe.de/Robotron/LC80ex abgeladen:

Quellcode:

-rw-r--r--  1 holm  www    4096 Jan 21 10:06 LC802.BIN
-rw-r--r--  1 holm  www    4214 Jan 21 10:03 LC802m.bin
-rw-r--r--  1 holm  www  1068307 Jan 21 10:10 Zapple_8k_BASIC_Users_Manual.PDF
-rw-r--r--  1 holm  www    8192 Jan 21 10:03 basic.bin
-rw-r--r--  1 holm  www    2727 Jan 21 10:03 ctcsio.mac
-rw-r--r--  1 holm  www    8101 Jan 21 10:03 ctcsio.prn
-rw-r--r--  1 holm  www  109036 Jan 21 10:03 lc808kb.mac
-rw-r--r--  1 holm  www  310332 Jan 21 10:03 lc808kb.prn



LC802.BIN ist der unveränderte Monitor V2, ctcsio.mac ist die initialisierung des CTC und der SIO
für 4800 Baud bei 3,6Mhz und ein paar Ein-Ausgabe Stubs für das Basic.
lc808kb.mac ist der weitestgehend kommentierte (reassemblierte) Source Code des TDL Z80 Basic Interpreters dessen Doku auch in dem Verzeichnis liegt.
Die Kommentare stammen aus dem Source des TDL 12K Interpreters der in großen Teilen identisch ist aber ein völlig anderes Floatingpoint Paket benutzt. MAn kann also dort auch nachschauen, ich habe nicht Alles kommentiert.

Die prn Files sind das jeweilige Assembler Listing mit Cross Reference.

Erzeugt werden die ROMs damit mit dem CP/M Assembler M80 (ASM):

m80 ctcsio.erl,ctcsio.prn=ctcsio/l
m80 lc808kb.erl,lc808kb.prn=lc808kb/l
linkmt lc80bas30=ctcsio,lc808kb

Das erzeugt ein com File in dem sich sowohl der ctcsio Glue Code als auch der Interpreter befindet und die Dateien müssen händisch auseinander genommen werden

Quellcode:

00000000  c3 26 10 c3 3a 10 c3 2e  10 c3 3a 10 c3 2e 10 c3  |.&..:.....:.....|
00000010  2e 10 c3 1b 10 c3 1d 10  c3 00 00 3e 03 c9 c3 21  |...........>...!|
00000020  10 06 ff 3e ff c9 db df  e6 01 c8 3e ff c9 f5 db  |...>.......>....|
00000030  df cb 57 28 fa 79 d3 dd  f1 c9 db df e6 01 c8 db  |..W(.y..........|
00000040  dd c9 3e 07 d3 ec 3e 03  d3 ec 3e 18 d3 df 3e 04  |..>...>...>...>.|
00000050  d3 df 3e 44 d3 df 3e 05  d3 df 3e ea d3 df 3e 03  |..>D..>...>...>.|
00000060  d3 df 3e c1 d3 df 21 00  c0 11 01 c0 01 00 40 36  |..>...!.......@6|
00000070  00 ed b0 c3 8d 4e c3 42  10 c3 3f 31 c3 b2 35 c3  |.....N.B..?1..5.|
00000080  03 10 c3 09 10 c3 06 10  c3 0c 10 c3 0f 10 c3 00  |................|
00000090  10 c3 12 10 c3 15 10 c3  1e 10 c3 18 10 c3 9f 35  |...............5|



Auf Offset 0075 endet ctcsio und auf 0076 beginnt der Interpreter.
Das händisch habe ich so zusammengehackt, bitte je nach benutzter Programmladehilfe
+ erhältlicher Software ändern, kann ja nicht dafür das Keiner Unix nimmt:


Quellcode:

head -c 118 LC80-Basic/lbasi30.com >LC80-Basic/ctcsio.bin
tail -c 8202 LC80-Basic/lbasi30.com >LC80-Basic/3000.rom
dd if=LC80-Basic/3000.rom of=LC80-Basic/3000h.bin iseek=8 count=8
dd if=LC80-Basic/3000.rom of=LC80-Basic/4000h.bin count=8
cat LC80-Basic/LC802.BIN LC80-Basic/ctcsio.bin >LC80-Basic/LC802m.bin
cat LC80-Basic/3000h.bin LC80-Basic/4000h.bin >LC80-Basic/basic.bin



Das holt aus lbasi30.com das ctcsio binary (118 Bytes) und speichert es nach ctcsio.bin,
danach werden die letzten 8202 Bytes aus lbasi30.com geholt und nach 3000.rom gespeichert.
Da die Adressierung desLC80ex vergriesgnaddelt ist müssen nun die 4K Blöcke ab 3000h und 4000h getauscht werden, deswegen werden sie mit dd vereinzelt und nach 3000h.bin und 4000h.bin geschrieben um danach mit cat in umgekehrter Reihenfolge wieder zu basic.bin zusammengesetzt zu werden.

Ich habe momentan 8K Rom mit dem Monitor V2 und dem ctcsio-Kram auf S1 (0-1FFF) ab 1000 befindet sich dort der ctcsio Kruscht. Auf S3 lungert ein 8K ROM mit dem basic.bin, Adresse 3000-4fffh. Auf S4 und S5 befinden sich jeweils 2 8K RAMs (6264), also von c000.0ffffh RAM, der wird von der ctcsio init Routine mit 0 gelöscht bei Initialisierung.

Der Interpreter läßt sich auf 3000H starten und redet dann über die SIO, ein mal ET bestätigt die Abfrage
nach Highest Memory, der Interpreter saugt sich dann was später noch zu Optimierendes aus den Fingern.
Das Ding stürzt nach wie vor beim Benutzen von "edit Zeilennummer" ab und springt in den LC80 Monitor,
ich weiß nicht warum, aber eventuell kann ja mal ein Anderer weiter machen (auch wenn ich nicht viel Hoffnung habe das das passiert).
Ein auf die selben Adressen gelinkter Interpreter auf meinem Testsystem tut das nicht, allerdings arbeitet der Ein Ausgabemäßig über den Zapple V2 Monitor, evtl. habe ich ja bei den primitiven E/A Routinen einen Fehler gemacht..k.A., das war eh nur quick & dirty..hybsch machen hatte ich auf später geschoben.

Im Rom des Basic Interpreters sind am ende noch 2 Bytes platz, da kann man nix mehr rein editieren, deswegen liegt der Schraddel ab 1000h.
Sachen um die man sich kümmern muß sind der Edit Mode und das "load" und "save" das Interpreters um Programme speichern zu können.

Quellcode:



HIGHEST MEMORY?

16266 BYTES FREE

Welcome to BASIC, Ver. 1.3
<TDL Z-80 8-K VERSION>

>READY




Nochwas: den vom Interpreter verlangten Variablenbereich (Puffer) habe ich nach 2400H verlegt, das war der ursprünglich nicht verschiebliche Bereich. 2F00 würde es aber auch tun, der braucht nur 0xff Bytes.


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 21.01.2016 um 10:38 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
402
21.01.2016, 11:37 Uhr
millenniumpilot

Avatar von millenniumpilot

eine blöde frage vielleicht von mir: das TinyBasic aus Beitrag 341 ist aber ein anderes (2k) und funktioniert schon!?
Also 2 verschiedene Paar Schuhe (ähm.. Basic), von denen hier geschrieben wird?

Gruß Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
403
21.01.2016, 12:11 Uhr
holm

Avatar von holm

TinyBasic <> TDL8K Basic

Ja, das TinyBasic ist soweit fertig, man findet aber sicher nochwas zum basteln (Einbindung load + save etc).

Das TDL Basic hat Floatingpoint Mathematik und Trigonometrische Funktionen, das TinyBasic rechnet mit Ganzzahlen im Bereich von -32768 bis +32767.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 21.01.2016 um 12:12 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
404
21.01.2016, 12:50 Uhr
millenniumpilot

Avatar von millenniumpilot

danke, Knoten im Kopf gelöst.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
405
21.01.2016, 19:18 Uhr
holm

Avatar von holm

Ok, bei mir auch. Ich habe die Files auf dem FTP Server aktualisiert, das geht jetzt.
Der Fehler war meine nicht blockierende Console Eingaberoutine, jetzt geht also auch der Editmodus.

Also einfach basic.bin in einem ROM ab 3000h brennen (3000-4fff) und lc802m.bin in den Startrom (0-1fff)
dann mit 3000h anspringen. Der Buffer RAM liegt jetzt auf 2e000, das Basic Programm auf 0c000H bis Ende.

"save X" ..saved ein Programm namens X auf die Consolausgabe (ist für Lochstreifen gedacht) und "load X" würde ein solches von der Console wieder einlesen. Das ist an Stelle von Punch und Read eingetragen (Vektoren im Basic ab 300c bzw. 3006, Output in Register C input in Register A; in der Datei Basic.bin liegen die Vektoren wegen des LC80ex Versatzes auf 100c und 1006.) Dort ist also Raum für Aktivitäten z.B. Band E/A, man kann natürlich auch den SIO Kanal A da aufklemmen.

Da kommt "Binärsauerkraut" raus da die Basic Befehle von diesem Interpreter platzsparend als Tokens gespeichert werden und nicht im Klartext.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 21.01.2016 um 19:20 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
406
22.01.2016, 09:04 Uhr
KK

Avatar von KK

@Holm

Erstmal Respekt an dich für die Arbeit.
Ich habe das eben ausprobiert. Zickt allerdings ein wenig. Ein simples..

PRINT "HALLO WELT"

..liefert die gewünschte Ausgabe. Schreibe ich den gleichen Befehl in eine Zeile..

10 PRINT "HALLO WELT"

.. und starte mit RUN, kommt "Syntax Error". Bei LIST hängt sich das BASIC komplett auf. EDIT 10 wird mit "Illegal Function" quittiert. Mach ich was falsch?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
407
22.01.2016, 12:32 Uhr
KK

Avatar von KK

Ähh, mein Fehler. Ich hatte übersehen, daß der (Zusatz-) RAM auf C000 bis FFFF gejumpert werden muß. Nun läuft alles korrekt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
408
26.01.2016, 14:57 Uhr
KK

Avatar von KK

Die Betaversion von lc80ex.de ist online. Es sind auch neue Downloads hinterlegt. Vieles fehlt noch und wird später nachgereicht.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
409
31.01.2016, 18:06 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Ihr,

kann mal bitte jemand von den "Schon-fertig-Bauer" die reale Stromaufnahme des LC80ex messen, bestückt mit 3..4 Eproms?

Ich suche gerade in der Krabbelkiste nach einem passenden Steckernetzteil. Gefunden habe ich jeweils eines mit Gleich- und eines mit Wechselspannung 9V/500mA und einmal 12V DC mit 1,2A.

Ich vermute, die kleinen sind zu schwach und das 12V heizt den 7805 unnütz auf.

Genau weis ich das aber erst, wenn Ihr mir ein paar Zahlen um die Ohren schmeißt ;-)

Würde mich sehr freuen.

Gruß aus Berlin
Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
410
31.01.2016, 21:07 Uhr
ambrosius



Hallo Dirk,
bei mir sind das rund 850mA bei Direkteinspeisung 5V mit Steckernetzteil 5V/2A unter Umgehung des 7805. Bestückt ist der LC80ex mit 2716 (S1), D2764 (S2), 6264 (S3-S5). Ich denke einmal, mit 1-1,5A bist Du auf der sicheren Seite.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
411
31.01.2016, 21:09 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holger,

vielen Dank, das hilft ungemein... und schließt die beiden ersten Netzteile aus ;-)

Gruß aus dem kalten Berlin
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
412
31.01.2016, 21:15 Uhr
Alwin

Avatar von Alwin

Hab zwar nicht nachgemessen, aber mein Netzteil hat 9V AC 780mA und es funktioniert bei voller Bestückung ausreichend.
--
...Z1013, KC87, KC85/5, KC Compact, C64, PC1715+W, AC1-2010, LC-80ex
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
413
01.02.2016, 09:22 Uhr
KK

Avatar von KK

Die Stromaufnahme ist sehr stark von den bestückten Komponenten abhängig. CMOS-Ausführungen kommen mit viel weniger Strom aus. Mit dieser Bestückung:

- 2x UA855D MME
- 1x UA857D MME
- 1x Z84C00 CPU
- 1x Z8440AB1 SIO
- 1x Atmel 28C16
- 1x Atmel 28C64
- 2x U6264D ZMD
- 1x 6264 Wingshing
- 8x UL224

zieht meiner 360mA. Wechsle ich die CPU gegen einen UA880D von MME sind es 420mA.

Dieser Beitrag wurde am 01.02.2016 um 09:22 Uhr von KK editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
414
01.02.2016, 11:16 Uhr
millenniumpilot

Avatar von millenniumpilot

Danke!

Ich habe noch eine Handvoll Netzteile gefunden und werde schauen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
415
01.02.2016, 12:26 Uhr
holm

Avatar von holm

Ich habe nun eine Weile mit den SIO Treibern gekämpft, genauer gesagt mit der Hardware Flußcontrolle des Kanals B (Kein Unterschied zu A).
Ich habe mehrmals gedacht ich habe eine Macke, aber das Problem scheint prinzipieller Natur bei der SIO zu sein. Üblicherweise verdrahtet man RTS und CTS gekreuzt zu Flußcontrolle, aber bei der SIO hat die Sache einen Haken, nämlich den hier:
"Sobald das RTS-BIT eines Kanals gesetzt ist, geht die zugehörige RTS-Leitung in den Low-Zustand über. Wird das RTS-BIT in der asynchronen Betriebsart rückgesetzt, geht die zugehörige RTS-Leitung in den High-Zustand, sobald das Senderegister leer ist. In der synchronen Betriebsart..."

D.h. RTS macht nicht so recht was ich mit ihm machen will sondern geht eigene Wege, was daran liegt das RTS ursprünglich einen anderen Zweck hatte und wohl deshalb dieses Verhalten zeigt weil z.B. die ACIA des 6800 Systems da einen fetten Bug hat, die bricht nämlich die Übertragung nicht nach einem gesendeten Byte ab, sondern mitten drin :-~ was zwangsläufig zu Kauderwelsch auf im Empfänger führt.

Bei RTS/CTS Handshake dient der RTS Ausgang aber nicht der Bitte Senden zu dürfen sondern als Signal an den gegenüberliegenden Sender ggf. das Senden einzustellen weil der Empfangspuffer voll ist, das bedeutet das RTS hier ein ziemlich suboptimaler Ausgang der SIO zu diesem Zweck ist.
Ich habe ne Weile gesucht, andere Leute haben das damit gelöst das sie nicht den RTS Ausgang genutzt haben sondern den frei programmierbaren DTR.

Ich habe das mal umverdrahtet und damit funktioniert bei 4800 Baud die Empfangsroutine störungsfrei,
mit RTS ist zu erwarten das immer dann wenn der Sender noch was zu tun hat das Empfangen in die Hose geht, also z.B: dann wenn man ein Basic Programm über die Console hochlädt in dem man ein Basic Programm einfach mit drag&drop in das Terminalfenster fallen läßt, jedes eingegebene Zeichen wird ja dann über den Sender der SIO an die Console geechoet und damit geht RTS einfach nicht auf inaktiv und der PC hört nicht auf Daten zu senden.

Interessanter Weise kann die Sio das im Sendebetrieb aber fehlerfrei mit interner Hardware (autoenable). Sie kümmert sich gewissermaßen liebevoll um ihre Partner und kommt selber zu kurz da die meisten PC UARTs auch noch zu doof sind anzuhalten bevor deren FIFOs leer sind.


Quellcode:

RUN
HI!  I'M ELIZA.  WHAT'S YOUR PROBLEM?
? FLOW CONTROL
SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?
? NO
ARE YOU SAYING NO JUST TO BE NEGATIVE?
? YES
ARE YOU SURE?
?



Das Einlesen funktioniert jedenfalls fehlerfrei.

Hat noch Jeamnd Hinweise?


Quellcode:

;==============================================================
; check console status
ckstb:  push    hl
        push    bc
        ld      hl,rxbwp        ; write pointer
        ld      b,a
        ld      a,(rxbrp)       ; read pointer
        cp      (hl)            ; set zero flag
        ld      a,b
        pop     bc
        pop     hl
        ret  
;==============================================================
bufst:  ld      a,(rxbwp)       ; write pointer
        ld      hl,rxbrp        ; (hl)read pointer
        sub     (hl)            ; difference
        jr      z,bufst1        ; wp == rp
        jr      nc,bufst1       ; wp > rp
        add     a,BUFSIZ        ; wp < rp, wrap around
        and     BUFSIZ-1        ; mask relevant bits
bufst1: ld      (rxbchr),a      ; save it
        ret
;==============================================================
;
;       get char from channel B using int's
;
crtin:  call    ckstb
        jr      z,crtin ; wait for char
        push    hl
        ld      a,(rxbrp)       ; read pointer
        call    bufadd          ; build phys addr
        and     a
        ld      (rxbrp),a       ; update read pointer
        ld      a,(hl)          ; address in hl
        push    af              ; save data
        call    bufst           ; buffer status
        cp      LOWMARK         ; almost empty?
        jr      nc, crti1       ; no
; RTS ON
        ld      a,5             ; yes, switch on RTS
        out     (siobc),a       ; address WR5
        ld      a,(sbw5)        ; init value WR5
        out     (siobc),a       ; write WR5
crti1:  ei
        pop     af              ; get data back
        pop     hl
        ret
;==============================================================
; receiver interrupt routine  channel B
rxbisr: push    af
        push    hl
        call    bufst
        cp      BUFSIZ-1        ; Buffer full?
        jr      z,rxbex         ; we lose a char..
        in      a,(siobd)       ; get data
        push    af              ; save it
        ld      a,(rxbwp)       ; buffer address
        call    bufadd
        ld      (rxbwp),a       ; update address
        pop     af              ; get data back
        ld      (hl),a          ; insert into ring buffer
; RTS OFF
        call    bufst           ; buffer status
        cp      HIMARK          ; almost full?
        jr      c,rxbex
        ld      a,5             ; switch off RTS
        out     (siobc),a       ; address WR5
        ld      a,(sbw5)        ; init value WR5
        and     07bh            ; reset DTR & RTS bit
        out     (siobc),a       ; write WR5
rxbex:  pop     hl
isrend: pop     af
        ei
        reti

;==============================================================
;
;       ISR reset extern status ints
;
errisr: push    af
        ld      a,1             ; RR1
        out     (siobc),a
        in      a,(siobc)       ; get error status
        ld      a,0011000b      ; WR0 error reset
        ld      a,0011000b      ; WR0 error reset
        out     (siobc),a
        in      a,(siobd)       ; get data
        jr      isrend

;==============================================================



Eines der 1. beiden Unterprogramme ist ziemlich redundant, kann sicher Eins entfallen.
Code der verhindert das die Flußcontrolle mehrfach ein- bzw. ausgeschaltet wird habe ich wieder raus geschmissen, der ist genauso lang wie die verhinderte Redundanz..also Blödsinn.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 01.02.2016 um 12:34 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
416
01.02.2016, 18:02 Uhr
ambrosius



Hallo Holm,
mir ist aufgefallen, das Du in der 'errisr'-Routine bei den beiden binären Ladebefehlen des Akku nur 7 Bit angegeben hast. Ich kann jetzt nicht sagen, was der Assembler dann daraus macht bzw. im Programm dann ausgeführt wird. Könnte evtl. sein, das da Mist herauskommt, wenn das 8. Bit 'irgendwie' gesetzt wird. Die Routinen habe ich aber selbst noch nicht ausprobiert, ist mir alles nur beim überfliegen des Listings aufgefallen.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
417
01.02.2016, 18:16 Uhr
holm

Avatar von holm

..offensichtlich kein Grund zur Aufregung, ich mache aber noch ne 0 ran:


Quellcode:

                                      
                                ;==============================================================
                                ;
                                ;       ISR reset extern status ints B
                                ;
  1164    F5                    erbisr: push    af
  1165    3E 01                         ld      a,1             ; RR1
  1167    D3 DF                         out     (siobc),a
  1169    DB DF                         in      a,(siobc)       ; get error status
  116B    3E 18                         ld      a,0011000b      ; WR0 error reset
  116D    D3 DF                         out     (siobc),a
  116F    DB DD                         in      a,(siobd)       ; get data
  1171    18 C2                         jr      isrend
                                
                                ;--------------------------------------------------------------
                                ;
                                ;       ISR reset extern status ints A
                                ;
  1173    F5                    eraisr: push    af
  1174    3E 01                         ld      a,1             ; RR1
  1176    D3 DE                         out     (sioac),a
  1178    DB DE                         in      a,(sioac)       ; get error status
  117A    3E 18                         ld      a,0011000b      ; WR0 error reset
  117C    D3 DE                         out     (sioac),a
  117E    DB DC                         in      a,(sioad)       ; get data
  1180    18 B3                         jr      isrend
                                




Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
418
02.02.2016, 21:14 Uhr
holm

Avatar von holm

Mist, ich Trottel suche über 2 Tage einen Fehler der gar nicht da ist.

Ich wundere mich wer mir nach der Initialisierung des Kanals A dort ständig dafür sorgt das DTR/RTS
kurz nach dem enablen wieder verschwindet...wo doch gar nix dran hängt....

-->EBEN!

Es hängt nix dran an der SIO, die Pins floaten und das Ding empfängt Garbage bis der Puffer voll ist
und der Treiber nimmt RTS/DTR weg... Kopf-> Tisch.

Scheiße! ....Wie ein Anfänger...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
419
02.02.2016, 22:33 Uhr
KK

Avatar von KK

Mach dir nix draus, manchmal sieht man den Wald vor lauter Bäume nicht. Das Problem sollte sich mit ein paar Widerständen lösen lassen. GND und Vcc liegen am Port A mit auf Stiftleiste.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
420
03.02.2016, 00:32 Uhr
holm

Avatar von holm

Freilich doch, ein erkanntes Problem ist ein gelöstes Problem..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
421
03.02.2016, 13:47 Uhr
holm

Avatar von holm

So, ich habe heute mal den CTC als Zähler mit Teiler 12 an 1.8432 Mhz gehängt und über ZC/TO0 die SIO getaktet..geht mit 9600, danach probe aufs Exempel mit 38400 Baud: Keine Probleme.
das geht natürlich nur mit Flußkontrolle die ich derzeit nur jeweils empfangsseitig Interrupt gesteuert laufen lasse. RTS der Sio ist durchgekratzt und das entsprechende PIN am MAX232 ist mit DTR verbunden wegen der seltsamen Originalfunktion von RTS. DCD muss auch mit Masse verbunden werden sonst wird wegen dem senderseitig benutzen autoenable der Empfänger nicht frei gegeben. Ich habe jetzt jeweils 64 Bytes Ringpuffer für die Empfänger, mehr wäre sicher besser, frißt aber halt Platz im RAM.
Mit dem an den Takt verdrateten CTC sind sämtliche vernünftigen Baudraten izwischen 1200 und 38k4 möglich. Die Sache hat allerdings den Haken das der CTC nur die halbe Taktfrequenz als Eingangsfrequenz verträgt, Bei 1,8Mhz Takt gehen also nur noch 19200 und bei 921Khz 9600 Baud maximal und man müßte bei 921 Khz noch ein Flipflop nachrüsten..was nicht praktikabel ist.

Ich werde noch ein Bisschen über dem Code brüten und den dann hochladen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
422
03.02.2016, 16:00 Uhr
holm

Avatar von holm

So ok, habs hoch geladen und Subdirectories nach Datum angelegt.

LC802m.bin ist der Monitor mit seriellen Treibern (19200 Baud) und basic.bin halt der Basic Eprom.
Die Quellfiles (crtsio.mac und lc808kb.mac) liegen auch da. Das Basic ist nach wie vor für einen RAM ab 0xc000h vorgesehen und der Basic Prom wie vorher. Ich habe die Sprungverteiler so angelegt, das ich bei Änderungen im SIO Treiber nicht jedes mal das Basic neu brennen muß.

LLIST und SAVE fallen jetzt standardmäßig aus SIO Kanal A heraus, LOAD sollte auch von da laden (nicht getestet), den IOBYTE Mechanismus muß ich noch implementieren.

Hier: http://computer-gaga.com/project/eliza/code-eliza77/

einfach mal mit der Maus ins Terminal Fenster werfen, warten bis das ausgedröselt hat, RUN ..und beraten lassen...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 03.02.2016 um 16:02 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
423
03.02.2016, 18:42 Uhr
KK

Avatar von KK

@Holm

Tolle Arbeit, danke!
Ich komme im Moment leider nicht zum Ausprobieren.

@ALL
Wer den Downloadlink zu Holms Basic sucht, der ist auf lc80ex.de unter Downloads/Software festgenagelt.

Und noch eine Hoffnungsnachricht für die Wartenden, die V2 Platinen sind fertig und befinden sich auf dem Weg zu mir, von wo aus sie dann schnellstens weiterverteilt werden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
424
03.02.2016, 20:36 Uhr
holm

Avatar von holm

Ich habe mal dem Download noch eine Datei LC802tm.bin hinzugefügt, darin wird der CTC so wie vorher üblich initialisiert als Zeitgeber so da die SIO wieder mit den 4800 Baud arbeitet bei 3,68 Mhz.

In den Quellen kann das auf Zeile 23 umgestellt werden in dem dort aus

Quellcode:

ctctim  aset    1



ein

Quellcode:

ctctim  aset    0



gemacht wird.
Die bedingte Assembliererei dreht das dann in der Initialisierung entsprechend um. Im ctctim 0 mode ist es notwendig CLK/TRG0 mit 1,8Mhz zu verbinden.Ich habe dazu auf meiner Platine links oben neben dem CTC einen 2poligen Pfostenstecker (Jumperstifte) zusätzlich eingebaut die unten mittels CUL Draht mit CLK/TRG0 und CLK/RG1 verbunden sind. Damit kann ich mit einer üblichen Steckleitung den Takt dort zuführen (geht natürlich auch über den User Port).

Ja, hatte den Link vergessen:

http://www.tiffe.de/Robotron/LC80ex/TDL-Basic/

Ich habe einen c't-robot Debugport, also einen TTL zu USB Konverter an den SIO Kanal A mit RTS und CTS angeschlossen (CTS vom Debugport auf DTR der SIO-A). Damit seht eine 2. serielle Schnittstelle über USB am Rechner zur Verfügung. Das TDL-Basic verbindet in der aktuellen Einstellung sowohl den Stanzer als auch den Line Printer Port mit der SIO Kanal A (Leser Port natürlich auch).
Damit fällt LPRINT, LLIST usw. auf Kanal A raus, aber auch LOAD und SAVE.

Ich habe den SAVE -Output mit einem Terminalprogramm mitgeschnitten (in eine Datei) und Speicher Löschen dem Interpreter das wieder bei LOAD vorgesetzt, funktioniert einwandfrei.

Ich weiß nicht ob das an Rolfs USB bzw. die Kassettenroutinen anpaßbar ist, weil die ja Speicherbereiche bei der Übergabe haben möchten, ich stehe da nicht in der Materie.

Will Jemand Forth?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 03.02.2016 um 20:42 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
425
04.02.2016, 15:17 Uhr
KK

Avatar von KK


Zitat:
holm schrieb
Will Jemand Forth?



Ich weiß von Forth nur, daß es exisitiert. Praktisch hatte ich nie was damit zu tun.

Aber ein C-Compiler wäre der Hit! ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
426
04.02.2016, 15:39 Uhr
KK

Avatar von KK

Heute ist die Lieferung der V2-Auflage eingetroffen. Die Vorbesteller habe ich bereits per PN informiert. Stückliste, Bestückungsplan und -hinweise sowie Schaltplan sind auf lc80ex.de verfügbar. Wer schon mit V1 zu tun hatte oder Unterlagen davon besitzt, beachte unbedingt die Änderungen, z.B. an der RS232-Schnittstelle (jetzt DCE, weibliche Buchse) und dem Adressjumper JP6. Die kleinen Fehler der Vorversion sind behoben, es muß nichts nachgebohrt werden.
Zugunsten der mechanischen Stabilität habe ich außerdem die neuen Platinen aus 2mm dickem FR4 fertigen lassen (statt 1,55mm).

Es sind noch ein Dutzend Exemplare verfügbar, wer welche haben möchte, schreibe mir PN oder Mail an info@lc80ex.de.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
427
05.02.2016, 19:47 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Karsten,

Platine ist heute angekommen, schon alle R bestückt... und noch gerade.
Vielen Dank.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
428
06.02.2016, 12:25 Uhr
KK

Avatar von KK

Sehr schön, viel Spaß beim Braten.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
429
06.02.2016, 12:38 Uhr
millenniumpilot

Avatar von millenniumpilot

ne, gab eben nur Brühnudeln. ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
430
06.02.2016, 18:46 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Ihr,

hat noch jemand anderes seine Platine V2 schon laufen?
Ich bin fertig mit dem Bestücken, aber es tut sich nichts. Display Dunkel und auch die LEDs sind aus. Ab und an, je nach Laune, leuchtet nach dem Einschalten auch mal die HALT oder die OUT LED.
Spannung ok, Taktgenerator geht und Takt liegt an der CPU an.
Alle R, C und Transistoren wurden vorher einzeln durchgemessen. CPU und SystemPIO wurden auch schon ausgetauscht.

Damit ich nicht einen Jumper falsch gesetzt habe, bitte ich um kurze Hilfe, ob ich hier eventuell was falsch habe:
JP 7 gesetzt,
JP 5 gesetzt auf 16, eingesetzt wurden AT28C16 und 27C16.
JP 6 S1 an Adresse 0,
JP 9 Takt ist gesetzt auf 1/4,liegt auch an CPU an.
JP 8 SIO.Bypass gesetzt.
UserPIO, CTC und SIO wurden zwischenzeitlich entfernt.
Tastatur nicht angeschlossen.

optische Kontrolle aller Lötungen und Leiterzüge ohne Befund.

Habt hier eine Idee, wo ich als nächstes suchen könnte?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
431
06.02.2016, 18:53 Uhr
holm

Avatar von holm

..was hast Du für Meßmittel?
Lege den /WAIT Eingang der CPU mit einer provisorischen Drahtbrücke auf Masse und schalte den Rechner ein.
Du solltst jetzt an den Dateneingängen der CPU 31h nachweisen können (TTL Prüfstift oder ...)
/MREQ und /RD müssen Low sein, die Adresse 0000 muß an den CPU Adreßausgängen zu finden sein.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
432
06.02.2016, 19:14 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

das probiere ich gleich mal aus.
Bisher habe ich mit Prüfstift erkennen können, das überall die Signale ordentlich zappeln. Auch an den Eingängen der System-PIO. Nur die Ausgänge dieser U-PIO sind statisch alle auf H.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
433
06.02.2016, 19:53 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

Du meinst mit Dateneingängen der CPU D0...D7?
Dort kann ich keine 31h erkennen, ab und an ist ein Pin im verbotenen Bereich (2,3V) und je nachdem ob ich einen Eprom gesteckt habe oder nicht, messe ich eine andere Zahl. /MREQ und /RD sind Low, an den Adressausgängen liegt 0000 an.

Kannst Du damit etwas anfangen? Benutzt der originale LC80 2k-Monitor bis zur Einschaltmeldung schon den RAM? Dann würde ich den jetzt mal tauschen.

Gruß Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
434
06.02.2016, 20:08 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

brauchst nicht weiter suchen, der LC80 funktioniert.

Einer der DS8205 ist der Verursacher, obwohl der IC-Tester meint, der IC ist in Ordnung. Fehler reproduzierbar an diesem IC festmachbar.

Gruß, ein weiterer LC80-User
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
435
06.02.2016, 20:31 Uhr
millenniumpilot

Avatar von millenniumpilot

Nochmal ich....

Hallo Karsten und alle anderen.
Meiner Meinung nach ist der Batteriehalter falsch herum.
Die Polarität an JP1 deckt sich mit den ICs. Der Batteriehalter hat eine eigene Polaritätsprägung und die ist genau anders herum. Das heißt also, die Batterie nicht so herum einstecken, wie der Halter verlangt.

Kann das mal jemand verifizieren?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
436
06.02.2016, 21:28 Uhr
holm

Avatar von holm

Ich hatte ne Batterie zum Einlöten drauf, ja die war verkehrt herum, hab sie gerade wieder runter gelötet..

..zu den 31h die Du nachsehen solltest. Wenn /Wait an Masse geklemmt ist wird der Prozessor gleich beim 1. Speicherzugriff zum Warten gezwungen, nach Reset ist das das Befehlsholen des ersten Befehls auf der Adresse 0, zumindest im Monitor V2 ist das ein LD SP, 23eah und der Maschinencode dafür ist 31 ea 23. Das erst Befehlsbyte hättest Du sehen müssen (mit gestecktem ROM) und wenn die Adressierung des ROMs inklusive Decoder in Ordnung ist und der Datenbus halbwegs brauchbar. Soviel zur Erklärung.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 06.02.2016 um 21:28 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
437
06.02.2016, 22:01 Uhr
millenniumpilot

Avatar von millenniumpilot

Danke, jetzt ist es mir wieder klar. Ist schon soooo lang her bei mir. Habe seit mehr als 30 Jahren nichts mehr mit Z80 und Co. gemacht.

zur Batterie: mit einem Leiterzug oben und einem unten durchtrennen und neu verkabeln, Beschriftung am JP1 ändern müsste es behebbar sein.

Dieser Beitrag wurde am 06.02.2016 um 22:07 Uhr von millenniumpilot editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
438
07.02.2016, 09:53 Uhr
KK

Avatar von KK


Zitat:
millenniumpilot schrieb
Meiner Meinung nach ist der Batteriehalter falsch herum.



Erstmal Glückwunsch zur "Erweckung"!

Und ja, du hast Recht, der Halter ist verkehrt rum. So ein Mist, grmpf. Bisher ist das wahrscheinlich nicht aufgefallen, weil sich die Zelle trotzdem richtig herum reinstecken läßt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
439
07.02.2016, 11:06 Uhr
KK

Avatar von KK

Auf LC80ex.de habe ich unter Dokumentation die Kategorie "Errata" hinzugefügt, wo bekannte Fehler und Lösungsmöglichkeiten aufgelistet sind. Bitte die Platinenversion beachten.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
440
07.02.2016, 14:03 Uhr
millenniumpilot

Avatar von millenniumpilot

habe noch 2 Sachen entdeckt, sind aber Nebensächlichkeiten der Dokumentation.

C27 taucht im Schaltplan nicht auf. Habe ich auch nur gesucht, weil ich die notwendige Spannungsfestigkeit wissen wollte.

C31 befindet sich nicht im Quadrant C3, sondern C2.

ansonsten bin ich jetzt aber still ;-)


Irgendwo im Thread habe ich mal eine Zeichnung für den HS77-Halter gesehen, finde die Stelle aber nicht mehr. Kann mich bitte jemand mit der Nase drauf stoßen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
441
07.02.2016, 16:03 Uhr
KK

Avatar von KK


Zitat:
millenniumpilot schrieb
C27 taucht im Schaltplan nicht auf.



So ein Schlingel. Stützelko an Vcc, 6,3V sollten genügen.


Zitat:
millenniumpilot schrieb
C31 befindet sich nicht im Quadrant C3, sondern C2.



Jetzt auch in der Stückliste.


Zitat:
millenniumpilot schrieb
ansonsten bin ich jetzt aber still ;-)



Darfst ruhig weiter nach Fehlern suchen und sie an mich verpetzen. ;-)

Die korrigierten Versionen von Schaltplan und Stückliste sowie die Zeichnung des HS77-Halters sind bereits auf lc80ex.de hochgeladen (ggfs. Browsercache löschen).

Dieser Beitrag wurde am 07.02.2016 um 16:04 Uhr von KK editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
442
07.02.2016, 16:19 Uhr
millenniumpilot

Avatar von millenniumpilot

na gut, wollte nur nicht als pingelig verschrien werden ;-)

btw: ich habe noch keinerlei externe Kommunikation mit meinem LC80, würde aber gern den RAM-Test von Rolf Weidlich ausprobieren. Dieser liegt als z80-Headersave vor. Den will ich nun manuell eintippen. Benötigte Adressen stehen im Header, Programm geht dann wohl ab 20h los.
Kennt jemand einen Editor, mit dem ich mir den Hex-code des Headersavefiles ansehen kann? Ich ging davon aus, das "Programmers Notepad" das kann, geht aber nicht.

Kann mir bitte jemand eine Empfehlung aussprechen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
443
07.02.2016, 17:01 Uhr
dm



Hallo millienniumpilot,

Ich sende dir einen Editor, per E-Mail.

Gruß
Dieter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
444
07.02.2016, 17:18 Uhr
felge1966

Avatar von felge1966

@KK

Auf der LC80 Seite geht der Link für die RAM-Erweiterung nicht.

http://lc80ex.de/downloads/doku/Huckepack-RAM-Erweiterung.pdf

Gruß Jörg
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
445
07.02.2016, 18:06 Uhr
KK

Avatar von KK

Jetzt schon. ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
446
07.02.2016, 18:24 Uhr
millenniumpilot

Avatar von millenniumpilot

Dank an alle die mir geholfen haben. Speziell auch an Rolf (Dein Programm ist einsame Spitze)
An der Tastatur ging eine Spalte nicht, keine Unterbrechungen bis zur UserPio. PIO getauscht und geht. Da ist doch bei der bei Ebay gekauften Pio ein Portpin defekt gewesen.

RamTest von Rolf manuell eingetippert und läuft.
Fühle mich gerade wieder wie 18, als ich meinen ersten LC80-ähnlich-Nachbau gebaut habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
447
10.02.2016, 12:08 Uhr
PC-Opa



....so, habe meine LP bestückt, IC's gesteckt. Welche EPOM's kann ich (sollte) ich zum Erproben brennen und einsetzen??
Ist die Tatstatur zum Funktionstest notwendig?
Gruß Wolfgang

Dieser Beitrag wurde am 10.02.2016 um 12:09 Uhr von PC-Opa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
448
10.02.2016, 12:14 Uhr
Alwin

Avatar von Alwin


Zitat:
PC-Opa schrieb
....so, habe meine LP bestückt, IC's gesteckt. Welche EPOM's kann ich (sollte) ich zum Erproben brennen und einsetzen??
Ist die Tatstatur zum Funktionstest notwendig?
Gruß Wolfgang



Eprom auf S1 mit Monitorprogramm. Entweder den 2k auf einen 2716 oder den 4k auf größeren Eprom. Zum Test nimm am besten den 2k Monitor, da hörst schöne Musik und siehst ein Demo.
Tastatur ist dazu erstmal nicht erforderlich.
--
...Z1013, KC87, KC85/5, KC Compact, C64, PC1715+W, AC1-2010, LC-80ex
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
449
10.02.2016, 12:19 Uhr
KK

Avatar von KK

Nicht vergessen, den JP5 richtig zu stecken. Bei 2716 auf "16", sonst auf "32".
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
450
10.02.2016, 12:37 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Ihr,

ich habe bei meiner Platine Kontaktprobleme der Schaltkreise in den Fassungen bemerkt. Beim Drücken auf die Tastatur oder auf die Platine stürzte der Rechner ab. Jetzt habe ich nochmals alles "nachgedrückt" und es ist Ruhe. Ein Teil meiner Schaltkreise habe ich aus Kindheitstagen rübergerettet, entsprechend sind die Pins wahrscheinlich oxidiert. Sichtbar ist aber nichts. Gibt es eine schonende Art der Vorbehandlung der IC-Pins bei solch alten ICs oder sollte ich hier einfach vorher mit einem Glasfaserstift ran?
Oder ist das ein prinzipielles Problem der Federkontaktfassungen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
451
10.02.2016, 12:49 Uhr
KK

Avatar von KK


Zitat:
millenniumpilot schrieb
Oder ist das ein prinzipielles Problem der Federkontaktfassungen?



Unwahrscheinlich. Ich nutze die ebenfalls und hatte bisher keine Probleme.
Ich würde die Pins mit dem Glasfaserpinsel reinigen und sonst nichts. Kontaktspray oder ähnliches zieht nur Dreck an.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
452
10.02.2016, 13:37 Uhr
Buebchen



Hallo!
Nach meiner Erfahrung sollte ein Glasfaserpinsel möglichst nicht in die Nähe von Kontakten kommen! Man riskiert, das man Fassung und Schaltkreis wegwerfen muss weil sich die Glasfasern verhaken können. Damit wird der Kontakt noch unsicherer.
Das wäre für mich ein Kündigungsgrund wenn jemand so etwas verwendet.
Es ist noch sträflicher als Lötfett in der Elektronik zu verwenden. Unvorhersehbare Kontaktprobleme sind dann unvermeidbar.
Besser ist ein normaler Harter Radiergummi in rot blau. Dabei die Schaltkreise Zum Beispiel auf eine dünne Brettkante auflegen und von IC-Körper weg vorsichtig säubern. Danach mit hartem rauen Papier oder sauberer Pappe nachpolieren.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
453
10.02.2016, 13:59 Uhr
KK

Avatar von KK

Ich meine selbstverständlich das Reinigen der IC-Beine außerhalb der Fassung. Wenn man sich den IC vor dem Einsetzen nochmal anschaut, sollte das Risiko minimal sein. Wir sind ja nicht in der Raumfahrt. Nichtsdestotrotz geht die Ratscherfummel-Methode natürlich auch.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
454
10.02.2016, 16:39 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Karsten,

ist mit der aktuellen Platinenversion unten aufgeführte Problem noch existent? Oder wurde dies mit der Behebung des "F-Bug" auch erschlagen?

Gruß Dirk



Zitat:
KK schrieb
Wichtiger Hinweis!

Stolperfalle Adressdecodierung bei 8Kx8 Speichern

Die Zuweisung von zwei Basisadressen hat einen kleinen Haken. Wegen der nicht ganz vollständigen Decodierung müssen immer eine gerade und eine ungerade Basisadresse kombiniert werden (z.B. 3000H und 4000H oder 0000H und B000H). Zwei gerade oder zwei ungerade Adressen (z.B. 3000H und 5000H oder 0000H und A000H) führen zu Adressierungsfehlern. Es wird dann immer nur eine Hälfte des Speichers angesprochen, je nach Adresse die oberen oder unteren 4K. Das ist auch der Grund, weshalb bei mir die Laderoutine von Rolf zuerst nicht funktionierte. Ich hatte sie nämlich zusammen mit dem Monitor in einen 28C64 gebrannt und diesen auf 0000H und A000H gejumpert.

Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
455
10.02.2016, 17:03 Uhr
KK

Avatar von KK


Zitat:
millenniumpilot schrieb
ist mit der aktuellen Platinenversion unten aufgeführte Problem noch existent? Oder wurde dies mit der Behebung des "F-Bug" auch erschlagen?



Das ist kein "Problem" im eigentlichen Sinne und hat mit der Decodierung nur indirekt zu tun. Anders als bei den kleineren Brüdern (2Kx8 und 4Kx8) spielt bei 8Kx8 Speichern auch die Adressleitung A12 eine Rolle. Die bestimmt nämlich, ob die unteren oder oberen 4K des Speichers angesprochen werden. Sie ist bei geraden Adressen (0000H, 2000H usw.) stets "0" bzw. "L" und bei ungeraden (1000H, 3000H usw.) "1" bzw. "H". Deswegen gehen nicht zwei gerade oder zwei ungerade Adressen auf dem gleichen Sockel.
Ich habe mal eine Simulation des Adressdecoders (LC80e) hochgeladen (Rechtsklick-Speichern unter):

http://lc80ex.de/downloads/sonstiges/LC80e-Adressdecoder.circ

Die Software dazu gibt es hier:

http://sourceforge.net/projects/circuit/

In der Sim kann man alles schön sehen. MEDI muß 1 sein, sonst passiert gar nix.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
456
10.02.2016, 17:54 Uhr
millenniumpilot

Avatar von millenniumpilot

OK, Danke, hab's jetzt hoffentlich verstanden. War auch keine Kritik.

Das heist dann auch, das ich den "geraden Teil" immer in den unteren Teil des Eproms und den "ungeraden Teil" in die obere Hälfte brennen muss? Also wenn ich zB. 3000H und 4000H verwende, den Inhalt des EPROMs drehen muss? Oder ist das wieder etwas anderes?



BTW: habe gerade das 4k-Tiny-Basic von Holm ausprobiert, aber ein Problem mit dem Handshake auf der Seriellen. RTS/CTS war doch richtig? Oder?! Beim Cut and Paste verschluckt sich mein System nach der 3..4 Zeile. CPU Takt ist auf 1/2, 2400, 8N1 eingestellt. CTC Port 0 mit der SIO verbunden. Kabel ist voll belegt. Hat jemand einen Tipp für mich?

Gruß Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
457
10.02.2016, 18:40 Uhr
holm

Avatar von holm

...das Handshake ist da noch gar nicht implementiert und genau aus diesem Grunde habe ich das auch gemacht, allerdings steckt der Treiber nur lim LC802m.bin File für den großen Interpreter. Um das Tiny Basic müßte ich mich dann auch noch kümmern, es gibt aber schon wieder Leute denen das nicht gefällt weil sie das "Alles nicht brauchen".

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 10.02.2016 um 18:42 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
458
10.02.2016, 18:47 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

vielen Dank für die Info. Dann brauche ich nicht weiter die Nadel in meinem Heuhaufen suchen. Und mach Dir da keinen Stress, war nur ein Funktionstest. Das große Basic schaue ich mir morgen mal an. Ich arbeite mich nur langsam hoch...

Und Dank nochmals für Dein Engagement. Deinen Keller bekommen wir schon noch voll. (kleiner Insiderwitz)

Gruß Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
459
11.02.2016, 07:25 Uhr
KK

Avatar von KK


Zitat:
millenniumpilot schrieb
Das heist dann auch, das ich den "geraden Teil" immer in den unteren Teil des Eproms und den "ungeraden Teil" in die obere Hälfte brennen muss? Also wenn ich zB. 3000H und 4000H verwende, den Inhalt des EPROMs drehen muss? Oder ist das wieder etwas anderes?



Sorry für die Verspätung, unser Internet war bis heute früh down. Ja, das hast du richtig verstanden. Auf geraden Adressen wird zuerst der untere und auf ungeraden zuerst der obere Teil angesprochen.


Zitat:
Holm
Um das Tiny Basic müßte ich mich dann auch noch kümmern, es gibt aber schon wieder Leute denen das nicht gefällt weil sie das "Alles nicht brauchen".



Allen Leuten recht getan, ist eine Kunst, die niemand kann. Wenn ich bißchen Luft habe, kümmere ich mich mal um die Dokumentation für die nötigen Eingriffe an der SIO. Wer das umsetzen mag, der machts halt und wer nicht, der nicht.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
460
11.02.2016, 10:05 Uhr
holm

Avatar von holm

Ich habe die verbesserte Version hoch geladen: http://www.tiffe.de/Robotron/LC80ex/TDL-Basic/2016021100

LC802m.bin ist wieder der Version2 Monitor mit den SIO Routinen hinten dran, diese arbeiten mit den CTC Kanälen 0 und 1 als Zähler und bei 1,8Mhz Eingangsfrequenz arbeiten die SIO Kanäle mit 19200,N,8,1, CTS und DTR wie zuvor als Flußcontrolle.
Der Interpreter ist mit einem Sprung auf 3000h an zu springen, mit ^X kann der Interpreter in den Monitor verlassen werden und mit 3003h dann wieder restartet werden.

Wer die Baudraten ändern will findet die CTC Zeitkonstanten auf den Adressen 124ah und 124ch, ein Ändern des wertes von jetzt 6 auf 0c generiert dann 9600 Baud, 18h 4800 Baud usw..
wer die ursprüngliche Variante mit Zeitgeber als Takt beibehalten möchte, kann 1249,124a und 124b,124c auf 07h und 03h ändern, was bei 1,8Mhz 2400 und bei 3,6Mhz 4800 Baud ergibt, jeweils mit 8,N,1.
DCD der SIO ist jeweils auf Masse zu legen da der Kanal sonst gesperrt wird. Wer CTS auch nach Masse brückt gibt den Sender der SIO ständig frei so dass dieser Sendet ohne auf HW Flußkontrolle Rücksicht zu nehmen, DTR (RTS) bleibt dann einfach frei. Ein Listing auf der Consolenschnittstelle kann mit ^S unterbrochen und mit ^Q fortgesetzt werden.

Die Senderoutinen arbeiten nach wie vor blockend und ohne Puffer, da die SIO die Sendersteuerung sauber in Hardware erledigen kann lohnt der Aufwand der Implementierung von Puffern wahrscheinlich nicht.

Auf Bitte von milleniumpilot hier noch einmal der Hinweis das die Verbindung von RTSB der SIO zum MAX232 durchzukratzen und der MAX statt dessen mit DTRB zu verbinden ist. Diese Pins liegen unmittelbar nebeneinander (24 und 25) so das sich das direkt an der SIO recht unauffällig bewerkstelligen läßt.

Der Sprungverteiler auf Adresse 1000h sieht derzeit so aus:


Quellcode:

  1000    C3 10E2               cin:    jp      ci              ; get char from console
  1003    C3 1123               rin:    jp      auxin           ; get char from AUX
  1006    C3 10B0               con:    jp      ttyout          ; put char on console
  1009    C3 10BF               wrtv:   jp      auxou           ; put char on AUX
  100C    C3 10CF               listx:  jp      lo              ; list output
  100F    C3 1040               cstsx:  jp      csts            ; console input status
  1012    C3 1036               iochx:  jp      iochk           ; check i/o config
  1015    C3 1030               iostx:  jp      iosetm          ; set i/o config
  1018    C3 103B               memck:  jp      memc1           ; check avail mem
  101B    C3 0000               trapx:  jp      0               ; Restart to LC80ex Monitor
  101E    C3 11C5               initcs: jp      initp           ; initialize peripherals
  1021    C3 0000               res1:   jp      0               ; reserved vector
  1024    C3 0000               res2:   jp      0               ; reserved vector
                                ;
  1027    CD 101E               bboot:  call    initcs          ; start interpreter
  102A    CD 121D                       call    bmeclr          ; clear basic memory
  102D    C3 0000*                      jp      init            ; jump to interpreter
                                



Ich habe 2 Vektoren reserviert und bboot ist eigentlich nicht als "offizielle Einsprungadresse" zu verstehen, der Interpreter ruft aber bboot wenn er mit einem Jump auf 3000h angeprungen wird.
Die Quellen liegen wie immer mit auf dem FTP Server, auch das Programm "Eliza" im Format wie es der Interpreter auf dem 2. SIO Kanal ausgibt und dort auch wieder einlesen kann (Save, Load).

Neu ist diesmal die Implementation eines I/O Byte auf der RAM Adresse 2d90h, dort kann die Zuordnung der E/A Schnittstellen im Interpreter zur Laufzeit umgewidmet werden, zur Doku verweise ich allerdings auf die Sourcen. In diesem Zusammenhang noch der Hinweis auf einen weiteren Sprungverteiler durch den eigene Routinen in die I/O Byte Mechnizistik eingebunden werden können:

Quellcode:

                                ;==============================================================
                                ;       Zapple input output Vector
                                ;
  122E    C3 10FA               ciloc:  jp      ttyin           ;CONSOLE INPUT
  1231    C3 10B0               coloc:  jp      ttyout          ;CONSOLE OUTPUT
  1234    C3 114B               rptpl:  jp      ri              ;HIGH-SPEED READER
  1237    C3 114B               ruloc:  jp      ri              ;USER DEFINED STORAGE (INPUT)
  123A    C3 123D               ptpl:   jp      puloc           ;HIGH-SPEED PUNCH
  123D    C3 122A               puloc:  jp      unld            ;USER DEFINED STORAGE (OUTPUT)
  1240    C3 1243               lnloc:  jp      luloc           ;LINE PRINTER
  1243    C3 122A               luloc:  jp      peol            ;USER DEFINED PRINTER
  1246    C3 1040               csloc:  jp      csts            ;CONSOLE INPUT STATUS ROUTINE
                                ;==============================================================


Der Verteiler liegt derzeit nicht auf einer "geraden" Adresse wegen dem "Verschnitt" an Speicher der sonst auftritt.

Für konstruktive Kritik und Verbesserungen bin ich jederzeit offen.
Es ist geplant den Interpreter auf das obere Ende des Adreßbereichs zu verschieben, allerdings habe ich erst noch etwas Anderes vor.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 19:23 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
461
11.02.2016, 11:19 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm

welchen CTC Kanal muss ich mit der SIO verbinden? 0, 1 oder beide? Wenn beide, dann wahrscheinlich auch mit Diodenbrücke?
Sorry für die dummen Fragen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
462
11.02.2016, 11:39 Uhr
holm

Avatar von holm

Die Sio hat 3 Takteingänge, RxTxCB und RxCA+TxCA. Bei der SO/0 sind Empfangs- und Sendetakt einzeln herausgeführt, bei anderen Bondvarianten nicht notwendigerweise. Da es für "unsere" Anwendungen sinnvoll ist das Sender und Empfänger mit der selben Baudrate laufen, können bei Kanal A RxCA und TxCA miteinander verbunden werden, bei Kanal B ist das ohnehin schon so.
An diese Eingänge muß nun ein Takt mit dem 16fachen der Baudrate angelegt werden, dazu ist RxTxCB bereits mit dem Ausgang ZC/TC0, 1 oder 2 über den Jumper J12 verbunden, 0 ist da naheliegend..
Ich Initialisiere sowohl Kanal0 als auch 1 mit den selben Daten als Zähler, demzufolge müssen die Eingänge im Zählerbetrieb (höhere Baudraten) CLK/TRG0 und CLK/TRG1 jeweils mit einem Eingangstakt verbunden werden, sie vertragen aber nur die halbe Systemtaktfrequenz, bei 3,6Mhz Takt also 1,8Mhz. Der Ausgang ZC/TC1 kann nun mit den Beiden Takteingängen des SIO Kanals 1 verbunden werden, damit sind die Baudraten einzeln programmierbar.

..muß aber nicht. Es reicht auch aus das Clock Signal des SIO Kanals B mit dem des Kanals A zu brücken, dann sind die Baudraten beider Kanäle zwangsläufig identisch. Dioden sind da nicht notwendig, man braucht aber eine Strippe mit 3 Enden wenn man das so machen will. Dazu kann man die Stifte neben der SIO verwenden. Wickelverbindugnen tuns natürlich auch...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 11:42 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
463
11.02.2016, 12:23 Uhr
millenniumpilot

Avatar von millenniumpilot

Aaaaalso,

ich rekapituliere:
- JP 12 setze ich auf Z/CTO0 mit SIO RxTxCB
- RxCa und TxCa der SIO verbinde ich beide entweder mit Z/CTO1 oder (Plan B) auch mit Z/CTO0 (so heißen die Ports in Karstens Schaltplan)
- die beiden Takteingänge der CTC C/TRG0 und C/TRG1 verbinde ich mit der halben CPU-Taktfrequenz an JP9

richtig verstanden? Wenn ja, dann hast Du den Text einfach genug für mich geschrieben ;-)

Und dank für Deine Mühe, uns das alles intensiv zu erläutern.

Dieser Beitrag wurde am 11.02.2016 um 12:25 Uhr von millenniumpilot editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
464
11.02.2016, 14:43 Uhr
KK

Avatar von KK

@Holm
Was du da an Arbeit reingesteckt hast, werden viel gar nicht nachvollziehen können. Aus meiner Sicht sieht das gut aus und ist zudem flexibel, was die Nutzung der SIO angeht. Wenn ich das richtig verstehe, muß niemand an der Platine rumschnippeln und kann dein BASIC ohne Flußsteuerung verwenden, oder?
Den Pullup an DCD habe ich übrigens nur vorgesehen, damit der Engang nicht floatet. Mir war die vollständige Funktionsweise der SIO mit Flußsteuerung etc. zum Zeitpunkt der Layouterstellung nicht ganz klar und deswegen hatte ich mich auf die Tips hier gestützt:

http://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=12710
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
465
11.02.2016, 14:56 Uhr
KK

Avatar von KK

Nachdem die Nachlieferung an Tastaturplatinen heute eintraf, gingen die noch offenen Wundertüten auf die Reise und sollten bis zum Wochenende ihr Ziel erreichen.

Es sind noch Platinen am Lager, bei Bedarf PN oder Mail an info@lc80ex.de

Wer nicht die Möglichkeit oder Lust hat, die Platinen selbst zu bestücken, aber trotzdem gern einen LC80ex besitzen würde, der kann mir auch schreiben. Den Preis für ein fertiges Gerät müßte ich aber erst noch durchrechnen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
466
11.02.2016, 14:58 Uhr
holm

Avatar von holm

Ja Karsten, ich hatte mir schon was überlegt dabei.

DCD muß an Masse (eigentlich immer) und das CTSB muß auch aktiv werden, da das mit dem MAX232 verbunden ist braucht man also eine Brücke an der seriellen von einem aktiven Interface Signal vom PC oder was auch immer, d.h. +3 - +15V. Das ist die einzige Einschränkung. Auf der A-Seite ist es einfacher da man dort CTS einfach mit Masse Jumpern kann. Ich habe CTSB einfach mit einem Jumper mit DCDB verbunden, allerdings halt CTS ja mit RTS des PCs über das Kabel angeschlossen.

Es ist durchaus möglich das ich, wenn ich das Basic mal nach oben schiebe, die Flußkontrolle noch mal überarbeite und Softwaremäßig abschaltbar mache, aber das braucht alles Platz im Speicher. Eigentlich will man das wegen den Datenverlusten auch gar nicht haben.

@milleniumpilot: Ich habe gar nicht nach Bezeichnungen in Karstens Plan geguckt, ich habe Dir die Zilog IC-Bein Bezeichnungen genannt. ansonsten hast Dus richtig verstanden.

Um es nochmal zu erläutern:
Die CTC kann im Zeitgeber Modus und im Zählermodus arbeiten. Standard zur Takterzeugung ist meist der Zeitgebermodus, da braucht der entsprechende Zählereingang nicht mit irgendwas verschaltet werden, da die CTC das intern klärt. Der andere Modus ist halt Zähler, d.h. der Kanal kann irgendwas zählen und dazu muß man ihm irgendwas am Eingang geben das er zählen soll, deswegen die zusätzliche Leitung.
Im Zeigebermde wird der Takt wie gerade erzählt aus dem Systemtakt abgeleitet, allerdings durchläuft er vorher einen Vorteiler von 16 oder 256, der eigentliche Zählertakt ist also die CPU-Taktfrequenz/16 (256 ergäbe zu niedrige Frequenzen).
Bei 2,457600 Mhz klappt das ganz gut:

2457600/16=153600

und die SIO teilt noch mal durch 16:

153600/16=9600

..so ein Zufall aber auch :-)
Der CTC wird da also als Zeitgeber mit Vorteiler 16 und Zeitkosntante 1 Programmiert, ergibt 153,6 Khz Takt für die SIO bei 9600 Baud.

Wir haben aber keine 2,4576 Mhz, sondern 3,686400, da sieht das doof aus, beim Zeitkonstante 1
ergibt sich folgendes Bild:

3686400/16=230400
und Vorteiler der SIO
230400/16=14400 ..ups (ok, Manchem wird diese Baudrate bekannt vorkommen).
da wir nur ganzzahlig teilen können wäre noch Folgendes möglich:14400/6

14400/2=7200
14400/3=4800
14400/4=3600
14400/5=2880
14400/6=2400

..ihr merkts schon, 4800,2400 und irgendwann 1200, 600, 300, 150...wären interessant, für den Rest finden wir keinen Partner der diese Sprache spricht.
Deswegen der Zählermode, der CTC verträgt als Maximale Zählfrequenz die halbe CPU Taktfrequenz (steht im Datenblatt, ich habe nix Anderes ausprobiert), deshalb ist die maximale Eingangsfrequenz die Hälfte der 3,686400 Mhz die wir haben, zufällig gibts die Hälfte schon auf dem Board, nur bei 900 Khz wirds komisch.
Um 9600 Baud zu erreichen müssen wir also die 1843200 Hz durch 16*9600 teilen (153600), nichts einfacher als das, 1843200/153600=12, also Zeitkonstante 12 = 0ch). 19200 geht mit Zk=6, 38400 mit ZK=3, schneller geht nicht, weil wir nicht durch 1,5 Teilen können, 4800=zk24=18h usw...

Das ist schon die gesamte Zauberei..
Man kann auch einen Röhrenbestückten Rechteckgenerator extern an die SIO hängen und sie damit takten wens hilft, dann braucht man nicht weiter über den CTC nachdenken.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 15:42 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
467
11.02.2016, 15:09 Uhr
KK

Avatar von KK


Zitat:
holm schrieb
DCD muß an Masse (eigentlich immer)



Wenn DCD IMMER an Masse muß, wäre der Hack recht einfach. Auf der Bestückungsseite läuft in 5mm Abstand eine dicke Massebahn am Pin vorbei, da müßte nur der Lack weggekratzt und eine Drahtbrücke zum Pin gelötet werden. Den Pullup dann natürlich weglassen.

Dieser Beitrag wurde am 11.02.2016 um 15:11 Uhr von KK editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
468
11.02.2016, 15:18 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

Du verwirrst mich, das ist aber keine Kunst.
Ich habe gerade nach Deinem ersten Text DCDA und DCDB mit Masse verbunden ("DCD der SIO ist jeweils auf Masse zu legen").

Soll nun DCDB mit Masse UND CTSB verbunden sein oder nur mit CTSB?

Desweiteren geht Dein heutiges Basic bei mir nicht. Nach der Einschaltmeldung und der Angabe 16266 Bytes free kommt der Promt >READY

Tippe ich jetzt irgendetwas ein, hängt der Rechner.
Gebe ich "list" und anschließend Enter ein, erscheint die Ausgabe 65535 und auch hier geht nix mehr.

Ein Verkabelungs-/Jumperungsproblem kann ich nicht ausschließen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
469
11.02.2016, 15:27 Uhr
holm

Avatar von holm

Du hast das schon richtig gemacht.
Das was ich gemacht habe ist doch nur Faulheit, da bei richtiger Verdrahtung und aktiven CTS (RTS auf der PC Seite) Low Pegel aus dem MAX232 kommt, habe ich da einfach einen Jumper zu DCD drauf gesteckt :-)
Das ist logisch das Selbe, elektrisch ist das was Du gemacht hast richtiger, da RTS vom PC her auch mal inaktiv werden kann.

Das mit dem nicht funktionierenden Basic halte ich für unmöglich, das rödelt hier nämlich nebenan im Terminalfenster im Kreis herum (Ausschnitt):


Quellcode:

Grad:  305 Sinuswert:-.819152
Grad:  306 Sinuswert:-.809017
Grad:  307 Sinuswert:-.798635
Grad:  308 Sinuswert:-.788011
Grad:  309 Sinuswert:-.777146
Grad:  310 Sinuswert:-.766044
Grad:  311 Sinuswert:-.754709
Grad:  312 Sinuswert:-.743145
Grad:  313 Sinuswert:-.731354
Grad:  314 Sinuswert:-.71934
Grad:  315 Sinuswert:-.707107
Grad:  316 Sinuswert:-.694658
Grad:  317 Sinuswert:-.681998
Grad:  318 Sinuswert:-.66913
Grad:  319 Sinuswert:-.656059
Grad:  320 Sinuswert:-.642787
Grad:  321 Sinuswert:-.62932
Grad:  322 Sinuswert:-.615661
Grad:  323 Sinuswert:-.601815
Grad:  324 Sinuswert:-.587785
Grad:  325 Sinuswert:-.573576
Grad:  326 Sinuswert:-.559192
^C
*BREAK @ LINE 35
>READY
list

10 G=(4*ATN(1))/180
20 FOR I=0 TO 360
30 PRINT "Grad: ";I;"Sinuswert:";SIN(I*G)
35 LPRINT "Grad: ";I;"Sinuswert:";SIN(I*G)
40 NEXT I
50 GOTO 10
60 END

>READY
run..



Hast Du beide Eproms passend gebrannt (LC802m.bin und basic.bin)?

edit:
mir fällt was ein:

Starte mal das basic und mache ^X auf der console so das Du wieder rausfliegst, danach trägst Du im Monitor auf die Adresse 2d90h statt 0bfh 0ffh ein und restartest das basic auf 3003. Erzähle mal obs dann geht..


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 15:33 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
470
11.02.2016, 15:29 Uhr
holm

Avatar von holm


Zitat:
KK schrieb

Zitat:
holm schrieb
DCD muß an Masse (eigentlich immer)



Wenn DCD IMMER an Masse muß, wäre der Hack recht einfach. Auf der Bestückungsseite läuft in 5mm Abstand eine dicke Massebahn am Pin vorbei, da müßte nur der Lack weggekratzt und eine Drahtbrücke zum Pin gelötet werden. Den Pullup dann natürlich weglassen.



Sagen wir so, es gibt auf dem LC80ex keine Anwendung für die ein auf High hängendes DCD nützlich wäre und wenn die Hardwareflußkonrolle nicht programmiert ist, interessiert es gar nicht.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 15:35 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
471
11.02.2016, 16:08 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

leider der selbe Effekt.
Eventuell bediene ich auch den Editor falsch. Habe mir aber das Handbuch durchgelesen.

Komisch ist:
gebe ich nach dem ersten Ready einfach nur LIST ein, kommt die Zahl 65535 und es hängt.

Gebe ich einige Befehle ohne Zeilennummer, zB. PRINT "test", kommt die Ausgabe "test".

Gebe ich Befehle mit Zeilennummer ein, komme ich nicht mehr zum Promt zurück, kann also kein run etc. eingeben.
Ein fallen lassen von Elyza.bas geht auch nicht. Nach der ersten Zeile "10 REM" hängt der Cursor in der nächsten Zeile fest.

Alleine mit ^X fliege ich in den Monitor zurück.

Dieser Beitrag wurde am 11.02.2016 um 16:14 Uhr von millenniumpilot editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
472
11.02.2016, 16:20 Uhr
holm

Avatar von holm

Da stimmt bei Dir was nicht:

Quellcode:

HIGHEST MEMORY?

16266 BYTES FREE

Welcome to BASIC, Ver. 1.3
<TDL Z-80 8-K VERSION>

>READY
list


>READY



Wieviel Speicher hast Du da drauf? Ich habe 2 Stück 8K RAMs ab 0c000h vorgesehen, also RAM-Speicher im Bereich von c000-0ffffh. Überprüfe das ggf. mal mit dem Lc80 Monitor ob das les- und schreibbar ist. Das was Du da bekommst kommt mir bekannt vor, das war irgendwann bei mir auch so bevor ich entdeckt hatte das der Interpreter die Zelle vor dem RAM Beginn auch belegt. Man muß ihm also
c001 angeben wenn man Speicher ab c000 hat...das klärt aber normalerweise die Initialisierung des Interpreters, wenn Du nun das Selbe bekommst vermute ich das mit Deinem RAM was nicht stimmt.

Das was ich mit 2d90 geschrieben hatte schaltet die Umleitung des LIST Outputs auf die SIO-A ab, List ist dann auch Console. Falls Du an SIO/A nichts dran hängen hast verbinde mal deren RxD Eingang mit Masse. Ohne einen MAX232 oder FTDI floaten deren Eingänge und lesen "Mist aus der Luft".

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 16:27 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
473
11.02.2016, 16:32 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

das Problem mit "list" ist behoben, habe einen der RAMs falsch gejumpert.
Auch geht jetzt ein "S=5:print S", hier war vorher die Ausgabe immer "0".

Bleibt also im Augenblick das "Bedienproblem?", das ich sobald ich eine Zeilennummer angebe, kein Ready zurück bekomme.
Muss ich die Zeilen mit irgendetwas anders als mit Enter abschließen?
Danach blinkt immer nur der Cursor in der nächsten Zeile.
Ein SIO-Problem ist das jetzt wohl nicht mehr, da ja Befehle ohne Zeilennummer funktionieren.



Sorry für die Umstände.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
474
11.02.2016, 16:37 Uhr
holm

Avatar von holm

So?

Quellcode:

new

>READY
10




Das ist normal.


Quellcode:

>READY
10 print 5*7
run
35

>READY
list

10 PRINT 5*7

>READY



Nach 5*7 ist ein Enter, der "echoet" da nix. Du bekommst das READY immer erst nach einem ausgeführten Kommando. Jedes weitere Enter rückt nur die Zeilen nach oben.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 16:40 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
475
11.02.2016, 16:42 Uhr
millenniumpilot

Avatar von millenniumpilot

kann ich mir das Bild ja eigentlich sparen.
Aber auch wenn ich irgendwie mit Deiner Hilfe da wieder "raus komme"...
Damit klappt bei mir aber trotzdem kein Cut and Paste eines Listings. Nach der ersten Zeile hängt der Rechner...

Also wenn ich einfügen will:
10 G=(4*ATN(1))/180
20 FOR I=0 TO 360
30 PRINT "Grad: ";I;"Sinuswert:";SIN(I*G)
35 LPRINT "Grad: ";I;"Sinuswert:";SIN(I*G)
40 NEXT I
50 GOTO 10
60 END

ist alles tot, Cursor blinkt nicht mehr, keine Taste geht mehr nach der ersten Zeile.



Dieser Beitrag wurde am 11.02.2016 um 16:46 Uhr von millenniumpilot editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
476
11.02.2016, 16:44 Uhr
holm

Avatar von holm

ruf mich mal an,
0
3
7
3
1
7
4
2
3
3

BTW: Du bist "Draußen". Gib mal run <et> ein. Ein 30 end fehlt evtl. noch.
Mach mal list.
das ist gar nicht soo kompliziert wie Du gerade denkst.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 16:46 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
477
11.02.2016, 16:51 Uhr
millenniumpilot

Avatar von millenniumpilot

Danke, Telefon hat gerade meine Frau. Mal schauen.

Das mit den Befehlen habe ich geschnallt, das geht jetzt auch.
Selbst eintippen geht also jetzt, wenn auch ungewöhnlich.
Nur das Einfügen mehr als einer Befehlszeile mit einmal (Cut and Paste) geht damit noch nicht. Der Rechner ist tot nach der ersten Zeile.

Gruß Dirk
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
478
11.02.2016, 17:01 Uhr
holm

Avatar von holm

Ich habe gerade mal putty in der unix Version aus dem Quellen übersetzt ..sieht aus wie unter windows :-)
Hast Du links im Menü bei den seriellen Parametern die Flußkontrolle auf RTS/CTS gesetzt bevor Du die Session geöffnet hast? Bei mir geht Putty genauso wie seyon oder cutecom einwandfrei.
Ich denke das Du die Schnittstelle vom PC her überfährst, d.h.DTR von der SIO wackelt nicht richtig an CTS vom PC.

"Handbedienung" müßte aber trotzdem ordentlich funktionieren.

Den Jumper JP8 um die IEI/IEO Kette der SIO zu überbrücken hast Du aber abgezogen?

Das der Cursor nicht mehr blinkt, das finde ich interessant. Der Cursor entsteht nur in Deinem Terminalprogramm, der LC80 weiß nix von dem Ding und hat mit dessen Blinkerei auch nicht das Mindeste zu tun.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 17:08 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
479
11.02.2016, 17:13 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

Deine Richtung stimmt, das Basic ist eindeutig nicht das Problem. Füge ich jede Zeile einzeln ein ist alles OK. Das wird also doch ein Handshakeproblem sein. JP8 ist ab.
Habe eben auch die SIO getauscht. Die war es aber nicht.
Ich probiere mal weiter rum.
Habe putty und Teraterm verwendet. RTS/CTS ist gesetzt, wobei bei Teraterm nur "hardwarekontrolle" an sich aktiviert werden kann, aber nicht welche.
Ich versuche jetzt mal einen anderen USB/Seriell-Konverter.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
480
11.02.2016, 17:47 Uhr
holm

Avatar von holm

Ja, das weist genau darauf hin das das DTR Signal der Sio nicht beachtet wird, der Puffer läuft dann voll und über. Ich habe am Sio Kanal A einen FTDI Basierenden Konverter dran (kleine Platine) weil dort die Signale auffindbar waren. Ich kann ja Spaßeshalber mal so ein Prolific-Kabel ausprobieren...aber ich habe kein Windows..

edit: hab ich gemacht, geht wie verrrückt, keine Probleme. Das Kabel ist wohl von Reichelt..
ugen0.3: <USB-Serial Controller Prolific Technology Inc.> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 17:51 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
481
11.02.2016, 18:34 Uhr
millenniumpilot

Avatar von millenniumpilot

Danke für die Suche. Also ist es nicht mein Profilic. Eigentlich liege ich mit Fieber im Bett, daher ist jetzt Schluss für mich heute ;-)
Der Schädel platzt auch so schon.
Waren bisher alles meine eigenen Fehler. Einmal ein RAM unvollständig gejumpert und dann Bedienfehler im Editor.
Sorry dafür.

Teraterm bietet mir die Möglichkeit, jedes Charakter zu verzögern. Da habe ich jetzt mal 5ms eingestellt und Eliza per CutAndPaste läuft jetzt.
Suche morgen weiter.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
482
11.02.2016, 18:46 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

im Beitrag 421 hast Du das hier geschrieben " RTS der Sio ist durchgekratzt und das entsprechende PIN am MAX232 ist mit DTR verbunden wegen der seltsamen Originalfunktion von RTS. DCD muss auch mit Masse verbunden werden sonst wird wegen dem senderseitig benutzen autoenable der Empfänger nicht frei gegeben."

das mit RTS und DTR habe ich nicht gemacht, hatte Deinen Beitrag überlesen.
Wird das mein Problem lösen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
483
11.02.2016, 18:47 Uhr
holm

Avatar von holm

Quatsch, keine Ursache.

Du solltest morgen mal versuchen raus zu bekommen ob Terraterm oder Putty wirklich aufhören zu senden
Wenn der DTR Pin der SIO auf high geht. (Die Änderung unten auf der Platine hast Du aber gemacht RTS->DTR zum MAX232?)
Evtl. DTR mal neben die Fassung stecken und den MAX232 Pin an Vcc, dann darf kein Zeichen mehr den PC verlassen können.
Wenn der dann trotzdem sendet ist es kein Wunder das es das Zeuch über den Haufen schiebt.

Jetzt hat sich das überschnitten: Ja es wird höchstwahrscheinlich.

RTS ist früher mal anders verwendet worden und wird deshalb von der SIO erst inaktiv geschaltet wenn deren Senderpuffer leer ist. Wir wollen aber dem PC erzählen das der Empfänger voll ist..was mit dem Sender nix zu tun hat. Da das Basic aber jedes eingehende Zeichen zum Sender als Echo schickt wird der Senderpuffer kaum leer werden, schon gar nicht wenn der PC nicht aufhört zu senden. Deshalb habe ich das brach liegende DTR verwendet das sich "frei programmieren" läßt.

Baldige Genesung,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 18:51 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
484
11.02.2016, 18:57 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Holm,

ein blindes Huhn...
Dann freue ich mich schon auf morgen.

Dann wäre es wohl sinnvoll, diesen wichtigen Hinweis in Deine "Bastel"beschreibung in Beitrag 460 mit aufnehmen. Oder?!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
485
11.02.2016, 19:24 Uhr
holm

Avatar von holm

Wieso, steht doch da?

Gruß,

Holm

:-)
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
486
11.02.2016, 19:49 Uhr
PC-Opa



Hallo,
mein LC80ex ist jetzt bestückt, BS-EPROM drauf, Lautsprecher an die PIN's (ich suche noch 1 Hörkapsel) und 12V Netzteil dran:
Musik, dann Laufschrift und zuletzt LC-80.
Hurra, er funktioniert Hurra
Jetzt baue ich mir noch die Tastaturplatine auf. Wo bekomme ich die schöne Beschriftung her (Karsten?)?
Ein sehr gut beschriebens Projekt, da komme ich als Laie sogar klar mit. Danke Karsten!
Gruß Wolfgang
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
487
11.02.2016, 19:55 Uhr
Alwin

Avatar von Alwin

Wolfgang: hast Post
--
...Z1013, KC87, KC85/5, KC Compact, C64, PC1715+W, AC1-2010, LC-80ex
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
488
11.02.2016, 20:07 Uhr
PC-Opa



Danke Silvio
Dieser Beitrag wurde am 11.02.2016 um 20:07 Uhr von PC-Opa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
489
11.02.2016, 20:08 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Alwin,

hätte auch gern Post von Dir ;-)
Habe den selben Wunsch. Kannst Du helfen?

@Holm: hat mir keine Ruhe gelassen. Das wars, alles OK! Kaum macht man es richtig, funktioniert's.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
490
11.02.2016, 20:14 Uhr
Andreas



Hallo Silvio

Schreibe mir bitte auch eine Mail. Zu sowas habe ich kein Talent. Meiner funktioniert auch, aber neben dem Rechner liegt noch ein Zettel zur Orientierung auf den Tasten.

Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
491
11.02.2016, 20:14 Uhr
Alwin

Avatar von Alwin


Zitat:
millenniumpilot schrieb
Hallo Alwin,

hätte auch gern Post von Dir ;-)
Habe den selben Wunsch. Kannst Du helfen?

@Holm: hat mir keine Ruhe gelassen. Das wars, alles OK! Kaum macht man es richtig, funktioniert's.



Unterwegs

KK wirds sicher auch auf seine HP hochladen, bestimmt nur vergessen.
--
...Z1013, KC87, KC85/5, KC Compact, C64, PC1715+W, AC1-2010, LC-80ex
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
492
11.02.2016, 20:24 Uhr
millenniumpilot

Avatar von millenniumpilot


Zitat:
Andreas schrieb
..., aber neben dem Rechner liegt noch ein Zettel zur Orientierung auf den Tasten.



ich muss ganz ehrlich sagen, nach 2 Tagen klappt es auch blind ganz gut...
nachdem ich den Hexcode des RAM-Testprogramms ca. 10x abgetippt habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
493
11.02.2016, 20:28 Uhr
holm

Avatar von holm


Zitat:
millenniumpilot schrieb
Hallo Alwin,

hätte auch gern Post von Dir ;-)
Habe den selben Wunsch. Kannst Du helfen?

@Holm: hat mir keine Ruhe gelassen. Das wars, alles OK! Kaum macht man es richtig, funktioniert's.



*grin*

...war mir klar... :-)

..hilft auch gegen die Erkältung.


Übrigens wegen der Tastenbeschriftung..ich habe einfach Karstens Bild mit dem Farblaser ausgedruckt und auf ne Platine geklebt, darüber duchsichtiges Packband nebeneinander Stoß auf Stoß.
Das gibt ne griffeste glatte Oberfläche, den Stoß sieht man nicht und die Pilze verbergen die Löcher.
Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 11.02.2016 um 20:31 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
494
11.02.2016, 21:17 Uhr
KK

Avatar von KK


Zitat:
PC-Opa schrieb
Hurra, er funktioniert Hurra



Glückwunsch, ich freu mich mit. Und danke für die netten Worte :-)

Ähh ja, die Tastaturdateien hatte ich noch nicht hochgeladen. Vorab der Download-Link, in die Webseite pflege ich ihn morgen ein:

http://lc80ex.de/downloads/doku/Keyboard.zip
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
495
11.02.2016, 21:21 Uhr
KK

Avatar von KK


Zitat:
Andreas schrieb
Meiner funktioniert auch



Auch du willkommen im Club!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
496
12.02.2016, 15:46 Uhr
mkBurkersdorf



Hallo Karsten,

LPs sind angekommen, danke.
Bei dem Befestigungsblech für den HS77 wüssen die Befestigungsbohrungen einen Abstand von 40mm nicht 44mm haben, ist das richtig? Auf der LP sind sie 40mm.
In der pdf-Datei sind sie 44mm.
--
Gruß
Manfred
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
497
12.02.2016, 16:13 Uhr
KK

Avatar von KK

Die Maße habe ich exakt so vom Halteblech meines originalen LC-80 abgenommen. Warum da ein Versatz zu den Bohrungen auf der LP drin ist, wissen nur die damaligen Entwickler. Vielleicht wegen der besseren Zentrierung oder sowas, keine Ahnung.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
498
12.02.2016, 16:32 Uhr
millenniumpilot

Avatar von millenniumpilot

Hallo Karsten,

ich kann mich diesbezüglich an meinen LC80 nicht mehr erinnern. Das suggeriert, das die Halteplatine mit Federn montiert wird, nicht mit Abstandshalter. Oder?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
499
12.02.2016, 16:37 Uhr
KK

Avatar von KK

Richtig, die Platte wird nur von Federn gehalten.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: [ Erste Seite ] ... [ 2 ] [ 3 ] [ 4 ] -5- [ 6 ] [ 7 ] [ 8 ]     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek