TBXL: Wczytanie danych do pamięci

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 16:10, 26 maj 2010
Sikor (Dyskusja | wkład)

← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)

Linia 1: Linia 1:
Poniżej znajdują się przykład dla wczytania dowolnych danych do swojego programu w TBXL. Sposób ten jest stosowany między innymi przez [[Sikor]]a. Poniżej znajdują się przykład dla wczytania dowolnych danych do swojego programu w TBXL. Sposób ten jest stosowany między innymi przez [[Sikor]]a.
- 
<pre> <pre>
-100 proc dane: REM w TBXL stosujemy procedury+100 PROC DANE:REM w TBXL stosujemy procedury
110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy nazwę naszych danych, 110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy nazwę naszych danych,
na przykład: '''D:MOJFONT.FNT''' na przykład: '''D:MOJFONT.FNT'''
Linia 16: Linia 15:
== Uwagi i podpowiedzi == == Uwagi i podpowiedzi ==
* Plik z fontami zajmuje dokładnie 1KB (1024 bajty). Jeśli wczytamy go na granicy 1KB - wtedy bez żadnych sztuczek możemy przełączyć zestaw znaków na nowy adres, podając tylko starszy bajt adresu (Na przykład poprzez '''POKE 756,$9C''' dla danych zestawu znaków wczytanych pod adres $9C00) * Plik z fontami zajmuje dokładnie 1KB (1024 bajty). Jeśli wczytamy go na granicy 1KB - wtedy bez żadnych sztuczek możemy przełączyć zestaw znaków na nowy adres, podając tylko starszy bajt adresu (Na przykład poprzez '''POKE 756,$9C''' dla danych zestawu znaków wczytanych pod adres $9C00)
-* Trzeba uważać, aby wczytane dane nie weszły nam na pamić ekranu lub kod programu, należy przy tym pamiętać, że kod skompilowany znajduje się pod innymi adresami niż kod interpretowany.+* Trzeba uważać, aby wczytane dane nie weszły na pamięć ekranu lub kod programu, należy przy tym pamiętać, że kod skompilowany znajduje się pod innymi adresami niż kod interpretowany. Przy wybieraniu wartości "adresu_gdzie_wczytujemy" trzeba pilnować, żeby znalazł się on między wartością wskazywaną przez wektor APPMHI ($0E-$0F), a wartością wskazywaną przez wektor MEMTOP ($02E5-$02E6). Dodatkową komplikacją jest fakt, że APPMHI zmienia się w trakcie działania programu (zwiększa go np. wejście do pętli FOR/NEXT, albo wykonanie GOSUB, zmniejsza - wyjście z pętli albo wykonanie RETURN).
== Zobacz też == == Zobacz też ==

Aktualna wersja

Poniżej znajdują się przykład dla wczytania dowolnych danych do swojego programu w TBXL. Sposób ten jest stosowany między innymi przez Sikora.

100 PROC DANE:REM w TBXL stosujemy procedury
110 OPEN #1,4,0,"D:NAZWA.EXT":REM pod nazwa.ext podstawiamy nazwę naszych danych,
na przykład: '''D:MOJFONT.FNT'''
120 BGET #1,$adres_gdzie_wczytujemy,ilość_bajtow:REM $adres_gdzie_wczytujemy - gdzie wczytujemy dane, na przykład $9C00, 
ilość bajtów - jak wiele wczytujemy
130 CLOSE #1:REM pamiętamy o zamknięciu kanału IOCB
140 ENDPROC:REM procedura powinna mieć swoje zakończenie
  • Alternatywną metodą jest nadanie danym nagłówków z adresami (na przykład przy pomocy Super Packera) i zapisanie takich danych do pliku (można na raz korzystać z wielu bloków połączonych w jeden plik). Tak przygotowane dane wczytujemy instrukcją jak dla plików binarnych: BLOAD"D:NAZWA.EXT" - gdzie NAZWA.EXT jest analogiczna jak w powyższym przykładzie.

Uwagi i podpowiedzi

  • Plik z fontami zajmuje dokładnie 1KB (1024 bajty). Jeśli wczytamy go na granicy 1KB - wtedy bez żadnych sztuczek możemy przełączyć zestaw znaków na nowy adres, podając tylko starszy bajt adresu (Na przykład poprzez POKE 756,$9C dla danych zestawu znaków wczytanych pod adres $9C00)
  • Trzeba uważać, aby wczytane dane nie weszły na pamięć ekranu lub kod programu, należy przy tym pamiętać, że kod skompilowany znajduje się pod innymi adresami niż kod interpretowany. Przy wybieraniu wartości "adresu_gdzie_wczytujemy" trzeba pilnować, żeby znalazł się on między wartością wskazywaną przez wektor APPMHI ($0E-$0F), a wartością wskazywaną przez wektor MEMTOP ($02E5-$02E6). Dodatkową komplikacją jest fakt, że APPMHI zmienia się w trakcie działania programu (zwiększa go np. wejście do pętli FOR/NEXT, albo wykonanie GOSUB, zmniejsza - wyjście z pętli albo wykonanie RETURN).

Zobacz też

Personal tools