141 lines
5.9 KiB
Plaintext
141 lines
5.9 KiB
Plaintext
|
TIKI-100_emul V1.1.1, 25 august 2001
|
|||
|
------------------------------------
|
|||
|
|
|||
|
Dette er kildefilene til TIKI-100_emul. Denne fila gir en oppskrift p<>
|
|||
|
hvordan kompilere. Den gir ogs<67> en generell beskrivelse av
|
|||
|
kildefilene dersom du skulle v<>re interessert i det, men det er ikke
|
|||
|
n<EFBFBD>dvendig dersom du bare vil kompilere og f<> en kj<6B>rbar emulator. For
|
|||
|
mer informasjon om bruk av emulatoren, se TIKI-100_emul.txt.
|
|||
|
|
|||
|
Bortsett fra filene til Z80-emulatoren, er alle kildefilene mine. Jeg
|
|||
|
gir tillatelse til <20> bruke og spre disse fritt. Men <20>nsker du <20> gj<67>re
|
|||
|
forandringer vil jeg at du tar kontakt med meg. Dette fordi jeg ikke
|
|||
|
anser meg for ferdig med emulatoren enda. P<> den m<>ten unng<6E>r vi at
|
|||
|
flere forskjellige personer jobber p<> de samme tingene. Men kom gjerne
|
|||
|
med forslag til hvordan ting kan gj<67>res bedre.
|
|||
|
|
|||
|
Disse kildefilene skal ikke brukes til kommersielle form<72>l p<> noen som
|
|||
|
helst m<>te, hverken i original eller modifisert form.
|
|||
|
|
|||
|
Kompilering:
|
|||
|
------------
|
|||
|
|
|||
|
Kompilering skal v<>re temmelig enkelt. Kildefilene er skrevet i
|
|||
|
ansi-c og skal kompilere med de aller fleste c-kompilatorer. Makefile
|
|||
|
er skrevet for GCC og GNU make. For unix vil du ofte ha det som trengs
|
|||
|
allerede. For win32 m<> du skaffe deg cygwin, som finnes gratis p<>
|
|||
|
http://www.cygwin.com. En full installasjon anbefales. Amigaversjonen
|
|||
|
kan kompileres med verkt<6B>yene fra Geek Gadgets som finnes gratis p<>
|
|||
|
http://www.ninemoons.com. Dessuten trenger du NDK fra Amiga
|
|||
|
International, inc. Disse finner du bl.a p<> Amiga Developer CD.
|
|||
|
|
|||
|
F<EFBFBD>r kompilering m<> filen Makefile justeres til <20> passe ditt
|
|||
|
system. For Amiga og win32 vil dette bare best<73> i <20> velge rett
|
|||
|
system. For unix m<> du i tillegg sette en del andre ting. Alt dette
|
|||
|
skal v<>re forklart i Makefile.
|
|||
|
|
|||
|
Etter dette er det bare <20> skrive "make" i katalogen du har kildefilene
|
|||
|
i. Resultatet blir en kj<6B>rbar fil tikiemul eller tikiemul.exe. Kopier
|
|||
|
(minimum) denne fila og tiki.rom dit du <20>nsker <20> ha programmet. I
|
|||
|
tillegg anbefaler jeg at du kopierer plater-katalogen og
|
|||
|
TIKI-100_emul.txt til samme plass. S<> skulle alt v<>re klart til bruk.
|
|||
|
|
|||
|
Har du problemer, s<> ta kontakt med meg.
|
|||
|
|
|||
|
Generell beskrivelse av kildefiler:
|
|||
|
-----------------------------------
|
|||
|
|
|||
|
Skal du forst<73> hvordan denne emulatoren virker, b<>r du kjenne til
|
|||
|
hvordan en TIKI-100 fungerer. Se p<> min TIKI-100 hjemmeside for mer
|
|||
|
informasjon om det.
|
|||
|
|
|||
|
Disse filene skal v<>re med:
|
|||
|
|
|||
|
Systemuavhengige filer (selve emulatorkoden):
|
|||
|
- TIKI-100_emul.c Hovedmodul, inneholder toppniv<69>
|
|||
|
emulatorrutiner
|
|||
|
- TIKI-100_emul.h Inneholder alle prototyper, konstanter
|
|||
|
etc. som er n<>dvendig for den
|
|||
|
systemspesifikke koden.
|
|||
|
- ctc.c Z80-CTC emulering
|
|||
|
- disk.c FD17xx emulering
|
|||
|
- keyboard.c Tastaturh<72>ndtering
|
|||
|
- mem.c RAM og I/O-port h<>ndtering
|
|||
|
- parallel.c Z80-PIO emulering
|
|||
|
- protos.h Prototyper for funksjoner internt i den
|
|||
|
systemuavhengige koden.
|
|||
|
- serial.c Z80-DART emulering
|
|||
|
- sound.c AY-3-8912 emulering
|
|||
|
- video.c Videoemulering
|
|||
|
|
|||
|
Z80-emulator av Marat Fayzullin. Disse filene er inkludert med
|
|||
|
tillatelse men tilh<6C>rer ikke meg. Les egen copyrightnotis i filene og
|
|||
|
se p<> http://www.komkon.org/fms/EMUL8 for mer informasjon:
|
|||
|
- Z80.c
|
|||
|
- Z80.h
|
|||
|
- Codes.h
|
|||
|
- CodesCB.h
|
|||
|
- CodesED.h
|
|||
|
- CodesXCB.h
|
|||
|
- CodesXX.h
|
|||
|
- Debug.c
|
|||
|
- Tables.h
|
|||
|
|
|||
|
Systemkode for Amiga:
|
|||
|
- amiga.c
|
|||
|
- amiga.cd Katalogdeskriptor (locale)
|
|||
|
- amiga_icons/* Diverse ikoner
|
|||
|
- amiga_translations/* Oversettelser til andre spr<70>k
|
|||
|
|
|||
|
Systemkode for win32:
|
|||
|
- win32.c
|
|||
|
- win32.ico Ikoner
|
|||
|
- win32_res.h Konstanter brukt av resources
|
|||
|
- win32_res.rc Resources
|
|||
|
|
|||
|
Systemkode for unix:
|
|||
|
- unix.c
|
|||
|
|
|||
|
Andre filer:
|
|||
|
- Makefile GNU make kompatibel Makefile
|
|||
|
- plater/t90.dsk Tom 90k diskfil
|
|||
|
- plater/t200.dsk Tom 200k diskfil
|
|||
|
- plater/t400.dsk Tom 400k diskfil
|
|||
|
- plater/t800.dsk Tom 800k diskfil
|
|||
|
- plater/tiko_kjerne_v4.01.dsk TIKO-systemdiskett
|
|||
|
- tiki.rom TIKI-100 rombilde
|
|||
|
- TIKI-100_emul.txt Beskrivelse av emulatoren
|
|||
|
- LESMEG Filen du leser p<> n<>
|
|||
|
|
|||
|
Som du ser kan kildefilene deles inn i 2 grupper. Den systemuavhengige
|
|||
|
koden som inneholder alt som kan programmeres uten bruk av annet enn
|
|||
|
standard c-bibliotek, og systemkoden som inneholder de tingene som m<>
|
|||
|
programmeres for et spesielt system (bl.a GUI). Dette vil si at all
|
|||
|
emulatorlogikk er adskilt fra systemkoden.
|
|||
|
|
|||
|
Grensesnittet mellom disse to delene er laget s<> enkelt som mulig og
|
|||
|
er definert i TIKI-100_emul.h (i form av prototyper for funksjoner som
|
|||
|
m<EFBFBD> implementeres og funksjoner som kan kalles). Dette er den eneste
|
|||
|
fila man trenger kjennskap til dersom man <20>nsker <20> lage en versjon for
|
|||
|
et nytt system. Har du lyst til dette, s<> ta kontakt med meg.
|
|||
|
|
|||
|
Emulatorens main() funksjon (eller tilsvarende) befinner seg i
|
|||
|
systemkoden. N<>r systemkoden er klar til <20> starte emulatorkoden kaller
|
|||
|
den runEmul() som tar over kontrollen (g<>r i en uendelig loop). Hver
|
|||
|
80.000 cycle (skal tilsvare 20 ms) kalles funksjonen loopEmul() i
|
|||
|
systemkoden. Dette gj<67>r systemkoden i stand til <20> m<>le og senke
|
|||
|
hastighet samt sjekke brukeraktivitet. Resten av funksjonene som
|
|||
|
systemkoden m<> implementere (definert i TIKI-100_emul.h) kalles
|
|||
|
etterhvert som emulatoren har bruk for de.
|
|||
|
|
|||
|
Etter noe initialisering vil runEmul() starte Z80 emulator. Z80
|
|||
|
emulator trenger funksjoner for <20> lese/skrive til/fra
|
|||
|
RAM/ROM/IO. Disse (sammen med emulert RAM/ROM) er implementert i
|
|||
|
mem.c. Disse funksjonene vil, hver gang Z80 emulator benytter I/O,
|
|||
|
kalle en funksjon i en av de andre c-filene. F.eks dersom Z80 leser
|
|||
|
fra I/O-port 0x03 (tastatur-register) vil funksjonen readKeyboard() i
|
|||
|
keyboard.c kalles. Tilsvarende for alle andre I/O-porter.
|
|||
|
|
|||
|
---
|
|||
|
Asbj<EFBFBD>rn Djupdal, djupdal@stud.ntnu.no
|