Welcome, Guest. Please login or register.


Author Topic: Általános BASIC Kérdések (Read 534387 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #1395 on: 2020.May.22. 09:10:02 »
látszik, hogy 8080 asm az alapja, a kommentekben még 8080 regiszterekre hivatkoznak
Akkor Z80-ra is le lehetne fordítani? :-)
Amúgy ha jól emlékszem anno adott ki az Intel 8080 -> 8086 assembly konvertert, ami lecserélte a forrásban az utasításokat a megfelelő újakra. Lehet, hogy ez a cucc is így készült?

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #1396 on: 2020.May.22. 11:37:26 »
Akkor Z80-ra is le lehetne fordítani? :-)
Amúgy ha jól emlékszem anno adott ki az Intel 8080 -> 8086 assembly konvertert, ami lecserélte a forrásban az utasításokat a megfelelő újakra. Lehet, hogy ez a cucc is így készült?
vszínű, mivel pl ehelyett: (1993-1994. sor a GWMAIN.ASM-ban)
https://github.com/microsoft/GW-BASIC/blob/master/GWMAIN.ASM
Code: [Select]
MOV BH,DH ;SAVE [D,E]
MOV BL,DL

lehetett volna:
Code: [Select]
mov bx, dx

az eredeti (Altair BASIC-ben) pedig ez a rész Z80 szintaktikával:
Code: [Select]
   ld      h,d
    ld      l,e
*** Speicherplatz zu klein

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1397 on: 2020.May.26. 19:53:25 »
Az ALLOCATE utasításnak a program elején kell lennie mindig? Vagy elég a CODE, HEX előtt is kiadni? Azt írja a kézikönyv, hogy a változókat elrontja. DEF blokkon belül nem célszerű kiadni?
A program tele van egy rakat SET CHARACTER utasítással, semmi más nincs benne. És lenne egy DEF blokk, amit ha akarunk, meghívunk parancs üzemmódból, és akkor HEX, USR segítségével elmenti az egész karakterkészletet.

UI.: Próbálkoztam, működik, csak mire az END DEF-hez ér, már nem tudja, az mire vonatkozik. Valószínű CALL-lal így nem lehet meghívni blokkot, hanem csak a "RUN sorszám"-mal elindítani a kódos részt.
« Last Edit: 2020.May.26. 20:14:42 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #1398 on: 2020.May.26. 20:53:17 »
Az ALLOCATE utasításnak a program elején kell lennie mindig? Vagy elég a CODE, HEX előtt is kiadni? Azt írja a kézikönyv, hogy a változókat elrontja. DEF blokkon belül nem célszerű kiadni?
Bármi olyan előtt ami értéket tárol el a BASIC munkamemóriában. Ennek a munkamemóriának tolja el a kezdetét, hogy legyen egy fix hely majd a gépi kódú részeknek.

Quote
Próbálkoztam, működik, csak mire az END DEF-hez ér, már nem tudja, az mire vonatkozik.
Igen pont erről van szó, a DEF blokkhoz tartozó adatok is ebben a munkamemóriában vannak tárolva, amikor az ALLOCATE lefut, azzal ez is elromlik.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1399 on: 2020.May.26. 21:17:30 »
Köszi! Még azt valaki meg tudná nézni, hogy itt a Wikin a Karakterkészlet kimentése és betöltése cím alatt az a kis program jó-e? Szerintem nem menti el a karakterkészletet, pedig már mindenféle felállásból próbáltam... Ha a C9 előtt a 08-at átírom 06-ra, akkor be tud tölteni egy másik karakterkészletet, de amit ez ment el, azt nem tölti vissza. (Az access output helyett beírtam, hogy access input.) Hibát nem okoz, de a karakterkészletet nem menti el rendesen, pedig már ezerszer ellenőriztem, azokat a számokat írtam-e be.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1400 on: 2020.May.26. 21:29:58 »
itt a Wikin a Karakterkészlet kimentése és betöltése cím alatt az a kis program jó-e?
Közben próbálgattam még. Működik, de ha egy több száz soros basic programba tesszük be, akkor már nem működik. Rejtély, hogy miért. Pedig nem változtattam rajta semmit. Rögtön a program elején lefut, de nem írja át a karakterkészletet.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #1401 on: 2020.May.27. 14:11:04 »
Közben próbálgattam még. Működik, de ha egy több száz soros basic programba tesszük be, akkor már nem működik. Rejtély, hogy miért. Pedig nem változtattam rajta semmit. Rögtön a program elején lefut, de nem írja át a karakterkészletet.
Most akkor a töltés, vagy a mentés nem megy nálad? (nálam működik)
Biztos, h jó file-t töltesz be?
*** Speicherplatz zu klein

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1402 on: 2020.May.27. 14:40:52 »
Most akkor a töltés, vagy a mentés nem megy nálad? (nálam működik)
Biztos, h jó file-t töltesz be?
Működik.
Csak akkor nem működik, ha egy nagyobb basic program része. A most felrakott Dots and gems programba akartam belerakni, hogy betöltse a karakterkészletet, de ott már nem működött. Nem okoz hibát, egyszerűen olyan, mintha átugraná azt a részt.
Még tavaly Ferro73 az Entersnake-ben is máshogy oldotta meg a karakterkészlet betöltését, végül az ő spoke-os módszerét loptam el, csak az lassabb.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #1403 on: 2020.May.27. 15:35:51 »
Csak a ZZZIP-pel lefordított változatban nem működik, vagy a nyers BASIC-ben se?

Egyébként azt tudom elképzelni, hogy akkor, amikor meghívod a függvényt, akkor nem a 255-ös szegmens van a 2-es lapon. És akkor rossz helyre tölti be a chr készletet.
Próbáld ki úgy, hogy berakod még ezt a CALL USR elé:

Code: [Select]
LET SZEG=IN(178)
OUT 178,255
ezt pedig a CALL USR után
Code: [Select]
OUT 178,SZEG
« Last Edit: 2020.May.28. 10:29:13 by Povi »
*** Speicherplatz zu klein

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1404 on: 2020.May.27. 16:21:52 »
Csak a ZZZIP-pel lefordított változatban nem működik, vagy a nyers BASIC-ben se?
Basic-ben se. Akkor majd kipróbálom a módszered.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1405 on: 2020.June.09. 17:03:37 »
Egyébként azt tudom elképzelni, hogy akkor, amikor meghívod a függvényt, akkor nem a 255-ös szegmens van a 2-es lapon. És akkor rossz helyre tölti be a chr készletet.
Próbáld ki úgy, hogy berakod még ezt a CALL USR elé:

Code: [Select]
LET SZEG=IN(178)
OUT 178,255
ezt pedig a CALL USR után
Code: [Select]
OUT 178,SZEG
Kipróbáltam, de így sem működik.
Először simán a hosszú program elejére az eredeti "fontos" részt:
[ Guests cannot view attachments ]
Beleírva az OUT-os részt:
[ Guests cannot view attachments ]
Ha az első snapshotban, ha töröljük a programot és csak az elején a fontos részt hagyjuk meg, majd egy resetet nyomunk és futtatjuk, akkor működik.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Ferro73

  • EP addict
  • *
  • Posts: 1013
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #1406 on: 2020.June.09. 20:32:00 »
A program tele van egy rakat SET CHARACTER utasítással, semmi más nincs benne. És lenne egy DEF blokk, amit ha akarunk, meghívunk parancs üzemmódból, és akkor HEX, USR segítségével elmenti az egész karakterkészletet.

Az egyik kígyós játékba mintha beleraktam volna ezt a funkciót
Char Load / Char Save

Amúgy itt ez nem jó?

Újabb  darab.
CHARS_RD   A komplett karakter mátrixot olvassa be fájlból.
CHARS_WR  A komplett karakter mátrixot írja ki fájlba.
« Last Edit: 2020.June.09. 20:54:31 by Ferro73 »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10082
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1407 on: 2020.June.10. 10:40:26 »
Az egyik kígyós játékba mintha beleraktam volna ezt a funkciót
Char Load / Char Save

Amúgy itt ez nem jó?
De, ez jó. Te valami SPOKE-s módszerrel csináltad, nem CODE és USR utasításokkal. De attól még működhetne az utóbbi is. Illetve működni működik, csak ha egy hosszabb basic programba kerül bele, ott már nem működik valamiért.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Ferro73

  • EP addict
  • *
  • Posts: 1013
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #1408 on: 2020.June.10. 20:50:09 »
Kipróbáltam, de így sem működik.
Először simán a hosszú program elejére az eredeti "fontos" részt:
(Attachment Link)
Beleírva az OUT-os részt:
(Attachment Link)
Ha az első snapshotban, ha töröljük a programot és csak az elején a fontos részt hagyjuk meg, majd egy resetet nyomunk és futtatjuk, akkor működik.
Ennyi erővel
Code: [Select]
  IN A,(0B2h)
  PUSH AF
  LD A,255
  OUT (0B2h),A
  LD A,1
  LD BC,0480h
  EX DE,HL
  EXOS 6
  POP AF
  OUT (0B2h),A
  RET

És ha nem #1 hanem #255 még az LD A,1 is megspórolod.
Így nem piszkál bele a BASIC a lapozásba.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #1409 on: 2020.June.10. 21:01:30 »
Ha az első snapshotban, ha töröljük a programot és csak az elején a fontos részt hagyjuk meg, majd egy resetet nyomunk és futtatjuk, akkor működik.
Hiányzik a font fájl amit töltene :oops: Mondjuk egy RAMDISK-es verzió?