amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

[Login] [Registrieren] [Passwort vergessen?]

< Nächste MeldungVorige Meldung >
12.Mai.2008



AmigaOS 3.9: scsi.device-Patch für LBA48-Unterstützung (Update)
Der bekannte Amiga-Emulator WinUAE soll in einer der nächsten Versionen den LBA48-Standard und damit Festplatten bzw. Hardfiles größer 128GB unterstützen. Bei den entsprechenden Tests hat WinUAE-Autor Toni Wilen herausgefunden, dass das als Bestandteil von BoingBag 2 ausgelieferte scsi.device 43.43 bereits LBA48-Festplatten unterstützt.

Allerdings sind die entsprechenden Routinen fehlerhaft, was u.U. der Grund dafür sein könnte, dass manche Anwender mit entsprechend grossen Festplatten das ROM-Update aus BB2 nicht nutzen können oder zumindest die Aktualisierung des scsi.device unterdrücken müssen. Offenbar stürzt scsi.device 43.43 ab, sobald bei der Initialisierung einer Festplatte Partitionen jenseits der 128 GB-Grenze gefunden werden.

Ein von Wilen zur Verfügung gestellter Patch, der mittels spatch oder ähnlichen Tools auf die Datei "DEVS:AmigaOS ROM Update" aus BB2 angewendet werden muss und mit allen Versionen des scsi.device (A600, A1200, A4000) kompatibel ist, beseitigt das Problem: Von nun an lassen sich auch sehr große Festplatte problemlos unter AmigaOS 3.9 nutzen. Das gepatchte scsi.device wurde sowohl unter WinUAE also auch auf echten Amigas erfolgreich getestet, der Autor empfiehlt dennoch dringend Backups aller wichtigen Daten vor Anwendung des Patches.

Download: scsi.device.lba48.pch.zip (335 Bytes)

Update: (13.05.2008, 17:00, cg)

Wilens Fix wurde inzwischen auch in Christian Sauers scsi.device-Patch integriert, der schon seit längerem im Aminet verfügbar ist und einen weiteren Fehler im scsi.device beseitigt.

Im folgenden die ursprünglichen Ausführungen Wilens zu dieser Thematik, in der detailliert auf die vorgenommenen Änderungen am scsi.device eingegangen wird:

"I found something interesting when I was implementing LBA48 support to IDE emulation. OS3.9BB2 scsi.device (v43.43) does have LBA48 support but it has bug that freezes or crashes the Amiga..

I fixed the bug (patch details below) and now (at least in emulation) my A1200 IDE 160G test hard file works perfectly with full capacity.

This may also fix common v43.43 scsi.device boot freeze if drive has LBA48 support. (but older scsi.device versions work). Confirmation needed.

Patch is compatible with all v43.43 scsi.devices (A600/A1200/A4000)

Please test if you have >128G IDE drive and/or you have boot freeze without NOROMUPDATES or SKIPROMUPDATES scsi.device

Patch offsets in OS39BB2 "ROM Updates" file (near "Conner Peripherals 20MB - CP2024" string)
31A2C
358AC
3DACA

Old values:
43FA 000E 3219 B001 66FA E049 3001 4E75
0220 02C4 0430 04C5 02EC 0450 0070 0010
0091 00C6 0040 0090 0000

New values:
43FA 0018 7200 0C11 00FF 6606 5289 1219
6704 B019 66F0 3001 4E75 FF02 C429 2024
ECFF 04C5 3930 3450 FF00

Also spatch-patch file attached if you don't want to do manual patching (patches OS39BB2 "DEVS:AmigaOS ROM Update". Remember backups) WARNING: Patching HD drivers is always dangerous, data loss is always possibility.

Next follows my random notes, no need to understand this

Old code that returns garbage after LBA48 command:
10FEF2A0 43fa 000e LEA.L (PC,$000e) == $10fef2b0,A1
10FEF2A4 3219 MOVE.W (A1)+,D1
10FEF2A6 b001 CMP.B D1,D0
10FEF2A8 66fa BNE.B #$fffffffa == $10FEF2A4
10FEF2AA e049 LSR.W #$00000008,D1
10FEF2AC 3001 MOVE.W D1,D0
10FEF2AE 4e75 RTS.L

10FEF2B0 0220 02C4 0430 04C5 02EC 0450 0070 0010
10FEF2C0 0091 00C6 0040 0090 0000

20 = read sectors
c4 = read multiple
30 = write sectors
c5 = write multiple
ec = identify drive
50 = format
70 = seek
10 = recalibrate
91 = initialize drive parameters
c6 = set multiple mode
40 = read verify sectors
90 = execute drive diagnostics
00 = nop

New code (different because space was really tight..)
43FA 0018 lea data(pc),a1
7200 moveq #0,d1
0C11 00FF l1 cmp.b #$ff,(a1)
6606 bne.s l2
5289 addq.l #1,a1
1219 move.b (a1)+,d1
6704 beq.s l3
B019 l2 cmp.b (a1)+,d0
66F0 bne.s l1
3001 l3 move.w d1,d0
4E75 rts
dat dc.b 0xff,0x02,0xc4,0x29,0x20,0x24,0xec
dc.b 0xff,0x04,0xc5,0x39,0x30,0x34,0x50
dc.b 0xff,0x00

This adds following missing LBA48 commands:
29 = read multiple ext
39 = write multiple ext
24 = read sectors ext
34 = write sectors ext

Meaning of this table is to return 2 (if read command), 4 (if write command) or 0 (no data). Someone simply forgot to add new LBA48 commands to this table when LBA48 support was implemented.." (cg)

[Meldung: 12. Mai. 2008, 19:21] [Kommentare: 6 - 13. Mai. 2008, 19:07]
[Per E-Mail versenden]  [Druck-Version]  [ASCII-Version]
< Nächste MeldungVorige Meldung >

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.