C64Power Forum
Software => Programowanie => Wątek zaczęty przez: qus w 24 Czerwca 2016, 08:51
-
W skrócie - robię własnego kernala (wyprzedzając szydercze pytania, odpowiedź: bo tak mi się podoba i bo mogę), korzystam ze źródeł z tej strony: http://spiro.trikaliotis.net/cbmrom. Ponieważ chcę tam dodać parę rzeczy, wywaliłem całą część basicową, zaprogramowałem własny, dużo mniejszy, edytor ekranowy i CHROUT (z obsługą UTF8, wyprzedzając szydercze pytania, odpowiedź: bo tak mi się podoba i bo mogę).
Próbowałem teraz zrzucić katalog dyskietki posługując się odpowiednim kodem z sjLOAD, jednak LISTEN wpada w nieskończoną pętlę, sprawdzając, czy zmianie ulega $DD00, konkretnie tu:
@LED5A:
jsr IecGetDataClockIn
bcc @LED5A
IecGetDataClockIn:
lda IEC_REG_DATA_CLK_IN
cmp IEC_REG_DATA_CLK_IN
bne IecGetDataClockIn
asl a
rts
Ponieważ nie mam pojęcia, jak działa komunikacja ze stacją, nie bardzo wiem co tak naprawdę powinno się tu dziać. Czy ktoś ŻYCZLIWY i NIEZBYT PRZEMĄDRZAŁY jest w stanie pomóc? Może po objawie okaże się, że np. Gdzieś nie zainicjalizowałem czegoś w CIA? Dla przypomnienia część LISTEN z feralnym momentem, do którego dochodzi:
iLISTEN:
ora #IEEE_LISTEN ; create primary address for TALK
jsr LF0A4 ; TODO (assumed: Wait for RS232 transmission to stop)
IecOutputCommand:
pha ; remember byte to be output
bit zC3PO ; test: Is there already some character in the output buffer?
bpl @BufferByte ; no -> branch, do not output but put the byte into the buffer instead
; there is some byte in the output buffer.
; output it on the IEC bus.
sec
ror zTSFCNT ; set zTSFCNT.7, thus: Signal an EOI on output
jsr IecOutputByte ; output a byte on IEC bus
; IecOutputByte returns with C == 0
lsr zC3PO ; unset zC3PO.7, thus:
; mark: There is no byte in the buffer
lsr zTSFCNT ; unset zTSFCNT.7. Subsequent bytes will not be signalled with EOI
@BufferByte:
; here, zC3PO.7 is unset.
; Either we jumped here because of the bpl, or it was specifically unset two lines above
; Thus, the buffer is already marked as empty
pla ; get back the byte to be output
sta zBSOUR ; and store it into the output buffer
sei ; make sure the interrupt does not disturb our timing
; it is not completely clear if this command is missing
; on the VIC20, or if it is not critical there, as the VIC20
; does not have badlines, which might help the timing here.
; TODO: document
jsr IecDataClear
cmp #IEEE_UNLISTEN
bne @NotUNLISTEN
jsr IecClkClear
@NotUNLISTEN:
; set ATN state
lda IEC_REG_ATN_OUT
ora #IEC_B_ATN_OUT
sta IEC_REG_ATN_OUT
IecOutputByte2:
sei ; make sure the interrupt does not disturb our timing
; it is not completely clear if this command is missing
; on the VIC20, or if it is not critical there, as the VIC20
; does not have badlines, which might help the timing here.
jsr IecClkSet
jsr IecDataClear
jsr IecDelay1ms
IecOutputByte:
sei ; make sure the interrupt does not disturb our timing
jsr IecGetDataClockIn
bcs DeviceNotPresent
jsr IecClkClear
bit zTSFCNT
bpl @LED5A
@WaitDataInactive:
jsr IecGetDataClockIn
bcc @WaitDataInactive
@WaitDataActive:
jsr IecGetDataClockIn
bcs @WaitDataActive
; tu sie zapetla...
@LED5A:
jsr IecGetDataClockIn
-
Mógłbym Cię odesłać do opracowań krilla i timingów
tu je znajdziesz
http://csdb.dk/release/download.php?id=148190
Dla mnie prościej założyć breakpointa w Vice i jechać step by step.
-
A myślisz, że skąd wiem, gdzie się zapętla? :D
-
Załóż breakpointa na normalnym kernelu i porównaj. Nie da się wytłumaczyć jak to działa, dopóki nie wgłębisz się w to na najniższy poziom i sam zrozumiesz. Mnie jako tako interesowało zawsze nie jak działa standardowa transmisja, tylko jak ją ominąć i zrobić to szybciej.
W opracowaniach krilla znajdziesz więcej szczegółów, może Ci pomogą.
Droga bitu po drucie opisana w odcinku 8 programowania stacji dysków C&A 95/04
-
no to załóż break pointa na orginale.
-
tylko jak ją ominąć i zrobić to szybciej.
Do LOAD akurat wykorzystam kod ze sjLOAD
-
Jak ja rozumiem to musisz mieć JD w stacji.
-
nie musisz, mozesz
-
SJLOAD is a C64/C64DTV software fastloader. Its main difference from normal fastloaders is that it only works with Jiffy-enabled drives and uses the JiffyDOS protocol.
PS. to też oznacza opłatę 8$ za używanie JD.
-
a to widzisz zmienia postac rzeczy, ide pod stol szczekac. Gdy uzywalem sjload to pewnie tylko z sd2iec albo nie zwrocilem uwagi ze zwykla stacja nie trybi z tym.
Czy to oznacza oplate - nie wiem. Placisz za licencje na cygana.
-
Nie ma obawy, robię to po to, żeby po ludzku korzystać z sd2iec. Prawnicy CMD mogą spać spokojnie.
PS. to też oznacza opłatę 8$ za używanie JD.
Przez producentów hardware...
-
Przez producentów hardware...
Producenci hardware jak Stary Marabut czy Raf przerzucają odpowiedzialność na end usera. Używasz płacisz to jest w licencji.
"Note: This purchase provides the buyer a license to utilize the downloaded ROM overlay image on one computing device or emulation environment. Each use must have a separate license for legitimate operation. "
No i tyle z mądrości ludowych.
-
Panowie, sprawa okazała się banalna. Po prostu za szubko po starcie stukałem do stacji, trzeba odczekać aż w DD00 będzie #$97 i wszystko hula.
-
Takich banalnych spraw w kodowaniu jest pełno... zapowiadają się ciekawe zimowe wieczory.
Userzy SD2IEC pewnie się zastanawiają co się stało z programami używającymi basica, przestały działać na tej modyfikacji ?
-
a czy sjload to emulator?
-
w nie zmodyfikowanej wypowiedzi, autor napisał że on używa emulatora i nie musi płacić bo płacą producenci hardware....
logika autora JD jest inna używasz płacisz.
Ponieważ sjload wymaga w stacji JD to pewnie autor już docenił pracę innego autora i zapłacił za McDonald + Fritki + Cola średnia autorowi.
-
Takich banalnych spraw w kodowaniu jest pełno... zapowiadają się ciekawe zimowe wieczory.
Userzy SD2IEC pewnie się zastanawiają co się stało z programami używającymi basica, przestały działać na tej modyfikacji ?
A komu, to, panie, potrzebne? W basicu ma działać tylko polecenie SYS ;)
w nie zmodyfikowanej wypowiedzi, autor napisał że on używa emulatora i nie musi płacić bo płacą producenci hardware....
logika autora JD jest inna używasz płacisz.
Ponieważ sjload wymaga w stacji JD to pewnie autor już docenił pracę innego autora i zapłacił za McDonald + Fritki + Cola średnia autorowi.
To zapytam bez złośliwości. JiffyDOS, to z tego co rozumiem, oprogramowanie napisane pod 6502, kernal c64 i hardware stacji. Gdzie w kombinacji sd2iec (atmel, jak sądzę, nie wykorzystuje kou 6502?) + sjload (nie wykorzystuje kodu Jiffy) wdeptuję w prawa autorskie?
-
JD to taka śmieszna sprawa, że jako spadkobierca schedy po jego producencie pojawił się jimi mózg i wspiera userów C64 zapewniając im możliwość korzystania z tego, pobierając za to opłaty. Jest to niewątpliwie kawał softu, do tego jest multum wersji na różne stacje. SD2IEC wspiera tak sztandarowo JD jak by to powiązana akcja była, ale wspiera też exosa darmowego, z którego korzystał np. FCIII. Ja jako ktoś, kto pisał swoje fastdosy nigdy nie używałem JD i nie odczuwałem takiej potrzeby, żeby to używać. Sd2iec core korzysta z exosa. Nie dlatego, że nie potrafię napisać swojego loadera, tylko dlatego, że jest on obsługiwany przez SD2IEC.
-
Ten exos jest w czymś lepszy od jiffy albo jd? Przyspiesza też zapis? Jest gdzieś do niego kod?
-
To zapytam bez złośliwości. JiffyDOS, to z tego co rozumiem, oprogramowanie napisane pod 6502, kernal c64 i hardware stacji. Gdzie w kombinacji sd2iec (atmel, jak sądzę, nie wykorzystuje kou 6502?) + sjload (nie wykorzystuje kodu Jiffy) wdeptuję w prawa autorskie?
Ponieważ sjload wymaga w stacji JD ...
Na moje możesz się tutaj uzłośliwiać poprostu nie spełniamy zachcianek "wielkich twórców" , chociaż podoba mi się styl bufona jaki reprezentujesz.
-
Jest alternatywą o zbliżonych możliwościach, nie wymaga modzenia ROM stacji, czyli działa z nim i SD2IEC, stacje z JD czy bez. Kod odszukasz w starych niemieckich gazetach nazwy nie pamiętam. Użyty jest w sd2iec core kod dostępny znajdziesz link w starych wątkach na forum. Sumarycznie uważam go za lepszą alternatywę z wymienionych powodów, oczywiście może się ktoś z tym nie zgadzać.
-
Ponieważ sjload wymaga w stacji JD ...
Ufff... Jak dobrze, że nie mam stacji, w takim razie.
-
Bardzo źle. Nie obejrzysz tysięcy porządnych dem dyskowych, czy nie zagrasz w gry dyskowe bez ich przeróbek. Error 23 91% działa na sd2iec. Poza tym jeżeli Twój produkt miałby iść do ludzi, to już poważnie rzutuje na jego funkcjonalność, a i może kiedyś Ty będziesz posiadaczem stacji i zobaczysz jak bardzo brakuje Ci jej obsługi...
-
Nie mniej jednak taki składak cudzych źródeł to może być ciekawostka która podbije rynek emulatorów protokołu IEC.
Jeszcze jak autor opublikuje źródła dla ludu to można się spodziewać wielkiego odzewu graczy i entuzjastów sztuki komputerowej.
-
Bardzo źle. Nie obejrzysz tysięcy porządnych dem dyskowych, czy nie zagrasz w gry dyskowe bez ich przeróbek. Error 23 91% działa na sd2iec. Poza tym jeżeli Twój produkt miałby iść do ludzi, to już poważnie rzutuje na jego funkcjonalność, a i może kiedyś Ty będziesz posiadaczem stacji i zobaczysz jak bardzo brakuje Ci jej obsługi...
Heh, widzę że tu wszyscy wietrzą interes. Ale wracając do tego, co mówisz - prawda. Tyle że dla zwykłej stacji mój kernal będzie bezużyteczny, bo jedynym celem tego, co robię, jest ułatwienie poruszania się po drzewku katalogów, a te występują chyba tylko w "emulatorach iec".
Jeszcze jak autor opublikuje źródła dla ludu to można się spodziewać wielkiego odzewu graczy i entuzjastów sztuki komputerowej.
Aaaach, już widzę te flame warsy, w których komodorowcy, tak jak niegdyś linuksiarze, szpanują windowsowcom: "a ja mogę sobie przekompilować KERNAL, a ty nie!"
-
bo jedynym celem tego, co robię, jest ułatwienie poruszania się po drzewku katalogów
jedni po prostu uzywaja istniejacych przegladarek, inni robia modyfikacje kernala ktora, nie bedzie dzialala z real hw - dobrze rozumiem?
-
Jakby tak wstawić kebab monitor zamiast basica to nawet fajne by było. Mało kompatybilne z istniejącym softem ale maszynka do robienia softu zamiast VICE i PC jest :)
-
bo jedynym celem tego, co robię, jest ułatwienie poruszania się po drzewku katalogów
jedni po prostu uzywaja istniejacych przegladarek, inni robia modyfikacje kernala ktora, nie bedzie dzialala z real hw - dobrze rozumiem?
Przeglądarka ma tę wadę, że trzeba ją załadować, no i zajmuje pamięć, choć pewnie są jakieś kartridże do tego, co?
Mało kompatybilne z istniejącym softem ale maszynka do robienia softu zamiast VICE i PC jest :)
A tak swoją drogą - dużo softu na c64 korzysta z funkcji ATN, EXP itp basica? Kojarzę, że Pirates! byli oskryptowani w basicu, ale mieli własną funkcję RND opartą na generatorze szumu, więc też by pewnie nie odczuli moich "poprawek".
Jakby tak wstawić kebab monitor zamiast basica to nawet fajne by było.
Czy "kebab monitor" to kolejny dowcip, bo google znajduje wzmiankę o nim tylko na tym forum...
-
kebab monitor - coś tam było reklamowane w kebabie. Piszesz demo ? "DE-MON ci pomoże..." i takie tam
-
kebabmon używam do zabawy z real hardware każdy kart powstał za jego pomocą.
Pirates akurat to pierwszy przykład który cały jest w basicu jak dobrze pamiętam.
-
Jeszcze taki inny pomysł może napisz zamiast interpreter to kompilator basica, tak aby programy w basicu były szybsze. To będzie prawdziwy hit na c64.
-
Jeszcze taki inny pomysł może napisz zamiast interpreter to kompilator basica, tak aby programy w basicu były szybsze. To będzie prawdziwy hit na c64.
Natychmiast po otrzymaniu przedpłaty biorę się do kodowania. Prześlę Ci nr konta na priv.
Ale powiem szczerze, że takiemu kompilatorowi Action! na C64 nie powiedziałbym "nie"...
-
nie bądź jak Szwajcaria walcz o finał :)
-
W skrócie - robię własnego kernala...
patrz że dokładnie z tym się zmagam już od kilku lat (tzn jeśli chodzi o transmisję jednostronną) i powiem - nie jest lekko. Wszystko przeszkadza, ale jeszcze się nie poddałem.
Co do Jiffydos
@Wegi bo tylko ten "loader" zapewnia obsługę transmisji w obie strony co do bajtu na każdym kanale i na każdym podłączonym urządzeniu (kompatiblny ze standardowym protokołem).
Nie sztuką jest coś szybko wgrać, sztuką jest zatrzymać wgrywanie w dowolnym momencie, przejść na inne urządzenie/kanał/ścieżkę, wysyłać coś, odebrać, a potem wrócić i kontynuować proces, i do tego mieć dostępny kanał komend/błędów, żeby mieć nad tym wszystkim kontrolę. Bo wtedy to jest jest system, a nie "wgrywaczka" - i niestety SD2IEC w ten sposób nic innego nie obsługuje - albo standardowa transmisja, albo Jiffy - reszta supportu to tylko jako loader.
-
no borykałem się z tym problemem kanałów jak robiłem obsługę HD/CF w c64+
działa to na poziomie dwóch kanałow I/O oraz kanał błędów.... ale co siem napierdolił to moje :)
-
kebab monitor - coś tam było reklamowane w kebabie. Piszesz demo ? "DE-MON ci pomoże..." i takie tam
Sorry za off topic ale czy ktoś ma kopię tego monitora? Niestety na csdb tego nie ma :(
-
Po kebabie tylko sebalozowi... http://elysium.filety.pl/tools/programming/monitors/
-
Dzięki. Czyli tak naprawdę to Master Mon i ten jest na csdb. Nie sprawdziłem tylko czy te wersje są takie same.