Initial commit: MSXgl 1.4.1 with mazegame project
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
time.h
|
||||
|
||||
Copyright (C) 2001, Johan Knol <johan.knol AT iduna.nl>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this library; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
As a special exception, if you link this library with other files,
|
||||
some of which are compiled with SDCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable to
|
||||
be covered by the GNU General Public License. This exception does
|
||||
not however invalidate any other reasons why the executable file
|
||||
might be covered by the GNU General Public License.
|
||||
-------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef TINIBIOS_H
|
||||
|
||||
#define TINIBIOS_H
|
||||
|
||||
#include <ds80c390.h>
|
||||
#include <time.h>
|
||||
|
||||
void Serial0Init (unsigned long baud, unsigned char buffered);
|
||||
char Serial0GetChar(void);
|
||||
void Serial0PutChar(char);
|
||||
char Serial0CharArrived(void);
|
||||
void Serial0Baud(unsigned long baud);
|
||||
void Serial0SendBreak(void);
|
||||
void Serial0Flush(void);
|
||||
|
||||
void Serial0SwitchToBuffered(void); /* ds400 only. */
|
||||
|
||||
void Serial1Init (unsigned long baud, unsigned char buffered);
|
||||
char Serial1GetChar(void);
|
||||
void Serial1PutChar(char);
|
||||
char Serial1CharArrived(void);
|
||||
void Serial1Baud(unsigned long baud);
|
||||
void Serial1SendBreak(void);
|
||||
void Serial1Flush(void);
|
||||
|
||||
unsigned long ClockTicks();
|
||||
void ClockMilliSecondsDelay(unsigned long ms);
|
||||
void ClockMicroSecondsDelay(unsigned int us);
|
||||
|
||||
#define SERIAL_0_BAUD 115200L
|
||||
#define SERIAL_1_BAUD 9600L
|
||||
|
||||
/* these need to be binary numbers */
|
||||
#define SERIAL_0_RECEIVE_BUFFER_SIZE 1024
|
||||
#define SERIAL_1_RECEIVE_BUFFER_SIZE 64
|
||||
|
||||
/* I know someone is fooling with the crystals */
|
||||
#if defined(__SDCC_ds400)
|
||||
# define OSCILLATOR 14745600L
|
||||
#else
|
||||
# define OSCILLATOR 18432000L
|
||||
#endif
|
||||
|
||||
/* Set the cpu speed in clocks per machine cycle, valid values are:
|
||||
1024: Divide-by-1024 (power management) mode (screws ALL timers and serial)
|
||||
4: Standard 8051 divide-by-4 mode
|
||||
2: Use 2x xtal multiplier
|
||||
1: Use 4x xtal multiplier (Don't do this with a TINI at 18.432MHz)
|
||||
*/
|
||||
#define CPU_SPEED 2
|
||||
void CpuSpeed(unsigned int speed);
|
||||
|
||||
/* The MOVX stretch cycles, see datasheet */
|
||||
#define CPU_MOVX_STRETCH 0x01
|
||||
|
||||
/* from rtc390.c */
|
||||
#define HAVE_RTC
|
||||
unsigned char RtcRead(struct tm *rtcDate);
|
||||
void RtcWrite(struct tm *rtcDate);
|
||||
|
||||
/* from lcd390.c */
|
||||
extern void LcdInit(void);
|
||||
extern void LcdOn(void);
|
||||
extern void LcdOff(void);
|
||||
extern void LcdClear(void);
|
||||
extern void LcdHome(void);
|
||||
extern void LcdGoto(unsigned int collumnRow);
|
||||
extern void LcdPutChar(char c);
|
||||
extern void LcdPutString(char *string);
|
||||
extern void LcdLPutString(unsigned int collumnRow, char *string);
|
||||
extern void LcdPrintf(const char *format, ...) __reentrant;
|
||||
extern void LcdLPrintf(unsigned int collumnRow, const char *format, ...) __reentrant;
|
||||
|
||||
/* from i2c390.c */
|
||||
#define I2C_BUFSIZE 128
|
||||
extern char I2CReset(void);
|
||||
extern char I2CStart(void);
|
||||
extern char I2CStop(void);
|
||||
extern char I2CSendStop(char addr, char count,
|
||||
char send_stop);
|
||||
extern char I2CReceive(char addr, char count);
|
||||
extern char I2CSendReceive(char addr, char tx_count,
|
||||
char rx_count);
|
||||
/*extern char I2CByteOut(char);*/
|
||||
/*extern void I2CDumpError(char);*/
|
||||
|
||||
/* global transfer buffers */
|
||||
extern char i2cTransmitBuffer[I2C_BUFSIZE];
|
||||
extern char i2cReceiveBuffer[I2C_BUFSIZE];
|
||||
|
||||
/* Macro for normal send transfer ending with a stop condition */
|
||||
#define I2CSend(addr, count) I2CSendStop(addr, count, 1)
|
||||
|
||||
|
||||
/* internal functions used by tinibios.c */
|
||||
unsigned char _sdcc_external_startup(void);
|
||||
void Serial0IrqHandler (void) __interrupt 4;
|
||||
void Serial1IrqHandler (void) __interrupt 7;
|
||||
|
||||
#if !defined(__SDCC_ds400)
|
||||
void ClockInit();
|
||||
void ClockIrqHandler (void) __interrupt 1 __naked;
|
||||
#endif
|
||||
|
||||
#if defined(__SDCC_ds400)
|
||||
/* functions for dealing with the ds400 ROM firmware. */
|
||||
|
||||
/* A wrapper which calls rom_init allocating all available RAM in CE0
|
||||
to the heap, sets the serial port to SERIAL_0_BAUD, sets up the
|
||||
millisecond timer, and diddles the clock multiplier. */
|
||||
|
||||
/* Values for the romInit "speed" parameter. */
|
||||
#define SPEED_1X 0 /* no clock multiplier, normal speed. */
|
||||
#define SPEED_2X 1 /* 2x clock multiplier. */
|
||||
#define SPEED_4X 2 /* 4x clock, DOESN'T WORK ON TINIm400! */
|
||||
|
||||
unsigned char romInit(unsigned char noisy,
|
||||
char speed);
|
||||
|
||||
/* Install an interrupt handler. */
|
||||
void installInterrupt(void (*isrPtr)(void), unsigned char offset);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* TINIBIOS_H */
|
||||
Reference in New Issue
Block a user