Welcome, Guest. Please login or register.


Author Topic: IS-DOS és CP/M (Read 15505 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #45 on: 2016.June.02. 14:48:59 »
És, hogy miért is hoztam fel az előbbi cuccot?
Azért mert rá akarom venni Lgb-t, hogy írjon egy hasonlót, modern kiadásban :oops:

O jajj! Nem eleg nekem a C65 emulator? :D :D amugy mit kapok erte, ha megcsinalom? FAT16-os EXDOS jo lesz :)

Quote
A történet ott kezdődik, hogy az EXOS, EXDOS, IS-DOS mint Microsoft Macro-80 Assemblerben készült (CP/M alatt M80.Com és L80.COM).
Ebben olyan bonyolult szintaktikák vannak, hogy nyugodtan nevezhetjük külön programnyelvnek, az IS fiúk lehetőségeket maximálisan kihasználták.

Most tenyleg nem azert, de nem lehet, hogy konyebb lenne egy konvertert irni az asm szintaxisra? :) Vagy akar egy assembler-t is. Ez overkill-nek tunik, _DE_: ha jovoben te, vagy barki mas akar foglalkozni az EP eredeti forrasaival ez folyamatosan problema lesz. Nem lenne szebb akkor, ha egy szelesebb korben elerheto/ismert assembler-rel (aminek van "normal" valtozata ami pl akar PC-n is fut) is lehetne rajtuk dolgozni? Ui tegyuk fel, hogy van a post-odban szereplo CP/M emulator szeruseg. Annal - erzesem szerint - akkor is jobb/ismertebb/emeszthetobb lenne, ha nativ/ismert tool-okkal lehetne rajta tovabb dolgozni, nem? Speciel, mivel nem tudom milyen a szintaxis, persze nem tudom megmondani mennyire lenne trivialis pl sjasm altal hasznalt szintaxisra foritani, na meg mondjuk a link-eles az kulon erdekes tema ... De meg mindig van mas Z80 assembler is, ami azert letezik manapsag is, es ott a linkeles tenyleg kulon lepes (talan az sdcc altal hasznalt assembler is tud ilyet pl, igaz o belsoleg vmi intel hex format szeru vackot hasznal object file-nak, de tokmind1, hogy belsoleg hogy kezeli le, ha ettol meg mukodik .......).

Quote
EP-n ISDOS alatt sikerült is lefordítani ezeket, de valami förtelmesen lassúak, még 3000%-on futó emulátorral, és RAMDISK használattal is jó pár percig tart egy fordítás.
Valódi gépen valószínűleg több óra is lenne (majd egyszer lemérem :-) ). Van olyan rész, ahol commentben bele is van írva, hogy csak ez a fájl 20 percig fog tartani.

Néztem, de ezeknek a programoknak nem készült PC-s verziója, a PC-s Microsoft Macro Assembler csak x86-ot tud.
Sőt nagyon úgy tűnik akkoriban egyáltalán nem volt PC-s Z80 assembler, ezért is vesződtek Brucék PC-s Z80 kártyákkal, amin mivel valódi Z80-on futott a cucc, pont olyan lassan futott mint ahogy most EP-n.
A németeknek/magyaroknak meg nem futotta Z80-as kártyára, ezért volt ez a szoftveres CP/M emuláló dolog. (Mondjuk az is érdekes kérdés, hogy egy 4.77 MHz-es XT-n futó emulált Z80 milyen gyors lehet...) Mondjuk ők teljes fordítást nem is csináltak, csak kisebb részeket.

Most az IS-DOS alatti fordítással az a baj, hogy FILE: nem használható, mindent rá kell tenni floppy image-re. Onnan aztán be a RAMDISK-be, meg a végén ki a RAMDISK-ből. És még így is bazi lassú, hiába a 2-3000%-os emulátor sebesség.

Xep128-al egyreszt lehet menne a FILE: mar ugye (EXOS 10 support/miegymas), masreszt ha meg nem, SD kartya emulacio? Igaz, Xep128-al nem lehet - jelenleg - gyorsitani az emulacio sebesseget (bar beleganyolhatnek hogy vmi ideiglenes nem tul szep modon akar legyen "warp" speed) ... Viszont ep128emu-ban van Zozo IDE emulacio nem? Valami Zozo nevu srac csinalta a hw-t .... :D Az nem hasznalhato? ott lenne eleg hely akkor, mar ha csak a hely problemat nezzuk szigoruan, nem kene RAMDISK-elni, miegymas. Oke, ertem en, hogy meg 3000%-on is lassu, akkor lassu. Amugy most neztem a Xep128 altal hasznalt Z80 emulaciot, van erre egy teszt programom: ha csak a Z80-at kell emulalni, akkor a nem tul uj PC-men azt mondja, hogy ~450MHz-es Z80-nak felelne meg a real-time speed. Egy kis Xep128 ganyolassal lehet el lehetne erni, hogy adott billentyunyomasig vagy tudom is en, iktasson ki minnel tobb dolog emulaciojat, meg a real time tartasara vonatkozo idozitest, es akkor azert jelentosen gyosabb lenne, bar a fenti virtualis 450MHz orajelet biztos nem erne el, mert mindent kiszedni akkor sem tudok belole, vagy csak nagy aldozatok aran :)

Quote
Az előbbi CP/M emulátorral meg az a baj, hogy mai x64-es Windowsok alatt nem fut, csak DOSBOX-ban, ez is macerás, meg lassú. De a legnagyobb gond, hogy valahogy nem tökéletesen működik az L80 vele, nem bírja az EXDOS-t összerakni, mert kb az 5. fájlnál kiakad, hogy nincs ilyen file... gyanítom, hogy túl kevés megnyitott fájlt tud kezelni a CP/M emuláció.

Itt jön a kérés Lgb-hez :ds_icon_cheesygrin:
Tudnál-e olyan lebutított XEP128-at csinálni, ami alkalmas az M80 és L80 futtatására:
-Z80 emuláció mindenféle időzítés nélkül, fusson olyan gyorsan ahogy csak bír
-64K CP/M memória kell, pár CP/M változó beállításával

Mire gondolsz? Ami 0x100 alatt van, CBIOS, BDOS hivashoz cucc, I/O BYTE meg ezek?

Amugy "multkoriban" eppen sajat Z80-as "mini gepet" epitettem volna, de csak emulacioban lett valosag :) Ott tapasztaltam, hogy egyes CP/M programokat futtathatova lehet tenni osszesen kb 1 darab CP/M hivassal is akar :) Talan a BBC basic Z80 portja volt ilyen, vagy nem emlekszem mar. Oszinten engem az FCB es a file muveletek remitenek el, az a baj, hogy akkor mar nem trivialis messze, ha sajat BDOS-t akar irni az ember. Bar amugy jut eszembe, az nem jo, amit en is csinaltam, hogy siman felhasznalom a DR eredeti BDOS-at es irok egy sajat CBIOS-t? :) Annak mondjuk a hatalmas hatranya az, hogy akkor CP/M lemezekkel (vagy hat image file-okkal, ha mar emulator) fog csak mukodni, sajat BDOS eseten meg ugye lehetne a normal filerendszer adott directory-jat kezelni file szinen .......... Az emlitett "sajat gep" emulaciojaban a CP/M is ment sajat primitiv CBIOS-szal, vagy hat mondjuk ugy, hogy neha "csuklott" 1-2-ot de "altalaban" ment :D

Quote
-program betöltve 100h-ra, ha 0000h-ra lép az kilépés. 0005h-ös BDOS hívásokat kell trapolni, és emulálni
-hívások: írás karakteres képernyőre, billentyűzet olvasás, fájl megnyitás/lezárás/törlés, szekvenciális írás/olvasás 128 bájtos blokkokban (Az M80-ban, majd még az L80-at is megnézem, van-e valami extra még)

Anyuuuu, nem akarok iskolaba menni, ize ... FCB-kkel szenvedni!!!!! :)

Quote
-a parancssor CP/M-es része átmásolva 0080h-00FFh-ra, hosszbájttal.
-Windowsos parancssoros EXE, képernyőre kiírás simán csak a "DOS" ablakban

Hmm. Ilyet egyszer irtam mar :) Amikor CP/M emulatort akartam irni, magyarul egy "sajat" CP/M-et, BDOS+CBIOS implementacio nativ C kodban. Igaz en Linux/UNIX-ra irtam, hogy nativan illesztheto legyen atlag parancssoros UNIX kornyezetbe, mintha "nativ" program lenne a kerdeses CP/M program futtatasa. Volt par hasonlo projectem, pl a karakteres modban mukodo C64 emulator (ncurses, nc64), illetve a DOSRUN, ami Linux alatt vm86() syscall-al es sajat DOS implementacioval dolgzott (vegulis, hasonlit a DOSBOX-ra ilyen szempontbol csak az sima parancssoros kornyezetben is ment, anelkul, hogy sajat ablak kellene, illetve ncruses-t hasznalva a Volkov Commander elindult Linux alatt nativ nativ X terminal ablakban is akar, hogy latta a teljes Linux filerendszert - na persze mindez DOSBOX-ban amugy sokkal jobban megy, szoval sok ertelme nincs a dolognak ma mar ...).

Na, de: ott is azert buktam el, mert ez az alien FCB szornyedveny megfekudte a gyomrom. Foleg, hogy egyes programok trukkosen hasznaljak az FCB-t, minden apro implementacios dolgot kihasznalnak, miegymas. Mennyivel jobb a file handle fogalma amit a UNIX kitalalt, egy szammal hivatkozol a file-ra oszt kesz. Kesobb DOS le is nyulta, igy vannak benne FCB-szeru es UNIX-stilusu file funkciok aztan ...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IS-DOS és CP/M
« Reply #46 on: 2016.June.02. 15:57:39 »
FAT16-os EXDOS jo lesz :)
Az is a célban van :-) Előbb kéne rendes 1.4 (nem binárisan szétpecselgetett), ami nem akad ki WD hiánytól...


Quote
Most tenyleg nem azert, de nem lehet, hogy konyebb lenne egy konvertert irni az asm szintaxisra? :)
Nagyjából az a kérdés, hogy most a következő 2-3 év forrás konvertálással teljen, vagy jöjjenek már az új verziók? :oops:

Quote
Speciel, mivel nem tudom milyen a szintaxis, persze nem tudom megmondani mennyire lenne trivialis pl sjasm altal hasznalt szintaxisra foritani
Nagyon elborult dolgok vannak, pl a ROM-okban lévő tömörített szöveg az fordítás közben áll elő, miközben biteket írkál a kimenő adatfolyamba... (Na ehhez van odaírva: "This file takes about 13 minutes to assemble"...)


Quote
Xep128-al egyreszt lehet menne a FILE: mar ugye
A FILE: elsősorban azért nem megy, mert a CP/M program az DOS meghajtókat használ, nem EXOS eszközöket.

Quote
(EXOS 10 support/miegymas)
Ennek egyelőre úgy tűnik még az se kéne. Szekvenciálisan végigolvassa a fájlt, aztán bezárja, és a második menethez még egyszer.

Quote
, masreszt ha meg nem, SD kartya emulacio?
Az erősen a cél lenne, hogy ne kelljen a cuccot ide-oda másolgatni semmilyen image-re :oops:

Quote
ha csak a Z80-at kell emulalni, akkor a nem tul uj PC-men azt mondja, hogy ~450MHz-es Z80-nak felelne meg a real-time speed.
Az ha jól számolom picit gyorsabb mint a 3000%-os ep128emu, és ha jól sejtem ugyanazon a gépen még gyorsabb lenne :-)


Quote
Mire gondolsz? Ami 0x100 alatt van, CBIOS, BDOS hivashoz cucc, I/O BYTE meg ezek?
Ahogy eddig nézem csak a memória méret 2 bájt kell (az alá teszi a stack-et). A BDOS hívást (0005) kéne elkapni trappal.


Quote
Anyuuuu, nem akarok iskolaba menni, ize ... FCB-kkel szenvedni!!!!! :)
M80-hoz csak a fájlnév kell belőle, L80-at még megnézem.

Ha nem vállalod akkor az a tervem, hogy EXOS héjat építek köré, és akkor legalább a FILE-zés megoldódik, mert EXOS csatornán megy majd a dolog. Meg esetleg fájlpufferelést bevetni, hogy ne 128 bájtonként legyen OS hívás, az is gyorsíthat egy kicsit.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #47 on: 2016.June.02. 16:19:21 »
Az is a célban van :-) Előbb kéne rendes 1.4 (nem binárisan szétpecselgetett), ami nem akad ki WD hiánytól...

Kozben rajottem, csak mar nem javitottam ki a hozzaszolasomban. Nem baj, igy meg talalobb :)

Quote
Nagyjából az a kérdés, hogy most a következő 2-3 év forrás konvertálással teljen, vagy jöjjenek már az új verziók? :oops:
Nagyon elborult dolgok vannak, pl a ROM-okban lévő tömörített szöveg az fordítás közben áll elő, miközben biteket írkál a kimenő adatfolyamba... (Na ehhez van odaírva: "This file takes about 13 minutes to assemble"...)

Nem azt mondtam, hogy "kezzel" konvertald le, hanem, hogy lehetne-e irni egy (PC-n futo) konvertert hozza pl, ami aztan lekonvertalja. Amit igy emlitettel az erdekes, de igy latatlanban foglmam sincs mit tud/csinal az a compiler ....

Quote
A FILE: elsősorban azért nem megy, mert a CP/M program az DOS meghajtókat használ, nem EXOS eszközöket.

En itt erzek egy kis hianyossagot EXOS/EXDOS-ban. Tok jo, hogy az EXOS magatol is tud file kezelo eszkoz irasahoz biztositani lehetoseget, csak epp a directory kezeles nincs megoldva. Ha nem EXDOS szinten lenne, hanem lenne EXOS hivas ra (amit handler vagy implemental vagy nem, hasonloan az EXOS 10-hez) es EXDOS is azon at menne, akkor lehetne FILE: -t irni ami tok DOS meghajtonak tunne :) Azaz jobb EXOS/EXDOS integraltsag. Persze oke, ez most nem segit, hogy azt mondom "HA" ...

Quote
Ennek egyelőre úgy tűnik még az se kéne. Szekvenciálisan végigolvassa a fájlt, aztán bezárja, és a második menethez még egyszer.
Az erősen a cél lenne, hogy ne kelljen a cuccot ide-oda másolgatni semmilyen image-re :oops:

Elvileg nem is kell, gondolom windows is kepes image file-t latni mintha a filerendszer resze lenne kvazi, amit Linux-ban is lehet akar.

Quote
Az ha jól számolom picit gyorsabb mint a 3000%-os ep128emu, és ha jól sejtem ugyanazon a gépen még gyorsabb lenne :-)

Hat, ha irok egy ilyet amit mondtal, a Z80 emulacio meg "full speed"-en se lenne akkor sokkal gyorsabb, a Xep128 osszes mas reszet elhagyva ....

Quote
Ahogy eddig nézem csak a memória méret 2 bájt kell (az alá teszi a stack-et). A BDOS hívást (0005) kéne elkapni trappal.

Hat, mar nem igazan remlik a CP/M, de ugy emlekszem, hogy a BDOS belepesi pontot szokas memtop-nak is hivni vagy minek egyben, ameddig egy CP/M program nyujtozkodhat "felfele" a memoriaban ....

Quote
M80-hoz csak a fájlnév kell belőle, L80-at még megnézem.

Ha nem vállalod akkor az a tervem, hogy EXOS héjat építek köré, és akkor legalább a FILE-zés megoldódik, mert EXOS csatornán megy majd a dolog. Meg esetleg fájlpufferelést bevetni, hogy ne 128 bájtonként legyen OS hívás, az is gyorsíthat egy kicsit.

Nem mondtam, hogy nem *probalom* meg esetleg, de hat nem garantalt a siker, attol fugg tenyleg, milyen CP/M hivasokat akar szegeny cucc, es mennyire hasznalja ki pl az FCB specialitasait, mert abban vannak melyekk dolgok is, amit nehany CP/M program sajna erosen kihasznal, ezert nem totalisan compatible FCB kezeles nelkul ezek nem igazan szoktak mukodni. Legalabbis CP/M tapasztalataim szerint :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #48 on: 2016.June.02. 16:43:41 »
Kozben irtam maganban egy uzenetet neked, Zozo.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #49 on: 2016.June.02. 18:58:03 »
Na. Kesz a CP/M emulator vaza, csak ki kell tolteni benne a funkciokat amit BDOS/CBIOS-bol hasznalni akar. Ehhez viszont kene akkor a cucc :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IS-DOS és CP/M
« Reply #50 on: 2016.June.02. 19:19:25 »
Na. Kesz a CP/M emulator vaza, csak ki kell tolteni benne a funkciokat amit BDOS/CBIOS-bol hasznalni akar. Ehhez viszont kene akkor a cucc :)
Ez gyors volt, én még csak vacsorafőzésnél tartok :oops:

Addig is itt vannak, a neten találtam némi disassemblyt is.

A LOG fájl meg egy egyszerű
org 100h
ret

próbafájl fordításának megfigyelése.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #51 on: 2016.June.02. 19:40:12 »
Tudsz fozni? :) De jo neked. En meg a teafozest is elrontom, tiszta antitalentum vagyok ehhez ...

Amugy persze, hogy nem tartott sokaig, miert tartana, ez kb 5 perc eddig osszedobni. Nyilvan, az aktualis BDOS/BIOS stb call-oknal azert lesz majd joval tobb szivas am :)

Az a baj, hogy nem tudom hogy kene hasznalni ezt az m80.com -ot ... Ha siman meghivom parameter nelkul (marmint mar az emulatorommal!) akkor egy csillagot ir ki. Ha valamit adok parameternek akkor meg "?Command error" lesz. A problem az, hogy console input-ot NEM fogok tudni emulalni mert ahhoz fejlettebb console I/O kene (raw mode stb) amit Linux eseten meg tudok oldani, de Windows-nal halvany lila gozom sincs, hogy kell pl ... Igy a 10-es BDOS call-ra (buffered console input) mindig azt adom vissza a DE altal mutatott teruleten hogy 0 karaktert olvasott be. De ugy latszik ez a cuccnak nem igazan tetszik, vagy hat o varna valami ertelmeset. Vagy tudom kene hogyan kell parameterezni az M80.COM-ot, hogy ne console-rol varja az utasitast, az is lehet am :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IS-DOS és CP/M
« Reply #52 on: 2016.June.02. 19:51:39 »
Tudsz fozni? :)
Mivel nincs más kénytelen vagyok, ha nem akarok éhen halni :-)

Quote
Az a baj, hogy nem tudom hogy kene hasznalni ezt az m80.com -ot ... Ha siman meghivom parameter nelkul (marmint mar az emulatorommal!) akkor egy csillagot ir ki. Ha valamit adok parameternek akkor meg "?Command error" lesz.
Ez már jól hangzik! :-)

Itt egy leírás. De azóta kaptál BAT fájlokat is :-)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #53 on: 2016.June.03. 00:45:21 »
Na, elso korben kesz. Az CP/M-es linker es assembler legalabbis lefut. Az, hogy jot allit-e elo, tok mas kerdes :-P

https://github.com/lgblgblgb/xep128/blob/master/tests/cpm-minimal-emulator.c

A forraskodja, ha valaki akar szornyulkodni :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IS-DOS és CP/M
« Reply #54 on: 2016.June.03. 09:20:06 »
Na, elso korben kesz. Az CP/M-es linker es assembler legalabbis lefut. Az, hogy jot allit-e elo, tok mas kerdes :-P
Jót! :ds_icon_cheesygrin: :smt038

Lehetne a neve XCPM az XEP alapján :-)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: IS-DOS és CP/M
« Reply #55 on: 2016.June.03. 15:31:24 »
Jót! :ds_icon_cheesygrin: :smt038

Lehetne a neve XCPM az XEP alapján :-)

Amen, legyen. Keresztapa lettel :) Igazabol azon gondolkodtam, hogy mi van, ha minden BDOS/BIOS call-t implementalok, es akkor "barmire" jo, haaat illetve addig, amig ki nem derulnek a bug-ok egyes programoknal :) :) Igazabol a Z80 emulacio butitasaval (ciklus pontossag kikapcsolasa stb) valoszinu lehetne meg gyorsabb ennel, en oszinten szolva kicsit lusta voltam, mert Xep128-ban igy van hasznalva, igy nem kellett trukkozni, hanem siman hozzalinkelni csak ahhoz, amit a Xep128 is hasznal.

Mas, elkezdtem irni 8080 emulatort C65-re (ja igen, mostanaban C65 maniam van). Bar CP/M hivast emulalva akkor azon is lehetne CP/M programokat futtatni ugy-ahogy :-/

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: IS-DOS és CP/M
« Reply #56 on: 2017.January.05. 20:13:56 »
Zozo, az IS-DOS forrása meg van neked?
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IS-DOS és CP/M
« Reply #57 on: 2017.January.05. 21:00:25 »
Zozo, az IS-DOS forrása meg van neked?
Igen, bár teljesen még nem sikerült összerakni.