2,101

(36 odpowiedzi, napisanych Programowanie - 8 bit)

ogolnie chodziloby mi o stworzenie srodowiska graficznego (lepszego od GEOS'a), w ktorym takie przelaczanie aplikacji moznaby wykorzystac

jesli ktos bedzie chcial wykorzystac obsluge podstawowych komponentow w takim srodowisku to napisze aplikacje dzialajace w gfx, jesli chce najszybsza napisze aplikacje konsolowa, dzialajaca w znakowym srodowisku, z tym ze tu bedzie sam obslugiwal ekran albo za pomoca OS'a

a jedynym multitaskingiem bylyby programy podczepione pod koncowke przerwania VBL, zegar czasu rzeczywistego, player msx, bufor klawiatury itp. ogolnie krotkie programy nie przekraczajace 20.000 cykli

i tak jak napisal DRAC030 stos, strona zerowa, pamiec obrazu, program antica alokowany w pamieci dodatkowej, w momencie żądania wywolania programu przepisywane sa te dane do podstawowej, a kod aplikacji uruchamiany w dodatkowej pamieci

co by to dalo?
kilka, kilkadziesiat aplikacji w pamieci, mozliwosc przelaczania sie pomiedzy nimi, zupelnie inny komfort pracy, cala moc CPU wykorzystywana przez aktywna aplikacje

nasuwa sie skojarzenie z TTP (Tight Tools Package), ktore na GEOS jest wzorowany (graficznie), statyczne okno glowne, z ktorego wybieramy programy

inne skojarzenie podsunal Jurgi

miałem kiedyś programik, który robił mniej więcej to, co Qmeg 4.04
potrafił zamieniać dwa prg miejscami (łącznie z dosem), snapshot się zwał
nie był tak dobry jak Qmeg, ale niezły, można było na zmianę dwóch systemów używać, tylko przy wspólnym używaniu ramdysku były problemy, na 100% używał dodatkowego 64kb


do czego multitasking?
do obslugi protokolu TCP/IP, ftp'a, www, irc'a, gg czyli wszystkiego tego czego nie mamy (Contiki powstalo ale pewnie RJ'ek zabraklo w Atari )

p.s.
byloby milo gdyby w DRAC'OS mozna jakas funkcja systemowa wybrac nowe miejsce dla strony zerowej, stosu, czyli taki zalazek dla przelaczania taskow, do wykorzystania w przyszlosci

z tego co czytalem alokacje pamieci ma zaimplementowana, wiec moznaby wykorzystac ten OS jako podstawe integracji z takim srodowiskiem graficznym

2,102

(36 odpowiedzi, napisanych Programowanie - 8 bit)

multitasking prosty jak drut :), w n/w przykladzie na VBL'u przelaczane sa dwie "aplikacje", dzialanie kazdej polega na wpisywaniu do rejestru $d01a wartosci w petli nieskonczonej, pierwsza wpisuje wartosc $88, druga $26

...
start
 lda #$88
 sta $d01a
 jmp start
...

efekt koncowy to mruganie ekranu

wbrew pozorom nie jest to zbyt wolne jak na mozliwosci 6502, przepisanie stosu (256bajtow), zwrocenie wartosci rejestrow A,X,Y, wartosci wskaznika stosu S zajmuje z 5200 cykli, w skali 20.000 ktore oferuje VBL nie jest zle, jednak 65816 wykonalby to samo w kilkudziesieciu cyklach

w momencie wywolania przerwania VBL, na stos odkladane sa 3 wartosci, stan CPU, oraz adres ostatniego wykonywanego rozkazu

n/w program na poczatku preparuje odpowiednio stosy, ustawiajac w nich odpowiednio adresy startowe kazdej z "aplikacji", zapamietujac poczatkowa wartosc wskaznika stosu, reszte zalatwia juz "przyroda"

kazda z "aplikacji" zaczyna sie od poczatku strony pamieci, 256b na stos, nastepnie rozkaz skoku pod wlasciwy adres startowy aplikacji (JMP INIT) i wlasciwy kod programu (START)

jesli tych aplikacji mialoby byc kilkadziesiat, wowczas opoznienie tez wynosiloby kilkadziesiat ramek, dlatego najlepszym zastosowaniem takiego multitaskingu bylaby mozliwosc przelanczania aplikacji, np. mamy zaladowanych kilka programow w pamieci (odpowiednio napisanych, kod relokowalny) odpowiednia kombinacja klawiszy przechodzimy to task managera, wybieramy inna aplikacje i dzialamy w niej, potem mozemy wrocic do poprzedniej i kontynuowac

oczywiscie czesc aplikacji wymagalaby dzialania w tle, ftp'e, zegar czasu (co 50 ramek wywolywac), msx player (wywolywac co 1 ramke), moznaby takie aplikacje podpiac pod koncowke przerwania VBL, ogolnie bylyby rozne typy aplikacji jak i rozne ich piorytety dzialania, z kolei
operacje IO bylyby krytyczne czasowo

sposob tworzenia aplikacji tez wymagalby zmian, na pewno zostalby wyodrebniony podzial na segmenty, segment stosu, danych, kodu i antica, oczywiscie kod relokowalny. Aplikacja bylaby przechowywana w pamieci dodatkowej, w momencie żądania jej wykonania przepisywana bylaby do pamieci podstawowej (program ANTIC'a nie wykona sie w dodatkowej) i tu byloby kontynuowane jej dzialanie (po podmianie stosu)

kod dla 65816 bylby szybszy jednak narzucalby ograniczenia co do ilosci zaladowanych aplikacji, nie przeznaczymy przeciez calych 64kb na stosy dla kazdej z aplikacji, przechowywanie aplikacji w pamieci dodatkowej jest bardziej uniwersalne i nie narzuca ograniczen dla organizacji pamieci podstawowej


ktos chetny na projekt takiego systemu ? i pisanie aplikacji do niego ?



 org $2000

tasks equ 2

main

/*
  Initialize TASK
  copy current stack to TASK1.STACK and TASK2.STACK
*/
 cld

 tsx
 
 ldy #0
cp
 lda $0100,y
 sta task1,y
 sta task2,y
 iny
 bne cp

// init stacks
 
 lda >task1.init
 sta task1,x
 lda <task1.init
 sta task1-1,x
 lda #$a4
 sta task1-2,x
 
 lda >task2.init
 sta task2,x
 lda <task2.init
 sta task2-1,x
 lda #$a4
 sta task2-2,x

// init stack pointers

 :3 dex
 stx task_point
 stx task_point+1 

/*
  Initialize NMI vector
*/
 lda $14
_wai cmp $14
 beq _wai
  
 sei
 lda #0
 sta $d40e
 sta $d400

 mva #$fe $d301

 mwa #nmi $fffa

 mva #$40 $d40e


// LET'S GO 
 jmp task1.init


/*
  NMI routine
*/
.proc nmi

 bit $d40f
 bpl vbl

dli rti

vbl
 sta rA+1
 stx rX+1
 sty rY+1

 sta $d40f


// OLD TASK

tsk ldy #0

 lda task_stack,y
 sta _dst+2

 ldx #0
_src lda $0100,x
_dst sta $ff00,x
 inx
 bne _src
 
 tsx
 txa
 sta task_point,y
 
 lda rA+1
 sta task_regA,y
 lda rX+1
 sta task_regX,y
 lda rY+1
 sta task_regY,y


// NEW TASK

 iny
 cpy #tasks
 bne skip

 ldy #0
skip
 sty tsk+1

 lda task_stack,y
 sta src+2

 ldx #0
src lda $ff00,x
 sta $0100,x
 inx
 bne src

 ldx task_point,y
 txs
 
 lda task_regA,y
 sta rA+1
 lda task_regX,y
 sta rX+1
 lda task_regY,y
 sta rY+1

rA lda #
rX ldx #
rY ldy #
 rti

.endp


/*
  TASK NO.1
*/
 align
 
.proc task1

stack
 .ds 256

init
 jmp start

start
 lda #$88
 sta $d01a
 jmp start

.endp


/*
  TASK NO.2
*/
 align
 
.proc task2

stack
 .ds 256

init jmp start

start
 lda #$26
 sta $d01a
 jmp start

.endp


task_stack dta h( task1 , task2 )
task_point .ds tasks
task_regA  .ds tasks
task_regX  .ds tasks
task_regY  .ds tasks

;---
 run main

 opt l-
 icl 'align.asm'
 icl 'xasm.asm'

2,103

(9 odpowiedzi, napisanych Software, Gry - 8bit)

po disasemblacji bedzie juz z gorki ;)

2,104

(0 odpowiedzi, napisanych Software, Gry - 8bit)

http://www.atariage.com/forums/index.ph … 49359&

przyklad jest w formacie MADS, wykorzystuje struktury danych, tablice

wykorzystane sa dwa sprity Player0 i Player1 dwu-kolorowe, program po modyfikacji struktury SDLI i procedury MPLEX mozna rozbudowac do 2 spritow 4 kolorowych, jesli skorzystamy z rastra to kazdy nowy sprite bedzie mogl miec inny kolor

jesli bedziemy rozmnazac 4 sprity, mozemy uzyskac od 16-21 spritow dwu-kolorowych i powstanie z tego scroll jak w Joyride

mozna taki multiplexer wykorzystac np. do gry, sprawdzanie kolizji bedzie odbywalo sie poprzez test pozycji X,Y kazdego z 8-21 obiektow, oczywiscie pozycja X,Y wyznacza lewy gorny naroznik obiektu, my musimy sprawdzic kolizje w obrebie prostokata, kwadratu

p.s.
program dla PC zostanie rozbudowany o automatyczne generowanie plikow wynikowych dla Atari

2,105

(50 odpowiedzi, napisanych Scena - 8bit)

ok zapamietam znak < uzyskujemy przez &lt a > przez &gt

i nie wiem skad ta wrzawa, martwa materia aarea nabroila a Wy juz do gardel skaczecie :)

w zalaczniku oryginal, bez dodatkowych znaczkow dziwaczkow, dodawanych przez aarea, mozecie nawet do Worda to wczytac i edytowac

proponuje pobrac material genetyczny od Swietego, Pasia i innych wybrancow a nastepnie przekazac go zonom innych atarowcow aby ... no wiadomo sklonowac, najlepszy material genetyczny powinien byc chroniony i powielany w najczystszej formie

co wy na to ? ktos chce zostac matka zastepcza ?

2,107

(50 odpowiedzi, napisanych Scena - 8bit)

musialem zapisac to w ten spsob inaczej aarea zjadalaby te znaki interpretujac je jako kod html, tak wiec przyklady sa tak zapisane abyscie je zobaczyli inaczej mielibyscie pourywane fragmenty wierszy co juz sie zdarzylo w innych artykulach

a przyklady byly skopiowane ze strony traktujacej o C++ i PC :) ale sprawdzalem je kompilowaly sie, w koncu to jezyk nie znajacy ograniczen platformowych ;)

no to juz jest grzech pierworodny, jak on mogl dokonac takiego bezecenstwa ;)

skoro to takie proste, male, zintegrowane i pewnie dostepniejsze, czemu nikt tego nie montuje masowo, czyzby wyniknely jakies problemy ?

2,109

(50 odpowiedzi, napisanych Scena - 8bit)

dziwne bo ten poradnik pisalem korzystajac z XP i u mnie dzialalo

zaraz Macgyver sie odezwie i zapyta, skoro juz podlaczacie SID'a to czemu nie SoundBlastera skoro jest lepszy ;)

2,111

(50 odpowiedzi, napisanych Scena - 8bit)

tak to jest jak sie artykulow na aarea nie czyta

http://atariarea.histeria.pl/artykuly.p … &id=45

2,112

(51 odpowiedzi, napisanych Sprzęt - 8bit)

kurde a ja myslalem ze naprawde chcecie go podrasowac, np. przez sprzetowa glosnosc, sprzetowe ustawianie czestotliwosci odtwarzania sampla :)

ale tak pozatym posiadam takowy

pewnie powstana i trackery na maluicha, jesli tylko SID bedzie dostepniejszy, wiec ktos to zoptymalizuje i ustandaryzuje

a jak wyglada dostepnosc SID'a ? czy trzeba pruc C64, bo jak tak to ja z mila checia bede je niszczyl :)

z tego co slyszalem sa dwie wersje SID'a starsza glosniejsza i nowsza cichsza, czym sie roznia dokladniej, moze nowe mozliwosci dzwiekowe :)?

tia co dwie glowy to nie jedna

Patchboy bedzie robil a Seban bedzie tylko mowil co ma robic :)

[ Dodano: Wto Kwi 26, 2005 5:21 pm ]
p.s.

a jak wyglada sprawa obciazenie CPU Atari podczas odtwarzanie SID'ow ?

tak jak np. z MPT ? bo jak tak to luzik :)

wow, nowy elektronik nam sie narodzil, radujcie sie bo oto nadchodzi :)

albo teoretyk ;) , teraz tylko przekuc to w czyn

2,116

(102 odpowiedzi, napisanych Zloty)

buuuu znowu Quast ;)

2,117

(20 odpowiedzi, napisanych Software, Gry - 8bit)

jesli ktos zrobi to taniej to pewnie tylko w Chinach ;)

2,118

(11 odpowiedzi, napisanych Emulacja - 8bit)

dopiero crossassemblery maja pseudo rozkaz INS ktory pozwoli Ci dolaczyc dowolny plik do kodu

2,119

(20 odpowiedzi, napisanych Software, Gry - 8bit)

trub Wam pewnie pomoze, a asemblery wspierajace Sparte to na Atari 8bit Fast Assembler, na PC Mad Assembler, Zooey i assembler Epi'ego

2,120

(6 odpowiedzi, napisanych Bałagan)

niedlugo zobaczymy Dely-ego na TVN, jak sedziuje zawody StrongMan :)

2,121

(42 odpowiedzi, napisanych Scena - 8bit)

no co Ty, wszystkie msx z Atari 8bit zostaly juz tam umieszczone

2,122

(4 odpowiedzi, napisanych Scena - 8bit)

Bill Gates -> Microsoft Basic

2,123

(21 odpowiedzi, napisanych Bałagan)

juz wiem dlaczego, przeciez to oczywiste, płeć męska ma wieksze mózgi :)

2,124

(21 odpowiedzi, napisanych Bałagan)

w takim razie te scenowe dziewczyny musza byc bardziej podobne do chlopakow

2,125

(10 odpowiedzi, napisanych Software, Gry - 8bit)

tia ukazal sie ludek i jego animacja w innym demie i tyle