├── licenses
├── PVS.lha
├── IconPrgs.lha
└── Picasso96.lha
├── package
├── FileToTT
├── PVS
│ ├── PVS
│ ├── PVS.guide
│ ├── PVS.info
│ ├── ReadMe.mui
│ ├── PVS.guide.info
│ ├── ReadMe.mui.info
│ └── PVS.readme
├── rtg.library
├── screenmode.prefs
├── Picasso96Install
│ ├── Disk.info
│ ├── FindBoard
│ ├── Installer
│ ├── Drivers.info
│ ├── Picasso96.info
│ ├── InstallPicasso96
│ ├── Picasso96.readme
│ ├── Picasso96
│ │ ├── FliP96
│ │ ├── Debug.info
│ │ ├── FliP96.info
│ │ ├── AttachSettings
│ │ ├── P96Speed.info
│ │ ├── Debug
│ │ │ ├── CheckBoards
│ │ │ └── CheckBoards.info
│ │ ├── P96_PrinterPatch
│ │ ├── P96Speed
│ │ │ ├── !IMPORTANT!
│ │ │ └── catalogs
│ │ │ │ └── deutsch
│ │ │ │ ├── Identify.catalog
│ │ │ │ └── P96Speed.catalog
│ │ ├── P96_PrinterPatch.info
│ │ ├── P96_PrinterPatch.doc.info
│ │ └── P96_PrinterPatch.doc
│ ├── Documentation.info
│ ├── Drivers
│ │ ├── ADPro.info
│ │ ├── XiPaint.info
│ │ ├── Photogenics.info
│ │ ├── ADPro
│ │ │ ├── InstallADPro
│ │ │ ├── Savers2.info
│ │ │ ├── Savers2
│ │ │ │ └── Picasso96
│ │ │ ├── Install_Deutsch.info
│ │ │ └── Install_English.info
│ │ ├── ShapeShifter.info
│ │ ├── XiPaint
│ │ │ ├── libs.info
│ │ │ ├── InstallXiPaint
│ │ │ ├── Install_Deutsch.info
│ │ │ ├── Install_English.info
│ │ │ └── libs
│ │ │ │ └── xout_g.library
│ │ ├── Photogenics
│ │ │ ├── data.info
│ │ │ ├── data
│ │ │ │ ├── GIO.info
│ │ │ │ └── GIO
│ │ │ │ │ └── Picasso96.gio
│ │ │ ├── InstallPhotogenics
│ │ │ ├── Install_Deutsch.info
│ │ │ └── Install_English.info
│ │ └── ShapeShifter
│ │ │ ├── Video Drivers.info
│ │ │ ├── InstallShapeShifter
│ │ │ ├── Install_Deutsch.info
│ │ │ ├── Install_English.info
│ │ │ └── Video Drivers
│ │ │ ├── Picasso96
│ │ │ └── Picasso96.info
│ ├── Picasso96.readme.info
│ ├── Devs
│ │ ├── Monitors
│ │ │ ├── Picasso96
│ │ │ └── Picasso96.info
│ │ ├── Picasso96Settings.15
│ │ ├── Picasso96Settings.31
│ │ ├── Picasso96Settings.35.5
│ │ ├── Picasso96Settings.38
│ │ ├── Picasso96Settings.48
│ │ ├── Picasso96Settings.57
│ │ ├── Picasso96Settings.64
│ │ └── Picasso96Settings.Pablo
│ ├── Libs
│ │ ├── Picasso96
│ │ │ ├── Altais.card
│ │ │ ├── Domino.card
│ │ │ ├── Merlin.card
│ │ │ ├── Piccolo.card
│ │ │ ├── Pixel64.card
│ │ │ ├── S3ViRGE.chip
│ │ │ ├── oMniBus.card
│ │ │ ├── rtg.library
│ │ │ ├── uaegfx.card
│ │ │ ├── CVision3D.card
│ │ │ ├── Graffity.card
│ │ │ ├── PicassoII.card
│ │ │ ├── PicassoIV.card
│ │ │ ├── RetinaBLT.card
│ │ │ ├── S3Trio64.chip
│ │ │ ├── Spectrum.card
│ │ │ ├── CirrusGD542X.chip
│ │ │ ├── CirrusGD5434.chip
│ │ │ ├── CirrusGD5446.chip
│ │ │ ├── CyberVision.card
│ │ │ ├── NCR77C32BLT.chip
│ │ │ ├── PiccoloSD64.card
│ │ │ ├── TsengET4000.chip
│ │ │ ├── emulation.library
│ │ │ ├── TsengET4000W32.chip
│ │ │ └── fastlayers.library
│ │ └── Picasso96API.library
│ ├── Classes
│ │ └── DataTypes
│ │ │ └── picture.datatype
│ └── Documentation
│ │ ├── Picasso96_deutsch.guide
│ │ ├── Picasso96_english.guide
│ │ ├── Picasso96_suomi.guide
│ │ ├── Picasso96_franþais.guide
│ │ ├── Picasso96_italiano.guide
│ │ ├── Picasso96_deutsch.guide.info
│ │ ├── Picasso96_english.guide.info
│ │ ├── Picasso96_suomi.guide.info
│ │ ├── Picasso96_franþais.guide.info
│ │ └── Picasso96_italiano.guide.info
├── hstwb-package.json
└── Install
├── .gitignore
├── .gitattributes
├── tools
├── build_html.ps1
├── create_zip_from_directory.ps1
├── build_package.ps1
├── build_guide.ps1
├── convert_zip_to_amiga.ps1
└── github-pandoc.css
└── README.md
/licenses/PVS.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/licenses/PVS.lha
--------------------------------------------------------------------------------
/package/FileToTT:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/FileToTT
--------------------------------------------------------------------------------
/package/PVS/PVS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/PVS
--------------------------------------------------------------------------------
/package/rtg.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/rtg.library
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /*.zip
2 | package/*.zip
3 | package/README.guide
4 | package/README.html
5 | package/screenshots
--------------------------------------------------------------------------------
/licenses/IconPrgs.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/licenses/IconPrgs.lha
--------------------------------------------------------------------------------
/licenses/Picasso96.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/licenses/Picasso96.lha
--------------------------------------------------------------------------------
/package/PVS/PVS.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/PVS.guide
--------------------------------------------------------------------------------
/package/PVS/PVS.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/PVS.info
--------------------------------------------------------------------------------
/package/PVS/ReadMe.mui:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/ReadMe.mui
--------------------------------------------------------------------------------
/package/screenmode.prefs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/screenmode.prefs
--------------------------------------------------------------------------------
/package/PVS/PVS.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/PVS.guide.info
--------------------------------------------------------------------------------
/package/PVS/ReadMe.mui.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/PVS/ReadMe.mui.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Disk.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Disk.info
--------------------------------------------------------------------------------
/package/Picasso96Install/FindBoard:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/FindBoard
--------------------------------------------------------------------------------
/package/Picasso96Install/Installer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Installer
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96.info
--------------------------------------------------------------------------------
/package/Picasso96Install/InstallPicasso96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/InstallPicasso96
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96.readme:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96.readme
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/FliP96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/FliP96
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96.readme.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96.readme.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/Debug.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/Debug.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/FliP96.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/FliP96.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Monitors/Picasso96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Monitors/Picasso96
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/AttachSettings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/AttachSettings
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96Speed.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96Speed.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.15:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.15
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.31:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.31
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.35.5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.35.5
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.38:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.38
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.48:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.48
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.57:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.57
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.64:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.64
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro/InstallADPro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro/InstallADPro
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro/Savers2.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro/Savers2.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint/libs.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint/libs.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Altais.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Altais.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Domino.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Domino.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Merlin.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Merlin.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Piccolo.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Piccolo.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Pixel64.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Pixel64.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/S3ViRGE.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/S3ViRGE.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/oMniBus.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/oMniBus.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/rtg.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/rtg.library
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/uaegfx.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/uaegfx.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96API.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96API.library
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/Debug/CheckBoards:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/Debug/CheckBoards
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96_PrinterPatch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96_PrinterPatch
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Monitors/Picasso96.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Monitors/Picasso96.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Devs/Picasso96Settings.Pablo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Devs/Picasso96Settings.Pablo
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/data.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/data.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/CVision3D.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/CVision3D.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Graffity.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Graffity.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/PicassoII.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/PicassoII.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/PicassoIV.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/PicassoIV.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/RetinaBLT.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/RetinaBLT.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/S3Trio64.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/S3Trio64.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/Spectrum.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/Spectrum.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro/Savers2/Picasso96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro/Savers2/Picasso96
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint/InstallXiPaint:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint/InstallXiPaint
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/CirrusGD542X.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/CirrusGD542X.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/CirrusGD5434.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/CirrusGD5434.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/CirrusGD5446.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/CirrusGD5446.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/CyberVision.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/CyberVision.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/NCR77C32BLT.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/NCR77C32BLT.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/PiccoloSD64.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/PiccoloSD64.card
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/TsengET4000.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/TsengET4000.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/emulation.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/emulation.library
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/Debug/CheckBoards.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/Debug/CheckBoards.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96Speed/!IMPORTANT!:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96Speed/!IMPORTANT!
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96_PrinterPatch.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96_PrinterPatch.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Classes/DataTypes/picture.datatype:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Classes/DataTypes/picture.datatype
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro/Install_Deutsch.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro/Install_Deutsch.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ADPro/Install_English.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ADPro/Install_English.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/data/GIO.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/data/GIO.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/TsengET4000W32.chip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/TsengET4000W32.chip
--------------------------------------------------------------------------------
/package/Picasso96Install/Libs/Picasso96/fastlayers.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Libs/Picasso96/fastlayers.library
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_deutsch.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_deutsch.guide
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_english.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_english.guide
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_suomi.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_suomi.guide
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint/Install_Deutsch.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint/Install_Deutsch.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint/Install_English.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint/Install_English.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/XiPaint/libs/xout_g.library:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/XiPaint/libs/xout_g.library
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96_PrinterPatch.doc.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96_PrinterPatch.doc.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_franþais.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_franþais.guide
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_italiano.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_italiano.guide
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/InstallPhotogenics:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/InstallPhotogenics
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_deutsch.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_deutsch.guide.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_english.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_english.guide.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_suomi.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_suomi.guide.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/Install_Deutsch.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/Install_Deutsch.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/Install_English.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/Install_English.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/Photogenics/data/GIO/Picasso96.gio:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/Photogenics/data/GIO/Picasso96.gio
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/InstallShapeShifter:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/InstallShapeShifter
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/Install_Deutsch.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/Install_Deutsch.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/Install_English.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/Install_English.info
--------------------------------------------------------------------------------
/package/hstwb-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Picasso96",
3 | "version": "1.0.1",
4 | "assigns":
5 | [
6 | {
7 | "name": "SYSTEMDIR"
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_franþais.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_franþais.guide.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Documentation/Picasso96_italiano.guide.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Documentation/Picasso96_italiano.guide.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers/Picasso96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers/Picasso96
--------------------------------------------------------------------------------
/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers/Picasso96.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Drivers/ShapeShifter/Video Drivers/Picasso96.info
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96Speed/catalogs/deutsch/Identify.catalog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96Speed/catalogs/deutsch/Identify.catalog
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96Speed/catalogs/deutsch/P96Speed.catalog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/henrikstengaard/picasso96-package/HEAD/package/Picasso96Install/Picasso96/P96Speed/catalogs/deutsch/P96Speed.catalog
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # automatically line-endings for files detected as text
2 | * text=auto
3 |
4 | # unix forced line-endings
5 | *.* text eol=lf
6 |
7 | # windows forced line-endings
8 | *.ps1 text eol=crlf
9 |
10 | # archives
11 | *.lha binary
12 | *.lzx binary
13 | *.zip binary
14 |
15 | # images
16 | *.png binary
17 | *.jpg binary
18 | *.iff binary
--------------------------------------------------------------------------------
/package/PVS/PVS.readme:
--------------------------------------------------------------------------------
1 | Short: Global Prefs editor for Picasso96
2 | Uploader: torchia@windsor.igs.net (Ralph Torchia)
3 | Author: torchia@windsor.igs.net (Ralph Torchia)
4 | Type: gfx/board
5 | Version: 3.2
6 | Requires: MUI, Picasso96 RTG
7 |
8 | Helps to manage and set all those environment
9 | variables and tooltypes of the Picasso96 RTG
10 | graphic system through the use of a simple
11 | GUI.
12 |
13 |
--------------------------------------------------------------------------------
/tools/build_html.ps1:
--------------------------------------------------------------------------------
1 | # Build Html
2 | # ----------
3 | #
4 | # Author: Henrik Nørfjand Stengaard
5 | # Date: 2019-01-10
6 | #
7 | # A PowerShell script to build html from markdown and embeds github styling.
8 | #
9 | # Following software is required for running this script.
10 | #
11 | # PanDoc:
12 | # https://github.com/jgm/pandoc/releases
13 | # https://github.com/jgm/pandoc/releases/download/2.5/pandoc-2.5-windows-x86_64.msi
14 | #
15 | # Note: Pandoc is installed in local appdata and might be caught to AntiVirus as malware
16 |
17 | Param(
18 | [Parameter(Mandatory=$true)]
19 | [string]$markdownFile,
20 | [Parameter(Mandatory=$true)]
21 | [string]$htmlFile,
22 | [Parameter(Mandatory=$true)]
23 | [string]$title
24 | )
25 |
26 | # paths
27 | $pandocFile = Join-Path $env:LOCALAPPDATA -ChildPath 'Pandoc\pandoc.exe'
28 |
29 | # fail, if pandoc file doesn't exist
30 | if (!(Test-Path -path $pandocFile))
31 | {
32 | Write-Error "Error: Pandoc file '$pandocFile' doesn't exist!"
33 | exit 1
34 | }
35 |
36 | # pandoc
37 | $pandocArgs = "-s --metadata pagetitle=""$title"" -f gfm --css=""github-pandoc.css"" -t html5 ""$markdownFile"" -o ""$htmlFile"""
38 | $pandocProcess = Start-Process -FilePath $pandocFile -ArgumentList $pandocArgs -Wait -NoNewWindow -PassThru
39 |
40 | # exit, if pandoc fails
41 | if ($pandocProcess.ExitCode -ne 0)
42 | {
43 | Write-Error "Failed to run '$pandocFile' with arguments '$pandocArgs'"
44 | exit 1
45 | }
46 |
47 | # read github pandoc css and html
48 | $githubPandocFile = Resolve-Path 'github-pandoc.css'
49 | $githubPandocCss = [System.IO.File]::ReadAllText($githubPandocFile)
50 | $html = [System.IO.File]::ReadAllText($htmlFile)
51 |
52 | # embed github pandoc css and remove stylesheet link
53 | $html = $html -replace '', "`r`n" -replace '', ''
54 | [System.IO.File]::WriteAllText($htmlFile, $html)
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Picasso96 package
2 |
3 | Picasso96 package contains all you need to get Picasso96 up and running on your Amiga.
4 |
5 | Picasso96 offers support for many different Amiga graphics boards, has builtin HiColor and TrueColor support for intuition screens and much
6 | more.
7 |
8 | ## Description
9 |
10 | Picasso96 package is based on Picasso96.lha from http://aminet.net/driver/video/Picasso96.lha and updated rtg.library v40.3993 from http://guide.abime.net/wb3.1/files/Picasso96.lha created by Paul, The Green Amiga Alien.
11 |
12 | It has been converted to a package for HstWB Installer and automatically installs Picasso96 as described in "Chapter 5 - How to Install Picasso96" here http://guide.abime.net/wb3.1/chap5.htm written by Paul, The Green Amiga Alien.
13 |
14 | Currently only uaegfx card is installed.
15 |
16 | ## Requirements
17 |
18 | Picasso96 package has following requirements:
19 |
20 | - Kickstart and Workbench 3.0 (V39) or later,
21 | - Motorola MC68020 processor or better,
22 | - Altais, CyberVision64, CyberVision64/3D, Domino, Merlin, oMniBus,
23 | PicassoII, PicassoII+, PicassoIV, Piccolo, Piccolo SD64, Pixel64,
24 | Retina BLT Z3, Spectrum or uaegfx (for UAE, the UNIX/unusable/usable
25 | Amiga Emulator).
26 |
27 | ## Installation
28 |
29 | Download latest release from https://github.com/henrikstengaard/picasso96-package/releases and copy it to HstWB Installer "packages" directory, which typically is "c:\Program Files (x86)\HstWB Installer\Packages".
30 |
31 | Installation through HstWB Installer will install and configure Picasso96 package using defined assigns.
32 |
33 | During installation a dialog will ask to update screenmode prefs with display mode set to "UAE:1024x 768 16bit PC" as a default screenmode for Picasso 96.
34 |
35 | ## Assigns
36 |
37 | Installation of Picasso96 package requires and uses following assign and default value:
38 |
39 | - SYSTEMDIR: = DH0:
40 |
41 | Picasso96 files will be installed and configured in SYSTEMDIR: assign, which must be set to harddrive containing Workbench.
--------------------------------------------------------------------------------
/tools/create_zip_from_directory.ps1:
--------------------------------------------------------------------------------
1 | # Create Zip From Directory
2 | # -------------------------
3 | #
4 | # Author: Henrik Nørfjand Stengaard
5 | # Date: 2017-05-13
6 | #
7 | # A PowerShell script to create zip file from directory.
8 | # It creates an entry for each directory and files that exists in input directory.
9 |
10 |
11 | Param(
12 | [Parameter(Mandatory=$true)]
13 | [string]$inputDir,
14 | [Parameter(Mandatory=$true)]
15 | [string]$outputZipFile
16 | )
17 |
18 |
19 | Add-Type -Assembly System.IO.Compression
20 | Add-Type -Assembly System.IO.Compression.FileSystem
21 |
22 |
23 | # create zip from directory
24 | function CreateZipFromDirectory($inputDir, $outputZipFile)
25 | {
26 | # create zip archive
27 | $zipFileStream = New-Object System.IO.FileStream $outputZipFile, 'Create', 'Write', 'Write'
28 | $zipArchive = New-Object System.IO.Compression.ZipArchive $zipFileStream, 'Create'
29 |
30 | $earliestPermittedLastWriteDate = New-Object System.DateTime 1980, 1, 1, 0, 0, 0
31 |
32 | $items = @()
33 | $items += Get-ChildItem $inputDir -Recurse
34 |
35 | foreach($item in $items)
36 | {
37 | $entryName = $item.FullName.Substring($inputDir.Length + 1) -replace '\\', '/'
38 |
39 | # add tailing slash to entry name, if item is a directory
40 | if ($item.PSIsContainer)
41 | {
42 | $entryName += '/'
43 | }
44 |
45 | $zipArchiveEntry = $zipArchive.CreateEntry($entryName)
46 |
47 | # set last write time to earliest permitted last write date, if last write date is earlier then 1980 January 1
48 | if ($item.LastWriteTime -lt $earliestPermittedLastWriteDate)
49 | {
50 | $zipArchiveEntry.LastWriteTime = $earliestPermittedLastWriteDate
51 | }
52 | else
53 | {
54 | $zipArchiveEntry.LastWriteTime = $item.LastWriteTime
55 | }
56 |
57 | # add item content to zip archive entry, if item is a file
58 | if (!$item.PSIsContainer)
59 | {
60 | # open entry stream and item file stream
61 | $entryStream = $zipArchiveEntry.Open()
62 | $itemFileStream = New-Object System.IO.FileStream $item.FullName, 'Open', 'Read'
63 |
64 | [byte[]]$buffer = new-object byte[] 4096
65 |
66 | # copy item file stream to entry stream
67 | do
68 | {
69 | $result = $itemFileStream.Read($buffer, 0, $buffer.Count)
70 | $entryStream.Write($buffer, 0, $result)
71 | } while ($result -eq $buffer.Count)
72 |
73 | # close and dispose zip archive and zip file stream
74 | $itemFileStream.Close()
75 | $itemFileStream.Dispose()
76 | $entryStream.Close()
77 | }
78 | }
79 |
80 | # close and dispose zip archive and zip file stream
81 | $zipArchive.Dispose()
82 | $zipFileStream.Close()
83 | $zipFileStream.Dispose()
84 | }
85 |
86 | # create zip from directory
87 | CreateZipFromDirectory $inputDir $outputZipFile
--------------------------------------------------------------------------------
/tools/build_package.ps1:
--------------------------------------------------------------------------------
1 | # Build Package
2 | # -------------
3 | #
4 | # Author: Henrik Nørfjand Stengaard
5 | # Date: 2019-10-01
6 | #
7 | # A PowerShell script to build package for HstWB Installer.
8 |
9 |
10 | Add-Type -Assembly System.IO.Compression.FileSystem
11 |
12 | # paths
13 | $rootDir = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath("..")
14 | $packageDir = Join-Path -Path $rootDir -ChildPath "package"
15 | $screenshotsDir = Join-Path -Path $rootDir -ChildPath "screenshots"
16 | $readmeMarkdownFile = Join-Path -Path $rootDir -ChildPath "README.md"
17 | $createZipFromDirectoryFile = Resolve-Path "create_zip_from_directory.ps1"
18 | $convertZipToAmigaFile = Resolve-Path "convert_zip_to_amiga.ps1"
19 |
20 | # get screenshot files
21 | $screenshotFiles = @()
22 |
23 | if (Test-Path $screenshotsDir)
24 | {
25 | $screenshotFiles += Get-ChildItem -Path "$screenshotsDir\*" -Include *.png, *.jpg
26 | }
27 |
28 | # copy screenshot files, if any exist
29 | if ($screenshotFiles.Count -gt 0)
30 | {
31 | Write-Host "Copying screenshots for package..." -ForegroundColor "Yellow"
32 | $packageScreenshotsDir = Join-Path -Path $packageDir -ChildPath "screenshots"
33 |
34 | if (!(Test-Path $packageScreenshotsDir))
35 | {
36 | mkdir $packageScreenshotsDir | Out-Null
37 | }
38 |
39 | $screenshotFiles | ForEach-Object { Copy-Item -Path $_.FullName -Destination $packageScreenshotsDir -Force }
40 | Write-Host "Done." -ForegroundColor "Yellow"
41 | }
42 |
43 | # read package json file
44 | $hstwbPackageJsonFile = [System.IO.Path]::Combine($packageDir, 'hstwb-package.json')
45 | $hstwbPackage = Get-Content $hstwbPackageJsonFile -Raw | ConvertFrom-Json
46 |
47 | # package name
48 | $packageName = "{0} v{1}" -f $hstwbPackage.Name, $hstwbPackage.Version
49 |
50 | # build html
51 | Write-Host "Building readme html for package from readme markdown..." -ForegroundColor "Yellow"
52 | & ".\build_html.ps1" -markdownFile $readmeMarkdownFile -htmlFile (Join-Path -Path $packageDir -ChildPath "README.html") -title $packageName
53 | Write-Host "Done." -ForegroundColor "Yellow"
54 |
55 | # build guide
56 | Write-Host "Building readme guide for package from readme markdown..." -ForegroundColor "Yellow"
57 | & ".\build_guide.ps1" -markdownFile $readmeMarkdownFile -guideFile (Join-Path -Path $packageDir -ChildPath "README.guide")
58 | Write-Host "Done." -ForegroundColor "Yellow"
59 |
60 | # write progress message
61 | Write-Host ("Build package '{0}' v{1}" -f $hstwbPackage.Name, $hstwbPackage.Version) -ForegroundColor "Yellow"
62 |
63 | # compress content directories to zip files
64 | $contentDirs = Get-ChildItem -Path $rootDir | Where-Object { $_.PSIsContainer -and $_.Name -notmatch '(package|screenshots|tools|licenses)' }
65 | foreach ($contentDir in $contentDirs)
66 | {
67 | # write progress message
68 | Write-Host ("Compressing content '" + $contentDir.Name + "' zip file...")
69 |
70 | # temp file file
71 | $tempZipFile = Join-Path $packageDir -ChildPath "temp.zip"
72 |
73 | # compress content directory
74 | & $createZipFromDirectoryFile -inputDir $contentDir.FullName -outputZipFile $tempZipFile
75 |
76 | # content zip file
77 | $contentZipFile = Join-Path $packageDir -ChildPath ($contentDir.Name + ".zip")
78 |
79 | # delete content zip file, if it exists
80 | if (test-path -path $contentZipFile)
81 | {
82 | remove-item $contentZipFile -force
83 | }
84 |
85 | # convert zip to amiga
86 | & $convertZipToAmigaFile -zipFile $tempZipFile -outputZipFile $contentZipFile
87 |
88 | # delete temp zip file, if it exists
89 | if (test-path -path $tempZipFile)
90 | {
91 | remove-item $tempZipFile -force
92 | }
93 | }
94 |
95 | # write progress message
96 | Write-Host "Compressing package zip file..." -ForegroundColor "Yellow"
97 |
98 | # package file
99 | $packageFile = Join-Path -Path $rootDir -ChildPath ("{0}.{1}.zip" -f ($hstwbPackage.Name -replace '\s', '.'), $hstwbPackage.Version)
100 |
101 | # delete package file, if it exists
102 | if (test-path -path $packageFile)
103 | {
104 | remove-item $packageFile -force
105 | }
106 |
107 | # compress package directory
108 | [System.IO.Compression.ZipFile]::CreateFromDirectory($packageDir, $packageFile, 'Optimal', $false)
109 |
110 | # write progress message
111 | Write-Host "Done." -ForegroundColor "Yellow"
--------------------------------------------------------------------------------
/package/Install:
--------------------------------------------------------------------------------
1 | ; Picasso96 package install script
2 | ; --------------------------------
3 | ;
4 | ; Author: Henrik Noerfjand Stengaard
5 | ; Date: 2021-11-10
6 | ;
7 | ; This script installs Picasso96 for Workbench 3.0+.
8 |
9 |
10 | ; Copy picasso 96 Libs and uaegfx card
11 | MakePath >NIL: "SYSTEMDIR:Libs/Picasso96"
12 | Copy >NIL: "PACKAGEDIR:rtg.library" "SYSTEMDIR:Libs/Picasso96"
13 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Libs/Picasso96/fastlayers.library" "SYSTEMDIR:Libs/Picasso96"
14 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Libs/Picasso96/emulation.library" "SYSTEMDIR:Libs/Picasso96"
15 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Libs/Picasso96/uaegfx.card" "SYSTEMDIR:Libs/Picasso96"
16 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Libs/Picasso96API.library" "SYSTEMDIR:Libs"
17 |
18 |
19 | ; Copy PVS to prefs
20 | Copy >NIL: "PACKAGEDIR:PVS/PVS" "SYSTEMDIR:Prefs"
21 | Copy >NIL: "PACKAGEDIR:PVS/PVS.info" "SYSTEMDIR:Prefs"
22 |
23 |
24 | ; Copy picasso 96 storage files
25 | MakePath >NIL: "SYSTEMDIR:Storage/Picasso96"
26 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Picasso96.INFO" "SYSTEMDIR:Storage/Picasso96.info"
27 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Picasso96" "SYSTEMDIR:Storage/Picasso96" ALL
28 | Copy >NIL: "PACKAGEDIR:Picasso96Install/DRIVERS" "SYSTEMDIR:Storage/Picasso96" ALL
29 | Copy >NIL: "PACKAGEDIR:Picasso96Install/Picasso96.README" "SYSTEMDIR:Storage/Picasso96/Picasso96.readme"
30 | Copy >NIL: "PACKAGEDIR:Picasso96Install/DOCUMENTATION/Picasso96_ENGLISH.GUIDE" "SYSTEMDIR:Storage/Picasso96/Picasso96_english.guide"
31 | Copy >NIL: "PACKAGEDIR:Picasso96Install/DOCUMENTATION/Picasso96_ENGLISH.GUIDE.INFO" "SYSTEMDIR:Storage/Picasso96/Picasso96_english.guide.info"
32 | Copy >NIL: "PACKAGEDIR:Picasso96Install/VERSION" "SYSTEMDIR:Storage/Picasso96/Version"
33 |
34 |
35 | ; Copy picasso 96 uaegfx monitor
36 | Copy >NIL: "PACKAGEDIR:Picasso96Install/DEVS/MONITORS/Picasso96" "SYSTEMDIR:Devs/Monitors/uaegfx"
37 | Copy >NIL: "PACKAGEDIR:Picasso96Install/DEVS/MONITORS/Picasso96.info" "SYSTEMDIR:Devs/Monitors/uaegfx.info"
38 |
39 |
40 | ; Update picasso 96 uaegfx monitor info tooltype
41 | Echo "BOARDTYPE=uaegfx" >RAM:uaegfx_tooltype
42 | Echo "SETTINGSFILE=SYS:Devs/Picasso96Settings" >>RAM:uaegfx_tooltype
43 | Echo "(BORDERBLANK=Yes)" >>RAM:uaegfx_tooltype
44 | Echo "(BIGSPRITE=Yes)" >>RAM:uaegfx_tooltype
45 | Echo "(SOFTSPRITE=Yes)" >>RAM:uaegfx_tooltype
46 | Echo "IGNOREMASK=Yes" >>RAM:uaegfx_tooltype
47 | Echo "(DISPLAYCHAIN=Yes)" >>RAM:uaegfx_tooltype
48 | PACKAGEDIR:FileToTT FROM "RAM:uaegfx_tooltype" TO "SYSTEMDIR:Devs/Monitors/uaegfx"
49 | Delete >NIL: RAM:uaegfx_tooltype
50 |
51 |
52 | ; Create picasso 96 prefs env-archive
53 | MakePath >NIL: "SYSTEMDIR:Prefs/Env-Archive/Picasso96"
54 | Echo "15kHz" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/AmigaVideo
55 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/BlackSwitching
56 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/DirectColorMask
57 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/DoNotSetMMU
58 | Echo "Essential" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/ShowModes
59 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/PlanarOnlyDIPFDBUF
60 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/PlanesToFast
61 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/EnableBootVGA
62 | Echo "No" NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/DisableAmigaBlitter
63 | Echo "No*NDo not enable!*NOnly useful for the rtg.library developers." NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/Debug
64 | Echo "No*NDo not enable!*NOnly useful for the rtg.library developers." NOLINE >SYSTEMDIR:Prefs/Env-Archive/Picasso96/Experimental
65 |
66 | ; set picasso96 dir
67 | set picasso96dir "`execute INSTALLDIR:S/CombinePath "$systemdir" "Storage/Picasso96"`"
68 |
69 | ; update or add picasso96 assign in user startup
70 | IF EXISTS "SYSTEMDIR:S/User-Startup"
71 | search "SYSTEMDIR:S/User-Startup" "Assign Picasso96:" >NIL:
72 | IF $RC EQ 0 VAL
73 | echo "$picasso96dir" >T:_picasso96dir
74 | set picasso96dir "`sed "s/\//\\\//g" T:_picasso96dir`"
75 | sed "s/\([Pp][Ii][Cc][Aa][Ss][Ss][Oo]96:\)/\1 $picasso96dir;/" "SYSTEMDIR:S/Assign-Startup" >"T:Assign-Startup"
76 | copy >NIL: "T:Assign-Startup" "SYSTEMDIR:S/Assign-Startup"
77 | ELSE
78 | Echo "Assign Picasso96: *"$picasso96dir*"" >>SYSTEMDIR:S/User-Startup
79 | ENDIF
80 | ELSE
81 | Echo "Assign Picasso96: *"$picasso96dir*"" >>SYSTEMDIR:S/User-Startup
82 | ENDIF
83 |
84 | ; update screenmode to picasso 96 screenmode prefs with display mode set to "UAE:1024x 768 16bit PC"
85 | set updatescreenmode `RequestChoice "Update screenmode" "Do you want to update screenmode prefs with display mode*Nset to *"UAE:1024x 768 16bit PC*"?" "Yes|No"`
86 | IF "$updatescreenmode" EQ "1"
87 | Copy >NIL: "PACKAGEDIR:screenmode.prefs" "SYSTEMDIR:Prefs/Env-Archive/Sys"
88 | ENDIF
--------------------------------------------------------------------------------
/package/Picasso96Install/Picasso96/P96_PrinterPatch.doc:
--------------------------------------------------------------------------------
1 | Picasso96 Printer Patch 1.11
2 | ============================
3 |
4 | 1. What does the patch do?
5 |
6 | The Amiga printer.device driver will always assume that the bitmap data it
7 | has to print is in a specific format. As it happens, the screens and windows
8 | which reside in a graphics card memory buffer may not be in the format the
9 | printer.device expects. Consequently, it will not print properly. The
10 | Picasso96 Printer Patch program tries to address this problem by converting
11 | the data to print into a format suitable for use with the Amiga printer.device.
12 |
13 | 2. What else does the program do?
14 |
15 | High- and truecolour image data is automatically converted into a format
16 | suitable for output with the printer.device driver. The conversion also
17 | takes place for image data that uses a wider palette range than supported
18 | by the printer.device API: for the original Amiga printer.device, only
19 | up to 4096 colours per image can be used, a graphics card can allow up to
20 | 24 million colours per image. The conversion process attempts to "fold"
21 | the picture's colour information into a 12 bit colour space. In order to
22 | do so, a colour reduction process needs to be applied which attempts to
23 | reproduce the original image as closely as the limited colour space allows.
24 |
25 | 3. How does the patch work?
26 |
27 | The patch waits for somebody to open the Amiga printer.device driver. Once
28 | it opens, monitoring patches are installed which check for a bitmap printing
29 | command. When these patches hit upon such a command, they examine the type
30 | of the bitmap. If the bitmap is in a format understood by the Picasso96
31 | system (but not by the printer.device), a replacement bitmap will be created
32 | which will be in a format understood by printer.device. This very bitmap will
33 | then be forwarded to the printer.device in place of the original bitmap
34 | submitted to it.
35 |
36 | 4. What else does the program need?
37 |
38 | The P96_PrinterPatch program requires an Amiga with MC68020 CPU (or better)
39 | and rather a lot of free memory. At 600 DPI, an A4 sized colour page will
40 | take up about 3 MBytes of memory. If you don't have enough room available
41 | to keep an entire page in memory, then P96_PrinterPatch will be unable to
42 | perform its job. Above all, P96_PrinterPatch needs the Picasso96 RTG system
43 | to read and decode the bitmap data.
44 |
45 | 5. How to install the program?
46 |
47 | Just copy the P96_PrinterPatch program to your WBStartup drawer. That's all.
48 |
49 | 6. How to stop the program?
50 |
51 | Just start the program again, it will automatically shut down and
52 | remove itself from memory. Note that if the program is currently printing,
53 | it may take a while for it to remove itself.
54 |
55 | 7. How to configure the program?
56 |
57 | The program can be started both from Shell and from Workbench. In both
58 | cases you can configure two options which control how the resulting picture
59 | is generated:
60 |
61 | REDUCE
62 |
63 | This option controls whether the colour space reduction process should
64 | take place or not. If enabled, the picture data is converted, trying to
65 | retain as much colour information as possible before it is cropped to
66 | the 12 bit colour space. This reduction uses a technique known as
67 | random dithering, which causes the picture to look somewhat grainy
68 | when it finally comes out of the printer. This dithering technique
69 | has the advantage of not interfering with whatever other dithering
70 | technique the printer.device may add. It actually looks and works best
71 | with error dispersing dithering techniques like the Floyd & Steinberg
72 | filter supported by printer.device.
73 |
74 | Example: REDUCE=YES
75 | REDUCE=NO
76 |
77 | Default: REDUCE=YES
78 |
79 | NOISE
80 |
81 | The random dithering algorithm used by the colour reduction filter
82 | can be tuned to incorporate additional noise. Generally, the more
83 | frequent the noise is, the more colour will survive during the
84 | reduction process, but this happens at the expense of "roughing up"
85 | the resulting picture. With the NOISE parameter you can determine
86 | the noise frequency with 0 being the minimum (= no extra noise)
87 | and 16 being the maximum (= highest frequency noise):
88 |
89 | Example: NOISE=0
90 | NOISE=1
91 |
92 | Default: NOISE=2
93 |
94 | 8. How compatible is the patch?
95 |
96 | The patch was written for the original Amiga printer.device driver, not for
97 | smart replacements which actually know how to read bitmaps allocated by
98 | RTG systems, such as Picasso96. In such cases, the results produced by
99 | P96_PrinterPatch may be suboptimal. Also, other patches which compete for
100 | the same resources as P96_PrinterPatch (namely the printer.device driver)
101 | may interfere with P96_PrinterPatch's actions. Take care. Another point
102 | worth mentioning is that P96_PrinterPatch will require a lot of memory to
103 | perform its services. As said above, an A4 sized full colour page will
104 | at 600 DPI take up about 3 MBytes of memory.
105 |
106 | 9. How to contact the author?
107 |
108 | The author of the P96_PrinterPatch is:
109 |
110 | Olaf Barthel
111 | Brabeckstr. 35
112 | D-30559 Hannover
113 | Federal Republic of Germany
114 |
115 | e-mail: olsen@sourcery.han.de
116 |
--------------------------------------------------------------------------------
/tools/build_guide.ps1:
--------------------------------------------------------------------------------
1 | # Build Guide
2 | # -----------
3 | #
4 | # Author: Henrik Nørfjand Stengaard
5 | # Date: 2021-08-10
6 | #
7 | # A PowerShell script to build amiga guide from markdown.
8 | #
9 | # Following software is required for running this script.
10 | #
11 | # Image Magick:
12 | # https://imagemagick.org/script/download.php#windows
13 | # https://download.imagemagick.org/ImageMagick/download/binaries/ImageMagick-7.1.0-4-Q8-x64-dll.exe
14 | #
15 | # XnView with NConvert
16 | # http://www.xnview.com/en/xnview/#downloads
17 | # http://download3.xnview.com/XnView-win-full.exe (Extended with NConvert)
18 |
19 |
20 | Param(
21 | [Parameter(Mandatory=$true)]
22 | [string]$markdownFile,
23 | [Parameter(Mandatory=$true)]
24 | [string]$guideFile
25 | )
26 |
27 |
28 | # calculate md5 hash
29 | function CalculateMd5($text)
30 | {
31 | $encoding = [system.Text.Encoding]::UTF8
32 | $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
33 | return [System.BitConverter]::ToString($md5.ComputeHash($encoding.GetBytes($text))).ToLower().Replace('-', '')
34 | }
35 |
36 |
37 | # write text file encoded for Amiga
38 | function WriteAmigaTextLines($path, $lines)
39 | {
40 | $iso88591 = [System.Text.Encoding]::GetEncoding("ISO-8859-1");
41 | $utf8 = [System.Text.Encoding]::UTF8;
42 |
43 | $amigaTextBytes = [System.Text.Encoding]::Convert($utf8, $iso88591, $utf8.GetBytes($lines -join "`n"))
44 | [System.IO.File]::WriteAllText($path, $iso88591.GetString($amigaTextBytes), $iso88591)
45 | }
46 |
47 |
48 | # convert images
49 | function ConvertImages($markdownFile, $outputDir)
50 | {
51 | # read markdown lines
52 | $markdownLines = @()
53 | $markdownLines += Get-Content $markdownFile
54 |
55 | # get image references from markdown
56 | $imageReferences = @()
57 | $imageReferences += $markdownLines | ForEach-Object { $_ | Select-String -Pattern "!\[[^\[\]]+\]\(([^\(\)]+\.png)[^\)]+\)" -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[1].Value.Trim() } }
58 |
59 | # image dir
60 | $imageDir = Split-Path $markdownFile -Parent
61 |
62 | # convert image references
63 | foreach($imageReference in $imageReferences)
64 | {
65 | $imageFile = Join-Path -Path $imageDir -ChildPath $imageReference
66 |
67 | # fail, if image file doesn't exist
68 | if (!(test-path $imageFile))
69 | {
70 | Write-Error ("Image file '" + $imageFile + "' doesn't exist!")
71 | exit 1
72 | }
73 |
74 | $imageFile = Resolve-Path $imageFile
75 |
76 | # image magick
77 | $imageMagickConvertArgs = """$imageFile"" -resize 610x190! -filter Point -depth 8 -colors 255 ""$tempFile"""
78 | $imageMagickConvertProcess = Start-Process -FilePath $imageMagickFile -ArgumentList $imageMagickConvertArgs -Wait -NoNewWindow -PassThru
79 | if ($imageMagickConvertProcess.ExitCode -ne 0)
80 | {
81 | Write-Error "Failed to run '$imageMagickFile' with arguments '$imageMagickConvertArgs'"
82 | exit 1
83 | }
84 |
85 | # image iff file
86 | $imageIffFile = (Join-Path -Path $outputDir -ChildPath $imageReference) -replace '\.[^\.]+$', '.iff'
87 | $imageIffFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($imageIffFile)
88 | $imageIffDir = Split-Path -Path $imageIffFile -Parent
89 |
90 | # create image iff directory, if it doesn't exist
91 | if (!(Test-Path -Path $imageIffDir))
92 | {
93 | mkdir $imageIffDir | Out-Null
94 | }
95 |
96 | # delete image iff file, if it already exist
97 | if (Test-Path $imageIffFile)
98 | {
99 | Remove-Item $imageIffFile -Force
100 | }
101 |
102 | # nconvert
103 | $nconvertArgs = "-out iff -c 1 -o ""$imageIffFile"" ""$tempFile"""
104 | $nconvertProcess = Start-Process -FilePath $xnViewNconvertFile -ArgumentList $nconvertArgs -Wait -NoNewWindow -PassThru
105 | if ($nconvertProcess.ExitCode -ne 0)
106 | {
107 | Write-Error "Failed to run '$xnViewNconvertFile' with arguments '$nconvertArgs'"
108 | exit 1
109 | }
110 | }
111 | }
112 |
113 |
114 | # build guide lines
115 | function BuildGuideLines($markdownFile, $guideFileName)
116 | {
117 | # read markdown lines
118 | $markdownLines = @()
119 | $markdownLines += Get-Content $markdownFile
120 |
121 | # get title and headers from markdown lines
122 | $title = $markdownLines | ForEach-Object { $_ | Select-String -Pattern "#\s+(.+)" -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[1].Value.Trim() } } | Select-Object -First 1
123 | $headers = @()
124 | $headers += $markdownLines | ForEach-Object { $_ | Select-String -Pattern "^(#+)\s+(.+)" -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { @{ "Id" = (CalculateMd5 $_.Groups[2].Value.Trim()); "Level" = $_.Groups[1].Value.Trim().Length; "Name" = $_.Groups[2].Value.Trim() } } }
125 |
126 | $headerNamesIndex = @{}
127 | $subHeaderIndex = @{}
128 | $headerIdPath = @()
129 |
130 | # build sub header index
131 | foreach ($header in $headers)
132 | {
133 | # add header to header names index
134 | $headerNamesIndex.Set_Item($header.Id, $header.Name)
135 |
136 | if ($header.Level -gt $headerIdPath.Count)
137 | {
138 | $headerIdPath += $header.Id
139 | }
140 | elseif ($header.Level -le $headerIdPath.Count)
141 | {
142 | if ($header.Level -lt $headerIdPath.Count)
143 | {
144 | $headerIdPath = $headerIdPath[0..($headerIdPath.Count - $header.Level)]
145 | }
146 |
147 | $headerIdPath[$headerIdPath.Count - 1] = $header.Id
148 | }
149 |
150 | if ($headerIdPath.Count -gt 1)
151 | {
152 | $headerParentId = $headerIdPath[$headerIdPath.Count - 2]
153 |
154 | if ($subHeaderIndex.ContainsKey($headerParentId))
155 | {
156 | $subHeaders = $subHeaderIndex.Get_Item($headerParentId)
157 | }
158 | else
159 | {
160 | $subHeaders = @()
161 | }
162 |
163 | $subHeaders += $header.Id
164 | $subHeaderIndex.Set_Item($headerParentId, $subHeaders)
165 | }
166 | }
167 |
168 | # build guide lines
169 | $date = Get-Date -format "yyyy.MM.dd"
170 | $guideLines = @("@database ""$guideFileName""", "@`$VER: $guideFileName ($date)", "@wordwrap", "@title ""$title""", "")
171 | $guideLines += $markdownLines
172 | $guideLines += @("", "@endnode", "")
173 |
174 | # convert markdown syntax to guide syntax
175 | for($i = 0; $i -lt $guideLines.Count; $i++)
176 | {
177 | # code formatting
178 | if ($guideLines[$i] -match '^###$')
179 | {
180 | $guideLines[$i] = ''
181 | }
182 |
183 | # bold formatting
184 | if ($guideLines[$i] -match '\*\*')
185 | {
186 | $guideLines[$i] = $guideLines[$i] -replace "\*\*(.*)?\*\*", "@{b}`$1@{ub}"
187 | }
188 |
189 | # header formatting
190 | if ($guideLines[$i] -match '^[#]+\s+(.+)')
191 | {
192 | $headerName = $guideLines[$i] | Select-String -Pattern "^#+\s+(.+)" -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[1].Value.Trim() } | Select-Object -First 1
193 | $headerId = CalculateMd5 $headerName
194 |
195 | if ($headerName -eq $title)
196 | {
197 | $guideLines[$i] = $guideLines[$i] -replace "^#+\s+(.+)", "@node Main ""`$1"""
198 | }
199 | else
200 | {
201 | $guideLines[$i] = $guideLines[$i] -replace "^#+\s+(.+)", "@endnode`n@node $headerId ""`$1"""
202 | }
203 |
204 | # add sub node index, if present
205 | if ($subNodeIndex)
206 | {
207 | $guideLines[$i] = "$subNodeIndex`n`n" + $guideLines[$i]
208 | }
209 |
210 | # build sub node index, if header name is equal to title or has sub headers
211 | if ($headerName -eq $title)
212 | {
213 | $subNodeIndex = ($headers | Where-Object { $_.Name -ne $title }| ForEach-Object { "{0}@{{""{1}"" link {2}}}" -f ((1..$_.Level | Where-Object { $_ -gt 2 } | ForEach-Object { " " }) -Join ''), $_.Name, $_.Id }) -join "`n"
214 | }
215 | elseif ($subHeaderIndex.ContainsKey($headerId))
216 | {
217 | $subNodeIndex = ($subHeaderIndex[$headerId] | ForEach-Object { "@{{""{0}"" link {1}}}" -f $headerNamesIndex[$_], $_ }) -join "`n"
218 | }
219 | else
220 | {
221 | $subNodeIndex = $null
222 | }
223 | }
224 |
225 | # convert image references
226 | if ($guideLines[$i] -match '!\[[^\[\]]+\]\([^\(\)]+\.png[^\)]+\)')
227 | {
228 | $guideLines[$i] = $guideLines[$i] -replace '!\[([^\[\]]+)\]\(([^\(\)]+)\.png[^\)]+\)', '@{"$1" SYSTEM "multiview $2.iff"}'
229 | }
230 | }
231 |
232 | return $guideLines
233 | }
234 |
235 | # get image magick directory from program files
236 | $imageMagickDirectory = Get-ChildItem $env:ProgramW6432 | Where-Object { $_.Name -match 'ImageMagick' } | Select-Object -First 1
237 |
238 | # fail, if image magick directory doesn't exist
239 | if (!$imageMagickDirectory)
240 | {
241 | Write-Error "Error: Image Magick doesn't exist in program files '$env:ProgramW6432'!"
242 | exit 1
243 | }
244 |
245 | # image magick v7 file
246 | $imageMagickFile = Join-Path -Path $imageMagickDirectory.FullName -ChildPath 'magick.exe'
247 |
248 | # check if image magick v6 file exist, if image magick v7 doesn't exist
249 | if (!(Test-Path -path $imageMagickFile))
250 | {
251 | $imageMagickFile = Join-Path -Path $imageMagickDirectory.FullName -ChildPath 'convert.exe'
252 |
253 | if (!(Test-Path -path $imageMagickFile))
254 | {
255 | Write-Error "Error: Image Magick 'magick.exe' or 'convert.exe' file doesn't exist!"
256 | exit 1
257 | }
258 | }
259 |
260 |
261 | # get xnview directory from program files x86
262 | $xnViewDirectory = Get-ChildItem ${Env:ProgramFiles(x86)} | Where-Object { $_.Name -match 'XnView' } | Select-Object -First 1
263 |
264 | # fail, if xnview directory doesn't exist
265 | if (!$xnViewDirectory)
266 | {
267 | Write-Error "Error: XnView doesn't exist in program files '${Env:ProgramFiles(x86)}'!"
268 | exit 1
269 | }
270 |
271 | # xnview nconvert file
272 | $xnViewNconvertFile = Join-Path -Path $xnViewDirectory.FullName -ChildPath 'nconvert.exe'
273 |
274 | # fail, if xnview nconvert file doesn't exist
275 | if (!(Test-Path -path $xnViewNconvertFile))
276 | {
277 | Write-Error "Error: XnView nconvert file '$xnViewNconvertFile' doesn't exist!"
278 | exit 1
279 | }
280 |
281 |
282 | # paths
283 | $tempFile = [System.IO.Path]::Combine($env:TEMP, "build_guide_" + [System.IO.Path]::GetRandomFileName())
284 | $guideDir = Split-Path $guideFile -Parent
285 | $guideFileName = Split-Path $guideFile -Leaf
286 |
287 |
288 | # convert images
289 | ConvertImages $markdownFile $guideDir
290 |
291 |
292 | # build guide lines from markdown file
293 | $guideLines = BuildGuideLines $markdownFile $guideFileName
294 |
295 |
296 | # write guide lines to guide file
297 | WriteAmigaTextLines $guideFile $guideLines
298 |
299 |
300 | # delete temp file, if it exists
301 | if (test-path -path $tempFile)
302 | {
303 | Remove-Item $tempFile -Force
304 | }
--------------------------------------------------------------------------------
/tools/convert_zip_to_amiga.ps1:
--------------------------------------------------------------------------------
1 | # Convert Zip To Amiga
2 | # --------------------
3 | #
4 | # Author: Henrik Nørfjand Stengaard
5 | # Date: 2018-02-20
6 | #
7 | # A PowerShell script to convert a zip file to Amiga.
8 | #
9 | # This is done by changing only zip file entries version made by to 279 (Amiga) and
10 | # external file attributes with protection bits for amiga file system.
11 | # Protection bits are set to '----RWED' using external file attributes,
12 | # which is 135200784 for directories and 68091904 for files.
13 | #
14 | # The converted zip file now appears as if it was created on an Amiga and
15 | # can successfully be extracted with system files.
16 | #
17 | # For unzip to work properly on Amiga, the zip file must contain directory
18 | # entries for all directories and not just empty directories to be compatible.
19 | #
20 | # Use either 7-Zip, WinRar, Windows build-in zip compression or create_zip_from_directory.ps1
21 | # script to create a compatible zip file.
22 | #
23 | # http://www.java2s.com/Code/CSharp/File-Stream/Thisclassreadsandwriteszipfiles.htm
24 | # https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html
25 |
26 |
27 | Param(
28 | [Parameter(Mandatory=$true)]
29 | [string]$zipFile,
30 | [Parameter(Mandatory=$true)]
31 | [string]$outputZipFile
32 | )
33 |
34 |
35 | # header signatures
36 | $localFileHeaderSignature = 0x04034b50
37 | $centralDirectoryFileHeaderSignature = 0x02014b50
38 | $endCentralDirectoryFileHeaderSignature = 0x06054b50
39 |
40 | # Protection bits are flags that files, links and directories have in the filesystem. To change them one can either use the command Protect, or use the Information entry from the Icons menu in Workbench on selected files. AmigaDOS supports the following set of protection bits (abbreviated as HSPARWED):
41 |
42 | # H = Hold (reentrant commands with the P-bit set will automatically become resident on first execution. Requires E, P and R bits set to work. Does not mean "Hide". See below.)
43 | # S = Script (Batch file. Requires E and R bits set to work.) If this protection bit is set on, then AmigaDOS is able to recognize and automatically run a script by simply invoking its name. Without S bit scripts can still be launched using the Execute command.
44 | # P = Pure (indicates reentrant commands that can be made resident in RAM and then no longer need to be loaded any time from flash drives, hard disks or any other media device. Requires E and R bits set to work.)
45 | # A = Archive (Archived bit, used by various backup programs to indicate that a file has been backed up)
46 | # R = Read (Permission to read the file, link or content of directory)
47 | # W = Write (Permission to write the file, link or inside a directory)
48 | # E = Execute (Permission to execute the file or enter the directory. All commands need this bit set, or they won't run. Requires R bit set to work.)
49 | # D = Delete (Permission to delete the file, link or directory)
50 |
51 | # # add file attribute enum type
52 | # Add-Type -TypeDefinition @"
53 | # [System.Flags]
54 | # public enum FileAttributeEnum
55 | # {
56 | # Read = 1,
57 | # Write = 2
58 | # }
59 | # "@
60 |
61 | # read local file entry from binary reader
62 | function ReadLocalFileEntry($binaryReader)
63 | {
64 | $version = $binaryReader.ReadUInt16()
65 | $flags = $binaryReader.ReadUInt16()
66 | $method = $binaryReader.ReadUInt16()
67 | $fileModificationTime = $binaryReader.ReadUInt16()
68 | $fileModificationDate = $binaryReader.ReadUInt16()
69 | $crc32 = $binaryReader.ReadUInt32()
70 | $compressedSize = $binaryReader.ReadUInt32()
71 | $uncompressedSize = $binaryReader.ReadUInt32()
72 | $fileNameLength = $binaryReader.ReadUInt16()
73 | $extraFieldLength = $binaryReader.ReadUInt16()
74 | $fileNameBytes = $binaryReader.ReadBytes($fileNameLength)
75 | $extraFieldBytes = $binaryReader.ReadBytes($extraFieldLength)
76 |
77 | return New-Object PSObject -Property @{
78 | 'Version' = $version;
79 | 'Flags' = $flags;
80 | 'Method' = $method;
81 | 'FileModificationTime' = $fileModificationTime;
82 | 'FileModificationDate' = $fileModificationDate;
83 | 'Crc32' = $crc32;
84 | 'CompressedSize' = $compressedSize;
85 | 'UncompressedSize' = $uncompressedSize;
86 | 'FileNameBytes' = $fileNameBytes;
87 | 'ExtraFieldBytes' = $extraFieldBytes
88 | }
89 | }
90 |
91 | # write local file entry to binary writer
92 | function WriteLocalFileEntry($binaryWriter, $localFileEntry)
93 | {
94 | $binaryWriter.Write([UInt32]$localFileHeaderSignature)
95 | $binaryWriter.Write([UInt16]$localFileEntry.Version)
96 | $binaryWriter.Write([UInt16]$localFileEntry.Flags)
97 | $binaryWriter.Write([UInt16]$localFileEntry.Method)
98 | $binaryWriter.Write([UInt16]$localFileEntry.FileModificationTime)
99 | $binaryWriter.Write([UInt16]$localFileEntry.FileModificationDate)
100 | $binaryWriter.Write([UInt32]$localFileEntry.Crc32)
101 | $binaryWriter.Write([UInt32]$localFileEntry.CompressedSize)
102 | $binaryWriter.Write([UInt32]$localFileEntry.UncompressedSize)
103 | $binaryWriter.Write([UInt16]$localFileEntry.FileNameBytes.Count)
104 | $binaryWriter.Write([UInt16]$localFileEntry.ExtraFieldBytes.Count)
105 |
106 | if ($localFileEntry.FileNameBytes.Count -gt 0)
107 | {
108 | $binaryWriter.Write($localFileEntry.FileNameBytes)
109 | }
110 |
111 | if ($localFileEntry.ExtraFieldBytes.Count -gt 0)
112 | {
113 | $binaryWriter.Write($localFileEntry.ExtraFieldBytes)
114 | }
115 | }
116 |
117 | # copy bytes from binary reader to binary writer
118 | function CopyBytes($binaryReader, $binaryWriter, $count)
119 | {
120 | [byte[]]$buffer = new-object byte[] 4096
121 | $offset = 0
122 | do{
123 | if ($offset + $buffer.Count -gt $count)
124 | {
125 | $length = $count - $offset
126 | }
127 | else
128 | {
129 | $length = $buffer.Count
130 | }
131 | $result = $binaryReader.BaseStream.Read($buffer, 0, $length)
132 | $binaryWriter.BaseStream.Write($buffer, 0, $result)
133 | $offset += $result
134 | } while($result -eq $length -and $offset -lt $count)
135 | }
136 |
137 | # read central directory file entry from binary reader
138 | function ReadCentralDirectoryFileEntry($binaryReader)
139 | {
140 | $versionMadeBy = $binaryReader.ReadUInt16()
141 | $version = $binaryReader.ReadUInt16()
142 | $flags = $binaryReader.ReadUInt16()
143 | $method = $binaryReader.ReadUInt16()
144 | $fileModificationTime = $binaryReader.ReadUInt16()
145 | $fileModificationDate = $binaryReader.ReadUInt16()
146 | $crc32 = $binaryReader.ReadUInt32()
147 | $compressedSize = $binaryReader.ReadUInt32()
148 | $uncompressedSize = $binaryReader.ReadUInt32()
149 | $fileNameLength = $binaryReader.ReadUInt16()
150 | $extraFieldLength = $binaryReader.ReadUInt16()
151 | $fileCommentLength = $binaryReader.ReadUInt16()
152 | $diskNumber = $binaryReader.ReadUInt16()
153 | $internalFileAttributes = $binaryReader.ReadUInt16()
154 | $externalFileAttributes = $binaryReader.ReadUInt32()
155 | $dataOffset = $binaryReader.ReadUInt32()
156 | $fileNameBytes = $binaryReader.ReadBytes($fileNameLength)
157 | $extraFieldBytes = $binaryReader.ReadBytes($extraFieldLength)
158 | $fileCommentBytes = $binaryReader.ReadBytes($fileCommentLength)
159 |
160 | return New-Object PSObject -Property @{
161 | 'VersionMadeBy' = $versionMadeBy;
162 | 'Version' = $version;
163 | 'Flags' = $flags;
164 | 'Method' = $method;
165 | 'FileModificationTime' = $fileModificationTime;
166 | 'FileModificationDate' = $fileModificationDate;
167 | 'Crc32' = $crc32;
168 | 'CompressedSize' = $compressedSize;
169 | 'UncompressedSize' = $uncompressedSize;
170 | 'FileNameBytes' = $fileNameBytes;
171 | 'ExtraFieldBytes' = $extraFieldBytes;
172 | 'FileCommentBytes' = $fileCommentBytes;
173 | 'DiskNumber' = $diskNumber;
174 | 'InternalFileAttributes' = $internalFileAttributes;
175 | 'ExternalFileAttributes' = $externalFileAttributes;
176 | 'DataOffset' = $dataOffset
177 | }
178 | }
179 |
180 | # write central directory file entry
181 | function WriteCentralDirectoryFileEntry($binaryWriter, $centralDirectoryFileEntry)
182 | {
183 | $binaryWriter.Write([UInt32]$centralDirectoryFileHeaderSignature)
184 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.VersionMadeBy)
185 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.Version)
186 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.Flags)
187 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.Method)
188 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.FileModificationTime)
189 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.FileModificationDate)
190 | $binaryWriter.Write([UInt32]$centralDirectoryFileEntry.Crc32)
191 | $binaryWriter.Write([UInt32]$centralDirectoryFileEntry.CompressedSize)
192 | $binaryWriter.Write([UInt32]$centralDirectoryFileEntry.UncompressedSize)
193 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.FileNameBytes.Count)
194 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.ExtraFieldBytes.Count)
195 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.FileCommentBytes.Count)
196 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.DiskNumber)
197 | $binaryWriter.Write([UInt16]$centralDirectoryFileEntry.InternalFileAttributes)
198 | $binaryWriter.Write([UInt32]$centralDirectoryFileEntry.ExternalFileAttributes)
199 | $binaryWriter.Write([UInt32]$centralDirectoryFileEntry.DataOffset)
200 |
201 | if ($centralDirectoryFileEntry.FileNameBytes.Count -gt 0)
202 | {
203 | $binaryWriter.Write($centralDirectoryFileEntry.FileNameBytes)
204 | }
205 |
206 | if ($centralDirectoryFileEntry.ExtraFieldBytes.Count -gt 0)
207 | {
208 | $binaryWriter.Write($centralDirectoryFileEntry.ExtraFieldBytes)
209 | }
210 |
211 | if ($centralDirectoryFileEntry.FileCommentBytes.Count -gt 0)
212 | {
213 | $binaryWriter.Write($centralDirectoryFileEntry.FileCommentBytes)
214 | }
215 | }
216 |
217 | # read central directory end entry from binary reader
218 | function ReadCentralDirectoryEndEntry($binaryReader)
219 | {
220 | $diskNumber = $binaryReader.ReadUInt16()
221 | $diskCentralStart = $binaryReader.ReadUInt16()
222 | $numberOfCentralsStored = $binaryReader.ReadUInt16()
223 | $totalNumberOfCentralDirectories = $binaryReader.ReadUInt16()
224 | $sizeOfCentralDirectory = $binaryReader.ReadUInt32()
225 | $offsetCentralDirectoryStart = $binaryReader.ReadUInt32()
226 | $commentLength = $binaryReader.ReadUInt16()
227 | $commentBytes = $binaryReader.ReadBytes($commentLength)
228 |
229 | return New-Object PSObject -Property @{
230 | 'DiskNumber' = $diskNumber;
231 | 'DiskCentralStart' = $diskCentralStart;
232 | 'NumberOfCentralsStored' = $numberOfCentralsStored;
233 | 'TotalNumberOfCentralDirectories' = $totalNumberOfCentralDirectories;
234 | 'SizeOfCentralDirectory' = $sizeOfCentralDirectory;
235 | 'OffsetCentralDirectoryStart' = $offsetCentralDirectoryStart;
236 | 'CommentBytes' = $commentBytes;
237 | }
238 | }
239 |
240 | # write central directory end entry to binary writer
241 | function WriteCentralDirectoryEndEntry($binaryWriter, $centralDirectoryEndEntry)
242 | {
243 | $binaryWriter.Write([UInt32]$endCentralDirectoryFileHeaderSignature)
244 | $binaryWriter.Write([UInt16]$centralDirectoryEndEntry.DiskNumber)
245 | $binaryWriter.Write([UInt16]$centralDirectoryEndEntry.DiskCentralStart)
246 | $binaryWriter.Write([UInt16]$centralDirectoryEndEntry.NumberOfCentralsStored)
247 | $binaryWriter.Write([UInt16]$centralDirectoryEndEntry.TotalNumberOfCentralDirectories)
248 | $binaryWriter.Write([UInt32]$centralDirectoryEndEntry.SizeOfCentralDirectory)
249 | $binaryWriter.Write([UInt32]$centralDirectoryEndEntry.OffsetCentralDirectoryStart)
250 | $binaryWriter.Write([UInt16]$centralDirectoryEndEntry.CommentBytes.Count)
251 |
252 | if ($centralDirectoryEndEntry.CommentBytes.Count -gt 0)
253 | {
254 | $binaryWriter.Write($centralDirectoryEndEntry.CommentBytes)
255 | }
256 | }
257 |
258 | # convert zip to amiga
259 | function ConvertZipToAmiga($zipFile, $outputZipFile)
260 | {
261 | $zipFileStream = New-Object System.IO.FileStream $zipFile, 'Open', 'Read', 'Read'
262 | $zipFileBinaryReader = New-Object System.IO.BinaryReader($zipFileStream)
263 |
264 | $outputZipFileStream = New-Object System.IO.FileStream $outputZipFile, 'Create', 'Write', 'Write'
265 | $outputZipFileBinaryWriter = New-Object System.IO.BinaryWriter($outputZipFileStream)
266 |
267 | $invalidSignature = $false
268 | $encoding = [system.Text.Encoding]::UTF8
269 |
270 | do
271 | {
272 | $signature = $zipFileBinaryReader.ReadInt32()
273 |
274 | if ($signature -eq $localFileHeaderSignature)
275 | {
276 | $localFileEntry = ReadLocalFileEntry $zipFileBinaryReader
277 |
278 | WriteLocalFileEntry $outputZipFileBinaryWriter $localFileEntry
279 |
280 | if ($localFileEntry.CompressedSize -gt 0)
281 | {
282 | CopyBytes $zipFileBinaryReader $outputZipFileBinaryWriter $localFileEntry.CompressedSize
283 | }
284 | }
285 | elseif ($signature -eq $centralDirectoryFileHeaderSignature)
286 | {
287 | $centralDirectoryFileEntry = ReadCentralDirectoryFileEntry $zipFileBinaryReader
288 |
289 | $fileName = $encoding.GetString($centralDirectoryFileEntry.FileNameBytes)
290 |
291 | # External File Attribute, Hex Value, Example files:
292 | # 136249360, 81F0010, 'Utilities/'
293 | # 135200784, 80F0010, 'WBStartup/'
294 | # 76480512, 48F0000, 'Programs/Configuration/guigfx_render_fpu/guigfx.library' (hidden), 'Programs/ProTracker/ProTracker-3.15.info', 'Programs/Visage/Catalogs/+e�tina/visage.catalog'
295 | # 70189056, 42F0000, 'Programs/DPaintIV/Dpaint','Programs/DirOpus4/c/Date'
296 | # 68091904, 40F0000, 'WBStartup/AtLast', 'Storage/DOSDrivers/BootRamDrive', 'MyFiles/LargeHD/128GB_Support/SCSI_v43_45_ChrisToni/A4000TSCSI.scsi.device.43.45'
297 | # 67960832, 40D0000, 'Devs/Printers.info'
298 |
299 | # Devs/Monitors/ = 135200784 = --------
300 |
301 | # 136249360 = directory?
302 | # 135200784 = directory?
303 | # 76480512 = H---RWED
304 | # 70189056 = --P-RWED
305 | # 68091904 = ----RWED
306 | # 67960832 = ----RW-D
307 |
308 | $centralDirectoryFileEntry.VersionMadeBy = 279
309 |
310 | if ($fileName -match '/$')
311 | {
312 | $centralDirectoryFileEntry.ExternalFileAttributes = 135200784
313 | }
314 | else
315 | {
316 | $centralDirectoryFileEntry.ExternalFileAttributes = 68091904
317 | }
318 |
319 | WriteCentralDirectoryFileEntry $outputZipFileBinaryWriter $centralDirectoryFileEntry
320 | }
321 | elseif ($signature -eq $endCentralDirectoryFileHeaderSignature)
322 | {
323 | $centralDirectoryEndEntry = ReadCentralDirectoryEndEntry $zipFileBinaryReader
324 | WriteCentralDirectoryEndEntry $outputZipFileBinaryWriter $centralDirectoryEndEntry
325 | }
326 | else
327 | {
328 | Write-Error ("Unknown signature '{0}' at position '{1}' in file '{2}'" -f $signature, $zipFileBinaryReader.BaseStream.Position - 4, $zipFile)
329 | $invalidSignature = $true
330 | break
331 | }
332 | }
333 | while ($signature -eq $localFileHeaderSignature -or $signature -eq $centralDirectoryFileHeaderSignature)
334 |
335 | # close and dispose binary reader and writer
336 | $outputZipFileBinaryWriter.Close()
337 | $outputZipFileBinaryWriter.Dispose()
338 | $zipFileBinaryReader.Close()
339 | $zipFileBinaryReader.Dispose()
340 |
341 | # close and dispose streams
342 | $outputZipFileStream.Close()
343 | $outputZipFileStream.Dispose()
344 | $zipFileStream.Close()
345 | $zipFileStream.Dispose()
346 |
347 | if ($invalidSignature)
348 | {
349 | exit 1
350 | }
351 | }
352 |
353 | ConvertZipToAmiga $zipFile $outputZipFile
--------------------------------------------------------------------------------
/tools/github-pandoc.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v2.1.3 | MIT License | git.io/normalize */
2 |
3 | /* ==========================================================================
4 | HTML5 display definitions
5 | ========================================================================== */
6 |
7 | /**
8 | * Correct `block` display not defined in IE 8/9.
9 | */
10 |
11 | article,
12 | aside,
13 | details,
14 | figcaption,
15 | figure,
16 | footer,
17 | header,
18 | hgroup,
19 | main,
20 | nav,
21 | section,
22 | summary {
23 | display: block;
24 | }
25 |
26 | /**
27 | * Correct `inline-block` display not defined in IE 8/9.
28 | */
29 |
30 | audio,
31 | canvas,
32 | video {
33 | display: inline-block;
34 | }
35 |
36 | /**
37 | * Prevent modern browsers from displaying `audio` without controls.
38 | * Remove excess height in iOS 5 devices.
39 | */
40 |
41 | audio:not([controls]) {
42 | display: none;
43 | height: 0;
44 | }
45 |
46 | /**
47 | * Address `[hidden]` styling not present in IE 8/9.
48 | * Hide the `template` element in IE, Safari, and Firefox < 22.
49 | */
50 |
51 | [hidden],
52 | template {
53 | display: none;
54 | }
55 |
56 | /* ==========================================================================
57 | Base
58 | ========================================================================== */
59 |
60 | /**
61 | * 1. Set default font family to sans-serif.
62 | * 2. Prevent iOS text size adjust after orientation change, without disabling
63 | * user zoom.
64 | */
65 |
66 | html {
67 | font-family: sans-serif; /* 1 */
68 | -ms-text-size-adjust: 100%; /* 2 */
69 | -webkit-text-size-adjust: 100%; /* 2 */
70 | }
71 |
72 | /**
73 | * Remove default margin.
74 | */
75 |
76 | body {
77 | margin: 0;
78 | }
79 |
80 | /* ==========================================================================
81 | Links
82 | ========================================================================== */
83 |
84 | /**
85 | * Remove the gray background color from active links in IE 10.
86 | */
87 |
88 | a {
89 | background: transparent;
90 | }
91 |
92 | /**
93 | * Address `outline` inconsistency between Chrome and other browsers.
94 | */
95 |
96 | a:focus {
97 | outline: thin dotted;
98 | }
99 |
100 | /**
101 | * Improve readability when focused and also mouse hovered in all browsers.
102 | */
103 |
104 | a:active,
105 | a:hover {
106 | outline: 0;
107 | }
108 |
109 | /* ==========================================================================
110 | Typography
111 | ========================================================================== */
112 |
113 | /**
114 | * Address variable `h1` font-size and margin within `section` and `article`
115 | * contexts in Firefox 4+, Safari 5, and Chrome.
116 | */
117 |
118 | h1 {
119 | font-size: 2em;
120 | margin: 0.67em 0;
121 | }
122 |
123 | /**
124 | * Address styling not present in IE 8/9, Safari 5, and Chrome.
125 | */
126 |
127 | abbr[title] {
128 | border-bottom: 1px dotted;
129 | }
130 |
131 | /**
132 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
133 | */
134 |
135 | b,
136 | strong {
137 | font-weight: bold;
138 | }
139 |
140 | /**
141 | * Address styling not present in Safari 5 and Chrome.
142 | */
143 |
144 | dfn {
145 | font-style: italic;
146 | }
147 |
148 | /**
149 | * Address differences between Firefox and other browsers.
150 | */
151 |
152 | hr {
153 | -moz-box-sizing: content-box;
154 | box-sizing: content-box;
155 | height: 0;
156 | }
157 |
158 | /**
159 | * Address styling not present in IE 8/9.
160 | */
161 |
162 | mark {
163 | background: #ff0;
164 | color: #000;
165 | }
166 |
167 | /**
168 | * Correct font family set oddly in Safari 5 and Chrome.
169 | */
170 |
171 | code,
172 | kbd,
173 | pre,
174 | samp {
175 | font-family: monospace, serif;
176 | font-size: 1em;
177 | }
178 |
179 | /**
180 | * Improve readability of pre-formatted text in all browsers.
181 | */
182 |
183 | pre {
184 | white-space: pre-wrap;
185 | }
186 |
187 | /**
188 | * Set consistent quote types.
189 | */
190 |
191 | q {
192 | quotes: "\201C" "\201D" "\2018" "\2019";
193 | }
194 |
195 | /**
196 | * Address inconsistent and variable font size in all browsers.
197 | */
198 |
199 | small {
200 | font-size: 80%;
201 | }
202 |
203 | /**
204 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
205 | */
206 |
207 | sub,
208 | sup {
209 | font-size: 75%;
210 | line-height: 0;
211 | position: relative;
212 | vertical-align: baseline;
213 | }
214 |
215 | sup {
216 | top: -0.5em;
217 | }
218 |
219 | sub {
220 | bottom: -0.25em;
221 | }
222 |
223 | /* ==========================================================================
224 | Embedded content
225 | ========================================================================== */
226 |
227 | /**
228 | * Remove border when inside `a` element in IE 8/9.
229 | */
230 |
231 | img {
232 | border: 0;
233 | }
234 |
235 | /**
236 | * Correct overflow displayed oddly in IE 9.
237 | */
238 |
239 | svg:not(:root) {
240 | overflow: hidden;
241 | }
242 |
243 | /* ==========================================================================
244 | Figures
245 | ========================================================================== */
246 |
247 | /**
248 | * Address margin not present in IE 8/9 and Safari 5.
249 | */
250 |
251 | figure {
252 | margin: 0;
253 | }
254 |
255 | /* ==========================================================================
256 | Forms
257 | ========================================================================== */
258 |
259 | /**
260 | * Define consistent border, margin, and padding.
261 | */
262 |
263 | fieldset {
264 | border: 1px solid #c0c0c0;
265 | margin: 0 2px;
266 | padding: 0.35em 0.625em 0.75em;
267 | }
268 |
269 | /**
270 | * 1. Correct `color` not being inherited in IE 8/9.
271 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
272 | */
273 |
274 | legend {
275 | border: 0; /* 1 */
276 | padding: 0; /* 2 */
277 | }
278 |
279 | /**
280 | * 1. Correct font family not being inherited in all browsers.
281 | * 2. Correct font size not being inherited in all browsers.
282 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
283 | */
284 |
285 | button,
286 | input,
287 | select,
288 | textarea {
289 | font-family: inherit; /* 1 */
290 | font-size: 100%; /* 2 */
291 | margin: 0; /* 3 */
292 | }
293 |
294 | /**
295 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
296 | * the UA stylesheet.
297 | */
298 |
299 | button,
300 | input {
301 | line-height: normal;
302 | }
303 |
304 | /**
305 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
306 | * All other form control elements do not inherit `text-transform` values.
307 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
308 | * Correct `select` style inheritance in Firefox 4+ and Opera.
309 | */
310 |
311 | button,
312 | select {
313 | text-transform: none;
314 | }
315 |
316 | /**
317 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
318 | * and `video` controls.
319 | * 2. Correct inability to style clickable `input` types in iOS.
320 | * 3. Improve usability and consistency of cursor style between image-type
321 | * `input` and others.
322 | */
323 |
324 | button,
325 | html input[type="button"], /* 1 */
326 | input[type="reset"],
327 | input[type="submit"] {
328 | -webkit-appearance: button; /* 2 */
329 | cursor: pointer; /* 3 */
330 | }
331 |
332 | /**
333 | * Re-set default cursor for disabled elements.
334 | */
335 |
336 | button[disabled],
337 | html input[disabled] {
338 | cursor: default;
339 | }
340 |
341 | /**
342 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
343 | * 2. Remove excess padding in IE 8/9/10.
344 | */
345 |
346 | input[type="checkbox"],
347 | input[type="radio"] {
348 | box-sizing: border-box; /* 1 */
349 | padding: 0; /* 2 */
350 | }
351 |
352 | /**
353 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
354 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
355 | * (include `-moz` to future-proof).
356 | */
357 |
358 | input[type="search"] {
359 | -webkit-appearance: textfield; /* 1 */
360 | -moz-box-sizing: content-box;
361 | -webkit-box-sizing: content-box; /* 2 */
362 | box-sizing: content-box;
363 | }
364 |
365 | /**
366 | * Remove inner padding and search cancel button in Safari 5 and Chrome
367 | * on OS X.
368 | */
369 |
370 | input[type="search"]::-webkit-search-cancel-button,
371 | input[type="search"]::-webkit-search-decoration {
372 | -webkit-appearance: none;
373 | }
374 |
375 | /**
376 | * Remove inner padding and border in Firefox 4+.
377 | */
378 |
379 | button::-moz-focus-inner,
380 | input::-moz-focus-inner {
381 | border: 0;
382 | padding: 0;
383 | }
384 |
385 | /**
386 | * 1. Remove default vertical scrollbar in IE 8/9.
387 | * 2. Improve readability and alignment in all browsers.
388 | */
389 |
390 | textarea {
391 | overflow: auto; /* 1 */
392 | vertical-align: top; /* 2 */
393 | }
394 |
395 | /* ==========================================================================
396 | Tables
397 | ========================================================================== */
398 |
399 | /**
400 | * Remove most spacing between table cells.
401 | */
402 |
403 | table {
404 | border-collapse: collapse;
405 | border-spacing: 0;
406 | }
407 |
408 | .go-top {
409 | position: fixed;
410 | bottom: 2em;
411 | right: 2em;
412 | text-decoration: none;
413 | background-color: #E0E0E0;
414 | font-size: 12px;
415 | padding: 1em;
416 | display: inline;
417 | }
418 |
419 | /* Github css */
420 |
421 | html,body{ margin: auto;
422 | padding-right: 1em;
423 | padding-left: 1em;
424 | max-width: 44em; color:black;}*:not('#mkdbuttons'){margin:0;padding:0}body{font:13.34px helvetica,arial,freesans,clean,sans-serif;-webkit-font-smoothing:subpixel-antialiased;line-height:1.4;padding:3px;background:#fff;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}p{margin:1em 0}a{color:#4183c4;text-decoration:none}body{background-color:#fff;padding:30px;margin:15px;font-size:14px;line-height:1.6}body>*:first-child{margin-top:0!important}body>*:last-child{margin-bottom:0!important}@media screen{body{box-shadow:0 0 0 1px #cacaca,0 0 0 4px #eee}}h1,h2,h3,h4,h5,h6{margin:20px 0 10px;padding:0;font-weight:bold;-webkit-font-smoothing:subpixel-antialiased;cursor:text}h1{font-size:28px;color:#000}h2{font-size:24px;border-bottom:1px solid #ccc;color:#000}h3{font-size:18px;color:#333}h4{font-size:16px;color:#333}h5{font-size:14px;color:#333}h6{color:#777;font-size:14px}p,blockquote,table,pre{margin:15px 0}ul{padding-left:30px}ol{padding-left:30px}ol li ul:first-of-type{margin-top:0}hr{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0}body>h2:first-child{margin-top:0;padding-top:0}body>h1:first-child{margin-top:0;padding-top:0}body>h1:first-child+h2{margin-top:0;padding-top:0}body>h3:first-child,body>h4:first-child,body>h5:first-child,body>h6:first-child{margin-top:0;padding-top:0}a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6{margin-top:0;padding-top:0}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p,ul li>:first-child,ol li>:first-child{margin-top:0}dl{padding:0}dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}dl dt:first-child{padding:0}dl dt>:first-child{margin-top:0}dl dt>:last-child{margin-bottom:0}dl dd{margin:0 0 15px;padding:0 15px}dl dd>:first-child{margin-top:0}dl dd>:last-child{margin-bottom:0}blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}table{border-collapse:collapse;border-spacing:0;font-size:100%;font:inherit}table th{font-weight:bold;border:1px solid #ccc;padding:6px 13px}table td{border:1px solid #ccc;padding:6px 13px}table tr{border-top:1px solid #ccc;background-color:#fff}table tr:nth-child(2n){background-color:#f8f8f8}img{max-width:100%}code,tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px;font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;color:#333}pre>code{margin:0;padding:0;white-space:pre;border:0;background:transparent}.highlight pre{background-color:#f8f8f8;border:1px solid #ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}pre{background-color:#f8f8f8;border:1px solid #ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}pre code,pre tt{background-color:transparent;border:0}.poetry pre{font-family:Georgia,Garamond,serif!important;font-style:italic;font-size:110%!important;line-height:1.6em;display:block;margin-left:1em}.poetry pre code{font-family:Georgia,Garamond,serif!important;word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;white-space:pre-wrap}sup,sub,a.footnote{font-size:1.4ex;height:0;line-height:1;vertical-align:super;position:relative}sub{vertical-align:sub;top:-1px}@media print{body{background:#fff}img,pre,blockquote,table,figure{page-break-inside:avoid}body{background:#fff;border:0}code{background-color:#fff;color:#333!important;padding:0 .2em;border:1px solid #dedede}pre{background:#fff}pre code{background-color:white!important;overflow:visible}}@media screen{body.inverted{color:#eee!important;border-color:#555;box-shadow:none}.inverted body,.inverted hr .inverted p,.inverted td,.inverted li,.inverted h1,.inverted h2,.inverted h3,.inverted h4,.inverted h5,.inverted h6,.inverted th,.inverted .math,.inverted caption,.inverted dd,.inverted dt,.inverted blockquote{color:#eee!important;border-color:#555;box-shadow:none}.inverted td,.inverted th{background:#333}.inverted h2{border-color:#555}.inverted hr{border-color:#777;border-width:1px!important}::selection{background:rgba(157,193,200,0.5)}h1::selection{background-color:rgba(45,156,208,0.3)}h2::selection{background-color:rgba(90,182,224,0.3)}h3::selection,h4::selection,h5::selection,h6::selection,li::selection,ol::selection{background-color:rgba(133,201,232,0.3)}code::selection{background-color:rgba(0,0,0,0.7);color:#eee}code span::selection{background-color:rgba(0,0,0,0.7)!important;color:#eee!important}a::selection{background-color:rgba(255,230,102,0.2)}.inverted a::selection{background-color:rgba(255,230,102,0.6)}td::selection,th::selection,caption::selection{background-color:rgba(180,237,95,0.5)}.inverted{background:#0b2531;background:#252a2a}.inverted body{background:#252a2a}.inverted a{color:#acd1d5}}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k,.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne,.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc,.highlight .vg,.highlight .vi{color:#008080}.highlight .il{color:#099}.highlight .gc{color:#999;background-color:#eaf2f5}.type-csharp .highlight .k,.type-csharp .highlight .kt{color:#00F}.type-csharp .highlight .nf{color:#000;font-weight:normal}.type-csharp .highlight .nc{color:#2b91af}.type-csharp .highlight .nn{color:#000}.type-csharp .highlight .s,.type-csharp .highlight .sc{color:#a31515}
425 |
--------------------------------------------------------------------------------