załączony przykład zaincjowany jest xDOS-em, aby przejść na xBootDos-a trzeba uruchomić 'makedisk_xboot.bat' i wtedy uruchomić 'example.atr'

oczywiście musi być aktywne VBXE aby zobaczyć właściwy efekt

kolejny przykład, gdzie xBootDos nie zadziała

xDOS działa, pewnie dlatego że pochodzi z czasów kompatybilności ;) w końcu rok powstania 2002 zobowiązuje

S_VBXE.SYS jest handlerem urządzenia S2: (VBXE) dla SDX autorstwa Drac030

program SDXDL (ładowany od adresu $8000) pozwala na załadowanie SYS-a bez udziału SDX, pod każdym innym DOS-em

co robi SDXDL? otwiera do odczytu konkretnie plik D:S_VBXE.SYS i relokuje go w pamięci od MEMLO, na końcu podnosząc MEMLO

w załączonym przykładzie TEST.PAS, na początku wykonuję akrobację pt. ustaw MEMLO na $980, wykonaj skok (JSR) do SDXDL, w efekcie otrzymujemy handler S2: dla VBXE od adresu $0980 .. $0c0c, reszta dla nas

idea jest prosta, skorzystaj z VBXE bez konieczności używania SDX, ale jeśli masz SDX to też korzystaj (wtedy fragment akrobatyczny nie jest potrzebny)

p.s.
przy starcie systemu MEMLO = $0700, ani xDOS, ani xBootDOS nie ustawiają MEMLO, prawdziwe DOSy to robią, bez podniesienia MEMLO grozi im że zostaną nadpisane przez programy relokujące się

gratuluję :) teraz działa

DOS-y charakteryzuje adres $0700, co wykorzystuje wiele programów napisanych w przeszłości

pod adresem $0480 często umieszczane były dekompresory, strona 6, $0600..$06FF uznawana jest za wolną, często wykorzystywana przez użytkowników aby umieścić tam krótki program np. inicjalizacji danych albo wstawkę kodu maszynowego dla BASIC-a

przykład działania xBootDOS-a (ten sam program przykładowy jak dla xDOS-a)

program który działa z xDOS-em i każdym DOS-em, nie działa z xBootDOS-em

https://github.com/pfusik/numen/blob/master/dos.asx

Tyle lat przeleżał (2002) ten loader / handler D: u Fox-a na GitHub-ie, ileż zdrowia i nerwów mógł już uratować :)

- instaluje urządzenie D: jak każdy inny DOS Atari
- przy starcie wczytuje plik uruchamialny o nazwie AUTORUN
- obsługuje standardowy system plików DOS 2
- obsługiwany rozmiar sektora (128 lub 256 bajtów) jest ustalany na etapie kompilacji xDOSa
- xDOS umożliwia odczyt pliku przez D:
- jednocześnie można czytać tylko jeden plik, ale może on być dowolnej długości
- xDOS umożliwia nadpisanie istniejącego pliku mieszczącego się w jednym sektorze
- inne operacje, jak odczyt katalogu, kasowanie, zmiana nazwy itd. nie są obsługiwane
- xDOS mieści się w całości w sektorach odczytu wstępnego (boot sectors)
- xDOS nie ustawia MEMLO, ale zajmuje tylko obszar pamięci $0700..$097F
- xDOS nie wyłącza ROM-u podczas transmisji

Bez jakichkolwiek większych modyfikacji zdatny do użycia. Po uruchomieniu naszego AUTORUN-a dalsze operacje IO odbywają się normalnie, przykład z załącznika ładuje dwa kolejne pliki z grafiką MIC, PIC (slideshow.pas).


Sposób na przygotowanie dyskietki (sektor 256B), ściągamy program dir2atr

https://www.horus.com/~hias/atari/#tools-win32

Przygotowujemy nasz katalog roboczy, do którego wrzucamy 'xDos.obx', tworzymy podkatalog 'DISK', tworzymy BAT-a

dir2atr.exe -md -B xdos.obx example.atr disk

-m to format dla MyDos-a
-d to gęstość D, czyli 256B na sektor
-B twórz botowalną dyskietkę zaincjowaną plikiem xdos.obx
example.atr to nazwa nowo utworzonego ATR-a
disk to nazwa podkatalogu w którym znajdują się wszystkie pliki jakie chcemy wrzucić do naszego ATR-a

p.s.
jeśli dodać kod wyłączający / włączający ROM tak aby ładować plik bezpośrednio pod ROM wówczas xDOS przestanie być kompatybilny z DOS-ami

307

(53 odpowiedzi, napisanych Fabryka - 8bit)

całuski dla całej bandy DLT :)

308

(58 odpowiedzi, napisanych Programowanie - 8 bit)

Bocianu udostępnił sporo ciekawych materiałów na swojej stronie http://bocianu.atari.pl/dokumenty

309

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

Dalton, wczytujesz do pamięci, czekasz aż się rozpakuje a potem zapisujesz zrzut pamięci, od adresu do adresu, poprawiasz, pakujesz

310

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

ale jak zakupiłeś? pod stołem ?

311

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

no ale Ty Pin masz szumy w uszach, jak chcesz coś usłyszeć ?

312

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

XXL przetestuj czasy ładowania skompresowanych danych dla aPLib ale używającego strony zerowej, jakie będą różnice względem Twojej natywnej wersji nie używającej strony zerowej

313

(28 odpowiedzi, napisanych Programowanie - 8 bit)

albo zabezpieczenie przed modyfikacjami, po patchu Voy-a suma kontrolna nie będzie się zgadzać i nie wczytacie

czytajcie między wierszami ;)

314

(15 odpowiedzi, napisanych Programowanie - 8 bit)

do paczki z mads-em dołączone są różne dekompresory

tutaj w załączniku dwie wersje dekompresji strumieniowej dla exomizera (ACME albo coś podobnego)

p.s.
Subsizer potrafi też pakować lepiej niż aPLib

315

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

dodatkowych żyć za punkty nie ma

316

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

1. panglight - wyspa              PangLight_G2F_Powrooz
2. winter - antarktyda            PangWinter_G2F_Powrooz
3. park - brazylia                   PangPark_Vers2
4. shrine -panama, yucatan    PangShrine_G2F_Powrooz_2Final
5. most v3 - hiszpania            PangMostVer3Clean
6. lions - afryka                     PangLions_G2F_Powrooz
7. atlas - grecja                     PangAtlas_G2F_Powrooz
8. mansion - pn anglia           PangMansion_G2F_Powrooz
9. street - rosja                     PangStreet_G2F_Powrooz
10. caves - indie                    PangCaves_G2F_Powrooz
11. japan - japonia                PangJapanVers2
12. city - australia                 PangCityVers2AA

317

(30 odpowiedzi, napisanych Programowanie - 8 bit)

uuuu, playerek za dobry jest żeby go od razu upubliczniać ;)

318

(30 odpowiedzi, napisanych Programowanie - 8 bit)

tak, dzięki :)

319

(30 odpowiedzi, napisanych Programowanie - 8 bit)

gra pięknie :)

szukałem informacji na temat Puma Tracker-a, samego programu nie namierzyłem, tylko moduły z kilku gier m.in. Toki
z informacji wynika że tracker był wykorzystywany w komercyjnych produkcjach firmy OCEAN, w grach

gdyby był dostęp do tego tracker-a, może byłaby możliwość tworzenia nowych modułów, nowe narzędzie dla scenowych muzyków

320

(141 odpowiedzi, napisanych Programowanie - 8 bit)

swiety, udostępnisz jakiś teaser playerków ? :)

321

(31 odpowiedzi, napisanych Fabryka - 8bit)

uprasza się o pilne zebranie synodu inkwizycyjnego w celu zbadania świętości tego rozwiązania ;)

322

(17 odpowiedzi, napisanych Programowanie - 8 bit)

robiłem też inne testy, i wyszło że zwykła pętla kopiująca musiałaby minimum po 4 bajty na raz kopiować aby prawie dorównać temu kodowi z cc65, w tym stylu

 lda (src),y
 sta (dst),y
 iny
 lda (src),y
 sta (dst),y
 iny
 lda (src),y
 sta (dst),y
 iny
 lda (src),y
 sta (dst),y
 iny

323

(17 odpowiedzi, napisanych Programowanie - 8 bit)

kod memcpy CC65 jest mocno optymalizowany, korzystam z niego w MP (MadPascal)

; Ullrich von Bassewitz, 2003-08-20
; Performance increase (about 20%) by
; Christian Krueger, 2009-09-13

.proc    @moveu            ; assert Y = 0

ptr1    = edx
ptr2    = ecx
ptr3    = eax

    stx @sp

    ldy    #0

    ldx     ptr3+1        ; Get high byte of n
    beq     L2        ; Jump if zero

L1:     .rept 2            ; Unroll this a bit to make it faster...
    lda     (ptr1),Y    ; copy a byte
    sta     (ptr2),Y
    iny
    .endr

    bne     L1
    inc     ptr1+1
    inc     ptr2+1
    dex            ; Next 256 byte block
    bne    L1        ; Repeat if any

    ; the following section could be 10% faster if we were able to copy
    ; back to front - unfortunately we are forced to copy strict from
    ; low to high since this function is also used for
    ; memmove and blocks could be overlapping!
    ; {
L2:                ; assert Y = 0
    ldx     ptr3        ; Get the low byte of n
    beq     done        ; something to copy

L3:     lda     (ptr1),Y    ; copy a byte
    sta     (ptr2),Y
    iny
    dex
    bne     L3

    ; }

done    ldx #0
@sp    equ *-1
    rts
.endp


@move    .proc (.word ptr1, ptr2, ptr3) .var

ptr1    = edx
ptr2    = ecx
ptr3    = eax

src    = ptr1
dst    = ptr2
cnt    = ptr3

    cpw ptr2 ptr1
    scs
    jmp @moveu

    stx @sp

; Copy downwards. Adjust the pointers to the end of the memory regions.

    lda     ptr1+1
    add     ptr3+1
    sta     ptr1+1

    lda     ptr2+1
    add     ptr3+1
    sta     ptr2+1

; handle fractions of a page size first

    ldy     ptr3        ; count, low byte
    bne     @entry        ; something to copy?
    beq     PageSizeCopy    ; here like bra...

@copyByte:
    lda     (ptr1),y
    sta     (ptr2),y
@entry:
    dey
    bne     @copyByte
    lda     (ptr1),y    ; copy remaining byte
    sta     (ptr2),y

PageSizeCopy:            ; assert Y = 0
    ldx     ptr3+1        ; number of pages
    beq     done        ; none? -> done

@initBase:
    dec     ptr1+1        ; adjust base...
    dec     ptr2+1
    dey            ; in entry case: 0 -> FF
    lda     (ptr1),y    ; need to copy this 'intro byte'
    sta     (ptr2),y    ; to 'land' later on Y=0! (as a result of the '.repeat'-block!)
    dey            ; FF ->FE
@copyBytes:
    .rept 2            ; Unroll this a bit to make it faster...
    lda     (ptr1),y
    sta     (ptr2),y
    dey
    .endr
@copyEntry:            ; in entry case: 0 -> FF
    bne     @copyBytes
    lda     (ptr1),y    ; Y = 0, copy last byte
    sta     (ptr2),y
    dex            ; one page to copy less
    bne     @initBase    ; still a page to copy?

done    ldx #0
@sp    equ *-1
    rts
.endp

może tak

325

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

ten rozpakuje ARC-a

http://www.izarc.org