mirror of
https://github.com/equant/apple2idiot.git
synced 2024-05-28 09:41:33 +00:00
Rev 0.2 card changes, and staging a cc65 weather repo
This commit is contained in:
parent
b0d18002b0
commit
e5cf37bbbe
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,2 +1,7 @@
|
|||
*.swp
|
||||
.gitattributes
|
||||
*Output.txt
|
||||
_FileInformation.txt
|
||||
history
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,21 +1,22 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,1.662000*%
|
||||
%ADD12O,1.702000X2.502000*%
|
||||
%ADD12C,1.502000*%
|
||||
%ADD13O,1.802000X1.802000*%
|
||||
%ADD14C,2.102000*%
|
||||
%ADD14O,2.302000X2.302000*%
|
||||
%ADD15O,1.702000X2.502000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
G36*
|
||||
|
@ -51,68 +52,196 @@ X233643000Y-132310000D01*
|
|||
X233643000Y-124690000D01*
|
||||
G37*
|
||||
D11*
|
||||
X234160000Y-60400000D03*
|
||||
X231620000Y-60400000D03*
|
||||
X229080000Y-60400000D03*
|
||||
X226540000Y-60400000D03*
|
||||
X224000000Y-60400000D03*
|
||||
X221460000Y-60400000D03*
|
||||
X218920000Y-60400000D03*
|
||||
X216380000Y-60400000D03*
|
||||
X213840000Y-60400000D03*
|
||||
X211300000Y-60400000D03*
|
||||
X208760000Y-60400000D03*
|
||||
X206220000Y-60400000D03*
|
||||
X203680000Y-60400000D03*
|
||||
X201140000Y-60400000D03*
|
||||
X198600000Y-60400000D03*
|
||||
X196060000Y-60400000D03*
|
||||
X193520000Y-60400000D03*
|
||||
X190980000Y-60400000D03*
|
||||
X188440000Y-60400000D03*
|
||||
X231620000Y-85800000D03*
|
||||
X229080000Y-85800000D03*
|
||||
X226540000Y-85800000D03*
|
||||
X224000000Y-85800000D03*
|
||||
X221460000Y-85800000D03*
|
||||
X218920000Y-85800000D03*
|
||||
X216380000Y-85800000D03*
|
||||
X213840000Y-85800000D03*
|
||||
X211300000Y-85800000D03*
|
||||
X208760000Y-85800000D03*
|
||||
X206220000Y-85800000D03*
|
||||
X203680000Y-85800000D03*
|
||||
X201140000Y-85800000D03*
|
||||
X198600000Y-85800000D03*
|
||||
X196060000Y-85800000D03*
|
||||
X193520000Y-85800000D03*
|
||||
X234160000Y-85800000D03*
|
||||
X190980000Y-85800000D03*
|
||||
X218660000Y-60400000D03*
|
||||
X216120000Y-60400000D03*
|
||||
X213580000Y-60400000D03*
|
||||
X211040000Y-60400000D03*
|
||||
X208500000Y-60400000D03*
|
||||
X205960000Y-60400000D03*
|
||||
X203420000Y-60400000D03*
|
||||
X200880000Y-60400000D03*
|
||||
X198340000Y-60400000D03*
|
||||
X195800000Y-60400000D03*
|
||||
X193260000Y-60400000D03*
|
||||
X190720000Y-60400000D03*
|
||||
X188180000Y-60400000D03*
|
||||
X185640000Y-60400000D03*
|
||||
X183100000Y-60400000D03*
|
||||
X180560000Y-60400000D03*
|
||||
X178020000Y-60400000D03*
|
||||
X175480000Y-60400000D03*
|
||||
X172940000Y-60400000D03*
|
||||
X216120000Y-85800000D03*
|
||||
X213580000Y-85800000D03*
|
||||
X211040000Y-85800000D03*
|
||||
X208500000Y-85800000D03*
|
||||
X205960000Y-85800000D03*
|
||||
X203420000Y-85800000D03*
|
||||
X200880000Y-85800000D03*
|
||||
X198340000Y-85800000D03*
|
||||
X195800000Y-85800000D03*
|
||||
X193260000Y-85800000D03*
|
||||
X190720000Y-85800000D03*
|
||||
X188180000Y-85800000D03*
|
||||
X185640000Y-85800000D03*
|
||||
X183100000Y-85800000D03*
|
||||
X180560000Y-85800000D03*
|
||||
X178020000Y-85800000D03*
|
||||
X218660000Y-85800000D03*
|
||||
X175480000Y-85800000D03*
|
||||
G36*
|
||||
G01*
|
||||
X189220000Y-86631000D02*
|
||||
X187660000Y-86631000D01*
|
||||
X173720000Y-86631000D02*
|
||||
X172160000Y-86631000D01*
|
||||
G75*
|
||||
G02*
|
||||
X187609000Y-86580000I0J51000D01*
|
||||
X172109000Y-86580000I0J51000D01*
|
||||
G01*
|
||||
X187609000Y-85020000D01*
|
||||
X172109000Y-85020000D01*
|
||||
G75*
|
||||
G02*
|
||||
X187660000Y-84969000I51000J0D01*
|
||||
X172160000Y-84969000I51000J0D01*
|
||||
G01*
|
||||
X189220000Y-84969000D01*
|
||||
X173720000Y-84969000D01*
|
||||
G75*
|
||||
G02*
|
||||
X189271000Y-85020000I0J-51000D01*
|
||||
X173771000Y-85020000I0J-51000D01*
|
||||
G01*
|
||||
X189271000Y-86580000D01*
|
||||
X173771000Y-86580000D01*
|
||||
G75*
|
||||
G02*
|
||||
X189220000Y-86631000I-51000J0D01*
|
||||
X173720000Y-86631000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D12*
|
||||
X231900000Y-91400000D03*
|
||||
X234400000Y-91400000D03*
|
||||
D13*
|
||||
X139460000Y-77380000D03*
|
||||
X142000000Y-77380000D03*
|
||||
X139460000Y-74840000D03*
|
||||
X142000000Y-74840000D03*
|
||||
X139460000Y-72300000D03*
|
||||
X142000000Y-72300000D03*
|
||||
X139460000Y-69760000D03*
|
||||
X142000000Y-69760000D03*
|
||||
X139460000Y-67220000D03*
|
||||
X142000000Y-67220000D03*
|
||||
X139460000Y-64680000D03*
|
||||
X142000000Y-64680000D03*
|
||||
X139460000Y-62140000D03*
|
||||
X142000000Y-62140000D03*
|
||||
X139460000Y-59600000D03*
|
||||
G36*
|
||||
G01*
|
||||
X141099000Y-60450000D02*
|
||||
X141099000Y-58750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X141150000Y-58699000I51000J0D01*
|
||||
G01*
|
||||
X142850000Y-58699000D01*
|
||||
G75*
|
||||
G02*
|
||||
X142901000Y-58750000I0J-51000D01*
|
||||
G01*
|
||||
X142901000Y-60450000D01*
|
||||
G75*
|
||||
G02*
|
||||
X142850000Y-60501000I-51000J0D01*
|
||||
G01*
|
||||
X141150000Y-60501000D01*
|
||||
G75*
|
||||
G02*
|
||||
X141099000Y-60450000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
D14*
|
||||
X234600000Y-114660000D03*
|
||||
G36*
|
||||
G01*
|
||||
X233500000Y-103349000D02*
|
||||
X235700000Y-103349000D01*
|
||||
G75*
|
||||
G02*
|
||||
X235751000Y-103400000I0J-51000D01*
|
||||
G01*
|
||||
X235751000Y-105600000D01*
|
||||
G75*
|
||||
G02*
|
||||
X235700000Y-105651000I-51000J0D01*
|
||||
G01*
|
||||
X233500000Y-105651000D01*
|
||||
G75*
|
||||
G02*
|
||||
X233449000Y-105600000I0J51000D01*
|
||||
G01*
|
||||
X233449000Y-103400000D01*
|
||||
G75*
|
||||
G02*
|
||||
X233500000Y-103349000I51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D12*
|
||||
X154400000Y-98300000D03*
|
||||
X154400000Y-95800000D03*
|
||||
X230000000Y-119900000D03*
|
||||
X232500000Y-119900000D03*
|
||||
D13*
|
||||
X106360000Y-59900000D03*
|
||||
X103820000Y-59900000D03*
|
||||
X101280000Y-59900000D03*
|
||||
X98740000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X97050000Y-60801000D02*
|
||||
X95350000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95299000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
X95299000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95350000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X97050000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97101000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X97101000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97050000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X87740000Y-60000000D03*
|
||||
G36*
|
||||
G01*
|
||||
X86050000Y-60901000D02*
|
||||
X84350000Y-60901000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84299000Y-60850000I0J51000D01*
|
||||
G01*
|
||||
X84299000Y-59150000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84350000Y-59099000I51000J0D01*
|
||||
G01*
|
||||
X86050000Y-59099000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86101000Y-59150000I0J-51000D01*
|
||||
G01*
|
||||
X86101000Y-60850000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86050000Y-60901000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D15*
|
||||
X160600000Y-96160000D03*
|
||||
X219020000Y-111400000D03*
|
||||
X163140000Y-96160000D03*
|
||||
|
@ -185,153 +314,31 @@ X161400000Y-112651000I-51000J0D01*
|
|||
G01*
|
||||
G37*
|
||||
D13*
|
||||
X149360000Y-75140000D03*
|
||||
X151900000Y-75140000D03*
|
||||
X149360000Y-72600000D03*
|
||||
X151900000Y-72600000D03*
|
||||
X149360000Y-70060000D03*
|
||||
X151900000Y-70060000D03*
|
||||
X149360000Y-67520000D03*
|
||||
X151900000Y-67520000D03*
|
||||
X149360000Y-64980000D03*
|
||||
X151900000Y-64980000D03*
|
||||
X149360000Y-62440000D03*
|
||||
X151900000Y-62440000D03*
|
||||
X149360000Y-59900000D03*
|
||||
X119540000Y-62440000D03*
|
||||
X117000000Y-62440000D03*
|
||||
X119540000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X150999000Y-60750000D02*
|
||||
X150999000Y-59050000D01*
|
||||
X116099000Y-60750000D02*
|
||||
X116099000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X151050000Y-58999000I51000J0D01*
|
||||
X116150000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X152750000Y-58999000D01*
|
||||
X117850000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X152801000Y-59050000I0J-51000D01*
|
||||
X117901000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X152801000Y-60750000D01*
|
||||
X117901000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X152750000Y-60801000I-51000J0D01*
|
||||
X117850000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X151050000Y-60801000D01*
|
||||
X116150000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X150999000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
X138020000Y-59960000D03*
|
||||
X138020000Y-62500000D03*
|
||||
X135480000Y-59960000D03*
|
||||
X135480000Y-62500000D03*
|
||||
X132940000Y-59960000D03*
|
||||
X132940000Y-62500000D03*
|
||||
X130400000Y-59960000D03*
|
||||
G36*
|
||||
G01*
|
||||
X131250000Y-63401000D02*
|
||||
X129550000Y-63401000D01*
|
||||
G75*
|
||||
G02*
|
||||
X129499000Y-63350000I0J51000D01*
|
||||
G01*
|
||||
X129499000Y-61650000D01*
|
||||
G75*
|
||||
G02*
|
||||
X129550000Y-61599000I51000J0D01*
|
||||
G01*
|
||||
X131250000Y-61599000D01*
|
||||
G75*
|
||||
G02*
|
||||
X131301000Y-61650000I0J-51000D01*
|
||||
G01*
|
||||
X131301000Y-63350000D01*
|
||||
G75*
|
||||
G02*
|
||||
X131250000Y-63401000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X117540000Y-62440000D03*
|
||||
X115000000Y-62440000D03*
|
||||
X117540000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X114099000Y-60750000D02*
|
||||
X114099000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X114150000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X115850000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X115901000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X115901000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X115850000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X114150000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X114099000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
X104020000Y-59700000D03*
|
||||
X101480000Y-59700000D03*
|
||||
X98940000Y-59700000D03*
|
||||
G36*
|
||||
G01*
|
||||
X97250000Y-60601000D02*
|
||||
X95550000Y-60601000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95499000Y-60550000I0J51000D01*
|
||||
G01*
|
||||
X95499000Y-58850000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95550000Y-58799000I51000J0D01*
|
||||
G01*
|
||||
X97250000Y-58799000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97301000Y-58850000I0J-51000D01*
|
||||
G01*
|
||||
X97301000Y-60550000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97250000Y-60601000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X87840000Y-62440000D03*
|
||||
X85300000Y-62440000D03*
|
||||
X87840000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X84399000Y-60750000D02*
|
||||
X84399000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84450000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X86150000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86201000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X86201000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86150000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X84450000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84399000Y-60750000I0J51000D01*
|
||||
X116099000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
G36*
|
||||
|
@ -934,7 +941,4 @@ G02*
|
|||
X168873000Y-131675000I0J635000D01*
|
||||
G01*
|
||||
G37*
|
||||
D14*
|
||||
X237000000Y-114500000D03*
|
||||
X227000000Y-114500000D03*
|
||||
M02*
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Legend,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Profile,NP*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Copper,L1,Top*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -18,77 +18,121 @@ G04 #@! TA.AperFunction,ComponentPad*
|
|||
%ADD11R,1.560000X1.560000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD12O,1.600000X2.400000*%
|
||||
%ADD12C,1.400000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD13R,1.600000X2.400000*%
|
||||
%ADD13O,1.700000X1.700000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD14O,1.700000X1.700000*%
|
||||
%ADD14R,1.700000X1.700000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD15R,1.700000X1.700000*%
|
||||
%ADD15O,2.200000X2.200000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD16R,2.200000X2.200000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD17O,1.600000X2.400000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD18R,1.600000X2.400000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,SMDPad,CuDef*
|
||||
%ADD16R,1.524000X6.350000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ComponentPad*
|
||||
%ADD17C,2.000000*%
|
||||
%ADD19R,1.524000X6.350000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,ViaPad*
|
||||
%ADD18C,0.800000*%
|
||||
%ADD20C,0.800000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,Conductor*
|
||||
%ADD19C,0.400000*%
|
||||
%ADD21C,0.400000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,Conductor*
|
||||
%ADD20C,0.250000*%
|
||||
G04 #@! TD*
|
||||
G04 #@! TA.AperFunction,Conductor*
|
||||
%ADD21C,0.249936*%
|
||||
%ADD22C,1.000000*%
|
||||
G04 #@! TD*
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X234160000Y-60400000D03*
|
||||
X231620000Y-60400000D03*
|
||||
X229080000Y-60400000D03*
|
||||
X226540000Y-60400000D03*
|
||||
X224000000Y-60400000D03*
|
||||
X221460000Y-60400000D03*
|
||||
X218920000Y-60400000D03*
|
||||
X216380000Y-60400000D03*
|
||||
X213840000Y-60400000D03*
|
||||
X211300000Y-60400000D03*
|
||||
X208760000Y-60400000D03*
|
||||
X206220000Y-60400000D03*
|
||||
X203680000Y-60400000D03*
|
||||
X201140000Y-60400000D03*
|
||||
X198600000Y-60400000D03*
|
||||
X196060000Y-60400000D03*
|
||||
X193520000Y-60400000D03*
|
||||
X190980000Y-60400000D03*
|
||||
X188440000Y-60400000D03*
|
||||
X231620000Y-85800000D03*
|
||||
X229080000Y-85800000D03*
|
||||
X226540000Y-85800000D03*
|
||||
X224000000Y-85800000D03*
|
||||
X221460000Y-85800000D03*
|
||||
X218920000Y-85800000D03*
|
||||
X216380000Y-85800000D03*
|
||||
X213840000Y-85800000D03*
|
||||
X211300000Y-85800000D03*
|
||||
X208760000Y-85800000D03*
|
||||
X206220000Y-85800000D03*
|
||||
X203680000Y-85800000D03*
|
||||
X201140000Y-85800000D03*
|
||||
X198600000Y-85800000D03*
|
||||
X196060000Y-85800000D03*
|
||||
X193520000Y-85800000D03*
|
||||
X234160000Y-85800000D03*
|
||||
X190980000Y-85800000D03*
|
||||
X218660000Y-60400000D03*
|
||||
X216120000Y-60400000D03*
|
||||
X213580000Y-60400000D03*
|
||||
X211040000Y-60400000D03*
|
||||
X208500000Y-60400000D03*
|
||||
X205960000Y-60400000D03*
|
||||
X203420000Y-60400000D03*
|
||||
X200880000Y-60400000D03*
|
||||
X198340000Y-60400000D03*
|
||||
X195800000Y-60400000D03*
|
||||
X193260000Y-60400000D03*
|
||||
X190720000Y-60400000D03*
|
||||
X188180000Y-60400000D03*
|
||||
X185640000Y-60400000D03*
|
||||
X183100000Y-60400000D03*
|
||||
X180560000Y-60400000D03*
|
||||
X178020000Y-60400000D03*
|
||||
X175480000Y-60400000D03*
|
||||
X172940000Y-60400000D03*
|
||||
X216120000Y-85800000D03*
|
||||
X213580000Y-85800000D03*
|
||||
X211040000Y-85800000D03*
|
||||
X208500000Y-85800000D03*
|
||||
X205960000Y-85800000D03*
|
||||
X203420000Y-85800000D03*
|
||||
X200880000Y-85800000D03*
|
||||
X198340000Y-85800000D03*
|
||||
X195800000Y-85800000D03*
|
||||
X193260000Y-85800000D03*
|
||||
X190720000Y-85800000D03*
|
||||
X188180000Y-85800000D03*
|
||||
X185640000Y-85800000D03*
|
||||
X183100000Y-85800000D03*
|
||||
X180560000Y-85800000D03*
|
||||
X178020000Y-85800000D03*
|
||||
X218660000Y-85800000D03*
|
||||
X175480000Y-85800000D03*
|
||||
D11*
|
||||
X188440000Y-85800000D03*
|
||||
X172940000Y-85800000D03*
|
||||
D12*
|
||||
X231900000Y-91400000D03*
|
||||
X234400000Y-91400000D03*
|
||||
D13*
|
||||
X139460000Y-77380000D03*
|
||||
X142000000Y-77380000D03*
|
||||
X139460000Y-74840000D03*
|
||||
X142000000Y-74840000D03*
|
||||
X139460000Y-72300000D03*
|
||||
X142000000Y-72300000D03*
|
||||
X139460000Y-69760000D03*
|
||||
X142000000Y-69760000D03*
|
||||
X139460000Y-67220000D03*
|
||||
X142000000Y-67220000D03*
|
||||
X139460000Y-64680000D03*
|
||||
X142000000Y-64680000D03*
|
||||
X139460000Y-62140000D03*
|
||||
X142000000Y-62140000D03*
|
||||
X139460000Y-59600000D03*
|
||||
D14*
|
||||
X142000000Y-59600000D03*
|
||||
D15*
|
||||
X234600000Y-114660000D03*
|
||||
D16*
|
||||
X234600000Y-104500000D03*
|
||||
D12*
|
||||
X154400000Y-98300000D03*
|
||||
X154400000Y-95800000D03*
|
||||
X230000000Y-119900000D03*
|
||||
X232500000Y-119900000D03*
|
||||
D13*
|
||||
X106360000Y-59900000D03*
|
||||
X103820000Y-59900000D03*
|
||||
X101280000Y-59900000D03*
|
||||
X98740000Y-59900000D03*
|
||||
D14*
|
||||
X96200000Y-59900000D03*
|
||||
D13*
|
||||
X87740000Y-60000000D03*
|
||||
D14*
|
||||
X85200000Y-60000000D03*
|
||||
D17*
|
||||
X160600000Y-96160000D03*
|
||||
X219020000Y-111400000D03*
|
||||
X163140000Y-96160000D03*
|
||||
|
@ -136,53 +180,15 @@ X165680000Y-111400000D03*
|
|||
X216480000Y-96160000D03*
|
||||
X163140000Y-111400000D03*
|
||||
X219020000Y-96160000D03*
|
||||
D13*
|
||||
D18*
|
||||
X160600000Y-111400000D03*
|
||||
D13*
|
||||
X119540000Y-62440000D03*
|
||||
X117000000Y-62440000D03*
|
||||
X119540000Y-59900000D03*
|
||||
D14*
|
||||
X149360000Y-75140000D03*
|
||||
X151900000Y-75140000D03*
|
||||
X149360000Y-72600000D03*
|
||||
X151900000Y-72600000D03*
|
||||
X149360000Y-70060000D03*
|
||||
X151900000Y-70060000D03*
|
||||
X149360000Y-67520000D03*
|
||||
X151900000Y-67520000D03*
|
||||
X149360000Y-64980000D03*
|
||||
X151900000Y-64980000D03*
|
||||
X149360000Y-62440000D03*
|
||||
X151900000Y-62440000D03*
|
||||
X149360000Y-59900000D03*
|
||||
D15*
|
||||
X151900000Y-59900000D03*
|
||||
D14*
|
||||
X138020000Y-59960000D03*
|
||||
X138020000Y-62500000D03*
|
||||
X135480000Y-59960000D03*
|
||||
X135480000Y-62500000D03*
|
||||
X132940000Y-59960000D03*
|
||||
X132940000Y-62500000D03*
|
||||
X130400000Y-59960000D03*
|
||||
D15*
|
||||
X130400000Y-62500000D03*
|
||||
D14*
|
||||
X117540000Y-62440000D03*
|
||||
X115000000Y-62440000D03*
|
||||
X117540000Y-59900000D03*
|
||||
D15*
|
||||
X115000000Y-59900000D03*
|
||||
D14*
|
||||
X104020000Y-59700000D03*
|
||||
X101480000Y-59700000D03*
|
||||
X98940000Y-59700000D03*
|
||||
D15*
|
||||
X96400000Y-59700000D03*
|
||||
D14*
|
||||
X87840000Y-62440000D03*
|
||||
X85300000Y-62440000D03*
|
||||
X87840000Y-59900000D03*
|
||||
D15*
|
||||
X85300000Y-59900000D03*
|
||||
D16*
|
||||
X117000000Y-59900000D03*
|
||||
D19*
|
||||
X231230000Y-128500000D03*
|
||||
X228690000Y-128500000D03*
|
||||
X226150000Y-128500000D03*
|
||||
|
@ -208,28 +214,9 @@ X177890000Y-128500000D03*
|
|||
X175350000Y-128500000D03*
|
||||
X172810000Y-128500000D03*
|
||||
X170270000Y-128500000D03*
|
||||
D17*
|
||||
X237000000Y-114500000D03*
|
||||
X227000000Y-114500000D03*
|
||||
D18*
|
||||
X149600000Y-89800000D03*
|
||||
X165700000Y-72700000D03*
|
||||
X171500000Y-67000000D03*
|
||||
X193200000Y-77000000D03*
|
||||
X191200000Y-73500000D03*
|
||||
X198600000Y-65300000D03*
|
||||
X179200000Y-77300000D03*
|
||||
X166900000Y-107600000D03*
|
||||
X146000000Y-73900000D03*
|
||||
X162700000Y-85300000D03*
|
||||
X139215001Y-68884999D03*
|
||||
X128884999Y-68884999D03*
|
||||
X212200000Y-81300000D03*
|
||||
X161700000Y-68300000D03*
|
||||
X190000000Y-71300000D03*
|
||||
X196800000Y-56900000D03*
|
||||
X200000000Y-56900000D03*
|
||||
D19*
|
||||
D20*
|
||||
X207300000Y-81100000D03*
|
||||
D21*
|
||||
X173300000Y-128010000D02*
|
||||
X172810000Y-128500000D01*
|
||||
X173300000Y-111400000D02*
|
||||
|
@ -262,342 +249,267 @@ X191080000Y-128010000D02*
|
|||
X190590000Y-128500000D01*
|
||||
X191080000Y-111400000D02*
|
||||
X191080000Y-128010000D01*
|
||||
X193620000Y-128010000D02*
|
||||
X193130000Y-128500000D01*
|
||||
X193620000Y-111400000D02*
|
||||
X193620000Y-128010000D01*
|
||||
X196160000Y-128010000D02*
|
||||
X195670000Y-128500000D01*
|
||||
X196160000Y-111400000D02*
|
||||
X196160000Y-128010000D01*
|
||||
D20*
|
||||
X168220000Y-111400000D02*
|
||||
X171320000Y-108300000D01*
|
||||
X197574990Y-127864990D02*
|
||||
X198210000Y-128500000D01*
|
||||
X195051004Y-108300000D02*
|
||||
X197574990Y-110823986D01*
|
||||
X197574990Y-110823986D02*
|
||||
X197574990Y-127864990D01*
|
||||
X171320000Y-108300000D02*
|
||||
X195051004Y-108300000D01*
|
||||
D19*
|
||||
X231230000Y-118730000D02*
|
||||
X227000000Y-114500000D01*
|
||||
X205960000Y-85800000D02*
|
||||
X205960000Y-82440000D01*
|
||||
X205960000Y-82440000D02*
|
||||
X207300000Y-81100000D01*
|
||||
D22*
|
||||
X231230000Y-128500000D02*
|
||||
X231230000Y-118730000D01*
|
||||
X227000000Y-114500000D02*
|
||||
X234200000Y-107300000D01*
|
||||
X234200000Y-85840000D02*
|
||||
X234160000Y-85800000D01*
|
||||
X234200000Y-107300000D02*
|
||||
X234200000Y-85840000D01*
|
||||
D20*
|
||||
X160600000Y-96160000D02*
|
||||
X160600000Y-98800000D01*
|
||||
X160600000Y-98800000D02*
|
||||
X165300000Y-103500000D01*
|
||||
X216000000Y-103500000D02*
|
||||
X227000000Y-114500000D01*
|
||||
X165300000Y-103500000D02*
|
||||
X216000000Y-103500000D01*
|
||||
X149600000Y-89800000D02*
|
||||
X152800000Y-93000000D01*
|
||||
X165060000Y-93000000D02*
|
||||
X168220000Y-96160000D01*
|
||||
X152800000Y-93000000D02*
|
||||
X165060000Y-93000000D01*
|
||||
X165700000Y-72700000D02*
|
||||
X171400000Y-67000000D01*
|
||||
X171400000Y-67000000D02*
|
||||
X171500000Y-67000000D01*
|
||||
X201140000Y-69060000D02*
|
||||
X201140000Y-60400000D01*
|
||||
X193200000Y-77000000D02*
|
||||
X201140000Y-69060000D01*
|
||||
X191200000Y-73500000D02*
|
||||
X198600000Y-66100000D01*
|
||||
X198600000Y-66100000D02*
|
||||
X198600000Y-65300000D01*
|
||||
X190980000Y-60400000D02*
|
||||
X190980000Y-65520000D01*
|
||||
X190980000Y-65520000D02*
|
||||
X179200000Y-77300000D01*
|
||||
X183460000Y-96160000D02*
|
||||
X187200000Y-99900000D01*
|
||||
X200114990Y-94445010D02*
|
||||
X208760000Y-85800000D01*
|
||||
X200114990Y-96736014D02*
|
||||
X200114990Y-94445010D01*
|
||||
X196951004Y-99900000D02*
|
||||
X200114990Y-96736014D01*
|
||||
X187200000Y-99900000D02*
|
||||
X196951004Y-99900000D01*
|
||||
X224000000Y-85800000D02*
|
||||
X224000000Y-96500000D01*
|
||||
X224000000Y-96500000D02*
|
||||
X220000000Y-100500000D01*
|
||||
X220000000Y-100500000D02*
|
||||
X205900000Y-100500000D01*
|
||||
X203780000Y-98380000D02*
|
||||
X203780000Y-96160000D01*
|
||||
X205900000Y-100500000D02*
|
||||
X203780000Y-98380000D01*
|
||||
X226540000Y-60400000D02*
|
||||
X210600000Y-76340000D01*
|
||||
X209865001Y-95154999D02*
|
||||
X208860000Y-96160000D01*
|
||||
X209865001Y-85599597D02*
|
||||
X209865001Y-95154999D01*
|
||||
X210600000Y-84864598D02*
|
||||
X209865001Y-85599597D01*
|
||||
X210600000Y-76340000D02*
|
||||
X210600000Y-84864598D01*
|
||||
X212814990Y-110823986D02*
|
||||
X212814990Y-127864990D01*
|
||||
X209591004Y-107600000D02*
|
||||
X212814990Y-110823986D01*
|
||||
X212814990Y-127864990D02*
|
||||
X213450000Y-128500000D01*
|
||||
X166900000Y-107600000D02*
|
||||
X209591004Y-107600000D01*
|
||||
X170270000Y-124925000D02*
|
||||
X142545000Y-97200000D01*
|
||||
D19*
|
||||
X170270000Y-128500000D02*
|
||||
X170270000Y-124925000D01*
|
||||
D20*
|
||||
X142545000Y-97200000D02*
|
||||
X79600000Y-97200000D01*
|
||||
X79600000Y-97200000D02*
|
||||
X75600000Y-93200000D01*
|
||||
D19*
|
||||
X85300000Y-60589998D02*
|
||||
X85300000Y-59900000D01*
|
||||
D20*
|
||||
X75600000Y-70289998D02*
|
||||
X85300000Y-60589998D01*
|
||||
X75600000Y-93200000D02*
|
||||
X75600000Y-70289998D01*
|
||||
D19*
|
||||
X85300000Y-59900000D02*
|
||||
X85300000Y-59400000D01*
|
||||
X231230000Y-124270000D01*
|
||||
X232500000Y-123000000D02*
|
||||
X232500000Y-119900000D01*
|
||||
X231230000Y-124270000D02*
|
||||
X232500000Y-123000000D01*
|
||||
X232500000Y-116760000D02*
|
||||
X234600000Y-114660000D01*
|
||||
X232500000Y-119900000D02*
|
||||
X232500000Y-116760000D01*
|
||||
X234600000Y-114660000D02*
|
||||
X223840000Y-103900000D01*
|
||||
X168340000Y-103900000D02*
|
||||
X160600000Y-96160000D01*
|
||||
X223840000Y-103900000D02*
|
||||
X168340000Y-103900000D01*
|
||||
X139460000Y-74840000D02*
|
||||
X139460000Y-77380000D01*
|
||||
X139460000Y-77380000D02*
|
||||
X142000000Y-77380000D01*
|
||||
X160240000Y-95800000D02*
|
||||
X160600000Y-96160000D01*
|
||||
X154400000Y-95800000D02*
|
||||
X160240000Y-95800000D01*
|
||||
X151700000Y-93100000D02*
|
||||
X154400000Y-95800000D01*
|
||||
X151700000Y-87080000D02*
|
||||
X151700000Y-93100000D01*
|
||||
X142000000Y-77380000D02*
|
||||
X151700000Y-87080000D01*
|
||||
D21*
|
||||
X85300000Y-59400000D02*
|
||||
X88300000Y-56400000D01*
|
||||
X88300000Y-56400000D02*
|
||||
X97400000Y-56400000D01*
|
||||
X98940000Y-57940000D02*
|
||||
X98940000Y-59700000D01*
|
||||
X97400000Y-56400000D02*
|
||||
X98940000Y-57940000D01*
|
||||
X87840000Y-59900000D02*
|
||||
X87840000Y-62440000D01*
|
||||
X87840000Y-62440000D02*
|
||||
X87840000Y-66840000D01*
|
||||
X87840000Y-66840000D02*
|
||||
X94100000Y-73100000D01*
|
||||
X94100000Y-73100000D02*
|
||||
X109300000Y-73100000D01*
|
||||
X109300000Y-73100000D02*
|
||||
X112900000Y-76700000D01*
|
||||
X112900000Y-76700000D02*
|
||||
X125100000Y-76700000D01*
|
||||
X125100000Y-76700000D02*
|
||||
X132700000Y-84300000D01*
|
||||
X132700000Y-84300000D02*
|
||||
X137800000Y-84300000D01*
|
||||
X160600000Y-107100000D02*
|
||||
X118250001Y-63778003D02*
|
||||
X161171998Y-106700000D01*
|
||||
X118250001Y-61839999D02*
|
||||
X118250001Y-63778003D01*
|
||||
X117600001Y-61189999D02*
|
||||
X118250001Y-61839999D01*
|
||||
X107649999Y-61189999D02*
|
||||
X117600001Y-61189999D01*
|
||||
X106360000Y-59900000D02*
|
||||
X107649999Y-61189999D01*
|
||||
X161171998Y-106700000D02*
|
||||
X220600000Y-106700000D01*
|
||||
X220600000Y-106700000D02*
|
||||
X221800000Y-107900000D01*
|
||||
X221800000Y-107900000D02*
|
||||
X221800000Y-117700000D01*
|
||||
X218530000Y-120970000D02*
|
||||
X218530000Y-128500000D01*
|
||||
X221800000Y-117700000D02*
|
||||
X218530000Y-120970000D01*
|
||||
X195800000Y-64000000D02*
|
||||
X195800000Y-60400000D01*
|
||||
X204700000Y-72900000D02*
|
||||
X195800000Y-64000000D01*
|
||||
X204700000Y-86446400D02*
|
||||
X204700000Y-72900000D01*
|
||||
X200000000Y-91146400D02*
|
||||
X204700000Y-86446400D01*
|
||||
X200000000Y-99100000D02*
|
||||
X200000000Y-91146400D01*
|
||||
X198000000Y-101100000D02*
|
||||
X200000000Y-99100000D01*
|
||||
X170620000Y-101100000D02*
|
||||
X198000000Y-101100000D01*
|
||||
X165680000Y-96160000D02*
|
||||
X170620000Y-101100000D01*
|
||||
X186900000Y-68000000D02*
|
||||
X185640000Y-66740000D01*
|
||||
X185640000Y-66740000D02*
|
||||
X185640000Y-60400000D01*
|
||||
X186900000Y-86893201D02*
|
||||
X186900000Y-68000000D01*
|
||||
X185593201Y-88200000D02*
|
||||
X186900000Y-86893201D01*
|
||||
X183800000Y-88200000D02*
|
||||
X185593201Y-88200000D01*
|
||||
X175840000Y-96160000D02*
|
||||
X183800000Y-88200000D01*
|
||||
X183460000Y-95600000D02*
|
||||
X193260000Y-85800000D01*
|
||||
X183460000Y-96160000D02*
|
||||
X183460000Y-95600000D01*
|
||||
X85200000Y-60000000D02*
|
||||
X85200000Y-106500000D01*
|
||||
X85200000Y-106500000D02*
|
||||
X91200000Y-112500000D01*
|
||||
X91200000Y-112500000D02*
|
||||
X114600000Y-112500000D01*
|
||||
X114600000Y-112500000D02*
|
||||
X121800000Y-119700000D01*
|
||||
X170270000Y-124925000D02*
|
||||
X170270000Y-128500000D01*
|
||||
X165045000Y-119700000D02*
|
||||
X170270000Y-124925000D01*
|
||||
X121800000Y-119700000D02*
|
||||
X165045000Y-119700000D01*
|
||||
X85200000Y-58750000D02*
|
||||
X86450000Y-57500000D01*
|
||||
X85200000Y-60000000D02*
|
||||
X85200000Y-58750000D01*
|
||||
X86450000Y-57500000D02*
|
||||
X98000000Y-57500000D01*
|
||||
X98740000Y-58240000D02*
|
||||
X98740000Y-59900000D01*
|
||||
X98000000Y-57500000D02*
|
||||
X98740000Y-58240000D01*
|
||||
X87740000Y-60000000D02*
|
||||
X87740000Y-105740000D01*
|
||||
X93400000Y-111400000D02*
|
||||
X160600000Y-111400000D01*
|
||||
X137800000Y-84300000D02*
|
||||
X160600000Y-107100000D01*
|
||||
X116289999Y-61189999D02*
|
||||
X118589999Y-61189999D01*
|
||||
X115000000Y-59900000D02*
|
||||
X116289999Y-61189999D01*
|
||||
X165680000Y-108280000D02*
|
||||
X165680000Y-111400000D01*
|
||||
X118589999Y-61189999D02*
|
||||
X165680000Y-108280000D01*
|
||||
D20*
|
||||
X150600000Y-73900000D02*
|
||||
X151900000Y-72600000D01*
|
||||
X146000000Y-73900000D02*
|
||||
X150600000Y-73900000D01*
|
||||
X162700000Y-85300000D02*
|
||||
X164200000Y-86800000D01*
|
||||
X164200000Y-86800000D02*
|
||||
X164200000Y-86900000D01*
|
||||
X164200000Y-86900000D02*
|
||||
X165300000Y-88000000D01*
|
||||
X165300000Y-88000000D02*
|
||||
X186700000Y-88000000D01*
|
||||
X186700000Y-88000000D02*
|
||||
X188300000Y-89600000D01*
|
||||
X188300000Y-89600000D02*
|
||||
X200300000Y-89600000D01*
|
||||
X201140000Y-88760000D02*
|
||||
X201140000Y-85800000D01*
|
||||
X200300000Y-89600000D02*
|
||||
X201140000Y-88760000D01*
|
||||
X198600000Y-85800000D02*
|
||||
X193400000Y-80600000D01*
|
||||
X162440000Y-80600000D02*
|
||||
X151900000Y-70060000D01*
|
||||
X193400000Y-80600000D02*
|
||||
X162440000Y-80600000D01*
|
||||
X150724999Y-68884999D02*
|
||||
X139215001Y-68884999D01*
|
||||
X151900000Y-70060000D02*
|
||||
X150724999Y-68884999D01*
|
||||
X119900000Y-59900000D02*
|
||||
X117540000Y-59900000D01*
|
||||
X128884999Y-68884999D02*
|
||||
X119900000Y-59900000D01*
|
||||
X87740000Y-105740000D02*
|
||||
X93400000Y-111400000D01*
|
||||
X203780000Y-96160000D02*
|
||||
X203780000Y-93520000D01*
|
||||
X208500000Y-88800000D02*
|
||||
X208500000Y-85800000D01*
|
||||
X203780000Y-93520000D02*
|
||||
X208500000Y-88800000D01*
|
||||
X209800000Y-61640000D02*
|
||||
X211040000Y-60400000D01*
|
||||
X209800000Y-95220000D02*
|
||||
X209800000Y-61640000D01*
|
||||
X208860000Y-96160000D02*
|
||||
X209800000Y-95220000D01*
|
||||
X213450000Y-123250000D02*
|
||||
X213450000Y-128500000D01*
|
||||
X205100000Y-114900000D02*
|
||||
X213450000Y-123250000D01*
|
||||
X205100000Y-109000000D02*
|
||||
X205100000Y-114900000D01*
|
||||
X203700000Y-107600000D02*
|
||||
X205100000Y-109000000D01*
|
||||
X166940000Y-107600000D02*
|
||||
X203700000Y-107600000D01*
|
||||
X163140000Y-111400000D02*
|
||||
X166940000Y-107600000D01*
|
||||
X172140000Y-72300000D02*
|
||||
X142000000Y-72300000D01*
|
||||
X185640000Y-85800000D02*
|
||||
X172140000Y-72300000D01*
|
||||
X140710001Y-72810001D02*
|
||||
X140710001Y-71049999D01*
|
||||
X141489999Y-73589999D02*
|
||||
X140710001Y-72810001D01*
|
||||
X140710001Y-71049999D02*
|
||||
X142000000Y-69760000D01*
|
||||
X170889999Y-73589999D02*
|
||||
X141489999Y-73589999D01*
|
||||
X183100000Y-85800000D02*
|
||||
X170889999Y-73589999D01*
|
||||
X192820000Y-83700000D02*
|
||||
X190720000Y-85800000D01*
|
||||
X198600000Y-83700000D02*
|
||||
X192820000Y-83700000D01*
|
||||
X199600000Y-84700000D02*
|
||||
X198600000Y-83700000D01*
|
||||
X199600000Y-90180000D02*
|
||||
X199600000Y-84700000D01*
|
||||
X193620000Y-96160000D02*
|
||||
X186360000Y-88900000D01*
|
||||
X186360000Y-88900000D02*
|
||||
X157800000Y-88900000D01*
|
||||
X138020000Y-69120000D02*
|
||||
X138020000Y-62500000D01*
|
||||
X157800000Y-88900000D02*
|
||||
X138020000Y-69120000D01*
|
||||
X203680000Y-85800000D02*
|
||||
X196480000Y-78600000D01*
|
||||
X165520000Y-78600000D02*
|
||||
X151900000Y-64980000D01*
|
||||
X196480000Y-78600000D02*
|
||||
X165520000Y-78600000D01*
|
||||
X199600000Y-90180000D01*
|
||||
X182200000Y-94100000D02*
|
||||
X188180000Y-88120000D01*
|
||||
X182200000Y-96997070D02*
|
||||
X182200000Y-94100000D01*
|
||||
X184002930Y-98800000D02*
|
||||
X182200000Y-96997070D01*
|
||||
X190200000Y-98800000D02*
|
||||
X184002930Y-98800000D01*
|
||||
X188180000Y-88120000D02*
|
||||
X188180000Y-85800000D01*
|
||||
X191080000Y-97920000D02*
|
||||
X190200000Y-98800000D01*
|
||||
X191080000Y-96160000D02*
|
||||
X184620000Y-89700000D01*
|
||||
X184620000Y-89700000D02*
|
||||
X156700000Y-89700000D01*
|
||||
X135480000Y-68480000D02*
|
||||
X135480000Y-62500000D01*
|
||||
X156700000Y-89700000D02*
|
||||
X135480000Y-68480000D01*
|
||||
X213840000Y-85800000D02*
|
||||
X213840000Y-82940000D01*
|
||||
X213840000Y-82940000D02*
|
||||
X212200000Y-81300000D01*
|
||||
X155840000Y-62440000D02*
|
||||
X151900000Y-62440000D01*
|
||||
X161700000Y-68300000D02*
|
||||
X155840000Y-62440000D01*
|
||||
X191080000Y-97920000D01*
|
||||
X188540000Y-95600000D02*
|
||||
X198340000Y-85800000D01*
|
||||
X188540000Y-96160000D02*
|
||||
X182680000Y-90300000D01*
|
||||
X182680000Y-90300000D02*
|
||||
X156400000Y-90300000D01*
|
||||
X132940000Y-66840000D02*
|
||||
X132940000Y-62500000D01*
|
||||
X156400000Y-90300000D02*
|
||||
X132940000Y-66840000D01*
|
||||
X130400000Y-66000000D02*
|
||||
X130400000Y-62500000D01*
|
||||
X181170000Y-91330000D02*
|
||||
X155730000Y-91330000D01*
|
||||
X155730000Y-91330000D02*
|
||||
X130400000Y-66000000D01*
|
||||
X188540000Y-95600000D01*
|
||||
X186000000Y-95600000D02*
|
||||
X195800000Y-85800000D01*
|
||||
X186000000Y-96160000D02*
|
||||
X181170000Y-91330000D01*
|
||||
X193520000Y-85800000D02*
|
||||
X190020000Y-82300000D01*
|
||||
X156520000Y-82300000D02*
|
||||
X149360000Y-75140000D01*
|
||||
X190020000Y-82300000D02*
|
||||
X156520000Y-82300000D01*
|
||||
X196060000Y-85800000D02*
|
||||
X191960000Y-81700000D01*
|
||||
X158460000Y-81700000D02*
|
||||
X151900000Y-75140000D01*
|
||||
X191960000Y-81700000D02*
|
||||
X158460000Y-81700000D01*
|
||||
X190000000Y-71300000D02*
|
||||
X196000000Y-65300000D01*
|
||||
X196000000Y-60460000D02*
|
||||
X196060000Y-60400000D01*
|
||||
X196000000Y-65300000D02*
|
||||
X196000000Y-60460000D01*
|
||||
X198600000Y-57100000D02*
|
||||
X198600000Y-60400000D01*
|
||||
X144120000Y-67520000D02*
|
||||
X140800000Y-64200000D01*
|
||||
X142500000Y-56000000D02*
|
||||
X197500000Y-56000000D01*
|
||||
X149360000Y-67520000D02*
|
||||
X144120000Y-67520000D01*
|
||||
X197500000Y-56000000D02*
|
||||
X198600000Y-57100000D01*
|
||||
X140800000Y-64200000D02*
|
||||
X140800000Y-57700000D01*
|
||||
X140800000Y-57700000D02*
|
||||
X142500000Y-56000000D01*
|
||||
X149360000Y-64980000D02*
|
||||
X143630010Y-64980000D01*
|
||||
X141600000Y-62949990D02*
|
||||
X141600000Y-58000000D01*
|
||||
X143630010Y-64980000D02*
|
||||
X141600000Y-62949990D01*
|
||||
X141600000Y-58000000D02*
|
||||
X142700000Y-56900000D01*
|
||||
X142700000Y-56900000D02*
|
||||
X196800000Y-56900000D01*
|
||||
X200000000Y-56900000D02*
|
||||
X218100000Y-56900000D01*
|
||||
X218920000Y-57720000D02*
|
||||
X218920000Y-60400000D01*
|
||||
X218100000Y-56900000D02*
|
||||
X218920000Y-57720000D01*
|
||||
X143260000Y-62440000D02*
|
||||
X149360000Y-62440000D01*
|
||||
X199274999Y-57248001D02*
|
||||
X199705001Y-57678003D01*
|
||||
X199274999Y-56551999D02*
|
||||
X199274999Y-57248001D01*
|
||||
X221460000Y-60400000D02*
|
||||
X221460000Y-57760000D01*
|
||||
X143174999Y-57625001D02*
|
||||
X142700000Y-58100000D01*
|
||||
X221460000Y-57760000D02*
|
||||
X219874999Y-56174999D01*
|
||||
X199651999Y-56174999D02*
|
||||
X199274999Y-56551999D01*
|
||||
X198069599Y-61505001D02*
|
||||
X197494999Y-60930401D01*
|
||||
X199705001Y-60930401D02*
|
||||
X199130401Y-61505001D01*
|
||||
X199130401Y-61505001D02*
|
||||
X198069599Y-61505001D01*
|
||||
X197494999Y-60930401D02*
|
||||
X197494999Y-57971999D01*
|
||||
X197494999Y-57971999D02*
|
||||
X197148001Y-57625001D01*
|
||||
X142700000Y-58100000D02*
|
||||
X142700000Y-61880000D01*
|
||||
X197148001Y-57625001D02*
|
||||
X143174999Y-57625001D01*
|
||||
X219874999Y-56174999D02*
|
||||
X199651999Y-56174999D01*
|
||||
X199705001Y-57678003D02*
|
||||
X199705001Y-60930401D01*
|
||||
X142700000Y-61880000D02*
|
||||
X143260000Y-62440000D01*
|
||||
X150724999Y-61264999D02*
|
||||
X170664999Y-61264999D01*
|
||||
X149360000Y-59900000D02*
|
||||
X150724999Y-61264999D01*
|
||||
X178851999Y-78025001D02*
|
||||
X194874999Y-78025001D01*
|
||||
X178474999Y-77648001D02*
|
||||
X178851999Y-78025001D01*
|
||||
X170664999Y-61264999D02*
|
||||
X178474999Y-69074999D01*
|
||||
X178474999Y-69074999D02*
|
||||
X178474999Y-77648001D01*
|
||||
X194874999Y-78025001D02*
|
||||
X203900000Y-69000000D01*
|
||||
X215400000Y-69000000D02*
|
||||
X224000000Y-60400000D01*
|
||||
X203900000Y-69000000D02*
|
||||
X215400000Y-69000000D01*
|
||||
X186000000Y-95600000D01*
|
||||
X139460000Y-72408542D02*
|
||||
X139460000Y-72300000D01*
|
||||
X140710001Y-73658543D02*
|
||||
X139460000Y-72408542D01*
|
||||
X140710001Y-75440001D02*
|
||||
X140710001Y-73658543D01*
|
||||
X141399999Y-76129999D02*
|
||||
X140710001Y-75440001D01*
|
||||
X168349999Y-76129999D02*
|
||||
X141399999Y-76129999D01*
|
||||
X178020000Y-85800000D02*
|
||||
X168349999Y-76129999D01*
|
||||
X169600000Y-74840000D02*
|
||||
X142000000Y-74840000D01*
|
||||
X180560000Y-85800000D02*
|
||||
X169600000Y-74840000D01*
|
||||
X140710001Y-68509999D02*
|
||||
X178490001Y-68509999D01*
|
||||
X139460000Y-69760000D02*
|
||||
X140710001Y-68509999D01*
|
||||
X180560000Y-66440000D02*
|
||||
X180560000Y-60400000D01*
|
||||
X178490001Y-68509999D02*
|
||||
X180560000Y-66440000D01*
|
||||
X141399999Y-65969999D02*
|
||||
X154530001Y-65969999D01*
|
||||
X140149998Y-67220000D02*
|
||||
X141399999Y-65969999D01*
|
||||
X139460000Y-67220000D02*
|
||||
X140149998Y-67220000D01*
|
||||
X154530001Y-65969999D02*
|
||||
X162200000Y-58300000D01*
|
||||
X181000000Y-58300000D02*
|
||||
X183100000Y-60400000D01*
|
||||
X162200000Y-58300000D02*
|
||||
X181000000Y-58300000D01*
|
||||
X203420000Y-60400000D02*
|
||||
X200320000Y-57300000D01*
|
||||
X140710001Y-63429999D02*
|
||||
X139460000Y-64680000D01*
|
||||
X142560003Y-63429999D02*
|
||||
X140710001Y-63429999D01*
|
||||
X148690002Y-57300000D02*
|
||||
X142560003Y-63429999D01*
|
||||
X200320000Y-57300000D02*
|
||||
X148690002Y-57300000D01*
|
||||
X202060000Y-56500000D02*
|
||||
X205960000Y-60400000D01*
|
||||
X147400000Y-56500000D02*
|
||||
X202060000Y-56500000D01*
|
||||
X143010001Y-60889999D02*
|
||||
X147400000Y-56500000D01*
|
||||
X140710001Y-60889999D02*
|
||||
X143010001Y-60889999D01*
|
||||
X139460000Y-62140000D02*
|
||||
X140710001Y-60889999D01*
|
||||
X208500000Y-60400000D02*
|
||||
X203700000Y-55600000D01*
|
||||
X143460000Y-55600000D02*
|
||||
X139460000Y-59600000D01*
|
||||
X203700000Y-55600000D02*
|
||||
X143460000Y-55600000D01*
|
||||
D22*
|
||||
X234600000Y-91600000D02*
|
||||
X234400000Y-91400000D01*
|
||||
X234600000Y-104500000D02*
|
||||
X234600000Y-91600000D01*
|
||||
X220260000Y-87400000D02*
|
||||
X218660000Y-85800000D01*
|
||||
X231500000Y-87400000D02*
|
||||
X220260000Y-87400000D01*
|
||||
X234400000Y-90300000D02*
|
||||
X231500000Y-87400000D01*
|
||||
X234400000Y-91400000D02*
|
||||
X234400000Y-90300000D01*
|
||||
M02*
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.100000*%
|
||||
%ADD11C,1.662000*%
|
||||
%ADD12O,1.702000X2.502000*%
|
||||
%ADD12C,1.502000*%
|
||||
%ADD13O,1.802000X1.802000*%
|
||||
%ADD14C,2.102000*%
|
||||
%ADD14O,2.302000X2.302000*%
|
||||
%ADD15O,1.702000X2.502000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
G36*
|
||||
|
@ -51,68 +52,196 @@ X233643000Y-132310000D01*
|
|||
X233643000Y-124690000D01*
|
||||
G37*
|
||||
D11*
|
||||
X234160000Y-60400000D03*
|
||||
X231620000Y-60400000D03*
|
||||
X229080000Y-60400000D03*
|
||||
X226540000Y-60400000D03*
|
||||
X224000000Y-60400000D03*
|
||||
X221460000Y-60400000D03*
|
||||
X218920000Y-60400000D03*
|
||||
X216380000Y-60400000D03*
|
||||
X213840000Y-60400000D03*
|
||||
X211300000Y-60400000D03*
|
||||
X208760000Y-60400000D03*
|
||||
X206220000Y-60400000D03*
|
||||
X203680000Y-60400000D03*
|
||||
X201140000Y-60400000D03*
|
||||
X198600000Y-60400000D03*
|
||||
X196060000Y-60400000D03*
|
||||
X193520000Y-60400000D03*
|
||||
X190980000Y-60400000D03*
|
||||
X188440000Y-60400000D03*
|
||||
X231620000Y-85800000D03*
|
||||
X229080000Y-85800000D03*
|
||||
X226540000Y-85800000D03*
|
||||
X224000000Y-85800000D03*
|
||||
X221460000Y-85800000D03*
|
||||
X218920000Y-85800000D03*
|
||||
X216380000Y-85800000D03*
|
||||
X213840000Y-85800000D03*
|
||||
X211300000Y-85800000D03*
|
||||
X208760000Y-85800000D03*
|
||||
X206220000Y-85800000D03*
|
||||
X203680000Y-85800000D03*
|
||||
X201140000Y-85800000D03*
|
||||
X198600000Y-85800000D03*
|
||||
X196060000Y-85800000D03*
|
||||
X193520000Y-85800000D03*
|
||||
X234160000Y-85800000D03*
|
||||
X190980000Y-85800000D03*
|
||||
X218660000Y-60400000D03*
|
||||
X216120000Y-60400000D03*
|
||||
X213580000Y-60400000D03*
|
||||
X211040000Y-60400000D03*
|
||||
X208500000Y-60400000D03*
|
||||
X205960000Y-60400000D03*
|
||||
X203420000Y-60400000D03*
|
||||
X200880000Y-60400000D03*
|
||||
X198340000Y-60400000D03*
|
||||
X195800000Y-60400000D03*
|
||||
X193260000Y-60400000D03*
|
||||
X190720000Y-60400000D03*
|
||||
X188180000Y-60400000D03*
|
||||
X185640000Y-60400000D03*
|
||||
X183100000Y-60400000D03*
|
||||
X180560000Y-60400000D03*
|
||||
X178020000Y-60400000D03*
|
||||
X175480000Y-60400000D03*
|
||||
X172940000Y-60400000D03*
|
||||
X216120000Y-85800000D03*
|
||||
X213580000Y-85800000D03*
|
||||
X211040000Y-85800000D03*
|
||||
X208500000Y-85800000D03*
|
||||
X205960000Y-85800000D03*
|
||||
X203420000Y-85800000D03*
|
||||
X200880000Y-85800000D03*
|
||||
X198340000Y-85800000D03*
|
||||
X195800000Y-85800000D03*
|
||||
X193260000Y-85800000D03*
|
||||
X190720000Y-85800000D03*
|
||||
X188180000Y-85800000D03*
|
||||
X185640000Y-85800000D03*
|
||||
X183100000Y-85800000D03*
|
||||
X180560000Y-85800000D03*
|
||||
X178020000Y-85800000D03*
|
||||
X218660000Y-85800000D03*
|
||||
X175480000Y-85800000D03*
|
||||
G36*
|
||||
G01*
|
||||
X189220000Y-86631000D02*
|
||||
X187660000Y-86631000D01*
|
||||
X173720000Y-86631000D02*
|
||||
X172160000Y-86631000D01*
|
||||
G75*
|
||||
G02*
|
||||
X187609000Y-86580000I0J51000D01*
|
||||
X172109000Y-86580000I0J51000D01*
|
||||
G01*
|
||||
X187609000Y-85020000D01*
|
||||
X172109000Y-85020000D01*
|
||||
G75*
|
||||
G02*
|
||||
X187660000Y-84969000I51000J0D01*
|
||||
X172160000Y-84969000I51000J0D01*
|
||||
G01*
|
||||
X189220000Y-84969000D01*
|
||||
X173720000Y-84969000D01*
|
||||
G75*
|
||||
G02*
|
||||
X189271000Y-85020000I0J-51000D01*
|
||||
X173771000Y-85020000I0J-51000D01*
|
||||
G01*
|
||||
X189271000Y-86580000D01*
|
||||
X173771000Y-86580000D01*
|
||||
G75*
|
||||
G02*
|
||||
X189220000Y-86631000I-51000J0D01*
|
||||
X173720000Y-86631000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D12*
|
||||
X231900000Y-91400000D03*
|
||||
X234400000Y-91400000D03*
|
||||
D13*
|
||||
X139460000Y-77380000D03*
|
||||
X142000000Y-77380000D03*
|
||||
X139460000Y-74840000D03*
|
||||
X142000000Y-74840000D03*
|
||||
X139460000Y-72300000D03*
|
||||
X142000000Y-72300000D03*
|
||||
X139460000Y-69760000D03*
|
||||
X142000000Y-69760000D03*
|
||||
X139460000Y-67220000D03*
|
||||
X142000000Y-67220000D03*
|
||||
X139460000Y-64680000D03*
|
||||
X142000000Y-64680000D03*
|
||||
X139460000Y-62140000D03*
|
||||
X142000000Y-62140000D03*
|
||||
X139460000Y-59600000D03*
|
||||
G36*
|
||||
G01*
|
||||
X141099000Y-60450000D02*
|
||||
X141099000Y-58750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X141150000Y-58699000I51000J0D01*
|
||||
G01*
|
||||
X142850000Y-58699000D01*
|
||||
G75*
|
||||
G02*
|
||||
X142901000Y-58750000I0J-51000D01*
|
||||
G01*
|
||||
X142901000Y-60450000D01*
|
||||
G75*
|
||||
G02*
|
||||
X142850000Y-60501000I-51000J0D01*
|
||||
G01*
|
||||
X141150000Y-60501000D01*
|
||||
G75*
|
||||
G02*
|
||||
X141099000Y-60450000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
D14*
|
||||
X234600000Y-114660000D03*
|
||||
G36*
|
||||
G01*
|
||||
X233500000Y-103349000D02*
|
||||
X235700000Y-103349000D01*
|
||||
G75*
|
||||
G02*
|
||||
X235751000Y-103400000I0J-51000D01*
|
||||
G01*
|
||||
X235751000Y-105600000D01*
|
||||
G75*
|
||||
G02*
|
||||
X235700000Y-105651000I-51000J0D01*
|
||||
G01*
|
||||
X233500000Y-105651000D01*
|
||||
G75*
|
||||
G02*
|
||||
X233449000Y-105600000I0J51000D01*
|
||||
G01*
|
||||
X233449000Y-103400000D01*
|
||||
G75*
|
||||
G02*
|
||||
X233500000Y-103349000I51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D12*
|
||||
X154400000Y-98300000D03*
|
||||
X154400000Y-95800000D03*
|
||||
X230000000Y-119900000D03*
|
||||
X232500000Y-119900000D03*
|
||||
D13*
|
||||
X106360000Y-59900000D03*
|
||||
X103820000Y-59900000D03*
|
||||
X101280000Y-59900000D03*
|
||||
X98740000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X97050000Y-60801000D02*
|
||||
X95350000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95299000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
X95299000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95350000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X97050000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97101000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X97101000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97050000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X87740000Y-60000000D03*
|
||||
G36*
|
||||
G01*
|
||||
X86050000Y-60901000D02*
|
||||
X84350000Y-60901000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84299000Y-60850000I0J51000D01*
|
||||
G01*
|
||||
X84299000Y-59150000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84350000Y-59099000I51000J0D01*
|
||||
G01*
|
||||
X86050000Y-59099000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86101000Y-59150000I0J-51000D01*
|
||||
G01*
|
||||
X86101000Y-60850000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86050000Y-60901000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
D15*
|
||||
X160600000Y-96160000D03*
|
||||
X219020000Y-111400000D03*
|
||||
X163140000Y-96160000D03*
|
||||
|
@ -185,153 +314,31 @@ X161400000Y-112651000I-51000J0D01*
|
|||
G01*
|
||||
G37*
|
||||
D13*
|
||||
X149360000Y-75140000D03*
|
||||
X151900000Y-75140000D03*
|
||||
X149360000Y-72600000D03*
|
||||
X151900000Y-72600000D03*
|
||||
X149360000Y-70060000D03*
|
||||
X151900000Y-70060000D03*
|
||||
X149360000Y-67520000D03*
|
||||
X151900000Y-67520000D03*
|
||||
X149360000Y-64980000D03*
|
||||
X151900000Y-64980000D03*
|
||||
X149360000Y-62440000D03*
|
||||
X151900000Y-62440000D03*
|
||||
X149360000Y-59900000D03*
|
||||
X119540000Y-62440000D03*
|
||||
X117000000Y-62440000D03*
|
||||
X119540000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X150999000Y-60750000D02*
|
||||
X150999000Y-59050000D01*
|
||||
X116099000Y-60750000D02*
|
||||
X116099000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X151050000Y-58999000I51000J0D01*
|
||||
X116150000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X152750000Y-58999000D01*
|
||||
X117850000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X152801000Y-59050000I0J-51000D01*
|
||||
X117901000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X152801000Y-60750000D01*
|
||||
X117901000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X152750000Y-60801000I-51000J0D01*
|
||||
X117850000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X151050000Y-60801000D01*
|
||||
X116150000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X150999000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
X138020000Y-59960000D03*
|
||||
X138020000Y-62500000D03*
|
||||
X135480000Y-59960000D03*
|
||||
X135480000Y-62500000D03*
|
||||
X132940000Y-59960000D03*
|
||||
X132940000Y-62500000D03*
|
||||
X130400000Y-59960000D03*
|
||||
G36*
|
||||
G01*
|
||||
X131250000Y-63401000D02*
|
||||
X129550000Y-63401000D01*
|
||||
G75*
|
||||
G02*
|
||||
X129499000Y-63350000I0J51000D01*
|
||||
G01*
|
||||
X129499000Y-61650000D01*
|
||||
G75*
|
||||
G02*
|
||||
X129550000Y-61599000I51000J0D01*
|
||||
G01*
|
||||
X131250000Y-61599000D01*
|
||||
G75*
|
||||
G02*
|
||||
X131301000Y-61650000I0J-51000D01*
|
||||
G01*
|
||||
X131301000Y-63350000D01*
|
||||
G75*
|
||||
G02*
|
||||
X131250000Y-63401000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X117540000Y-62440000D03*
|
||||
X115000000Y-62440000D03*
|
||||
X117540000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X114099000Y-60750000D02*
|
||||
X114099000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X114150000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X115850000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X115901000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X115901000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X115850000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X114150000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X114099000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
X104020000Y-59700000D03*
|
||||
X101480000Y-59700000D03*
|
||||
X98940000Y-59700000D03*
|
||||
G36*
|
||||
G01*
|
||||
X97250000Y-60601000D02*
|
||||
X95550000Y-60601000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95499000Y-60550000I0J51000D01*
|
||||
G01*
|
||||
X95499000Y-58850000D01*
|
||||
G75*
|
||||
G02*
|
||||
X95550000Y-58799000I51000J0D01*
|
||||
G01*
|
||||
X97250000Y-58799000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97301000Y-58850000I0J-51000D01*
|
||||
G01*
|
||||
X97301000Y-60550000D01*
|
||||
G75*
|
||||
G02*
|
||||
X97250000Y-60601000I-51000J0D01*
|
||||
G01*
|
||||
G37*
|
||||
X87840000Y-62440000D03*
|
||||
X85300000Y-62440000D03*
|
||||
X87840000Y-59900000D03*
|
||||
G36*
|
||||
G01*
|
||||
X84399000Y-60750000D02*
|
||||
X84399000Y-59050000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84450000Y-58999000I51000J0D01*
|
||||
G01*
|
||||
X86150000Y-58999000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86201000Y-59050000I0J-51000D01*
|
||||
G01*
|
||||
X86201000Y-60750000D01*
|
||||
G75*
|
||||
G02*
|
||||
X86150000Y-60801000I-51000J0D01*
|
||||
G01*
|
||||
X84450000Y-60801000D01*
|
||||
G75*
|
||||
G02*
|
||||
X84399000Y-60750000I0J51000D01*
|
||||
X116099000Y-60750000I0J51000D01*
|
||||
G01*
|
||||
G37*
|
||||
G36*
|
||||
|
@ -934,7 +941,4 @@ G02*
|
|||
X168873000Y-131675000I0J635000D01*
|
||||
G01*
|
||||
G37*
|
||||
D14*
|
||||
X237000000Y-114500000D03*
|
||||
X227000000Y-114500000D03*
|
||||
M02*
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1*
|
||||
G04 #@! TF.CreationDate,2021-08-07T15:14:50-07:00*
|
||||
G04 #@! TF.CreationDate,2021-09-07T17:34:24-07:00*
|
||||
G04 #@! TF.ProjectId,apple2idiot_new,6170706c-6532-4696-9469-6f745f6e6577,1.1*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Top*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-08-07 15:14:50*
|
||||
G04 Created by KiCad (PCBNEW 5.1.10-88a1d61d58~88~ubuntu18.04.1) date 2021-09-07 17:34:24*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
M48
|
||||
; DRILL file {KiCad 5.1.10-88a1d61d58~88~ubuntu18.04.1} date Sat Aug 7 15:15:12 2021
|
||||
; DRILL file {KiCad 5.1.10-88a1d61d58~88~ubuntu18.04.1} date Tue Sep 7 17:34:15 2021
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-08-07T15:15:12-07:00
|
||||
; #@! TF.CreationDate,2021-09-07T17:34:15-07:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
|
|
|
@ -1,37 +1,30 @@
|
|||
M48
|
||||
; DRILL file {KiCad 5.1.10-88a1d61d58~88~ubuntu18.04.1} date Sat Aug 7 15:15:12 2021
|
||||
; DRILL file {KiCad 5.1.10-88a1d61d58~88~ubuntu18.04.1} date Tue Sep 7 17:34:15 2021
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-08-07T15:15:12-07:00
|
||||
; #@! TF.CreationDate,2021-09-07T17:34:15-07:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,5.1.10-88a1d61d58~88~ubuntu18.04.1
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
T1C0.0157
|
||||
T2C0.0315
|
||||
T3C0.0394
|
||||
T4C0.0409
|
||||
T2C0.0276
|
||||
T3C0.0315
|
||||
T4C0.0394
|
||||
T5C0.0409
|
||||
T6C0.0433
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X5.0742Y-2.712
|
||||
X5.4809Y-2.712
|
||||
X5.748Y-2.9094
|
||||
X5.8898Y-3.5354
|
||||
X6.3661Y-2.689
|
||||
X6.4055Y-3.3583
|
||||
X6.5236Y-2.8622
|
||||
X6.5709Y-4.2362
|
||||
X6.752Y-2.6378
|
||||
X7.0551Y-3.0433
|
||||
X7.4803Y-2.8071
|
||||
X7.5276Y-2.8937
|
||||
X7.6063Y-3.0315
|
||||
X7.748Y-2.2402
|
||||
X7.8189Y-2.5709
|
||||
X7.874Y-2.2402
|
||||
X8.3543Y-3.2008
|
||||
X8.1614Y-3.1929
|
||||
T2
|
||||
X6.0787Y-3.7717
|
||||
X6.0787Y-3.8701
|
||||
X9.0551Y-4.7205
|
||||
X9.1299Y-3.5984
|
||||
X9.1535Y-4.7205
|
||||
X9.2283Y-3.5984
|
||||
T3
|
||||
X6.3228Y-3.7858
|
||||
X6.3228Y-4.3858
|
||||
X6.4228Y-3.7858
|
||||
|
@ -80,81 +73,75 @@ X8.5228Y-3.7858
|
|||
X8.5228Y-4.3858
|
||||
X8.6228Y-3.7858
|
||||
X8.6228Y-4.3858
|
||||
T3
|
||||
X3.3583Y-2.3583
|
||||
X3.3583Y-2.4583
|
||||
X3.4583Y-2.3583
|
||||
X3.4583Y-2.4583
|
||||
X3.7953Y-2.3504
|
||||
X3.8953Y-2.3504
|
||||
X3.9953Y-2.3504
|
||||
X4.0953Y-2.3504
|
||||
X4.5276Y-2.3583
|
||||
X4.5276Y-2.4583
|
||||
X4.6276Y-2.3583
|
||||
X4.6276Y-2.4583
|
||||
X5.1339Y-2.3606
|
||||
X5.1339Y-2.4606
|
||||
X5.2339Y-2.3606
|
||||
X5.2339Y-2.4606
|
||||
X5.3339Y-2.3606
|
||||
X5.3339Y-2.4606
|
||||
X5.4339Y-2.3606
|
||||
X5.4339Y-2.4606
|
||||
X5.8803Y-2.3583
|
||||
X5.8803Y-2.4583
|
||||
X5.8803Y-2.5583
|
||||
X5.8803Y-2.6583
|
||||
X5.8803Y-2.7583
|
||||
X5.8803Y-2.8583
|
||||
X5.8803Y-2.9583
|
||||
X5.9803Y-2.3583
|
||||
X5.9803Y-2.4583
|
||||
X5.9803Y-2.5583
|
||||
X5.9803Y-2.6583
|
||||
X5.9803Y-2.7583
|
||||
X5.9803Y-2.8583
|
||||
X5.9803Y-2.9583
|
||||
X8.937Y-4.5079
|
||||
X9.3307Y-4.5079
|
||||
T4
|
||||
X7.4189Y-2.378
|
||||
X7.4189Y-3.378
|
||||
X7.5189Y-2.378
|
||||
X7.5189Y-3.378
|
||||
X7.6189Y-2.378
|
||||
X7.6189Y-3.378
|
||||
X7.7189Y-2.378
|
||||
X7.7189Y-3.378
|
||||
X7.8189Y-2.378
|
||||
X7.8189Y-3.378
|
||||
X7.9189Y-2.378
|
||||
X7.9189Y-3.378
|
||||
X8.0189Y-2.378
|
||||
X8.0189Y-3.378
|
||||
X8.1189Y-2.378
|
||||
X8.1189Y-3.378
|
||||
X8.2189Y-2.378
|
||||
X8.2189Y-3.378
|
||||
X8.3189Y-2.378
|
||||
X8.3189Y-3.378
|
||||
X8.4189Y-2.378
|
||||
X8.4189Y-3.378
|
||||
X8.5189Y-2.378
|
||||
X8.5189Y-3.378
|
||||
X8.6189Y-2.378
|
||||
X8.6189Y-3.378
|
||||
X8.7189Y-2.378
|
||||
X8.7189Y-3.378
|
||||
X8.8189Y-2.378
|
||||
X8.8189Y-3.378
|
||||
X8.9189Y-2.378
|
||||
X8.9189Y-3.378
|
||||
X9.0189Y-2.378
|
||||
X9.0189Y-3.378
|
||||
X9.1189Y-2.378
|
||||
X9.1189Y-3.378
|
||||
X9.2189Y-2.378
|
||||
X9.2189Y-3.378
|
||||
X3.3543Y-2.3622
|
||||
X3.4543Y-2.3622
|
||||
X3.7874Y-2.3583
|
||||
X3.8874Y-2.3583
|
||||
X3.9874Y-2.3583
|
||||
X4.0874Y-2.3583
|
||||
X4.1874Y-2.3583
|
||||
X4.6063Y-2.3583
|
||||
X4.6063Y-2.4583
|
||||
X4.7063Y-2.3583
|
||||
X4.7063Y-2.4583
|
||||
X5.4906Y-2.3465
|
||||
X5.4906Y-2.4465
|
||||
X5.4906Y-2.5465
|
||||
X5.4906Y-2.6465
|
||||
X5.4906Y-2.7465
|
||||
X5.4906Y-2.8465
|
||||
X5.4906Y-2.9465
|
||||
X5.4906Y-3.0465
|
||||
X5.5906Y-2.3465
|
||||
X5.5906Y-2.4465
|
||||
X5.5906Y-2.5465
|
||||
X5.5906Y-2.6465
|
||||
X5.5906Y-2.7465
|
||||
X5.5906Y-2.8465
|
||||
X5.5906Y-2.9465
|
||||
X5.5906Y-3.0465
|
||||
T5
|
||||
X6.8087Y-2.378
|
||||
X6.8087Y-3.378
|
||||
X6.9087Y-2.378
|
||||
X6.9087Y-3.378
|
||||
X7.0087Y-2.378
|
||||
X7.0087Y-3.378
|
||||
X7.1087Y-2.378
|
||||
X7.1087Y-3.378
|
||||
X7.2087Y-2.378
|
||||
X7.2087Y-3.378
|
||||
X7.3087Y-2.378
|
||||
X7.3087Y-3.378
|
||||
X7.4087Y-2.378
|
||||
X7.4087Y-3.378
|
||||
X7.5087Y-2.378
|
||||
X7.5087Y-3.378
|
||||
X7.6087Y-2.378
|
||||
X7.6087Y-3.378
|
||||
X7.7087Y-2.378
|
||||
X7.7087Y-3.378
|
||||
X7.8087Y-2.378
|
||||
X7.8087Y-3.378
|
||||
X7.9087Y-2.378
|
||||
X7.9087Y-3.378
|
||||
X8.0087Y-2.378
|
||||
X8.0087Y-3.378
|
||||
X8.1087Y-2.378
|
||||
X8.1087Y-3.378
|
||||
X8.2087Y-2.378
|
||||
X8.2087Y-3.378
|
||||
X8.3087Y-2.378
|
||||
X8.3087Y-3.378
|
||||
X8.4087Y-2.378
|
||||
X8.4087Y-3.378
|
||||
X8.5087Y-2.378
|
||||
X8.5087Y-3.378
|
||||
X8.6087Y-2.378
|
||||
X8.6087Y-3.378
|
||||
T6
|
||||
X9.2362Y-4.1142
|
||||
X9.2362Y-4.5142
|
||||
T0
|
||||
M30
|
||||
|
|
BIN
card/apple2idiot_new/gerber/gerber_files-rev-0.2.zip
Normal file
BIN
card/apple2idiot_new/gerber/gerber_files-rev-0.2.zip
Normal file
Binary file not shown.
1
examples/ntp_prodos_clock_driver/asm/BELL#068000
Normal file
1
examples/ntp_prodos_clock_driver/asm/BELL#068000
Normal file
|
@ -0,0 +1 @@
|
|||
ン玽
|
4
examples/ntp_prodos_clock_driver/asm/BELL.S
Normal file
4
examples/ntp_prodos_clock_driver/asm/BELL.S
Normal file
|
@ -0,0 +1,4 @@
|
|||
ORG $8000
|
||||
BELL EQU $FBDD
|
||||
START JSR BELL
|
||||
DONE RTS
|
12
examples/ntp_prodos_clock_driver/asm/PDCLOCKTEST.S
Normal file
12
examples/ntp_prodos_clock_driver/asm/PDCLOCKTEST.S
Normal file
|
@ -0,0 +1,12 @@
|
|||
* :asmsyntax=nasm
|
||||
|
||||
ORG $8000
|
||||
CLD
|
||||
clock_address EQU $bf07 ; points to address of clock driver code
|
||||
clock_address EQU $bf08 ; points to address of clock driver code
|
||||
date1_address EQU $bf90 ; prodos Y6-Y0 and M3 address bits
|
||||
date2_address EQU $bf91 ; prodos M2-M0 and D4-D0 address bits
|
||||
bday1 EQU ; Hardcode my birthday for testing
|
||||
bday2 EQU ; Hardcode my birthday for testing
|
||||
machid EQU $bf98 ; bit 0 -> 1=clock found, 0=no clock
|
||||
|
4
examples/ntp_prodos_clock_driver/asm/make.sh
Normal file
4
examples/ntp_prodos_clock_driver/asm/make.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
~/bin/Merlin32_v1.0/Linux64/Merlin32 -V . BELL.S
|
||||
mv BELL BELL#068000
|
||||
cadius ADDFILE ntp_clock_dev-prodos.po /NTPCLOCKDEV/ BELL#068000
|
||||
mame apple2e -skip_gameinfo -window -nomax -flop1 ntp_clock_dev-prodos.po
|
BIN
examples/ntp_prodos_clock_driver/asm/ntp_clock_dev-prodos.po
Normal file
BIN
examples/ntp_prodos_clock_driver/asm/ntp_clock_dev-prodos.po
Normal file
Binary file not shown.
4
examples/weather/apple2-cc65/COMPILE.md
Normal file
4
examples/weather/apple2-cc65/COMPILE.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
```
|
||||
make
|
||||
make TARGETS=apple2 dsk
|
||||
```
|
674
examples/weather/apple2-cc65/LICENSE
Normal file
674
examples/weather/apple2-cc65/LICENSE
Normal file
|
@ -0,0 +1,674 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
346
examples/weather/apple2-cc65/Makefile
Normal file
346
examples/weather/apple2-cc65/Makefile
Normal file
|
@ -0,0 +1,346 @@
|
|||
###############################################################################
|
||||
### Generic Makefile for cc65 projects - full version with abstract options ###
|
||||
### V1.3.0(w) 2010 - 2013 Oliver Schmidt & Patryk "Silver Dream !" Łogiewa ###
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
### In order to override defaults - values can be assigned to the variables ###
|
||||
###############################################################################
|
||||
|
||||
# Space or comma separated list of cc65 supported target platforms to build for.
|
||||
# Default: c64 (lowercase!)
|
||||
TARGETS := apple2
|
||||
|
||||
# Name of the final, single-file executable.
|
||||
# Default: name of the current dir with target name appended
|
||||
PROGRAM := weather
|
||||
|
||||
# Path(s) to additional libraries required for linking the program
|
||||
# Use only if you don't want to place copies of the libraries in SRCDIR
|
||||
# Default: none
|
||||
LIBS :=
|
||||
|
||||
# Custom linker configuration file
|
||||
# Use only if you don't want to place it in SRCDIR
|
||||
# Default: none
|
||||
CONFIG :=
|
||||
|
||||
# Additional C compiler flags and options.
|
||||
# Default: none
|
||||
CFLAGS =
|
||||
|
||||
# Additional assembler flags and options.
|
||||
# Default: none
|
||||
ASFLAGS =
|
||||
|
||||
# Additional linker flags and options.
|
||||
# Default: none
|
||||
LDFLAGS =
|
||||
|
||||
ifeq ($(PROGRAM),)
|
||||
NAME := $(notdir $(CURDIR))
|
||||
else
|
||||
NAME := $(PROGRAM)
|
||||
endif
|
||||
$(NAME).apple2: LDFLAGS += -u __EXEHDR__ apple2.lib
|
||||
|
||||
# Path to the directory containing C and ASM sources.
|
||||
# Default: src
|
||||
SRCDIR := src/
|
||||
|
||||
# Path to the directory where object files are to be stored (inside respective target subdirectories).
|
||||
# Default: obj
|
||||
OBJDIR :=
|
||||
|
||||
# Command used to run the emulator.
|
||||
# Default: depending on target platform. For default (c64) target: x64 -kernal kernal -VICIIdsize -autoload
|
||||
EMUCMD :=
|
||||
|
||||
# Optional commands used before starting the emulation process, and after finishing it.
|
||||
# Default: none
|
||||
# Examples
|
||||
#PREEMUCMD := osascript -e "tell application \"System Events\" to set isRunning to (name of processes) contains \"X11.bin\"" -e "if isRunning is true then tell application \"X11\" to activate"
|
||||
#PREEMUCMD := osascript -e "tell application \"X11\" to activate"
|
||||
#POSTEMUCMD := osascript -e "tell application \"System Events\" to tell process \"X11\" to set visible to false"
|
||||
#POSTEMUCMD := osascript -e "tell application \"Terminal\" to activate"
|
||||
PREEMUCMD :=
|
||||
POSTEMUCMD :=
|
||||
|
||||
# On Windows machines VICE emulators may not be available in the PATH by default.
|
||||
# In such case, please set the variable below to point to directory containing
|
||||
# VICE emulators.
|
||||
#VICE_HOME := "C:\Program Files\WinVICE-2.2-x86\"
|
||||
VICE_HOME :=
|
||||
|
||||
# Options state file name. You should not need to change this, but for those
|
||||
# rare cases when you feel you really need to name it differently - here you are
|
||||
STATEFILE := Makefile.options
|
||||
|
||||
###################################################################################
|
||||
#### DO NOT EDIT BELOW THIS LINE, UNLESS YOU REALLY KNOW WHAT YOU ARE DOING! ####
|
||||
###################################################################################
|
||||
|
||||
###################################################################################
|
||||
### Mapping abstract options to the actual compiler, assembler and linker flags ###
|
||||
### Predefined compiler, assembler and linker flags, used with abstract options ###
|
||||
### valid for 2.14.x. Consult the documentation of your cc65 version before use ###
|
||||
###################################################################################
|
||||
|
||||
# Compiler flags used to tell the compiler to optimise for SPEED
|
||||
define _optspeed_
|
||||
CFLAGS += -Oris
|
||||
endef
|
||||
|
||||
# Compiler flags used to tell the compiler to optimise for SIZE
|
||||
define _optsize_
|
||||
CFLAGS += -Or
|
||||
endef
|
||||
|
||||
# Compiler and assembler flags for generating listings
|
||||
define _listing_
|
||||
CFLAGS += --listing $$(@:.o=.lst)
|
||||
ASFLAGS += --listing $$(@:.o=.lst)
|
||||
REMOVES += $(addsuffix .lst,$(basename $(OBJECTS)))
|
||||
endef
|
||||
|
||||
# Linker flags for generating map file
|
||||
define _mapfile_
|
||||
LDFLAGS += --mapfile $$@.map
|
||||
REMOVES += $(PROGRAM).map
|
||||
endef
|
||||
|
||||
# Linker flags for generating VICE label file
|
||||
define _labelfile_
|
||||
LDFLAGS += -Ln $$@.lbl
|
||||
REMOVES += $(PROGRAM).lbl
|
||||
endef
|
||||
|
||||
# Linker flags for generating a debug file
|
||||
define _debugfile_
|
||||
LDFLAGS += -Wl --dbgfile,$$@.dbg
|
||||
REMOVES += $(PROGRAM).dbg
|
||||
endef
|
||||
|
||||
###############################################################################
|
||||
### Defaults to be used if nothing defined in the editable sections above ###
|
||||
###############################################################################
|
||||
|
||||
# Presume the C64 target like the cl65 compile & link utility does.
|
||||
# Set TARGETS to override.
|
||||
ifeq ($(TARGETS),)
|
||||
TARGETS := c64
|
||||
endif
|
||||
|
||||
# Presume we're in a project directory so name the program like the current
|
||||
# directory. Set PROGRAM to override.
|
||||
ifeq ($(PROGRAM),)
|
||||
PROGRAM := $(notdir $(CURDIR))
|
||||
endif
|
||||
|
||||
# Presume the C and asm source files to be located in the subdirectory 'src'.
|
||||
# Set SRCDIR to override.
|
||||
ifeq ($(SRCDIR),)
|
||||
SRCDIR := src
|
||||
endif
|
||||
|
||||
# Presume the object and dependency files to be located in the subdirectory
|
||||
# 'obj' (which will be created). Set OBJDIR to override.
|
||||
ifeq ($(OBJDIR),)
|
||||
OBJDIR := obj
|
||||
endif
|
||||
TARGETOBJDIR := $(OBJDIR)/$(TARGETS)
|
||||
|
||||
# Default emulator commands and options for particular targets.
|
||||
# Set EMUCMD to override.
|
||||
c64_EMUCMD := $(VICE_HOME)x64 -kernal kernal -VICIIdsize -autoload
|
||||
c128_EMUCMD := $(VICE_HOME)x128 -kernal kernal -VICIIdsize -autoload
|
||||
vic20_EMUCMD := $(VICE_HOME)xvic -kernal kernal -VICdsize -autoload
|
||||
pet_EMUCMD := $(VICE_HOME)xpet -Crtcdsize -autoload
|
||||
plus4_EMUCMD := $(VICE_HOME)xplus4 -TEDdsize -autoload
|
||||
# So far there is no x16 emulator in VICE (why??) so we have to use xplus4 with -memsize option
|
||||
c16_EMUCMD := $(VICE_HOME)xplus4 -ramsize 16 -TEDdsize -autoload
|
||||
cbm510_EMUCMD := $(VICE_HOME)xcbm2 -model 510 -VICIIdsize -autoload
|
||||
cbm610_EMUCMD := $(VICE_HOME)xcbm2 -model 610 -Crtcdsize -autoload
|
||||
atari_EMUCMD := atari800 -windowed -xl -pal -nopatchall -run
|
||||
cx16_EMUCMD := x16emu -run -prg
|
||||
|
||||
ifeq ($(EMUCMD),)
|
||||
EMUCMD = $($(CC65TARGET)_EMUCMD)
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
### The magic begins ###
|
||||
###############################################################################
|
||||
|
||||
# The "Native Win32" GNU Make contains quite some workarounds to get along with
|
||||
# cmd.exe as shell. However it does not provide means to determine that it does
|
||||
# actually activate those workarounds. Especially $(SHELL) does NOT contain the
|
||||
# value 'cmd.exe'. So the usual way to determine if cmd.exe is being used is to
|
||||
# execute the command 'echo' without any parameters. Only cmd.exe will return a
|
||||
# non-empty string - saying 'ECHO is on/off'.
|
||||
#
|
||||
# Many "Native Win32" programs accept '/' as directory delimiter just fine. How-
|
||||
# ever the internal commands of cmd.exe generally require '\' to be used.
|
||||
#
|
||||
# cmd.exe has an internal command 'mkdir' that doesn't understand nor require a
|
||||
# '-p' to create parent directories as needed.
|
||||
#
|
||||
# cmd.exe has an internal command 'del' that reports a syntax error if executed
|
||||
# without any file so make sure to call it only if there's an actual argument.
|
||||
ifeq ($(shell echo),)
|
||||
MKDIR = mkdir -p $1
|
||||
RMDIR = rmdir $1
|
||||
RMFILES = $(RM) $1
|
||||
else
|
||||
MKDIR = mkdir $(subst /,\,$1)
|
||||
RMDIR = rmdir $(subst /,\,$1)
|
||||
RMFILES = $(if $1,del /f $(subst /,\,$1))
|
||||
endif
|
||||
COMMA := ,
|
||||
SPACE := $(N/A) $(N/A)
|
||||
define NEWLINE
|
||||
|
||||
|
||||
endef
|
||||
# Note: Do not remove any of the two empty lines above !
|
||||
|
||||
TARGETLIST := $(subst $(COMMA),$(SPACE),$(TARGETS))
|
||||
|
||||
ifeq ($(words $(TARGETLIST)),1)
|
||||
|
||||
# Set PROGRAM to something like 'myprog.c64'.
|
||||
override PROGRAM := $(PROGRAM).$(TARGETLIST)
|
||||
|
||||
# Set SOURCES to something like 'src/foo.c src/bar.s'.
|
||||
# Use of assembler files with names ending differently than .s is deprecated!
|
||||
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
||||
SOURCES += $(wildcard $(SRCDIR)/*.s)
|
||||
SOURCES += $(wildcard $(SRCDIR)/*.asm)
|
||||
SOURCES += $(wildcard $(SRCDIR)/*.a65)
|
||||
|
||||
# Add to SOURCES something like 'src/c64/me.c src/c64/too.s'.
|
||||
# Use of assembler files with names ending differently than .s is deprecated!
|
||||
SOURCES += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.c)
|
||||
SOURCES += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.s)
|
||||
SOURCES += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.asm)
|
||||
SOURCES += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.a65)
|
||||
|
||||
# Set OBJECTS to something like 'obj/c64/foo.o obj/c64/bar.o'.
|
||||
OBJECTS := $(addsuffix .o,$(basename $(addprefix $(TARGETOBJDIR)/,$(notdir $(SOURCES)))))
|
||||
|
||||
# Set DEPENDS to something like 'obj/c64/foo.d obj/c64/bar.d'.
|
||||
DEPENDS := $(OBJECTS:.o=.d)
|
||||
|
||||
# Add to LIBS something like 'src/foo.lib src/c64/bar.lib'.
|
||||
LIBS += $(wildcard $(SRCDIR)/*.lib)
|
||||
LIBS += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.lib)
|
||||
|
||||
# Add to CONFIG something like 'src/c64/bar.cfg src/foo.cfg'.
|
||||
CONFIG += $(wildcard $(SRCDIR)/$(TARGETLIST)/*.cfg)
|
||||
CONFIG += $(wildcard $(SRCDIR)/*.cfg)
|
||||
|
||||
# Select CONFIG file to use. Target specific configs have higher priority.
|
||||
ifneq ($(word 2,$(CONFIG)),)
|
||||
CONFIG := $(firstword $(CONFIG))
|
||||
$(info Using config file $(CONFIG) for linking)
|
||||
endif
|
||||
|
||||
.SUFFIXES:
|
||||
.PHONY: all test clean zap love
|
||||
|
||||
all: $(PROGRAM)
|
||||
|
||||
-include $(DEPENDS)
|
||||
-include $(STATEFILE)
|
||||
|
||||
# If OPTIONS are given on the command line then save them to STATEFILE
|
||||
# if (and only if) they have actually changed. But if OPTIONS are not
|
||||
# given on the command line then load them from STATEFILE. Have object
|
||||
# files depend on STATEFILE only if it actually exists.
|
||||
ifeq ($(origin OPTIONS),command line)
|
||||
ifneq ($(OPTIONS),$(_OPTIONS_))
|
||||
ifeq ($(OPTIONS),)
|
||||
$(info Removing OPTIONS)
|
||||
$(shell $(RM) $(STATEFILE))
|
||||
$(eval $(STATEFILE):)
|
||||
else
|
||||
$(info Saving OPTIONS=$(OPTIONS))
|
||||
$(shell echo _OPTIONS_=$(OPTIONS) > $(STATEFILE))
|
||||
endif
|
||||
$(eval $(OBJECTS): $(STATEFILE))
|
||||
endif
|
||||
else
|
||||
ifeq ($(origin _OPTIONS_),file)
|
||||
$(info Using saved OPTIONS=$(_OPTIONS_))
|
||||
OPTIONS = $(_OPTIONS_)
|
||||
$(eval $(OBJECTS): $(STATEFILE))
|
||||
endif
|
||||
endif
|
||||
|
||||
# Transform the abstract OPTIONS to the actual cc65 options.
|
||||
$(foreach o,$(subst $(COMMA),$(SPACE),$(OPTIONS)),$(eval $(_$o_)))
|
||||
|
||||
# Strip potential variant suffix from the actual cc65 target.
|
||||
CC65TARGET := $(firstword $(subst .,$(SPACE),$(TARGETLIST)))
|
||||
|
||||
# The remaining targets.
|
||||
$(TARGETOBJDIR):
|
||||
$(call MKDIR,$@)
|
||||
|
||||
vpath %.c $(SRCDIR)/$(TARGETLIST) $(SRCDIR)
|
||||
|
||||
$(TARGETOBJDIR)/%.o: %.c | $(TARGETOBJDIR)
|
||||
cl65 -t $(CC65TARGET) -c --create-dep $(@:.o=.d) $(CFLAGS) -o $@ $<
|
||||
|
||||
vpath %.s $(SRCDIR)/$(TARGETLIST) $(SRCDIR)
|
||||
|
||||
$(TARGETOBJDIR)/%.o: %.s | $(TARGETOBJDIR)
|
||||
cl65 -t $(CC65TARGET) -c --create-dep $(@:.o=.d) $(ASFLAGS) -o $@ $<
|
||||
|
||||
vpath %.asm $(SRCDIR)/$(TARGETLIST) $(SRCDIR)
|
||||
|
||||
$(TARGETOBJDIR)/%.o: %.asm | $(TARGETOBJDIR)
|
||||
cl65 -t $(CC65TARGET) -c --create-dep $(@:.o=.d) $(ASFLAGS) -o $@ $<
|
||||
|
||||
vpath %.a65 $(SRCDIR)/$(TARGETLIST) $(SRCDIR)
|
||||
|
||||
$(TARGETOBJDIR)/%.o: %.a65 | $(TARGETOBJDIR)
|
||||
cl65 -t $(CC65TARGET) -c --create-dep $(@:.o=.d) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(PROGRAM): $(CONFIG) $(OBJECTS) $(LIBS)
|
||||
cl65 -t $(CC65TARGET) $(LDFLAGS) -o $@ $(patsubst %.cfg,-C %.cfg,$^)
|
||||
|
||||
test: $(PROGRAM)
|
||||
$(PREEMUCMD)
|
||||
$(EMUCMD) $<
|
||||
$(POSTEMUCMD)
|
||||
|
||||
clean:
|
||||
$(call RMFILES,$(OBJECTS))
|
||||
$(call RMFILES,$(DEPENDS))
|
||||
$(call RMFILES,$(REMOVES))
|
||||
$(call RMFILES,$(PROGRAM))
|
||||
|
||||
else # $(words $(TARGETLIST)),1
|
||||
|
||||
all test clean:
|
||||
$(foreach t,$(TARGETLIST),$(MAKE) TARGETS=$t $@$(NEWLINE))
|
||||
|
||||
endif # $(words $(TARGETLIST)),1
|
||||
|
||||
OBJDIRLIST := $(wildcard $(OBJDIR)/*)
|
||||
|
||||
zap:
|
||||
$(foreach o,$(OBJDIRLIST),-$(call RMFILES,$o/*.o $o/*.d $o/*.lst)$(NEWLINE))
|
||||
$(foreach o,$(OBJDIRLIST),-$(call RMDIR,$o)$(NEWLINE))
|
||||
-$(call RMDIR,$(OBJDIR))
|
||||
-$(call RMFILES,$(basename $(PROGRAM)).* $(STATEFILE))
|
||||
|
||||
love:
|
||||
@echo "Not war, eh?"
|
||||
|
||||
###################################################################
|
||||
### Place your additional targets in the additional Makefiles ###
|
||||
### in the same directory - their names have to end with ".mk"! ###
|
||||
###################################################################
|
||||
-include *.mk
|
21
examples/weather/apple2-cc65/Makefile-dsk.mk
Normal file
21
examples/weather/apple2-cc65/Makefile-dsk.mk
Normal file
|
@ -0,0 +1,21 @@
|
|||
DSK = $(NAME).dsk
|
||||
|
||||
# For this one, see https://applecommander.github.io/
|
||||
AC ?= ~/bin/AppleCommander.jar
|
||||
|
||||
# Unix or Windows
|
||||
ifeq ($(shell echo),)
|
||||
CP = cp $1
|
||||
else
|
||||
CP = copy $(subst /,\,$1)
|
||||
endif
|
||||
|
||||
REMOVES += $(DSK)
|
||||
|
||||
.PHONY: dsk
|
||||
dsk: $(DSK)
|
||||
|
||||
$(DSK): $(NAME).apple2
|
||||
$(call CP, apple2/template.dsk $@)
|
||||
java -jar $(AC) -p $@ $(NAME).system sys < $(shell cl65 --print-target-path)/apple2/util/loader.system
|
||||
java -jar $(AC) -as $@ $(NAME) bin < $(NAME).apple2
|
4
examples/weather/apple2-cc65/README.md
Normal file
4
examples/weather/apple2-cc65/README.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Apple2 Internet Weather Client Example
|
||||
|
||||
This is the C code to compile the software that runs on an Apple2 and makes use
|
||||
of the Apple2idiot card to display the weather for a given city.
|
3
examples/weather/apple2-cc65/adt.bash
Normal file
3
examples/weather/apple2-cc65/adt.bash
Normal file
|
@ -0,0 +1,3 @@
|
|||
java -jar ~/bin/AppleCommander.jar -d ~/bin/ADTPro-2.1.0/disks/dev.dsk weather
|
||||
java -jar ~/bin/AppleCommander.jar -as ~/bin/ADTPro-2.1.0/disks/dev.dsk weather bin < weather.apple2
|
||||
java -jar ~/bin/AppleCommander.jar -l ~/bin/ADTPro-2.1.0/disks/dev.dsk
|
BIN
examples/weather/apple2-cc65/apple2/template.dsk
Normal file
BIN
examples/weather/apple2-cc65/apple2/template.dsk
Normal file
Binary file not shown.
1
examples/weather/apple2-cc65/compile.bash
Normal file
1
examples/weather/apple2-cc65/compile.bash
Normal file
|
@ -0,0 +1 @@
|
|||
cl65 -t apple2 weather.c -o weather
|
16
examples/weather/apple2-cc65/make.bash
Normal file
16
examples/weather/apple2-cc65/make.bash
Normal file
|
@ -0,0 +1,16 @@
|
|||
cc65 -g -Oi -t apple2 weather.c
|
||||
cc65 -g -Oi -t apple2 inputline.c
|
||||
cc65 -g -Oi -t apple2 menu.c
|
||||
cc65 -g -Oi -t apple2 screen.c
|
||||
ca65 -g weather.s
|
||||
ca65 -g inputline.s
|
||||
ca65 -g menu.s
|
||||
ca65 -g screen.s
|
||||
ld65 -o weather -t apple2 weather.o inputline.o menu.o screen.o apple2.lib
|
||||
|
||||
#cl65 -t apple2 weather.c -o weather
|
||||
#cl65 -c -Oirs -t apple2 weather.c -o weather
|
||||
java -jar ~/bin/AppleCommander.jar -d hello.dsk weather
|
||||
java -jar ~/bin/AppleCommander.jar -as hello.dsk weather bin < weather
|
||||
java -jar ~/bin/AppleCommander.jar -l hello.dsk
|
||||
java -jar ~/bin/AppleCommander.jar -as ~/bin/ADTPro-2.1.0/disks/dev.dsk weather bin < weather.apple2
|
2
examples/weather/apple2-cc65/mame.bash
Normal file
2
examples/weather/apple2-cc65/mame.bash
Normal file
|
@ -0,0 +1,2 @@
|
|||
# -uimodekey DEL -ui_active
|
||||
mame apple2e -skip_gameinfo -window -nomax -uimodekey DEL -flop1 weather.dsk
|
2
examples/weather/apple2-cc65/notes.txt
Normal file
2
examples/weather/apple2-cc65/notes.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
cl65 -t apple2 hello2.c -o hello2.apple2
|
||||
java -jar ~/bin/AppleCommander.jar -as hello.dsk hello bin < hello
|
148
examples/weather/apple2-cc65/src/inputline.c
Normal file
148
examples/weather/apple2-cc65/src/inputline.c
Normal file
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* This code is not original to slapple2, I took it from cvote.
|
||||
*/
|
||||
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <apple2.h>
|
||||
#include "screen.h"
|
||||
#include "menu.h"
|
||||
|
||||
|
||||
unsigned char ibuf[100];
|
||||
static unsigned char allowme[256];
|
||||
|
||||
|
||||
unsigned char ptoa(unsigned char p) {
|
||||
unsigned char a = p;
|
||||
|
||||
if (p >= 192) {
|
||||
if (p >= 224) {
|
||||
if (p == 255) {
|
||||
a = 126;
|
||||
} else {
|
||||
a -= 64;
|
||||
}
|
||||
} else {
|
||||
a -= 96;
|
||||
}
|
||||
}
|
||||
return(a);
|
||||
}
|
||||
|
||||
void printbuf(unsigned char x, unsigned char y, unsigned char width, unsigned char *buffer) {
|
||||
gotoxy(x, y);
|
||||
PrintLeftString(buffer, width);
|
||||
sprintf("%c", buffer);
|
||||
}
|
||||
|
||||
|
||||
unsigned char inputline(unsigned char x, unsigned char y, unsigned char width,
|
||||
unsigned char maxlen, unsigned char *buffer, unsigned char *allowed) {
|
||||
unsigned char offset = 0, pos = 0;
|
||||
unsigned char len, i, c;
|
||||
|
||||
pos = len = strlen(buffer);
|
||||
if (len > maxlen) {
|
||||
pos = len = maxlen;
|
||||
buffer[pos] = 0;
|
||||
}
|
||||
if (len >= width) {
|
||||
offset += len - width + 1;
|
||||
pos -= offset;
|
||||
}
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
cursor(1);
|
||||
|
||||
while (1) {
|
||||
|
||||
gotoxy(0, 1);
|
||||
cprintf("pos = %2d, offset = %2d, len = %2d", pos, offset, len);
|
||||
gotoxy(x + pos, y);
|
||||
switch (c = cgetc()) {
|
||||
|
||||
default:
|
||||
c = ptoa(c);
|
||||
if (allowme[c] && len < maxlen) {
|
||||
++len;
|
||||
memmove(buffer + pos + offset + 1, buffer + pos + offset, strlen(buffer + pos + offset) + 1);
|
||||
buffer[pos + offset] = c;
|
||||
buffer[len] = 0;
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
}
|
||||
|
||||
// fall through
|
||||
|
||||
case CH_CURS_RIGHT:
|
||||
if (pos + offset < len) {
|
||||
if (pos < width - 1) {
|
||||
pos += 1;
|
||||
} else if (len > offset + pos) {
|
||||
offset += 1;
|
||||
if (offset + pos == len) {
|
||||
cputsxy(x + width - 1, y, " ");
|
||||
}
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CH_CURS_LEFT:
|
||||
if (pos > 0) {
|
||||
pos -= 1;
|
||||
} else if (offset > 0) {
|
||||
offset -= 1;
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3: // stop
|
||||
len = 0;
|
||||
// fall through
|
||||
|
||||
case 13: // return
|
||||
ClearBox(width, 1, x, y);
|
||||
cursor(0);
|
||||
return(len);
|
||||
break;
|
||||
|
||||
case 20: // del
|
||||
if (pos || offset) {
|
||||
if (pos) {
|
||||
pos -= 1;
|
||||
} else {
|
||||
offset -= 1;
|
||||
}
|
||||
i = offset + pos;
|
||||
while (buffer[i]) {
|
||||
buffer[i] = buffer[i+1];
|
||||
++i;
|
||||
}
|
||||
--len;
|
||||
if (offset + pos == len) {
|
||||
cputsxy(x + pos, y, " ");
|
||||
} else if (len - offset < width) {
|
||||
cputsxy(x + len - offset, y, " ");
|
||||
}
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
}
|
||||
break;
|
||||
|
||||
case 19: // home
|
||||
if (pos || offset) {
|
||||
pos = offset = 0;
|
||||
printbuf(x, y, width, buffer + offset);
|
||||
}
|
||||
break;
|
||||
|
||||
case 147: // clear
|
||||
pos = offset = len = 0;
|
||||
buffer[0] = 0;
|
||||
ClearBox(width, 1, x, y);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
6
examples/weather/apple2-cc65/src/inputline.h
Normal file
6
examples/weather/apple2-cc65/src/inputline.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
extern unsigned char ibuf[];
|
||||
|
||||
|
||||
unsigned char inputline(unsigned char x, unsigned char y, unsigned char width,
|
||||
unsigned char maxlen, unsigned char *buffer, unsigned char *allowed);
|
||||
|
81
examples/weather/apple2-cc65/src/main.c
Normal file
81
examples/weather/apple2-cc65/src/main.c
Normal file
|
@ -0,0 +1,81 @@
|
|||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <peekpoke.h>
|
||||
#include <apple2.h>
|
||||
|
||||
//#include <stdlib.h>
|
||||
//#include <stdbool.h>
|
||||
//#include <stdlib.h>
|
||||
//#include <stdio.h>
|
||||
//#include <string.h>
|
||||
//#include <peekpoke.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "inputline.h"
|
||||
|
||||
unsigned char i = 0;
|
||||
char p;
|
||||
char text[20];
|
||||
|
||||
//unsigned char menuEntries[8][4] = {"HLP", "END", "SEL", "REF", "CPY", "REN", "MDR", "DEL"};
|
||||
//unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"CHANNEL", "MISC"};
|
||||
|
||||
// Writes the menu bar at the top of the screen
|
||||
// which is scaled to the current screen size.
|
||||
void writeMenuBar(void)
|
||||
{
|
||||
static unsigned char i, x;
|
||||
|
||||
//cclearxy(0, bottom, size_x);
|
||||
cclearxy(0, 0, SIZE_X);
|
||||
|
||||
for(i = 0; i < MENU_LENGTH; i++){
|
||||
//x = i*5;
|
||||
x = (MENU_WORD_LENGTH + 1) * i;
|
||||
revers(1);
|
||||
//gotoxy(x, bottom); cputc('1' + i);
|
||||
gotoxy(x, 0); cputc('1' + i);
|
||||
revers(0);
|
||||
//cputsxy(x + 1, bottom, menuEntries[i]);
|
||||
cputsxy(x + 1, 0, menuEntries[i]);
|
||||
}
|
||||
revers(0);
|
||||
}
|
||||
|
||||
|
||||
void main(void)
|
||||
{
|
||||
//screensize(&size_x, &size_y);
|
||||
clrscr();
|
||||
writeMenuBar();
|
||||
//cvlinexy(0,1,size_x);
|
||||
gotoxy(0, 1);
|
||||
chline(SIZE_X);
|
||||
gotoxy(0, 3);
|
||||
//printf("Screensize is %d by %d\n", size_x, size_y);
|
||||
printf("Hello, world!\n");
|
||||
for (i=0;i<8;i++)
|
||||
{
|
||||
p = PEEK(0xC200+i);
|
||||
printf("(%u) -> %d, %c\n", 0xC200+i, p, p);
|
||||
}
|
||||
cursor(1);
|
||||
p = cgetc();
|
||||
gotoxy(0, SIZE_Y-5);
|
||||
printf("You said: %c\n", p);
|
||||
//inputline(1, 17, 38, 53, ibuf, NULL);
|
||||
//gotoxy(1, 17);
|
||||
//printf("YO: %c\n", ibuf);
|
||||
//cursor(1);
|
||||
//p = cgetc();
|
||||
fputs("enter some text: ", stdout);
|
||||
fflush(stdout); /* http://c-faq.com/stdio/fflush.html */
|
||||
fgets(text, sizeof text, stdin);
|
||||
printf("\ntext = \"%s\"\n", text);
|
||||
//printf("YO: %c\n", ibuf);
|
||||
printf("Press any key to exit.");
|
||||
cursor(1);
|
||||
p = cgetc();
|
||||
|
||||
}
|
||||
|
10
examples/weather/apple2-cc65/src/main.h
Normal file
10
examples/weather/apple2-cc65/src/main.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
#define MENU_LENGTH 3
|
||||
#define MENU_WORD_LENGTH 7
|
||||
|
||||
#define SIZE_X 40
|
||||
#define SIZE_Y 24
|
||||
|
||||
//unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"HLP", "END", "SEL", "REF", "CPY", "REN", "MDR", "DEL"};
|
||||
unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"CHANNEL", "MESSAGE", "END"};
|
||||
|
||||
//unsigned char ibuf[100];
|
354
examples/weather/apple2-cc65/src/menu.c
Normal file
354
examples/weather/apple2-cc65/src/menu.c
Normal file
|
@ -0,0 +1,354 @@
|
|||
/*
|
||||
|
||||
Menu handling
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include <conio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <apple2.h>
|
||||
#include "menu.h"
|
||||
#include "screen.h"
|
||||
|
||||
|
||||
unsigned char menu_bc = 1; /* border color */
|
||||
unsigned char menu_tc = 7; /* title color */
|
||||
unsigned char menu_nc = 13; /* normal item color */
|
||||
unsigned char menu_ic = 5; /* inactive item color */
|
||||
|
||||
unsigned char menu_xpos = 5; /* default menu position */
|
||||
unsigned char menu_ypos = 2;
|
||||
|
||||
|
||||
void DrawItem(Item *item, unsigned char xpos, unsigned char ypos, unsigned char current);
|
||||
|
||||
|
||||
Menu *NewMenu(void) {
|
||||
register Menu *menu;
|
||||
|
||||
if ((menu = malloc(sizeof(*menu))) == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
menu->visible = 0;
|
||||
menu->numitems = 0;
|
||||
menu->current = 0;
|
||||
menu->xpos = menu_xpos;
|
||||
menu->ypos = menu_ypos;
|
||||
menu->width = 0;
|
||||
menu->height = 0;
|
||||
menu->title = NULL;
|
||||
menu->firstitem = NULL;
|
||||
return(menu);
|
||||
}
|
||||
|
||||
|
||||
void SetMenuTitle(Menu *menu, unsigned char *title) {
|
||||
unsigned char l;
|
||||
|
||||
menu->title = title;
|
||||
if ((l = strlen(title)) > menu->width) {
|
||||
menu->width = l;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
signed char AddMenuItem(Menu *menu, unsigned char id, ItemState state, unsigned char *name) {
|
||||
register Item *item;
|
||||
int l;
|
||||
|
||||
if (id == MENU_CANCEL) { /* 0 is reserved for cancelling */
|
||||
return(-1);
|
||||
}
|
||||
if (menu->numitems == 0) {
|
||||
if ((menu->firstitem = malloc(sizeof(*item))) == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
item = menu->firstitem;
|
||||
item->prev = NULL;
|
||||
} else {
|
||||
item = menu->firstitem;
|
||||
while (item->next) {
|
||||
item = item->next;
|
||||
}
|
||||
if ((item->next = malloc(sizeof(*item))) == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
item->next->prev = item;
|
||||
item = item->next;
|
||||
}
|
||||
item->next = NULL;
|
||||
item->id = id;
|
||||
item->name = name;
|
||||
item->state = state;
|
||||
++(menu->numitems);
|
||||
if ((l = strlen(name)) > menu->width) {
|
||||
menu->width = l;
|
||||
}
|
||||
if (menu->numitems > menu->height) {
|
||||
menu->height = menu->numitems;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
signed char DelMenuItem(Menu *menu, unsigned char id) {
|
||||
register Item *item;
|
||||
|
||||
if (menu->numitems) {
|
||||
item = menu->firstitem;
|
||||
while (item) {
|
||||
if (item->id == id) {
|
||||
if (menu->firstitem == item) {
|
||||
menu->firstitem = item->next;
|
||||
item->next->prev = NULL;
|
||||
free(item);
|
||||
} else {
|
||||
item->prev->next = item->next;
|
||||
item->next->prev = item->prev;
|
||||
free(item);
|
||||
}
|
||||
--(menu->numitems);
|
||||
return(0);
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
}
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
signed char SetItemState(Menu *menu, unsigned char id, ItemState state) {
|
||||
register Item *item;
|
||||
|
||||
if (menu->numitems) {
|
||||
item = menu->firstitem;
|
||||
while (item) {
|
||||
if (item->id == id) {
|
||||
item->state = state;
|
||||
return(0);
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
}
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
void ShowMenu(Menu *menu) {
|
||||
if (menu->visible == 0) {
|
||||
menu->visible = 1;
|
||||
DrawMenu(menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HideMenu(Menu *menu) {
|
||||
if (menu->visible) {
|
||||
menu->visible = 0;
|
||||
DrawMenu(menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Item *FindItemNumber(Menu *menu, unsigned char itemnum) {
|
||||
Item *item;
|
||||
|
||||
item = menu->firstitem;
|
||||
while (itemnum) {
|
||||
if (item->next) {
|
||||
item = item->next;
|
||||
--itemnum;
|
||||
} else {
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
return(item);
|
||||
}
|
||||
|
||||
|
||||
Item *FindItem(Menu *menu, unsigned char id) {
|
||||
Item *item;
|
||||
|
||||
item = menu->firstitem;
|
||||
while (item->id != id) {
|
||||
if (item->next) {
|
||||
item = item->next;
|
||||
} else {
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
return(item);
|
||||
}
|
||||
|
||||
|
||||
signed char SelectMenu(register Menu *menu) {
|
||||
unsigned char c;
|
||||
register Item *item;
|
||||
|
||||
if ((item = FindItemNumber(menu, menu->current)) == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
if (menu->visible == 0) {
|
||||
return(-1);
|
||||
}
|
||||
while(c = cgetc()) {
|
||||
switch (c) {
|
||||
case 27:
|
||||
case 3:
|
||||
return(MENU_CANCEL);
|
||||
case '\r':
|
||||
case '\n':
|
||||
if (item->state == ISTATE_NORMAL) {
|
||||
return(item->id);
|
||||
}
|
||||
break;
|
||||
/*
|
||||
case CH_CURS_DOWN:
|
||||
if (menu->current + 1 < menu->numitems) {
|
||||
DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 0);
|
||||
item = item->next;
|
||||
++(menu->current);
|
||||
DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 1);
|
||||
}
|
||||
break;
|
||||
case CH_CURS_UP:
|
||||
if (menu->current > 0) {
|
||||
DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 0);
|
||||
item = item->prev;
|
||||
--(menu->current);
|
||||
DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 1);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DestroyMenu(Menu *menu) {
|
||||
Item *item;
|
||||
Item *next;
|
||||
|
||||
if (menu->numitems) {
|
||||
item = menu->firstitem;
|
||||
while (item) {
|
||||
next = item->next;
|
||||
free(item);
|
||||
item = next;
|
||||
}
|
||||
}
|
||||
free(menu);
|
||||
}
|
||||
|
||||
|
||||
void DrawItem(Item *item, unsigned char xpos, unsigned char ypos, unsigned char current) {
|
||||
unsigned char c;
|
||||
|
||||
gotoxy(xpos, ypos);
|
||||
if (current) {
|
||||
revers(1);
|
||||
}
|
||||
if (item->state == ISTATE_NORMAL) {
|
||||
c = textcolor(menu_nc);
|
||||
cprintf(item->name);
|
||||
} else {
|
||||
c = textcolor(menu_ic);
|
||||
cprintf(item->name);
|
||||
}
|
||||
textcolor(c);
|
||||
revers(0);
|
||||
}
|
||||
|
||||
|
||||
signed char DrawMenu(register Menu *menu) {
|
||||
unsigned char l = 0;
|
||||
Item *item;
|
||||
|
||||
if (menu->numitems == 0) {
|
||||
return(-1);
|
||||
} else {
|
||||
if (menu->title == NULL) {
|
||||
return(-1);
|
||||
} else {
|
||||
if (menu->visible) {
|
||||
textcolor(menu_bc);
|
||||
DrawBox(menu->width+2,menu->height+4,menu->xpos,menu->ypos);
|
||||
gotoxy(menu->xpos + 1, menu->ypos + 1);
|
||||
textcolor(menu_tc);
|
||||
cprintf(menu->title);
|
||||
item = menu->firstitem;
|
||||
while (item) {
|
||||
DrawItem(item, menu->xpos + 1, menu->ypos + l + 3, menu->current == l ? 1 : 0);
|
||||
item = item->next;
|
||||
++l;
|
||||
}
|
||||
} else {
|
||||
ClearBox(menu->width+2,menu->height+4,menu->xpos,menu->ypos);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Ask if user is sure */
|
||||
unsigned char AskAreYouSure(Menu *menu) {
|
||||
unsigned char x, y, sx, sy;
|
||||
|
||||
screensize(&sx, &sy);
|
||||
|
||||
if ((x = menu->xpos + 3) + 15 > sx) {
|
||||
x = sx - 16;
|
||||
}
|
||||
if ((y = menu->ypos + menu->current + 4) + 3 > sy) {
|
||||
y = sy - 3;
|
||||
}
|
||||
|
||||
textcolor(menu_bc);
|
||||
DrawBox(17, 3, x, y);
|
||||
ClearBox(15, 1, x + 1, y + 1);
|
||||
textcolor(menu_nc);
|
||||
cputsxy(x + 1, y + 1, "Are you sure? ");
|
||||
|
||||
while (1) {
|
||||
cursor(1);
|
||||
sx = cgetc();
|
||||
cursor(0);
|
||||
switch (sx) {
|
||||
|
||||
case 'y':
|
||||
case 'Y':
|
||||
ClearBox(17, 3, x, y);
|
||||
return(1);
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
case 'N':
|
||||
ClearBox(17, 3, x, y);
|
||||
return(0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Display message, wait for enter */
|
||||
void DisplayMessage(unsigned char *message) {
|
||||
unsigned char l = strlen(message);
|
||||
|
||||
textcolor(menu_bc);
|
||||
DrawBox(l + 2, 5, 20 - (l>>1) - (l & 1), 10);
|
||||
ClearBox(l, 3, 21 - (l>>1) - (l & 1), 11);
|
||||
textcolor(menu_nc);
|
||||
cputsxy(21 - (l>>1) - (l & 1), 11, message);
|
||||
revers(1);
|
||||
cputsxy(18, 13, " OK ");
|
||||
revers(0);
|
||||
while (cgetc() != 13);
|
||||
ClearBox(l + 2, 5, 20 - (l>>1) - (l & 1), 10);
|
||||
}
|
94
examples/weather/apple2-cc65/src/menu.h
Normal file
94
examples/weather/apple2-cc65/src/menu.h
Normal file
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
|
||||
Menu handling
|
||||
|
||||
*/
|
||||
|
||||
#define CH_CURS_UP 0x0B
|
||||
#define CH_CURS_DOWN 0x0A
|
||||
|
||||
#define MENU_CANCEL 0
|
||||
|
||||
#define MENU_YES 1
|
||||
#define MENU_NO 0
|
||||
|
||||
|
||||
extern unsigned char menu_bc; /* border color */
|
||||
extern unsigned char menu_tc; /* title color */
|
||||
extern unsigned char menu_nc; /* normal item color */
|
||||
extern unsigned char menu_ic; /* inactive item color */
|
||||
|
||||
extern unsigned char menu_xpos; /* default menu position */
|
||||
extern unsigned char menu_ypos;
|
||||
|
||||
typedef enum itemstates {
|
||||
ISTATE_NORMAL,
|
||||
ISTATE_INACTIVE
|
||||
} ItemState;
|
||||
|
||||
typedef struct item {
|
||||
struct item *next;
|
||||
struct item *prev;
|
||||
unsigned char id;
|
||||
unsigned char *name;
|
||||
ItemState state;
|
||||
} Item;
|
||||
|
||||
typedef struct menu {
|
||||
unsigned char visible;
|
||||
unsigned char numitems;
|
||||
unsigned char current;
|
||||
unsigned char xpos;
|
||||
unsigned char ypos;
|
||||
unsigned char width;
|
||||
unsigned char height;
|
||||
unsigned char *title;
|
||||
Item *firstitem;
|
||||
} Menu;
|
||||
|
||||
|
||||
/* Set menu colors */
|
||||
#define SetMenuColors(BC, TC, NC, IC) \
|
||||
menu_bc = (BC); \
|
||||
menu_tc = (TC); \
|
||||
menu_nc = (NC); \
|
||||
menu_ic = (IC);
|
||||
|
||||
/* Set default menu position */
|
||||
#define SetMenuDefaultPosition(XPOS, YPOS) \
|
||||
menu_xpos = (XPOS); \
|
||||
menu_ypos = (YPOS);
|
||||
|
||||
/* Initialize an empty menu. */
|
||||
Menu *NewMenu(void);
|
||||
|
||||
/* Deallocate menu resources. */
|
||||
void DestroyMenu(Menu *menu);
|
||||
|
||||
/* Set the title. */
|
||||
void SetMenuTitle(Menu *menu, unsigned char *title);
|
||||
|
||||
/* Add an item to the menu. id is the value that SelectMenu will return, which must not be 0. */
|
||||
signed char AddMenuItem(Menu *menu, unsigned char id, ItemState state, unsigned char *name);
|
||||
|
||||
/* Delete an item from the menu. */
|
||||
signed char DelMenuItem(Menu *menu, unsigned char id);
|
||||
|
||||
/* Set item state to normal or inactive. */
|
||||
signed char SetItemState(Menu *menu, unsigned char id, ItemState state);
|
||||
|
||||
/* Display the menu on the screen. */
|
||||
void ShowMenu(Menu *menu);
|
||||
signed char DrawMenu(Menu *menu);
|
||||
|
||||
/* Erase the menu from the screen. */
|
||||
void HideMenu(Menu *menu);
|
||||
|
||||
/* Let the user choose a menu item. ShowMenu() first. */
|
||||
signed char SelectMenu(Menu *menu);
|
||||
|
||||
/* Ask if user is sure */
|
||||
unsigned char AskAreYouSure(Menu *menu);
|
||||
|
||||
/* Display message, wait for enter */
|
||||
void DisplayMessage(unsigned char *message);
|
86
examples/weather/apple2-cc65/src/screen.c
Normal file
86
examples/weather/apple2-cc65/src/screen.c
Normal file
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
|
||||
Screen handling
|
||||
|
||||
*/
|
||||
|
||||
#include <conio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
static unsigned char screen_bgc;
|
||||
static unsigned char screen_borderc;
|
||||
static unsigned char screen_textc;
|
||||
|
||||
static unsigned char *spaces = " ";
|
||||
|
||||
|
||||
/* initialize screen mode */
|
||||
void InitScreen(unsigned char *title, unsigned char border, unsigned char bg, unsigned char text) {
|
||||
screen_borderc = bordercolor(border);
|
||||
screen_bgc = bgcolor(bg);
|
||||
screen_textc = textcolor(text);
|
||||
clrscr();
|
||||
revers(1);
|
||||
cprintf(title);
|
||||
revers(0);
|
||||
}
|
||||
|
||||
|
||||
/* restore basic screen mode */
|
||||
void ExitScreen(void) {
|
||||
bordercolor(screen_borderc);
|
||||
bgcolor(screen_bgc);
|
||||
textcolor(screen_textc);
|
||||
clrscr();
|
||||
}
|
||||
|
||||
|
||||
/* Draw petscii box */
|
||||
void DrawBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos) {
|
||||
/* Top line */
|
||||
gotoxy(xpos,ypos);
|
||||
cputc(CH_ULCORNER);
|
||||
chline(xsize - 2);
|
||||
cputc(CH_URCORNER);
|
||||
|
||||
/* Vertical line, left side */
|
||||
cvlinexy(xpos, ypos + 1, ysize - 2);
|
||||
|
||||
/* Bottom line */
|
||||
cputc(CH_LLCORNER);
|
||||
chline(xsize - 2);
|
||||
cputc(CH_LRCORNER);
|
||||
|
||||
/* Vertical line, right side */
|
||||
cvlinexy(xpos + xsize - 1, ypos + 1, ysize - 2);
|
||||
}
|
||||
|
||||
|
||||
/* Clear screen area */
|
||||
void ClearBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos) {
|
||||
unsigned char *s;
|
||||
unsigned char line;
|
||||
|
||||
s = spaces + 80 - xsize;
|
||||
for (line = 0; line < ysize; ++line) {
|
||||
gotoxy(xpos, ypos + line);
|
||||
cprintf(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* print maxlen leftmost chars of string */
|
||||
void PrintLeftString(unsigned char *string, unsigned char maxlen) {
|
||||
unsigned char c;
|
||||
|
||||
if ((c = strlen(string)) <= maxlen) {
|
||||
cputs(string);
|
||||
cputs(spaces + 80 + c - maxlen);
|
||||
} else {
|
||||
c = string[maxlen];
|
||||
string[maxlen] = 0;
|
||||
cputs(string);
|
||||
string[maxlen] = c;
|
||||
}
|
||||
}
|
20
examples/weather/apple2-cc65/src/screen.h
Normal file
20
examples/weather/apple2-cc65/src/screen.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
|
||||
Screen handling
|
||||
|
||||
*/
|
||||
|
||||
/* Initialize screen mode, set title and colors */
|
||||
void InitScreen(unsigned char *title, unsigned char border, unsigned char bg, unsigned char text);
|
||||
|
||||
/* Restore basic screen mode */
|
||||
void ExitScreen(void);
|
||||
|
||||
/* Draw petscii box */
|
||||
void DrawBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos);
|
||||
|
||||
/* Clear screen area */
|
||||
void ClearBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos);
|
||||
|
||||
/* print maxlen leftmost chars of string */
|
||||
void PrintLeftString(unsigned char *string, unsigned char maxlen);
|
2
notes.md
2
notes.md
|
@ -10,7 +10,7 @@ DONE: Add a GND and +5V breakout.
|
|||
Fix DEVSEL address in silkscreen docs.
|
||||
DONE: Unconnect addresses above A7.
|
||||
DONE: Add diode to +5V.
|
||||
Move ESP32 towards keyboard to accomodate USB
|
||||
DONE: Move ESP32 towards keyboard to accomodate USB
|
||||
Software reset of ESP32
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user