├── 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 | --------------------------------------------------------------------------------