mirror of
https://github.com/aufflick/Catakig.git
synced 2024-11-29 20:49:24 +00:00
This commit is contained in:
parent
6fb1258ce1
commit
df452fb5fe
@ -221,9 +221,9 @@
|
|||||||
287231B70A877A8E006AA610 /* Source */ = {
|
287231B70A877A8E006AA610 /* Source */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
286BC2C40AE685EE00A01672 /* release.xcconfig */,
|
|
||||||
286BC2C50AE685EE00A01672 /* debug.xcconfig */,
|
|
||||||
286BC2C60AE685EE00A01672 /* common.xcconfig */,
|
286BC2C60AE685EE00A01672 /* common.xcconfig */,
|
||||||
|
286BC2C50AE685EE00A01672 /* debug.xcconfig */,
|
||||||
|
286BC2C40AE685EE00A01672 /* release.xcconfig */,
|
||||||
287233810A87859D006AA610 /* Prefix.pch */,
|
287233810A87859D006AA610 /* Prefix.pch */,
|
||||||
280F4D2D0A89017C000B3B80 /* Cocoa */,
|
280F4D2D0A89017C000B3B80 /* Cocoa */,
|
||||||
2872382C0A87B16B006AA610 /* LibAppleII */,
|
2872382C0A87B16B006AA610 /* LibAppleII */,
|
||||||
|
6
English.lproj/MainMenu.nib/info.nib
generated
6
English.lproj/MainMenu.nib/info.nib
generated
@ -7,16 +7,12 @@
|
|||||||
<key>IBEditorPositions</key>
|
<key>IBEditorPositions</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>29</key>
|
<key>29</key>
|
||||||
<string>27 680 349 44 0 0 1024 746 </string>
|
<string>32 773 349 44 0 0 1152 842 </string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>IBFramework Version</key>
|
<key>IBFramework Version</key>
|
||||||
<string>446.1</string>
|
<string>446.1</string>
|
||||||
<key>IBOldestOS</key>
|
<key>IBOldestOS</key>
|
||||||
<integer>3</integer>
|
<integer>3</integer>
|
||||||
<key>IBOpenObjects</key>
|
|
||||||
<array>
|
|
||||||
<integer>29</integer>
|
|
||||||
</array>
|
|
||||||
<key>IBSystem Version</key>
|
<key>IBSystem Version</key>
|
||||||
<string>8L127</string>
|
<string>8L127</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -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
|
/kfItalics 16#001 def
|
||||||
/kfUnderline 16#002 def
|
/kfUnderline 16#002 def
|
||||||
@ -16,28 +11,72 @@
|
|||||||
/kfSubscript 16#100 def
|
/kfSubscript 16#100 def
|
||||||
/kfSuperscript 16#200 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 {
|
0 1 16#2FF {
|
||||||
ToFontCode exch dup
|
ToFontCode exch dup
|
||||||
16#003 and
|
16#003 and
|
||||||
<00 04 04 04> 2 index -2 bitshift 3 and get or
|
<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
|
<00 20 40 40 60 60> 2 index -7 bitshift get or
|
||||||
put
|
put
|
||||||
} for
|
} 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
|
/CurrentX {currentpoint pop cvi} def % -- nX
|
||||||
/CurrentY {currentpoint exch pop cvi} def % -- nY
|
/CurrentY {currentpoint exch pop cvi} def % -- nY
|
||||||
/TurnOff {not Style and /Style exch def} def % nFlags --
|
/TurnOff {not Style and /Style exch def} def % nFlags --
|
||||||
/TurnOn { Style or /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
|
/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 --
|
/G0 { 60 G} def % sData --
|
||||||
/G1 {120 G} def % sData --
|
/G1 {120 G} def % sData --
|
||||||
/G2 {120 G} def % sData --
|
/G2 {120 G} def % sData --
|
||||||
@ -53,14 +92,14 @@
|
|||||||
/E-F {kfEmphasized TurnOff} def % --
|
/E-F {kfEmphasized TurnOff} def % --
|
||||||
/E-G {kfDblStrike TurnOn} def % --
|
/E-G {kfDblStrike TurnOn} def % --
|
||||||
/E-H {kfDblStrike TurnOff} 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-O {kfCompressed TurnOn} def % --
|
||||||
/C-R {kfCompressed TurnOff} def % --
|
/C-R {kfCompressed TurnOff} def % --
|
||||||
/C-N {kfExpanded1L TurnOn} def % --
|
/C-N {kfExpanded1L TurnOn} def % --
|
||||||
/C-T {kfExpanded1L TurnOff} 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-S0 {kfSuperscript TurnOn kfSubscript TurnOff} def % --
|
||||||
/E-S1 {kfSubscript TurnOn kfSuperscript TurnOff} def % --
|
/E-S1 {kfSubscript TurnOn kfSuperscript TurnOff} def % --
|
||||||
/E-T {kfSuperscript kfSubscript or TurnOff} def % --
|
/E-T {kfSuperscript kfSubscript or TurnOff} def % --
|
||||||
@ -70,91 +109,69 @@
|
|||||||
/E-0 { 9 E-A} def % --
|
/E-0 { 9 E-A} def % --
|
||||||
/E-1 { 7 E-A} def % --
|
/E-1 { 7 E-A} def % --
|
||||||
/E-2 {12 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 --
|
/E-J {Scale mul 3 idiv Down} def % n-216ths-inch --
|
||||||
/C-H {SpcWidth neg 0 rmoveto ClampX} def % nReps --
|
/C-J {LFDY mul Down} def % nReps --
|
||||||
/E-l {SpcWidth /LMargin exch def} def % nSpaces --
|
%/E-f1 {LFDY mul Down} def % nLines --
|
||||||
/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
|
|
||||||
|
|
||||||
|
% None of these work yet!!
|
||||||
|
/C-K {pop} def % nReps --
|
||||||
/E-O { } def % --
|
/E-O { } def % --
|
||||||
/E-N {pop} def % nLines --
|
/E-N {pop} def % nLines --
|
||||||
/E-e0 {pop} def % n --
|
/E-e0 {pop} def % n --
|
||||||
/E-e1 {pop} def % n --
|
/E-e1 {pop} def % n --
|
||||||
/E-f0 {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-M % nReps --
|
||||||
/C-K % nReps --
|
|
||||||
{
|
{
|
||||||
pop
|
kfExpanded1L TurnOff
|
||||||
|
CR
|
||||||
|
CR-implies-LF {C-J} {pop} ifelse
|
||||||
} def
|
} 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 [
|
/pdfmark where { pop [
|
||||||
/Creator (Catakig 2)
|
/Creator (Catakig 2)
|
||||||
/Producer (http://catakig.sourceforge.net)
|
/Producer (http://catakig.sourceforge.net/)
|
||||||
/DOCINFO pdfmark } if
|
/DOCINFO pdfmark } if
|
||||||
|
|
||||||
/setdistillerparams where { pop <<
|
/setdistillerparams where { pop <<
|
||||||
@ -166,10 +183,6 @@
|
|||||||
/CompressPages true
|
/CompressPages true
|
||||||
>> setdistillerparams } if
|
>> setdistillerparams } if
|
||||||
|
|
||||||
18 0 translate
|
} def
|
||||||
0 784 moveto
|
|
||||||
1. Scale div dup scale
|
|
||||||
|
|
||||||
/Ibsen findfont /T0Font get 12 Scale mul scalefont setfont
|
|
||||||
Reset
|
|
||||||
|
|
||||||
|
%-----------------------------------------------------------------------------
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
* Are we capturing screens in the best and fastest way?
|
* Are we capturing screens in the best and fastest way?
|
||||||
* Drag & Drop disk slots
|
* Drag & Drop disk slots
|
||||||
* File filtering is slow when opening disk images.
|
* File filtering is slow when opening disk images.
|
||||||
* Add sound recording.
|
* Add recording sound to files.
|
||||||
* Add QuickTime movie recording.
|
* Add recording QuickTime movies.
|
||||||
|
|
||||||
|
|
||||||
==== Miscellany ====
|
==== Miscellany ====
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
* Implement the "bizarre" (and useless) GR video mode?
|
* Implement the "bizarre" (and useless) GR video mode?
|
||||||
* Simulate color burst for text in graphics mode.
|
* Simulate color burst for text in graphics mode.
|
||||||
* Implement Videx 80-column card for IIo and IIp models?
|
* Implement Videx 80-column card for IIo and IIp models?
|
||||||
|
* IIo and IIp text video still isn't entirely authentic.
|
||||||
|
|
||||||
|
|
||||||
==== Audio ====
|
==== Audio ====
|
||||||
@ -41,9 +42,8 @@
|
|||||||
* Support BZ- and GZ-compressed disk image files.
|
* Support BZ- and GZ-compressed disk image files.
|
||||||
* Use track size of 6384-6400 bytes instead of 6656?
|
* Use track size of 6384-6400 bytes instead of 6656?
|
||||||
* Infer DO/PO format of 140K disks by examining their contents.
|
* 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?
|
* Does IWM mode register change after RESET?
|
||||||
|
* Update checksum on modified DiskCopy 4 images.
|
||||||
* Support FDI disk images? NB2?
|
* Support FDI disk images? NB2?
|
||||||
* Forbid Disk II drives accepting 2IMG-PO disks > 140 KB.
|
* Forbid Disk II drives accepting 2IMG-PO disks > 140 KB.
|
||||||
* On real Apple II with IWM, verify IWM status register value under all
|
* 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'?
|
* 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.
|
* Output PS should be friendly to A4 paper sizes, and PDF distilling.
|
||||||
* Use PDF-lib library for printing to PDF?
|
* Use PDF-lib library for printing to PDF?
|
||||||
|
* Let user select ribbon ink color.
|
||||||
* Preferences:
|
* Preferences:
|
||||||
LF after CR, yes or no
|
LF after CR, yes or no
|
||||||
7 or 8 bit data path
|
7 or 8 bit data path
|
||||||
|
@ -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 ====
|
==== 2.00b3, 2006-10-20 ====
|
||||||
|
|
||||||
Fixed broken ROM scanning on many Mac models. [Now using 'crc32' instead of
|
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.]
|
||||||
'adler32', both from 'zlib'. Also reverted back to C FILE pointers 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
|
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").
|
||||||
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
|
Fixed some bad code in the printer firmware that mangled CR behavior and other character output. This bug affected pre-//c models only.
|
||||||
other character output. This bug affected pre-IIc models only.
|
|
||||||
|
|
||||||
In the "Save Printer Session" dialog, the "Add suffix" checkbox had no
|
In the "Save Printer Session" dialog, the "Add suffix" checkbox had no actual effect. Fixed.
|
||||||
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
|
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.
|
||||||
restoring of Apple II states isn't supported yet. Also removed the "Help"
|
|
||||||
menu, as there is no in-line help yet.
|
|
||||||
|
|
||||||
|
|
||||||
==== 2.00b2, 2006-10-17 ====
|
==== 2.00b2, 2006-10-17 ====
|
||||||
|
@ -93,8 +93,8 @@ static GLuint MakeTextureObject(void)
|
|||||||
|
|
||||||
static void BlessThisContext(NSOpenGLContext* context) //!!
|
static void BlessThisContext(NSOpenGLContext* context) //!!
|
||||||
{/*
|
{/*
|
||||||
Sets up an OpenGLContext the way we like it. Also makes 'context'
|
Sets up an OpenGLContext the way we like it. Also makes the context
|
||||||
the current context and leaves it that way on exit.
|
the current one, leaving it that way on return.
|
||||||
*/
|
*/
|
||||||
[context makeCurrentContext];
|
[context makeCurrentContext];
|
||||||
[context SetSwapInterval:1L];
|
[context SetSwapInterval:1L];
|
||||||
@ -160,14 +160,14 @@ static NSOpenGLContext* MakeFullScreenContext(CGDirectDisplayID dpy)
|
|||||||
initWithAttributes:pixFmtAttrs]) autorelease];
|
initWithAttributes:pixFmtAttrs]) autorelease];
|
||||||
context = [[NSOpenGLContext alloc]
|
context = [[NSOpenGLContext alloc]
|
||||||
initWithFormat:pixFmt shareContext:nil];
|
initWithFormat:pixFmt shareContext:nil];
|
||||||
|
[context setFullScreen];
|
||||||
|
|
||||||
BlessThisContext(context);
|
BlessThisContext(context);
|
||||||
MakeDisplayList();
|
MakeDisplayList();
|
||||||
glBindTexture(GL_TEXTURE_2D, MakeTextureObject());
|
glBindTexture(GL_TEXTURE_2D, MakeTextureObject());
|
||||||
GL_PrepareViewport(CGDisplayPixelsWide(dpy), CGDisplayPixelsHigh(dpy));
|
|
||||||
GL_ClearBothBuffers();
|
GL_ClearBothBuffers();
|
||||||
|
GL_PrepareViewport(CGDisplayPixelsWide(dpy), CGDisplayPixelsHigh(dpy));
|
||||||
|
|
||||||
[context setFullScreen];
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
- (id)init
|
||||||
{/*
|
{/*
|
||||||
"Add your subclass-specific initialization here. If an error occurs,
|
"Add your subclass-specific initialization here. If an error occurs,
|
||||||
@ -80,11 +96,7 @@
|
|||||||
mIWM[dd>>1].drive[dd&1] = [[A2DiskDrive alloc]
|
mIWM[dd>>1].drive[dd&1] = [[A2DiskDrive alloc]
|
||||||
InitUsingBuffer: mMemory->diskBuffers[dd] ];
|
InitUsingBuffer: mMemory->diskBuffers[dd] ];
|
||||||
|
|
||||||
// Initialize video memory with random bytes (a theatrical effect).
|
RandomizeVideoMemory(mMemory->RAM, mModel);
|
||||||
|
|
||||||
for (int i = 0x6000; --i >= 0;)
|
|
||||||
((uint16_t*)(mMemory->RAM))[i] = A2Random16();
|
|
||||||
|
|
||||||
madvise(mMemory, mMemorySize, MADV_SEQUENTIAL);
|
madvise(mMemory, mMemorySize, MADV_SEQUENTIAL);
|
||||||
[self _PrepareModel];
|
[self _PrepareModel];
|
||||||
return self;
|
return self;
|
||||||
|
@ -11,6 +11,29 @@
|
|||||||
static int input(void);
|
static int input(void);
|
||||||
//static uint8_t gEpsonFontForStyle[0x2FF + 1];
|
//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)
|
static void EpsonText(BOOL trailingRubouts)
|
||||||
@ -23,7 +46,7 @@ static void EpsonText(BOOL trailingRubouts)
|
|||||||
char ch = yytext[i];
|
char ch = yytext[i];
|
||||||
|
|
||||||
if (ch == '(' or ch == ')' or ch == '\\')
|
if (ch == '(' or ch == ')' or ch == '\\')
|
||||||
fputc('\\', yyout);
|
putc('\\', yyout);
|
||||||
putc(ch, yyout);
|
putc(ch, yyout);
|
||||||
}
|
}
|
||||||
fputs(") T", yyout);
|
fputs(") T", yyout);
|
||||||
@ -41,7 +64,7 @@ static void EpsonGraphics(int mode)
|
|||||||
if (nbytes < 1)
|
if (nbytes < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fputs("\n<7F80 ", yyout);
|
fputs("\n<0000 ", yyout);
|
||||||
while (--nbytes >= 0 and EOF != (data = input()))
|
while (--nbytes >= 0 and EOF != (data = input()))
|
||||||
{
|
{
|
||||||
putc(hexDigit[data >> 4], yyout);
|
putc(hexDigit[data >> 4], yyout);
|
||||||
@ -52,10 +75,11 @@ static void EpsonGraphics(int mode)
|
|||||||
|
|
||||||
%} --------------------------------------------------------------------------
|
%} --------------------------------------------------------------------------
|
||||||
|
|
||||||
ESC \x1B
|
|
||||||
ANY [\0-\x7F]
|
ANY [\0-\x7F]
|
||||||
ANY2 {ANY}{2}
|
ANY2 {ANY}{2}
|
||||||
ANY3 {ANY}{3}
|
ANY3 {ANY}{3}
|
||||||
|
ESC \x1B
|
||||||
|
_01 [01\0\1]
|
||||||
|
|
||||||
%%
|
%%
|
||||||
%{
|
%{
|
||||||
@ -67,7 +91,7 @@ ANY3 {ANY}{3}
|
|||||||
%}
|
%}
|
||||||
|
|
||||||
<EpsonRX>{
|
<EpsonRX>{
|
||||||
<<EOF>> fputs("\nshowpage\n", yyout); return;
|
<<EOF>> return;
|
||||||
{ESC}[@] { fputs("\nReset\n", yyout);
|
{ESC}[@] { fputs("\nReset\n", yyout);
|
||||||
charset = 0; gcharset = NO;
|
charset = 0; gcharset = NO;
|
||||||
}
|
}
|
||||||
@ -84,20 +108,19 @@ ANY3 {ANY}{3}
|
|||||||
{ESC}[01245EFGHMOPT] {
|
{ESC}[01245EFGHMOPT] {
|
||||||
fprintf(yyout, " E-%c", yytext[1]);
|
fprintf(yyout, " E-%c", yytext[1]);
|
||||||
}
|
}
|
||||||
{ESC}?[\x0F\x12\x0E\x14] {
|
{ESC}[-SW]{_01} {
|
||||||
fprintf(yyout, " C-%c", yytext[yyleng-1] | '@');
|
|
||||||
}
|
|
||||||
{ESC}[-SW][01\0\1] {
|
|
||||||
fprintf(yyout, " E-%c%c", yytext[1], yytext[2] | '0');
|
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}C\0{ANY} |
|
||||||
{ESC}[ef][01]{ANY} {
|
{ESC}[ef]{_01}{ANY} {
|
||||||
fprintf(yyout, " %d E-%c%c", yytext[3], yytext[1], yytext[2]|'0');
|
fprintf(yyout, " %d E-%c%c", yytext[3], yytext[1], yytext[2]|'0');
|
||||||
}
|
}
|
||||||
{ESC}[3ACJNQl]{ANY} {
|
{ESC}[3ACJNQl]{ANY} {
|
||||||
fprintf(yyout, " %d E-%c", yytext[2], yytext[1]);
|
fprintf(yyout, " %d E-%c", yytext[2], yytext[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
\x08+|\x09+|\x0A+|\x0B+|\x0C+|\x0D+ {
|
\x08+|\x09+|\x0A+|\x0B+|\x0C+|\x0D+ {
|
||||||
fprintf(yyout, " %d C-%c", yyleng, yytext[0] | '@');
|
fprintf(yyout, " %d C-%c", yyleng, yytext[0] | '@');
|
||||||
}
|
}
|
||||||
@ -109,16 +132,16 @@ ANY3 {ANY}{3}
|
|||||||
{ESC}[*]{ANY3} |
|
{ESC}[*]{ANY3} |
|
||||||
{ESC}[ef]{ANY2} |
|
{ESC}[ef]{ANY2} |
|
||||||
{ESC}[-SRUWms]{ANY} |
|
{ESC}[-SRUWms]{ANY} |
|
||||||
{ESC}{ANY} ; // invalid sequences, skipped
|
{ESC}{ANY} ; // catch and skip invalid sequences
|
||||||
}
|
}
|
||||||
|
|
||||||
<INITIAL>{
|
<INITIAL>{
|
||||||
[\n\t\v\f]+ |
|
[\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;
|
<<EOF>> return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,7 +186,7 @@ ANY3 {ANY}{3}
|
|||||||
- (long)SizeOfPrintSession
|
- (long)SizeOfPrintSession
|
||||||
{/*
|
{/*
|
||||||
Returns the number of bytes that have accumulated so far in the
|
Returns the number of bytes that have accumulated so far in the
|
||||||
printer session.
|
print session.
|
||||||
*/
|
*/
|
||||||
fflush(mPrinter.session); // (probably unnecessary)
|
fflush(mPrinter.session); // (probably unnecessary)
|
||||||
return ftell(mPrinter.session);
|
return ftell(mPrinter.session);
|
||||||
@ -173,8 +196,8 @@ ANY3 {ANY}{3}
|
|||||||
|
|
||||||
- (void)ClearPrintSession
|
- (void)ClearPrintSession
|
||||||
{/*
|
{/*
|
||||||
Clears (purges) the printer session. All data bytes that this printer
|
Clears the print session, discarding all bytes that this printer
|
||||||
has received are discarded.
|
has received up until now.
|
||||||
*/
|
*/
|
||||||
fflush(mPrinter.session);
|
fflush(mPrinter.session);
|
||||||
fseek(mPrinter.session, 0, SEEK_SET);
|
fseek(mPrinter.session, 0, SEEK_SET);
|
||||||
@ -204,9 +227,24 @@ ANY3 {ANY}{3}
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case kA2PFEpsonToPS:
|
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), @"Ibsen.pfa");
|
||||||
A2AppendResourceFile(fileno(yyout), @"IbsenUtils.ps");
|
A2AppendResourceFile(fileno(yyout), @"IbsenUtils.ps");
|
||||||
|
fputs("BeginDocument\n", yyout);
|
||||||
yylex(filter);
|
yylex(filter);
|
||||||
|
fputs("EndDocument\n", yyout);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kA2PFPlain:
|
case kA2PFPlain:
|
||||||
|
@ -76,7 +76,7 @@ static struct // the ROM repository
|
|||||||
return gROM.IIcpMain[0] and gROM.IIcpAlt[0];
|
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;
|
return;
|
||||||
|
|
||||||
if (slotROM != nil)
|
if (slotROM != nil)
|
||||||
memcpy((mMemory->ROM[1]) + 0x100*slotNum, slotROM, 0x100);
|
memcpy(mMemory->ROM[1] + 0x100*slotNum, slotROM, 0x100);
|
||||||
|
|
||||||
if (expansionROM != nil)
|
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(AA2342E8, IIo)
|
||||||
CASE(B9E3B093, IIpD0) CASE(79135697, IIpD5)
|
CASE(B9E3B093, IIpD0) CASE(79135697, IIpD5)
|
||||||
CASE(40375280, IIeC1) CASE(1DB83E23, IIeD5)
|
CASE(40375280, IIeC1) CASE(1DB83E23, IIeD5)
|
||||||
CASE(24F39DF7, IIcpMain) CASE(F768C5C3, IIcpAlt)
|
// CASE(24F39DF7, IIcpMain) CASE(F768C5C3, IIcpAlt)
|
||||||
|
|
||||||
case 0x816CDA70: CASE(228C4909, IIcMain)
|
case 0x816CDA70: // rev. 00
|
||||||
case 0xFA9D7930: CASE(DC459600, IIcAlt)
|
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(CE7144F6, DiskII)
|
||||||
CASE(BA81A559, Mouse)
|
CASE(BA81A559, Mouse)
|
||||||
@ -238,7 +242,7 @@ static struct // the ROM repository
|
|||||||
memcpy(dest, chunk, chunkSize);
|
memcpy(dest, chunk, chunkSize);
|
||||||
fread(dest+chunkSize, 1, len-chunkSize, fin);
|
fread(dest+chunkSize, 1, len-chunkSize, fin);
|
||||||
|
|
||||||
if (dest == gROM.IIpD0)
|
if (crc == 0xB9E3B093) // IIpD0
|
||||||
memcpy(gROM.IIeD0, dest, len);
|
memcpy(gROM.IIeD0, dest, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,14 +183,13 @@ BOOL A2AppendResourceFile(fd_t fout, NSString* resName)
|
|||||||
Searches the application bundle for a given resource file, then
|
Searches the application bundle for a given resource file, then
|
||||||
appends its content to the given destination file.
|
appends its content to the given destination file.
|
||||||
*/
|
*/
|
||||||
NSString* fpath;
|
NSString* fpath = [resName PathForResource];
|
||||||
fd_t fin;
|
fd_t fin;
|
||||||
|
|
||||||
fpath = [resName PathForResource];
|
|
||||||
if (fpath == nil)
|
if (fpath == nil)
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
fin = open([fpath fileSystemRepresentation], O_RDONLY);
|
fin = open([fpath fileSystemRepresentation], O_RDONLY|O_NONBLOCK);
|
||||||
if (fin < 0)
|
if (fin < 0)
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ extern struct A2PrivateTables
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BOOL A2AppendResourceFile(fd_t fout, NSString* resName);
|
BOOL A2AppendResourceFile(fd_t, NSString* resName);
|
||||||
void A2DumpArray(const char*, const void*, size_t, int);
|
void A2DumpArray(const char*, const void*, size_t, int);
|
||||||
unsigned A2GleanFileFormat(const void* header, size_t size);
|
unsigned A2GleanFileFormat(const void* header, size_t size);
|
||||||
unsigned A2HitIWM(A2IWM* iwm, unsigned ea, unsigned d);
|
unsigned A2HitIWM(A2IWM* iwm, unsigned ea, unsigned d);
|
||||||
|
@ -26,7 +26,7 @@ enum
|
|||||||
kA2DiskReadOnly,
|
kA2DiskReadOnly,
|
||||||
kA2DiskReadWrite,
|
kA2DiskReadWrite,
|
||||||
|
|
||||||
kA2PFPlain = 0, // printer I/O filters
|
kA2PFPlain = 0, // printer session filters
|
||||||
kA2PFEpsonToPS,
|
kA2PFEpsonToPS,
|
||||||
// kA2PFScribeToPS,
|
// kA2PFScribeToPS,
|
||||||
kA2PFVerbatim,
|
kA2PFVerbatim,
|
||||||
@ -37,7 +37,7 @@ enum
|
|||||||
kfA2LightDDrive3 = 1<<3,
|
kfA2LightDDrive3 = 1<<3,
|
||||||
kfA2LightPrinter = 1<<4,
|
kfA2LightPrinter = 1<<4,
|
||||||
|
|
||||||
kfA2Button0 = 1, // button & mod-key states
|
kfA2Button0 = 1, // button and modifier-key states
|
||||||
kfA2Button1 = 1<<1,
|
kfA2Button1 = 1<<1,
|
||||||
kfA2Button2 = 1<<2,
|
kfA2Button2 = 1<<2,
|
||||||
kfA2ButtonMouse = 1<<3,
|
kfA2ButtonMouse = 1<<3,
|
||||||
@ -133,7 +133,7 @@ extern struct A2Globals
|
|||||||
int16_t *mTblADC, // this model's ADC and SBC tables
|
int16_t *mTblADC, // this model's ADC and SBC tables
|
||||||
*mTblSBC;
|
*mTblSBC;
|
||||||
|
|
||||||
uint8_t mVideoFlags[262]; // video flags for each scanline
|
uint8_t mVideoFlags[262]; // video flags at each scanline
|
||||||
|
|
||||||
//----------------- Peripherals -----------------
|
//----------------- Peripherals -----------------
|
||||||
|
|
||||||
@ -174,7 +174,8 @@ extern struct A2Globals
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// The various methods of A2Computer, grouped by category.
|
// The various methods of A2Computer, grouped by category (and separate
|
||||||
|
// source files).
|
||||||
|
|
||||||
@interface A2Computer (Audio)
|
@interface A2Computer (Audio)
|
||||||
|
|
||||||
|
@ -9,7 +9,10 @@
|
|||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
- (NSOpenGLContext*)MakeCurrentContext
|
- (NSOpenGLContext*)MakeCurrentContext
|
||||||
{
|
{/*
|
||||||
|
Makes this context the current one, returning whatever was the previous
|
||||||
|
current context.
|
||||||
|
*/
|
||||||
NSOpenGLContext* prev = [NSOpenGLContext currentContext];
|
NSOpenGLContext* prev = [NSOpenGLContext currentContext];
|
||||||
|
|
||||||
[self makeCurrentContext];
|
[self makeCurrentContext];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* MyUtils.h
|
/* MyUtils.h
|
||||||
|
|
||||||
My own (CK's) generally useful additions to the Cocoa/GNUstep classes
|
My own (CK's) generally useful additions to the Cocoa/GNUstep classes,
|
||||||
-- not specific to any particular project.
|
which are not specific to any particular project.
|
||||||
*/
|
*/
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// 'common.xcconfig' -- a set of common XCode configration settings
|
// 'common.xcconfig' -- a set of common XCode configration settings
|
||||||
// shared by all targets.
|
// shared by all targets.
|
||||||
|
|
||||||
App_Version = 2.00b3
|
App_Version = 2.00b4
|
||||||
|
|
||||||
PRODUCT_NAME = Catakig
|
PRODUCT_NAME = Catakig
|
||||||
WRAPPER_EXTENSION = app
|
WRAPPER_EXTENSION = app
|
||||||
|
Loading…
Reference in New Issue
Block a user