26

@Yansen: A co taki loader miałby robić?:
- Instalować wygaszacz w systemie (różne rodzaje pamięci)? Robi to sama SDX.
- Podpinać go na VBLK(I/D), DLI, IRQ? To zależy od samego wygaszacza.
Mógłby uaktywniać i dezaktywować wygaszacz, ale to jest raptem kilka linijek kodu...

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

27

Jakby loader ustawiał SET SCRSAVER=plik_wygaszacza (i ładował je po ustalonym czasie) a same binarki wygaszacza trzymały się jakichś reguł pamięci to przez SET w różnych aplikacjach można by odpalać różne screensavery bez ręcznego ładowania. A jeszcze żeby nie było bajzlu to SET SCRPATH=nazwa_katalogu i wszystkie pliczki można grzecznie trzymać w jednym katalogu. Takie luźne myśli.

28

Całkiem fajny pomysł, ale chyba na zupełnie nowy projekt. Powiem może jaki jest pomysł na mój wygaszacz i czemu powstał.
Pierwowzorem jest plemnik JBWa pod DOS-a (pecetowego). Widziałem go w redakcji Tajemnica Atari i tak mi się spodobał, że pomyślałem że może da się coś podobnego zrobić na Atari.
Wygaszacz ekranu na Atari (nie widziałem czegoś takiego w systemach na inne platformy 8-bit) ma za zadanie doprowadzać do równomiernego wypalania luminoforu telewizora w przypadku kiedy na dłużej nie dotykamy komputera i na monitorze znajduje się ciągle ten sam obraz (widziałem kiedyś zezłomowany monitor jakiegoś pecetowego terminala, na którym widniał pięknie wypalony prompt :]). Dlatego w systemie została przewidziana procedura, która po upływie ok 11 minut (256*128 ramek) odwraca cyklicznie kolory. Odbywa się to na przerwaniu VBLKI. Zaletą takiego podejścia do rzeczy jest to, że system nie zajmuje czasu procesora jakimiś czasochłonnymi działaniami dzięki czemu program użytkownika, który się w międzyczasie wykonuje, ma dla siebie praktycznie całą moc CPU.
Plemnik powstał z inspiracji i ze znurzenia systemowym trybem przyciągania uwagi. Stwierdziłem też że fajnie by było, gdyby nie trzeba było na niego czekać 11 minut, ale powiedzmy 3 (i taki właśnie był czas jego aktywacji w opublikowanej w TA wersji - taki czas zresztą jest nadal ustawiony domyślnie, choć w wersji dla SDX doszła parametryzacja). Miał za zadanie malować coś ciekawszego na ekranie nie obciążając zbytnio procesora tak, żeby program działający na komputerze nadal miał maksimum mocy obliczeniowej. Udało się to zrealizować w ten sposób, że cała procedura wygaszacza działa na dwóch przerwaniach: VBLKI mierzy jak dotąd czas bezczynności i ustawia krótszy czas oczekiwania przy opuszczeniu trybu, a na VBLKD realizowana jest procedura włączenia własnego ekranu ANTICa i skonfigurowanie GTIA tak, żeby pokazywał obraz z plemnikiem. Rysowany jest oczywiście tylko obraz składający się z 5 wierszy ekranu - reszta to puste linie dzięki czemu ANTIC przez większość czasu rysowania ekranu nie blokuje CPU. Ustawiane są wyłącznie rejestry sprzętowe dzięki czemu działanie plemnika jest niezauważalne dla pozostałych elementów systemu.
Twoje idea wygaszacza polegająca na uruchomieniu programu, który zajmie całkowicie procesor (mamy system jednozadaniowy) nasuwa mi na myśl program również autorstwa JBW, mianowicie XL Friend (popularnie zwany XLF a wchodzący w skład pakietu Quick Assemblera). XLF czekał na wciśnięcie klawisza SHIFT+CONTROL+1/2/3/4, zamrażał stan systemu i uruchamiał program przypisany do odpowiedniej kombinacji klawiszy - edytor, mapę znaków, kalkulator lub wglądownicę. Po skorzystaniu z programu stan systemu był odtwarzany i procesor wracał do wykonywania programu użytkownika. O ile XLF był bardzo przydatny i używałem go z DOS 2.5 i QA na porządku dziennym, o tyle wygaszacz ekranu zrealizowany w ten sposób (aktywowałby się oczywiście automatycznie po upływie wymaganego czasu bezczynności) zabierałby czas programowi użytkownika nie robiąc jednak nic konstruktywnego. No chyba, że zamierzasz wspomóc projekt SETI :) albo innego raka.
Nie zniechęcam jednak i gdybyś chciał coś takiego sam napisać służę pomocą.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

29

mono napisał/a:

widziałem kiedyś zezłomowany monitor jakiegoś pecetowego terminala, na którym widniał pięknie wypalony prompt :]

Hehe, ja kiedyś utylizowałem monitor z wypalonym Norton Commanderem :-)

30

odpalałem wcześniej plemnika spod *.cfg jako sterownik, więc działał spod wpisu DEVICE. Teraz tak nie jest, co jest kłopotliwe w przypadku Sparta Commandera. Czy plemnik może być po prostu *.sys?

Kontakt: pin@usdk.pl

31

A u mnie poszło. Trzeba było tylko zmienić nazwę na WORM.SYS i odpalać np. przez

DEVICE WORM /D 60 /F
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

32

zaraz to sprawdzę, bo właśnie walczę z RGB z STe i konwerterem do HDMI ;) Prawie działa.

Kontakt: pin@usdk.pl

33 Ostatnio edytowany przez Pin (2015-01-17 01:04:50)

mono napisał/a:

A u mnie poszło.

Jedna uwaga, co ostatnio wyszło i zaraportowałem do Draco. Podaj parametry w konfigu małymi literami i powiedz mi, czy Ci działa ;)

EDIT:

Worm z własnej woli mi nie odpala, dopiero po 77,128 uruchomił się na 1-2 sekundy, wszedł std attract mode i komp wisi. Coś jest nie halo jeszcze.

Kontakt: pin@usdk.pl

34 Ostatnio edytowany przez Pin (2015-01-17 01:40:21)

o - sam się uruchomił, ale nie mogę teraz zweryfikować czasu, bo sam się zawiesiłem w tym czasie. Efekt taki, że worm działa ale sam od siebie, a poganianie go rejestrem 77 daje efekt taki, jak pisałem. 1 s. działania i zwis i attract mode na całości, czyli jak by blankscreen i peek 710=712, 709=0

EDIT:

Po naciśnięciu "any key" w tym stadium następuje koniec trybu attract i zwiecha na blankskrinie. Coś jest jeszcze nie halo raczej.

Kontakt: pin@usdk.pl

35

@Pin, hmm... Może na Atari by zadziałało...? Sprawdź z ciekawości pod standard 130XE czy jest jakaś różnica?

Sikor umarł...

36

@pin: A czy ty przypadkiem używasz starego DracOS-a?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

37

@Mono: wszystko sprawdzę jak wrócę do domu.

Kontakt: pin@usdk.pl

38 Ostatnio edytowany przez Pin (2015-01-18 00:10:05)

Zwis o którym mówiłem (worm sam z siebie działa, wysypie się jeśli pogonimy go ręcznie zmieniając zawartość rejestru 77) powtórzyłem właśnie teraz w takich oto warunkach:

* Sprzęt obojętny - 6502c/65c816, XLOS, DracOS, cokolwiek

Config:

USE BANKED $6F
DEVICE ENV
DEVICE SPARTA
DEVICE SIO
DEVICE ATARIDOS
SET PATH=CAR: ........ itd.
SET PROMPT=$L$P>
SET COMSPEC=B:>PROGRAMS>SC>SCMAIN.OVL
SET SC=B:> ........itd.
DEVICE B:>SYS>S_VBXE 15 144
DEVICE B:>SYS>CON /E
DEVICE B:>FAST>WORM /D 180 /F
DEVICE QUICKED /N
DEVICE IDEPTIME
DEVICE COMEXE
DEVICE RUNEXT B:>SYS>RUNEXT.CFG
DEVICE RAPIDUS

MemLo przy takiej choince: $16A8

EDIT:

Ok, mam chyba winnego ;)- Jak z takiego konfiga wyremuję SC, to plemnior zadziała poprawnie po 77,128 - tylko to ma wpływ, tak powiedzmy na etapie problemu i konfiguracji.

Kontakt: pin@usdk.pl

39

Wielkie dzięki - porządny raport. SC dość intensywnie pracuje z dyskiem przy uruchamianiu aplikacji. Plemnior siedzi sobie w extramie i operuje w przerwaniach. Możliwe, że to szkodzi. Zmierzymy się z problemem i poinformujemy :)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

40

Pinokio masz za dużo węgla w tym konfigu :)

"Was powinny uzbrojone służby wyciągać z domów do punktów szczepień, a potem zamykać do pi* za rozpowszechnianie zagrożenia epidemicznego" - Epi 2021
"Powinno się pałować tylko tych co tego nie rozumieją. No i nie szmatki i nie chirurgiczne tylko min FFP3, to by miało jakiś sens. U mnie we firmie, to jak przychodzi bezmaskowiec, to stoi w deszczu przed firmą" - Pin 2021

41

Jeszcze jedno przypominam Mono ;)- tryb 80 znaków VBXE i uruchomiony worm. Uruchom w takich warunkach np. player do SID tak, by ten uruchomił się w trybie Antica, jednakże by player wyłączył ekran na czas grania modułu ;)- Zobaczysz wówczas 80 znakowy ekran z VBXE ;)

Kontakt: pin@usdk.pl

42

sidplay nie dotyka w ogóle VBXE (psgplay również, a i neoplay też tego robił nie będzie) a to z tego powodu, że wyszedłem z założenia że jeśli się da to lepiej zostawić ekran użytkownikowi. VBXE nie zabiera czasu procesorowi więc wyświetlanie jego obrazu nie jest blokowane - blokowany jest tylko ANTIC. Jeśli odpalasz ekran 40-znakowy generowany przez ANTIC, no to on zniknie. A skoro pojawia się tam ekran VBXE, to prawdopodobnie znaczy że S2: coś nie tenteges.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

43

to może inaczej powiem, bo niepotrzebnie wiążesz przykład sidplayh ze sytuacją.

Po zainstalowaniu worma, jeśli aktywny jest s_vbxe.sys, to jeśli na obrazie z Antica będą "puste" linie, lub kolor czarny - to w takich miejscach widoczny jest ostatni wyświetlany tryb 80 znaków z vbxe.

Tak się dzieje po ostatnich poprawkach. Aha - dodatkowo w trybach antica kolor liter zmienia się na żółty :D

Kontakt: pin@usdk.pl

44

Tak się składa, że wczoraj próbowaliśmy to odtworzyć i jakoś nie wyszło: po odpaleniu czegokolwiek w trybie 40 kolumn (spod SC, przy włączonej 80-kolumnowej konsoli) pod ekranem Antica nie ma overlaya, jest czarno (czyli tak jak ma być).

KMK
? HEX$(6670358)

45

Wiesz Draco jak to zwykle jest. Po dwóch dniach odnajdujemy wspólny mianownik i okazuje się, że jednak ;) W tym względzie wiesz, że jestem w stanie skatalizować dowolnie ciężki przypadek ... przez przypadek :D

Kontakt: pin@usdk.pl

46

Jeśli dostępne jest urządzenie _RAWCON, wtedy plemnik na każdym VBLKD odwołuje się do RC_SHUTOFF lub RC_ACTIVATE zależnie od tego czy ma się on pokazać czy nie. Implementacja S2: zapisuje tam odpowiednią daną do VIDEO_CONTROL: 0 jeśli VBXE ma być wyłączone (czyli kiedy plemnik ma się pokazać), inną wartość kiedy VBXE ma być włączone (czyli kiedy plemnik nie ma być widoczny). Ponieważ dzieje się to co każdą ramkę to nie ma możliwości żebym zapomniał wyłączyć/włączyć VBXE bo robi to driver _RAWCON. Ta procedura dzieje się od chwili zainstalowania plemnika do końca świata.
Kiedy nie ma _RAWCON nie dotykam w ogóle VBXE.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

47

Pin napisał/a:

Po dwóch dniach odnajdujemy wspólny mianownik

Wiem. Ale na razie to czeka na półeczce do późniejszego zbadania, na razie pracuje się nad tym, żeby worm się nie wieszał.

KMK
? HEX$(6670358)

48

luz, mam dużo czasu ;)

Kontakt: pin@usdk.pl

49

W załączniku nowsza wersja sterownika S_VBXE. Numeru wersji (1.03) nie zmieniam, bo to i tak jest beta, wersja finalna się ukaże dopiero z SDX 4.47.

Sterownik uzupełniłem o FXS, czyli wynalazek mono naprawiający jeden gruby defekt VBXE, mianowicie to, że większość rejestrów sprzętowych VBXE jest tylko do zapisu.

Uaktualnienie wymagane jest do tego, żeby Worm się nie zawieszał w opisanych wyżej warunkach. Poprawki wymagał też sam Worm; słyszałem gdzieś, że autor zamieści poprawioną wersję w stosownym czasie ;)

Post's attachments

svbxe103.arc 38.69 kb, liczba pobrań: 7 (od 2015-01-19) 

Tylko zalogowani mogą pobierać załączniki.
KMK
? HEX$(6670358)

50 Ostatnio edytowany przez mono (2015-01-19 19:12:44)

Tak. Wersja 1.10 jest dostępna do ściągnięcia. Usunąłem support dla _RAWCON, bo support dla FXS jest w zupełności wystarczający do poprawnego działania z VBXE. Wieszać się już nie powinno.

Ponadto ponowne załadowanie plemnika umożliwia wyświetlenie aktualnie ustawionego czasu, po którym plemnik się uaktywnia, a dodatkowe podanie parametru "/D sec" pozwala zmienić ten czas w już zainstalowanym wygaszaczu.

Dzięki Draco!

Edit: Zapomniałem - plemnik nabrał nieco wyrazu, bo wykorzystałem tryb 15 ANTIC-a (8 OS) z włączonym GTIA i VSCROLL (dzięki czemu zrobił się tryb o rozmiarze piksela 4x9). Przedtem wykorzystany był tryb 13 ANTIC-a (7 OS) co powodowało, że jasności były nieco przyciemnione (taki defekt na linii ANTIC-GTIA). Poza tym gad łazi teraz po szerokim ekranie.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje