MS-DOS emulálás, com port megfigyelés

Sziasztok!

Van egy kb. 30 éves program amit próbáltam virtualbox, és vmware alatt is futtatni. A hostra még feltelepítettem a com0com virtuális port emulátort. (putty segítéségével látom is hogy COM1 tükröz COM2 re, oda vissza, gépelgettem terminálablakban). Emulált Windows al is kipróbáltam, hogy a hozzáadott com1 et látom a host gép com2 portján.

A problémám, hogy a futtatót dos alapú program kommunikációját sehogy nem látom. Probáltam COM1 sé COM2 paraméterrel. A programban nem sok az infó.

Hogyan tudnám elfogni virtuális gépben???

 

 

Hozzászólások

egy régi vasról szeretném átemelni és megnézni, hogy kommunikál e. sajnos ez még külön kártyát használ az alaplapon rs232 kommunikációhoz. ha a program a kártyához van írva gondolom hiába probálok emulátorokat, mert dos alatt még nincs com és fejlettebb címzések. így a régi szoftver csak azzal a kártyával fut, emulálni nem tudom, vagy átrakni modernebre

+1 a dsoboxra, ahol a konfigban

serialY=directserial realport:comX

ahol X az egyik példányban a com0com egyik virtuális portszáma, a másik példányban pedig egy másik (aztán használhatod a kedvenc serial sniffered a forgalom monitorozására/loggolására)

Y pedig a dosos proggi által használt port száma

Nekem volt, hogy az UART chip TTL szintjere kotott logikai analizator volt a megoldas. Volt, hogy Arduinoval kuldtem es fogadtam parancsokat, amikor valami hardware-t fel kellett deriteni. De az is mukodik, amit irtal.

A strange game. The only winning move is not to play. How about a nice game of chess?

ehhez neked külön kártya fog kelleni a progit elnézve, nem sima soros port

sztem valami ilyesmi fog kelleni neked: http://www.decision-computer.de/Produkte/8255/8255-N-e.html

kérdés honnan lesz ISA slotod... múltkor láttam, hogy a TPM csatiban levő LPC-t használták fel hogy kivezessék az ISA-hoz kellő signalingot:https://www.vogons.org/viewtopic.php?t=93291

https://www.youtube.com/watch?v=putHMSzu5og

8255-ös az PPI, nem RS232. Ahhoz 8251-es chip (vagy annak emulációja) kellene neki. MAME amúgy ezeket mind emulálja, talán van valami PC kompatibilis klón is, amiben ezek a megfelelő portokon ott vannak (vagy hát open source, nem nehéz átírni a portszámokat).

Bár igaz, hogy a program a 8255-t is használja valamire, F8 címen nem a beépített PPI van.

Sőt, van ott több PPI is, AD kártya, input kártya, output kártya. Jól meg lehetett tömve az eredeti gép.

Szerk.: és a timer sem a beépített PC portokon van, szóval van még egy külön PIT (timer) kártya is.

 

Szóval az eredeti gépben van egy 8251-es UART bővítés, 8 (lehetséges) PPI, és 1 PIT. Ezek mind bővítések, saját portokon.

Első körben az eredeti, vélhetően egyedi hardvert kéne látni, hogy micsoda, mi van benne, mert ugyan lehet nézegetni, hogy a kezelő sw mikor, milyen portra mit küld ki, de ha a másik "végén" nincs semmi, ami fogadná és válaszolna, akkor nem sok érdekeset fog látni...

Igen, erre figyelni kell, mert sokan azt hiszik, hogy az soros port (RS-422, RS-485, TTL UART) meg az RS-232 azonos, közben meg csak hasonló szabványok, de más jelszinttel dolgoznak adott esetben, ezt nem egy videón láttam már, hogy retrósok is végigszopják ilyen USB2serial dongle, átalakító eszközökkel, hogy rádugják, de nem működik, mert a retró eszköz RS-232 jelszintet kérne (5-15V, ami 3,3V-tól érzékelődne minimum aktívnak), de az átalakító, meg modern gép portján a UART csak TTL 5 voltra van tervezve, és még ehhez képest az aktív jelet is csak olyan gyengén küldi, hogy beesik 3,3V alá, így a valódi RS-232 eszköz azt hiszi, hogy active low / idle a jel, és nem veszi észre, hogy igazából kommunikálnak vele.

A helyzetet tovább rontja, hogy sok adapter gyártója, főleg a noname kínai szutykoké, vagy fel sem tünteti pontosan a protokollt, vagy tévesen, és csak azután veszed észre, hogy nem megy, amikor már késő, megvetted.

A másik hasonló népszerű tévedés, hogy a 9 tűs soros portot szinte mindenki DB-9-nek aposztrofálja, közben az meg DE-9, B-sől nem is létezik 9-es. Ami a keveredés alapja, hogy a DB25-ös csatlakozó volt az elődje, és ennek alapján azt hitte mindenki a 9 tűsről, hogy akkor az DB9 lesz. Ezekkel én se voltam tisztában, amíg nem kezdtem el róla videókat nézni, egy világ omlott össze bennem, mikor megértettem, hogy milyen tévedésben vagyok ezzel kapcsolatban én is.

The world runs on Excel spreadsheets. (Dylan Beattie)

A 8251 itt ugyanúgy RS232, csak épp nem ez van a PC-ben, mint COMx port, máshogy kell programozni, ráadásul más IO címen is van. RS232 chip is van (volt) egy raklappal, PC-ben COMx hardverek adott IO porton levő 8250,16450 meg 16550 kompatibilis valamik voltak mindig.

A 8255 meg sima PIO, azaz párhuzamos 3x8 bit-es IO chip, semmi köze semmilyen RS-xxx-hez. Legfeljebb bit-banginggel lehet belőle soros portot csinálni, de itt nem ez van.

Szerkesztve: 2024. 05. 06., h – 15:55

A 8251 az F0/F1 címeken az nem a szabvány soros port UART (8250-16450-16550), ez egy sokkal egyszerűbb (koraibb) chip 2 regiszterrel, FIFO nélkül. Ezt nem hinném, hogy bármilyen PC emulátor támogatja. 8-bites gépekben, meg az Atari ST-ben MIDI-re használtak hasonlókat (MC6850 vagy a MOS 6551).

Szerkesztve: 2024. 05. 06., h – 16:02

A nyito alapjan gondolom hogy Win alol probalkozol. No, az nincs keznel, de linuxos QEMU-val relative egyszeru a dolog. Legalabbis a kovetkezo kombinaciot kiprobaltam a regi DOS-os rendszeremmel, es mukodott - azaz ez igy mukodokepes lehet:

  • Tedd fel a tty0tty kernel drivert: ez letrehoz (itt konkretan) 4 nullmodem-part: /dev/tnt0 <-> /dev/tnt1, ... /dev/tnt6 <-> /dev/tnt7 osszekottetesekkel
  • Elinditod a QEMU-t ezzel a parameterrel: `qemu-system-x86_64 -machine accel=kvm -hda ./dos.image -serial /dev/tnt0`

Ekkor a DOS COM1 portjanak a masik vege a nullmodem masik vege lesz, azaz a /dev/tnt1. Kiprobaltam a klasszikus DOS-os parancsokat (copy con > COM1, type COM1), mindket iranyban szepen megy a kommunikacio. Gondolom a COM0COM az a Win megfeleloje a tty0tty-nek, szoval ha az fel van telepitve akkor hasonlo QEMU-parancs kombiancioval azert illene mennie ott is. Azt mindenkepp nezd meg hogy a COM0COM az minek nevezi el ezeket a virtualis soros portokat. Nagyon halvany es/vagy keves tapasztalatom van csak Win-es soros portokkal, de az feltunt hogy ezeket a virtualis es/vagy USB-s soros portokhoz altalaban eleg nagy szamot rendel hozza. Szoval azt mindenkepp nezd meg elobb mindentol fuggetlenul hogy a COM0COM az miket hoz letre _es_ hogy tudsz-e veluk kommunikalni. Peldaul ha a COM0COM az letrehozza a COM6  <-> COM7 part, akkor nyiss meg ket puttyot, az egyiken a COM6-ot, a masikon meg a COM7-et. Es amit az egyik putty-ba begepelsz azt latnod kell a masikon es vice verza. Csak akkor probalgatsd a virtualis gepet, ha ez a teszt sikeresen lement.

Lenyeg a lenyeg hogy valoban szukseges ehhez egy olyan soros port realizacio amit a host operacios rendszere fizikainak is hihet (linux alatt ugye ez a /dev/ttyUSB*, /dev/ttyS*, /dev/ttyACM*, /dev/tnt*, stb, Win alatt pedig a COM* portok). A virtualizator (QEMU, Virtualbox, barmi) pedig megcsinalja azt hogy ezt a fizikai soros port realizaciot hozzakoti a megfelelo I/O portokhoz, igy a guest oprendszer a megfelelo I/O muveleteken keresztul (lasd: COM1:  0x3F8, IRQ 4, stb) eleri az adott fizikai (vagy fizikainak latszo) hardvert. 

Meg akkor azt neznem meg hogy a nullmodem driver mennyire es/vagy milyen gyakran flush-ol. Illetve tenyleg, az is egy fontos szempont hogy konkretan milyen soros port hardvert is virtualizal a virtualizator. Abbol is sokfele van... Jo kerdes hogy a qemu vagy barmi ilyen szempontbol "pluginezheto" esetleg, hogy sajat I/O tartomanyra vagy megszakitasra ra tud-e cuppanni egy kulso modul-szeruseg ami biztositja a szukseges funkcionalitast. Ilyesmit csak Cortex-M0-s meg RISC-V jellegu rendszerekhez csinaltam, x86-hoz annyira nem. 

Szerkesztve: 2024. 05. 06., h – 22:03

Szia!

 

Háát csöppet meredek lesz a válasz, de azt tudom javasolni, hogy szerezz be egy soros bővítő kártyát tedd bele a gépedbe és add át egy az egyben a virtualbox-nak...

Azért meredek a válasz, mert nem tudom létezik e olyan kártya ami jó a mostani gépbekbe és van hozzá DOS driver.

 

FreeDOS egyébként szóbajöhet? Gondolom az natívan is felmegy egy csomo "mostani" PC-re.

 

Szerk: http://www.tronicore.com/en/serial-rs232-pci-card

Oké, én voltam pontatlan, elnézést. :)

 

Az igazság az hogy nem sokat fogalkoztam DOS-al... Vagy túl fiatal vagyok, vagy nem dolgoztam eleget ipari környezetben...

 

Viszont jó hír, hogy az általam linkelt kártyát kezeli a DOS a leírása szerint. (Remélem most nem írtam nagy ökörséget :D )

Egy COM portot a hozzátartozó "IO PORT" és IRQ definiál.

Alapértelmezett értékek itt:
https://en.wikipedia.org/wiki/COM_(hardware_interface)

A virtuális gép BIOSában állítsd be com0-3 portjait erre:

CPUMOD    EQU    81H    ; CPU KARTYA 8255-OS PARANCS SZAVA    ( 1000 0001 )
;
CPUAP    EQU    0F8H    ; CPU KARTYA 8255-OS 'A' PORT CIME
CPUBP    EQU    0F9H    ; CPU KARTYA 8255-OS 'B' PORT CIME
CPUCP    EQU    0FAH    ; CPU KARTYA 8255-OS 'C' PORT CIME
CPUPP    EQU    0FBH    ; CPU KARTYA 8255-OS PARANCS CIME

Az IRQ-t még nézd ki a forrásból, a környéken lehet definiálva, 03h, 04h az alapok - vagy ha megvan a régi kártya nézd meg a jumpereket/dipswitcheket rajta, és lesd le onnan :)
 

Nu akkor összekeverdtem a plusz infótól :)

Ebben az esetben úgy lesz a 3 párhuzamos portból négy soros port hogy nem beszélünk hülyeséget :)
0xf8 miatt gondoltam rá, nekem az maradt meg halvány infónak sorosporttal kapcsolatban...

Lehet hogy akkor a virtuális sorosportot 0xf0 -ra ... (0x3f0 inkább?) kell konfigolni?

;=== CPU 8251 PROGRAMSZAVAI ES CIMEI ===
;
MOD51    EQU    0EEH    ; 9600,8 BIT,NINCS,2 STOP,x16        ( 1110 1110 )
COM51    EQU    37H    ; COMMAND SZO                ( 0011 0111 )
RES51    EQU    40H    ; RESET SZO                ( 0100 0000 )
SIODAT    EQU    0F0H    ; ADATREGISZTER CIME
SIOCOM    EQU    0F1H    ; PARANCSREGISZTER CIME

Mindenesetre az indító gondolatomat továbbra is fenntartom hogy a com portot egy IOport és egy IRQ definiál, ezeket kell egyeztetni a működő host és a virtuálisgép között.
 

Én azt sem értem igazán, mit is csinál az "app", és mire számít.

Az  assemblyből  beollózott részletek alapján egy MCS80 rendszer chipjeit kell megszólítani, valami magasztos cél érdekében. Az is lehet, hogy a 8251 soros portján a bővítőkártya kifelé kommunikál, vagy parancsokat fogad.

"Normális ember már nem kommentel sehol." (c) Poli

Modern gépre is tudsz ISA kártyát kötni, de csak asztali gépnél lehetséges, ha megnézed a YouTube-on ott elmutogatják, valami alaplapi header-re, vagy chipset kivezetésre kell csatlakozni, és onnan ISA riser-ezni, meg külön tápozni. Elég csúnya hack, tényleg csak akkor ajánlom, ha annyira fontos, és máshogy nem tudod megoldani.

The world runs on Excel spreadsheets. (Dylan Beattie)

Akár még ez is, de ennél a driverei beleszólhatnak a kompatibilitásba. Míg az alaplapi megoldás csúnyább hack, de az működik. A modern PC-k ugyanis épp úgy támogatnak ISA-t, ha más nem a chipset, mert hőmérsékletmérés, stb. azon megy, csak épp az alaplapokon nincs már kivezetése ISA csatlakozóként, bár állítólag még az is van, de csak ilyen méregdrága, ipari gépekbe szánt alaplapoknál.

The world runs on Excel spreadsheets. (Dylan Beattie)

Szerkesztve: 2024. 05. 07., k – 13:05

Nem egyszerűbb újraimplementálni egy modern PLC-be az egész cuccot?

Vagy akár FPGA-ban az egész HW-t, de ehhez nehezebb lesz vállalkozó embert találni.

Jobban jársz ha beruházol hardveres sniffelésre.

Ha ragaszkodsz a virtuálgépes megoldáshoz, akkor pl. ebből átemeled a megfelelő rutinokat egy qemu-ba, lefordítod és örülsz.

„Az összeomlás elkerülhetetlen, a katasztrófa valószínű, a kihalás lehetséges.” (Jem Bendell)

A gép egy 768kb memóriás, 40Mhz-es csoda ami megy. A kártya: PT1227W   V3.2 isa kártya. (https://www.ebay.com/itm/186357283396?customid=&toolid=10050)

A merevlemez klónozva, virtuális gép alatt el is indul a dos, de a com port hozzáadásánál semmi jel. (vmware és virtaulbox)

Valakinek valamilyen ötlete lenne amit megpróbálhatok?

Ez egy mezei (akkor szokasos) super I/O kartyanak tunik, 1 HDD, 1 FDD, 2 soros, 1 parhuzamos es gameport tamogatassal. Ennyi az osszes sorosport a gepben, amit ez a kartya ad? A virtualis gepben arra a cimre raktad a soros portot, amelyik cimen/irq-n a nalad levo kartyan jumperelve van?

Ez gondolom nem az eredeti kártya.

Szerintem még mindig nem érted a problémát.

Soros portnak neked 8251-es kell, nem 16450 meg 16550-es, amit ezek a super IO chipek (vagy emulátorok) implementálnak. Standard PC-ben sosem volt 8251-es, ez egy nagyon legacy UART chip, szóval csak egyedi kártyán lehetett ilyennel találkozni.

Ezen kívül az ASM alapján kell még 8255-ös PPI és 8253-as PIT is, mind egyedi portokon.

Szerkesztve: 2024. 11. 12., k – 17:45

Zsugabubus ez az eredeti kártya... XD Itt az eredeti kártyáról 2 fotó: (https://drive.google.com/drive/folders/1XBBjD7GL_koStsB7WZlI68Q7yk6fygt…)

Arra gondolsz, hogy az a használatos cim/irq nem lesz a mai gépekben? nem értem.

ez alapján (hasonló): Winbond AI-1078E Super IO Card.pdf

COMB   2F8/IRQ3

de ha a hátulját nézem a kártyának (festés) akkor com4/irq3 et értelmezek, próbálom dekódolni

Akkor volt benne egy másik adatgyűjtő kártya is, 8251-es UART-tal, és egyéb extrákkal.

Vagy ez:

;=== CPU 8251 PROGRAMSZAVAI ES CIMEI ===
;
MOD51    EQU    0EEH    ; 9600,8 BIT,NINCS,2 STOP,x16        ( 1110 1110 )
COM51    EQU    37H    ; COMMAND SZO                ( 0011 0111 )
RES51    EQU    40H    ; RESET SZO                ( 0100 0000 )
SIODAT    EQU    0F0H    ; ADATREGISZTER CIME
SIOCOM    EQU    0F1H    ; PARANCSREGISZTER CIME

kamu, és semmi köze a programhoz, amit futtatsz.

 

Eleve egy PC-n a legegyszerűbb UART az a 8520 volt, ennek 8 regisztere van:

https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming#…

 

A programod által használt 8251 sokkal egyszerűbb, régebbi, és nem alulról kompatibilis ezzel (van összesen 2 címezhető regisztere, látszik is az ASM kódban, F0 ahol programozod (olvasva státusz regiszter), F1 ahova/ahonnan írod/olvasod azt amit küldeni/fogadni akarsz). Soha nem is volt szabvány PC-ben, ráadásul a PC-s COM portok egyike sem 0F0-n van. Ezen felül az ASM részlet több más chipre is hivatkozik, 8(!) db PPI-re és egy PIT-re. Valószínűleg ezek egy custom adatgyűjtő kártyán voltak így együtt.

Hát itt elég nagy katyvasz van. Az IO kártya amit linkeltél az Winbond W83757 I/O chip van. Annak az IO és egyéb vonalai a szabványos címtérben voltak. A másik chipe I/O illesztő, nincs köze a program működéséhez.

A kód amit megosztottál, valamilyen egyedi I/O chipsetes géphez tartozik. A benne meghivatkozott címek nem szabványosak. Így dallam alapján, még azt mondanám, hogy ez valamilyen 8080-as célgép lesz. Mintha az SBC-80/10 vagy SBC-80/20 lenne.
Szerintem jobb lenne ha valahova feltennéd az eredeti programkódot vagy forrást a teljes terjedelmében.

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Igen, itt voltak anno rendesen mokolások.

a gép teljes merevlemeze ebben a zipben van: https://drive.google.com/file/d/1uMG_uZYKBLp4ppwvu60Pw0qFVk_aGax-/view?…

zip jelszava: meghajto (A google beriaszt rá.)

Annyi emlékfoszlányuk van, hogy dos alatt com1 vagy com2 ön működött 9600, 2 stopbittel, paritás nélkül.

Ötlet: virtuális vagy fizikai pcn amin van com port szerinted ez küldene rá bármit is? (com port halgatózásra gondoltam)

Haha, jó nagy félrevezetés az egész. Az ASM egy Z80-as célgépre vonatkozik:

;#      Ez a program tartja a kapcsolatot RS-232 tipusu soros kom-      #
;#      munikacio hasznalataval az IBM-PC szamitogeppel es vezerli      #
;#      a takarmanykeverot a Z80-as mikroszamitogeppel.

 

Majd Z80-as mnemonikokkal folytatódik a kód. Nem ez fut a PC-n.

akkor volt egy ősrégi aztán meg lett egy újabb c -vel fordult változat?

a kábel a comb csatlakozóra van a kártyán dugja, JP9 -nek hivja a hátoldalon a jumper állásokat, összenézve akkor ez com4/irq3 vagy már ehhez is hülye vagyok?

Te write-only módban vagy?

Fentebb leírtam, az ASM kód az egy Z80 alapú gépre van, mivel Z80 program, az sose futott PC-n.

A C-s program ami a PC-n fut (PANK.EXE), aminek nincs meg a forráskódja, és végül is lehetséges, hogy valamelyik standard COM portot használja.

A PC-s program arra van, hogy kommunikáljon a Z80-as géppel, soros porton keresztül.

Nem csak igen nehezen értelek. Eddig az jött le, hogy az asm kód akkor otthagyott maradványok valamire, a rendszer a pank.exe-t használja. Azt mondod lehetséges, hogy standard com portot használ (én ez a kártya és jumperezésére is erre következtettek). De ha feltételezzük,hogy standard com még ott van hogy milyen istennyila opció lehet amivel beszélget.

Valamilyen debuggerrel futtatva biztos kiderülne, hogy mit is akar.

Viszont mi van a soros kapcsolat másik végén? Mert oda az a Z80-as célgép való, ami az ASM-ből előállított kódot futtatja (a forrás alapján mindenféle csigát meg keverőt és fittyfenét kapcsolgat).

Megnéztem.

A takarmánykeverőben egy Z80 alapú mikroszámítógép van, amivel soros porton keresztül kommunikál. A program nem fog menni önmagában, mert a indulásnál lekérdezi a keverő meglétét és kiszáll, ha nem látja.
A PCn a PANK.exe futott, ez vezérli a keverőt. A z80 könyvtár a célgép forráskódját tartalmazza.

Dosboxból az alábbi módon tudod kipróbálni/használni:
Kell egy USB-soros adapter, de olyan ami full RS232, mert régi a vas és nem fog menni a csak RS-232 kompatibilis adatpterrel.
Az adaptert rádugod a gépre és felkonfigurálod, hogy sima felhasználóként tudjad használni. Az adapter sebességét 9600-ra állítod (stty -F /dev/ttyUSB0 9600), mert nem biztos, hogy a DOSBOX tud sebességet állítani.
Beszélsz a gépet használókkal, hogy mondják meg melyik portra volt a keverő rádugva. A kártyán megnézed  a jumperek állását és abból, a kártyán lévő táblázat alapján kitalálod, hogy az eredeti gép milyen portcímeket és irq-t használt. Tipikusan az alacsonyabb port érték volt a COM1 a magasabb a COM2.
Ha linuxot használsz megkeresed a dosbox.cfg (.dosbox könvtárban a /home-on belül) filet és beírod az alábbit:

serial1=directserial realport:ttyUSB0 irq:4 port:0x3f8

A realport: ttyUSB0 az a /dev/tty amit az USB adaptered használ. irq: a soros kártyás irq-ja, a port: a soros kártyád portja.

Ezután összedugod az adaptert a keverővel és dosboxban elindítod a pank.exe-t. Ha működik akkor örülsz. Magát  a kommunikációt le tudod menteni az alábbi módon:
socat /dev/ttyUSB0,raw,echo=0 SYSTEM:'tee bejovo.txt | socat - "PTY,link=/dev/ttyVRT0,raw,echo=0,waitslave" | tee kimeno.txt'

Ez esetben a doxbox.cfg-ben át kell írni a realport:-ot ttyVRT0 -ra. Mondjuk jó dolog ellenőrizni/beállíatni, hogy a /dev/ttyVRT0-ra legyen a felhasználónak írási jogosultsága.

A pank.exe-ből ki lehetne nyerni a port és IRQ értéket, de nincs kedvem ghidra-t telepíteni.

Kérdés, mi lenne a cél? Újra üzemeltetni a keverőt, vagy új vezérlőprogramot írni? Ha csak a keverő elindítása, akkor gyakorlatilag bármilyen 386 vagy 486 elviszi a programot az eredeti soros vezérlőkártyával.

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

>> A pank.exe-ből ki lehetne nyerni a port

COM2 (0x2f8) , 9600 8N1 van beleégetve

 

0x218F8    SorosIni()
{
    ...
    0x21899 setserial(po= 2, sp= 9600, pa= 0, b= 8, sb= 1)
    {
        ...
        0x21775 setport(po) -> ha 1, akkor ioaddr=[0x0040:0x0000] (tipikusan 0x3f8), ha 2, akkor ioaddr=[0x0040:0x0002] (tipikusan 0x2f8)
        ...
        0x217BA setspeed(sp) -> ioaddr/ioaddr+1 feltöltése a megadott baudrate alapján
        ...
        0x2182E set_pabsb(pa, b, sb) -> ioaddr+3 (lcr) beállítása a megadott paraméterek alapján
        ...
    }
    ...
    0x21753 initserial()
    {
        ...
        0x21615 set_svects() -> intvec[0x0b] (irq3) és intvec[0x0c] (irq4) mentése, és saját handler beállítása (0x2148F com_int())
        ...
    }
    ...
}

"Tipikusan az alacsonyabb port érték volt a COM1 a magasabb a COM2"

Ugy emlekszem, a 0x3f8 volt a COM1, a 0x2f8 pedig a COM2, szoval pont forditva. Meg a ttyUSB0 ha ilyen szintaxissal nem megy, akkor a /dev/ttyUSB0 megprobalhato. De amugy +1 az egeszre!

A strange game. The only winning move is not to play. How about a nice game of chess?

Eddig eleg keves infot adtal meg, emiatt nem is szoltam hozza. Most viszont tobb korabbi keresre/kerdesre reagaltal, ami jo.

Az architektura nekem is ugy tunik, amit itt felettem tobben kibogoztak:

Van egy regi, DOS-os PC, ezen fut a pank.exe (esetleg pank1, pank2, gondolom kicsit mast csinalnak), ami vezerli az eszkozt. Talan Turbo Pascal, vagy C alapu lehet, az EGAVGA.BGI alapjan (mindkettobol lehetett soros portoto kezelni, nem tul bonyolult hardware). Ez soros porton (sima RS232, a korabbi tippekkel ellentetben) kommunikal egy Z80 alapu vezerlovel, aminek - udvarias gesztuskent - ott a kodja. ASM-ben irtak, es a megadott feladat (ha jol ertem, a gep beallitasai alapjan inditva) motorokat/szelepeket/ilyesmiket kezelhet, meg nyomogombokra es erzekelokre reagalhat. Van par adatfile, meg regi naplo, ezekben van a recept, hogy mivel mit keverjen, meg talan az aktualis leltar is.

A rendszer gondolom mukodik, a kerdes mar csak az, hogy mi a pontos celod.

Ha szeretned a regi vasat biztossa tenni (akarmikor meghalhat egy ilyen 25 eves PC), talan emulalva/virtualizalva atteheto az egesz uj gepre. Ha tenyleg standard soros portot hasznal, akkor csak olyan emulator - vagy VM - kell, ami ezeket lekezeli. Ugy emlekszem, hogy a qemu tud ilyesmit kezelni Linuxon, de az idozeteseket elronthatja - ha fontosak (valoszinuleg nem idokritikus, COM portnal nem jellemzo). Dosbox is mukodhet, van a neten nyoma, hogy ez tamogatott, es valakinek sikerult.

Aztan valaszthatod azt, hogy a Z80 kodot ertelmezve, esetleg a kommunikaciot visszafejtve ujrairod a PC oldalt teljesen. Ez eleg nagy munka, de mukodik, uj funkcionalitast kapsz, es lehet par evtized az eszkozben. A Z80-as kutyu meg a vezerelt mechanika persze ilyenkor marad.

Megteheted, hogy ha mar a PC-t csereled, a Z80-as vezerlot is (az is jopar evtizedes). Ez meg annal is valamivel nagyobb munka (bar a visszafejtes resze egyszerubb), de ha a mechanika egyebkent jo, lehet ertelme. Amit az akkori, Z80-as vezerlod tudott, azt egy mai mikrokontroller siman hozza, PC-vel (vagy SBC-vel) osszekotheto, es a PC oldali software is ujrairhato. Tobb hasonlo projectben vettem mar reszt, be kell azonositani milyen erzekelo hova van kotve, meg milyen outputjai vannak (es melyik mit csinal), innentol a tobbi ujrairhato a kor kovetelmenyenek megfeleloen. (mondjuk a lyukszalagos CNC maro nem erte el a ceges NASt, a Linux alapu meg igen)

A strange game. The only winning move is not to play. How about a nice game of chess?