Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
Re: Sjasm fejlesztése
« Reply #15 on: 2019.April.05. 23:05:11 »
Talán van valami, ami még megoldható.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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 »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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 :-)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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:
* modldr.asm (1.07 kB - downloaded 23 times.)
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
* modldr.out (0.32 kB. 35x1 - viewed 23 times.)
* demo.bas (0.36 kB. 77x1 - viewed 23 times.)    (szerk.: az ALLOCATE mérete helyesen 569 lenne az eredeti betöltőhöz)
* demo.asm (3.21 kB - downloaded 20 times.)    (ez ugyan nem a legjobb példa, mert nem EXOS kompatibilis, de egyébként a betöltése működik)
* demo.out (0.29 kB. 25x1 - viewed 25 times.)
« Last Edit: 2019.April.06. 19:56:06 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 66.0 Firefox 66.0
    • View Profile
    • 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: 4880
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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:):

* sjasmep.zip (183.98 kB - downloaded 25 times.)