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å en generell beskrivelse av
|
|
kildefilene dersom du skulle være interessert i det, men det er ikke
|
|
nødvendig dersom du bare vil kompilere og få en kjø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 å bruke og spre disse fritt. Men ønsker du å gjø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år vi at
|
|
flere forskjellige personer jobber på de samme tingene. Men kom gjerne
|
|
med forslag til hvordan ting kan gjøres bedre.
|
|
|
|
Disse kildefilene skal ikke brukes til kommersielle formå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ø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ør kompilering må filen Makefile justeres til å passe ditt
|
|
system. For Amiga og win32 vil dette bare bestå i å 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 å skrive "make" i katalogen du har kildefilene
|
|
i. Resultatet blir en kjørbar fil tikiemul eller tikiemul.exe. Kopier
|
|
(minimum) denne fila og tiki.rom dit du ønsker å 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å 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å
|
|
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å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ø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å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å implementeres og funksjoner som kan kalles). Dette er den eneste
|
|
fila man trenger kjennskap til dersom man ønsker å 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 å 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ør systemkoden i stand til å 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 å 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ørn Djupdal, djupdal@stud.ntnu.no
|