Projects/tigris
Projects
/
tigris
Archived
5
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
tigris/TIKI-100_emul-src/TIKI-100_emul.h

201 lines
4.9 KiB
C
Raw Permalink Normal View History

2008-09-01 12:30:26 +02:00
/* TIKI-100_emul.h V1.1.0
*
* Definisjoner og konstanter nyttige for alle TIKI-100_emul moduler
* Copyright (C) Asbj<EFBFBD>rn Djupdal 2000-2001
*/
#ifndef TIKI_EMUL_H
#define TIKI_EMUL_H
#include "Z80.h"
/* byte og word definert i Z80.h */
typedef short boolean;
#define TRUE ~0
#define FALSE 0
/* video */
#define HIGHRES 16 /* 1024 * 256 * 2 */
#define MEDRES 32 /* 512 * 256 * 4 */
#define LOWRES 48 /* 256 * 256 * 16 */
/* serie */
enum parity {
PAR_NONE, PAR_EVEN, PAR_ODD
};
enum stopBits {
ONE_SB, ONE_PT_FIVE_SB, TWO_SB
};
struct serParams {
int receiveBits; /* antall bits i innkommende tegn */
int sendBits; /* antall bits i tegn som sendes */
int parity; /* paritet, en av de angitt over */
int stopBits; /* antall stopbits, en av de angitt over */
int baud; /* baud */
/* f<>lgende er kun for bruk i serial.c: */
int regPtr;
int clkDiv;
boolean exi;
boolean txi;
boolean sav;
int rxi;
boolean rxe;
boolean ae;
boolean txe;
boolean rxa;
boolean newChar;
};
/* tastatur - ikke-alfanumeriske taster */
#define KEY_NONE 0x80
#define KEY_CTRL 0x81
#define KEY_SHIFT 0x82
#define KEY_BRYT 0x03
#define KEY_CR 0x0d
#define KEY_SPACE 0x20
#define KEY_SLETT 0x7f
#define KEY_GRAFIKK 0x84
#define KEY_ANGRE 0x1a
#define KEY_LOCK 0x83
#define KEY_HJELP 0x0a
#define KEY_LEFT 0x08
#define KEY_UTVID 0x05
#define KEY_F1 0x01
#define KEY_F4 0x07
#define KEY_RIGHT 0x0c
#define KEY_F2 0x02
#define KEY_F3 0x06
#define KEY_F5 0x0e
#define KEY_F6 0x0f
#define KEY_DOWN 0x1c
#define KEY_PGUP 0x17
#define KEY_PGDOWN 0x1f
#define KEY_UP 0x0b
#define KEY_HOME 0x09
#define KEY_TABLEFT 0x1d
#define KEY_TABRIGHT 0x18
#define KEY_NUMDIV 0x80 | 0x2f
#define KEY_NUMPLUS 0x80 | 0x2b
#define KEY_NUMMINUS 0x80 | 0x2d
#define KEY_NUMMULT 0x80 | 0x2a
#define KEY_NUMPERCENT 0x80 | 0x25
#define KEY_NUMEQU 0x80 | 0x3d
#define KEY_ENTER 0x80 | 0x0d
#define KEY_NUM0 0x80 | 0x30
#define KEY_NUM1 0x80 | 0x31
#define KEY_NUM2 0x80 | 0x32
#define KEY_NUM3 0x80 | 0x33
#define KEY_NUM4 0x80 | 0x34
#define KEY_NUM5 0x80 | 0x35
#define KEY_NUM6 0x80 | 0x36
#define KEY_NUM7 0x80 | 0x37
#define KEY_NUM8 0x80 | 0x38
#define KEY_NUM9 0x80 | 0x39
#define KEY_NUMDOT 0x80 | 0x2e
/* M<> implementeres av system-koden
**********************************/
/* Forandre oppl<70>sning.
* M<EFBFBD> samtidig fylle alle pixler med farge 0
*/
void changeRes (int newRes);
/* Plott en pixel med farge tatt fra pallett */
void plotPixel (int x, int y, int color);
/* Scroll skjerm 'distance' linjer oppover
* 'distance' kan v<EFBFBD>re b<EFBFBD>de positiv og negativ
*/
void scrollScreen (int distance);
/* Ny farge, gitt pallettnummer og intensitet 0-255.
* M<EFBFBD> oppdatere alle pixler med dette pallettnummeret til ny farge
*/
void changePalette (int colornumber, byte red, byte green, byte blue);
/* Kalles periodisk. Lar system kode m<>le / senke emuleringshastighet
* Kan ogs<EFBFBD> brukes til sjekk av brukeraktivitet / serieporter
* ms er antall "emulerte" millisekunder siden forrige gang loopEmul ble kalt
*/
void loopEmul (int ms);
/* Tenn/slukk lock lys */
void lockLight (boolean status);
/* Tenn/slukk grafikk lys */
void grafikkLight (boolean status);
/* Tenn/slukk disk lys for gitt stasjon */
void diskLight (int drive, boolean status);
/* Sjekk status til hver av de gitte tastene
* Sett bit n i returkode hvis tast n IKKE er nedtrykt
* Taster er enten ascii-kode eller en av konstantene over
*/
byte testKey (byte keys[8]);
/* Setter seriekanalparametre */
void setParams (struct serParams *p1Params, struct serParams *p2Params);
/* Send tegn til seriekanal
* port = 0: port 1
* port = 1: port 2
*/
void sendChar (int port, byte value);
/* Hent tegn fra seriekanal
* port = 0: port 1
* port = 1: port 2
*/
byte getChar (int port);
/* Send tegn til skriver (port 3) */
void printChar (byte value);
/* Kan kalles av system-koden
****************************/
/* Starter emulering, returnerer n<>r emulering avsluttes
* Returverdi ved feil: FALSE
* Ellers returneres TRUE (etter at quitEmul() er kalt)
*/
boolean runEmul (void);
/* Ny diskett i stasjon
* disk: Hvilken stasjon (0 eller 1)
* diskImage: Peker til diskettbilde-data
* Resten er diskparametre
*/
void insertDisk (int drive, byte *diskImage, int tracks,
int sides, int sectors, int sectSize);
/* Fjern diskett fra stasjon (0 eller 1) */
void removeDisk (int drive);
/* Resetter TIKI-100 */
void resetEmul (void);
/* Avslutter emulator */
void quitEmul (void);
#ifdef DEBUG
/* <20>pner avlusnings monitor */
void trace (void);
#endif
/* Setter b<>yle ST 28 b */
void setST28b (boolean status);
/* Nytt serietegn mottatt
* port = 0: port 1
* port = 1: port 2
*/
void charAvailable (int port);
#endif