1

Temat: Banalne pytanie - programowe wyłączenie BASICA?

Potrzebuj mieć możliwość programowego wyłączenia BASICA (Atari BASICA).  Przypuszczam, że potrzeba się dostać do $D301 (port B), według opisu w Atariki wygenerowałem kod:

opt %0110110
     org $610
     lda #$fe
     sta $d301
     lda #3
     sta $d301
     rts

Próbowałem zarówno z pierwszą wartością $FF, jak i bezpośrednio tylko z 3 - i nic z tego.  Potem potrzebuję załadować dalszą część programu - ktoś mnie oświeci, w czym tkwi błąd?

Sikor umarł...

2

Odp: Banalne pytanie - programowe wyłączenie BASICA?

A gdzie w Atariki jest napisane coś, co mogłoby zostać tak zrozumiane? Skąd wziąłeś "3"?

Powinno być lda #$fd sta $d301.

KMK
? HEX$(6670358)

3

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Sikor napisał/a:

wyłączenia BASICA

drac030 napisał/a:

Powinno być lda #$fd sta $d301.


lepiej $ff

jesli to ma byc podczas ladowania to zrob na poczatku programu tak:

org portb
.byte $ff

i po sprawie

http://atari.pl/hsc/ad.php?i=1.

4

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Racja, pomyliło mi się z włączeniem. $FF zamiast $FD.

KMK
? HEX$(6670358)

5

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Hmm, nie działa - przynajmniej pod emulcem... Jak daję FF (czyli wartość domyślna) - nic się nie zmienia, basic cały czas dostępny. Wersja XXL-a zawiesza mi QAsm-a, muszę madsa odgrzebać...
Dobra, chyba jest o.k. - tylko jak XXL wskazał org musiałem na $d301 ustawić. Dzięki - jakby co, dam znać.

Ostatnio edytowany przez Sikor (2014-01-06 17:20:28)

Sikor umarł...

6

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Dobra, Basic niby wyłącza - dalej wczytuje się skompilowany program w TB, siedzą sobie fonty pod $9C00, przy włączaniu bez BASICa o.k., przy wyłączeniu programowym BASICA - kicha, kaszanią się.

 opt %0110110
     org $d301
     lda #$ff
     sta $d301
     rts

Czyli - po odłączeniu BASICa nadal jakieś śmieci siedzą...
Trójkę wziąłem z opisu:

     bit 7: RAM w obszarze $5000-$57FF (1) lub SELF TEST tamże (0)
    bit 6: nieużywany
    bit 5: nieużywany
    bit 4: nieużywany
    bit 3: LED 2 (0 - świeci się)
    bit 2: LED 1 (0 - świeci się)
    bit 1: RAM w obszarze $A000-$BFFF (1) lub Atari BASIC tamże (0)
    bit 0: ROM systemu operacyjnego w obszarze $C000-$CFFF i $D800-$FFFF (1) lub RAM tamże (0) 

Wartością domyślną jest $FF. 

Poniżej info - że bit 7 uzależniony od bitu 0, stąd miałem 3.
Co do wersji XXL-a:

     opt %0110110
     org $d301
     dta b($ff)

Efekt ten sam.  Nie wczytuje się wtedy nawet Super Packer, więc nie jest to wina TB.

Ostatnio edytowany przez Sikor (2014-01-06 17:40:29)

Sikor umarł...

7

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Jakieś pomysły? Bo nie wiem, co dalej zrobić, aby działało. Skoro wywala teżinne programy - samo wyłączenie BASICa nie wystarcza, jak widać.

Sikor umarł...

8

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Sikor napisał/a:

org $d301
lda #$ff
sta $d301
rts

W ten sposób ładujesz do $d301 wartość $a9 (czy może $d3). Hint: w obszarze rejestrów I/O nie umieszczamy kodu.

Daj tak (składnia MAC/65)

    *=gdziekolwiek
init lda #$ff
    sta $d301
    rts

    *= $02e2
    .word init

A dalej własny program. Powinno zadziałać. BTW. dobrze byłoby jeszcze przestawić ramtop i zrobić gr.0, żeby przenieść pamięć obrazu, o ile jej używasz.

Ostatnio edytowany przez drac030 (2014-01-06 18:18:41)

KMK
? HEX$(6670358)

9

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Czyli w składni QAsma powinno być:

     opt %0110111
     org $600
init lda #$ff
     sta $d301
     rts
     
     org $02e2
     dta A(init)

Nadal to samo... Dobra, póki co przeniosę fonty i to pójdzie, ale muszę powalczyć na przyszłość. Dzięki.

Sikor umarł...

10

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Sikor napisał/a:

wczytuje się skompilowany program w TB, siedzą sobie fonty pod $9C00, przy włączaniu bez BASICa o.k., przy wyłączeniu programowym BASICA - kicha, kaszanią się.

Samo odłączenie wbudowanego BASICa nie powoduje magicznego przeniesienia Display Listy i ekranu tekstowego, które przy włączonym BASICu są odpowiednio od $9c20 i $9c40. Po odłączeniu BASICa podnieś RAMTOP i otwórz ponownie edytor:

init lda #$ff
 sta $d301
 lda #$c0
 sta ramtop
 lda #12
 jsr cio
 lda <edev
 sta $344
 lda >edev
 sta $345
 lda #12
 sta $34a
 lda #3
cio sta $342
 ldx #0
 jmp $e456
edev dta c'E:',b($9b)

Jest jeszcze zmienna OS, która pamięta, czy BASIC jest podłączony. Nazywa się chyba BASICF i jest używana przy RESET.

https://www.youtube.com/watch?v=jofNR_WkoCE

11

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Może się mylę, ale nie bardzo rozumiem potrzebę wyłączania Basica przy wczytywaniu programu napisanego w Turbo-Basic XL. Przecież TBXL sam sobie poradzi z wyłączeniem Atari Basica, bo sam korzysta z tej pamięci.

12

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Dzięki Fox, przyda się :)
@larek, wyszło przy testach Caveblaster+ - przy wczytywaniu bez AB -wszystko o.k., przy wczytywaniu z AB - wywalał się font. Zaintrygowało mnie to - stąd testy z wyłączeniem AB w locie. Oczywiście, chodzi o program skompilowany. Celem moim jest wymuszenie takiej konfiguracji, jak byśmy włączyli komputer bez AB - samo wyłączenie AB na przykład nie pozwala na uruchomienie Super Packera. Stąd moje próby i ciekawość.

Sikor umarł...

13

Odp: Banalne pytanie - programowe wyłączenie BASICA?

Można by kawałek kodu do RUNTIME2.EXE dołączyć i opublikować pacz w sumie (jeśli tak się sprawy mają)

Kontakt: pin@usdk.pl