diff --git a/README b/README index d6c19e5..233e8c2 100644 --- a/README +++ b/README @@ -10,7 +10,7 @@ It is provided under the MIT license, reproduced below: --- -Ophis, Copyright (C) 2002-2010 Michael Martin and contributors +Ophis, Copyright (C) 2002-2012 Michael Martin and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/examples/hello_nes/README.txt b/examples/hello_nes/README.txt new file mode 100644 index 0000000..1ec2cf8 --- /dev/null +++ b/examples/hello_nes/README.txt @@ -0,0 +1,26 @@ +This is a "Hello World" program for the Nintendo Entertainment System, +which uses the sprite system to display and color-cycle the letters. + +Since NES cartridges tended to have sophisticated circuitry built into them +that controlled memory addressing, several standards have arisen to represent +this information. The program code for "Hello, NES" is split into two halves; +a hello_prg.oph containing the executable code (PRG-ROM), and a hello_chr.oph +containing the graphics tile information (CHR-ROM). These can then be packaged +one of two ways - the popular iNES format (hello_ines.oph) or the +mostly-defunct UNIF format (hello_unif.oph). Simply running + +ophis hello_ines.oph + +or + +ophis hello_unif.oph + +should produce hello.nes and hello.unf, respectively. Although UNIF is not a +common format, its "chunk" system is not rare. The hello_unif.oph file +demonstrates some techniques for automatically computing chunk sizes in Ophis. + +Be warned that as these techniques use the program counter, attempting to use +labels to compute chunk size of assembled code is likely to backfire +spectacularly - this technique should really only be used for inline strings +and data. + diff --git a/examples/hi_stella/README.txt b/examples/hi_stella/README.txt new file mode 100644 index 0000000..db12274 --- /dev/null +++ b/examples/hi_stella/README.txt @@ -0,0 +1,7 @@ +"Hi Stella" is a simple "Hello World" program for the "Stella" chip, +more famously known as the Atari 2600. Simply running + +ophis hi_stella.oph + +should produce hi_stella.bin, a 256-byte file that prints "HI" on +the screen with some rolling color bars. diff --git a/platform/README.txt b/platform/README.txt new file mode 100644 index 0000000..ca183d6 --- /dev/null +++ b/platform/README.txt @@ -0,0 +1,27 @@ +This directory holds files likely to be of use to you in developing your own +programs. The contents of each file is summarized below. + + +c64_0.oph: A Commodore 64 equivalent to a modern compiler's "crt0.s" - it + contains a .PRG file header, a short BASIC program that launches + the machine language program, and a prologue and epilogue that + prepare memory for your use and then clean it up again when you + are done. Memory locations $02 through $7F on the zero page are + available for your use, and the program lives at the beginning + a contiguous block of RAM from $0800 through $CF81. The BASIC + ROM is swapped out of memory (leaving $A000-$BFFF as RAM) for + the duration of your program. + +c64kernal.oph: A collection of standard aliases for the KERNAL routines on the + Commodore 64. Names for these routines have been chosen to match + the Commodore 64 Programmer's Reference Guide. Additional useful + constants are defined for the character codes for color changes + and case-changing. + +nes.oph: A somewhat skeletal collection of aliases for the PPU registers + on the Nintendo Entertainment System. These names were chosen + to match the constant names given on the NESdev Wiki. + +stella.oph: A collection of aliases for the registers of the Atari 2600. + These names were taken from the "Stella Programmer's Guide" and + are in wide use amongst developers and code analysts alike. diff --git a/src/scripts/ophis.nsi b/src/scripts/ophis.nsi index 5964ff8..17fc526 100644 --- a/src/scripts/ophis.nsi +++ b/src/scripts/ophis.nsi @@ -2,9 +2,9 @@ ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "Ophis" -!define PRODUCT_VERSION "2.0 preview" +!define PRODUCT_VERSION "2.0" !define PRODUCT_PUBLISHER "Michael Martin" -!define PRODUCT_WEB_SITE "https://github.com/michaelcmartin/Ophis" +!define PRODUCT_WEB_SITE "https://michaelcmartin.github.com/Ophis" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\ophis.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" @@ -72,22 +72,34 @@ Section "Ophis" SEC01 File "..\dist\w9xpopen.exe" SetOutPath "$INSTDIR\examples" SetOverwrite try - File "..\..\doc\a2blink.map" - File "..\..\doc\a2inverse.map" - File "..\..\doc\a2normal.map" - File "..\..\doc\c64-1.oph" - File "..\..\doc\c64-2.oph" - File "..\..\doc\kernal.oph" - File "..\..\doc\petscii.map" - File "..\..\doc\tutor1.oph" - File "..\..\doc\tutor2.oph" - File "..\..\doc\tutor3.oph" - File "..\..\doc\tutor4a.oph" - File "..\..\doc\tutor4b.oph" - File "..\..\doc\tutor4c.oph" - File "..\..\doc\tutor5.oph" - File "..\..\doc\tutor6.oph" - File "..\..\doc\tutor7.oph" + File "..\..\examples\c64-1.oph" + File "..\..\examples\petscii.map" + File "..\..\examples\hello1.oph" + File "..\..\examples\hello2.oph" + File "..\..\examples\hello3.oph" + File "..\..\examples\hello4a.oph" + File "..\..\examples\hello4b.oph" + File "..\..\examples\hello4c.oph" + File "..\..\examples\hello5.oph" + File "..\..\examples\hello6.oph" + File "..\..\examples\hello7.oph" + File "..\..\examples\structuredemo.oph" + File "..\..\examples\fibonacci.oph" + SetOutPath "$INSTDIR\examples\hi_stella" + File "..\..\examples\hi_stella\hi_stella.oph" + File "..\..\examples\hi_stella\README.txt" + SetOutPath "$INSTDIR\examples\hello_nes" + File "..\..\examples\hello_nes\hello_prg.oph" + File "..\..\examples\hello_nes\hello_chr.oph" + File "..\..\examples\hello_nes\hello_ines.oph" + File "..\..\examples\hello_nes\hello_unif.oph" + File "..\..\examples\hello_nes\README.txt" + SetOutPath "$INSTDIR\platform" + File "..\..\platform\c64_0.oph" + File "..\..\platform\c64kernal.oph" + File "..\..\platform\nes.oph" + File "..\..\platform\stella.oph" + File "..\..\platform\README.txt" SectionEnd Section -AdditionalIcons @@ -124,32 +136,44 @@ FunctionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP Delete "$INSTDIR\uninst.exe" - Delete "$INSTDIR\examples\tutor7.oph" - Delete "$INSTDIR\examples\tutor6.oph" - Delete "$INSTDIR\examples\tutor5.oph" - Delete "$INSTDIR\examples\tutor4c.oph" - Delete "$INSTDIR\examples\tutor4b.oph" - Delete "$INSTDIR\examples\tutor4a.oph" - Delete "$INSTDIR\examples\tutor3.oph" - Delete "$INSTDIR\examples\tutor2.oph" - Delete "$INSTDIR\examples\tutor1.oph" + Delete "$INSTDIR\examples\structuredemo.oph" + Delete "$INSTDIR\examples\fibonacci.oph" + Delete "$INSTDIR\examples\hello7.oph" + Delete "$INSTDIR\examples\hello6.oph" + Delete "$INSTDIR\examples\hello5.oph" + Delete "$INSTDIR\examples\hello4c.oph" + Delete "$INSTDIR\examples\hello4b.oph" + Delete "$INSTDIR\examples\hello4a.oph" + Delete "$INSTDIR\examples\hello3.oph" + Delete "$INSTDIR\examples\hello2.oph" + Delete "$INSTDIR\examples\hello1.oph" Delete "$INSTDIR\examples\petscii.map" - Delete "$INSTDIR\examples\kernal.oph" - Delete "$INSTDIR\examples\c64-2.oph" Delete "$INSTDIR\examples\c64-1.oph" - Delete "$INSTDIR\examples\a2normal.map" - Delete "$INSTDIR\examples\a2inverse.map" - Delete "$INSTDIR\examples\a2blink.map" Delete "$INSTDIR\w9xpopen.exe" Delete "$INSTDIR\ophis.exe" Delete "$INSTDIR\ophismanual.pdf" Delete "$INSTDIR\README.txt" + Delete "$INSTDIR\examples\hi_stella\hi_stella.oph" + Delete "$INSTDIR\examples\hi_stella\README.txt" + Delete "$INSTDIR\examples\hello_nes\hello_prg.oph" + Delete "$INSTDIR\examples\hello_nes\hello_chr.oph" + Delete "$INSTDIR\examples\hello_nes\hello_ines.oph" + Delete "$INSTDIR\examples\hello_nes\hello_unif.oph" + Delete "$INSTDIR\examples\hello_nes\README.txt" + Delete "$INSTDIR\platform\c64_0.oph" + Delete "$INSTDIR\platform\c64kernal.oph" + Delete "$INSTDIR\platform\nes.oph" + Delete "$INSTDIR\platform\stella.oph" + Delete "$INSTDIR\platform\README.txt" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$STARTMENU\Manual.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" + RMDir "$INSTDIR\examples\hi_stella" + RMDir "$INSTDIR\examples\hello_nes" RMDir "$INSTDIR\examples" + RMDir "$INSTDIR\platform" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"