Welcome, Guest. Please login or register.


Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Tomato77

Pages: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 ... 23
91
Műanyag alkatrészek gyártása / Re: Általános / Discussion
« on: 2020.December.29. 23:40:30 »
Valami pici, numerikus rész nélküli, szürke billentyűzet kéne, ami stílusban némileg passzol az EP-hez, pl. mint itt az első találat, és matricákkal át kéne alakítani az EP kiosztására.

92
Programozás / Re: EXDOS
« on: 2020.December.29. 23:30:32 »
Emulátorral próbáltam, a "EP_128k_EXDOS_FileIO.cfg" konfig volt betöltve, hogy legyen EXDOS és a fordított .COM programot is be tudja tölteni vinyóról.

93
Programozás / Re: EXDOS
« on: 2020.December.29. 21:17:15 »
Nálam lefagy ramdrive-val és annyi tudásom nincs, hogy kinyomozzam az okát, a debug-ban látott infó kevés nekem. Azért köszönöm a nyomozást mindkettőtöknek! Elindulok az átirányított "dir" parancs felé, megnézem, mennyire lesz így használható sebességű. Viszont máris kérdésem lenne: Basic-ben kiadott EXT "xxx" parancsot hogyan lehet megvalósítani? Az EXOS leírásban a rendszerbővítők hívása részt olvasgatom. Találtam egy ilyet: 2-es akciókód: parancsfüzér. Itt a DE regiszterben kellene lennie egy címnek, ami a parancsra mutat, aztán... hogyan? Itt kéne egy EXOS 11-es funkciót hívni? Jó lenne, ha mármilyen EXDOS parancsra működne, mert akkor a "dir" mellett a többi funkciót is (pl. "cd", "copy") így oldanám meg.

94
Programozás / Re: EXDOS
« on: 2020.December.29. 15:09:57 »
Ez fura. Úgy próbáltam, hogy csináltam ramdrive-ot, meg még két másik meghajtót assign-nal a ramdrive-ra hivatkozva (F: és H:), hogy lehessen tesztelni több meghajtót is. Ezek létezését lekérdezi FISH 20-as hívással, ezt eddig jól működőnek véltem, de ránézek. Az E: és F: meghajtót kéne lekérdeznie egyelőre, de FISH 3-nál megakad. Akkor itt valójában várakozik a válaszra a hiba miatt, hogy nincs bent lemez?

95
Programozás / Re: EXDOS
« on: 2020.December.29. 00:38:40 »
Találtam egy hibát. Eddig a veremmutatót az Init() függvényben állítottam 100h-ra, amit a main() hív meg. Ha jól gondolom, amikor az Init() végez és visszatér a main()-be, akkor lesz rossz érték az SP-ben. Módosítottam, most mindjárt a main() legelején állítom be a veremmutatót, és látszólag végig jó érték van benne (F1-re kiírja alul), de ha nincs kikommentezve a call C010h, akkor továbbra is megfagy. Zozo, megnéznéd újra, légyszi? Ilyenkor az emulátorban nézed debug-gal? Megnéztem én is úgy, az SP-ben C4h van, viszont a 2. lapon az FDh szegmens van, ami nem tűnik jónak, pedig a call előtt van egy Out(0xB2, 0xFF), a 255-ös szegmensnek kellene ott lennie. Köszönöm!

96
BASIC programok átírása / Re:Multetris (TVC)
« on: 2020.December.28. 12:18:47 »
DO
  GET A$
LOOP UNTIL A$=""
Ez így nem fog billentyű lenyomásra várni. Az UNTIL-nál kilépési feltételt kell megadni, ami teljesül is, ha nincs lenyomott billentyű. Vagy WHILE-lal fog működni, vagy a feltételt kell módosítani, pl. A$<>"". Ferro73 két sorosa jó, és az tűnik a legrövidebbnek.

97
Programozás / Re: EXDOS
« on: 2020.December.26. 14:20:33 »
Amikor lefagy a call utasításnál, akkor ezek a szegmensek vannak belapozva: F8h, FAh, FFh, 20h. Amikor kikommentezem a call-t és tovább jut, ezeket látom: F8h, FFh, FFh, 20h. Az 1. lapon van a verem és pont itt van eltérés. Kipróbáltam, hogy a call előtt 8100h-ra állítom az SP-t, hogy a kettes lapon lévő szegmensen legyen. Így tovább ment a program, máshol állt meg, de annak sejtem az okát. Lehet, hogy lesz belőle valami. :)

98
Programozás / Re: EXDOS
« on: 2020.December.25. 22:52:50 »
Dehogynem, feltöltöm és köszönöm! Nem tudom, melyik a hasznosabb, ezért feltöltöm a fordított .com fájlt és a C forrást is. A call utasítás fagy le a FISH() függvényben, ezt kikommentezve elindul. Igaz, még nem csinál semmit, mert a teszthez csak dummy fájlokat tölt a listába.

99
Programozás / Re: EXDOS
« on: 2020.December.25. 16:25:31 »
Elmentettem a FISH hívás előtt a stack pointert, hogy majd vissza lehessen állítani, utána beállítom 100h-ra, hogy a 0. lapon legyen, de a CALL C010h így is lefagy. Ha majd lesz fórumtalálkozó és valakinek lesz kedve megnézni, azt megköszönném. Félreteszem ezt a programot, mert nem tudok tovább haladni vele. Esetleg csatorna átirányítással megpróbálom megoldani, de sejtétem szerint nagyon lassú lesz. Köszönöm az ötleteket!

100
Programozás / Re: EXDOS
« on: 2020.December.24. 01:22:04 »
Beletettem a program elejébe egy "LD SP,100h" utasítást, de így is lefagy a FISH hívás. Elkezdtem kísérletezgetni, hogy mi lehet a veremmutató értéke. Amikor a program elindul (még az SP beállítása nélkül), 32428 van benne. Miután voltak EXOS hívások, 32439 lesz az értéke. Ezek szerint a verem valóban az 1. lapon van. Amikor 100h-ra beállítom, azt megcsinálja, de utána visszaváltozik az 1. lapon lévő címre. Még nem találtam meg, hogy hol változik vissza, meg kell nézni az összes EXOS hívást, de most úgy látom, hogy vagy a FISH hívás előtt/után kéne átállítani/visszaállítani a veremmutatót valahogyan, vagy az EXOS hívások előtt/után. A 2. lapra azért nem tudom tenni a vermet, mert oda lapoztam be azt a szegmenst, amit használok (ezen van a videomemória is). A 0. és 1. lap erre nem használható, mert ha ellapozom, lefagy. A 3. lapra pedig az EXDOS ROM kerül. De a verem akkor lehet a 0. lapon, csak ne változzon meg az EXOS hívások után, vagy legyen visszaállítva.

Így kérdeztem le az SP értékét, mert akármelyik regiszterbe nem engedi másolni. HL-t azért teszi bele a verembe, hogy a végén visszaállíthassam. Így ugyan a veremhasználat miatt némileg más értéket kérdez le, de az látszik, melyik lapon van. (Bizonytalan vagyok, hogy jól kérdeztem-e le, mert furcsa, hogy az első bájtot kell 256-tal szorozni, hogy jó legyen. Máskor 16 bites címeknél úgy rémlett, hogy az alacsony bájt van elöl, viszont így ad "jó" értéket.)
Code: [Select]
__asm__ (
  "push    HL\n"
  "ld      HL,0\n"
  "add     HL,SP\n"
  "ld      A,H\n"
  "ld      (_RA),A\n"
  "ld      A,L\n"
  "ld      (_RB),A\n"
  "pop     HL\n"
);
RSP=RA*256+RB;

Több türelmem most nincs hozzá, majd folytatom. Boldog Karácsonyt és jó ajándék bontogatást mindenkinek!

101
Programozás / Re: EXDOS
« on: 2020.December.22. 20:05:00 »
Ok, köszönöm! Azt nem tudom, hogy a fordító mit fordít C-ből és beállítja-e a vermet. Ha beleteszem az LD SP,100h-t, és utána EXOS hívást használok, akkor mindig vissza kell állítani a vermet 100h-ra? EXOS hívás kell pl. az EXDOS ROM szegmens lekérdezéséhez, EXOS változók állításához, csatorna nyitáshoz/záráshoz, blokk olvasáshoz. Jól értem, hogy ezek után mindig be kell állítani a vermet? Nem fog összeomlani a program? (Mondjuk ennél jobban nem.)

102
Programozás / Re: EXDOS
« on: 2020.December.22. 19:34:10 »
A verem melyik lapon van?
Nem tudom. :) Azt nekem kell meghatározni? Nem az FFh szegmensen van?

103
Programozás / Re: EXDOS
« on: 2020.December.22. 17:32:08 »
Köszi a választ! Teleszúrkáltam különböző színű keretállítással a hívást, ebből egyértelműen a CALL 0xC010-nél fagy meg. Az EXDOS ROM értéke nálam 32 a számítás (IY-5Eh) után, a FISH_VAR-ban pedig 42081 a cím. Ez hihetőnek tűnik, ha a 2. lapon van a FISH, mert akkor 32768-49151 értéktartományban kell lennie. Azt hogyan tudom megnézni, hogy az EXDOS ROM valóban a 32-es szegmensen van? (Nálad a 20-as érték hexa vagy decimális? Ha hexa, akkor nekem is ugyanannyi.)

Ha nem fog működni, olyanra van lehetőség, mint PC-n, hogy egy DIR parancsot > jellel átirányítok fájlba? Így sokkal lassabb lenne, de abból be tudnám olvasni a könyvtár tartalmát. Próbáltam "dir > x.txt" formában, de "Wrong number of parameters" hibát ad az EXDOS.

104
Programozás / Re: EXDOS
« on: 2020.December.21. 23:42:29 »
Zozo, nyúzhatlak még? A FISH hívás lefagy, ha az aktuális könyvtárat szeretném lekérdezni a 3-as funkcióval. Az EXDOS ROM lekérdezése megy, még a meghajtókat is visszaadja a 20-assal a DE és HL regiszterekben, de amikor a 3-as funkcióval hívom, megfagy.

Így kérdezem le az EXDOS ROM-ot és a FISH területet:
Code: [Select]
unsigned int FISH_VAR;
unsigned char EXDOS_ROM;
unsigned char RA, RB, RC, RD, RE, RH, RL; // Ezeket a regiszterek tartalmának tárolásához használom
unsigned int RDE;
...

  RDE = (unsigned int) &EXDOS[0]; // DE erre mutat, amiben ez van (szerintem jó): 6, 'E', 'X', 'D', 'O', 'S', 0xFD
  __asm__ (
    "ld      DE,(_RDE)\n"
    "rst     0x30\n"
    ".byte   26\n"
    "ld      (_RA),A\n"
    "ld      (_FISH_VAR),DE\n"
    "push    DE\n"
    "pop     IY\n"
    "ld      A,(IY-0x5E)\n"
    "ld      (_EXDOS_ROM),A\n"
  );

Itt pedig a 3-as funkcióval a 6-os meghajtón (F:) az aktuális könyvtárat szeretném lekérdezni:
Code: [Select]
 // Get current directory
  RB = 6;
  FISH(3);
...

// Ezt hívja meg:
void FISH(unsigned char Function)
{
  unsigned int Address;

SetEXOSVar(27,255);
  RA = Function;
  __asm__ (
    "ld      IY,(_FISH_VAR)\n"
    "ld      A,(_EXDOS_ROM)\n"
    "out     (0xB3),A\n"  // Page 3: EXDOS ROM
    "ld      A,0xFF\n"
    "out     (0xB2),A\n"  // Page 2: FFh segment
    "ld      A,(_RB)\n"   // B = drive (function 3)
    "ld      B,A\n"
    "ld      A,(_RA)\n"   // A = function
    "call    0xC010\n"
    "ld      A,D\n"
    "ld      (_RD),A\n"
    "ld      A,E\n"
    "ld      (_RE),A\n"
    "ld      A,H\n"
    "ld      (_RH),A\n"
    "ld      A,L\n"
    "ld      (_RL),A\n"
  );
  Out(0xB2, VideoSeg);
SetEXOSVar(27,7);
}

A 27-es EXOS változóban keretet állítom, hogy látszódjon, hol fagy le. Fehér marad, tehát valahol az assembly rész hal meg. Kb. két napja keresem, hogy miért. Megőrülök.

Módosítás: a DI parancsot nem tettem bele a lekérdezésbe. Ha jól láttam, ez a megszakításokat tiltaná le. Ez okozhatja? Ha kell bele, utána engedélyezni kell újra a megszakításokat?

105
Programozás / Re: EXDOS
« on: 2020.December.20. 02:00:27 »
Úgy néz ki, hogy sikerült működésre bírnom, le tudtam kérdezni a létező meghajtókat. Köszönöm a segítséget, Zozo!

Pages: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 ... 23