Ultimo - Primo emultor

 2002-2024 Grsz Attila (gyros KUKAC freemail PONT hu)

Mi ez?
======

Emultor, olyan program, ami egy adott hardver (jelen esetben
szmtgp) mkdst imitlja egy msik tpus hardveren.

Ebben a konkrt esetben egy 8-bites magyar mikroszmtgpet
emullunk a PC hardveren, ami pillanatnyilag 32-bites.


Mi a Primo?
===========

A Primo magyar 8-bites szmtgp volt, 1984 s 1986 kztt 
gyrtotta a Microkey, fejlesztse az MTA SZTAKI-ban trtnt.
Iskolai hasznlatra szntk, de vgl klnbz okok miatt 
erre nem bizonyult alkalmasnak.

Processzora az egykori NDK-ban Z-80 processzor alapjn
licenszelt U880 volt. ROM programja sok hasonlsgot mutat
a TRS-80 Model I. -gyel, ami Magyarorszgon leginkbb HT-1080Z-
knt volt ismeretes.

A gp sok szempontbl egyedi megoldsokat tartalmazott. Tovbbi
informcikrt s az emultor j verziirt rdemes megltogatni 
a http://primo.homeserver.hu weboldalt.


Az Ultimo emultor kpessgei
=============================

- teljes, ciklusra pontos Z80 (U880) emulci
- Primo A32/A48/A64 s B32/B48/B64 tpusok tmogatsa
- turb md (3,75 MHz) emullsa
- ki- s bemeneti portok emulcija:
  - NMI megszakts emulcija
  - teljes hang emulci
  - a teljes Primo billentyzet (RESET is) s mindkt joystick emulcija
  - Centronics printer emulci
  - soros IEC protokoll szint Commodore 1541 drive s printer emulci
- az elterjedt PTP s PRI formtum fjlok rsa/olvassa, BASIC forrs direkt beolvassa
- szvegbeilleszts a Windows vglaprl


Az Ultimo emultor hinyossgai
===============================

- magn bemeneti vonalak nincsenek emullva
- a hang kimenet nincs kivezetve a magn kimeneti vonalakra
- nyomtatk grafikus mdja nincs tmogatva


A program hasznlata
====================

Futtats
--------

Klikk az EXE-re. A menk remlhetleg magukrt beszlnek.

Parancssori opcik:
Ultimo.exe [/b] [/d] [/h] [/ma32|a48|a64|b32|b48|b64] [/t] [/w] [PTP file/PRI file]

/a : autostart tiltsa PRI llomny parancsori indtsa esetn
/b : ROM/RAM banking engedlyezse (pl. Spectrum emulcihoz)
/d : dupla kperny az alaprtelmezett
/h : hang bekapcsolsa indtskor
/i : i:RRGGBB formtumban megadva alaprtelmezs szerinti szvegszn mdostsa
/m : Primo modell belltsa (a32, a48, a64, b32, b48, b64, c64)
/p : p:RRGGBB formtumban megadva alaprtelmezs szerinti httrszn mdostsa
/t : turb kapcsol be (3,75 Mhz)
/w : az emultor maximlis sebessggel fut

Egyenlre csak PTP file-ok parancssori indtsa tmogatott.

Monitor
-------

A programban kett - egy egyszerbb s egy komplexebb - monitor s disassembler
is tallhat. Az egyszerbb elhvsa az ESC[-APE] gomb lenyomsval trtnik.
Msodik letsre a program visszatr az emullt gp kpernyjhez.
Tovbbi monitorkezel gombok:

F1        : Disassembly lista az IP aktulis rtktl kezdve.
            A kp tetejn a fontosabb regiszterek tartalma lthat.
F2        : Memriatrkp, az emullt gp
ENTER     : Egy assembly utasts lptetse.
PAGE UP   : Oldal lapozsa visszafel
PAGE DOWN : Oldal lapozsa elrefel
FEL-NYL  : Egy sor lapozsa visszafel
LE-NYL   : Egy sor lapozsa elrefel

A komplexebb, interaktv monitor elhvsa az Alt+M billentykombincival 
vagy a menn keresztl hvhat be. Az tmogatott funkcikrl a '?' 
begpelsvel kaphatunk segtsget. A kilps kizrlag az 'x' parancs 
bersval hajthat vgre. 

Joystick
--------

A joystick emulci a numerikus billentyzeten s a PC-hez 
csatlakoztatott esetleges botkormnyon keresztl valsul meg.
Az albbi numerikus billentykkel az egyes joystick emullt: 

NumPad 8  : fel
NumPad 2  : le
NumPad 4  : balra
NumPad 6  : jobbra
NumPad 0  : tz

A PC-hez csatlakoztatott esetleges botkormnyt az Ultimo kettes
joystickknt hasznlja.

Magn
-----

A kazetts megnetofon a Primohoz kapcsolhat egyik legelterjedtebb
s ezrt legfontosabb perifria. A hozz tartoz ktfajta PC-s
formtum egyenlre a PTP s a WAV (tmrtetlen PCM).

A legelterjedtebb a PTP formtum, ami Lszl Jzsef munkja. Az
Ultimo mind az rst mind az olvasst tmogatja ezen formtumban.
A PTP formtum htrnya, hogy csak az eredeti ROM magnformtumval
kpes megbrkzni. Elnye az elterjedtg, a gyorsasg s a kis mret.
Mkdsi elve rviden annyi, hogy az alap ROM programban n. csapdkat 
helyeznk el, s az eredeti Primo magnkezel rutinok helyett az emultor 
fggvnyeit hvjuk meg, gy lehetseg nylik az eredetinl jval 
gyorsabb tltsre vagy mentsre.

Kezels: a PTP formtum llomnyt a menn keresztl vagy az ALT s
az F5 egyttes lenyomsval csatoljuk az emultorhoz. Ezutn csak
ki kell adni a LOAD parancsot az emullt gpnek, s a tlts elindul.
Ha a betlttt program nem autostartos akkor ltalban a RUN parancs 
bersval indthat.

Ments esetn a SAVE parancsot rjuk be, mg idzjelben a kvnt
llomnynvvel (lehetleg kezet nlkl). Az Ultimo ekkor a mentst
ezen nvvel az aktulis PC-s knyvtrba vgzi el.

A msik kazetts formtum a jl ismert WAV. Mind a ments mind a beolvass 
tmogatott. Mentsnl elszr a menn keresztl ltrehozzuk a kvnt
WAV llomnyt, majd "lenyomjuk" a virtulis Play/Record gombot (F5).
A SAVE parancs kiadsa utn elkezddik a ments. Ez eltarthat egy
darabig. A folyamat felgyorsthat ha az emultort az ALT+F3 
billentykkel teljes sebessgre kapcsoljuk. Ha jra megjelenik az 'Ok'
zenet, a ments befejezdtt. Kapcsoljuk ki a Play/Record gombot s
zrjuk le a WAV file-t (ez nagyon fontos!).

Ezzel a mdszerrel tetszleges betltvel rendelkez llomnyokat is
elmenthetnk s azokat aztn egyszeren transzferlhatjuk az igazi 
Primo-ra.

Egyelre a tapasztalatok szerint a 22 kHz-es felvtelek a legmegbzhatbbak.

Beolvassnl hasonlan jrunk el, mint a mentsnl, csak rtelemszeren
nem a ltrehozs, hanem a megnyits menpontot kell vlasztani.

Lemezegysg
-----------

A Primora csatolt lemezegysg a Commodore soros busznak protokolljt 
hasznlja. Az Ultimoban csak az jabb cmzs (40h-7fh) soros 
busz van emullva, ami egyes A sorozat s az sszes B sorozat 
gpben tallhat.

A lemezegysg emulcija a Windows file rendszern keresztl 
trtnik. A floppy kezelshez be kell tlteni a CDOS nev
programot PTP, PRI vagy PSS formtumban. Ha az emullt Primo B
sorozat, akkor a BRK (PC-n: TAB) s a Reset (PC-n: F1)
egyttes lenyomsval az emultor megksrli betlteni az
E.PRI nev file-t, ami gyakorlatilag a CDOS. 

A biztonsg kedvrt rdemes lehet kiadni egy CMD RESET parancsot, hogy 
a CDOS megfelelen tudjon mkdni. Ezt a parancsot rdemes kiadni akkor is,
ha valamilyen hiba lpne fel.

A CDOS betltse utn lehetsges lemezparancsokat kiadni, pl.: 

CMD $
CMD LOAD"*"
CMD SAVE"program"

A programok mentse/tltse mindig az aktulis knyvtrba/-bl
trtnik az ismert PRI formtumban.

A CDOS teljes dokumentcija megtallhat egy kln PDF 
llomnyban.

Printer
-------

Az Ultimo-ban mind a soros CBM, mind a Centronics nyomtatk 
emulcija megvalsul. A CBM soros printerek tmogatshoz 
termszetesen szksges a floppy emulcinl mr emltett 
CDOS program is, ami a soros vonalakat kezeli, mivel ezt a 
Primo ROM programja alapesetben nem tartalmazza. Az aktulis 
betlttt BASIC program listjt pldul az albbi paranccsal 
kldhetjk a soros Commodore nyomtatra:

CMD LLIST

Tovbbi informcikrt rdemes a CDOS kziknyvhez fordulni.
http://primo.homeserver.hu/doc/konyvek/primofuzetek-cdos.pdf

A Centronics tpus prhuzamos nyomtatt a Primo ROM programja
alapesetben tmogatja, gy ehhez kln szoftver betltse nem
szksges. A fenti CDOS parancs BASIC megfelelje:

LLIST

A nyomtat kimenete minden esetben az Ultimo knyvtrba 
ltrehozott PRINTER.TXT file-ba rdik. Ezt a tovbbiakban
mr tetszleges PC-s programmal nyomtathatjuk vagy 
mdosthatjuk.


Ksznetnyilvntsok
=====================

* Hrsfalvi Levente: kzvetts
* Lszl Jzsef: magn tmogats, PTP formtum
* Majzik Istvn: tesztels, bugvadszat
* Manno Sndor: Primo-C dokumentci s ROM ments
* Mogyorsi Attila: dokumentci s ROM dump-ok
* Varga Viktor: honlap tmogats


Verzik
=======

v1.6.0
------

- Primo C 69-es kpernymd implementlsa
- interaktv monitor
- vlaszhat sebessg
- hardveresen gyorstott keyboard kezels opci (DirectInput)
- Pro/Primo (eredeti) sznpaletta javtsa (invertls)
- CP/M ROM boot javtsa
- CDOS munkaknyvtr bellts visszatltsnek javtsa
- CDOS EOI javts (nem kell CMD RESET boot utn)
- copy-paste ROM csapda hiba javtsa

v1.5.3
------

- szvegbeszrs a vglaprl
- BASIC programszvegek kzvetlen beolvassa ("begpelse") szveges llomnyokbl (.BAS)
- robusztusabb teljes kpernys md

v1.5.2
------

- vblank idzts pontostsa
- hanglejtszs javtsa
- GUI javtsok
- CP/M konfigurci (nincs boot lemez ezrt nem mkdik)

v1.5.1
------

- kikapcsolhat magn remote control
- nhny CPU hiba javtsa
- apr disassembler javts
- pontosabb interrupt idzts magnolvasskor
- hibajavtsok (PTP crash, Primo C md crash)

v1.5
----

- sznes Primo kompatibilits javtsa
- j prbeszdablak a sznbelltsoknak
- teljes kpernys md
- hibajavtsok

v1.4
-----

- autoload funkci a legtbb tmogatott formtumra (PTP is!)
- szimbolikus billentyzet kioszts
- hzd s ejtsd tmogats (Ctrl-t nyomva nem indul automatikusan, csak tlt)
- belltsok megjegyzse
- 32-es s 48-as modellek korrekt emulcija
- hibajavtsok

v1.3
-----

- kezdetleges Primo C emulci
- billentyzet-jraolvassi rta alaprtknek cskkentse
- nhny j parancssori opci (/a, /i, /p)
- PRI llomnyok kzvetlen betltse parancssorbl is
- video page lapozsi hiba javtsa
- parancssorbl hasznlt turbo kapcsol javtsa
- opcionlis dupla scan dupla kpernys mdban

v1.2
-----

- magnfelvtel betltse WAV formtumban
- beolvasfej lltsa (WAV formtum esetn)
- RAM/ROM banking Spectrum emulcihoz (parancssori opcival)
- kazetta-llomny visszatekercselse
- kpernytartalom mentse ms nven is

v1.1
-----

- snapshot formtum tmogatsa (.PSS)
- magn kimenet tirnytsa WAV formtumba
- kettes joystick emulcija a PC botkormnnyal
- CBM soros s Centronics nyomtatk emulcija
- floppy emulci javtsa
- hibajavtsok

v1.0
-----

- CBM soros port es 1541 floppy drive emulci
- PRI file-ok rsa/olvassa floppy emulcival
- joystick emulci a numerikus billentyzeten keresztl
- gpi kd monitor funkci (regisztertartalom, disassembler 
  s memriatartalom)

v0.50
-----

- valsgh hang tmogats!
- PTP kezelsi hiba javtsa (pl. demokazetta nem fagy ki tbb)
- PAUSE implementlsa
- vblank implementlsa (pr jtknak kell)

v0.45b
------

- ments PTP formtumba
- joystick port alapllapotnak javtsa
- idle ciklusok tengedse az OS-nek
- dupla kpernys md gyorstsa
- jobb hang tmogats
- parancssori opcik

v0.45
-----

- PRI file formtum tmogatsa
- kezdetleges hang emulci
- turbo kapcsol (3,75 MHz)
- aprbb hibajavtsok

v0.40
-----

- A48, A32, B48, B32 modellek tmogatsa
- frame buffer flipping tmogats
- screenshot-ksztsi lehetsg

v0.35
-----

- rengeteg javts
- NMI emulci

v0.25
-----

- az els nyilvnos verzi
