C64Power Forum

Software => Programowanie => Wątek zaczęty przez: qus w 24 Czerwca 2016, 08:51

Tytuł: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana 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

Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 24 Czerwca 2016, 10:10
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 24 Czerwca 2016, 10:17
A myślisz, że skąd wiem, gdzie się zapętla? :D
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 24 Czerwca 2016, 10:24
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
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 24 Czerwca 2016, 10:33
no to załóż break pointa na orginale.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 24 Czerwca 2016, 11:03
tylko jak ją ominąć i zrobić to szybciej.

Do LOAD akurat wykorzystam kod ze sjLOAD
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 24 Czerwca 2016, 11:06
Jak ja rozumiem to musisz mieć JD w stacji.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Raf w 24 Czerwca 2016, 11:10
nie musisz, mozesz
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 24 Czerwca 2016, 13:07
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Raf w 24 Czerwca 2016, 14:08
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 24 Czerwca 2016, 15:54
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...
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 24 Czerwca 2016, 19:48
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.

Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 24 Czerwca 2016, 21:08
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 24 Czerwca 2016, 21:15
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 ?
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Raf w 25 Czerwca 2016, 00:49
a czy sjload to emulator?
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 00:55
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 25 Czerwca 2016, 08:25
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?
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 25 Czerwca 2016, 08:54
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 25 Czerwca 2016, 09:08
Ten exos jest w czymś lepszy od jiffy albo jd? Przyspiesza też zapis? Jest gdzieś do niego kod?
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 09:13
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 25 Czerwca 2016, 09:36
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ć.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 25 Czerwca 2016, 10:16
Ponieważ sjload wymaga w stacji JD ...

Ufff... Jak dobrze, że nie mam stacji, w takim razie.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 25 Czerwca 2016, 10:30
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...
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 12:16
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 25 Czerwca 2016, 12:54
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!"
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Raf w 25 Czerwca 2016, 13:44
Cytuj
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?
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 14:16
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 :)
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 25 Czerwca 2016, 15:29
Cytuj
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...
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: wegi w 25 Czerwca 2016, 16:38
kebab monitor - coś tam było reklamowane w kebabie. Piszesz demo ? "DE-MON ci pomoże..." i takie tam
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 16:51
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 25 Czerwca 2016, 18:13
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: qus w 26 Czerwca 2016, 09:43
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"...
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 26 Czerwca 2016, 09:58
nie bądź jak Szwajcaria walcz o finał :)
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Skull w 29 Czerwca 2016, 13:33
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.
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 29 Czerwca 2016, 17:02
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 :)
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: axa w 15 Stycznia 2017, 23:12
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 :(
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: Kisiel w 16 Stycznia 2017, 08:31
Po kebabie tylko sebalozowi... http://elysium.filety.pl/tools/programming/monitors/
Tytuł: Re: Ratunku!!! Jak działa stacja dysków?!
Wiadomość wysłana przez: axa w 16 Stycznia 2017, 09:14
Dzięki.  Czyli tak naprawdę to Master Mon i ten jest na csdb. Nie sprawdziłem tylko czy te wersje są takie same.