najprosciej
org $d3x1
.byte bank
org $4000
dane
Żeby być ścisłym:
org %11010011xxxxxx01
.byte bank
org $4000
dane:P
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
HDDRIVER 12.73 Najnowsza wersja sterownika dysków HDDRIVER 12.73 z ulepszeniami i poprawkami.
ABBUC SWC 2025: wszystkie linki do gier Zebraliśmy wszystkie dostępne linki do gier z konkursu ABBUC Software Contest 2025! Zagraj i oceń.
RastaConverter Beta 20 RastaConverter, popularny konwerter grafiki dla Atari, otrzymał aktualizację Beta 20 z nowymi opcjami linii komend i poprawkami.
Test7800 0.7.2 Nowa wersja eksperymentalnego emulatora Atari 7800, Test7800, wprowadza poprawki w emulacji procesora 6502.
Rogul dla Atari STE, kolejne wieści Twórcy gry Rogul na Atari ST/STE udostępnili pierwszy film prezentujący działający gameplay na nowej platformie!
atari.area forum » Posty przez mono
najprosciej
org $d3x1
.byte bank
org $4000
dane
Żeby być ścisłym:
org %11010011xxxxxx01
.byte bank
org $4000
dane:P
Atariki http://atariki.krap.pl/index.php/Binarny_plik_DOSu mówi, że to cecha DOS XL i SpartaDOS (X siłą rzeczy też).
Edit: Czyli może to pomysł ICD?
Odradzam bezpośrednie adresowanie PORTB za pomocą bloku pliku, bo:
1. Nie masz pewności czy loader nie jest pod romem/w extramie (dowolny loader/sdx/dos/xbios).
2. Nie wiadomo czy nie manipuluje extramem.
3. Nie wiesz jakie jest zainstalowane rozszerzenie (PORTB/Axlon/VBXE).
Polecałbym:
1. Detekcję rodzaju pamięci i dostępnych banków.
2. Ładowanie danych do pamięci.
3. Przepisywanie pamięci w miejsce docelowe w bloku init.
@pin: Dodatek zawsze możesz wyrwać :)
@xxl: Czy będzie tam omówienie idei stojących za xBIOSem czy analogicznie jak w przypadku opisu nielegali - opis funkcji z przykładami użycia? Może dodałbyś tam coś więcej niż jest na stronie?
Na pewno? Pamiętam, że DOS 2.5 z CP (od Chaosa) nie uruchamiał programu kiedy nie było w nim bloku RUN ($2E0).
Edit: Czy odpalanie programu bez RUN to nie jest pomysł DOS XL?
Już wiesz, ale dla potomności:
blk dos $2000
...
run $480
ini $2000
blk sparta $480
jmp entry
blk reloc main
entry:
...I taka sztuczka załatwia sprawę, bo SDX faktycznie jeśli nie ma bloku RUN próbuje odpalić program od pierwszego załadowanego bloku (to pewnie jakaś zgodność z innymi DOS-ami).
Po bloku nierelokowalnym testującym DOS-a brakuje bloku init:
DOSVEC = $a
blk dos $2000 /* że niby tak kulturalnie niezależnie od MEMLO */
lda $0700 /* word $0700 == "SD"
cmp #'S'
bne no_sdx
rts
no_sdx /* (... procedura wyświetlająca komunikat graficzny ...) */
jmp (DOSVEC)
ini $2000
blk reloc mainProponuję też po wyświetleniu komunikatu o braku SDX wrócić do systemu przez DOSVEC.
Edit: I dość elegancko będzie blok nierelokowalny rozpocząć przez BLK DOS zamiast ORG.
Taki kod:
blk reloc main
table:
?first .word 0
?last .word 0
table2:
.byte [table.?last-table.?first]/4generuje mi: "address relocation overload" !
Oficjalna dokumentacja (w historii) mówi: "błąd 'Addres relocation overload' wystąpi teraz tylko gdy wyrażenie będzie dotyczyć więcej niż jednej etykiety relokowalnej, poprzednio każde wyrażenie z udziałem etykiety relokowalnej powodowało wyświetlenie tego komunikatu błędu".
Ale jaki jest właściwie problem z etykietami relokowalnymi _w_jednym_bloku_? Bo ja rozumiem, gdybyśmy mieli etykietki w róznych blokach - wtedy nie wiadomo jaki będzie między nimi dystans, ale w przypadku jednego bloku wszystko przecież wiadomo...
Dałoby się to naprawić?
Edit: A druga choć związana z poprzednim przypadkiem rzecz jest taka - podobny kod;
blk reloc main
table:
?first .word 0
?last .word 0
?len = [?last-?first]/4
table2:
.byte table.?lensię kompiluje poprawnie, ale markuje table2 jako _adres_ do relokacji. A to już jest bardzo nieładne, bo:
1. w table2 mam bajt, a loader SDX zmodyfikuje mi tam 2 bajty,
2. table.?len jest jednak interwałem, który da się określić na etapie kompilacji i on się nie zmieni - nie powinien być relokowalny.
Kod wynikowy wygląda tak:
fe ff 01 00 00 00 05 00
00 00 00 00 00
fd ff 01 00 00
fe 01
04
fcEdit2: Co myślałbyś o:
1. generowaniu "Addres relocation overload" tylko przy obliczeniach używających etykiet leżących w różnych blokach relokowalnych,
2. rzucaniu warninga kiedy do obliczeń używane są etykiety relokowalne - user ma być świadom tego co robi, a jak user sobie chce zaszkodzić, to niech sobie szkodzi :)
Były też użyte w playerze do CMC. Wszystko działało dopóki ludzie nie pomontowali sobie dodatkowych POKEY-ów...
Orzeł wylądował! Książka super! Dzięki Duddie.
@MWK: Się zrobi!
A ogólnie to wypadałoby się spotkać :) Wiosna przyszła...
Ja poproszę sztukę.
Racja. Czyli mamy Rambo, CompyShop i częściowy CompyShop :).
Nazewnictwo, nazewnictwem ale bity adresujące banki są inne. Masz więc niby RAMBO (wg Twojej nomenklatury), które używa innych bitów (jak CompyShop). Wniosek stąd, że standardy standardami a rzeczywistość i tak bywa zaskakująca.
@koala: Zrób tę detekcję do cholery i będziesz miał problem z głowy :)
Zasugerowałbym rozważenie jakie urządzenia mogłyby być używane naraz na magistrali SIO, żeby nie okazało się że na wysłane polecenie jedno odpowiada NAK, a drugie ACK, bo na magistrali będzie miszmasz? Polecenie nieobsługiwane nie powinno odsyłać żadnego statusu, wtedy jest szansa że inne urządzenie odpowie (choć to złamanie założeń protokołu). Celem zapobieżenia konfliktów niektóre urządzenia (disk drive) mają swoje numery - może powinno to pójść w tą stronę?
Edit: ort
Pin chyba rzadko używa rdzeni R, bo ma w kompie gigamega ramu z U1MB.
Jeśli używasz rdzenia VBXE FX w wersji R, bo taki emuluje zachowanie rozszerzenia RAMBO, to wtedy górna połowa VRAM VBXE dostępna jest przez PORTB. I nie musisz manipulować rejestrami VBXE żeby się do tego dostać - wystarczy PORTB. Nawet nie musisz wiedzieć że w banku podstawiana jest VRAM. Niczego nie trzeba tu konfigurować w VBXE (prócz oczywiście odpowiedniego rdzenia).
Jeśli używasz rdzenia FX w wersji A, wtedy emulacji PORTB przez VBXE nie ma i chcąc mieć dostęp do pamięci VBXE musisz używać rejestrów VBXE i okien MEMACA lub MEMACB.
W VBXE masz 2 banki - stały MEMACB leżący dokładnie w miejscu banku PORTB i MEMACA, którego położenie i wielkość możesz konfigurować.
Ja poprosiłbym SID-y.
@Montezuma: Czy mógłbym Cię prosić o aktualizację Atariki w punkcie http://atariki.krap.pl/index.php/SIO i odpowiednio http://atariki.krap.pl/index.php/Lista_ … ug_funkcji i http://atariki.krap.pl/index.php/Lista_ … eracyjnych ?
Supeł. Czekam z niecierpliwością.
@xxl: Elegancja. A będzie jakaś specyfikacja jak z tym rozmawiać?
No, no, no... Ładnie to wygląda. A IRC-a obsługuje? :>
Doskonale! Można liczyć na jakiś zwięzły opis funkcjonalności finalnej wersji?
atari.area forum » Posty przez mono
Wygenerowano w 1.460 sekund, wykonano 95 zapytań