packaging for 2.0 release

This commit is contained in:
Michael Martin 2012-06-13 00:17:41 -07:00
parent 55d7344cc7
commit 9ef2b91e9e
5 changed files with 117 additions and 33 deletions

2
README
View File

@ -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

View File

@ -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.

View File

@ -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.

27
platform/README.txt Normal file
View File

@ -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.

View File

@ -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}"