3 void putOsaskChar(int c, HOSECPU_RuntimeEnvironment *r)
\r
5 if (0x10 <= c && c <= 0x1f){
\r
6 c = "0123456789ABCDEF"[c & 0x0f];
\r
9 r->lastConsoleChar = c;
\r
13 void checkString(HOSECPU_RuntimeEnvironment *r, int rxx, int pxx)
\r
16 if (r->preg[pxx].typ != 0x03){
\r
19 if (r->preg[pxx].p < r->preg[pxx].p0){
\r
22 if (r->ireg[rxx] < 0){
\r
25 if (r->preg[pxx].p + r->ireg[rxx] > r->preg[pxx].p1){
\r
34 int loadColor(HOSECPU_RuntimeEnvironment *r, int rxx)
\r
36 int c, m, rr, gg, bb;
\r
38 m = r->ireg[0x31] & 0x0c;
\r
40 if (c < -1 || c > 7){
\r
43 c = iColor1[c & 0x07];
\r
46 // 00, 24, 48, 6d, 91, b6, da, ff
\r
47 if (c < 0 || c >= (1 << 9)){
\r
50 rr = (c >> 6) & 0x07;
\r
51 gg = (c >> 3) & 0x07;
\r
53 rr = (rr * 255) / 7;
\r
54 gg = (gg * 255) / 7;
\r
55 bb = (bb * 255) / 7;
\r
56 c = rr << 16 | gg << 8 | bb;
\r
59 // 00, 08, 10, 18, 20, 29, 31, 39,
\r
60 // 41, 4a, 52, 5a, 62, 6a, 73, 7b,
\r
61 // 83, 8b, 94, 9c, a4, ac, b4, bd,
\r
62 // c5, cd, d5, de, e6, ee, f6, ff
\r
63 if (c < 0 || c >= (1 << 15)){
\r
66 rr = (c >> 10) & 0x1f;
\r
67 gg = (c >> 5) & 0x1f;
\r
69 rr = (rr * 255) / 31;
\r
70 gg = (gg * 255) / 31;
\r
71 bb = (bb * 255) / 31;
\r
72 c = rr << 16 | gg << 8 | bb;
\r
77 void checkRect(HOSECPU_RuntimeEnvironment *r, int rxx)
\r
81 if (r->ireg[rxx + 0] <= 0 || r->ireg[rxx + 0] > mainWindow.xsize){
\r
84 if (r->ireg[rxx + 1] <= 0 || r->ireg[rxx + 1] > mainWindow.ysize){
\r
87 if (r->ireg[rxx + 2] < 0 || r->ireg[rxx + 2] >= mainWindow.xsize){
\r
90 if (r->ireg[rxx + 3] < 0 || r->ireg[rxx + 3] >= mainWindow.ysize){
\r
93 i = r->ireg[rxx + 2] + r->ireg[rxx + 0];
\r
94 if (i <= 0 || i > mainWindow.xsize){
\r
97 i = r->ireg[rxx + 1] + r->ireg[rxx + 3];
\r
98 if (i <= 0 || i > mainWindow.ysize){
\r
102 (*(r->errHndl))(r);
\r