mirror of
https://github.com/ksherlock/mpw.git
synced 2025-08-15 10:27:40 +00:00
move quickdraw stuff to its own file
This commit is contained in:
73
toolbox/qd.cpp
Normal file
73
toolbox/qd.cpp
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#include "qd.h"
|
||||||
|
#include "toolbox.h"
|
||||||
|
|
||||||
|
#include <cpu/defs.h>
|
||||||
|
#include <cpu/CpuModule.h>
|
||||||
|
#include <cpu/fmem.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
uint32_t StackFrame(uint32_t &a)
|
||||||
|
{
|
||||||
|
uint32_t sp = cpuGetAReg(7);
|
||||||
|
a = memoryReadLong(sp); sp += 4;
|
||||||
|
cpuSetAReg(7, sp);
|
||||||
|
|
||||||
|
return sp;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t StackFrame(uint16_t &a)
|
||||||
|
{
|
||||||
|
uint32_t sp = cpuGetAReg(7);
|
||||||
|
a = memoryReadWord(sp); sp += 2;
|
||||||
|
cpuSetAReg(7, sp);
|
||||||
|
|
||||||
|
return sp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolReturn(uint32_t sp, uint32_t value)
|
||||||
|
{
|
||||||
|
memoryWriteLong(value, sp);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace QD {
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t ShowCursor(uint16_t trap)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%04x ShowCursor()\n", trap);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GetCursor(uint16_t trap)
|
||||||
|
{
|
||||||
|
uint32_t sp;
|
||||||
|
uint16_t cursorID;
|
||||||
|
|
||||||
|
sp = StackFrame(cursorID);
|
||||||
|
|
||||||
|
fprintf(stderr, "%04x GetCursor(%04x)\n", trap, cursorID);
|
||||||
|
|
||||||
|
|
||||||
|
ToolReturn(sp, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t SetCursor(uint16_t trap)
|
||||||
|
{
|
||||||
|
uint32_t sp;
|
||||||
|
uint32_t cursor;
|
||||||
|
|
||||||
|
sp = StackFrame(cursor);
|
||||||
|
|
||||||
|
fprintf(stderr, "%04x SetCursor(%08x)\n", trap, cursor);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
15
toolbox/qd.h
Normal file
15
toolbox/qd.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __mpw_qd_h__
|
||||||
|
#define __mpw_qd_h__
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace QD
|
||||||
|
{
|
||||||
|
|
||||||
|
uint16_t ShowCursor(uint16_t trap);
|
||||||
|
uint16_t GetCursor(uint16_t trap);
|
||||||
|
uint16_t SetCursor(uint16_t trap);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@@ -11,6 +11,7 @@
|
|||||||
#include "rm.h"
|
#include "rm.h"
|
||||||
#include "mm.h"
|
#include "mm.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
#include "qd.h"
|
||||||
#include "mpw_time.h"
|
#include "mpw_time.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -90,13 +91,28 @@ namespace ToolBox {
|
|||||||
d0 = RM::GetResource(trap);
|
d0 = RM::GetResource(trap);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// quickdraw
|
// quickdraw (AsmIIgs ... )
|
||||||
|
|
||||||
// _ShowCursor();
|
// _ShowCursor();
|
||||||
case 0xA853:
|
case 0xA853:
|
||||||
d0 = 0;
|
d0 = QD::ShowCursor(trap);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// GetCursor (cursorlD: INTEGER) : CursHandle;
|
||||||
|
case 0xA9B9:
|
||||||
|
d0 = QD::GetCursor(trap);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
//SetCursor (crsr: Cursor)
|
||||||
|
case 0xA851:
|
||||||
|
d0 = QD::SetCursor(trap);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// GetFNum (fontName: Str255; VAR theNum: INTEGER);
|
||||||
|
case 0xa900:
|
||||||
|
d0 = QD::GetFNum(trap);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user