00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00042 #ifndef _HPSYS_H
00043 #define _HPSYS_H
00044
00045
00046 #ifndef _LONGLONG_DEF
00047 typedef unsigned long long ULONGLONG;
00048 typedef long long LONGLONG;
00049 #define _LONGLONG_DEF
00050 #endif
00051
00052
00053 #include <kos.h>
00054
00055 #ifndef EXTERN
00056 #define EXTERN extern
00057 #endif
00058
00059 #ifndef NULL
00060 #define NULL 0
00061 #endif
00062
00063
00064
00065
00066 typedef void (*ATEXITFUNC)();
00067
00068 typedef struct _atexit_entry {
00069 ATEXITFUNC f;
00070 struct _atexit_entry *next;
00071 } ATEXIT_ENTRY;
00072
00073 int atexit(ATEXITFUNC f);
00074
00076 char *sys_bcd2str(unsigned int BCD);
00077
00079 #define sys_bcd2bin(BCD) sys_bcd2bin_nibbles(BCD,2)
00081 unsigned int sys_bcd2bin_nibbles(unsigned int BCD,int nibbles);
00082
00083
00084
00085
00086
00087
00088
00089 typedef struct
00090 {
00091 LONGLONG quot;
00092 LONGLONG rem;
00093 } lldiv_t;
00094
00095 lldiv_t lldiv(LONGLONG,LONGLONG);
00096
00111 unsigned divlu2(unsigned num_h,unsigned num_l,unsigned den,unsigned *rem);
00112
00113 ULONGLONG
00114 udiv64(ULONGLONG nom, unsigned den, unsigned *rem);
00115
00116 LONGLONG
00117 sdiv64(LONGLONG nom, int den, int *rem);
00118
00119
00120
00121
00123
00173
00174
00175
00176
00177 EXTERN unsigned int _ram_base_addr;
00178 EXTERN unsigned int _mmu_table_addr;
00179 EXTERN unsigned int ram_size;
00180 EXTERN unsigned int _heap_base_addr;
00181 EXTERN unsigned int _code_base_addr;
00182
00183
00184
00185 #define LCD_REGS 0x07300000
00186 #define CLK_REGS 0x07200000
00187 #define RTC_REGS 0x07B00000 // < ibl ; 2005-06-23 >
00188
00189
00190 void sys_intOff();
00191 void sys_intOn();
00192
00193
00194 void sys_slowOn();
00195 void sys_slowOff();
00196 int sys_is_slowOn();
00197
00198
00200 void sys_clksave(int *buf);
00202 void sys_clkrestore(int *buf);
00203
00204
00205
00206
00207
00208
00209 typedef struct
00210 {
00211 ULONGLONG current;
00212 unsigned last_val : 16;
00213 unsigned timer : 3;
00214 unsigned inited : 1;
00215 } sys_timer_t;
00216
00217 #define SYS_TIMER_INITIALIZER { 0, 0, 0, 0 }
00218 #define SYS_TIMER_INITIALIZER_NUM(n) { 0, 0, n, 0 }
00219
00220 ULONGLONG sys_updateTimer(sys_timer_t *timer);
00221
00222 void sys_sleep(unsigned int millis);
00223
00225 void sys_waitTicks(unsigned int time);
00226 void sys_setupTimers();
00227 void sys_restoreTimers();
00228
00229
00231
00236 unsigned short int sys_getPWMCounter0();
00237
00238
00240
00245 int sys_RTC_seconds();
00246
00247
00248
00249
00250 #define MODE_MONO 0
00251 #define MODE_4GRAY 1
00252 #define MODE_16GRAY 2
00253
00255 void sys_LCDSynch();
00257 void sys_lcdfix();
00259 void sys_lcdsave(int *buffer);
00261 void sys_lcdrestore(int *buffer);
00267 int sys_lcdsetmode(int mode,int *physicalbuffer);
00268
00269 int sys_lcdgetheight();
00270
00271
00272
00273
00274
00276 EXTERN int sys_map_v2p(unsigned int vaddr);
00278 EXTERN int sys_map_p2v(unsigned int paddr);
00280 int sys_mem_classify(int addr);
00282 void sys_flush_cache(int *ptr,int size);
00283
00284
00285
00286 void *sys_phys_malloc(size_t);
00287
00288
00289
00290
00297 EXTERN void sys_playTone(unsigned int tone, unsigned int duration);
00298 EXTERN void sys_waitTicks (unsigned int time);
00299 EXTERN void setDisplayPlane(unsigned char * plane);
00300
00301 EXTERN void sys_playTone2(unsigned int time, unsigned int duration);
00302
00304 int sys_isRTCTick();
00306 unsigned char sys_setRTCTickPeriod(unsigned char n);
00308 void sys_waitRTCTicks(int count);
00309
00310
00311
00312
00322 int sys_delta_seconds(int t_start, int t_end);
00323
00324
00325
00334 void sys_error(const char *msg, int code);
00335
00336
00337
00345 void *sys_chkptr(void *p);
00346
00347
00348
00349 #endif
00350