/* * Emu48.h * * This file is part of Emu48 * * Copyright (C) 1995 Sebastien Carlier * */ #include "types.h" #define BINARYHEADER "HPHP48-W" // 11.05.98 cg, new #define S_ERR_NO 0 // 11.05,98 cg, new, stack errorcodes #define S_ERR_BINARY 1 #define S_ERR_ASCII 2 #define NO_SERIAL "disabled" // 22.05.98 cg, new, serial port not open #define PORT_CLOSE 0 // 20.05.98 cg, new, COM port status #define PORT_WIRE 1 #define PORT_IR 2 #define HP_MNEMONICS FALSE // 10.11.98 cg, new, disassembler mnenomics mode #define CLASS_MNEMONICS TRUE #define MEM_MAP 0 // 10.11.98 cg, new, memory module definition #define MEM_ROM 1 #define MEM_RAM 2 #define MEM_PORT1 3 #define MEM_PORT2 4 // Emu48.c extern HPALETTE hPalette; extern HPALETTE hOldPalette; // 11.09.98 cg, old palette of hWindowDC extern LPSTR szAppName; // 13.05.98 cg, application name for DDE server extern LPSTR szTopic; // 13.05.98 cg, topic for DDE server extern LPSTR szTitle; extern CRITICAL_SECTION csGDILock; // 22.01.98 cg, critical section for hWindowDC extern CRITICAL_SECTION csKeyLock; // 02.09.98 cg, critical section for key scan extern CRITICAL_SECTION csIOLock; // 24.02.99 cg, critical section for I/O access extern CRITICAL_SECTION csT1Lock; // 21.04.98 cg, critical section for timer1 access extern CRITICAL_SECTION csT2Lock; // 21.04.98 cg, critical section for timer2 access extern LARGE_INTEGER lFreq; // 24.08.98 cg, counter frequency extern DWORD idDdeInst; // 13.05.98 cg, DDE server id extern UINT uCF_HpObj; // 13.05.98 cg, DDE clipboard format extern HINSTANCE hApp; // 01.11.98 cg, wrong variable type extern HWND hWnd; extern HDC hWindowDC; extern BOOL bPort2IsShared; extern BOOL bAlwaysDisplayLog; extern UINT uTimer1Period; extern VOID SetWindowTitle(LPSTR szString); extern VOID UpdateWindowStatus(VOID); // Display.c extern UINT nBackgroundX; extern UINT nBackgroundY; extern UINT nBackgroundW; extern UINT nBackgroundH; extern UINT nLcdX; extern UINT nLcdY; extern UINT nLcdDoubled; // 24.08.98 cg, changed to integer var extern LPBYTE pbyLcd; extern HDC hLcdDC; extern HDC hMainDC; extern VOID UpdateContrast(BYTE byContrast); extern VOID SetLcdColor(UINT nId, UINT nRed, UINT nGreen, UINT nBlue); extern VOID CreateLcdBitmap(VOID); extern VOID DestroyLcdBitmap(VOID); extern BOOL CreateMainBitmap(LPSTR szFilename); extern VOID DestroyMainBitmap(VOID); extern VOID UpdateDisplayPointers(VOID); extern VOID UpdateMainDisplay(VOID); extern VOID UpdateMenuDisplay(VOID); extern VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s); extern VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s); extern VOID UpdateAnnunciators(VOID); extern VOID ResizeWindow(VOID); // Engine.c extern BOOL bInterrupt; extern UINT nState; extern UINT nNextState; extern BOOL bKeySlow; // 18.11.98 cg, slow down for key emulation extern HANDLE hThread; extern CHIPSET Chipset; extern char szSerialWire[16]; // 20.05.98 cg, devicename for wire port extern char szSerialIr[16]; // 20.05.98 cg, devicename for IR port extern DWORD dwSXCycles; // 23.04.98 cg, SX cpu cycles in 1/16384 Hz extern DWORD dwGXCycles; // 23.04.98 cg, GX cpu cycles in 1/16384 Hz extern VOID SetSpeed(BOOL bAdjust); // 23.04.98 cg, set emulation speed extern VOID UpdateKdnBit(VOID); // 25.02.99 cg, update KDN bit extern BOOL WaitForSleepState(VOID); // 16.06.98 cg, wait for cpu SHUTDN then sleep state extern UINT SwitchToState(UINT nNewState); extern UINT WorkerThread(LPVOID pParam); extern DWORD Npack(BYTE *a, UINT s); extern VOID Nunpack(BYTE *a, DWORD b, UINT s); // Files.c extern char szEmu48Directory[260]; extern char szCurrentDirectory[260]; extern char szCurrentKml[260]; extern char szBackupKml[260]; extern char szCurrentFilename[260]; extern char szBackupFilename[260]; extern char szBufferFilename[260]; extern char szPort2Filename[260]; extern LPBYTE pbyRom; extern DWORD dwRomSize; extern char cCurrentRomType; extern LPBYTE pbyPort2; extern BOOL bPort2Writeable; extern BOOL bPort2IsShared; extern DWORD dwPort2Size; // 26.06.98 cg, size of mapped port2 extern DWORD dwPort2Mask; // extern UINT nPort2Bank; // 15.12.98 cg, removed, not used any more extern BOOL bBackup; extern WORD WriteStack(LPBYTE,DWORD); // 11.05.98 cg, write object to stack extern BOOL MapRom(LPCSTR szFilename); extern VOID UnmapRom(VOID); extern BOOL MapPort2(LPCSTR szFilename); extern VOID UnmapPort2(VOID); extern BOOL PatchRom(LPCSTR szFilename); extern VOID ResetDocument(VOID); extern BOOL NewDocument(VOID); extern BOOL OpenDocument(LPCSTR szFilename); extern BOOL SaveDocument(VOID); extern BOOL SaveDocumentAs(LPCTSTR szFilename); extern BOOL SaveBackup(VOID); extern BOOL RestoreBackup(VOID); extern BOOL ResetBackup(VOID); extern BOOL GetOpenFilename(VOID); extern BOOL GetSaveAsFilename(VOID); extern BOOL GetLoadObjectFilename(VOID); extern BOOL GetSaveObjectFilename(VOID); extern BOOL LoadObject(LPCSTR szFilename); extern BOOL SaveObject(LPCSTR szFilename); extern HBITMAP LoadBitmapFile(LPCSTR szFilename); // Timer.c // extern BOOL bAccurateTimer; // 10.11.98 cg, removed, not adjustable any more // extern UINT uT1Period; // 10.11.98 cg, removed, not adjustable any more extern VOID StartTimers(VOID); extern VOID StopTimers(VOID); extern DWORD ReadT2(VOID); extern VOID SetT2(DWORD dwValue); extern BYTE ReadT1(VOID); extern VOID SetT1(BYTE byValue); // MOps.c extern BOOL ioc_acc; // 17.05.98 cg, flag ioc changed extern BOOL ir_ctrl_acc; // 17.05.98 cg, flag ir_ctl changed extern LPBYTE RMap[256]; extern LPBYTE WMap[256]; extern VOID Map(BYTE a, BYTE b); extern VOID Config(VOID); extern VOID Uncnfg(VOID); extern VOID Reset(VOID); extern VOID C_Eq_Id(VOID); extern VOID Npeek(BYTE *a, DWORD d, UINT s); extern VOID Nread(BYTE *a, DWORD d, UINT s); extern VOID Nwrite(BYTE *a, DWORD d, UINT s); // extern VOID Nread2(BYTE *a, DWORD d); // 15.12.98 cg, removed, repaced by Nread() // extern VOID Nwrite2(BYTE *a, DWORD d);// 15.12.98 cg, removed, repaced by Nwrite() // extern VOID Nread5(BYTE *a, DWORD d); // 15.12.98 cg, removed, repaced by Nread() // extern VOID Nwrite5(BYTE *a, DWORD d);// 15.12.98 cg, removed, repaced by Nwite() extern BYTE Read2(DWORD d); extern DWORD Read5(DWORD d); extern VOID Write5(DWORD d, DWORD n); extern VOID IOBit(DWORD d, BYTE b, BOOL s);// 24.02.99 cg, set/clear bit in I/O section extern VOID ReadIO(BYTE *a, DWORD b, DWORD s); extern VOID WriteIO(BYTE *a, DWORD b, DWORD s); // Keyboard.c // extern WORD Keyboard_GetIR(VOID); // 13.02.99 cg, is static now extern VOID ScanKeyboard(BOOL bReset); // 02.09.98 cg, add flag for key state reset extern VOID KeyboardEvent(BOOL bPress, UINT out, UINT in); // RPL.c extern DWORD RPL_SkipOb(DWORD d); extern DWORD RPL_ObjectSize(BYTE *o); extern DWORD RPL_CreateTemp(DWORD l); extern DWORD RPL_Pick(UINT l); extern VOID RPL_Replace(DWORD n); extern VOID RPL_Push(DWORD n); // External.c extern VOID External(CHIPSET* w); // DDEserv.c extern HDDEDATA CALLBACK DdeCallback(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD); // Disasm.c extern BOOL disassembler_mode; extern WORD disassembler_map; extern DWORD disassemble (DWORD addr, LPSTR out); // Serial.c extern WORD CommConnect(VOID); extern VOID CommOpen(LPSTR strWirePort,LPSTR strIrPort); extern VOID CommClose(VOID); extern VOID CommSetBaud(VOID); extern VOID CommTransmit(VOID); extern VOID CommReceive(VOID); // Message Boxes static __inline int InfoMessage(LPCSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_OK|MB_ICONINFORMATION|MB_SETFOREGROUND);} static __inline int AbortMessage(LPCSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_OK|MB_ICONSTOP|MB_SETFOREGROUND);} static __inline int YesNoMessage(LPCSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_YESNO|MB_ICONEXCLAMATION|MB_SETFOREGROUND);} static __inline int YesNoCancelMessage(LPCSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND);} // Missing Win32 API calls static __inline LPSTR DuplicateString(LPCSTR szString) { UINT uLength = strlen(szString) + 1; LPSTR szDup = LocalAlloc(LMEM_FIXED,uLength); // 27.01.98 cg, adjust memsize CopyMemory(szDup,szString,uLength); return szDup; }