Welcome, Guest. Please login or register.


Author Topic: Sjasm fejlesztése (Read 9891 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #15 on: 2019.April.05. 23:05:11 »
Talán van valami, ami még megoldható.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #16 on: 2019.April.05. 23:37:12 »
Talán van valami, ami még megoldható.
HEADER 4, mint az ASMON-ban?
Első sornak berak egy megfelelő méretű ALLOCATE-t, aztán meg CODE =HEX$ sorokban a kód hexában.
Esetleg ha úgy egyszerűbb, akkor mehetne sima szöveges fájlba is, azt is betölti a Basic.

2-es, 7-es típus? Bár attól tartok itt gondot okoz az, hogy minden címkéről tudni kéne, hogy relatív vagy abszolút érték, ehhez valószínűleg alapjaiban kéne átalakítani a programot.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #17 on: 2019.April.06. 00:35:53 »
2-es, 7-es típus? Bár attól tartok itt gondot okoz az, hogy minden címkéről tudni kéne, hogy relatív vagy abszolút érték, ehhez valószínűleg alapjaiban kéne átalakítani a programot.

Ilyen célra valójában már készült program, hasonló trükk beépítése megoldhatónak tűnik, vagy legalábbis a "reloc" bemeneti formátumának az előállítása a fordítást kétszer futtatva a kimeneti file bezárása nélkül.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #18 on: 2019.April.06. 11:57:38 »
hasonló trükk beépítése megoldhatónak tűnik
Na ez nem lenne rossz!

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #19 on: 2019.April.06. 15:54:44 »
Beépítettem a HEADER 2, 4, és 7 támogatását, bár nem sokat teszteltem, mennyire megbízhatóan működnek. Egy egyszerű BASIC program és a régebbi dbasx.xr példa jónak tűnik. Ilyen modulokban nem használható ORG, OUTPUT, vagy FPOS, és BASIC kimenetnél áthelyezhető formátumot igénylő címek sem.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #20 on: 2019.April.06. 17:20:43 »
Köszi! :smt038

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #21 on: 2019.April.06. 18:11:31 »
Még egy kisebb változtatás: a második fordításnál a MODULE használatát a címkék törlésére cseréltem, így már lefordítható olyan forrás, amiben eredetileg is volt MODULE, például az IVIEW.EXT-ből sikerült áthelyezhető változatot készíteni (bár ilyen formátumban 15 másodpercnél tovább tart a betöltése :)).

A BASIC kimenetnél érdemesebb lenne-e 8 byte-ot tárolni egy sorban, az ASMON-hoz hasonlóan, vagy akár 16-ot? A jelenlegi 6 előnye, hogy elfér a képernyőn TEXT 40 módban, viszont a hosszabb sorokkal kisebb lehetne a .bas file. A CODE után a változó névre sem lenne szükség az első sor kivételével.
« Last Edit: 2019.April.06. 18:18:51 by IstvanV »

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #22 on: 2019.April.06. 18:42:26 »
Szerintem nyugodtan lehetnek hosszabb CODE sorok, ha olvasni akarjuk, arra ott az eredeti kód :-)

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #23 on: 2019.April.06. 19:18:56 »
és BASIC kimenetnél áthelyezhető formátumot igénylő címek sem.
Ez esetleg lekezelhető lenne, de lehet, hogy nagyon elbonyolítaná a kód fájlba írását :oops: Viszont lehetővé tenné bonyolultabb rutinok megírását is.
Az elv az, hogy az első CODE változó=HEX$-nél a változó már megkapja a kód kezdőcímét, amit már lehet eltoláshoz számolásához felhasználni, akár már ebben az első CODE-ban is. Csak a kiszámolt érték beillesztése hosszabb kifejezést igényel, mivel a CODE stringet vár.
Példa: CODE =HEX$("CD")&CHR$(MOD(A+100,256))&CHR$((A+100)/256)&HEX$(...

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #24 on: 2019.April.06. 19:24:36 »
Szerintem nyugodtan lehetnek hosszabb CODE sorok, ha olvasni akarjuk, arra ott az eredeti kód :-)

Módosítottam, 16 byte lehet egy sorban, és csak az első sorba kerül változónév.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #25 on: 2019.April.06. 19:53:01 »
Bonyolultabb rutinoknál talán használható lehetne a 2-es modul típus:
[ Guests cannot view attachments ]
Code: ZiLOG Z80 Assembler
  1.         header  4
  2. loadmodule:
  3.         halt
  4. .l1:    di
  5.         dec     sp
  6.         dec     sp
  7.         pop     bc
  8.         ei
  9.         ld      de, modbuf - .l1
  10.         ex      de, hl
  11.         add     hl, bc
  12.         ex      de, hl
  13.         push    de
  14.         ld      a, l
  15.         exos    1
  16.         pop     de
  17.         jr      nz, .l2
  18.         push    de
  19.         ld      a, l
  20.         exos    29
  21.         pop     de
  22.         xor     0eeh                    ; .ITYPE
  23.         jr      nz, .l2
  24.         inc     de
  25.         ld      a, (de)
  26.         xor     02h
  27.         jr      nz, .l2
  28.         inc     de
  29.         ld      a, (de)
  30.         inc     de
  31.         add     a, low (0ffffh - (modbufend - modbuf))
  32.         ld      a, (de)
  33.         adc     a, high (0ffffh - (modbufend - modbuf))
  34.         sbc     a, a
  35.         jr      nz, .l2
  36.         dec     de
  37.         dec     de
  38.         dec     de
  39.         ld      a, l
  40.         exos    30
  41. .l2:    ld      h, a
  42.         ld      a, l
  43.         ld      l, h
  44.         exos    3
  45.         ret
  46.  
  47. modbuf:
  48.         dbl     "demo.out"
  49. modbufend       equ     loadmodule + 512
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]     (szerk.: az ALLOCATE mérete helyesen 569 lenne az eredeti betöltőhöz)
[ Guests cannot view attachments ]    (ez ugyan nem a legjobb példa, mert nem EXOS kompatibilis, de egyébként a betöltése működik)
[ Guests cannot view attachments ]
« Last Edit: 2019.April.06. 19:56:06 by IstvanV »

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #26 on: 2019.April.06. 20:46:23 »
Bonyolultabb rutinoknál talán használható lehetne a 2-es modul típus:
Igen, végülis most már tudunk ilyet is csinálni :-) Érdemes lenne a Basic bővítéseknek is utánajárni (azok is 2-es modulban vannak), és akkor új utasításként/függvényként is lehetne rutinokat berakni. Pl lehetne GRACHA bővítőkészlet a sok pókolás helyett.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #27 on: 2019.April.07. 16:19:18 »
Néhány hibát javítottam, és a sjasm.exe kisebb is lett.

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14721
  • Country: hu
    • http://enterprise.iko.hu/
Re: Sjasm fejlesztése
« Reply #28 on: 2019.April.07. 20:40:45 »
Lehet kérni egy kész EXE-t?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Sjasm fejlesztése
« Reply #29 on: 2019.April.07. 21:24:19 »
Az itt leírt módon könnyen fordítható, de készíthetek bináris csomagot is, csak az hamar elavulhat, ha még változik valami (például hibák miatt :oops:):

[ Guests cannot view attachments ]