Autor Wątek: Pierwsze kroki w Pasmo  (Przeczytany 106811 razy)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Pierwsze kroki w Pasmo
« dnia: 2015.04.12, 21:55:31 »
Mam parę drobnych programów do napisania i znudziło mi się pisanie tego na piechotę.

Wybór padł na zachwalane pasmo. Udało się pobrać wersje 052.

W notatniku napisałem parę prostych rozkazów dla testów, zapisałem jako .asm.
Uruchomiłem  pasmo x.asm x.bin, i o dziwo  wygenerował mi plik x.bin.

Tylko co dalej można z tym zrobić ?
Żaden emulator tego nie akceptuje.
Nie udało mi się uruchomić z parametrem --tap aby wygenerował odpowiedni plik.

Liczę na pomoc mistrzów assemblera w tak trywialnej sprawie.

Jak powinien być prawidłowo zbudowany plik do asemblacji ?
Jak uzyskać plik TAP ?






 
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #1 dnia: 2015.04.12, 22:11:20 »
Rozwiązaniem problemu jest:

Cytuj
pasmo --tapbas x.asm x.tap

jeżeli na końcu źródła będzie linijka:
Cytuj
end adres_startowy

wtedy pasmo wygeneruje loader basicowy wraz z RANDOMIZE USR adres_startowy.

Przykład:
Cytuj
   org 32768
   out (254),a
   ret
end 32768

To samo, tylko z labelem:
Cytuj
   org 32768
start:
   out (254),a
   ret
end start

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #2 dnia: 2015.04.12, 22:16:23 »
Dzięki za szybką odpowiedź, jutro potestuje.

Zdaje mi się że w pliku zródłowym musi być na początku np. org 32768
i coś na końcu ?


A swoją drogą przydałaby się jakaś krótka instrukcja po polsku dla początkujących.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #3 dnia: 2015.04.12, 22:21:26 »
Dodałem przykład z 'end' w moim poprzednim poście.
Pasmo dla początkujących - będzie w jednym z artykułów, które mam nadzieję do wakacji się ukażą.

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #4 dnia: 2015.04.12, 22:23:43 »
Faktycznie, w przykładach to jest.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #5 dnia: 2015.04.13, 11:21:48 »
Zrobiłem kilka prób z takim wywołaniem:

pasmo -tapbas p1.asm p1.tap

kod wynikowy, w czesci code ma długość 2 bajty i nie odzwierciedla tego co wpisałem do pliku p1.asm,
deasemblacje zrobiłem w programie SCADM.

Twoje przykłady, również dają ten sam efekt.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #6 dnia: 2015.04.13, 11:54:25 »
Dodaj opcję -d, a będziesz widział listing wygenerowanego kodu wraz z adresami pamięci.

przykład:
Cytuj
$ pasmo -d --tapbas tdu.asm tdu.tap
                ORG 8000
8000:D3FE       OUT (FE), A
8002:C9         RET
8003:           END 8000
Emiting TAP basic loader
Emiting TAP from 8000 to 8002

przy czym od $8000 do $8002 to są 3 bajty ($8000, ...1, ...2)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #7 dnia: 2015.04.13, 15:57:45 »
Do pliku .asm wpisałem Twój pierwszy przykład.

Po uruchomieniu   pasmo -d --tapbas p1.asm p1.tap

jest komunikat

ORG FFFF
Emiting TAP basic loader
Emiting TAP fromm FFF to 0000

i czesc code w TAP ma 2 bajty (2 zera)
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #8 dnia: 2015.04.13, 16:12:10 »
Hm.. ORG $FFFF ?

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #9 dnia: 2015.04.13, 17:19:28 »
W pliku asm jest to:

   org 32768
   out (254),a
   ret
   end 32768

komunikaty pasma, na obrazku
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #10 dnia: 2015.04.13, 17:42:13 »
A takie coś działa:

org 50000
ld a,255
ld (16384),a
ret
end 50000
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #11 dnia: 2015.04.13, 20:36:38 »
Taki sam efekt uzyskałem:
Cytuj
$ pasmo -d --tapbas p1.asm p1.tap
                ORG 8000
Emiting TAP basic loader
Emiting TAP from FFFF to 0000

kiedy plik p1.asm zawiera jedynie dyrektywe ORG:
Cytuj
$ cat p1.asm
   org 32768

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #12 dnia: 2015.04.13, 20:50:22 »
A po co przed pasmo jest znak $
u mnie wtedy wywala błąd.

 
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4538
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #13 dnia: 2015.04.13, 20:51:51 »
'$' to 'znak zachęty'. Zrobiłem copy&paste z konsoli tekstowej.

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Pierwsze kroki w Pasmo
« Odpowiedź #14 dnia: 2015.04.14, 12:15:21 »
Parę różnych przykładów wklepałem i cały czas mam znowu
asemblację od FFFF do 0000, czyli 2 bajty

np. tutaj:

org 50000

ld hl,22528
ld a,0
loop1 ld (hl),a
         inc hl ;zwieksz
         inc a      ;zwieksz
         cp 32      ;porownuje akumulator z liczba 32
         jp nz,loop1   ;jesli flaga zero skasowana wykonaj skok do loop1
         ret

end 50000

Gdzie jest błąd ?
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235