[#1] Startup-sequence w A1200
Tak jak w temacie potrzebuję pomocy z napisaniem Startup-Sequence.
W skrócie pisząc chciałbym aby A1200 resetowała się tylko raz, konieczność załadowania nowego scsi.device aby widoczne były partycje powyżej 4GB, przy uruchomieniu WB 3.1. Wiem, że można sobie skombinować nieoficjalny kickstart z wszystkimi poprawkami i wtedy już nie trzeba będzie robić restartów(jeśli będzie to ROM włożony w płytę). Dodam, że mam też inne boot'ujące partycje.
Teraz mam to zrobione tak, że używam REQUESTCHOICE i przy pierwszym uruchomieniu Amigi po wybraniu odpowiedniego przycisku, WB 3.1(mam jeszcze MAC OS i WB3.9 w obecnej chwili), komputer się restartuje(wczytanie przez loadmodule scsi.device). Następnie po resecie wykonanym przez LoadModule ponownie pojawia się okienko z wyborem co ma się uruchomić. Znowuż klikam na odpowiedni przycisk i system się ładuje. Chodziło by mi o zmianę S-S tak aby pominąć to drugie okienko z wyborem partycji boot'ującej. Czy ktoś ma tak zrobione i mógłby podzielić się S-S? A do szczęścia(przynajmniej na razie;) chciałbym aby to okienko z wyborem partycji boot'ującej pojawiało się po środku ekranu a nie w lewym górnym rogu. Czy jest to możliwe? I jak to zrobić? A do pełni szczęścia ;), przydało by się jeszcze wrzucić jakiś obrazek na ekran na którym pojawia się to okienko z wyborem boot'owania. Wiem, że dzisiaj nie dzień dziecka;) ale ktoś może coś takiego sobie zrobił/wie jak zrobić i zechciałby się podzielić? Nie jestem programistą, nie znam się na pisaniu S-S. Jedynie metodą prób i błędów kombinuję z oryginalnym S-S oraz tymi jakie widziałem na forum PPA.
Nie pogardzę wszelkimi S-S, które nie koniecznie spełnią 100% moich oczekiwań ale pozwolą mi na kombinowanie z uruchomieniem Amigi tak jak chcę.

[#2] Re: Startup-sequence w A1200

@Tomski, post #1

Bez ladowania nowego scsi.device, masz dostep do pierwszych 4GB.
Po wyborze partycji bootujacej robisz reset przez loadmodule i komputer uruchamia sie juz z wlasciwej partycji.
Uzyj bootctrl do wymuszania startu z danej partycji.
[#3] Re: Startup-sequence w A1200

@Tomski, post #1

To może wrzuć tu swoją S-S? Przyznaję, że w tej chwili nie mam pomysłu na to, o czym piszesz, dość zawile (jak dla mnie) rzecz wygląda. Łatwiej coś wykombinować patrząc na skrypt.

Z szacunkiem
Des

[#4] Re: Startup-sequence w A1200

@Des, post #3

Sam tego chciałeś;).

Ogólnie rzecz biorąc idealną sytuacją było by pokazywanie się okienka(wiersza poleceń, też przejdzie) opcji wyboru na ekranie z wyborem partycji boot'ującej/systemu. Po wybraniu partycji/systemu odpalenie się systemu bez resetów. To idealnie. Jest to coś w rodzaju bootloadera przy uruchamianiu WIN/Linux. To raczej jest nie możliwe na Ami, z tego co do tej pory się dowiedziałem.
Wiem, że jest to możliwe do zrobienia z przynajmniej jednym - WB3.1 i dwoma(?) WB3.9 restartami ale nie potrafię tego zrobić.
Pewnym rozwiązaniem byłby specjalny ROM z nowymi wersjami bibliotek/sterowników etc - być może wymienię kiedyś na taki swój obecny Kick 3.1. Ale on nie obejdzie jednego restartu na to aby wybrać odpowiednią partycję boot'ującą. Chyba, że ktoś się pokusi o napisanie czegoś takiego i wrzucenie tego do kości ROM.

Do rzeczy. Oto obecny S-S jaki używam na swojej A1200. W obecnej chwili to jedynie wybieram WB3.1 i MAC OS(na dobra sprawę to samo co WB3.1 z tym, że ładuje się dodatkowo coś do pamięci aby można odpalić ShapeShiftera).

; $VER: Startup-Sequence_HardDrive 40.2 (25.2.93)
; Startup-Sequence for hard drive systems

IF EXISTS S:MAC
Execute S:MAC
EndIF

C:Version >NIL:
C:AddBuffers >NIL: DF0: 30
FailAt 21

C:LoadModule DEVS:scsi.device >NIL:
C:SetPatch QUIET
C:CPU60 B
C:PatchOpenWB

C:MakeDir RAM:T RAM:Clipboards RAM:ENV RAM:ENV/Sys
C:Copy >NIL: ENVARC: RAM:ENV ALL NOREQ

Resident >NIL: C:Assign PURE
Resident >NIL: C:Execute PURE

Assign >NIL: ENV: RAM:ENV
Assign >NIL: T: RAM:T
Assign >NIL: CLIPS: RAM:Clipboards
Assign >NIL: REXX: S:
Assign >NIL: PRINTERS: DEVS:Printers
Assign >NIL: KEYMAPS: DEVS:Keymaps
Assign >NIL: LOCALE: SYS:Locale
Assign >NIL: LIBS: SYS:Classes ADD
Assign >NIL: HELP: LOCALE:Help DEFER

BindDrivers
C:Mount >NIL: DEVS:DOSDrivers/~(#?.info)

;IF EXISTS S:Boot-Select (1)
; Execute S:Boot-Select
;EndIF


IF EXISTS DEVS:Monitors
IF EXISTS DEVS:Monitors/VGAOnly
DEVS:Monitors/VGAOnly
EndIF

C:List >NIL: DEVS:Monitors/~(#?.info|VGAOnly) TO T:M LFORMAT "DEVS:Monitors/%s"
Execute T:M
C:Delete >NIL: T:M
EndIF

SetEnv Language "english"
SetEnv Workbench $Workbench
SetEnv Kickstart $Kickstart
UnSet Workbench
UnSet Kickstart

C:AddDataTypes REFRESH QUIET
C:IPrefs
C:ConClip

Path >NIL: RAM: C: SYS:Utilities SYS:Rexxc SYS:System S: SYS:Prefs SYS:WBStartup SYS:Tools SYS:Tools/Commodities

IF EXISTS S:User-Startup
Execute S:User-Startup
EndIF


Resident Execute REMOVE
Resident Assign REMOVE

C:LoadWB
C:FontPLPatch >NIL:
EndCLI >NIL:

(1) To jak używałem właśnie bootctrl, ale wkurzało mnie ileś tam restartów Ami i teraz praktycznie wybieram z BootMenu, która partycja ma być boot'ująca. Jeśli da się to zrobić z mniejszą ilością restartów to z przyjemnością tego się dowiem:).

Skrypt MAC:
c:assign t: ram:
set choice `requestchoice TITLE "Dysk startowy" BODY "*nWybierz system operacyjny:" "OS 3.1|OS 3.9|MAC|Abort"`
c:assign t: ram: remove

if $choice eq 0
skip quit
endif

if $choice eq 1 ; OS 3.1
endif

if $choice eq 2 ; OS 3.9
endif

if $choice eq 3 ; MAC
c:PrepareEmul A1200
endif

lab quit

Skrypt Boot-Select:
.key changebootpri
.def changebootpri c:changebootpri

c:assign t: ram:
set choice `requestchoice TITLE "Dysk startowy" BODY "*nWybierz system operacyjny:" "OS 3.1|OS 3.9|MACOS8.1|NetBSD|Abort"`
c:assign t: ram: remove

if $choice eq 0
skip quit
endif

if $choice eq 1 ; OS 3.1
>nil: DH0 1 ; OS 3.1
>nil: DH1 0 ; OS 3.9
>nil: DH2 0 ; MAC OS8.1
>nil: DH3 0 ; NetBSD 5.1
set dev "DH0 / OS 3.1"
endif

if $choice eq 2 ; OS 3.9
>nil: DH0 0 ; OS 3.1
>nil: DH1 1 ; OS 3.9
>nil: DH2 0 ; MAC OS8.1
>nil: DH3 0 ; NetBSD 5.1
set dev "DH1 / OS 3.9"
C:Reboot
endif

if $choice eq 3 ; MAC OS8.1
>nil: DH0 0 ; OS 3.1
>nil: DH1 0 ; OS 3.9
>nil: DH2 1 ; MAC OS8.1
>nil: DH3 0 ; NetBSD 5.1
set dev "DH2 / MAC OS8.1"
C:Reboot
endif

if $choice eq 4 ; NetBSD 5.1
>nil: DH0 0 ; OS 3.1
>nil: DH1 0 ; OS 3.9
>nil: DH2 0 ; MAC OS8.1
>nil: DH3 1 ; NetBSD 5.1
set dev "DH3 / NetBSD 5.1"
C:Reboot
endif

lab quit

Z tym Boot-select to wiem, że uruchamiałem WB3.9(nie miałem wtedy jeszcze MAC i wciąż nie mam NetBSD5.1) i to jakoś działało.

Teraz może będzie jaśniej co chcę osiągnąć:D.
Wiem, że obrazek i nawet muzyczkę mogę wczytać sobie przy uruchamianiu. Już to robiłem przy pomocą dwóch jakichś darmowych programów. Ale nie robiłem tego wszystkiego na raz tak aby osiągnąć opisany na początku posta efekt.



Ostatnia modyfikacja: 05.02.2011 22:57:03
[#5] Re: Startup-sequence w A1200

@Tomski, post #4

Tak ogólnie, to chodzi ci o to, żeby po resecie (wywołanym w trakcie uruchamiania LoadModule) nie musieć znowu wybierać systemu?
A jakby przenieść LoadModule przed wywołanie skryptu wyboru OS (Skrypt MAC o ile dobrze rozumiem)?
Możesz też rozbudować skrypt MAC o prosty trick: po wyborze w nim jakiegoś OSu, na dysku twardym (np. w DH0:S/OS/) tworzysz plik o nazwie mu odpowiadającej. Tzn, jeżeli np. wybierzesz OS3.1 to za pomocą polecenia:

if $choice eq 1 ; OS 3.1
ECHO "" >DH0[b]:S/OS/OS31[/b]
endif

stworzysz pusty plik o nazwie OS31 w ww. katalogu, itd. dla kolejnych OS.
Następnie na początku skryptu MAC dodajesz sprawdzenie, czy w katalogu jest jakiś plik. Jeżeli nie ma - to skrypt uruchamia się normalnie, wyświetlając okienko RequestChoice. Jeżeli jest - to sprawdzasz jaki i uruchamiasz odpowiednią część skryptu z pominięciem RequestChoice.
Oczywiście trzeba pamiętać, żeby np. w Startup-Sequence, tuż przed wywołaniem LoadWB, dopisać kasowanie zawartości katalogu:

Delete DH0:S/OS/#? >NIL:

W ten sposób po resecie/wyłączeniu i łączeniu Ami znów odpali ci się okienko wyboru (bo katalog będzie pusty).

U mnie coś podobnego zdaje egzamin od lat.

[#6] Re: Startup-sequence w A1200

@APC74, post #5

Dzięki za podpowiedź. Kombinuję cały czas. Już mam efekty ale muszę je dopracować jeszcze. Jak już będę miał się czym pochwalić to napiszę.
Czy jest możliwość ustawienia tego okna z pytaniem o boot'owanie pośrodku ekranu?

[#7] Re: Startup-sequence w A1200

@Tomski, post #6

Po radach APC74, udało się mi osiągnąć część tego co bym widział docelowo. Na razie musi wystarczyć.
O to skrypt MAC w Workbench 3.1:

.key changebootpri
.def changebootpri c:changebootpri

if exists DH0:S/OS/OS
skip quit
else
c:assign t: ram:
set choice `requestchoice TITLE "Dysk startowy" BODY "*nWybierz system operacyjny:" "OS 3.1|OS 3.9|MAC|ABORT"`
c:assign t: ram: remove

if $choice eq 0
skip quit
endif

if $choice eq 1 ; OS 3.1
ECHO "" >DH0:S/OS/OS
>NIL: DH0 1
>NIL: DH1 0
endif

if $choice eq 2 ; OS 3.9
ECHO "" >DH0:S/OS/OS
>NIL: DH0 0
>NIL: DH1 1
C:Reboot
endif

if $choice eq 3 ; MAC
ECHO "" >DH0:S/OS/OS
c:PrepareEmul A1200
endif

endif
lab quit

Powyżej używam BootCtrl do wyboru partycji boot'ującej.

Początek i koniec skryptu S-S(WB31):

; $VER: Startup-Sequence_HardDrive 40.4 (08.02.2011)
; Startup-Sequence for hard drive systems

C:Version >NIL:
C:AddBuffers >NIL: DF0: 30
FailAt 21

C:LoadModule DEVS:scsi.device >NIL:
C:SetPatch QUIET
C:CPU60 B >NIL:
C:PatchOpenWB

IF EXISTS S:MAC
Execute S:MAC
EndIF

C:MakeDir RAM:T RAM:Clipboards RAM:ENV RAM:ENV/Sys
C:Copy >NIL: ENVARC: RAM:ENV ALL NOREQ

Resident >NIL: C:Assign PURE
Resident >NIL: C:Execute PURE

Assign >NIL: ENV: RAM:ENV
Assign >NIL: T: RAM:T
Assign >NIL: CLIPS: RAM:Clipboards
Assign >NIL: REXX: S:
Assign >NIL: PRINTERS: DEVS:Printers
Assign >NIL: KEYMAPS: DEVS:Keymaps
Assign >NIL: LOCALE: SYS:Locale
Assign >NIL: LIBS: SYS:Classes ADD
Assign >NIL: HELP: LOCALE:Help DEFER

RUN >NIL: S:PLUS/AmigaStart
....
C:Delete DH0:S/OS/#? >NIL:
C:LoadWB
C:FontPLPatch >NIL:
S:PLUS/AmigaStart Close
EndCLI >NIL:

Jednak wrzuciłem wybór partycji po załadowaniu scsi.device z LoadModule. Nie potrafiłem obejść, dwukrotnego pojawiania się okienka z wyborem dysku startowego. Jest też AmigaStart pokazująca konfig A1200 przed załadowaniem systemu. Jeszcze być może dodam ładowanie jakiegoś obrazka.


Skrypt MAC pod Workbench 3.9:

.key changebootpri
.def changebootpri c:changebootpri

if exists DH1:S/OS/OS
skip quit
else

c:assign t: ram:
set choice `requestchoice TITLE "Dysk startowy" BODY "*nWybierz system operacyjny:" "OS 3.1|OS 3.9|ABORT"`
c:assign t: ram: remove

if $choice eq 0
skip quit
endif

if $choice eq 1 ; OS 3.1
ECHO "" >DH1:S/OS/OS
>NIL: DH0 1
>NIL: DH1 0
C:reboot
endif

if $choice eq 2 ; OS 3.9
ECHO "" >DH1:S/OS/OS
>NIL: DH0 0
>NIL: DH1 1
endif
endif
lab quit

Tutaj nie zamierzam odpalać ShapeShiftera z OS 3.9 i dlatego go też nie ma przy wyborze boot'owania.

Skrypt S-S z OS3.9:

; $VER: Startup-Sequence_HardDrive 45.4 (07.02.2011)
; Startup-Sequence for AmigaOS 3.9

Set SCSIUpdate 1
If $SCSIUpdate EQ 1
SetPatch QUIET
Else
SetPatch SKIPROMUPDATES "scsi.device" QUIET
EndIf
Unset SCSIUpdate

IF EXISTS S:MAC
Execute S:MAC
EndIF

C:Version >NIL:
C:AddBuffers >NIL: DF0: 15
FailAt 21
C:Delete DH1:S/OS/#? >NIL:
...

Wiem, że początek jest bezsensu z Set SCSIUpdate i IF ale zostawiłem sobie tak jak jest aby w przyszłości mieć od czego zacząć eksperymenty.

Przełączanie się pomiędzy systemem WB3.1 a 3.9 oraz odwrotnie udaje się mi wykonać bez pojawiania się drugi raz okienek - z tego na ile to przetestowałem:D.
Na pewno można to zrobić lepiej ale ja nie potrafiłem tego zrobić inaczej. Nie potrafiłem tego tak zrobić aby każdy z wybranych systemów zapisywał plik OS31, OS39, MAC a potem z tego korzystał przy dalszym uruchamianiu. Jakoś to nie chciało mi działać. A tak jak teraz zrobiłem w sumie jest prościej i też działa:D.
Ogólnie rzecz biorąc jestem zadowolony z osiągniętego efektu.

[#8] Re: Startup-sequence w A1200

@Tomski, post #7

Wkradła się pomyłka w mój poprzedni post.
Mianowicie wybieram partycję boot'ującą programem changebootpri a nie programem Boot Control.

Czy ktoś wie jak wy pozycjonować okienko z pytaniem jakie pojawia się przy wyborze systemu? Chodzi mi po głowie, że jest to możliwe ale wertując książkę na szybko- Amiga DOS - nic nie mogę na ten temat znaleźć. Wiem, że gdzieś coś takiego widziałem ale głowy sobie nie dam uciąć, że to działało z tego typu request 'erem.

[#9] Re: Startup-sequence w A1200

@Tomski, post #8

Pociągnę dalej temat. Udało się mi znaleźć, że można coś takiego np. wpisać w ToolType ikony jakiegoś programu Window=50,50,100,100 i wtedy zmieni się domyślne ustawienie okna programu. Tak przynajmniej pisał p. Pampuch w książce Amiga dla nie wtajemniczonych str 105/106. I teraz pytanie można to jakoś wpisać w shellu do pojawiającego się requestera? Wpisywałem na końcu linii w skrypcie gdzie występuje otwieranie okna requestera ale nie che to działać. Wiem , że kombinuję ale nie daje mi to spokoju. Chcę aby takie okienko pojawiało się na środku ekranu a nie w lewym górnym rogu, ot takie zboczenie;)- chyba niegroźne .
Można to jakoś zrobić? A co z programem Arq? Może on może coś poradzić na to?



Ostatnia modyfikacja: 17.02.2011 20:57:27



Ostatnia modyfikacja: 17.02.2011 21:07:02
[#10] Re: Startup-sequence w A1200

@Tomski, post #9

Przy okazji szukania informacji do rozwiazania innego problemu natknalem sie na stary temat.
Moze sie przyda

Program CentreQuest zalatwi sprawe centrowania wyskakujacych okienek względem ekranu, innego okienka czy pozycji myszki.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem