Welcome, Guest. Please login or register.


Author Topic: Gépi kód Basic-ben (Read 649 times)

Offline endi

  • EP addict
  • *
  • Posts: 7225
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 76.0.3809.132 Chrome 76.0.3809.132
    • View Profile
    • Honlapom
Gépi kód Basic-ben
« on: 2019.September.08. 16:12:30 »
Gondoltam lehetne egy külön topik erről.
Én annak idején jópár játékot csináltam amiben gépi kód volt pl. a sprite kirajzolás. Sajnos ezekből asszem csak a Mutant Test maradt meg. Pedig volt egy Dizzy-szerű attr grafikás játék is, meg egy karakteres módú platformjáték is.
Sajnos nem igazán emlékszem már, hogy pl. adatokat hogyan adtam át a gépi kódnak, illetve több adatot.
Meg a memória foglalást is elfelejtettem, bár arra emlékszem hogy pl. a Mutant Testben rendesen Exos-al foglaltam le szegmenseket. :) (Ami amúgy nem volt jellemző a programjaimra haha.)
Vigyázat! Szektás vagyok! :)

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #1 on: 2019.September.12. 17:21:18 »
Akkor 3 kis progit már át lehetne helyezni.
IN A,(0B5h)
JOY(0,1,2)
PRESS FIRE TO START
Kérdés.
Ilyenre gondoltál.
Vagy mint a Spectrum-nál 
1 REM!äđwdsÄ[]Ä<-<>#
2 RANDOMIZE USR(4813,0)

Készül karakter tábla LOAD, SAVE. Ehhez lenne pár kérdés.

Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #2 on: 2019.September.13. 10:32:00 »
Különböző Enterprise konfigurációinál a kezdőcímek eltérőek. Használja jobban az "USR(CODE+2,CODE+2)" -t, ha azt akarja, hogy a rutin tisztában legyen a memória helyzetével, akkor továbbadhatja az operandusokat poke: "POKE CODE,JOY" or "DIRECTION=PEEK(CODE+1).

----------------

On different Enterprise configurations the start addresses are different. Better use "USR(CODE+2,CODE+2)", if you want the routine be aware of its memory position, then you can pass the operands as pokes: "POKE CODE,JOY" or "DIRECTION=PEEK(CODE+1).

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #3 on: 2019.September.13. 16:15:22 »
Igen.

De akkor már nem nincs ALOCATE HEX$...
És ilyenkor a programozásban nem használható JP ..., CALL ... direkt cimzés

Viszont ha JP.. CALL.. akarunk használni akkor:
Code: [Select]
RESTORE DATA
 FOR X=1 TO...
  READ A
  POKE X+y,A
 NEXT
 RANDOMIZE USR(Y,0)
 END
DATA
 DATA 1,23,42,... ,201

Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #4 on: 2019.September.13. 19:27:28 »
A JR és a JR Nc képes JP és CALL szimulációra. A + -128 tartományt kibővítheti egy vagy több közbenső címkével:


JR and JR Nc can simulate JP and CALL. You can extend the +-128 range with one or more intermediate labels:

Code: [Select]
START:  JR NZ, CALC1
           -----
           code less than 128 bytes
           JR CONT
           -----
CALC1:  JR CALC
           -----
CONT:   more code, less than 128 bytes
                      -----
CALC:   subroutine code
           RET


Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Unknown Unknown
  • Browser:
  • Firefox 68.0 Firefox 68.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #5 on: 2019.September.13. 20:53:36 »
Sajnálom, elfelejtettem a visszatérést ... Újabb közbenső ugrás.

-----------

Sorry, I forgot the return... Another intermediate jump.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13467
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Gépi kód Basic-ben
« Reply #6 on: 2019.September.13. 21:00:04 »
Vagy lehet használni áthelyezhető modult, és akkor nincs gond a címekkel.

Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #7 on: 2019.September.13. 22:28:35 »
Rendben, akkor ... ehhez szükséges egy kézikönyv. Kérem.

És ... ne feledje, hogy megígérte, hogy átvizsgálja az Enterprise HISOFT DEVPAC kézikönyvet. Biztos vagyok benne, hogy van egy rész az áthelyezhető kódról.

---------------

Ok, then... a manual of how to do it is needed. Please.

And... remember that you promised to scan the Enterprise HISOFT DEVPAC manual. I am sure that there is a section about relocatable code in it.

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #8 on: 2019.September.13. 23:25:05 »
Minden  JR ... helyettesíthető JP ... vel.
De nem minden JP ... helyettesíthető JR ... vel.

Vagy lehet használni áthelyezhető modult, és akkor nincs gond a címekkel.
Igen.
És pl.:
Code: [Select]
1234  EXT ":JOY"A visszatérő értékekhez, hogy jutunk hozzá?

Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #9 on: 2019.September.13. 23:56:09 »
Igen, a feltételes JP-nek minden lehetséges zászlókombinációja van, míg a JR-nek csak C, NC, Z és NZ van, de a többi jelzőt PUSH AF, POP BC paranccsal lehet kódolni, majd beállítani vagy visszaállítani a Carry-t, a egy bit a C. nyilvántartásban

--------------------------

Yes, conditional JP has all possible flag combinations, while  JR only has C, NC, Z and NZ, but the other flags can be parsed on the code with PUSH AF, POP BC,  and then set or reset Carry flag depending on the status of a bit on register C.

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #10 on: 2019.September.14. 00:08:53 »
Nem arra gondoltam. De az is igaz.
Hanem a JR ... @+-128
Míg egy JP ... 0-65535

Online gflorez

  • EP addict
  • *
  • Posts: 2626
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #11 on: 2019.September.14. 00:33:03 »
Igen, ezt értem: +-128 egy kicsit rövid távolság, de közbenső címkék használatával ez a távolság megduplázható vagy megháromszorozható, miközben csak kissé bonyolultabbá teszi. Elég egy kis alprogramhoz.

----------------------------------

Yes, that is what I was meaning, +-128 is a little short distance, but by the use of intermediate labels, that distance can be doubled or tripled while making it only slightly more complicate. Enough for a little subroutine.


Code: [Select]
START:     JR NZ, CALC1
           -----
RETURN:    code less than 128 bytes
           JR CONT
           -----
CALC1:     JR CALC   \
RETURN1:   JR RETURN /   Intermediate labels
           -----
CONT:      more code, less than 128 bytes
           -----
CALC:      subroutine code
           JR RETURN1

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #12 on: 2019.September.14. 00:42:57 »
Ennyi erővel a CALL-t is helyettesíthető.

Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #13 on: 2019.September.14. 20:33:36 »
Következő
Karakter horizontális flip:
CALL USR(RUTIN,CHAR_num) ;egy adott karakter
CALL USR(RUTIN,-1)             ;az összes karakter

Zip tartalma .BAS .ASM


Offline Ferro73

  • EP lover
  • *
  • Posts: 732
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 69.0 Firefox 69.0
    • View Profile
Re: Gépi kód Basic-ben
« Reply #14 on: Yesterday at 19:49 »
A karakter tábla mentés/ betöltés lehet:
Code: [Select]
  OPEN #106:"KARMTRIX.BIN" ACCESS INPUT
  CALL USR(karload,106)
  CLOSE #106

Így tetszés szerinti lehet a fájlnév és a csatorna szám.

Vagy lehet használni áthelyezhető modult, és akkor nincs gond a címekkel.

Kérdés BASIC bővítményekhez is használható.
Mert akkor lehetne csinálni LOADERt /include/ majd a játék ami már tartalmazza a bővítményeket meghívó utasitásokat.