#pragma once #include "../../lib/mxk/mxk.h" #include "mx.h" #pragma pack(1) typedef struct { uint32_t crc; uint32_t playlimit; uint8_t playlimit_sig[128]; uint32_t nearfull; uint8_t nearfull_sig[128]; } billing_t; #pragma pack(1) typedef struct { uint32_t length; uint8_t data[0x400 - 4]; } nvram_data_block_t; void micexkTransportSend(unsigned char* send_data, int nbytes); void micexkSendPacket(unsigned char* send_data); void micexkTransportRecv(unsigned char* buffer, int nbytes); void micexkRecvPacket(unsigned char* packet); static appboot_t APPBOOT; static billing_t BILLING; static uint32_t BILLING_PLAYCOUNT; // Parallel port emulation static BYTE parallel_flags; static BYTE parallel_ctrl; static BYTE parallel_status; static BYTE parallel_data; #define setStatus(mask) \ do { \ parallel_status |= mask; \ } while (0) #define clearStatus(mask) \ do { \ parallel_status &= ~mask; \ } while (0) #define getControl(mask) (parallel_ctrl & mask) #define setError setStatus(0x08) #define clearError clearStatus(0x08) #define setSelect setStatus(0x10) #define clearSelect clearStatus(0x10) #define setPo setStatus(0x20) #define clearPo clearStatus(0x20) #define setAck setStatus(0x40) #define clearAck clearStatus(0x40) #define setBusy setStatus(0x80) #define clearBusy clearStatus(0x80) #define _Strobe getControl(0x01) #define _LF getControl(0x02) #define _Reset getControl(0x04) #define _SelPrint getControl(0x08) #define _IsDirWrite getControl(0x20)