/* * iocs.h * X680x0 IOCS call interface * * written by ITOH Yasufumi * (based on PD libc 1.1.32 by PROJECT C Library) * public domain * * $NetBSD: iocs.h,v 1.9 2014/02/11 08:06:07 tsutsui Exp $ */ /* * PROJECT C Library, X68000 PROGRAMMING INTERFACE DEFINITION * -------------------------------------------------------------------- * This file is written by the Project C Library Group, and completely * in public domain. You can freely use, copy, modify, and redistribute * the whole contents, without this notice. * -------------------------------------------------------------------- * Id: iocs.h,v 1.1.1.1 1993/04/18 16:14:27 mura Exp * Id: iocs_p.h,v 1.5 1993/10/06 16:46:12 mura Exp * Id: scsi.h,v 1.3 1994/07/31 17:21:50 mura Exp */ #ifndef __X68K_IOCS_H__ #define __X68K_IOCS_H__ #include struct iocs_boxptr { short x1; short y1; short x2; short y2; unsigned short color; unsigned short linestyle; }; struct iocs_circleptr { short x; short y; unsigned short radius; unsigned short color; short start; short end; unsigned short ratio; }; struct iocs_fillptr { short x1; short y1; short x2; short y2; unsigned short color; }; struct iocs_fntbuf { short xl; short yl; unsigned char buffer[72]; }; struct iocs_getptr { short x1; short y1; short x2; short y2; void *buf_start; void *buf_end; }; struct iocs_lineptr { short x1; short y1; short x2; short y2; unsigned short color; unsigned short linestyle; }; struct iocs_paintptr { short x; short y; unsigned short color; void *buf_start; void *buf_end; } __attribute__((__packed__)); struct iocs_pointptr { short x; short y; unsigned short color; }; struct iocs_psetptr { short x; short y; unsigned short color; }; struct iocs_putptr { short x1; short y1; short x2; short y2; const void *buf_start; const void *buf_end; }; struct iocs_symbolptr { short x1; short y1; unsigned char *string_address; unsigned char mag_x; unsigned char mag_y; unsigned short color; unsigned char font_type; unsigned char angle; } __attribute__((__packed__)); struct iocs_regs { int d0; int d1; int d2; int d3; int d4; int d5; int d6; int d7; int a1; int a2; int a3; int a4; int a5; int a6; }; struct iocs_chain { void *addr; unsigned short len; } __attribute__((__packed__)); struct iocs_chain2 { void *addr; unsigned short len; const struct iocs_chain2 *next; } __attribute__((__packed__)); struct iocs_clipxy { short xs; short ys; short xe; short ye; }; struct iocs_patst { short offsetx; short offsety; short shadow[16]; short pattern[16]; }; struct iocs_tboxptr { unsigned short vram_page; short x; short y; short x1; short y1; unsigned short line_style; }; struct iocs_txfillptr { unsigned short vram_page; short x; short y; short x1; short y1; unsigned short fill_patn; }; struct iocs_trevptr { unsigned short vram_page; short x; short y; short x1; short y1; }; struct iocs_xlineptr { unsigned short vram_page; short x; short y; short x1; unsigned short line_style; }; struct iocs_ylineptr { unsigned short vram_page; short x; short y; short y1; unsigned short line_style; }; struct iocs_tlineptr { unsigned short vram_page; short x; short y; short x1; short y1; unsigned short line_style; }; /* * for SCSI calls */ struct iocs_readcap { unsigned long block; unsigned long size; }; struct iocs_inquiry { unsigned char unit; unsigned char info; unsigned char ver; unsigned char reserve; unsigned char size; unsigned char class[3]; char vendor[8]; char product[16]; char revision[4]; }; /* * arguments: * dn 32bit arg -> 32bit data reg (input) * an 32bit arg -> 32bit addr reg (input) * odn 32bit arg -> 32bit addr (location to store dn value) * dn=(num) (no C arg) -> load immediate value to the data register * dn=ww two 32bit args -> (LSWord #1) << 16 | (LSWord #2) * dn=bb two 32bit args -> (LSByte #1) << 8 | (LSByte #2) * dn=hsv three args (H S V) -> encode HSV values in dn * opts: * retd2 return value is d2 of IOCS call * err_d0 nonzero d0 is an error -- skip storing values * noret the IOCS call never returns * c_md special for IOCS_CACHE_MD * b_super special for IOCS_B_SUPER * sp_regst special for IOCS_SP_REGST * b_curmod special for IOCS_B_CURMOD * b_curpat special for IOCS_B_CURPAT * b_scroll special for IOCS_B_SCROLL * trap15 special for IOCS_TRAP15 */ /* (none) ; trap15 */ int IOCS_TRAP15(const struct iocs_regs *, struct iocs_regs *); /* 00 */ int IOCS_B_KEYINP (void); /* 01 */ int IOCS_B_KEYSNS (void); /* 02 */ int IOCS_B_SFTSNS (void); /* 04 d1 */ int IOCS_BITSNS (int); /* 05 d1 */ void IOCS_SKEYSET (int); /* 0c d1 */ void IOCS_TVCTRL (int); /* 0d d1 d2 */ void IOCS_LEDMOD (int, int); /* 0e d1 d2 */ int IOCS_TGUSEMD (int, int); /* 0f d1=ww a1 */ int IOCS_DEFCHR (int, int, const void *); /* 10 d1 */ int IOCS_CRTMOD (int); /* 11 d1 */ int IOCS_CONTRAST (int); /* 12 d1=hsv */ int __pure IOCS_HSVTORGB (int, int, int) __attribute__((const)); /* 13 d1 d2 */ int IOCS_TPALET (int, int); /* 14 d1 d2 */ int IOCS_TPALET2 (int, int); /* 15 d1 */ void IOCS_TCOLOR (int); /* 19 d1=ww a1 */ int IOCS_FNTGET (int, int, struct iocs_fntbuf *); /* 1a d1 d2 a1 */ void IOCS_TEXTGET (int, int, struct iocs_fntbuf *); /* 1b d1 d2 a1 */ void IOCS_TEXTPUT (int, int, const struct iocs_fntbuf *); /* 1c d1 d2 a1 a2 */ void IOCS_CLIPPUT (int, int, const struct iocs_fntbuf *, const struct iocs_clipxy *); /* 1d d1 d2 d3 */ void IOCS_SCROLL (int, int, int); /* 1e */ void IOCS_B_CURON (void); /* 1f */ void IOCS_B_CUROFF (void); /* 20 d1 */ int IOCS_B_PUTC (int); /* 21 a1 */ int IOCS_B_PRINT (const char *); /* 22 d1 */ int IOCS_B_COLOR (int); /* 23 d1 d2 */ int IOCS_B_LOCATE (int, int); /* 24 */ void IOCS_B_DOWN_S (void); /* 25 */ void IOCS_B_UP_S (void); /* 26 d1 */ void IOCS_B_UP (int); /* 27 d1 */ void IOCS_B_DOWN (int); /* 28 d1 */ void IOCS_B_RIGHT (int); /* 29 d1 */ void IOCS_B_LEFT (int); /* 2a d1=0 */ void IOCS_B_CLR_ED (void); /* 2a d1=1 */ void IOCS_B_CLR_ST (void); /* 2a d1=2 */ void IOCS_B_CLR_AL (void); /* 2b d1=0 */ void IOCS_B_ERA_ED (void); /* 2b d1=1 */ void IOCS_B_ERA_ST (void); /* 2b d1=2 */ void IOCS_B_ERA_AL (void); /* 2c d1 */ void IOCS_B_INS (int); /* 2d d1 */ void IOCS_B_DEL (int); /* 2e d1=ww d2=ww ; retd2 */ int IOCS_B_CONSOL (int, int, int, int); /* 2f d1 d2 d3 d4 a1 ; retd2 */ int IOCS_B_PUTMES (int, int, int, int, const char *); /* 30 d1 */ int IOCS_SET232C (int); /* 31 */ int IOCS_LOF232C (void); /* 32 */ int IOCS_INP232C (void); /* 33 */ int IOCS_ISNS232C (void); /* 34 */ int IOCS_OSNS232C (void); /* 35 d1 */ void IOCS_OUT232C (int); /* 3b d1 */ int IOCS_JOYGET (int); /* 3c d1=bb */ int IOCS_INIT_PRN (int, int); /* 3d */ int IOCS_SNSPRN (void); /* 3e d1 */ void IOCS_OUTLPT (int); /* 3f d1 */ void IOCS_OUTPRN (int); /* 40 d1 d2 */ int IOCS_B_SEEK (int, int); /* 41 d1 d2 d3 a1 */ int IOCS_B_VERIFY (int, int, int, const void *); /* 42 d1 d2 d3 a1 */ int IOCS_B_READDI (int, int, int, void *); /* 43 d1 a1 d2 */ int IOCS_B_DSKINI (int, const void *, int); /* 44 d1 */ int IOCS_B_DRVSNS (int); /* 45 d1 d2 d3 a1 */ int IOCS_B_WRITE (int, int, int, const void *); /* 46 d1 d2 d3 a1 */ int IOCS_B_READ (int, int, int, void *); /* 47 d1 */ int IOCS_B_RECALI (int); /* 48 d1 d2 d3 a1 */ int IOCS_B_ASSIGN (int, int, int, const void *); /* 49 d1 d2 d3 a1 */ int IOCS_B_WRITED (int, int, int, const void *); /* 4a d1 d2 od2 */ int IOCS_B_READID (int, int, void *); /* 4b d1 d2 d3 */ int IOCS_B_BADFMT (int, int, int); /* 4c d1 d2 d3 a1 */ int IOCS_B_READDL (int, int, int, void *); /* 4d d1 d2 d3 a1 */ int IOCS_B_FORMAT (int, int, int, const void *); /* 4e d1 d2 */ int IOCS_B_DRVCHK (int, int); /* 4f d1 */ int IOCS_B_EJECT (int); /* 50 d1 */ int IOCS_BINDATEBCD (int); /* 51 d1 */ void IOCS_BINDATESET (int); /* 52 d1 */ int IOCS_TIMEBCD (int); /* 53 d1 */ void IOCS_TIMESET (int); /* 54 */ int IOCS_BINDATEGET (void); /* 55 d1 */ int IOCS_DATEBIN (int); /* 56 */ int IOCS_TIMEGET (void); /* 57 d1 */ int IOCS_TIMEBIN (int); /* 58 a1 */ int IOCS_DATECNV (const char *); /* 59 a1 */ int IOCS_TIMECNV (const char *); /* 5a d1 a1 */ int IOCS_DATEASC (int, char *); /* 5b d1 a1 */ int IOCS_TIMEASC (int, char *); /* 5c d1 a1 */ void IOCS_DAYASC (int, char *); /* 5d d1 */ int IOCS_ALARMMOD (int); /* 5e d1 d2 a1 */ int IOCS_ALARMSET (int, int, int); /* 5f od1 od2 od0 */ int IOCS_ALARMGET (int *, int *, int *); /* 60 a1 d1 d2 */ void IOCS_ADPCMOUT (const void *, int, int); /* 61 a1 d1 d2 */ void IOCS_ADPCMINP (void *, int, int); /* 62 a1 d1 d2 */ void IOCS_ADPCMAOT (const struct iocs_chain *, int, int); /* 63 a1 d1 d2 */ void IOCS_ADPCMAIN (const struct iocs_chain *, int, int); /* 64 a1 d1 */ void IOCS_ADPCMLOT (const struct iocs_chain2 *, int); /* 65 a1 d1 */ void IOCS_ADPCMLIN (const struct iocs_chain2 *, int); /* 66 */ int IOCS_ADPCMSNS (void); /* 67 d1 */ void IOCS_ADPCMMOD (int); /* 68 d1 d2 */ void IOCS_OPMSET (int, int); /* 69 */ int IOCS_OPMSNS (void); /* 6a a1 */ int IOCS_OPMINTST (const void *); /* 6b a1 d1=bb */ int IOCS_TIMERDST (const void *, int, int); /* 6c a1 d1=bb */ int IOCS_VDISPST (const void *, int, int); /* 6d a1 d1 */ int IOCS_CRTCRAS (const void *, int); /* 6e a1 */ int IOCS_HSYNCST (const void *); /* 6f a1 */ int IOCS_PRNINTST (const void *); /* 70 */ void IOCS_MS_INIT (void); /* 71 */ void IOCS_MS_CURON (void); /* 72 */ void IOCS_MS_CUROF (void); /* 73 */ int IOCS_MS_STAT (void); /* 74 */ int IOCS_MS_GETDT (void); /* 75 */ int IOCS_MS_CURGT (void); /* 76 d1=ww */ int IOCS_MS_CURST (int, int); /* 77 d1=ww d2=ww */ int IOCS_MS_LIMIT (int, int, int, int); /* 78 d1 d2 */ int IOCS_MS_OFFTM (int, int); /* 79 d1 d2 */ int IOCS_MS_ONTM (int, int); /* 7a d1 a1 */ void IOCS_MS_PATST (int, const struct iocs_patst *); /* 7b d1 */ void IOCS_MS_SEL (int); /* 7c a1 */ void IOCS_MS_SEL2 (const short *); /* 7d d1 d2=ww */ int IOCS_SKEY_MOD (int, int, int); /* 7e */ void IOCS_DENSNS (void); /* 7f */ int IOCS_ONTIME (void); /* 80 d1 a1 */ int IOCS_B_INTVCS (int, int); /* 81 ; b_super */ int IOCS_B_SUPER (int); /* 82 a1 */ int IOCS_B_BPEEK (const void *); /* 83 a1 */ int IOCS_B_WPEEK (const void *); /* 84 a1 */ int IOCS_B_LPEEK (const void *); /* 85 a1 a2 d1 */ void IOCS_B_MEMSTR (const void *, void *, int); /* 86 a1 d1 */ void IOCS_B_BPOKE (void *, int); /* 87 a1 d1 */ void IOCS_B_WPOKE (void *, int); /* 88 a1 d1 */ void IOCS_B_LPOKE (void *, int); /* 89 a1 a2 d1 */ void IOCS_B_MEMSET (void *, const void *, int); /* 8a a1 a2 d1 d2 */ void IOCS_DMAMOVE (void *, void *, int, int); /* 8b a1 a2 d1 d2 */ void IOCS_DMAMOV_A (const struct iocs_chain *, void *, int, int); /* 8c a1 a2 d1 */ void IOCS_DMAMOV_L (const struct iocs_chain2 *, void *, int); /* 8d */ int IOCS_DMAMODE (void); /* 8e */ int __pure IOCS_BOOTINF (void) __attribute__((const)); /* 8f */ int __pure IOCS_ROMVER (void) __attribute__((const)); /* 90 */ void IOCS_G_CLR_ON (void); /* 94 d1 d2 */ int IOCS_GPALET (int, int); /* a0 d1 */ int __pure IOCS_SFTJIS (int) __attribute__((const)); /* a1 d1 */ int __pure IOCS_JISSFT (int) __attribute__((const)); /* a2 d1=ww */ int __pure IOCS_AKCONV (int, int) __attribute__((const)); /* a3 d1 a1 a2 */ int IOCS_RMACNV (int, char *, char *); /* a4 a1 */ int IOCS_DAKJOB (char *); /* a5 a1 */ int IOCS_HANJOB (char *); /* ac d1=0 */ int IOCS_MPU_STAT (void); /* ROM 1.3 only */ /* ac d1=1 */ int IOCS_CACHE_ST (void); /* ROM 1.3 only */ /* ac d1=3 d2 ; c_md */ int IOCS_CACHE_MD (int); /* ROM 1.3 only */ /* ad d1 ; b_curmod */ void IOCS_B_CURMOD (int); /*1.3/IOCS.X*/ /* ad d1=2 d2 ; b_curpat */ void IOCS_B_CURPAT (int); /*1.3/IOCS.X*/ /* ad d1=2 d2=0 */ void IOCS_B_CURPAT1 (void); /*1.3/IOCS.X*/ /* ad d1=3 d2 */ void IOCS_B_CURDEF (void *); /*1.3/IOCS.X*/ /* ad d1=16 d2 ; b_scroll */ void IOCS_B_SCROLL (int); /*1.3/IOCS.X*/ /* ae */ void IOCS_OS_CURON (void); /* af */ void IOCS_OS_CUROF (void); /* b0 d1 */ int IOCS_DRAWMODE (int); /* ROM 1.3, IOCS.X */ /* b1 d1 */ int IOCS_APAGE (int); /* b2 d1 */ int IOCS_VPAGE (int); /* b3 d1 d2 d3 */ int IOCS_HOME (int, int, int); /* b4 d1 d2 d3 d4 */ int IOCS_WINDOW (int, int, int, int); /* b5 */ int IOCS_WIPE (void); /* b6 a1 */ int IOCS_PSET (const struct iocs_psetptr *); /* b7 a1 */ int IOCS_POINT (const struct iocs_pointptr *); /* b8 a1 */ int IOCS_LINE (const struct iocs_lineptr *); /* b9 a1 */ int IOCS_BOX (const struct iocs_boxptr *); /* ba a1 */ int IOCS_FILL (const struct iocs_fillptr *); /* bb a1 */ int IOCS_CIRCLE (const struct iocs_circleptr *); /* bc a1 */ int IOCS_PAINT (struct iocs_paintptr *); /* bd a1 */ int IOCS_SYMBOL (const struct iocs_symbolptr *); /* be a1 */ int IOCS_GETGRM (struct iocs_getptr *); /* bf a1 */ int IOCS_PUTGRM (const struct iocs_putptr *); /* c0 */ int IOCS_SP_INIT (void); /* c1 */ int IOCS_SP_ON (void); /* c2 */ void IOCS_SP_OFF (void); /* c3 d1 */ int IOCS_SP_CGCLR (int); /* c4 d1 d2 a1 */ int IOCS_SP_DEFCG (int, int, const void *); /* c5 d1 d2 a1 */ int IOCS_SP_GTPCG (int, int, void *); /* * XXX SP_REGST in XC iocslib: args: int, int, int, int, int * (c6 d1 d2 d3 d4 d5) * XC manual and PD libc: args: int, int, int, int, int, int * (c6 d0 d1 d2 d3 d4 d5 ; sp_regst) * we use the latter interface... */ /* c6 d0 d1 d2 d3 d4 d5 ; sp_regst */ int IOCS_SP_REGST (int, int, int, int, int, int); /* c7 d1 od2 od3 od4 od5 ; err_d0 */ int IOCS_SP_REGGT (int, int *, int *, int *, int *); /* c8 d1 d2 d3 */ int IOCS_BGSCRLST (int, int, int); /* c9 d1 od2 od3 ; err_d0 */ int IOCS_BGSCRLGT (int, int *, int *); /* ca d1 d2 d3 */ int IOCS_BGCTRLST (int, int, int); /* cb d1 */ int IOCS_BGCTRLGT (int); /* cc d1 d2 */ int IOCS_BGTEXTCL (int, int); /* cd d1 d2 d3 d4 */ int IOCS_BGTEXTST (int, int, int, int); /* ce d1 d2 d3 */ int IOCS_BGTEXTGT (int, int, int); /* cf d1 d2 d3 */ int IOCS_SPALET (int, int, int); /* d3 a1 */ void IOCS_TXXLINE (const struct iocs_xlineptr *); /* d4 a1 */ void IOCS_TXYLINE (const struct iocs_ylineptr *); /* d5 a1 */ void IOCS_TXLINE (struct iocs_tlineptr); /* 1.3, IOCS.X */ /* d6 a1 */ void IOCS_TXBOX (const struct iocs_tboxptr *); /* d7 a1 */ void IOCS_TXFILL (const struct iocs_txfillptr *); /* d8 a1 */ void IOCS_TXREV (const struct iocs_trevptr *); /* df d1 d2 d3 */ void IOCS_TXRASCPY (int, int, int); /* fd */ void IOCS_ABORTRST (void); /* fe ; noret */ __dead void IOCS_IPLERR (void); /* ff ; noret */ __dead void IOCS_ABORTJOB (void); /* SCSI calls */ /* f5 d1=0 */ void IOCS_S_RESET (void); /* f5 d1=1 d4 */ int IOCS_S_SELECT (int); /* f5 d1=3 d3 a1 */ int IOCS_S_CMDOUT (int, void *); /* f5 d1=4 d3 a1 */ int IOCS_S_DATAIN (int, void *); /* f5 d1=5 d3 a1 */ int IOCS_S_DATAOUT (int, void *); /* f5 d1=6 a1 */ int IOCS_S_STSIN (void *); /* f5 d1=7 a1 */ int IOCS_S_MSGIN (void *); /* f5 d1=8 a1 */ int IOCS_S_MSGOUT (void *); /* f5 d1=9 */ int IOCS_S_PHASE (void); /* f5 d1=32 d3 d4 a1 */ int IOCS_S_INQUIRY (int, int, struct iocs_inquiry *); /* f5 d1=33 d2 d3 d4 d5 a1 */ int IOCS_S_READ (int, int, int, int, void *); /* f5 d1=34 d2 d3 d4 d5 a1 */ int IOCS_S_WRITE (int, int, int, int, void *); /* f5 d1=35 d3 d4 */ int IOCS_S_FORMAT (int, int); /* f5 d1=36 d4 */ int IOCS_S_TESTUNIT (int); /* f5 d1=37 d4 a1 */ int IOCS_S_READCAP (int, struct iocs_readcap *); /* f5 d1=38 d2 d3 d4 d5 a1 */ int IOCS_S_READEXT (int, int, int, int, void *); /* f5 d1=39 d2 d3 d4 d5 a1 */ int IOCS_S_WRITEEXT (int, int, int, int, void *); /* f5 d1=43 d4 */ int IOCS_S_REZEROUNIT (int); /* f5 d1=44 d3 d4 a1 */ int IOCS_S_REQUEST (int, int, void *); /* f5 d1=45 d2 d4 */ int IOCS_S_SEEK (int, int); /* f5 d1=47 d3 d4 */ int IOCS_S_STARTSTOP (int, int); /* f5 d1=49 d3 d4 a1 */ int IOCS_S_REASSIGN (int, int, void *); /* f5 d1=50 d3 d4 */ int IOCS_S_PAMEDIUM (int, int); #endif /* __X68K_IOCS_H__ */