This commit is contained in:
Colin Klipsch 2006-10-27 23:03:01 +00:00
parent 6fb1258ce1
commit df452fb5fe
18 changed files with 1543 additions and 2157 deletions

View File

@ -221,9 +221,9 @@
287231B70A877A8E006AA610 /* Source */ = {
isa = PBXGroup;
children = (
286BC2C40AE685EE00A01672 /* release.xcconfig */,
286BC2C50AE685EE00A01672 /* debug.xcconfig */,
286BC2C60AE685EE00A01672 /* common.xcconfig */,
286BC2C50AE685EE00A01672 /* debug.xcconfig */,
286BC2C40AE685EE00A01672 /* release.xcconfig */,
287233810A87859D006AA610 /* Prefix.pch */,
280F4D2D0A89017C000B3B80 /* Cocoa */,
2872382C0A87B16B006AA610 /* LibAppleII */,

View File

@ -7,16 +7,12 @@
<key>IBEditorPositions</key>
<dict>
<key>29</key>
<string>27 680 349 44 0 0 1024 746 </string>
<string>32 773 349 44 0 0 1152 842 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
<key>IBOldestOS</key>
<integer>3</integer>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
</array>
<key>IBSystem Version</key>
<string>8L127</string>
</dict>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,4 @@
/Scale 30 def
/Inch 72 Scale mul def
/PageHeight Inch 11 mul def
/CR-implies-LF false def
/ToFontCode 16#300 string def
%-----------------------------------------------------------------------------
/kfItalics 16#001 def
/kfUnderline 16#002 def
@ -16,28 +11,72 @@
/kfSubscript 16#100 def
/kfSuperscript 16#200 def
/Scale 30 def
/Inch 72 Scale mul def
/PageHeight Inch 11 mul def
/CR-implies-LF false def
/ToFontCode 16#300 string def
0 1 16#2FF {
ToFontCode exch dup
16#003 and
<00 04 04 04> 2 index -2 bitshift 3 and get or
<0018080810101010> 2 index -4 bitshift 7 and get or
<00 18 08 08 10 10 10 10> 2 index -4 bitshift 7 and get or %??
<00 20 40 40 60 60> 2 index -7 bitshift get or
put
} for
/BlessString % string -- string
{
dup 0 EscChar put % T0 esc code
dup 1 ToFontCode Style get put
} def
/G % sData nDotsPerHorizInch --
{
Inch exch idiv exch 0 exch
dup 0 EscChar put % T0 esc code
dup 1 128 put % number of the graphics font!!
ashow
} def
/Down % nDeltaY --
{
neg 0 exch rmoveto
CurrentY PageHeight -1 {
pop 0 PageHeight rmoveto gsave showpage grestore
} for
} def
/SetFormLength % nY --
{ % incomplete!!
pop
} def
/ClampX % --
{
currentpoint exch cvi
dup LMargin lt {pop LMargin} if
dup RMargin gt {pop RMargin} if
exch moveto
} def
/C-I % nReps --
{ % temporary!!
TabWidth mul CurrentX TabWidth mod sub 0 rmoveto
ClampX
} def
/CurrentX {currentpoint pop cvi} def % -- nX
/CurrentY {currentpoint exch pop cvi} def % -- nY
/TurnOff {not Style and /Style exch def} def % nFlags --
/TurnOn { Style or /Style exch def} def % nFlags --
/T {BlessString show} def % string --
/CR {LMargin CurrentY moveto} def % --
/SpcWidth {(-- ) BlessString stringwidth pop mul} def % nSpaces -- width
/G % sData nDotsPerHorizInch --
{
Inch exch idiv exch 0 exch
% dup 0 127 put dup 1 128 put
ashow
} def
/G0 { 60 G} def % sData --
/G1 {120 G} def % sData --
/G2 {120 G} def % sData --
@ -53,14 +92,14 @@
/E-F {kfEmphasized TurnOff} def % --
/E-G {kfDblStrike TurnOn} def % --
/E-H {kfDblStrike TurnOff} def % --
/E-W1 {kfExpanded TurnOn} def % --
/E-W0 {kfExpanded kfExpanded1L or TurnOff} def % --
/E-M {kfElite TurnOn} def % --
/E-P {kfElite TurnOff} def % --
/C-O {kfCompressed TurnOn} def % --
/C-R {kfCompressed TurnOff} def % --
/C-N {kfExpanded1L TurnOn} def % --
/C-T {kfExpanded1L TurnOff} def % --
/E-W1 {kfExpanded TurnOn} def % --
/E-W0 {kfExpanded kfExpanded1L or TurnOff} def % --
/E-M {kfElite TurnOn} def % --
/E-P {kfElite TurnOff} def % --
/E-S0 {kfSuperscript TurnOn kfSubscript TurnOff} def % --
/E-S1 {kfSubscript TurnOn kfSuperscript TurnOff} def % --
/E-T {kfSuperscript kfSubscript or TurnOff} def % --
@ -70,91 +109,69 @@
/E-0 { 9 E-A} def % --
/E-1 { 7 E-A} def % --
/E-2 {12 E-A} def % --
/E-C {LFDY mul SetFormLength} def % nLines -- % or sixths of an inch??
/E-C0 {Inch mul SetFormLength} def % nInches --
/C-I % nReps --
{
TabWidth mul CurrentX TabWidth mod sub 0 rmoveto
ClampX
} def
/C-L % nReps --
{
{showpage} repeat
0 Inch 6 idiv 65 mul moveto % 0 or CurrentX ??
} def
/T {BlessString show} def % string --
/CR {0 CurrentY moveto} def % --
/C-M {kfExpanded1L TurnOff CR pop} def % nReps --
/C-J {LFDY mul Down} def % nLines --
/E-f1 {LFDY mul Down} def % nLines --
/E-J {Scale mul 3 idiv Down} def % n-216ths-inch --
/C-H {SpcWidth neg 0 rmoveto ClampX} def % nReps --
/E-l {SpcWidth /LMargin exch def} def % nSpaces --
/E-Q {SpcWidth /RMargin exch def} def % nSpaces --
/Down % nDeltaY --
{
neg 0 exch rmoveto
CurrentY PageHeight 0 {
pop 0 PageHeight rmoveto gsave showpage grestore
} for
} def
/BlessString % string --
{
dup 0 127 put
dup 1 ToFontCode Style get put
} def
/ClampX % --
{
currentpoint exch cvi
dup LMargin lt {pop LMargin} if
dup RMargin gt {pop RMargin} if
exch moveto
} def
/Reset
{
/LMargin 0 def
/RMargin 8 Inch mul def
/PageHeight Inch 11 mul def
/Style 0 def
/TabWidth Inch 8 mul 10 idiv def % fixed-size tabs!!
E-2 E-O
} def
%-----------------------------------------------------------------------------
% incomplete routines!!
/SetFormLength % nY --
{
pop
} def
/C-J {LFDY mul Down} def % nReps --
%/E-f1 {LFDY mul Down} def % nLines --
% None of these work yet!!
/C-K {pop} def % nReps --
/E-O { } def % --
/E-N {pop} def % nLines --
/E-e0 {pop} def % n --
/E-e1 {pop} def % n --
/E-f0 {pop} def % n --
/C-H {SpcWidth neg 0 rmoveto ClampX} def % nReps --
/E-l {SpcWidth /LMargin exch def} def % nSpaces --
/E-Q {SpcWidth /RMargin exch def} def % nSpaces --
/E-C {LFDY mul SetFormLength} def % nLines --
/E-C0 {Inch mul SetFormLength} def % nInches --
/C-K % nReps --
/C-M % nReps --
{
pop
kfExpanded1L TurnOff
CR
CR-implies-LF {C-J} {pop} ifelse
} def
%-----------------------------------------------------------------------------
/C-L % nReps --
{
{showpage} repeat
CurrentX 780 Scale mul moveto % 780 pt == 65 standard lines
% 0 or CurrentX ??
} def
/Reset % --
{
/TabWidth Inch 4 mul 5 idiv def % fixed-size tabs!!
% /TabStops <00 08 10 18 20 28 30 38 40 48 50 58 60 68> def %??
% 0 E-l 80 E-Q
/LMargin 0 def
/RMargin 8 Inch mul def
/Style 0 def
E-2 %E-O
} def
/BeginDocument % --
{
18 4 translate
0 780 moveto
1. Scale div dup scale
/Ibsen findfont /T0Font get 10 Scale mul scalefont setfont
currentfont begin userdict begin
Reset
} def
/EndDocument % --
{
showpage
end end
/pdfmark where { pop [
/Creator (Catakig 2)
/Producer (http://catakig.sourceforge.net)
/Producer (http://catakig.sourceforge.net/)
/DOCINFO pdfmark } if
/setdistillerparams where { pop <<
@ -166,10 +183,6 @@
/CompressPages true
>> setdistillerparams } if
18 0 translate
0 784 moveto
1. Scale div dup scale
/Ibsen findfont /T0Font get 12 Scale mul scalefont setfont
Reset
} def
%-----------------------------------------------------------------------------

View File

@ -22,8 +22,8 @@
* Are we capturing screens in the best and fastest way?
* Drag & Drop disk slots
* File filtering is slow when opening disk images.
* Add sound recording.
* Add QuickTime movie recording.
* Add recording sound to files.
* Add recording QuickTime movies.
==== Miscellany ====

View File

@ -26,6 +26,7 @@
* Implement the "bizarre" (and useless) GR video mode?
* Simulate color burst for text in graphics mode.
* Implement Videx 80-column card for IIo and IIp models?
* IIo and IIp text video still isn't entirely authentic.
==== Audio ====
@ -41,9 +42,8 @@
* Support BZ- and GZ-compressed disk image files.
* Use track size of 6384-6400 bytes instead of 6656?
* Infer DO/PO format of 140K disks by examining their contents.
* On computer Reset, does the IWM mode register revert to 0?
* Update checksum on modified DiskCopy 4 images.
* Does IWM mode register change after RESET?
* Update checksum on modified DiskCopy 4 images.
* Support FDI disk images? NB2?
* Forbid Disk II drives accepting 2IMG-PO disks > 140 KB.
* On real Apple II with IWM, verify IWM status register value under all
@ -60,6 +60,7 @@
* The Flex scanner is not re-entrant, and not thread-safe. Use 're2c'?
* Output PS should be friendly to A4 paper sizes, and PDF distilling.
* Use PDF-lib library for printing to PDF?
* Let user select ribbon ink color.
* Preferences:
LF after CR, yes or no
7 or 8 bit data path

View File

@ -1,26 +1,34 @@
==== 2.00b4, 2006-10-27 ====
Streamlined the Epson dot-matrix printer font. The PFA file is about 50 KB smaller, down from 150, which slims PostScript output files by the same amount.
Also, Catakig's PostScript files can now be opened with Apple's Preview application. This makes viewing them, printing them, and saving them to PDF much more convenient, at least for MacOS X users. [Achieved this by making the output DSC-compliant.]
Added recognition of the Revision-04 //c ROM. Thanks to Nick W.
Fixed (probably) a flashing-border bug that could happen in full-screen mode.
The "Full Screen" menu command's shortcut is changed to ctrl-F9, to help avoid conflicts with Apple's shortcuts for Expose. It's probably not a permanent solution to the problem however.
A small cosmetic change: the Apple ][ model now starts up with a screen full of '?' and '>' characters, instead of completely random characters. This more closely mimics the behavior of the real machines.
==== 2.00b3, 2006-10-20 ====
Fixed broken ROM scanning on many Mac models. [Now using 'crc32' instead of
'adler32', both from 'zlib'. Also reverted back to C FILE pointers after
having tried NSInputStreams to no great advantage.]
Fixed ROM file scanning, which was broken on many Mac models. [Now using 'crc32' to compute checksums instead of 'adler32'. Both functions are from 'zlib', but apparently 'adler32' can return different sums on different platforms. Also reverted to using C FILEs after having tried NSInputStreams to no great advantage.]
Added recognition of Revision-00 IIc ROM.
Added recognition of the Revision-00 //c ROM. Thanks to Brian N.
Improved intelligence of the memory card firmware in slot 4. Added more
error detection. Implemented more authentic behavior when the memory
isn't there (when the user has selected "Extra RAM: None").
Improved intelligence of the memory card firmware in slot 4. Added more error detection. Implemented more authentic behavior when the memory isn't there (when the user has selected "Extra RAM: None").
Fixed some bad code in the printer firmware that mangled CR behavior and
other character output. This bug affected pre-IIc models only.
Fixed some bad code in the printer firmware that mangled CR behavior and other character output. This bug affected pre-//c models only.
In the "Save Printer Session" dialog, the "Add suffix" checkbox had no
actual effect. Fixed.
In the "Save Printer Session" dialog, the "Add suffix" checkbox had no actual effect. Fixed.
Fixed IIe memory mapping behavior in the $C100-C7FF area.
Fixed incorrect //e memory mapping behavior in the $C100-C7FF area.
Removed bogus menu commands related to document files. The saving and
restoring of Apple II states isn't supported yet. Also removed the "Help"
menu, as there is no in-line help yet.
Removed bogus menu commands related to document files. The saving and restoring of Apple II states is not implemented yet. Also removed the cruelly deceitful Help menu, as there is no in-line help at present.
==== 2.00b2, 2006-10-17 ====

View File

@ -93,8 +93,8 @@ static GLuint MakeTextureObject(void)
static void BlessThisContext(NSOpenGLContext* context) //!!
{/*
Sets up an OpenGLContext the way we like it. Also makes 'context'
the current context and leaves it that way on exit.
Sets up an OpenGLContext the way we like it. Also makes the context
the current one, leaving it that way on return.
*/
[context makeCurrentContext];
[context SetSwapInterval:1L];
@ -160,14 +160,14 @@ static NSOpenGLContext* MakeFullScreenContext(CGDirectDisplayID dpy)
initWithAttributes:pixFmtAttrs]) autorelease];
context = [[NSOpenGLContext alloc]
initWithFormat:pixFmt shareContext:nil];
[context setFullScreen];
BlessThisContext(context);
MakeDisplayList();
glBindTexture(GL_TEXTURE_2D, MakeTextureObject());
GL_PrepareViewport(CGDisplayPixelsWide(dpy), CGDisplayPixelsHigh(dpy));
GL_ClearBothBuffers();
GL_PrepareViewport(CGDisplayPixelsWide(dpy), CGDisplayPixelsHigh(dpy));
[context setFullScreen];
return context;
}

View File

@ -42,6 +42,22 @@
//---------------------------------------------------------------------------
static void RandomizeVideoMemory(void* ram, unsigned model)
{
for (int i = 0x6000; --i >= 0;)
((uint16_t*)ram)[i] = A2Random16();
if (model == kA2ModelIIo)
{
uint32_t* p = (uint32_t*)ram;
for (int i = 0x400/4; i < 0xC00/4; ++i)
p[i] = p[i] & 0x01010101 | 0xBEBEBEBE;
}
}
//---------------------------------------------------------------------------
- (id)init
{/*
"Add your subclass-specific initialization here. If an error occurs,
@ -80,11 +96,7 @@
mIWM[dd>>1].drive[dd&1] = [[A2DiskDrive alloc]
InitUsingBuffer: mMemory->diskBuffers[dd] ];
// Initialize video memory with random bytes (a theatrical effect).
for (int i = 0x6000; --i >= 0;)
((uint16_t*)(mMemory->RAM))[i] = A2Random16();
RandomizeVideoMemory(mMemory->RAM, mModel);
madvise(mMemory, mMemorySize, MADV_SEQUENTIAL);
[self _PrepareModel];
return self;

View File

@ -11,6 +11,29 @@
static int input(void);
//static uint8_t gEpsonFontForStyle[0x2FF + 1];
static const char* gEpson1 =
"%!PS-Adobe-3.0\n"
// "%%DocumentData: Binary\n"
"%%LanguageLevel: 2\n"
"%%Orientation: Portrait\n"
"%%DocumentSuppliedResources: font Ibsen procset MyProcs\n"
"%%EndComments\n\n"
"%%BeginProlog\n"
"%%BeginResource: procset MyProcs\n";
static const char* gEpson2 =
"%%EndResource\n"
"%%EndProlog\n\n"
"%%BeginSetup\n"
"%%BeginResource: font Ibsen\n";
static const char* gEpson3 =
"%%EndResource\n"
"%%EndSetup\n"
"BeginDocument\n\n";
enum { kUseDSC = YES }; // experimental!!
//---------------------------------------------------------------------------
static void EpsonText(BOOL trailingRubouts)
@ -23,7 +46,7 @@ static void EpsonText(BOOL trailingRubouts)
char ch = yytext[i];
if (ch == '(' or ch == ')' or ch == '\\')
fputc('\\', yyout);
putc('\\', yyout);
putc(ch, yyout);
}
fputs(") T", yyout);
@ -41,7 +64,7 @@ static void EpsonGraphics(int mode)
if (nbytes < 1)
return;
fputs("\n<7F80 ", yyout);
fputs("\n<0000 ", yyout);
while (--nbytes >= 0 and EOF != (data = input()))
{
putc(hexDigit[data >> 4], yyout);
@ -52,10 +75,11 @@ static void EpsonGraphics(int mode)
%} --------------------------------------------------------------------------
ESC \x1B
ANY [\0-\x7F]
ANY2 {ANY}{2}
ANY3 {ANY}{3}
ESC \x1B
_01 [01\0\1]
%%
%{
@ -67,7 +91,7 @@ ANY3 {ANY}{3}
%}
<EpsonRX>{
<<EOF>> fputs("\nshowpage\n", yyout); return;
<<EOF>> return;
{ESC}[@] { fputs("\nReset\n", yyout);
charset = 0; gcharset = NO;
}
@ -84,20 +108,19 @@ ANY3 {ANY}{3}
{ESC}[01245EFGHMOPT] {
fprintf(yyout, " E-%c", yytext[1]);
}
{ESC}?[\x0F\x12\x0E\x14] {
fprintf(yyout, " C-%c", yytext[yyleng-1] | '@');
}
{ESC}[-SW][01\0\1] {
{ESC}[-SW]{_01} {
fprintf(yyout, " E-%c%c", yytext[1], yytext[2] | '0');
}
{ESC}?[\x0E\x0F\x12\x14] {
fprintf(yyout, " C-%c", yytext[yyleng-1] | '@');
}
{ESC}C\0{ANY} |
{ESC}[ef][01]{ANY} {
{ESC}[ef]{_01}{ANY} {
fprintf(yyout, " %d E-%c%c", yytext[3], yytext[1], yytext[2]|'0');
}
{ESC}[3ACJNQl]{ANY} {
fprintf(yyout, " %d E-%c", yytext[2], yytext[1]);
}
\x08+|\x09+|\x0A+|\x0B+|\x0C+|\x0D+ {
fprintf(yyout, " %d C-%c", yyleng, yytext[0] | '@');
}
@ -109,16 +132,16 @@ ANY3 {ANY}{3}
{ESC}[*]{ANY3} |
{ESC}[ef]{ANY2} |
{ESC}[-SRUWms]{ANY} |
{ESC}{ANY} ; // invalid sequences, skipped
{ESC}{ANY} ; // catch and skip invalid sequences
}
<INITIAL>{
[\n\t\v\f]+ |
[\x20-\x7E]+ ECHO;
[\x20-\x7E]+ ECHO; // state INITIAL is the ASCII filter
}
<*>{
{ANY} ; // ignored if not handled above
{ANY} ;
<<EOF>> return;
}
@ -163,7 +186,7 @@ ANY3 {ANY}{3}
- (long)SizeOfPrintSession
{/*
Returns the number of bytes that have accumulated so far in the
printer session.
print session.
*/
fflush(mPrinter.session); // (probably unnecessary)
return ftell(mPrinter.session);
@ -173,8 +196,8 @@ ANY3 {ANY}{3}
- (void)ClearPrintSession
{/*
Clears (purges) the printer session. All data bytes that this printer
has received are discarded.
Clears the print session, discarding all bytes that this printer
has received up until now.
*/
fflush(mPrinter.session);
fseek(mPrinter.session, 0, SEEK_SET);
@ -204,9 +227,24 @@ ANY3 {ANY}{3}
break;
case kA2PFEpsonToPS:
if (kUseDSC)
{
fputs(gEpson1, yyout); fflush(yyout);
A2AppendResourceFile(fileno(yyout), @"IbsenUtils.ps");
fputs(gEpson2, yyout); fflush(yyout);
A2AppendResourceFile(fileno(yyout), @"Ibsen.pfa");
fputs(gEpson3, yyout); fflush(yyout);
yylex(filter);
fputs("\n%%Trailer\nEndDocument\n%%EOF\n", yyout);
}
else
{
A2AppendResourceFile(fileno(yyout), @"Ibsen.pfa");
A2AppendResourceFile(fileno(yyout), @"IbsenUtils.ps");
fputs("BeginDocument\n", yyout);
yylex(filter);
fputs("EndDocument\n", yyout);
}
break;
case kA2PFPlain:

View File

@ -76,7 +76,7 @@ static struct // the ROM repository
return gROM.IIcpMain[0] and gROM.IIcpAlt[0];
}
return NO; // means model code isn't valid
return NO; // means 'modelCode' isn't valid
}
//---------------------------------------------------------------------------
@ -92,10 +92,10 @@ static struct // the ROM repository
return;
if (slotROM != nil)
memcpy((mMemory->ROM[1]) + 0x100*slotNum, slotROM, 0x100);
memcpy(mMemory->ROM[1] + 0x100*slotNum, slotROM, 0x100);
if (expansionROM != nil)
memcpy((mMemory->ROM[1]) + 0x800*slotNum, expansionROM, 0x800);
memcpy(mMemory->ROM[1] + 0x800*slotNum, expansionROM, 0x800);
}
//---------------------------------------------------------------------------
@ -222,10 +222,14 @@ static struct // the ROM repository
CASE(AA2342E8, IIo)
CASE(B9E3B093, IIpD0) CASE(79135697, IIpD5)
CASE(40375280, IIeC1) CASE(1DB83E23, IIeD5)
CASE(24F39DF7, IIcpMain) CASE(F768C5C3, IIcpAlt)
// CASE(24F39DF7, IIcpMain) CASE(F768C5C3, IIcpAlt)
case 0x816CDA70: CASE(228C4909, IIcMain)
case 0xFA9D7930: CASE(DC459600, IIcAlt)
case 0x816CDA70: // rev. 00
CASE(228C4909, IIcMain) // rev. 03 and 04
case 0xFA9D7930: // rev. 00
case 0xF768C5C3: // rev. 04 (also IIcpAlt!!)
CASE(DC459600, IIcAlt) // rev. 03
CASE(CE7144F6, DiskII)
CASE(BA81A559, Mouse)
@ -238,7 +242,7 @@ static struct // the ROM repository
memcpy(dest, chunk, chunkSize);
fread(dest+chunkSize, 1, len-chunkSize, fin);
if (dest == gROM.IIpD0)
if (crc == 0xB9E3B093) // IIpD0
memcpy(gROM.IIeD0, dest, len);
}

View File

@ -183,14 +183,13 @@ BOOL A2AppendResourceFile(fd_t fout, NSString* resName)
Searches the application bundle for a given resource file, then
appends its content to the given destination file.
*/
NSString* fpath;
NSString* fpath = [resName PathForResource];
fd_t fin;
fpath = [resName PathForResource];
if (fpath == nil)
return NO;
fin = open([fpath fileSystemRepresentation], O_RDONLY);
fin = open([fpath fileSystemRepresentation], O_RDONLY|O_NONBLOCK);
if (fin < 0)
return NO;

View File

@ -157,7 +157,7 @@ extern struct A2PrivateTables
extern "C" {
#endif
BOOL A2AppendResourceFile(fd_t fout, NSString* resName);
BOOL A2AppendResourceFile(fd_t, NSString* resName);
void A2DumpArray(const char*, const void*, size_t, int);
unsigned A2GleanFileFormat(const void* header, size_t size);
unsigned A2HitIWM(A2IWM* iwm, unsigned ea, unsigned d);

View File

@ -26,7 +26,7 @@ enum
kA2DiskReadOnly,
kA2DiskReadWrite,
kA2PFPlain = 0, // printer I/O filters
kA2PFPlain = 0, // printer session filters
kA2PFEpsonToPS,
// kA2PFScribeToPS,
kA2PFVerbatim,
@ -37,7 +37,7 @@ enum
kfA2LightDDrive3 = 1<<3,
kfA2LightPrinter = 1<<4,
kfA2Button0 = 1, // button & mod-key states
kfA2Button0 = 1, // button and modifier-key states
kfA2Button1 = 1<<1,
kfA2Button2 = 1<<2,
kfA2ButtonMouse = 1<<3,
@ -133,7 +133,7 @@ extern struct A2Globals
int16_t *mTblADC, // this model's ADC and SBC tables
*mTblSBC;
uint8_t mVideoFlags[262]; // video flags for each scanline
uint8_t mVideoFlags[262]; // video flags at each scanline
//----------------- Peripherals -----------------
@ -174,7 +174,8 @@ extern struct A2Globals
@end
//---------------------------------------------------------------------------
// The various methods of A2Computer, grouped by category.
// The various methods of A2Computer, grouped by category (and separate
// source files).
@interface A2Computer (Audio)

View File

@ -9,7 +9,10 @@
//---------------------------------------------------------------------------
- (NSOpenGLContext*)MakeCurrentContext
{
{/*
Makes this context the current one, returning whatever was the previous
current context.
*/
NSOpenGLContext* prev = [NSOpenGLContext currentContext];
[self makeCurrentContext];

View File

@ -1,7 +1,7 @@
/* MyUtils.h
My own (CK's) generally useful additions to the Cocoa/GNUstep classes
-- not specific to any particular project.
My own (CK's) generally useful additions to the Cocoa/GNUstep classes,
which are not specific to any particular project.
*/
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

View File

@ -1,7 +1,7 @@
// 'common.xcconfig' -- a set of common XCode configration settings
// shared by all targets.
App_Version = 2.00b3
App_Version = 2.00b4
PRODUCT_NAME = Catakig
WRAPPER_EXTENSION = app