Enterprise Forever
:HUN => Programozás => Topic started by: Povi on 2018.December.19. 14:56:16
-
valami készül...
-
Ez valami emulátor? Mármint a PDP11 feliratból gondolom...
-
Ez valami emulátor? Mármint a PDP11 feliratból gondolom...
Igen, egy PDP-11 emulátor akar lenni, amin a UNIX 6-os verziója fut. Még nem tökéletes, de legalább elindul, és néhány parancs működök is (de pl. az LS-re, vagy a DATE-re kifagy) :-)
Nem gyors, de legalább lassú. A jobb fölső sarokban az utasítás / másodperc látható.
-
ilyen a sebessége:
https://www.youtube.com/watch?v=kmQNGTZrmU0
-
Annyira nem siet... :-D
Jól gondolom, hogy itt tulajdonképpen a PDP-11 16 bites ISA-t emulálod Z80-nal? Pöpec... ;)
-
Ilyen alapon akkor lehetne XT emulátort is írni?
-
Ilyen alapon akkor lehetne XT emulátort is írni?
bármilyen emulátort lehet írni egy turing teljes gépen :-)
a sebesség az más kérdés...
lásd: 8 bites ATMega-n futtatott Linux (úgy, hogy egy ARM-et emulálnak rajta):
https://hackaday.com/2012/03/28/building-the-worst-linux-pc-ever/
http://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bit
persze most lelövöd a poént, persze csak elméleti szinten ötletelünk az x86 emun, annak azért borzalmas az opcode dedolása
a PDP-jé viszonylag egyszerű, tök jó ortogonális az utasításkészlete
-
most már megy a DATE és az LS is
kicsit gyorsult is, látszik a "#" prompt-nál (ami angol font az EP-n) már 2500 IPS felett van a sebesség :-) (az MMU használata nagyon lassít)
-
most már megy a DATE és az LS is
azért van még hiba :oops:
a fileméreteknek nem 5-nek kéne lenni... :-)
ahogy nézem, a locv (long output conversion) működik hibásan, pontosabban az egyik ASHC utasítás nem jól állítja a flag biteket, szóval úgy tűnik, az ASHC implementációja lesz hibás (esetleg a ROL, mindkettő bitforgató utasítás), csoda, hogy eddig nagyobb baj nem lett belőle... :-)
bár, a CC (C compiler) nagyon szép fagyást produkál, lehet, hogy ott is ez a hibás utasítás okozza?
magát a file méretet még jól megkapja a locv függvény, az R2 regiszterben, szóval csak a kiírást érinti a hiba
részlet az ls.c-ből, itt történik a file méretének a kiírása:
printf("%7s", locv(p->lsize0, p->lsize));
-
azért van még hiba :oops:
a fileméreteknek nem 5-nek kéne lenni... :-)
Valóban az ASHC utasításban volt a hiba...
Önmódosító kód van benne, csak elfelejtettem, hogy az LD (**), DE utasítás 4 byte-os, nem pedig 3, ezért a 2. és 3. bájtot módosítottam a 3. és a 4. helyett. Csoda, hogy nem szállt el előbb... :-)
Most már a helyes fájlméreteket mutatja az LS:
-
Még a végén használható lesz? :) Amúgy ez még mindig nem teljesen világos: most tulajdonképpen egy PDP-11 emulátort kezdtél írni Z80-ra? Vagy ez valami kész projekt portolása EP-re? Mondjuk az előbbire tippelek, szép feladat. :) A "be/kimeneti eszköz" ott mi volt? Soros porti terminál? Vagy valami bonyolultabbat kell emulálni? (Csupa kérdés... :mrgreen: )
-
tulajdonképpen egy PDP-11 emulátort kezdtél írni Z80-ra?
igen, ez alapján a javascript emulátor alapján, ugyanazt a HDD image-t is használom...
http://pdp11.aiju.de/
persze egyszerűbb lett volna átírni C-be, és azt lefordítani, de úgy nem lett volna kihívás... :-) és kb. 1/4 sebességű lenne ehhez képest :-)