018
15.02.2009, 15:14 Uhr
holm
|
Nein, auch die 8Zoll Laufwerke unterstützen ein HD Format. Ich habe ein FD1165-FD von NEC hier von dem das komplette SM und Datasheet im Web zu finden ist. Dort sind auch die gängigen Diskettenformate spezifiziert. Das Laufwerk erreicht bei einer Datentransferrate von 500kbps eine unformatierte Kapazität von 1,6Mbyte. Die in der 8-Bit Technik üblichen Datenraten sind 250Kbps mit denen man unformatiert bei 800Kbytes landet. Wohlbemerkt 2-seitig. 8Zoll Floppies hatte ich auch an dem umgebauten A5220 mit dem CM5300.01 (btw. was machen die Programme von mir [MB05]); das war eine Datenaustauschmaschine. Mehr als knapp 800K gingen nicht auf die Scheiben.
Aus alten XT Floppycontrollern wirst Du nur ein 8 Mhz Quarz finden, auf AT Controllern deren zwei: 8 und 16Mhz. Glaube mir einfach das das weder mit einem XT (es eit denn der hat einen Cache Controller oder sowas) noch mit DDR 8Bit Technik noch mit einem 2Mhz 6809 zu schaffen ist. Ich habe an sowas schon herumprogrammiert... Ein 20Mhz Z180 wirds schon schaffen.
Nachtrag: weder die AM5120 noch die AMF5122 verfügen über einen schnellen Sektorpuffer in dem die Daten eines gelesenen Sektors zwischengespeichert werden könnten. Die CPU/DMA muß also in der Lage sein 500Kbits/sec über den Bus zu schaufeln und in irgend einem RAM unterzubringen. Netto sind das 64Kbyte /Sekunde, also Header Informationen mal außer Acht gelassen. Das bekommst Du gerade mal aus dem RAM gelsen ohne das Du mit dem Bytes was anfängst.
Hier kommt die I/O Operation noch hinzu, da der 2. U880 keine echte DMA Einheit ist Bei 2,5 Mhz dauert ein Takt 400ns. Ein Machine Zyklus dauert 4 bzw. 3 Takte. der Befehl INI benötigt 16 Takte INIR 21 Takte a 400ns, das sind 6,4 bzw. 8,4 µsec. 10000/6.4=156250; 1000000/8.4=119047.6 Bytes/sek. respective 152.5 bzw. 116.2574 Kbytes/Sek. da sind 250Kbits/sek (ohne jeden Header=31.25 Kbyte/sek) noch machbar, das Doppelte nicht mehr denn irgend Jemand muß die Sektorinformationen, CRC usw. auswerten und die Daten handeln.
Es gibt übrigens keine soo großen Untewrschiede zwischen den FDCs vom A71x0, PC1715 und K512x. Die K512x kann auch im WAIT Mode arbeiten wie es der PC1715 tut. im A5120 und im A71x0 kümmert sich um den Transfer eine DMA.
Noch ein Nachtrag:
Quellcode: | ; Code CPU 2 fuer phys. Diskettentransfer ;======================================== ; Zeitbedingungen fuer 8" MFM: ; 6 Umdrehungen pro Sec bei 2*5208 Bytes pro Spur bedeutet ; 1/(6*2*5208), d.h. 16 Mikrosec pro Byte!! ; Bei einer Taktfrequenz von (9600*256)=2457600 Hz sind das ; (9600*256)/(6*2*5208) Takte, d.h. max. 39 Takte pro Byte!! ; Wegen BUSRQ/BUSAK muss davon der laengste Maschinenzyklus ; der CPU 1 abgezogen werden, d.h. 6 Takte (Interruptannahme), ; weiterhin je ein Takt fuer BUSRQ/BUSAK-Umschaltung, ; es verbleiben 31 Takte zwischen den E/A-Maschinenzyklen!!
; normaler Entry in phys. Diskettentransfer ;========================================== [..schnippschnapp..]
; Lesen ;------- diord: in a,(fldabd) ld b,6 diords: in a,(fldabd) ;uebergehen Synchron-Bytes djnz diords ld a,10110101b ;b5/b1 diom10 equ $-1 out (flcoad),a ;Lesen 1 ld a,(diom01) ;85/81 MFM; 87/83 FM ld bc,128*256+fldabd ;b:=inir-Laenge diosl1 equ $-1 ; 128 bei Sektl 128, sonst =0 out (flcoad),a ;Lesen Marke in a,(fldabd) ;ignorieren evtl. anstehenden Muell diorkl: in a,(fldabd) cp 0a1h ;noch in Kluft? jr z,diorkl ;ja dini1: ini ;Daten lesen ld (de),a ;Datenbeginn-Byte hinterlegen dini2: ini inc de dini3: ini inir ex de,hl ini ;CRC Daten ini ld a,10110101b ;b5/b1 diom11 equ $-1 out (flcoad),a ;Lesen 1 ex de,hl ld a,dtrrdr-dtrwjr ;Reaktionsroutine Read Ende
|
Das ist auszugsweise der Code den die 2. CPU auf der K2526 ausführt und ein Kommentar des Programmierers am Anfang.
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 15.02.2009 um 15:57 Uhr von holm editiert. |