058
27.05.2012, 21:44 Uhr
holm
|
Erstma das hier:
Quellcode: | //=========================================================================== // forward declarations static int my_putchar(char c, FILE *stream); static FILE mystdout=FDEV_SETUP_STREAM(my_putchar, NULL,_FDEV_SETUP_WRITE); //=========================================================================== // STDOUT putchar routine static int my_putchar(char c, FILE *stream) { uartputc(c); return(0); }
//===========================================================================
|
Danach funktioniert printf(); hat natürlich mit der Mimik nichts zu tun.
Wenn ich die Sache richtig sehe:
Quellcode: | DISK procedure entry callr _disk_in !Hardware init!
ldl rr2, rr4 ld r4, #PIOAD ld r5, #PIOBD ld r0, #WDATA+OUTPUT outb @r5, rh0 !Datentreiber auf Ausgabe! outb PIOAC, rl0 !Daten-PIO auf Ausgabe!
ldb rh0, #%10 wrea0: ld r1,#%ffff wready: inb rl0, @r5 andb rl0, #%7 cpb rl0, #%7 jr nz,wrea1 djnz r1,wready dbjnz rh0, wrea0
|
..lädt er erst #WDATA+OUTPU, d.h. 0x0 +0x0f = 0x000f in R0 und schafft das H byte auf PIOBD also auf die Daten, danach nimmt er r0l und schreibt die 0x0f auf PIOC, das Controlwort für Kanal A (Nicht im Kopf was er da macht, aber kommentiert wird es damit das der DatenPIO auf Ausgabe geschaltet wird). Danach lädt er längliche Schleifenzähler (rh0 0x10, r1 0xffff), holt von PioB die Daten, macht ein And 0x07 und vergleicht das Ergebnis mit 0x7. So lange das Ergebnis 7 ist, dreht der sich im Kreis bis seine Zählschleife runtergezählt ist und fällt auf einen Timeout Fehler. Falls das Ergebnis nicht 7 sein sollte, springt er auf wrea1 und wertet dort den Status 6 und 1 aus. Ist der Status 1 freut er sich und hüpft nach wrea2 um dort mit der Kommandoausgabe zu beginnen. Ist der Status 6 lädt er r2 mit dem Fehlercode 20 und springt raus, wenn nicht lädt er r2 mit c1 und springt auch raus.
Damit müßtest Du wissen was Du machen sollst...
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;} |