Welcome, Guest. Please login or register.


Author Topic: IS-BASIC program 0 / program 1 / program 2... (Read 7438 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
IS-BASIC program 0 / program 1 / program 2...
« on: 2024.August.10. 20:52:51 »
Egy másik topikban merült fel, hogy a karakterek átdefiniálása a program 1-be kerül, és ezt hívjuk meg a program 0-ból.

Ennek kapcsán gondolkoztam el, hogy nem is tudom, mennyire lehet használható, hogy több program is van egyszerre a memóriában. Amikor jó pár éve a színesített bombázó játéknak volt 3 változata, azokat is megpróbáltam berakni egymás mellé, és egy főprogram menüjéből hívni meg őket, de kevés volt nekik a memória. Pedig olyan nagyon nagy programok nem voltak azok. Viszont úgy tudom, a Reversi-Dáma-Awari játékban mind a három játék és a választómenü elfért külön-külön programként. Nem is tudom, ez a több program lehetőség mikor használható ki, talán ez a "karakterkészlet külön programba megy"-jellegű megoldás egész jó így. Még pl. az envelope number-eket és néhány más alapbeállítást lehetne oda tenni. Igaz, mivel van Zzzip és az nem szereti ezt, így ezeket is meg lehet oldani máshogy.

Alig van néhány program, amely kihasználja ezt a lehetőséget, és én sem tudok sok lehetőséget elképzelni, amikor erre szükség lehet.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Dr.OG

  • Global Moderator
  • EP lover
  • *
  • Posts: 771
  • Country: hu
  • dr.
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #1 on: 2024.August.11. 06:32:42 »
Viszont ez, legalábbis elméletben, megoldás lehet a limitált sortszám-problémára?
ÉN ekelek, TE keregsz, Ő gyeleg,
MI ákolunk, TI vornyáztok, ŐK lendeznek.

Offline Ferro73

  • EP addict
  • *
  • Posts: 1001
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #2 on: 2024.August.11. 11:32:43 »
A sor szám 1- 9999 közel 10 ezer sor bőven elég lehet a ~48 KB. szab nagyobb határt. ha jól emlékszem. A többi lap csak ~16KB.

Offline Ferro73

  • EP addict
  • *
  • Posts: 1001
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #3 on: 2024.August.11. 14:41:07 »
Viszont ez, legalábbis elméletben, megoldás lehet a limitált sortszám-problémára?
Most próbáltam a 0.lap maximális mérete 44256-44300 között lehet.
Egy sornyi "1 REM" 7 bájtot foglal el ha minden sorba csak ezt raknánk a 0-9999 akkor is 70000 bájt lenne. 6316-6320 sornál többet nem írhatnánk meg.
Minden további lap /EDIT/ ~32KB. amíg van memória.

Offline Ferro73

  • EP addict
  • *
  • Posts: 1001
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #4 on: 2024.August.11. 15:13:16 »
Itt egy kis példaprogram, hogyan lehet akár 44KB-nál nagyobb BASIC programot egy betöltéssel meg alkotni.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #5 on: 2024.August.11. 15:33:50 »
Elvileg korszakalkotó megoldásnak tűnik, de nem tudom, van-e értelme, hogy egyszerre több program is lehet a tárban. Kb. minden megoldható egyetlen programon belül is. A Reversi-Dáma-Awari tárolódik több programként, de az is biztos beférne egyetlen hosszú programba is. Még ha a programok között használható lenne copy-paste, vagy ilyesmi, de az akkor még nem volt.
Ráadásul a status sorban is furán mutat a program 0, ami mindig ott van, és szinte soha nem használja senki. Esztétikusabb lenne csak középen az IS-BASIC minden más nélkül, vagy valami más szöveg kerülhetett volna a program 0 helyére. De azt is tudjuk, hogy IS-BASIC-ben vagyunk, szóval még azt sem kéne kiírni. :D Helyette lehetne ott a szabad hely mérete, a legutolsó hibaüzenet, vagy valami hasznos dolog. (Igaz, a HiSoft Pascal és más programnyelvek is oda írják a nevüket.)
Megpróbálom elképzelni, hogy egy modern PC-s programmal írunk IS-BASIC programokat, és ott több fül megnyitható, és mindegyiken lehet más-más basic programot írni. Ennek sem tudom, mennyire lenne értelme, mert az ember általában csak egyetlen basic programot ír.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline vargham

  • User
  • *
  • Posts: 87
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #6 on: 2024.August.15. 13:08:52 »
szinte soha nem használja senki.
Én nagyon szeretem ezt a funkciót. Valódi gép előtt programozva egy csomó mindent ki lehet próbálni anélkül, hogy veszélyeztetnénk a programokat. Commodoreon is nagyon hiányzik valami ilyesmi.
Még ha a programok között használható lenne copy-paste, vagy ilyesmi, de az akkor még nem volt.
Igen, a valódi copy-paste az hiányzik.
Helyette: Programsorok listázása, váltás a másik programra, minden programsoron entert nyomni. ;-)

Offline BruceTanner

  • EP lover
  • *
  • Posts: 608
  • Country: gb
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #7 on: 2024.August.15. 14:21:51 »
The history is that the original EP had 64k RAM. Then Enterprise Computers decided to sell EP 128k. But nobody thought "How will we use the extra 64k?". The BASIC ROM was already full, so there was no room for a good solution. So the multiple programs and CHAIN command were a last-minute addition to BASIC to allow more than 64k to be used!

--- Goole Translate ---

A történelem az, hogy az eredeti EP-ben 64 ezer RAM volt. Aztán az Enterprise Computers úgy döntött, hogy eladja az EP 128k-t. De senki sem gondolt arra, hogy "Hogyan fogjuk használni az extra 64 ezret?". A BASIC ROM már megtelt, így nem volt helye jó megoldásnak. Tehát a több program és a CHAIN ​​parancs az utolsó pillanatban a BASIC kiegészítése volt, hogy több mint 64 KB-t lehessen használni!

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #8 on: 2024.August.16. 09:37:07 »
I think it is a very good solution, despite it is rarely used.
Szerintem annak ellenére, hogy ritkán használták, ez egy nagyon jó megoldás.

Offline Ferro73

  • EP addict
  • *
  • Posts: 1001
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #9 on: 2024.August.16. 16:34:20 »
I think it is a very good solution, despite it is rarely used.
Szerintem annak ellenére, hogy ritkán használták, ez egy nagyon jó megoldás.
Meg persze ha pontosabb lett volna a leírás vagy példa program, talán én is alkalmaztam volna.
De semelyik BASIC programban se találkoztam ezzel a megoldással.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10071
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #10 on: 2024.August.17. 10:44:29 »
De semelyik BASIC programban se találkoztam ezzel a megoldással.
Szerintem a CHAIN és EDIT parancsokon kívül más nem nagyon kell.
A változók törlődnek, amikor egyik program meghívja a másikat?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #11 on: 2024.August.17. 12:34:37 »
Szerintem a CHAIN és EDIT parancsokon kívül más nem nagyon kell.
A változók törlődnek, amikor egyik program meghívja a másikat?
Én úgy látom ,hogy minden programnak megvan a maga változó területe, csináltam egy kis teszt programot, alapból ha nem adsz át egy változót se a két program között, akkor annak a változónak a másik programban nincs értéke, aminek az értékét át szeretnéd vinni, azt át kell adni:
Code: [Select]
1 PROGRAM "a"
10 LET I=1:LET J=3
20 PRINT I J
30 CHAIN "b"(I)

 1 PROGRAM "b"(I)
10 LET J=2
20 PRINT I J

START
 1 3
 1 2
Ha J-nek a program "b"-ben nem adsz értéket, akkor az elszáll, definiálatlan változóval.
Egy hibáját látom ennek a megoldásnak, hogy nem térhetsz vissza bárhová a meghívott programból, csak a másik program elejére (legalábbis erre nem láttam megoldást)
« Last Edit: 2024.August.17. 12:44:57 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #12 on: 2024.August.17. 12:44:29 »
De eszembe jutott egy megoldás, hogy a CHAIN "a"-val lehessen szabályozni, hogy hol folytassa a futást visszatéréskor.
Code: [Select]
1 PROGRAM "a"(K,I)
 5 IF K=1 THEN 40
10 LET I=1:LET J=3
20 PRINT I J
30 CHAIN "b"(i)
40 PRINT I

 1 PROGRAM "b"(I)
10 LET J=2
20 PRINT I J
30 CHAIN "a"(1,I)

START
 1 3
 1 2
 1
Program "a" átadja az I értékét, Program "b" az értéket beteszi I-be, és fut, majd visszaad 1-et, és az I értékét, és meghívja "a"-t , ami az 1-et beteszi K-ba, és a kapott I értéket I-be, és mivel a K értéke egy, ezért ugrik a 40. sorra.
Az "a" program indulásakor K és I 0-ás értéket vesz fel.

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #13 on: 2024.August.17. 12:51:04 »
Maga a CHAIN utasítás inicializálja újra a változókat, amit átadtál, az megmarad, amit nem az elvész.
30 CHAIN "a"(1,I)
után a program "a"-ban J-nek nincs értéke.
Szerintem ez a CHAIN-es megoldás tök jól használható, főbb program részeket kell más program területre tenni, és hívogatni, és így marha nagy Basic programot lehet írni :D :D

Offline Ferro73

  • EP addict
  • *
  • Posts: 1001
  • Country: hu
Re: IS-BASIC program 0 / program 1 / program 2...
« Reply #14 on: 2024.August.17. 18:45:45 »
De eszembe jutott egy megoldás, hogy a CHAIN "a"-val lehessen szabályozni, hogy hol folytassa a futást visszatéréskor.

A példa programból amit írtam ugyan ezt értelmezheted.