W nawiązaniu do nowej płyty 060 o której informował Cyprian.

Agranlund napisał ISA_BIOS do wykrywania i konfiguracji kart PnP, wiadomo. Kiedyś sam napisałem programik do kart PnP, więc zacząłem się bawić dostępnymi źródłami.
Na Hadesie uruchamia się prawidłowo, choć Hades radzi sobie z kartami PnP ISA (przynajmniej z moją sieciówką, która działa prawidłowo bez dodatkowych konfiguracji).
Teraz próbuję uruchomić ISA_BIOS na Panther/2 i natrafiłem na błąd. Dokładnie chodzi o tę linię:

    sprintf(fname, "%c:\\isa_bios.inf", 'a' + (char) (*((volatile uint16*)0x446)));

a właściwie o ten zapis:

 (char) (*((volatile uint16*)0x446)));

pod Hadesem działa, a pod PAK (TOS3.06) wywala dwie bombki. Choć, co ciekawe, na kilkadziesiąt razy, uruchomiło się prawidłowo ze dwa.
Mógłby mi ktoś objaśnić co tu jest problemem, co to za znak 0x446 ? I dla czego działa tu, a tam nie ?

Było miło :) Do widzenia.

2

0x456 to system boot device number. Żeby to odczytać musisz być w trybie supervisora. Zapewne na Hadesie zmienne systemowe nie są ochraniane w ten sposób.

What can be asserted without proof can be dismissed without proof.

3

Dzięki za info.
Nie jest to przypadkiem kwestia procesora ? 060 radzi sobie, 030 nie. Uruchomiłem program na Flaconie i w trybie 060 przeszedł tę linię, a w trybie 030 wywalił się na niej.

Było miło :) Do widzenia.

4 Ostatnio edytowany przez sqward (2024-06-11 16:14:41)

Nie procesora a logiki obsługi magistrali ST przez Hadesa i akceleratory.

Masz 060-ki z MMU? Trochę zmyślam, ale możliwe, że na maszynach z 060 dla uproszczenia używane jest MMU do tego zabezpieczenia.

What can be asserted without proof can be dismissed without proof.

5

@sqward, ale @artic-wroc napisał, że na 060 chodzi, a na 030 się wykrzacza. Na Falconie w trybie 060 też poszło przecież.
Swoją drogą, @artic-wroc, zazdroszczę Hadesa :)

Sikor umarł...

6

Dzięki Sikor za Twój rzeczowy wkład :) Zapewne wiesz, że programowalne scalaki na karcie ct60 zawierają logikę klejącą 060 do magistrali Falcona gdzie emulowane jest zachowanie 030 (np. dynamic bus sizing).

What can be asserted without proof can be dismissed without proof.

7 Ostatnio edytowany przez artik-wroc (2024-06-11 16:46:37)

Wstawiłem na bezczelnego 2 zamiast 0x446 i teraz działa prawidłowo. Tak mi się przynajmniej wydaje, gdyż akurat w Panterze, nie mam karty PnP :)
Nie mniej jednak, nie wywala się, tworzy plik log i pokazuje adresy.
Procedura która wywołuje tą, na której się wykrzaczyło jest Supexec, więc przywileje chyba są.

sqward napisał/a:

Masz 060-ki z MMU?

Tak, oba są pełne.

Było miło :) Do widzenia.

8

sqward napisał/a:

Dzięki Sikor za Twój rzeczowy wkład :) Zapewne wiesz, że programowalne scalaki na karcie ct60 zawierają logikę klejącą 060 do magistrali Falcona gdzie emulowane jest zachowanie 030 (np. dynamic bus sizing).

Nie znam się na programowaniu falcona, ale na 030 nie chodziło jak pisza Artic - już działa), na 060 chodziło zarówno w Falconie, jak i w Hadesie. Stąd mój - jak to nazwałeś - "rzeczowy wkład". Najważniejsze, że już poszło na 030. Ciekawe, czy poszłoby na TTce...

Sikor umarł...

9

Panowie, w sumie to nie istotne jaki jest to procesor / maszyna. Na Atari zmienne systemowe i rejestry sprzętowe są chronione, więc ich odczyt/zapis wymaga przejścia w tryb nadzorcy (Super/Supexec).

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

10 Ostatnio edytowany przez artik-wroc (2024-06-12 08:52:32)

Źle spojrzałem, tam faktycznie nie ma Supexec, dlaczego działa to zatem pod 060 ?

EDIT: wygląda na to, że tylko Hades ma tę przypadłość. Taki "program":

include "stdio.h"

int main() {

    printf("%c:\\isa_bios.inf", 'a' + (char) (*((volatile uint16*)0x446)));

}

skompilowany zarówno na Hadesie jak i na PAK.
Tylko na Hadesie działa (w obu wersjach), na pozostałym sprzęcie (w tym Falcon, w obu trybach) jest Bus Error.

Było miło :) Do widzenia.

Strzelałbym że to kwestia domyślnej konfiguracji MMU na tych systemach. Albo też Hades ignoruje tryb supervisora (w sensie, daje dostęp do pełnej przestrzeni adresowej bez względu w jakim trybie akurat jest procesor.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

12

Na Atari ST/TT/Falcon ochronę pamięci zapewnia sama płyta główna (GLUE/COMBEL) a nie MMU procesora. Klony z założenia nie są 100% zgodne ze wzorcem, więc w sumie nie zaskakuje brak tej ochrony.
Można ją dodać na poziomie tablicy MMU procesora, ale najwyraźniej w Hadesie jest ta z TOS TT, czyli bez ochrony.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

13

Tak, Hades ma zmodyfikowany TOS 3.06.

Sikor umarł...