TBXL: Wczytanie danych do pamięci

From Atariki

Jump to: navigation, search

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