├── .gitattributes ├── .gitignore ├── 1-source-files ├── README.md ├── boot-files │ ├── $.!BOOT.bin │ ├── $.SCREEN.bin │ └── README.md ├── fonts │ ├── P.FONT.bin │ ├── P.FONTEX.bin │ └── README.md ├── images │ ├── P.DATE2P.bin │ ├── P.DIALS2P.bin │ ├── README.md │ ├── Z.(C)ASFT.bin │ ├── Z.ACSOFT.bin │ └── Z.ELITE.bin ├── main-sources │ ├── README.md │ ├── elite-bcfs.asm │ ├── elite-build-options.asm │ ├── elite-checksum.asm │ ├── elite-disc.asm │ ├── elite-loader1.asm │ ├── elite-loader2.asm │ ├── elite-readme.asm │ ├── elite-source.asm │ └── elite-z.asm └── original-sources │ ├── A5022201 6502 Second Processor sources [DSD disc image].zip │ ├── B.ELITAS.inf │ ├── B.ELITAS.txt │ ├── B.ELITES.inf │ ├── B.ELITES.txt │ ├── O.ELITES.inf │ ├── O.ELITES.txt │ ├── O.PMODU.inf │ ├── O.PMODU.txt │ ├── P.ELITEA.TXT │ ├── P.ELITEA.inf │ ├── P.ELITEB.TXT │ ├── P.ELITEB.inf │ ├── P.ELITEC.TXT │ ├── P.ELITEC.inf │ ├── P.ELITED.TXT │ ├── P.ELITED.inf │ ├── P.ELITEE.TXT │ ├── P.ELITEE.inf │ ├── P.ELITEF.TXT │ ├── P.ELITEF.inf │ ├── P.ELITEG.TXT │ ├── P.ELITEG.inf │ ├── P.ELITEH.TXT │ ├── P.ELITEH.inf │ ├── P.ELITEI.TXT │ ├── P.ELITEI.inf │ ├── P.ELITEJ.TXT │ ├── P.ELITEJ.inf │ ├── P.ELITEZ.TXT │ ├── P.ELITEZ.inf │ ├── P.LOGTEST.inf │ ├── P.LOGTEST.txt │ ├── P.LOGTST2.inf │ ├── P.LOGTST2.txt │ ├── P.MOD12SC.inf │ ├── P.MOD12SC.txt │ ├── P.PMODU.inf │ ├── P.PMODU.txt │ ├── README.md │ ├── S.DATE2.inf │ ├── S.DATE2.txt │ ├── S.ELITAS.TXT │ ├── S.ELITAS.inf │ ├── S.ELITES.TXT │ ├── S.ELITES.inf │ ├── S.PCODES.TXT │ ├── S.PCODES.inf │ ├── S.STEST.inf │ ├── S.STEST.txt │ ├── T.ELITAS.inf │ └── T.ELITAS.txt ├── 2-build-files ├── README.md ├── crc32.py ├── elite-checksum.py ├── elite-decrypt.py ├── libiconv2.dll ├── libintl3.dll └── make.exe ├── 3-assembled-output ├── ELITE.bin ├── ELITEa.bin ├── ELTA.bin ├── ELTB.bin ├── ELTC.bin ├── ELTD.bin ├── ELTE.bin ├── ELTF.bin ├── ELTG.bin ├── ELTH.bin ├── ELTI.bin ├── ELTJ.bin ├── I.CODE.bin ├── P.CODE.bin ├── P.CODE.unprot.bin ├── README.md ├── README.txt ├── SHIPS.bin ├── WORDS.bin └── compile.txt ├── 4-reference-binaries ├── README.md ├── executive │ ├── ELITE.bin │ ├── ELITEa.bin │ ├── ELTA.bin │ ├── ELTB.bin │ ├── ELTC.bin │ ├── ELTD.bin │ ├── ELTE.bin │ ├── ELTF.bin │ ├── ELTG.bin │ ├── ELTH.bin │ ├── ELTI.bin │ ├── ELTJ.bin │ ├── I.CODE.bin │ ├── P.CODE.bin │ ├── P.CODE.unprot.bin │ ├── SHIPS.bin │ └── WORDS.bin ├── sng45 │ ├── ELITE.bin │ ├── ELITEa.bin │ ├── ELTA.bin │ ├── ELTB.bin │ ├── ELTC.bin │ ├── ELTD.bin │ ├── ELTE.bin │ ├── ELTF.bin │ ├── ELTG.bin │ ├── ELTH.bin │ ├── ELTI.bin │ ├── ELTJ.bin │ ├── I.CODE.bin │ ├── P.CODE.bin │ ├── P.CODE.unprot.bin │ ├── SHIPS.bin │ └── WORDS.bin └── source-disc │ ├── ELITE.bin │ ├── ELITEa.bin │ ├── ELTA.bin │ ├── ELTB.bin │ ├── ELTC.bin │ ├── ELTD.bin │ ├── ELTE.bin │ ├── ELTF.bin │ ├── ELTG.bin │ ├── ELTH.bin │ ├── ELTI.bin │ ├── ELTJ.bin │ ├── I.CODE.bin │ ├── P.CODE.bin │ ├── P.CODE.unprot.bin │ ├── SHIPS.bin │ └── WORDS.bin ├── 5-compiled-game-discs ├── README.md ├── elite-6502sp-executive.ssd ├── elite-6502sp-from-source-disc.ssd └── elite-6502sp-sng45.ssd ├── Makefile ├── README.md └── make.bat /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows thumbnail cache files 2 | Thumbs.db 3 | ehthumbs.db 4 | ehthumbs_vista.db 5 | 6 | # Folder config file 7 | Desktop.ini 8 | 9 | # Recycle Bin used on file shares 10 | $RECYCLE.BIN/ 11 | 12 | # Windows Installer files 13 | *.cab 14 | *.msi 15 | *.msm 16 | *.msp 17 | 18 | # Windows shortcuts 19 | *.lnk 20 | 21 | # IDE files 22 | .vscode/ 23 | *.code-workspace 24 | run.bat 25 | -------------------------------------------------------------------------------- /1-source-files/README.md: -------------------------------------------------------------------------------- 1 | # Source files for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the source files for the 6502 Second Processor version of Elite. 4 | 5 | * [fonts](fonts) contains the binaries for the game's text font 6 | 7 | * [images](images) contains the image binaries for the title screen and dashboard 8 | 9 | * [main-sources](main-sources) contains the annotated source code 10 | 11 | * [original-sources](original-sources) contains the original source code from Ian Bell's personal website 12 | 13 | --- 14 | 15 | Right on, Commanders! 16 | 17 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/boot-files/$.!BOOT.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/boot-files/$.!BOOT.bin -------------------------------------------------------------------------------- /1-source-files/boot-files/$.SCREEN.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/boot-files/$.SCREEN.bin -------------------------------------------------------------------------------- /1-source-files/boot-files/README.md: -------------------------------------------------------------------------------- 1 | # Boot files for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the boot file from the original sources for the 6502 Second Processor version of Elite on Ian Bell's personal website. 4 | 5 | * [$.!BOOT.bin]($.!BOOT.bin) is the original boot file from the game disc 6 | 7 | * [$.SCREEN.bin]($.SCREEN.bin) the mode 7 loader program for the original game disc 8 | 9 | --- 10 | 11 | Right on, Commanders! 12 | 13 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/fonts/P.FONT.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/fonts/P.FONT.bin -------------------------------------------------------------------------------- /1-source-files/fonts/P.FONTEX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/fonts/P.FONTEX.bin -------------------------------------------------------------------------------- /1-source-files/fonts/README.md: -------------------------------------------------------------------------------- 1 | # Font binaries for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the font binaries from the original sources for the 6502 Second Processor version of Elite on Ian Bell's personal website. 4 | 5 | * [P.FONT.bin](P.FONT.bin) is the standard BBC Micro font, extracted from the MOS ROM 6 | 7 | * [P.FONTEX.bin](P.FONTEX.bin) is the futuristic space-age font used in the Executive edition 8 | 9 | --- 10 | 11 | Right on, Commanders! 12 | 13 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/images/P.DATE2P.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/images/P.DATE2P.bin -------------------------------------------------------------------------------- /1-source-files/images/P.DIALS2P.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/images/P.DIALS2P.bin -------------------------------------------------------------------------------- /1-source-files/images/README.md: -------------------------------------------------------------------------------- 1 | # Image binaries for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the image binaries from the original sources for the 6502 Second Processor version of Elite on Ian Bell's personal website. 4 | 5 | * [P.DATE2P.bin](P.DATE2P.bin) is an unused image that was used to datestamp the title screen during development 6 | 7 | * [P.DIALS2P.bin](P.DIALS2P.bin) is the dashboard image 8 | 9 | * [Z.(C)ASOFT.bin](Z.(C)ASOFT.bin) is the "(c) ACORNSOFT 1984" image for the bottom of the title screen 10 | 11 | * [Z.ACSOFT.bin](Z.ACSOFT.bin) is the "ACORNSOFT" image for the very top of the title screen 12 | 13 | * [Z.ELITE.bin](Z.ELITE.bin) is the "ELITE" image for the title screen 14 | 15 | --- 16 | 17 | Right on, Commanders! 18 | 19 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/images/Z.(C)ASFT.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/images/Z.(C)ASFT.bin -------------------------------------------------------------------------------- /1-source-files/images/Z.ACSOFT.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/images/Z.ACSOFT.bin -------------------------------------------------------------------------------- /1-source-files/images/Z.ELITE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/images/Z.ELITE.bin -------------------------------------------------------------------------------- /1-source-files/main-sources/README.md: -------------------------------------------------------------------------------- 1 | # Annotated source code for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the annotated source code for the 6502 Second Processor version of Elite. 4 | 5 | * Main source files: 6 | 7 | * [elite-source.asm](elite-source.asm) contains the main source for the game, which runs on the parasite 8 | 9 | * [elite-z.asm](elite-z.asm) contains the main source for the I/O processor 10 | 11 | * [elite-bcfs.asm](elite-bcfs.asm) contains the Big Code File source, which concatenates individually assembled binaries into the final game binary 12 | 13 | * Other source files: 14 | 15 | * [elite-loader1.asm](elite-loader1.asm) contains the source for the first stage of the loader 16 | 17 | * [elite-loader2.asm](elite-loader2.asm) contains the source for the second stage of the loader 18 | 19 | * [elite-checksum.asm](elite-checksum.asm) contains 6502 source code for the checksum routines that are implemented in the elite-checksum.py script (and which were implemented by the S.PCODES BBC BASIC program in the original source discs); this file is purely for reference and is not used in the build process 20 | 21 | * [elite-disc.asm](elite-disc.asm) builds the SSD disc image from the assembled binaries and other source files 22 | 23 | * [elite-readme.asm](elite-readme.asm) generates a README file for inclusion on the SSD disc image 24 | 25 | * Files that are generated during the build process: 26 | 27 | * [elite-build-options.asm](elite-build-options.asm) stores the make options in BeebAsm format so they can be included in the assembly process 28 | 29 | --- 30 | 31 | Right on, Commanders! 32 | 33 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-bcfs.asm: -------------------------------------------------------------------------------- 1 | \ ****************************************************************************** 2 | \ 3 | \ 6502 SECOND PROCESSOR ELITE BIG CODE FILE SOURCE 4 | \ 5 | \ 6502 Second Processor Elite was written by Ian Bell and David Braben and is 6 | \ copyright Acornsoft 1985 7 | \ 8 | \ The code in this file is identical to the source discs released on Ian Bell's 9 | \ personal website at http://www.elitehomepage.org/ (it's just been reformatted 10 | \ to be more readable) 11 | \ 12 | \ The commentary is copyright Mark Moxon, and any misunderstandings or mistakes 13 | \ in the documentation are entirely my fault 14 | \ 15 | \ The terminology and notations used in this commentary are explained at 16 | \ https://elite.bbcelite.com/terminology 17 | \ 18 | \ The deep dive articles referred to in this commentary can be found at 19 | \ https://elite.bbcelite.com/deep_dives 20 | \ 21 | \ ------------------------------------------------------------------------------ 22 | \ 23 | \ This source file contains code to produce the Big Code File for 6502 Second 24 | \ Processor Elite. The Big Code File comprises the parasite game code, the ship 25 | \ blueprints and the game text. 26 | \ 27 | \ ------------------------------------------------------------------------------ 28 | \ 29 | \ This source file produces the following binary files: 30 | \ 31 | \ * P.CODE.unprot.bin 32 | \ 33 | \ after reading in the following files: 34 | \ 35 | \ * ELTA.bin 36 | \ * ELTB.bin 37 | \ * ELTC.bin 38 | \ * ELTD.bin 39 | \ * ELTE.bin 40 | \ * ELTF.bin 41 | \ * ELTG.bin 42 | \ * ELTH.bin 43 | \ * ELTI.bin 44 | \ * ELTJ.bin 45 | \ * SHIPS.bin 46 | \ * WORDS.bin 47 | \ 48 | \ ****************************************************************************** 49 | 50 | INCLUDE "1-source-files/main-sources/elite-build-options.asm" 51 | 52 | _SOURCE_DISC = (_VARIANT = 1) 53 | _SNG45 = (_VARIANT = 2) 54 | _EXECUTIVE = (_VARIANT = 3) 55 | 56 | GUARD &F800 \ Guard against assembling over MOS memory 57 | 58 | \ ****************************************************************************** 59 | \ 60 | \ Configuration variables 61 | \ 62 | \ ****************************************************************************** 63 | 64 | CODE% = &1000 \ The address where the main game code file (P.CODE) is 65 | \ run in the parasite 66 | 67 | LOAD% = &1000 \ The load address of the main game code file, which is 68 | \ the same as the load address as it doesn't get moved 69 | \ after loading 70 | 71 | \ ****************************************************************************** 72 | \ 73 | \ Load the compiled binaries to create the Big Code File 74 | \ 75 | \ ****************************************************************************** 76 | 77 | ORG CODE% \ Set the assembly address to CODE% 78 | 79 | IF _MATCH_ORIGINAL_BINARIES 80 | 81 | IF _SNG45 82 | 83 | EQUB &2E, &20 \ These bytes appear to be unused and just contain 84 | EQUB &3C, &30 \ random workspace noise left over from the BBC Micro 85 | EQUB &31, &39 \ assembly process 86 | EQUB &3E, &57 87 | EQUB &45, &20 88 | EQUB &48, &41 89 | 90 | ELIF _EXECUTIVE 91 | 92 | EQUB &2E, &20 \ These bytes appear to be unused and just contain 93 | EQUB &3C, &30 \ random workspace noise left over from the BBC Micro 94 | EQUB &31, &39 \ assembly process 95 | EQUB &3E, &57 96 | EQUB &45, &20 97 | EQUB &48, &41 98 | EQUB &3C, &32 99 | 100 | ELIF _SOURCE_DISC 101 | 102 | EQUB &00, &00 103 | EQUB &04, &0C \ random workspace noise left over from the BBC Micro 104 | EQUB &0F, &00 \ assembly process 105 | EQUB &00, &00 106 | EQUB &00, &00 107 | EQUB &04, &0C 108 | 109 | ENDIF 110 | 111 | ELSE 112 | 113 | IF _SNG45 114 | 115 | SKIP 12 116 | 117 | ELIF _EXECUTIVE 118 | 119 | SKIP 14 120 | 121 | ELIF _SOURCE_DISC 122 | 123 | SKIP 12 124 | 125 | ENDIF 126 | 127 | ENDIF 128 | 129 | .elitea 130 | 131 | PRINT "elitea = ", ~P% 132 | INCBIN "3-assembled-output/ELTA.bin" 133 | 134 | .eliteb 135 | 136 | PRINT "eliteb = ", ~P% 137 | INCBIN "3-assembled-output/ELTB.bin" 138 | 139 | .elitec 140 | 141 | PRINT "elitec = ", ~P% 142 | INCBIN "3-assembled-output/ELTC.bin" 143 | 144 | .elited 145 | 146 | PRINT "elited = ", ~P% 147 | INCBIN "3-assembled-output/ELTD.bin" 148 | 149 | .elitee 150 | 151 | PRINT "elitee = ", ~P% 152 | INCBIN "3-assembled-output/ELTE.bin" 153 | 154 | .elitef 155 | 156 | PRINT "elitef = ", ~P% 157 | INCBIN "3-assembled-output/ELTF.bin" 158 | 159 | .eliteg 160 | 161 | PRINT "eliteg = ", ~P% 162 | INCBIN "3-assembled-output/ELTG.bin" 163 | 164 | .eliteh 165 | 166 | PRINT "eliteh = ", ~P% 167 | INCBIN "3-assembled-output/ELTH.bin" 168 | 169 | .elitei 170 | 171 | PRINT "elitei = ", ~P% 172 | INCBIN "3-assembled-output/ELTI.bin" 173 | 174 | .elitej 175 | 176 | PRINT "elitej = ", ~P% 177 | INCBIN "3-assembled-output/ELTJ.bin" 178 | 179 | F% = P% 180 | 181 | PRINT "F% = ", ~F% 182 | PRINT "P% = ", ~P% 183 | 184 | .words 185 | 186 | PRINT "words = ", ~P% 187 | INCBIN "3-assembled-output/WORDS.bin" 188 | 189 | .ships 190 | 191 | PRINT "ships = ", ~P% 192 | INCBIN "3-assembled-output/SHIPS.bin" 193 | 194 | IF _MATCH_ORIGINAL_BINARIES 195 | 196 | IF _SNG45 197 | 198 | EQUB &A6, &A0, &80, &84, &31, &C8, &84, &30 \ These bytes appear to be 199 | EQUB &98, &60, &20, &85, &A3, &20, &99, &A6 \ unused and just contain random 200 | EQUB &D0, &3A, &20, &DA, &A1, &F0, &09, &20 \ workspace noise left over from 201 | EQUB &1E, &A2, &20, &B5, &A3, &D0, &37, &60 \ the BBC Micro assembly process 202 | EQUB &4C, &A7, &99, &20, &FA, &92, &20, &D3 203 | EQUB &A9, &A5, &4A, &48, &20, &E9, &A7, &20 204 | EQUB &8D, &A3, &E6, &4A, &20, &9E, &A9, &20 205 | EQUB &E9, &A7, &20, &D6, &A4, &68, &85, &4A 206 | EQUB &20, &9E, &A9, &20, &E9, &A7, &20, &E7 207 | EQUB &A6, &A9, &FF, &60, &20, &DA, &A1, &F0 208 | EQUB &AC, &20, &4E, &A3, &F0, &CA, &A5, &2E 209 | EQUB &45, &3B, &85, &2E, &38, &A5, &30, &E5 210 | EQUB &3D, &B0, &03, &C6, &2F, &38, &69, &80 211 | EQUB &85, &30, &90, &03, &E6, &2F, &18, &A2 212 | EQUB &20, &B0, &18, &A5, &31, &C5, &3E, &D0 213 | EQUB &10, &A5, &32, &C5, &3F, &D0, &0A, &A5 214 | EQUB &33, &C5, &40, &D0, &04, &A5, &34, &C5 215 | EQUB &41, &90, &19, &A5, &34, &E5, &41, &85 216 | EQUB &34, &A5, &33, &E5, &40, &85, &33, &A5 217 | EQUB &32, &E5, &3F, &85, &32, &A5, &31, &E5 218 | EQUB &3E, &85, &31, &38, &26, &46, &26, &45 219 | EQUB &26, &44, &26, &43, &06, &34, &26, &33 220 | EQUB &26, &32, &26, &31, &CA, &D0, &BA, &A2 221 | EQUB &07, &B0, &18, &A5, &31, &C5, &3E, &D0 222 | EQUB &10, &A5, &32, &C5, &3F, &D0, &0A, &A5 223 | EQUB &33, &C5, &40, &D0, &04, &A5, &34, &C5 224 | EQUB &41, &90, &19, &A5, &34, &E5, &41, &85 225 | EQUB &34, &A5, &33, &E5, &40, &85, &33, &A5 226 | EQUB &32, &E5, &3F, &85, &32, &A5, &31, &E5 227 | EQUB &3E, &85, &31, &38, &26, &35, &06, &34 228 | EQUB &26, &33, &26, &32 229 | 230 | ELIF _EXECUTIVE 231 | 232 | EQUB &D0, &02, &A9, &6C, &85, &4B, &A9, &04 \ These bytes appear to be 233 | EQUB &85, &4C, &60, &20, &FA, &92, &20, &DA \ unused and just contain random 234 | EQUB &A1, &F0, &02, &10, &0C, &00, &16, &4C \ workspace noise left over from 235 | EQUB &6F, &67, &20, &72, &61, &6E, &67, &65 \ the BBC Micro assembly process 236 | EQUB &00, &20, &53, &A4, &A0, &80, &84, &3B 237 | EQUB &84, &3E, &C8, &84, &3D, &A6, &30, &F0 238 | EQUB &06, &A5, &31, &C9, &B5, &90, &02, &E8 239 | EQUB &88, &8A, &48, &84, &30, &20, &05, &A5 240 | EQUB &A9, &7B, &20, &87, &A3, &A9, &73, &A0 241 | EQUB &A8, &20, &97, &A8, &20, &E9, &A7, &20 242 | EQUB &56, &A6, &20, &56, &A6, &20, &00, &A5 243 | EQUB &20, &85, &A3, &68, &38, &E9, &81, &20 244 | EQUB &ED, &A2, &A9, &6E, &85, &4B, &A9, &A8 245 | EQUB &85, &4C, &20, &56, &A6, &20, &F5, &A7 246 | EQUB &20, &00, &A5, &A9, &FF, &60, &7F, &5E 247 | EQUB &5B, &D8, &AA, &80, &31, &72, &17, &F8 248 | EQUB &06, &7A, &12, &38, &A5, &0B, &88, &79 249 | EQUB &0E, &9F, &F3, &7C, &2A, &AC, &3F, &B5 250 | EQUB &86, &34, &01, &A2, &7A, &7F, &63, &8E 251 | EQUB &37, &EC, &82, &3F, &FF, &FF, &C1, &7F 252 | EQUB &FF, &FF, &FF, &FF, &85, &4D, &84, &4E 253 | EQUB &20, &85, &A3, &A0, &00, &B1, &4D, &85 254 | EQUB &48, &E6, &4D, &D0, &02, &E6, &4E, &A5 255 | EQUB &4D, &85, &4B, &A5, &4E, &85, &4C, &20 256 | EQUB &B5, &A3, &20, &F5, &A7, &20, &AD, &A6 257 | EQUB &18, &A5, &4D, &69, &05, &85, &4D, &85 258 | EQUB &4B, &A5, &4E, &69, &00, &85, &4E, &85 259 | EQUB &4C, &20, &00, &A5, &C6, &48, &D0, &E2 260 | EQUB &60, &20, &DA, &A8, &4C, &27, &A9, &20 261 | EQUB &FA, &92, &20, &DA, &A1, &10, &08, &46 262 | EQUB &2E, &20, &EA, &A8 263 | 264 | ELIF _SOURCE_DISC 265 | 266 | EQUB &A7, &99, &20, &FA, &92, &20, &D3, &A9 \ These bytes appear to be 267 | EQUB &A5, &4A, &48, &20, &E9, &A7, &20, &8D \ unused and just contain random 268 | EQUB &A3, &E6, &4A, &20, &9E, &A9, &20, &E9 \ workspace noise left over from 269 | EQUB &A7, &20, &D6, &A4, &68, &85, &4A, &20 \ the BBC Micro assembly process 270 | EQUB &9E, &A9, &20, &E9, &A7, &20, &E7, &A6 271 | EQUB &A9, &FF, &60, &20, &DA, &A1, &F0, &AC 272 | EQUB &20, &4E, &A3, &F0, &CA, &A5, &2E, &45 273 | EQUB &3B, &85, &2E, &38, &A5, &30, &E5, &3D 274 | EQUB &B0, &03, &C6, &2F, &38, &69, &80, &85 275 | EQUB &30, &90, &03, &E6, &2F, &18, &A2, &20 276 | EQUB &B0, &18, &A5, &31, &C5, &3E, &D0, &10 277 | EQUB &A5, &32, &C5, &3F, &D0, &0A, &A5, &33 278 | EQUB &C5, &40, &D0, &04, &A5, &34, &C5, &41 279 | EQUB &90, &19, &A5, &34, &E5, &41, &85, &34 280 | EQUB &A5, &33, &E5, &40, &85, &33, &A5, &32 281 | EQUB &E5, &3F, &85, &32, &A5, &31, &E5, &3E 282 | EQUB &85, &31, &38, &26, &46, &26, &45, &26 283 | EQUB &44, &26, &43, &06, &34, &26, &33, &26 284 | EQUB &32, &26, &31, &CA, &D0, &BA, &A2, &07 285 | EQUB &B0, &18, &A5, &31, &C5, &3E, &D0, &10 286 | EQUB &A5, &32, &C5, &3F, &D0, &0A, &A5, &33 287 | EQUB &C5, &40, &D0, &04, &A5, &34, &C5, &41 288 | EQUB &90, &19, &A5, &34, &E5, &41, &85, &34 289 | EQUB &A5, &33, &E5, &40, &85, &33, &A5, &32 290 | EQUB &E5, &3F, &85, &32, &A5, &31, &E5, &3E 291 | EQUB &85, &31, &38, &26, &35, &06, &34, &26 292 | EQUB &33, &26, &32, &26, &31, &CA, &D0, &C0 293 | EQUB &06, &35, &A5, &46, &85, &34, &A5, &45 294 | EQUB &85, &33, &A5, &44, &85, &32, &A5, &43 295 | EQUB &85, &31, &4C, &59, &A6, &00, &15, &2D 296 | EQUB &76, &65, &20, &72 297 | 298 | ENDIF 299 | 300 | ELSE 301 | 302 | SKIP 244 303 | 304 | ENDIF 305 | 306 | \ ****************************************************************************** 307 | \ 308 | \ Save P.CODE.unprot.bin 309 | \ 310 | \ ****************************************************************************** 311 | 312 | PRINT "P% = ", ~P% 313 | PRINT "S.P.CODE ", ~LOAD%, " ", ~(F% + &0400 + &2200), " ", ~LOAD%, " ", ~LOAD% 314 | SAVE "3-assembled-output/P.CODE.unprot.bin", CODE%, (F% + &0400 + &2200), LOAD% 315 | -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-build-options.asm: -------------------------------------------------------------------------------- 1 | _VERSION=3 2 | _VARIANT=2 3 | _REMOVE_CHECKSUMS=FALSE 4 | _MATCH_ORIGINAL_BINARIES=TRUE 5 | _MAX_COMMANDER=FALSE 6 | -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-checksum.asm: -------------------------------------------------------------------------------- 1 | \ ****************************************************************************** 2 | \ 3 | \ 6502 SECOND PROCESSOR ELITE ENCRYPTION SOURCE 4 | \ 5 | \ 6502 Second Processor Elite was written by Ian Bell and David Braben and is 6 | \ copyright Acornsoft 1985 7 | \ 8 | \ The code in this file is identical to the source discs released on Ian Bell's 9 | \ personal website at http://www.elitehomepage.org/ (it's just been reformatted 10 | \ to be more readable) 11 | \ 12 | \ The commentary is copyright Mark Moxon, and any misunderstandings or mistakes 13 | \ in the documentation are entirely my fault 14 | \ 15 | \ The terminology and notations used in this commentary are explained at 16 | \ https://elite.bbcelite.com/terminology 17 | \ 18 | \ The deep dive articles referred to in this commentary can be found at 19 | \ https://elite.bbcelite.com/deep_dives 20 | \ 21 | \ ------------------------------------------------------------------------------ 22 | \ 23 | \ The following routines from the S.PCODES BBC BASIC source file are implemented 24 | \ in the elite-checksum.py script. This file is purely for reference and is 25 | \ not used in the build process. 26 | \ 27 | \ ****************************************************************************** 28 | 29 | \ ****************************************************************************** 30 | \ 31 | \ Name: ZP 32 | \ Type: Subroutine 33 | \ Category: Copy protection 34 | \ Summary: Sets the checksum byte at S%-1 35 | \ 36 | \ ****************************************************************************** 37 | 38 | .ZP 39 | 40 | SEC \ Set the C flag so the addition below starts at 1 41 | 42 | LDY #0 \ Set Y = 0 43 | 44 | STY ZP \ Set ZP = 0 45 | 46 | LDX #&10 \ Set X = &10, so we start with (X Y) = &1000 47 | 48 | TXA \ Set A = &10 49 | 50 | .CHKL 51 | 52 | STX ZP+1 \ Set ZP(1 0) = (X 0) 53 | 54 | STY ZP+3 \ Set ZP+3 = Y 55 | 56 | ADC (ZP),Y \ A = A + C + contents of (X Y) 57 | EOR ZP+3 \ A = A EOR Y 58 | SBC ZP+1 \ A = A - (1 - C) - X 59 | 60 | DEY \ Loop through whole page X 61 | BNE CHKL 62 | 63 | INX \ Loop to next page until X = &A0 (i.e. &A000) 64 | CPX #&A0 65 | BCC CHKL 66 | 67 | STA S%-1 \ Store A in checksum byte at S%-1 68 | 69 | RTS \ Return from the subroutine 70 | 71 | \ ****************************************************************************** 72 | \ 73 | \ Name: SC 74 | \ Type: Subroutine 75 | \ Category: Copy protection 76 | \ Summary: EORs bytes between &1300 and &9FFF 77 | \ 78 | \ ****************************************************************************** 79 | 80 | .SC 81 | 82 | LDY #0 \ (X Y) = SC(1 0) = &1300 83 | STY SC \ 84 | \ starting with the low byte 85 | 86 | LDX #&13 \ Set X = &13 for the high byte 87 | 88 | .DEEL 89 | 90 | STX SC+1 \ Set the high byte of SC(1 0) to X 91 | 92 | TYA \ ?(X Y) = ?(X Y) EOR Y EOR &75 93 | EOR (SC),Y 94 | EOR #&75 95 | STA (SC),Y 96 | 97 | DEY \ Loop through page 98 | BNE DEEL 99 | 100 | INX \ Next page until (X Y) = &A000 101 | CPX #&A0 102 | BNE DEEL \ Loop back if X < &A0 103 | 104 | RTS \ Return from the subroutine 105 | 106 | \ ****************************************************************************** 107 | \ 108 | \ Name: V 109 | \ Type: Subroutine 110 | \ Category: Copy protection 111 | \ Summary: Reverses the order of bytes between G% and F%-1 112 | \ 113 | \ ****************************************************************************** 114 | 115 | .V 116 | 117 | LDA #LO(G%) \ V(1 0) = G% 118 | 119 | .SC 120 | 121 | STA V \ First set the low byte, then the high byte 122 | LDA #HI(G%) 123 | STA V+1 124 | 125 | LDA #LO(F%-1) \ SC(1 0) = F%-1 126 | STA SC 127 | LDA #HI(F%-1) 128 | STA SC+1 129 | 130 | .whiz 131 | 132 | LDA (V) \ Stack = ?V 133 | PHA 134 | 135 | LDA (SC) \ ?V = ?SC 136 | STA (V) 137 | 138 | PLA 139 | STA (SC) \ ?SC = stack 140 | 141 | INC V \ Increment V(1 0) 142 | BNE P%+4 143 | INC V+1 144 | 145 | LDA SC \ Decrement SC(1 0) 146 | BNE P%+4 147 | DEC SC+1 148 | DEC SC 149 | 150 | DEA \ Loop back while SC(1 0) > V(1 0) 151 | CMP V 152 | LDA SC+1 153 | SBC V+1 154 | BCS whiz 155 | 156 | RTS \ Return from the subroutine 157 | 158 | -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-disc.asm: -------------------------------------------------------------------------------- 1 | \ ****************************************************************************** 2 | \ 3 | \ 6502 SECOND PROCESSOR ELITE DISC IMAGE SCRIPT 4 | \ 5 | \ 6502 Second Processor Elite was written by Ian Bell and David Braben and is 6 | \ copyright Acornsoft 1985 7 | \ 8 | \ The code in this file is identical to the source discs released on Ian Bell's 9 | \ personal website at http://www.elitehomepage.org/ (it's just been reformatted 10 | \ to be more readable) 11 | \ 12 | \ The commentary is copyright Mark Moxon, and any misunderstandings or mistakes 13 | \ in the documentation are entirely my fault 14 | \ 15 | \ The terminology and notations used in this commentary are explained at 16 | \ https://elite.bbcelite.com/terminology 17 | \ 18 | \ The deep dive articles referred to in this commentary can be found at 19 | \ https://elite.bbcelite.com/deep_dives 20 | \ 21 | \ ------------------------------------------------------------------------------ 22 | \ 23 | \ This source file produces an SSD disc image for 6502 Second Processor Elite. 24 | \ 25 | \ ------------------------------------------------------------------------------ 26 | \ 27 | \ This source file produces one of the following SSD disc images, depending on 28 | \ which release is being built: 29 | \ 30 | \ * elite-6502sp-sng45.ssd 31 | \ * elite-6502sp-from-source-disc.ssd 32 | \ * elite-6502sp-executive.ssd 33 | \ 34 | \ This can be loaded into an emulator or a real BBC Micro. 35 | \ 36 | \ ****************************************************************************** 37 | 38 | INCLUDE "1-source-files/main-sources/elite-build-options.asm" 39 | 40 | _SOURCE_DISC = (_VARIANT = 1) 41 | _SNG45 = (_VARIANT = 2) 42 | _EXECUTIVE = (_VARIANT = 3) 43 | 44 | IF _SNG45 OR _EXECUTIVE 45 | PUTFILE "3-assembled-output/ELITE.bin", "ELITE", &FF1FDC, &FF2085 46 | ELIF _SOURCE_DISC 47 | PUTFILE "3-assembled-output/ELITE.bin", "ELITE", &FF2000, &FF2085 48 | ENDIF 49 | 50 | PUTFILE "3-assembled-output/ELITEa.bin", "I.ELITEa", &FF2000, &FF2000 51 | 52 | IF _SNG45 OR _SOURCE_DISC 53 | PUTFILE "3-assembled-output/I.CODE.bin", "I.CODE", &FF2400, &FF2C89 54 | ELIF _EXECUTIVE 55 | PUTFILE "3-assembled-output/I.CODE.bin", "I.CODE", &032400, &032C89 56 | ENDIF 57 | 58 | IF _REMOVE_CHECKSUMS 59 | IF _SNG45 OR _SOURCE_DISC 60 | PUTFILE "3-assembled-output/P.CODE.bin", "P.CODE", &001000, &0010D1 61 | ELIF _EXECUTIVE 62 | PUTFILE "3-assembled-output/P.CODE.bin", "P.CODE", &001000, &0010D3 63 | ENDIF 64 | ELSE 65 | IF _SNG45 OR _SOURCE_DISC 66 | PUTFILE "3-assembled-output/P.CODE.bin", "P.CODE", &001000, &00106A 67 | ELIF _EXECUTIVE 68 | PUTFILE "3-assembled-output/P.CODE.bin", "P.CODE", &001000, &00106C 69 | ENDIF 70 | ENDIF 71 | 72 | IF _SNG45 73 | PUTFILE "1-source-files/boot-files/$.!BOOT.bin", "!BOOT", &002000, &00202B 74 | PUTFILE "1-source-files/boot-files/$.SCREEN.bin", "SCREEN", &FF7C00, &000000 75 | ENDIF 76 | 77 | PUTFILE "3-assembled-output/README.txt", "README", &FFFFFF, &FFFFFF 78 | -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-loader2.asm: -------------------------------------------------------------------------------- 1 | \ ****************************************************************************** 2 | \ 3 | \ 6502 SECOND PROCESSOR ELITE I/O LOADER SOURCE (PART 2 OF 2) 4 | \ 5 | \ 6502 Second Processor Elite was written by Ian Bell and David Braben and is 6 | \ copyright Acornsoft 1985 7 | \ 8 | \ The code in this file is identical to the source discs released on Ian Bell's 9 | \ personal website at http://www.elitehomepage.org/ (it's just been reformatted 10 | \ to be more readable) 11 | \ 12 | \ The commentary is copyright Mark Moxon, and any misunderstandings or mistakes 13 | \ in the documentation are entirely my fault 14 | \ 15 | \ The terminology and notations used in this commentary are explained at 16 | \ https://elite.bbcelite.com/terminology 17 | \ 18 | \ The deep dive articles referred to in this commentary can be found at 19 | \ https://elite.bbcelite.com/deep_dives 20 | \ 21 | \ ------------------------------------------------------------------------------ 22 | \ 23 | \ This source file contains the second of two game loaders for 6502 Second 24 | \ Processor Elite. 25 | \ 26 | \ ------------------------------------------------------------------------------ 27 | \ 28 | \ This source file produces the following binary file: 29 | \ 30 | \ * ELITEa.bin 31 | \ 32 | \ after reading in the following files: 33 | \ 34 | \ * P.DIALS2P.bin 35 | \ * P.DATE2P.bin 36 | \ * Z.ACSOFT.bin 37 | \ * Z.ELITE.bin 38 | \ * Z.(C)ASFT.bin 39 | \ 40 | \ ****************************************************************************** 41 | 42 | INCLUDE "1-source-files/main-sources/elite-build-options.asm" 43 | 44 | _SOURCE_DISC = (_VARIANT = 1) 45 | _SNG45 = (_VARIANT = 2) 46 | _EXECUTIVE = (_VARIANT = 3) 47 | 48 | GUARD &4000 \ Guard against assembling over screen memory 49 | 50 | \ ****************************************************************************** 51 | \ 52 | \ Configuration variables 53 | \ 54 | \ ****************************************************************************** 55 | 56 | CODE% = &2000 \ The address where the code will be run 57 | 58 | LOAD% = &2000 \ The address where the code will be loaded 59 | 60 | D% = &D000 \ The address where the ship blueprints get moved to 61 | \ after loading, so they go from &D000 to &F200 62 | 63 | OSCLI = &FFF7 \ The address for the OSCLI routine 64 | 65 | \ ****************************************************************************** 66 | \ 67 | \ Name: ZP 68 | \ Type: Workspace 69 | \ Address: &0090 to &0093 70 | \ Category: Workspaces 71 | \ Summary: Important variables used by the loader 72 | \ 73 | \ ****************************************************************************** 74 | 75 | ORG &0090 \ Set the assembly address to &0090 76 | 77 | .Z1 78 | 79 | SKIP 2 \ Temporary storage, used when moving code 80 | 81 | .Z2 82 | 83 | SKIP 2 \ Temporary storage, used when moving code 84 | 85 | \ ****************************************************************************** 86 | \ 87 | \ ELITE LOADER 88 | \ 89 | \ ****************************************************************************** 90 | 91 | ORG CODE% \ Set the assembly address to CODE% 92 | 93 | \ ****************************************************************************** 94 | \ 95 | \ Name: MVE 96 | \ Type: Macro 97 | \ Category: Utility routines 98 | \ Summary: Move a one-page block of memory from one location to another 99 | \ 100 | \ ------------------------------------------------------------------------------ 101 | \ 102 | \ The following macro is used to move a block of memory from one location to 103 | \ another: 104 | \ 105 | \ MVE S%, D%, PA% 106 | \ 107 | \ It is used to move the component parts of the loading screen into screen 108 | \ memory, such as the dashboard background and Acornsoft copyright message. 109 | \ 110 | \ ------------------------------------------------------------------------------ 111 | \ 112 | \ Arguments: 113 | \ 114 | \ S% The source address of the block to move 115 | \ 116 | \ D% The destination address of the block to move 117 | \ 118 | \ PA% Number of pages of memory to move (1 page = 256 bytes) 119 | \ 120 | \ ****************************************************************************** 121 | 122 | MACRO MVE S%, D%, PA% 123 | 124 | LDA #LO(S%) \ Set Z1(1 0) = S% 125 | STA Z1 126 | LDA #HI(S%) 127 | STA Z1+1 128 | 129 | LDA #LO(D%) \ Set Z1(1 0) = D% 130 | STA Z2 131 | LDA #HI(D%) 132 | STA Z2+1 133 | 134 | LDX #PA% \ Set X = PA% 135 | 136 | JSR MVBL \ Call MVBL to copy X pages from S% to D% 137 | 138 | ENDMACRO 139 | 140 | \ ****************************************************************************** 141 | \ 142 | \ Name: Elite loader (Part 1 of 2) 143 | \ Type: Subroutine 144 | \ Category: Loader 145 | \ Summary: Move loading screen binaries into screen memory and load and run 146 | \ the main game code 147 | \ 148 | \ ****************************************************************************** 149 | 150 | .ENTRY 151 | 152 | MVE DIALS, &7000, &E \ Move the binary at DIALS (the dashboard background) to 153 | \ locations &7000-&7DFF in screen memory (14 pages) 154 | 155 | \MVE DATE, &6000, &1 \ This instruction is commented out in the original 156 | \ course, but it would move the binary at DATE to 157 | \ locations &6000-&60FF in screen memory (1 page), 158 | \ which would display the following message on the 159 | \ loading screen: "2nd Pro ELITE -Finished 13/12/84" 160 | 161 | MVE ASOFT, &4200, &1 \ Move the binary at ASOFT (the "Acornsoft" heading) to 162 | \ locations &4200-&42FF in screen memory (1 page) 163 | 164 | MVE ELITE, &4600, &1 \ Move the binary at ELITE (the "ELITE" heading) to 165 | \ locations &4600-&46FF in screen memory (1 page) 166 | 167 | MVE CpASOFT, &6C00, &1 \ Move the binary at CpASOFT (the Acornsoft copyright 168 | \ message) to locations &6C00-&6CFF in screen memory 169 | \ (1 page) 170 | 171 | LDX #LO(MESS2) \ Set (Y X) to point to MESS2 ("R.I.CODE") 172 | LDY #HI(MESS2) 173 | 174 | JSR OSCLI \ Call OSCLI to run the OS command in MESS2, which *RUNs 175 | \ the main I/O processor game code in I.CODE 176 | 177 | LDX #LO(MESS3) \ Set (Y X) to point to MESS3 ("R.P.CODE") 178 | LDY #HI(MESS3) 179 | 180 | JMP OSCLI \ Call OSCLI to run the OS command in MESS3, which *RUNs 181 | \ the main parasite game code in P.CODE, returning from 182 | \ the subroutine using a tail call 183 | 184 | \ ****************************************************************************** 185 | \ 186 | \ Name: MESS2 187 | \ Type: Variable 188 | \ Category: Loader 189 | \ Summary: The OS command string for running the I/O processor's main game 190 | \ code in file I.CODE 191 | \ 192 | \ ****************************************************************************** 193 | 194 | .MESS2 195 | 196 | EQUS "R.I.CODE" \ This is short for "*RUN I.CODE" 197 | EQUB 13 198 | 199 | \ ****************************************************************************** 200 | \ 201 | \ Name: MESS3 202 | \ Type: Variable 203 | \ Category: Loader 204 | \ Summary: The OS command string for running the parasite's main game code 205 | \ in file P.CODE 206 | \ 207 | \ ****************************************************************************** 208 | 209 | .MESS3 210 | 211 | EQUS "R.P.CODE" \ This is short for "*RUN P.CODE" 212 | EQUB 13 213 | 214 | \ ****************************************************************************** 215 | \ 216 | \ Name: MVBL 217 | \ Type: Subroutine 218 | \ Category: Utility routines 219 | \ Summary: Move a multi-page block of memory from one location to another 220 | \ 221 | \ ------------------------------------------------------------------------------ 222 | \ 223 | \ Arguments: 224 | \ 225 | \ Z1(1 0) The source address of the block to move 226 | \ 227 | \ Z2(1 0) The destination address of the block to move 228 | \ 229 | \ X Number of pages of memory to move (1 page = 256 bytes) 230 | \ 231 | \ ****************************************************************************** 232 | 233 | .MVPG 234 | 235 | \ This subroutine is called from below to copy one page 236 | \ of memory from the address in Z1(1 0) to the address 237 | \ in Z2(1 0) 238 | 239 | LDY #0 \ We want to move one page of memory, so set Y as a byte 240 | \ counter 241 | 242 | .MPL 243 | 244 | LDA (Z1),Y \ Copy the Y-th byte of the Z1(1 0) memory block to the 245 | STA (Z2),Y \ Y-th byte of the Z2(1 0) memory block 246 | 247 | DEY \ Decrement the byte counter 248 | 249 | BNE MPL \ Loop back to copy the next byte until we have done a 250 | \ whole page of 256 bytes 251 | 252 | RTS \ Return from the subroutine 253 | 254 | .MVBL 255 | 256 | JSR MVPG \ Call MVPG above to copy one page of memory from the 257 | \ address in Z1(1 0) to the address in Z2(1 0) 258 | 259 | INC Z1+1 \ Increment the high byte of the source address to point 260 | \ to the next page 261 | 262 | INC Z2+1 \ Increment the high byte of the destination address to 263 | \ point to the next page 264 | 265 | DEX \ Decrement the page counter 266 | 267 | BPL MVBL \ Loop back to copy the next page until we have done X 268 | \ pages 269 | 270 | RTS \ Return from the subroutine 271 | 272 | \ ****************************************************************************** 273 | \ 274 | \ Name: Elite loader (Part 2 of 2) 275 | \ Type: Subroutine 276 | \ Category: Loader 277 | \ Summary: Include binaries for loading screen and dashboard images 278 | \ 279 | \ ------------------------------------------------------------------------------ 280 | \ 281 | \ The loader bundles a number of binary files in with the loader code, and moves 282 | \ them to their correct memory locations in part 1 above. 283 | \ 284 | \ There are five files, all containing images, which are all moved into screen 285 | \ memory by the loader: 286 | \ 287 | \ * Z.ACSOFT.bin contains the "ACORNSOFT" title across the top of the loading 288 | \ screen, which gets moved to screen address &4200, on the second character 289 | \ row of the mode 1 part of the screen (the top part) 290 | \ 291 | \ * Z.ELITE.bin contains the "ELITE" title across the top of the loading 292 | \ screen, which gets moved to screen address &4600, on the fourth character 293 | \ row of the mode 1 part of the screen (the top part) 294 | \ 295 | \ * Z.(C)ASFT.bin contains the "(C) Acornsoft 1984" title across the bottom 296 | \ of the loading screen, which gets moved to screen address &6C00, the 297 | \ penultimate character row of the top part of the screen, just above the 298 | \ dashboard 299 | \ 300 | \ * P.DIALS2P.bin contains the dashboard, which gets moved to screen address 301 | \ &7000, which is the starting point of the eight-colour mode 2 portion at 302 | \ the bottom of the split screen 303 | \ 304 | \ * P.DATE2P.bin contains the version text "2nd Pro ELITE -Finished 13/12/84", 305 | \ though the code to show this on-screen in part 1 is commented out, as this 306 | \ was presumably used to identify versions of the game during development. 307 | \ If the MVE macro instruction in part 1 is uncommented, then this binary 308 | \ gets moved to screen address &6000, which displays the version message in 309 | \ the middle of the top part of the screen 310 | \ 311 | \ ****************************************************************************** 312 | 313 | .DIALS 314 | 315 | INCBIN "1-source-files/images/P.DIALS2P.bin" 316 | 317 | .DATE 318 | 319 | INCBIN "1-source-files/images/P.DATE2P.bin" 320 | 321 | .ASOFT 322 | 323 | INCBIN "1-source-files/images/Z.ACSOFT.bin" 324 | 325 | .ELITE 326 | 327 | INCBIN "1-source-files/images/Z.ELITE.bin" 328 | 329 | .CpASOFT 330 | 331 | INCBIN "1-source-files/images/Z.(C)ASFT.bin" 332 | 333 | \ ****************************************************************************** 334 | \ 335 | \ Save ELITEa.bin 336 | \ 337 | \ ****************************************************************************** 338 | 339 | PRINT "S.ELITEa ", ~CODE%, " ", ~P%, " ", ~LOAD%, " ", ~LOAD% 340 | SAVE "3-assembled-output/ELITEa.bin", CODE%, P%, LOAD% 341 | -------------------------------------------------------------------------------- /1-source-files/main-sources/elite-readme.asm: -------------------------------------------------------------------------------- 1 | \ ****************************************************************************** 2 | \ 3 | \ 6502 SECOND PROCESSOR ELITE README SOURCE 4 | \ 5 | \ 6502 Second Processor Elite was written by Ian Bell and David Braben and is 6 | \ copyright Acornsoft 1985 7 | \ 8 | \ The code in this file is identical to the source discs released on Ian Bell's 9 | \ personal website at http://www.elitehomepage.org/ (it's just been reformatted 10 | \ to be more readable) 11 | \ 12 | \ The commentary is copyright Mark Moxon, and any misunderstandings or mistakes 13 | \ in the documentation are entirely my fault 14 | \ 15 | \ The terminology and notations used in this commentary are explained at 16 | \ https://elite.bbcelite.com/terminology 17 | \ 18 | \ The deep dive articles referred to in this commentary can be found at 19 | \ https://elite.bbcelite.com/deep_dives 20 | \ 21 | \ ------------------------------------------------------------------------------ 22 | \ 23 | \ This source file produces a README file for 6502 Second Processor Elite. 24 | \ 25 | \ ------------------------------------------------------------------------------ 26 | \ 27 | \ This source file produces the following binary file: 28 | \ 29 | \ * README.txt 30 | \ 31 | \ ****************************************************************************** 32 | 33 | INCLUDE "1-source-files/main-sources/elite-build-options.asm" 34 | 35 | _SOURCE_DISC = (_VARIANT = 1) 36 | _SNG45 = (_VARIANT = 2) 37 | _EXECUTIVE = (_VARIANT = 3) 38 | 39 | .readme 40 | 41 | EQUB 10, 13 42 | EQUS "---------------------------------------" 43 | EQUB 10, 13 44 | EQUS "Acornsoft Elite" 45 | EQUB 10, 13 46 | EQUB 10, 13 47 | EQUS "Version: BBC with 6502 Second Processor" 48 | EQUB 10, 13 49 | 50 | IF _SOURCE_DISC 51 | 52 | EQUS "Variant: Ian Bell's source disc" 53 | EQUB 10, 13 54 | 55 | ELIF _SNG45 56 | 57 | EQUS "Variant: Acornsoft SNG45 release" 58 | EQUB 10, 13 59 | EQUS "Product: Acornsoft SNG45" 60 | EQUB 10, 13 61 | EQUS " Acornsoft SNG47" 62 | EQUB 10, 13 63 | 64 | ELIF _EXECUTIVE 65 | 66 | EQUS "Variant: The Executive version" 67 | EQUB 10, 13 68 | 69 | ENDIF 70 | 71 | EQUB 10, 13 72 | EQUS "See www.bbcelite.com for details" 73 | EQUB 10, 13 74 | EQUS "---------------------------------------" 75 | EQUB 10, 13 76 | 77 | SAVE "3-assembled-output/README.txt", readme, P% 78 | 79 | -------------------------------------------------------------------------------- /1-source-files/original-sources/A5022201 6502 Second Processor sources [DSD disc image].zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/1-source-files/original-sources/A5022201 6502 Second Processor sources [DSD disc image].zip -------------------------------------------------------------------------------- /1-source-files/original-sources/B.ELITAS.inf: -------------------------------------------------------------------------------- 1 | $.ELITASB 000000 000000 000693 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/B.ELITAS.txt: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITEa - Second I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C% 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 3000FORZ=4TO6STEP2 9 | 3010P%=C%:O%=CODE 10 | 4000[OPTZ 11 | 5000.ENTRY 12 | 5130EQUS FNMVE(DIALS,&7000,&E) \Move Dials bit dump to screen 13 | 5140EQUS FNMVE(DATE,&6000,&1) 14 | 5150EQUS FNMVE(ASOFT,&4200,&1) 15 | 5160EQUS FNMVE(ELITE,&4600,&1) 16 | 5170EQUS FNMVE(CpASOFT,&6C00,&1) 17 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JSRSCLIS \*RUN I-CODE 18 | 5220LDX#(MESS3 MOD256):LDY#(MESS3 DIV256):JMPSCLIS \*RUN P-CODE 19 | 6500.MVPG LDY#0:.MPL LDA(Z1),Y:STA(Z2),Y:DEY:BNEMPL:RTS 20 | 6550.MVBL JSRMVPG:INCZ1+1:INCZ2+1:DEX:BPLMVBL:RTS 21 | 6700.DIALS EQUS FNSHUVE(":2.P.DIALS2P",&E00) 22 | 6710.MESS2 EQUS("R.I.CODE"):EQUB13 23 | 6720.SCLIS JMPSCLI 24 | 6730.ASOFT EQUS FNSHUVE(":2.Z.ACSOFT",&200) 25 | 6735.MESS3 EQUS("R.P.CODE"):EQUB13 26 | 6740.ELITE EQUS FNSHUVE(":2.Z.ELITE",&200) 27 | 6750.CpASOFT EQUS FNSHUVE(":2.Z.(C)ASFT",&200) 28 | 7000] 29 | 7020NEXTZ 30 | 7100PRINT~CODE O% P% ENTRY 31 | 7110INPUT"Insert destination disk and hit RETURN"A$ 32 | 7120OSCLI("S.:0.$.ELITEa "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 33 | 7200END 34 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 35 | 10100DEF FNE(I%) 36 | 10110[OPTZ 37 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 38 | 10130] 39 | 10140="" 40 | 10200DEF FNMVE(S%,D%,PA%) 41 | 10210[OPTZ 42 | 10220LDA#(S%MOD256):STAZ1:LDA#(S%DIV256):STAZ1+1:LDA#(D%MOD256):STAZ2:LDA#(D%DIV256):STAZ2+1:LDX#PA%:JSRMVBL 43 | 10230] 44 | 10240="" 45 | 10400DEF FNSHUVE(A$,LE%) 46 | 10420IF Z=6 OSCLI("L."+A$+" "+STR$~O%) 47 | 10430P%=P%+LE%:O%=O%+LE% 48 | 10440="" 49 | -------------------------------------------------------------------------------- /1-source-files/original-sources/B.ELITES.inf: -------------------------------------------------------------------------------- 1 | $.ELITESB 000000 000000 000E24 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/B.ELITES.txt: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITE I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C%:svn=&7FFD 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7:IRQ1V=&204 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 1030VIA=&FE40 9 | 3000FORZ=4TO6STEP2 10 | 3010P%=C%:O%=CODE 11 | 3015RESTORE:READN% 12 | 3020B%=P%:FORI%=0TON%-1:READA:PROCP(A):NEXT 13 | 3100E%=P%:FORI%=1TO4:FORJ%=1TO14:READA:PROCP(A):NEXT, 14 | 4000[OPTZ 15 | 4980\..... 16 | 5000.ENTRY LDA#16:LDX#3:JSROSBYTE \ADC 17 | 5001LDA#190:LDX#8:JSROSB \8bitADC 18 | 5002LDA#200:LDX#3:JSROSB \break,escape 19 | 5005LDA#144:LDX#255:JSROSB \TV 20 | 5006LDA#225:LDX#128:JSROSB \fn keys 21 | 5007LDA#13:LDX#2:JSROSB \kybrd buffer 22 | 5008LDA#(B% MOD256):STAZP:LDA#(B% DIV256):STAZP+1:LDY#0:.LOOP LDA(ZP),Y:JSROSWRCH:INY:CPY#N%:BNELOOP \set up mode 23 | 5009LDA#20:LDX#0:JSROSB \Implode character definitions 24 | 5010LDA#4:LDX#1:JSROSB \cursor 25 | 5020LDA#9:LDX#0:JSROSB \flashing 26 | 5030\.... 27 | 5050JSRPLL1 \Draw Saturn 28 | 5060\.... 29 | 5100EQUS FNE(0):EQUS FNE(1):EQUS FNE(2):EQUS FNE(3) \envelopes 30 | 5110\..... 31 | 5200LDX#(MESS1 MOD256):LDY#(MESS1 DIV256):JSRSCLI \*DIR E 32 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JMPSCLI \*RUN ELITEa 33 | 5370\ 34 | 5380\......Saturn....... 35 | 5390\ 36 | 5400.PLL1 LDAVIA+4:STARAND+1:JSRDORND:JSRSQUA2:STAZP+1:LDAP:STAZP:JSRDORND:STAYY:JSRSQUA2:TAX:LDAP:ADCZP:STAZP:TXA:ADCZP+1:BCSPLC1 37 | 5410STAZP+1:LDA#1:SBCZP:STAZP:LDA#&40:SBCZP+1:STAZP+1:BCCPLC1:JSRROOT:LDAZP:LSRA:TAX:LDAYY:CMP#128:RORA:JSRPIX 38 | 5420.PLC1 DECCNT:BNEPLL1:DECCNT+1:BNEPLL1 39 | 5450.PLL2 JSRDORND:TAX:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:ADCZP+1:CMP#&11:BCCPLC2:LDAYY:JSRPIX 40 | 5460.PLC2 DECCNT2:BNEPLL2:DECCNT2+1:BNEPLL2 41 | 5500.PLL3 JSRDORND:STAZP:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:STAT 42 | 5510ADCZP+1:STAZP+1:LDAZP:CMP#128:RORA:CMP#128:RORA:ADCYY:TAX:JSRSQUA2:TAY:ADCZP+1 43 | 5520BCSPLC3:CMP#&50:BCSPLC3:CMP#&20:BCCPLC3:TYA:ADCT:CMP#&10:BCSPL1:LDAZP:BPLPLC3:.PL1 LDAYY:JSRPIX 44 | 5550.PLC3 DECCNT3:BNEPLL3:DECCNT3+1:BNEPLL3 45 | 5800.DORND LDARAND+1:TAX:ADCRAND+3:STARAND+1:STXRAND+3:LDARAND:TAX:ADCRAND+2:STARAND:STXRAND+2:RTS 46 | 5810.RAND EQUD &34785349 47 | 5815.SQUA2 BPLSQUA:EOR#FF:CLC:ADC#1 48 | 5820.SQUA STAQ:STAP:LDA#0:LDY#8:LSRP:.SQL1 BCCSQ1:CLC:ADCQ:.SQ1 RORA:RORP:DEY:BNESQL1:RTS 49 | 5850.PIX TAY:EOR#128:LSRA:LSRA:LSRA:ASLA:ORA#&40:STAZP+1:TXA:EOR#128:AND#&FC:ASLA:STAZP:BCCP%+4:INCZP+1:TYA:AND#7:TAY:TXA:AND#7:TAX 50 | 5860LDATWOS,X:STA(ZP),Y:RTS 51 | 5870.TWOS EQUD &10204080:EQUD&01020408 52 | 5880.CNT EQUW&300:.CNT2 EQUW &1DD:.CNT3 EQUW &333 53 | 5890.ROOT LDYZP+1:LDAZP:STAQ:LDX#0:STXZP:LDA#8:STAP:.LL6 CPXZP:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCZP:TAX:.LL7 ROLZP:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:DECP:BNELL6:RTS 54 | 5900.OSB LDY#0:JMPOSBYTE 55 | 6000.MESS1 EQUS("DIR E"):EQUB13 56 | 6010.MESS2 EQUS("R.$.ELITEa"):EQUB13 57 | 7000] 58 | 7020NEXTZ 59 | 7100PRINT~CODE O% P% ENTRY 60 | 7110INPUT"Insert destination disk and hit RETURN"A$ 61 | 7120OSCLI("S.:0.$.ELITE "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 62 | 7200END 63 | 8000DATA67 64 | 8100DATA 22,1,28,2,17,15,16 65 | 8110DATA 23,0, 6,31,0,0,0,0,0,0 66 | 8112DATA 23,0,12, 8,0,0,0,0,0,0 67 | 8114DATA 23,0,13, 0,0,0,0,0,0,0 68 | 8116DATA 23,0, 1,64,0,0,0,0,0,0 69 | 8118DATA 23,0, 2,94,0,0,0,0,0,0 70 | 8120DATA 23,0,10,32,0,0,0,0,0,0 71 | 9100DATA1,1,0,111,-8,4,1,8, 8,-2,0,-1,126,44 72 | 9110DATA2,1,14,-18,-1,44,32,50, 6,1,0,-2,120,126 73 | 9120DATA3,1,1,-1,-3,17,32,128,1,0,0,-1,1,1 74 | 9130DATA4,1,4,-8,44,4,6,8,22,0,0,-127,126,0 75 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 76 | 10100DEF FNE(I%) 77 | 10110[OPTZ 78 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 79 | 10130] 80 | 10140="" 81 | -------------------------------------------------------------------------------- /1-source-files/original-sources/O.ELITES.inf: -------------------------------------------------------------------------------- 1 | $.ELITESO 000000 000000 001124 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/O.ELITES.txt: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITE I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C%:svn=&7FFD 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7:IRQ1V=&204 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 1030VIA=&FE40 9 | 1040MESS2=&8888:happy=&8888 10 | 3000FORZ=4TO6STEP2 11 | 3010P%=C%:O%=CODE 12 | 3015RESTORE:READN% 13 | 3020B%=P%:FORI%=0TON%-1:READA:PROCP(A):NEXT 14 | 3100E%=P%:FORI%=1TO4:FORJ%=1TO14:READA:PROCP(A):NEXT, 15 | 4000[OPTZ 16 | 4900.ENTRY CLD 17 | 4910LDA#&81:LDX#0:LDY#&FF:JSROSBYTE:TXA:BNEnot0:TYA:BNEnot0:JMPhappy:.not0 INX:BNEblap1:INY:BEQblap2 18 | 4920.blap1 JMPhappy\JSRZZZAP\BRK\BRK\EQUS" This program only runs on a BBC Micro with 6502 Second Processor\EQUW&0C0A\BRK 19 | 4930.blap2 LDA#&EA:DEY:JSROSBYTE:TXA:BNEhappy:JSRZZZAP:BRK:BRK:EQUS"This program needs a 6502 Second Processor":EQUW&D0A:BRK 20 | 4940.ZZZAP LDA#(happy MOD256):STAZP:LDX#(happy DIV256):LDY#0:.ZZZAPL STXZP+1:STA(ZP),Y:INY:BNEZZZAPL:INX:CPX#((MESS2 DIV256)+1):BNEZZZAPL:RTS 21 | 4950.happy 22 | 4960\ Only run if OSBYTE&81,0,&FF returns X and Y zero OR if (OSBYTE&81,0,&FF returns XY=&FFFF AND OSBYTE&EA,0,&FF returns X nonzero) 23 | 4980\..... 24 | 5000LDA#16:LDX#3:JSROSBYTE \ADC 25 | 5001LDA#190:LDX#8:JSROSB \8bitADC 26 | 5002LDA#200:LDX#3:JSROSB \break,escape 27 | 5005LDA#144:LDX#255:JSROSB \TV 28 | 5006LDA#225:LDX#128:JSROSB \fn keys 29 | 5007LDA#13:LDX#2:JSROSB \kybrd buffer 30 | 5008LDA#(B% MOD256):STAZP:LDA#(B% DIV256):STAZP+1:LDY#0:.LOOP LDA(ZP),Y:JSROSWRCH:INY:CPY#N%:BNELOOP \set up mode 31 | 5009LDA#20:LDX#0:JSROSB \Implode character definitions 32 | 5010LDA#4:LDX#1:JSROSB \cursor 33 | 5020LDA#9:LDX#0:JSROSB \flashing 34 | 5030\.... 35 | 5050JSRPLL1 \Draw Saturn 36 | 5060\.... 37 | 5100EQUS FNE(0):EQUS FNE(1):EQUS FNE(2):EQUS FNE(3) \envelopes 38 | 5110\..... 39 | 5200LDX#(MESS1 MOD256):LDY#(MESS1 DIV256):JSRSCLI \*DIR E 40 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JMPSCLI \*RUN ELITEa 41 | 5370\ 42 | 5380\......Saturn....... 43 | 5390\ 44 | 5400.PLL1 LDAVIA+4:STARAND+1:JSRDORND:JSRSQUA2:STAZP+1:LDAP:STAZP:JSRDORND:STAYY:JSRSQUA2:TAX:LDAP:ADCZP:STAZP:TXA:ADCZP+1:BCSPLC1 45 | 5410STAZP+1:LDA#1:SBCZP:STAZP:LDA#&40:SBCZP+1:STAZP+1:BCCPLC1:JSRROOT:LDAZP:LSRA:TAX:LDAYY:CMP#128:RORA:JSRPIX 46 | 5420.PLC1 DECCNT:BNEPLL1:DECCNT+1:BNEPLL1 47 | 5450.PLL2 JSRDORND:TAX:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:ADCZP+1:CMP#&11:BCCPLC2:LDAYY:JSRPIX 48 | 5460.PLC2 DECCNT2:BNEPLL2:DECCNT2+1:BNEPLL2 49 | 5500.PLL3 JSRDORND:STAZP:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:STAT 50 | 5510ADCZP+1:STAZP+1:LDAZP:CMP#128:RORA:CMP#128:RORA:ADCYY:TAX:JSRSQUA2:TAY:ADCZP+1 51 | 5520BCSPLC3:CMP#&50:BCSPLC3:CMP#&20:BCCPLC3:TYA:ADCT:CMP#&10:BCSPL1:LDAZP:BPLPLC3:.PL1 LDAYY:JSRPIX 52 | 5550.PLC3 DECCNT3:BNEPLL3:DECCNT3+1:BNEPLL3 53 | 5800.DORND LDARAND+1:TAX:ADCRAND+3:STARAND+1:STXRAND+3:LDARAND:TAX:ADCRAND+2:STARAND:STXRAND+2:RTS 54 | 5810.RAND EQUD &34785349 55 | 5815.SQUA2 BPLSQUA:EOR#FF:CLC:ADC#1 56 | 5820.SQUA STAQ:STAP:LDA#0:LDY#8:LSRP:.SQL1 BCCSQ1:CLC:ADCQ:.SQ1 RORA:RORP:DEY:BNESQL1:RTS 57 | 5850.PIX TAY:EOR#128:LSRA:LSRA:LSRA:ASLA:ORA#&40:STAZP+1:TXA:EOR#128:AND#&FC:ASLA:STAZP:BCCP%+4:INCZP+1:TYA:AND#7:TAY:TXA:AND#7:TAX 58 | 5860LDATWOS,X:STA(ZP),Y:RTS 59 | 5870.TWOS EQUD &10204080:EQUD&01020408 60 | 5880.CNT EQUW&300:.CNT2 EQUW &1DD:.CNT3 EQUW &333 61 | 5890.ROOT LDYZP+1:LDAZP:STAQ:LDX#0:STXZP:LDA#8:STAP:.LL6 CPXZP:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCZP:TAX:.LL7 ROLZP:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:DECP:BNELL6:RTS 62 | 5900.OSB LDY#0:JMPOSBYTE 63 | 6000.MESS1 EQUS("DIR E"):EQUB13 64 | 6010.MESS2 EQUS("R.I.ELITEa"):EQUB13 65 | 7000] 66 | 7020NEXTZ 67 | 7100PRINT~CODE O% P% ENTRY 68 | 7110INPUT"Insert destination disk and hit RETURN"A$ 69 | 7120OSCLI("S.:0.$.ELITE "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 70 | 7200END 71 | 8000REM-------VDU CODES--------- 72 | 8010DATA67 73 | 8100DATA 22,1,28,2,17,15,16 74 | 8110DATA 23,0, 6,31,0,0,0,0,0,0 75 | 8112DATA 23,0,12, 8,0,0,0,0,0,0 76 | 8114DATA 23,0,13, 0,0,0,0,0,0,0 77 | 8116DATA 23,0, 1,64,0,0,0,0,0,0 78 | 8118DATA 23,0, 2,90,0,0,0,0,0,0 79 | 8120DATA 23,0,10,32,0,0,0,0,0,0 80 | 9000REM-------ENVELOPES--------- 81 | 9100DATA1,1,0,111,-8,4,1,8, 8,-2,0,-1,126,44 82 | 9110DATA2,1,14,-18,-1,44,32,50, 6,1,0,-2,120,126 83 | 9120DATA3,1,1,-1,-3,17,32,128,1,0,0,-1,1,1 84 | 9130DATA4,1,4,-8,44,4,6,8,22,0,0,-127,126,0 85 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 86 | 10100DEF FNE(I%) 87 | 10110[OPTZ 88 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 89 | 10130] 90 | 10140="" 91 | >*ASPOOL 92 | -------------------------------------------------------------------------------- /1-source-files/original-sources/O.PMODU.inf: -------------------------------------------------------------------------------- 1 | $.PMODUO 000000 000000 00124F 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/O.PMODU.txt: -------------------------------------------------------------------------------- 1 | 10REM Prepare SHIP MODULE 2 | 30D%=&D000 3 | 50 4 | 60 NUM%=0 5 | 70?&D000=&1B:IF ?&D000<>&1B PRINT"Need Tube":END 6 | 72READ DEX$ 7 | 73N$="P.SHIPS" 8 | 75IF HIMEM<>&8000 PRINT"Need LoBasic!":END 9 | 80PS=10000:SS=2 10 | 90RESTORE1000:READN%:B%=D%:E%=D%+2*N%:C%=E%+N% 11 | 100FORI%=1TON%:READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z 12 | 110IF I%=PS THEN !B%=&7F00:B%=B%+2:GOTO150 13 | 120IF I%<>SS GOTO140 14 | 130IF (NUM%AND1) READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z ELSE READa$,a$,a,a,a,a,a,a,a,a,a,a,a 15 | 140IF MID$(DEX$,I%,1)="." !B%=0:B%=B%+2:ELSE !B%=C%:B%=B%+2:C%=C%+EVAL("&"+B$) 16 | 150NEXT 17 | 160RESTORE2010:E%=D%+2*N%:C%=E%+N% 18 | 170FORI%=1TON%:READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z 19 | 180IF I%=PS GOTO240 20 | 190IF I%<>SS GOTO205 21 | 200IF (NUM%AND1) READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z ELSE READa$,a$,a,a,a,a,a,a,a,a,a,a,a 22 | 205IF MID$(DEX$,I%,1)="."GOTO240 23 | 206PRINTA$","; 24 | 210IF A$="BARREL" C2%=C% 25 | 220IF A$="ESCAP" C3%=C% 26 | 230PROCSET(C%):C%=C%+EVAL("&"+B$) 27 | 240NEXT:PRINT 'NUM%,~D% E% C% 28 | 250INPUT"Insert assembly disk in Drive 0 and hit RETURN"A$ 29 | 260OSCLI("S.:2."+N$+" "+STR$~D%+" "+STR$~(C%+10)) 30 | 270 31 | 290END 32 | 299 33 | 300REM Bit 0 => High Tek 34 | 302REM Bit 1 => Safe Sys 35 | 303 36 | 500REM :.Junk.::Trad::..PaH..::.LW. 37 | 502 38 | 510REM MSEPBBASSTCPBA-VSMKAGCWCAPFMTTCL 39 | 511REM ipslaosphroyon-iiardeboosyeohhoo 40 | 512REM scctrltluabtaa-pdmadk1rbptrrglng 41 | 513REM ..:......::....::.......::.....: 42 | 600DATA 1111111111111111111111111111111111......... 43 | 880REM MSEPBBASSTCPBA-VSMKAGCWCAPFMTTC 44 | 1000DATA 32 45 | 1005REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 46 | 1006 47 | 2010DATA MISSILE,FE, 40, 2, 44, 20, 1, 0, 0, 14, 0,&00 ,1 48 | 2020DATA SPCSTN,11C,160,240, 0, 21, 12, 6, 0,120, 0,&00 ,1 49 | 2022DATA DODEC, 15C,180,240, 0, 24, 12, 0, 0,125, 0,&00 ,1 50 | 2025REM ...Space Junk... 51 | 2030DATA ESCAP, 54, 16, 17, 8, 6, 4, 0, 0, 8,&20,&01 ,1 52 | 2040DATA PLATLET,40, 10, 16, 16, 04, 1, 0, 0, 05,&80,&00 ,0 53 | 2050DATA BARREL, A8, 20, 17, 15, 12, 3, 0, 0, 12, 0,&00 ,1 54 | 2060DATA BOULDER,A2, 30, 20, 30, 11, 2, 0, 1, 20, 0,&00 ,1 55 | 2070DATA ASTROID,D6, 80, 60, 30, 16, 7, 0, 5, 50, 0,&00 ,0 56 | 2080DATA SPLNTER,3C, 16, 20, 10, 6, 4, 0, 0, 8,&B0,&00 ,0 57 | 2090DATA SHUTTLE,132,50, 32, 8, 27, 8, 0, 0, 22, 15,&21 ,0 58 | 2100DATA TRANSP ,1E2,50, 32, 10, 36, 5, 0, 0, 16, 0,&61 ,0 59 | 2105REM ...Traders... 60 | 2110DATA COBRA, 188, 95,150, 28, 38, 9, 19, 0, 50, 3,&A0 ,0 61 | 2120DATA PYTHON, F2, 80,250, 20, 21, 9,&1B, 0, 40, 5,&A0 ,1 62 | 2130DATA BOA, F6, 70,250, 24, 22, 8,&1C, 0, 40, 5,&A0 ,0 63 | 2140DATA ANACON,102,100,252, 14, 22, 10,&3F, 0,&24, 7,&A1 ,0 64 | 2150DATA ASTROID,D6, 80,180, 30, 16, 11, 2, 0, 50, 7,&A1 ,0 65 | 2160DATA VIPER, DA, 75,140, 32, 19, 9, 17, 0, 23, 0,&C2 ,1 66 | 2162REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 67 | 2165REM ...Pack Hunters... 68 | 2170DATA SIDEWND,A8, 65, 70, 37, 15, 6, 16, 50, 20, 0,&0C ,1 69 | 2180DATA MAMBA, 12E, 70, 90, 30, 23, 7, 18,150, 25, 1,&8C ,1 70 | 2190DATA TIKRAIT,E6, 60, 80, 30, 21, 3, 16,100, 20, 1,&8C, 1 71 | 2200DATA ADDER, 130, 50, 85, 24, 24, 4, 16, 40, 20, 0,&8C, 0 72 | 2210DATA GECKO, C4, 99, 70, 30, 16, 5, 16, 55, 18, 0,&0C, 0 73 | 2220DATA COBMK1, C6, 99, 90, 26, 17, 5, 18, 75, 19, 3,&8C, 0 74 | 2230DATA WORM, B0, 99, 30, 23, 18, 3, 8, 0, 19, 0,&05, 0 75 | 2235REM ...Lone Wolves... 76 | 2240DATA COBRA, 188, 95,150, 28, 38, 9, 18,175, 50, 1,&8C ,1 77 | 2250DATA ASP, 12A, 60,150, 40, 25, 5,&29,200, 40, 0,&8C, 0 78 | 2260DATA PYTHON, F2, 80,250, 20, 21, 9, 27,200, 40, 2,&8C ,0 79 | 2270DATA FERDELA,11A,40,160, 30, 26, 5,&12, 0, 40, 0,&82, 1 80 | 2280DATA MORAY, D8, 30,100, 25, 17, 5, 16, 50, 40, 1,&0C, 0 81 | 2290DATA THAARG,11C, 99,240, 39, 25, 8, 22,500, 55, 0,&0C, 0 82 | 2300DATA TGLET, 6C, 40, 20, 30, 16, 3, 16, 50, 20,&F0,&04, 0 83 | 2310DATA CONSTRI,102,65,252, 36, 19, 10,&34, 0, 45,&03,&04, 0 84 | 2315REM..................... 85 | 2320DATA LOGO, 1B8,99,252, 36, 37, 12, 0, 0, 99,&00,&00, 0 86 | 2994 87 | 2995REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 88 | 2996 89 | 3000 REM length,hits rad,energy,vel,no.lines+1,no.exp nodes,no.missiles,Bounty,Distance at which point,barrel no,profile,used? 90 | 10000DEF PROCSET(C%):OSCLI("LOAD "+A$+" "+STR$~C%):C%?1=P*P MOD256:C%?2=P*P DIV256:C%?14=Q:C%?15=R:C%?5=4*S+5:C%?7=4*T+6:C%?19=U:C%?10=V MOD256:C%?11=V DIV256:C%?13=W:?C%=X:E%?(I%-1)=Y 91 | 10010IF 4*T+6>=4*S+1 THEN PRINT"Too many explosion nodes for "A$:STOP 92 | 10040IFA$="SPLNTER" THEN VDU7:OFSET=C3%-C%+C3%?3+(C3%?16)*256:C%?3=OFSET AND255:C%?16=(OFSET AND&FF00)DIV256 93 | 10050IFA$="TGLET" THEN VDU7:OFSET=C2%-C%+C2%?3+(C2%?16)*256:C%?3=OFSET AND255:C%?16=(OFSET AND&FF00)DIV256 94 | 10060ENDPROC 95 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEA.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 5GOTO120 6 | 20REM ELITE SP 7 | 40LOMEM=&4900 8 | 100C%=&1000:W%=&9200:L%=C%:HIMEM=W%:Z=0:SNE=&7C0:ACT=&7E0 9 | 110F%=&8888:G%=&8888 10 | 120NTY=34:D%=&D000:E%=D%+2*NTY:WP=&D00:UP=&800:K%=&8200:QQ16=FNUT(65):LS%=D%-1:QQ18=&400 11 | 130BRKV=&202 12 | 140LP=K%+&400 13 | 150X1TB=FNLT(&100):Y1TB=FNLT(&100):X2TB=FNLT(&100):Y2TB=FNLT(&100) 14 | 160X1UB=FNLT(&100):Y1UB=FNLT(&100):X2UB=FNLT(&100):Y2UB=FNLT(&100) 15 | 170X1VB=FNLT(&100):Y1VB=FNLT(&100):X2VB=FNLT(&100):Y2VB=FNLT(&100) 16 | 200MSL=1:SST=2:ESC=3:PLT=4:OIL=5:AST=7:SPL=8:SHU=9:CYL=11:ANA=14:HER=15:COPS=16:SH3=17:KRA=19:ADA=20:WRM=23:CYL2=24:ASP=25:THG=29:TGL=30:CON=31:LGO=32:COU=33:DOD=34 17 | 220NOST=18:NOSH=20:JL=ESC:JH=SHU+2:PACK=SH3:NI%=37:POW=15:B=&30 18 | 230Armlas=INT(128.5+1.5*POW):Mlas=50:NRU%=0:VE=&57:LL=30 19 | 500CYAN=&FF:RED=&F0:YELLOW=&F:GREEN=&AF:WHITE=&FA:MAGENTA=RED 20 | 510RED2=&3:GREEN2=&C:YELLOW2=&F:BLUE2=&30:MAG2=&33:CYAN2=&3C:WHITE2=&3F 21 | 600DUST=WHITE 22 | 1000FF=&FF:OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:OSFILE=&FFDD:SCLI=&FFF7:XX21=D% 23 | 1010SETXC=&85:SETYC=&86:clyns=&87:DODIALS=&8A:RDPARAMS=&88:DOmsbar=242:wscn=243:onescan=244:DOhfx=&84:DOdot=245:DOFE21=&83:VIAE=&8B:DOBULB=&8C:DODKS4=246:DOCATF=&8D:SETCOL=&8E:SETVDU19=&8F:DOsvn=&90:printcode=&92:prilf=&93 24 | 1020ZP=0:X=128:Y=96:RAND=FNZT(4):T1=FNZ:SC=FNZ2:SCH=SC+1:XX16=FNZT(18):P=FNZT(3):NEEDKEY=FNZ 25 | 1060XX0=FNZ2:INF=FNZ2:V=FNZ2:XX=FNZ2:YY=FNZ2:SUNX=FNZ2:BETA=FNZ:BET1=FNZ:XC=FNZ:YC=FNZ:QQ22=FNZ2:ECMA=FNZ:ALP1=FNZ:ALP2=FNZ2 26 | 1120XX15=FNZT(6):XX12=FNZT(6):X1=XX15:Y1=X1+1:X2=Y1+1:Y2=X2+1:K=FNZT(4) 27 | 1125LAS=FNZ:MSTG=FNZ:KL=FNUT(17) 28 | 1126f0=&20:f1=&71:f2=&72:f3=&73:f4=&14:f5=&74:f6=&75:f7=&16:f8=&76:f9=&77 29 | 1128KY1=KL+1:KY2=KL+2:KY3=KL+3:KY4=KL+4:KY5=KL+5:KY6=KL+6:KY7=KL+7:KY12=KL+8:KY13=KL+9:KY14=KL+10:KY15=KL+11:KY16=KL+12:KY17=KL+13:KY18=KL+14:KY19=KL+15:KY20=KL+16 30 | 1130INWK=FNZT(NI%):NEWB=INWK+36:XX19=INWK+33:XX1=INWK:LSP=FNZ:QQ15=FNZT(6):XX18=FNZT(9):QQ17=XX18:QQ19=QQ17+1:K5=XX18:K6=K5+4 31 | 1150BET2=FNZ2:DELTA=FNZ:DELT4=FNZ2:U=FNZ:Q=FNZ:R=FNZ:S=FNZ:XSAV=FNZ:YSAV=FNZ:XX17=FNZ 32 | 1160QQ11=FNZ:ZZ=FNZ:XX13=FNZ:MCNT=FNZ:DL=FNZ:TYPE=FNZ:ALPHA=FNZ:PBUP=FNZ:HBUP=FNZ:LBUP=FNZ 33 | 1195QQ12=FNZ:TGT=FNZ:COL=FNZ:FLAG=FNZ:CNT=FNZ:CNT2=FNZ:STP=FNZ:XX4=FNZ:XX20=FNZ:XX14=FNZ:RAT=FNZ:RAT2=FNZ:K2=FNZT(4) 34 | 1196widget=FNZ:safehouse=FNZT(6):messXC=FNZ 35 | 1400P%=C%:O%=W%:H%=L%+P%-C% 36 | 1410IFZ=4THENZ=6ELSEZ=4 37 | 1450FRIN=FNUT(NOSH+1):MANY=FNUT(NTY+1):SSPR=MANY+SST:JUNK=FNU 38 | 1460auto=FNU:ECMP=FNU:MJ=FNU:CABTMP=FNU:LAS2=FNU:MSAR=FNU:VIEW=FNU:LASCT=FNU:GNTMP=FNU:HFX=FNU:EV=FNU:DLY=FNU 39 | 1465de=FNU:T=&D1:XX2=&D2:K3=XX2:K4=XX2+14:REM16 40 | 1467JSTX=FNU:JSTY=FNU 41 | 1470LSO=FNWT(192):LSX=LSO:SX=FNWT(NOST+1):SXL=FNWT(NOST+1):SY=FNWT(NOST+1):SYL=FNWT(NOST+1):SZ=FNWT(NOST+1):SZL=FNWT(NOST+1):XX3=256:REM&70 42 | 1480LASX=FNW:LASY=FNW:XX24=FNW:ALTIT=FNW:SWAP=FNW:XP=FNW:YP=FNW:YS=FNW:BALI=FNW:UPO=FNW 43 | 1490XSAV2=FNU:YSAV2=FNU:NAME=FNUT(8) 44 | 1500TP=FNU:QQ0=FNU:QQ1=FNU:QQ21=FNUT(6):CASH=FNUT(4):QQ14=FNU:COK=FNU:GCNT=FNU:LASER=FNUT(6):CRGO=FNU:QQ20=FNUT(17):ECM=FNU:BST=FNU:BOMB=FNU:ENGY=FNU:DKCMP=FNU:GHYP=FNU:ESCP=FNUT(5) 45 | 1520NOMSL=FNU:FIST=FNU:AVL=FNUT(17):QQ26=FNU:TALLY=FNU2:SVC=FNU:MCH=FNU:MCH=FNU:NT%=MCH-TP:MCH=FNU 46 | 1628FSH=FNU:ASH=FNU:ENERGY=FNU:REMFF 47 | 1630COMX=FNU:COMY=FNU:QQ24=FNU:QQ25=FNU:QQ28=FNU:QQ29=FNU 48 | 1640gov=FNU:tek=FNU:SLSP=FNU2:VEC=&7FFE 49 | 1650QQ2=FNUT(6):QQ3=FNU:QQ4=FNU:QQ5=FNU:QQ6=FNU2:QQ7=FNU2:QQ8=FNU2:QQ9=FNU:QQ10=FNU:NOSTM=FNU 50 | 1660BUF=FNUT(100) 51 | 1800[OPTZ:.MOS brk:.COMC brk:.DNOIZ brk:.DAMP brk:.DJD brk:.PATG brk:.FLH brk:.JSTGY brk:.JSTE brk:.JSTK brk:.BSTK brk:.CATF brk:\cAXFYJK@ 52 | 2200]:Q%=FALSE:J%=O%+5:[OPTZ:.ZIP:.S1% 53 | 2220EQUS":0.E.":.NA% EQUS("JAMESON"):EQUB13:EQUB0 54 | 2230EQUB20\QQ0:EQUB173\QQ1:EQUD&2485A4A\QQ21:EQUW&B753 \Base seed 55 | 2240EQUD(((&E8030000)AND(NOTQ%))+((&CA9A3B)ANDQ%))\CASH,&80969800 56 | 2250EQUB70 fuel 57 | 2260EQUB 0 COK-UP 58 | 2270EQUB0 GAL COUNT 59 | 2280EQUBPOW+(128ANDQ%):EQUB(POW+128)ANDQ%:EQUB0:EQUB0:EQUW0 LASER:EQUB22+(15ANDQ%) \37 CRGO 60 | 2290EQUD0:EQUD0:EQUD0:EQUD0:EQUB0\crgo 61 | 2300EQUB Q% ECM 62 | 2310EQUB Q% BST 63 | 2320EQUB Q%AND127 BOMB 64 | 2330EQUB Q%AND1 ENGY 65 | 2340EQUB Q% DCK COMP 66 | 2350EQUB Q% GHYP 67 | 2360EQUB Q% ESCP 68 | 2370EQUD FALSE EXPAND 69 | 2380EQUB 3+(Q%AND1) MISSILES 70 | 2390EQUB FALSE FIST 71 | 2400EQUB16:EQUB15:EQUB17:EQUB0:EQUB3:EQUB28:EQUB14:EQUW0:EQUB10:EQUB0:EQUB17:EQUB58:EQUB7:EQUB9:EQUB8:EQUB0 72 | 2410EQUB 0 QQ26 73 | 2420EQUW 0 TALLY 74 | 2430EQUB 128 SVC 75 | 2440]CH%=NT%-2:CY%=0:FORI%=CH%+J%TO1+J%STEP-1:CH%=CH%+CY%+(I%?7):CY%=(CH%>255)AND1:CH%=CH%MOD256:CH%=CH%EOR(I%?8):NEXT:[OPTZ 76 | 2450.CHK2 EQUB CH% EOR&A9 77 | 2460.CHK EQUB CH% 78 | 2470EQUD0 79 | 2490RTS \checksum here 80 | 2500.S% CLD:SEC:LDA#G%MOD256:STA0:STASC:LDA#G%DIV256:STA1:STASC+1:LDA#(F%-1)MOD256:STA2:LDA#(F%-1)DIV256:STA3:LDX#prtblock MOD256:LDY#prtblock DIV256:LDA#249:JSROSWORD:LDX#SC:EQUB&AD \&8D 81 | 2501.prtblock EQUB2:EQUB&27:JMP(SC,X):PHP:PHY:LDA#&34:PHA:LDX#0:RTS:BRK:EQUS"ELITE - By Ian Bell & David Braben":EQUB10:EQUB13:BRK:LDASC:ADC2:CMPF%-1:BNEP%-2:EQUD&7547534:EQUD&452365:EQUB&8D 82 | 2600.G% JSRDEEOR:JSRCOLD:JSRChecksum:JMPBEGIN:NOP 83 | 2700.DEEOR LDY#0:STYSC:LDX#&13:.DEEL STXSC+1:TYA:EOR(SC),Y:EOR#&75:STA(SC),Y:DEY:BNEDEEL:INX:CPX#&A0:BNEDEEL:JMPBRKBK 84 | 3000.DOENTRY \after dock:JSRRES2:JSRLAUN:STZDELTA:STZQQ22+1\<<:STZGNTMP:\++:LDA#FF:STAFSH:STAASH:STAENERGY:JSRHALL:LDY#44:JSRDELAY:LDATP:AND#3:BNEEN1:LDATALLY+1:BEQEN4:LDAGCNT:LSRA:BNEEN4:JMPBRIEF:.EN1 CMP#3:BNEEN2:JMPDEBRIEF 85 | 3010.EN2 LDAGCNT:CMP#2:BNEEN4:LDATP:AND#&F:CMP#2:BNEEN3:LDATALLY+1:CMP#5:BCCEN4:JMPBRIEF2:.EN3 CMP#6:BNEEN5:LDAQQ0:CMP#215:BNEEN4:LDAQQ1:CMP#84:BNEEN4:JMPBRIEF3 86 | 3020.EN5 CMP#10:BNEEN4:LDAQQ0:CMP#63:BNEEN4:LDAQQ1:CMP#72:BNEEN4:JMPDEBRIEF2 87 | 3090.EN4 JMPBAY 88 | 3900.BRKBK LDA#(BRBR MOD256):SEI:STABRKV:LDA#(BRBR DIV256):STABRKV+1:CLI:RTS 89 | 4000.M% LDAK%:STARAND 90 | 4020LDXJSTX:JSRcntr:JSRcntr:TXA:EOR#128:TAY:AND#128:STAALP2:STXJSTX:EOR#128:STAALP2+1:TYA:BPLP%+7:EOR#FF:CLC:ADC#1:LSRA:LSRA:CMP#8:BCSP%+3:LSRA:STAALP1:ORAALP2:STAALPHA 91 | 4030LDXJSTY:JSRcntr:TXA:EOR#128:TAY:AND#128:STXJSTY:STABET2+1:EOR#128:STABET2:TYA:BPLP%+4:EOR#FF:ADC#4:LSRA:LSRA:LSRA:LSRA:CMP#3:BCSP%+3:LSRA:STABET1:ORABET2:STABETA 92 | 4040LDABSTK:BEQBS2:LDAKTRAN+10 \ADCno.3:LSRA:LSRA:CMP#40:BCCP%+4:LDA#40:STADELTA:BNEMA4:.BS2 93 | 4050LDAKY2:BEQMA17:LDADELTA:CMP#40:BCSMA17:INCDELTA:.MA17 LDAKY1:BEQMA4:DECDELTA:BNEMA4:INCDELTA:.MA4 94 | 4060LDAKY15:ANDNOMSL:BEQMA20:LDY#GREEN2:JSRABORT:LDA#40:JSRNOISE:LDA#0:STAMSAR:.MA20 LDAMSTG:BPLMA25:LDAKY14:BEQMA25:LDXNOMSL:BEQMA25:STAMSAR:LDY#YELLOW2:JSRMSBAR:.MA25 95 | 4064LDAKY16:BEQMA24:LDAMSTG:BMIMA64:JSRFRMIS:.MA24 LDAKY12:BEQMA76:ASLBOMB:.MA76 LDAKY20:BEQMA78:LDA#0:STAauto:.MA78 96 | 4070LDAKY13:ANDESCP:BEQnoescp:LDAMJ:BNEnoescp:JMPESCAPE:.noescp LDAKY18:BEQP%+5:JSRWARP:LDAKY17:ANDECM:BEQMA64:LDAECMA:BNEMA64:DECECMP:JSRECBLB2:.MA64 97 | 4075LDAKY19:ANDDKCMP:BEQMA68:STAauto:.MA68 98 | 4080LDA#0:STALAS:STADELT4:LDADELTA:LSRA:RORDELT4:LSRA:RORDELT4:STADELT4+1 99 | 4090LDALASCT:BNEMA3:LDAKY7:BEQMA3:LDAGNTMP:CMP#242:BCSMA3:LDXVIEW:LDALASER,X:BEQMA3:PHA:AND#127:STALAS:STALAS2:LDA#0:JSRNOISE:JSRLASLI:PLA:BPLma1:LDA#0:.ma1 AND#&FA:STALASCT:.MA3 100 | 4100LDX#0:.MAL1 101 | 4105STXXSAV:LDAFRIN,X:BNEP%+5:JMPMA18:STATYPE:JSRGINF 102 | 4110LDY#(NI%-1):.MAL2 LDA(INF),Y:STAINWK,Y:DEY:BPLMAL2:LDATYPE:BMIMA21:ASLA:TAY:LDAXX21-2,Y:STAXX0:LDAXX21-1,Y:STAXX0+1 103 | 4115LDABOMB:BPLMA21:CPY#2*SST:BEQMA21:CPY#2*CON:BCSMA21:LDAINWK+31:AND#32:BNEMA21:ASLINWK+31:SEC:RORINWK+31:JSREXNO2 104 | 4130.MA21 JSRMVEIT:LDY#(NI%-1):.MAL3 LDAINWK,Y:STA(INF),Y:DEY:BPLMAL3 105 | 4134LDAINWK+31:AND#&A0:JSRMAS4:BNEMA65:LDAINWK:ORAINWK+3:ORAINWK+6:BMIMA65:LDXTYPE:BMIMA65:CPX#SST:BEQISDK:AND#&C0:BNEMA65:CPX#MSL:BEQMA65 106 | 4138LDABST:ANDINWK+5:BPLMA58:CPX#OIL:BEQoily:LDY#0:LDA(XX0),Y:LSRA:LSRA:LSRA:LSRA:BEQMA58:ADC#1:BNEslvy2 107 | 4140.oily JSRDORND:AND#7:.slvy2 JSRtnpr1:LDY#78:BCSMA59:LDYQQ29:ADCQQ20,Y:STAQQ20,Y:TYA:ADC#208:JSRMESS 108 | 4141ASLNEWB:SEC:RORNEWB:.MA65 JMPMA26 109 | 4142.ISDK LDAK%+NI%+36:AND#4:BNEMA62:LDAINWK+14:CMP#&D6:BCCMA62:JSRSPS1:LDAXX15+2:CMP#89 \86:BCCMA62:LDAINWK+16:AND#&7F:CMP#80:BCCMA62:.GOIN JMPDOENTRY:.MA62 LDADELTA:CMP#5:BCCMA67:JMPDEATH 110 | 4143.MA59 JSREXNO3:.MA60 ASLINWK+31:SEC:RORINWK+31:.MA61 BNEMA26 111 | 4144.MA67 LDA#1:STADELTA:LDA#5:BNEMA63:.MA58 ASLINWK+31:SEC:RORINWK+31:LDAINWK+35:SEC:RORA:.MA63 JSROOPS:JSREXNO3:.MA26 112 | 4146LDANEWB:BPLP%+5:JSRSCAN:LDAQQ11:BNEMA15:JSRPLUT 113 | 4150JSRHITCH:BCCMA8:LDAMSAR:BEQMA47:JSRBEEP:LDXXSAV:LDY#RED2:JSRABORT2:.MA47 LDALAS:BEQMA8:LDX#15:JSREXNO:LDATYPE:CMP#SST:BEQMA14+2:CMP#CON:BCCBURN:LDALAS:CMP#(Armlas AND127):BNEMA14+2:LSRLAS:LSRLAS:.BURN LDAINWK+35:SEC:SBCLAS:BCSMA14 114 | 4155ASLINWK+31:SEC:RORINWK+31:LDATYPE:CMP#AST:BNEnosp:LDALAS:CMP#Mlas:BNEnosp:JSRDORND:LDX#SPL:AND#3:JSRSPIN2:.nosp LDY#PLT:JSRSPIN:LDY#OIL:JSRSPIN 115 | 4160JSREXNO2:.MA14 STAINWK+35:LDATYPE:JSRANGRY:.MA8 116 | 4180JSRLL9:.MA15 LDY#35:LDAINWK+35:STA(INF),Y:LDANEWB:BMIKS1S 117 | 4190LDAINWK+31:BPLMAC1:AND#&20:BEQMAC1:LDANEWB:AND#64:ORAFIST:STAFIST:LDADLY:ORAMJ:BNEKS1S:LDY#10:LDA(XX0),Y:BEQKS1S:TAX:INY:LDA(XX0),Y:TAY:JSRMCASH:LDA#0:JSRMESS:.KS1S JMPKS1 118 | 4192.MAC1 LDATYPE:BMIMA27:JSRFAROF:BCCKS1S:.MA27 119 | 4240LDY#31:LDAINWK+31:STA(INF),Y:LDXXSAV:INX:JMPMAL1:.MA18 LDABOMB:BPLMA77:ASLBOMB:JSRWSCAN:LDA#DOFE21:JSROSWRCH:LDA#&30:JSROSWRCH:.MA77 120 | 4250LDAMCNT:AND#7:BNEMA22:LDXENERGY:BPLb:LDXASH:JSRSHD:STXASH:LDXFSH:JSRSHD:STXFSH:.b SEC:LDAENGY:ADCENERGY:BCSP%+5:STAENERGY 121 | 4260LDAMJ:BNEMA23S:LDAMCNT:AND#31:BNEMA93:LDASSPR:BNEMA23S:TAY:JSRMAS2:BNEMA23S 122 | 4270LDX#28:.MAL4 LDAK%,X:STAINWK,X:DEX:BPLMAL4:INX:LDY#9:JSRMAS1:BNEMA23S:LDX#3:LDY#11:JSRMAS1:BNEMA23S:LDX#6:LDY#13:JSRMAS1:BNEMA23S 123 | 4280LDA#&C0:JSRFAROF2:BCCMA23S:JSRWPLS:JSRNWSPS:.MA23S JMPMA23 124 | 4300.MA22 LDAMJ:BNEMA23S:LDAMCNT:AND#31:.MA93 CMP#10:BNEMA29:LDA#50:CMPENERGY:BCCP%+6:ASLA:JSRMESS:LDY#FF:STYALTIT:INY:JSRm:BNEMA23:JSRMAS3:BCSMA23:SBC#&24:BCCMA28:STAR:JSRLL5:LDAQ:STAALTIT:BNEMA23:.MA28 JMPDEATH 125 | 4310.MA29 CMP#15:BNEMA33:LDAauto:BEQMA23:LDA#123:BNEMA34:.MA33 CMP#20:BNEMA23:LDA#30:STACABTMP:LDASSPR:BNEMA23:LDY#NI%:JSRMAS2:BNEMA23:JSRMAS3:EOR#FF:ADC#30:STACABTMP:BCSMA28 126 | 4320CMP#&E0:BCCMA23:LDABST:BEQMA23:LDADELT4+1:LSRA:ADCQQ14:CMP#70:BCCP%+4:LDA#70:STAQQ14:LDA#160:.MA34 JSRMESS 127 | 4350.MA23 LDALAS2:BEQMA16:LDALASCT:CMP#8:BCSMA16:JSRLASLI2:LDA#0:STALAS2:.MA16 128 | 4360LDAECMP:BEQMA69:JSRDENGY:BEQMA70:.MA69 LDAECMA:BEQMA66:DECECMA:BNEMA66:.MA70 JSRECMOF:.MA66 129 | 4380LDAQQ11:BNEoh:JSRSTARS:JMPPBFL 130 | 4500.SPIN JSRDORND:BPLoh:TYA:TAX:LDY#0:AND(XX0),Y:AND#15 131 | 4510.SPIN2 STACNT:.spl BEQoh:LDA#0:JSRSFS1:DECCNT:BNEspl+2:.oh RTS 132 | 5000.MT27 LDA#217:EQUB&2C:.MT28 LDA#220:CLC:ADCGCNT:BNEDETOK 133 | 5010.DETOK3 PHA:TAX:TYA:PHA:LDAV:PHA:LDAV+1:PHA:LDA#(RUTOK MOD256):STAV:LDA#(RUTOK DIV256):BNEDTEN 134 | 5020\..................... 135 | 5030.DETOK PHA:TAX:TYA:PHA:LDAV:PHA:LDAV+1:PHA 136 | 5040LDA#(TKN1 MOD256):STAV:LDA#(TKN1 DIV256):.DTEN STAV+1:LDY#0 137 | 5050.DTL1 LDA(V),Y:EOR#VE:BNEDT1:DEX:BEQDTL2 138 | 5060.DT1 INY:BNEDTL1:INCV+1:BNEDTL1 139 | 5070.DTL2 INY:BNEP%+4:INCV+1:LDA(V),Y:EOR#VE:BEQDTEX:JSRDETOK2:JMPDTL2:.DTEX PLA:STAV+1:PLA:STAV:PLA:TAY:PLA:RTS 140 | 5080\............. 141 | 5090.DETOK2 CMP#32:BCCDT3 142 | 5100BITDTW3:BPLDT8:TAX:TYA:PHA:LDAV:PHA:LDAV+1:PHA:TXA:JSRTT27:JMPDT7 \TT27 143 | 5110.DT8 CMP#91:BCCDTS:CMP#129:BCCDT6:CMP#215:BCCDETOK 144 | 5120SBC#215:ASLA:PHA:TAX:LDATKN2,X:JSRDTS:PLA:TAX:LDATKN2+1,X \letter pair 145 | 5130.DTS CMP#&41:BCCDT9:BITDTW6:BMIDT10:BITDTW2:BMIDT5:.DT10 ORADTW1:.DT5 ANDDTW8:.DT9 JMPDASC \ascii 146 | 5140.DT3 TAX:TYA:PHA:LDAV:PHA:LDAV+1:PHA \Magic 147 | 5150TXA:ASLA:TAX 148 | 5160LDAJMTB-2,X:STADTM+1:LDAJMTB-1,X:STADTM+2:TXA:LSRA:.DTM JSRDASC 149 | 5170.DT7 PLA:STAV+1:PLA:STAV:PLA:TAY:RTS 150 | 5180.DT6 STASC:TYA:PHA:LDAV:PHA:LDAV+1:PHA:JSRDORND:TAX:LDA#0:CPX#51:ADC#0:CPX#102:ADC#0:CPX#153:ADC#0:CPX#204:LDXSC:ADCMTIN-91,X:JSRDETOK:JMPDT7 \Multitoken 151 | 5190\.................... 152 | 5200.MT1 LDA#0:EQUB&2C:.MT2 LDA#32:STADTW1:LDA#0:STADTW6:RTS:.MT8 LDA#6:JSRDOXC:LDA#FF:STADTW2:RTS:.MT9 LDA#1:JSRDOXC:JMPTT66:.MT13 LDA#128:STADTW6:LDA#32:STADTW1:RTS 153 | 5210.MT6 LDA#128:STAQQ17:LDA#FF:EQUB&2C:.MT5 LDA#0:STADTW3:RTS:.MT14 LDA#128:EQUB&2C:.MT15 LDA#0:STADTW4:ASLA:STADTW5:RTS 154 | 5220.MT17 LDAQQ17:AND#191:STAQQ17:LDA#3:JSRTT27:LDXDTW5:LDABUF-1,X:JSRVOWEL:BCCMT171:DECDTW5:.MT171 LDA#153:JMPDETOK 155 | 5230.MT18 JSRMT19:JSRDORND:AND#3:TAY:.MT18L JSRDORND:AND#62:TAX:LDATKN2+2,X:JSRDTS:LDATKN2+3,X:JSRDTS:DEY:BPLMT18L:RTS 156 | 5240.MT19 LDA#&DF:STADTW8:RTS 157 | 5245.VOWEL ORA#32:CMP#ASC"a":BEQVRTS:CMP#ASC"e":BEQVRTS:CMP#ASC"i":BEQVRTS:CMP#ASC"o":BEQVRTS:CMP#ASC"u":BEQVRTS:CLC:.VRTS RTS 158 | 5246.WHITETEXT LDA#32:JSRDOVDU19:LDA#RED:JMPDOCOL 159 | 5250\............ 160 | 5260.JMTB EQUWMT1:EQUWMT2:EQUWTT27:EQUWTT27:EQUWMT5:EQUWMT6:EQUWDASC:EQUWMT8:EQUWMT9:EQUWDASC:EQUWNLIN4:EQUWDASC:EQUWMT13:EQUWMT14:EQUWMT15:EQUWMT16 161 | 5270EQUWMT17:EQUWMT18:EQUWMT19:EQUWDASC:EQUWCLYNS:EQUWPAUSE:EQUWMT23:EQUWPAUSE2:EQUWBRIS:EQUWMT26:EQUWMT27:EQUWMT28:EQUWMT29:EQUWWHITETEXT:EQUWDASC:EQUWDASC 162 | 5280\............. 163 | 6000.TKN2 EQUB12:EQUB10:EQUS"ABOUSEITILETSTONLONUTHNO":.QQ16 EQUS"ALLEXEGEZACEBISOUSESARMAINDIREA?ERATENBERALAVETIEDORQUANTEISRION" 164 | 7000.shpcol EQUB0:EQUBYELLOW:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN barrel 165 | 7010 EQUBRED:EQUBRED:EQUBRED:EQUBCYAN:EQUBCYAN transp 166 | 7020 EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBRED:EQUBCYAN Viper 167 | 7030 EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN Wor 168 | 7040 EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUBCYAN:EQUB&C9 Moray 169 | 7050 EQUBWHITE:EQUBWHITE:EQUBCYAN Con 170 | 7060 EQUBCYAN:EQUBCYAN 171 | 7100.scacol EQUB0:EQUBYELLOW2:EQUBGREEN2:EQUBBLUE2:EQUBBLUE2:EQUBBLUE2 barrel 172 | 7110 EQUBRED2:EQUBRED2:EQUBRED2:EQUBCYAN2:EQUBCYAN2 transp 173 | 7120 EQUBCYAN2:EQUBMAG2:EQUBMAG2:EQUBMAG2:EQUBRED2:EQUBCYAN2 Viper 174 | 7130 EQUBCYAN2:EQUBCYAN2:EQUBCYAN2:EQUBCYAN2:EQUBCYAN2:EQUBCYAN2:EQUBBLUE2 Wor 175 | 7140 EQUBCYAN2:EQUBCYAN2:EQUBMAG2:EQUBCYAN2:EQUBCYAN2 Moray 176 | 7150 EQUBWHITE2:EQUBCYAN2:EQUBCYAN2 Con 177 | 7160 EQUB0:EQUBCYAN2:EQUD0 178 | 7200.LSX2 :]:P%=P%+&100:O%=O%+&100:[OPTZ 179 | 7210.LSY2 :]:P%=P%+&100:O%=O%+&100 180 | 9510IFZ>4OSCLI"S.ELTA "+STR$~(S1%-P%+O%)+" "+STR$~O%+" "+STR$~S%+" "+STR$~S1% 181 | 9520PRINT"Done: A";:GOTO2 182 | 10100DEFFNZ=FNZT(1) 183 | 10110DEFFNZ2=FNZT(2) 184 | 10120DEFFNZT(N%):ZP=ZP+N%:=ZP-N% 185 | 10200DEFFNU=FNUT(1) 186 | 10210DEFFNU2=FNUT(2) 187 | 10220DEFFNUT(N%):UP=UP+N%:=UP-N% 188 | 10300DEFFNW=FNWT(1) 189 | 10310DEFFNW2=FNWT(2) 190 | 10320DEFFNWT(N%):WP=WP+N%:=WP-N% 191 | 10400DEFFNLT(N%):LP=LP+N%:=LP-N% 192 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEA.inf: -------------------------------------------------------------------------------- 1 | $.ELITEA 000000 000000 0037A6 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEB.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 20REM ELITE SP 7 | 1000O%=W%:H%=L%+P%-C% 8 | 1010J%=O%:[OPTZ 9 | 1300.UNIV:]FORI%=0TONOSH:!O%=K%+I%*NI%:O%=O%+2:P%=P%+2:NEXT:[OPTZ 10 | 1800.TWOS EQUD&10204080:EQUD&01020408:.TWOS2 EQUD&183060C0:EQUD&0303060C:.CTWOS EQUD&11224488:EQUB&88 11 | 2000.LL30 LDA#&81:JSROSWRCH:LDA#5:JSROSWRCH:LDAX1:JSROSWRCH:LDAY1:JSROSWRCH:LDAX2:JSROSWRCH:LDAY2:JMPOSWRCH 12 | 2100.LOIN STYT1:LDYLBUP:LDAX1:STALBUF,Y:LDAY1:STALBUF+1,Y:LDAX2:STALBUF+2,Y:LDAY2:STALBUF+3,Y:TYA:CLC:ADC#4:STALBUP:CMP#250:BCSLBFL:LDYT1:RTS 13 | 2110.LBFL LDYLBUP:BEQLBZE2:INY:LDA#&81:JSROSWRCH:TYA:JSROSWRCH:LDY#0:.LBFLL LDALBUF,Y:JSROSWRCH:INY:CPYLBUP:BNELBFLL:.LBZE2 STZLBUP \++:LDYT1:RTS 14 | 2200.LBUF :]:P%=P%+&100:O%=O%+&100:[OPTZ 15 | 2392.FLKB LDA#15:TAX:JMPOSBYTE:.NLIN3 JSRTT27:.NLIN4 LDA#19:BNENLIN2:.NLIN LDA#23:JSRINCYC:.NLIN2 STAY1:STAY2:LDA#YELLOW:JSRDOCOL:LDX#2:STXX1:LDX#254:STXX2:JSRLL30:LDA#CYAN:JMPDOCOL 16 | 2395.HLOIN2 JSREDGES:STYY1:LDA#0:STALSO,Y 17 | 2400.HLOIN STYT1:LDYHBUP:LDAX1:STAHBUF,Y:LDAX2:STAHBUF+1,Y:LDAY1:STAHBUF+2,Y:TYA:CLC:ADC#3:STAHBUP:BMIHBFL:LDYT1:RTS 18 | 2410.HBFL LDAHBUP:STAHBUF:CMP#2:BEQHBZE2:LDA#2:STAHBUP:LDA#247:LDX#(HBUF MOD256):LDY#(HBUF DIV256):JSROSWORD:.HBZE2 LDYT1:RTS 19 | 2420.HBZE LDA#2:STAHBUP:RTS 20 | 2430.HBUF EQUB0:EQUB0:]:P%=P%+&100:O%=O%+&100:[OPTZ 21 | 2470.TWFL EQUD&F0E0C080:EQUW&FCF8:EQUB&FE:.TWFR EQUD&1F3F7FFF:EQUD&0103070F 22 | 2580.PIX1 JSRADD:STAYY+1:TXA:STASYL,Y 23 | 2600.PIXEL2 24 | 2610LDAX1:BPLPX1:EOR#&7F:CLC:ADC#1:.PX1 EOR#128:TAX:LDAY1:AND#127:CMP#96:BCSPX4:LDAY1:BPLPX2:EOR#&7F:ADC#1:.PX2 STAT:LDA#97:SBCT 25 | 2620.PIXEL STYT1:LDYPBUP:STAPBUF+2,Y:TXA:STAPBUF+1,Y:LDAZZ:AND#&F8:STAPBUF,Y:TYA:CLC:ADC#3:STAPBUP:BMIPBFL:LDYT1:.PX4 RTS 26 | 2630.PBFL LDAPBUP:STApixbl:CMP#2:BEQPBZE2:LDA#2:STAPBUP:LDA#DUST:JSRDOCOL:LDA#241:LDX#(pixbl MOD256):LDY#(pixbl DIV256):JSROSWORD:.PBZE2 LDYT1:RTS 27 | 2635.PBZE LDA#2:STAPBUP:RTS 28 | 2636.PIXEL3 STYT1:LDYPBUP:STAPBUF+2,Y:TXA:STAPBUF+1,Y:LDAZZ:ORA#1:STAPBUF,Y:TYA:CLC:ADC#3:STAPBUP:BMIPBFL:LDYT1:RTS 29 | 2640.pixbl:.PBUF EQUB0:EQUB0:]:P%=P%+&100:O%=O%+&100:[OPTZ 30 | 3000.BLINE TXA:ADCK4:STAK6+2:LDAK4+1:ADCT:STAK6+3:LDAFLAG:BEQBL1:INCFLAG:BEQBL5 31 | 3010.BL1 LDAK5:STAXX15:LDAK5+1:STAXX15+1 32 | 3012LDAK5+2:STAXX15+2:LDAK5+3:STAXX15+3 33 | 3014LDAK6:STAXX15+4:LDAK6+1:STAXX15+5 34 | 3016LDAK6+2:STAXX12:LDAK6+3:STAXX12+1 35 | 3040JSRLL145:BCSBL5 36 | 3050LDYLSP:LDAX1:STALSX2,Y:LDAY1:STALSY2,Y:INY:LDAX2:STALSX2,Y:LDAY2:STALSY2,Y:INY:STYLSP 37 | 3052.BL5 LDAK6:STAK5:LDAK6+1:STAK5+1:LDAK6+2:STAK5+2:LDAK6+3:STAK5+3:LDACNT:CLC:ADCSTP:STACNT 38 | 3700RTS:.FLIP \LDAMJ\BNEFLIP-1:LDYNOSTM:.FLL1 LDXSY,Y:LDASX,Y:STAY1:STASY,Y:TXA:STAX1:STASX,Y:LDASZ,Y:STAZZ:JSRPIXEL2:DEY:BNEFLL1:RTS 39 | 3800.STARS LDXVIEW:BEQSTARS1:DEX:BNEST11:JMPSTARS6:.ST11 JMPSTARS2 40 | 4000.STARS1 41 | 4010LDYNOSTM:.STL1 JSRDV42:LDAR:LSRP:RORA:LSRP:RORA:ORA#1:STAQ 42 | 4012LDASZL,Y:SBCDELT4:STASZL,Y:LDASZ,Y:STAZZ:SBCDELT4+1:STASZ,Y 43 | 4020JSRMLU1:STAYY+1:LDAP:ADCSYL,Y:STAYY:STAR:LDAY1:ADCYY+1:STAYY+1:STAS 44 | 4030LDASX,Y:STAX1:JSRMLU2:STAXX+1:LDAP:ADCSXL,Y:STAXX:LDAX1:ADCXX+1:STAXX+1 45 | 4050EORALP2+1:JSRMLS1:JSRADD:STAYY+1:STXYY 46 | 4060EORALP2:JSRMLS2:JSRADD:STAXX+1:STXXX 47 | 4070LDXBET1:LDAYY+1:EORBET2+1:JSRMULTS-2:STAQ:JSRMUT2:ASLP:ROLA:STAT:LDA#0:RORA:ORAT:JSRADD:STAXX+1:TXA:STASXL,Y 48 | 4080LDAYY:STAR:LDAYY+1:STAS:\JSRMADSTASSTXR:LDA#0:STAP:LDABETA:EOR#128 49 | 4110JSRPIX1:LDAXX+1:STAX1:STASX,Y:AND#127:CMP#120:BCSKILL1:LDAYY+1:STASY,Y:STAY1:AND#127:CMP#120:BCSKILL1 50 | 4130LDASZ,Y:CMP#16:BCCKILL1:STAZZ 51 | 4140.STC1 JSRPIXEL2:DEY:BEQP%+5:JMPSTL1:RTS 52 | 4150.KILL1 JSRDORND:ORA#4:STAY1:STASY,Y:JSRDORND:ORA#8:STAX1:STASX,Y:JSRDORND:ORA#&90:STASZ,Y:STAZZ:LDAY1:JMPSTC1 53 | 4200.STARS6 54 | 4210LDYNOSTM:.STL6 JSRDV42:LDAR:LSRP:RORA:LSRP:RORA:ORA#1:STAQ 55 | 4220LDASX,Y:STAX1:JSRMLU2:STAXX+1:LDASXL,Y:SBCP:STAXX:LDAX1:SBCXX+1:STAXX+1 56 | 4230JSRMLU1:STAYY+1:LDASYL,Y:SBCP:STAYY:STAR:LDAY1:SBCYY+1:STAYY+1:STAS 57 | 4240LDASZL,Y:ADCDELT4:STASZL,Y:LDASZ,Y:STAZZ:ADCDELT4+1:STASZ,Y 58 | 4250LDAXX+1:EORALP2:JSRMLS1:JSRADD:STAYY+1:STXYY 59 | 4260EORALP2+1:JSRMLS2:JSRADD:STAXX+1:STXXX 60 | 4270LDAYY+1:EORBET2+1:LDXBET1:JSRMULTS-2:STAQ:LDAXX+1:STAS:EOR#128:JSRMUT1:ASLP:ROLA:STAT:LDA#0:RORA:ORAT:JSRADD:STAXX+1:TXA:STASXL,Y 61 | 4280LDAYY:STAR:LDAYY+1:STAS:\EOR#128:\JSRMADSTASSTXR:LDA#0:STAP:LDABETA 62 | 4310JSRPIX1:LDAXX+1:STAX1:STASX,Y:LDAYY+1:STASY,Y:STAY1:AND#127:CMP#110:BCSKILL6 63 | 4330LDASZ,Y:CMP#160:BCSKILL6:STAZZ 64 | 4340.STC6 JSRPIXEL2:DEY:BEQST3:JMPSTL6:.ST3 RTS 65 | 4350.KILL6 JSRDORND:AND#127:ADC#10:STASZ,Y:STAZZ:LSRA:BCSST4:LSRA:LDA#&FC:RORA:STAX1:STASX,Y:JSRDORND:STAY1:STASY,Y:JMPSTC6 66 | 4360.ST4 JSRDORND:STAX1:STASX,Y:LSRA:LDA#230:RORA:STAY1:STASY,Y:BNESTC6 67 | 4900.MAS1 LDAINWK,Y:ASLA:STAK+1:LDAINWK+1,Y:ROLA:STAK+2:LDA#0:RORA:STAK+3:JSRMVT3:STAINWK+2,X:LDYK+1:STYINWK,X:LDYK+2:STYINWK+1,X:AND#127:.MA9 RTS:.m LDA#0:.MAS2 ORAK%+2,Y:ORAK%+5,Y:ORAK%+8,Y:AND#127:RTS 68 | 4940.MAS3 LDAK%+1,Y:JSRSQUA2:STAR:LDAK%+4,Y:JSRSQUA2:ADCR:BCSMA30:STAR:LDAK%+7,Y:JSRSQUA2:ADCR:BCCP%+4:.MA30 LDA#FF:RTS 69 | 6980.wearedocked LDA#205:JSRDETOK:JSRTT67:JMPst6+3 70 | 6990.st4 LDX#9:CMP#25:BCSst3:DEX:CMP#10:BCSst3:DEX:CMP#2:BCSst3:DEX:BNEst3 71 | 7000.STATUS LDA#8:JSRTRADEMODE:JSRTT111:LDA#7:JSRDOXC:LDA#126:JSRNLIN3:LDA#15:LDYQQ12:BNEwearedocked:LDA#230:LDYJUNK:LDXFRIN+2,Y:BEQst6:LDYENERGY:CPY#128:ADC#1:.st6 JSRplf:LDA#125:JSRspc:LDA#19:LDYFIST:BEQst5:CPY#50:ADC#1 72 | 7010.st5 JSRplf:LDA#16:JSRspc:LDATALLY+1:BNEst4:TAX:LDATALLY:LSRA:LSRA:INX:LSRA:BNEP%-2:.st3 TXA:CLC:ADC#21:JSRplf 73 | 7030LDA#18:JSRplf2:LDACRGO:CMP#26:BCCP%+7:LDA#&6B:JSRplf2:LDABST:BEQP%+7:LDA#111:JSRplf2:LDAECM:BEQP%+7:LDA#&6C:JSRplf2:LDA#113:STAXX4:.stqv TAY:LDXBOMB-113,Y:BEQP%+5:JSRplf2:INCXX4:LDAXX4:CMP#117:BCCstqv 74 | 7040LDX#0:.st STXCNT:LDYLASER,X:BEQst1:TXA:CLC:ADC#96:JSRspc:LDA#103:LDXCNT:LDYLASER,X:CPY#128+POW:BNEP%+4:LDA#104:CPY#Armlas:BNEP%+4:LDA#117:CPY#Mlas:BNEP%+4:LDA#118:JSRplf2:.st1 LDXCNT:INX:CPX#4:BCCst:RTS 75 | 7100.plf2 JSRplf:LDA#6:JMPDOXC 76 | 7400.MVT3 LDAK+3:STAS:AND#128:STAT:EORINWK+2,X:BMIMV13:LDAK+1:CLC:ADCINWK,X:STAK+1:LDAK+2:ADCINWK+1,X:STAK+2:LDAK+3:ADCINWK+2,X:AND#127:ORAT:STAK+3:RTS 77 | 7410.MV13 LDAS:AND#127:STAS:LDAINWK,X:SEC:SBCK+1:STAK+1:LDAINWK+1,X:SBCK+2:STAK+2:LDAINWK+2,X:AND#127:SBCS:ORA#128:EORT:STAK+3:BCSMV14 78 | 7420LDA#1:SBCK+1:STAK+1:LDA#0:SBCK+2:STAK+2:LDA#0:SBCK+3:AND#127:ORAT:STAK+3:.MV14 RTS 79 | 7500.MVS5 LDAINWK+1,X:AND#127:LSRA:STAT:LDAINWK,X:SEC:SBCT:STAR:LDAINWK+1,X:SBC#0:STAS:LDAINWK,Y:STAP:LDAINWK+1,Y:AND#128:STAT:LDAINWK+1,Y:AND#127:LSRA:RORP:LSRA:RORP:LSRA:RORP:LSRA:RORP:ORAT:EORRAT2:STXQ:JSRADD:STAK+1:STXK 80 | 7510LDXQ:LDAINWK+1,Y:AND#127:LSRA:STAT:LDAINWK,Y:SEC:SBCT:STAR:LDAINWK+1,Y:SBC#0:STAS:LDAINWK,X:STAP:LDAINWK+1,X:AND#128:STAT:LDAINWK+1,X:AND#127:LSRA:RORP:LSRA:RORP:LSRA:RORP:LSRA:RORP:ORAT:EOR#128:EORRAT2 81 | 7520STXQ:JSRADD:STAINWK+1,Y:STXINWK,Y:LDXQ:LDAK:STAINWK,X:LDAK+1:STAINWK+1,X:RTS 82 | 7600.TENS EQUD&E87648 83 | 7605.pr2 LDA#3:LDY#0 84 | 7610.TT11 STAU:LDA#0:STAK:STAK+1:STYK+2:STXK+3:.BPRNT LDX#11:STXT:PHP:BCCTT30:DECT:DECU 85 | 7630.TT30 LDA#11:SEC:STAXX17:SBCU:STAU:INCU:LDY#0:STYS:JMPTT36 86 | 7640.TT35 ASLK+3:ROLK+2:ROLK+1:ROLK:ROLS:LDX#3:.tt35 LDAK,X:STAXX15,X:DEX:BPLtt35:LDAS:STAXX15+4 87 | 7650ASLK+3:ROLK+2:ROLK+1:ROLK:ROLS:ASLK+3:ROLK+2:ROLK+1:ROLK:ROLS:CLC:LDX#3:.tt36 LDAK,X:ADCXX15,X:STAK,X:DEX:BPLtt36:LDAXX15+4:ADCS:STAS 88 | 7660LDY#0:.TT36 LDX#3:SEC:.tt37 LDAK,X:SBCTENS,X:STAXX15,X:DEX:BPLtt37:LDAS:SBC#23:STAXX15+4 89 | 7670BCCTT37:LDX#3:.tt38 LDAXX15,X:STAK,X:DEX:BPLtt38:LDAXX15+4:STAS:INY:JMPTT36 90 | 7680.TT37 TYA:BNETT32:LDAT:BEQTT32:DECU:BPLTT34:LDA#32:BNEtt34:.TT32 LDY#0:STYT:CLC:ADC#B:.tt34 JSRTT26 91 | 7700.TT34 DECT:BPLP%+4:INCT:DECXX17:BMIrT10:BNEP%+10:PLP:BCCP%+7:LDA#&2E:JSRTT26:JMPTT35:.rT10 RTS 92 | 8000.DTW1 EQUB32:.DTW2 EQUBFF:.DTW3 EQUB0:.DTW4 brk:.DTW5 brk:.DTW6 brk:.DTW8 EQUBFF 93 | 8010.FEED LDA#12:EQUB&2C 94 | 8020.MT16 LDA#65:]:DTW7=MT16+1:[OPTZ 95 | 8030\ New TT26 entry for right justified text 96 | 8040.DASC:.TT26 STXSC:LDX#FF:STXDTW8:CMP#ASC".":BEQDA8:CMP#ASC":":BEQDA8:CMP#10:BEQDA8:CMP#12:BEQDA8:CMP#32:BEQDA8:INX:.DA8 STXDTW2:LDXSC:BITDTW4:BMIP%+5:JMPCHPR:BVSP%+6:CMP#12:BEQDA1:LDXDTW5:STABUF,X:LDXSC:INCDTW5:CLC:RTS 97 | 8050.DA1 TXA:PHA:TYA:PHA:.DA5 LDXDTW5:BEQDA6+3:CPX#(LL+1):BCCDA6:LSRSC+1:.DA11 LDASC+1:BMIP%+6:LDA#64:STASC+1:LDY#(LL-1):.DAL1 LDABUF+LL:CMP#32:BEQDA2 98 | 8060.DAL2 DEY:BMIDA11:BEQDA11:LDABUF,Y:CMP#32:BNEDAL2:ASLSC+1:BMIDAL2:STYSC:LDYDTW5:.DAL6 LDABUF,Y:STABUF+1,Y:DEY:CPYSC:BCSDAL6:INCDTW5:\LDA#32:.DAL3 CMPBUF,Y:BNEDAL1:DEY:BPLDAL3:BMIDA11 99 | 8070.DA2 LDX#LL:JSRDAS1:LDA#12:JSRCHPR 100 | 8080LDADTW5:\CLC:SBC#LL:STADTW5:TAX:BEQDA6+3:LDY#0:INX:.DAL4 LDABUF+LL+1,Y:STABUF,Y:INY:DEX:BNEDAL4:BEQDA5 101 | 8090.DAS1 LDY#0:.DAL5 LDABUF,Y:JSRCHPR:INY:DEX:BNEDAL5:.rT9 RTS 102 | 8100.DA6 JSRDAS1:STXDTW5:PLA:TAY:PLA:TAX:LDA#12:.DA7 EQUB&2C 103 | 8190.BELL LDA#7 104 | 8200.CHPR \PRINT 105 | 8205.CHPRD STAK3:CMP#32:BCCP%+4:INCXC:LDAQQ17:INA \++:BEQrT9:BITprintflag:BPLnoprinter:LDA#printcode:JSROSWRCH:.noprinter LDAK3:JSROSWRCH:CLC:RTS:.printflag BRK 106 | 9450\.......... 107 | 9500.DIALS LDA#RDPARAMS:JSROSWRCH:JSROSWRCH:LDAENERGY:JSROSWRCH:LDAALP1:JSROSWRCH:LDAALP2:JSROSWRCH:LDABETA:JSROSWRCH:LDABET1:JSROSWRCH:LDADELTA:JSROSWRCH:LDAALTIT:JSROSWRCH:LDAMCNT:JSROSWRCH:LDAFSH:JSROSWRCH:LDAASH:JSROSWRCH 108 | 9505LDAQQ14:JSROSWRCH:LDAGNTMP:JSROSWRCH:LDACABTMP:JSROSWRCH:LDAFLH:JSROSWRCH:LDAESCP:JSROSWRCH:LDAMCNT:AND#3:BEQP%+3:RTS:JMPCOMPAS 109 | 9800.ESCAPE JSRRES2:LDX#CYL:STXTYPE:JSRFRS1:BCSES1:LDX#CYL2:JSRFRS1:.ES1 LDA#8:STAINWK+27:LDA#&C2:STAINWK+30:LSRA:STAINWK+32:.ESL1 JSRMVEIT:JSRLL9:DECINWK+32:BNEESL1 110 | 9810JSRSCAN:LDA#0:LDX#16:.ESL2 STAQQ20,X:DEX:BPLESL2:STAFIST:STAESCP:LDA#70:STAQQ14:JMPGOIN 111 | 9850.HME2 LDA#CYAN:JSRDOCOL:LDA#14:JSRDETOK:JSRTT103:JSRTT81:LDA#0:STAXX20:.HME3 JSRMT14:JSRcpl:LDXDTW5:LDAINWK+5,X:CMP#13:BNEHME6:.HME4 DEX:LDAINWK+5,X:ORA#32:CMPBUF,X:BEQHME4:TXA:BMIHME5:.HME6 JSRTT20:INCXX20:BNEHME3:JSRTT111:JSRTT103 112 | 9860LDA#40:JSRNOISE:LDA#215:JMPDETOK:\Not found:.HME5 LDAQQ15+3:STAQQ9:LDAQQ15+1:STAQQ10:JSRTT111:JSRTT103:JSRMT15:JMPT95 113 | 9900] 114 | 9910IFZ>4OSCLI("S.ELTB "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H%) 115 | 9920PRINT" B";:GOTO6 116 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEB.inf: -------------------------------------------------------------------------------- 1 | $.ELITEB 000000 000000 0026BC 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEC.inf: -------------------------------------------------------------------------------- 1 | $.ELITEC 000000 000000 003AE6 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITED.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 20REM ELITE SP 11 | 30H%=L%+P%-C%:O%=W% 12 | 300[OPTZ 13 | 690.tnpr1 STAQQ29:LDA#1 14 | 700.tnpr pha:LDX#12:CPXQQ29:BCCkg:.Tml ADCQQ20,X:DEX:BPLTml:CMPCRGO:pla:RTS:.kg LDYQQ29:adcQQ20,Y:cmp#200:pla:rts 15 | 750NOP 16 | 810.DOXC PHA:BITprintflag:BPLDOX1:CMPXC:BCCDOXLF:BEQDOX1:PHY:PHX\++:SBCXC:TAX:.DOXL1 LDA#32:JSRTT26:DEX:BNEDOXL1:PLX:PLY\++:.DOX1 LDA#SETXC:JSROSWRCH:PLA:STAXC:JMPOSWRCH:.DOXLF LDA#13:JSRTT26:JMPDOX1 17 | 815.DOYC STAYC:PHA:LDA#SETYC:.label JSROSWRCH:PLA:JMPOSWRCH:.INCYC PHA:LDAYC:INA\++:JSRDOYC:PLA:RTS 18 | 820.DOCOL PHA:LDA#SETCOL:BNElabel 19 | 830.DOVDU19 PHA:LDA#SETVDU19:BNElabel 20 | 835.TRADEMODE PHA:JSRCTRL:STAprintflag:PLA:JSRTT66:JSRFLKB:LDA#48:JSRDOVDU19:LDA#CYAN\WH:JMPDOCOL 21 | 840.TT20 JSRP%+3:JSRP%+3 22 | 850.TT54 LDAQQ15:CLC:ADCQQ15+2:TAX:LDAQQ15+1:ADCQQ15+3:TAY 23 | 860LDAQQ15+2:STAQQ15:LDAQQ15+3:STAQQ15+1:LDAQQ15+5:STAQQ15+3:LDAQQ15+4:STAQQ15+2:CLC:TXA:ADCQQ15+2:STAQQ15+4:TYA:ADCQQ15+3:STAQQ15+5:RTS 24 | 950.TT146 LDAQQ8:ORAQQ8+1:BNETT63:JMPINCYC:\RTS:.TT63 LDA#191:JSRTT68 25 | 955LDXQQ8:LDYQQ8+1:SEC:JSRpr5:LDA#195:.TT60 JSRTT27:.TTX69 JSRINCYC:\JSRINCYC:.TT69 LDA#128:STAQQ17:.TT67 INCYC:LDA#12:JMPTT27 26 | 990.TT70 LDA#173:JSRTT27:JMPTT72:.spc JSRTT27:JMPTT162 27 | 1000.TT25\ DATA on system 28 | 1010LDA#1:JSRTRADEMODE:LDA#9:JSRDOXC:LDA#163:JSRNLIN3:JSRTTX69:JSRTT146:LDA#194 29 | 1030JSRTT68:LDAQQ3:CLC:ADC#1:LSRA:CMP#2:BEQTT70:LDAQQ3:BCCTT71 30 | 1040SBC#5:CLC:.TT71 ADC#170:JSRTT27:.TT72 LDAQQ3:LSRA:LSRA:CLC:ADC#168:JSRTT60:LDA#162:JSRTT68:LDAQQ4:CLC:ADC#177:JSRTT60:LDA#196:JSRTT68 31 | 1070LDXQQ5:INX:CLC:JSRpr2:JSRTTX69:LDA#192:JSRTT68:SEC:LDXQQ6:JSRpr2:LDA#198:JSRTT60:LDA#&28:JSRTT27:LDAQQ15+4:BMITT75:LDA#188:JSRTT27:JMPTT76:.TT75 LDAQQ15+5 32 | 1110LSRA:LSRA:PHA:AND#7:CMP#3:BCSTT205:ADC#227:JSRspc:.TT205 PLA:LSRA:LSRA:LSRA:CMP#6:BCSTT206:ADC#230:JSRspc:.TT206 LDAQQ15+3:EORQQ15+1:AND#7 33 | 1116STAQQ19:CMP#6:BCSTT207:ADC#236:JSRspc:.TT207 LDAQQ15+5:AND#3:CLC:ADCQQ19:AND#7:ADC#242:JSRTT27:.TT76 LDA#&53:JSRTT27:LDA#&29:JSRTT60 34 | 1127LDA#193:JSRTT68:LDXQQ7:LDYQQ7+1:JSRpr6:JSRTT162:LDA#0:STAQQ17:LDA#&4D:JSRTT27:LDA#226:JSRTT60:LDA#250:JSRTT68:LDAQQ15+5:LDXQQ15+3:AND#15:CLC:ADC#11:TAY 35 | 1150JSRpr5:JSRTT162:LDA#&6B:JSRTT26:LDA#&6D:JSRTT26:JSRTTX69 36 | 1155JMPPDESC 37 | 1160LDXZZ\LDY#PTEXT MOD256\STYINWK\LDY#(PTEXT DIV256)-1\STYINWK+1\LDY#FF\.PDT1 INY\BNEP%+4\INCINWK+1\LDA(INWK),Y\BNEPDT1\DEX\BNEPDT1\.PDT2 INY\BNEP%+4\INCINWK+1\STYINWK+2\LDA(INWK),Y\BEQTT24-1\JSRTT27\LDYINWK+2\JMPPDT2:RTS 38 | 1200.TT24 39 | 1210LDAQQ15+1:AND#7:STAQQ3:LDAQQ15+2:LSRA:LSRA:LSRA:AND#7:STAQQ4:LSRA:BNETT77:LDAQQ3:ORA#2:STAQQ3:.TT77 LDAQQ3:EOR#7:CLC:STAQQ5:LDAQQ15+3:AND#3:ADCQQ5:STAQQ5 40 | 1240LDAQQ4:LSRA:ADCQQ5:STAQQ5:ASLA:ASLA:ADCQQ3:ADCQQ4:ADC#1:STAQQ6:LDAQQ3:EOR#7:ADC#3:STAP:LDAQQ4:ADC#4:STAQ:JSRMULTU:LDAQQ6:STAQ:JSRMULTU:ASLP:ROLA:ASLP:ROLA:ASLP:ROLA:STAQQ7+1:LDAP:STAQQ7:RTS 41 | 1400.TT22\Lng Sc 42 | 1410LDA#64:JSRTT66:LDA#CYAN\WHITE:JSRDOCOL:LDA#16:JSRDOVDU19:LDA#7:JSRDOXC:JSRTT81:LDA#199:JSRTT27:JSRNLIN:LDA#152:JSRNLIN2:JSRTT14 43 | 1460LDX#0:.TT83 STXXSAV:LDXQQ15+3:LDYQQ15+4:TYA:ORA#&50:STAZZ 44 | 1470LDAQQ15+1:LSRA:CLC:ADC#24:STAXX15+1:JSRPIXEL:JSRTT20:LDXXSAV:INX:BNETT83:JSRPBFL:LDAQQ9:STAQQ19:LDAQQ10:LSRA:STAQQ19+1:LDA#4:STAQQ19+2 45 | 1700.TT15 LDA#CYAN:JSRDOCOL \<=Ian=>:.TT15b 46 | 1705LDA#24:LDXQQ11:BPLTT178:LDA#0:.TT178 STAQQ19+5:LDAQQ19:SEC:SBCQQ19+2:BCSTT84:LDA#0:.TT84 STAXX15:LDAQQ19:CLC:ADCQQ19+2:BCCTT85:LDA#255:.TT85 STAXX15+2 47 | 1725LDAQQ19+1:CLC:ADCQQ19+5:STAXX15+1:STAXX15+3:JSRLL30:LDAQQ19+1:SEC:SBCQQ19+2:BCSTT86:LDA#0:.TT86 CLC:ADCQQ19+5:STAXX15+1:LDAQQ19+1:CLC:ADCQQ19+2:ADCQQ19+5:CMP#152:BCCTT87 \<=Ian=> 48 | 1750LDXQQ11:BMITT87:LDA#151:.TT87 STAXX15+3:LDAQQ19:STAXX15:STAXX15+2:JMPLL30 49 | 1800.TT126 LDA#104:STAQQ19:LDA#90:STAQQ19+1:LDA#16:STAQQ19+2:JSRTT15:LDAQQ14:STAK:JMPTT128 50 | 2000.TT14\Crcl/+ 51 | 2010LDA#CYAN\WH:JSRDOCOL:LDAQQ11:BMITT126:LDAQQ14:LSRA:LSRA:STAK:LDAQQ0:STAQQ19:LDAQQ1:LSRA:STAQQ19+1:LDA#7:STAQQ19+2:JSRTT15:LDAQQ19+1:CLC:ADC#24:STAQQ19+1 52 | 2300.TT128 LDAQQ19:STAK3:LDAQQ19+1:STAK4:LDX#0:STXK4+1:STXK3+1:\STXLSX:INX:STXLSP:LDX#2:STXSTP 53 | 2310LDA#RED:JSRDOCOL:JMPCIRCLE2 54 | 2650.TT219\Buy cargo (f1) 55 | 2655LDA#2:JSRTRADEMODE:JSRTT163:LDA#128:STAQQ17:LDA#0:STAQQ29 56 | 2660.TT220 JSRTT151:LDAQQ25:BNETT224:JMPTT222:.TQ4 LDY#176:.Tc JSRTT162:TYA:JSRprq:.TTX224 JSRdn2:.TT224 57 | 2671JSRCLYNS:LDA#204:JSRTT27:LDAQQ29:CLC:ADC#208:JSRTT27:LDA#&2F:JSRTT27:JSRTT152:LDA#&3F:JSRTT27:JSRTT67:LDX#0:STXR:LDX#12:STXT1:.TT223 58 | 2700JSRgnum:BCSTQ4:STAP:JSRtnpr:LDY#206:BCSTc:LDAQQ24:STAQ:JSRGCASH:JSRLCASH:LDY#197:BCCTc 59 | 2708LDYQQ29:LDAR:PHA:CLC:ADCQQ20,Y:STAQQ20,Y:LDAAVL,Y:SEC:SBCR:STAAVL,Y:PLA:BEQTT222:JSRdn 60 | 2710.TT222 LDAQQ29:CLC:ADC#5:JSRDOYC:LDA#0:JSRDOXC:INCQQ29:LDAQQ29:CMP#17:BCSBAY2:JMPTT220:.BAY2 LDA#f9:JMPFRCE 61 | 2750.gnum LDA#MAGENTA:JSRDOCOL:LDX#0:STXR:LDX#12:STXT1:.TT223 JSRTT217:LDXR:BNENWDAV2:CMP#ASC"y":BEQNWDAV1:CMP#ASC"n":BEQNWDAV3:.NWDAV2 STAQ:SEC:SBC#&30:BCCOUT:CMP#10:BCSBAY2:STAS:LDAR:CMP#26:BCSOUT:ASLA:STAT:ASLA:ASLA:ADCT:ADCS:STAR 62 | 2751CMPQQ25:BEQTT226:BCSOUT 63 | 2760.TT226 LDAQ:JSRTT26:DECT1:BNETT223:.OUT PHP:LDA#CYAN:JSRDOCOL:PLP:LDAR:RTS:.NWDAV1 JSRTT26:LDAQQ25:STAR:BRAOUT\++:.NWDAV3 JSRTT26:LDA#0:STAR:BRAOUT\++ 64 | 2840.NWDAV4 JSRTT67:LDA#176:JSRprq:JSRdn2:LDYQQ29:JMPNWDAVxx 65 | 2850.TT208\Sell cargo (f2) 66 | 2855LDA#4:JSRTRADEMODE:LDA#10:JSRDOXC:LDA#205:JSRTT27:LDA#206:JSRNLIN3:JSRTT67 67 | 2900.TT210\Inventory (inc sell cargo loop) 68 | 2910LDY#0:.TT211 STYQQ29:.NWDAVxx LDXQQ20,Y:BEQTT212 69 | 2912TYA:ASLA:ASLA:TAY:LDAQQ23+1,Y:STAQQ19+1 70 | 2915TXA:PHA:JSRTT69:CLC:LDAQQ29:ADC#208 71 | 2917JSRTT27:LDA#14:JSRDOXC:PLA:TAX:STAQQ25:CLC:JSRpr2:JSRTT152 72 | 2922LDAQQ11:CMP#4:BNETT212:\JSRTT162:LDA#205:JSRTT27:LDA#206:JSRDETOK:JSRgnum:BEQTT212:BCSNWDAV4:LDAQQ29:LDX#255:STXQQ17:JSRTT151 73 | 2925LDYQQ29:LDAQQ20,Y:SEC:SBCR:STAQQ20,Y:LDAR:STAP:LDAQQ24:STAQ:JSRGCASH:JSRMCASH:LDA#0:STAQQ17 74 | 2940.TT212 LDYQQ29:INY:CPY#17:BCCTT211:LDAQQ11:CMP#4:BNEP%+8:JSRdn2:JMPBAY2:RTS 75 | 2942.TT213\Invntry 76 | 2945LDA#8:JSRTRADEMODE:LDA#11:JSRDOXC:LDA#164:JSRTT60:JSRNLIN4:JSRfwl 77 | 2950LDACRGO:CMP#26:BCCP%+7:LDA#&6B:JSRTT27:JMPTT210 78 | 2965\.TT214\PHA\JSRTT162\PLA:.TT221 JSRTT27:LDA#206:JSRDETOK 79 | 2966JSRTT217:ORA#32:CMP#&79:BEQTT218:LDA#&6E:JMPTT26:.TT218 JSRTT26:SEC:RTS 80 | 3000.TT16 TXA:PHA:DEY:TYA:EOR#255:PHA:JSRWSCAN:JSRTT103:PLA:STAQQ19+3 81 | 3010LDAQQ10:JSRTT123:LDAQQ19+4:STAQQ10:STAQQ19+1:PLA 82 | 3020STAQQ19+3:LDAQQ9:JSRTT123:LDAQQ19+4:STAQQ9:STAQQ19:.TT103 83 | 3030LDAQQ11:BMITT105:LDAQQ9:STAQQ19:LDAQQ10:LSRA:STAQQ19+1 84 | 3040LDA#4:STAQQ19+2:JMPTT15 85 | 3045.TT123 STAQQ19+4:CLC:ADCQQ19+3:LDXQQ19+3:BMITT124:BCCTT125 86 | 3047RTS:.TT124 BCCTT180:.TT125 STAQQ19+4:.TT180 RTS 87 | 3050.TT105 LDAQQ9:SEC:SBCQQ0:CMP#38:BCCTT179:CMP#230:BCCTT180 88 | 3055.TT179 ASLA:ASLA:CLC:ADC#104:STAQQ19 89 | 3060LDAQQ10:SEC:SBCQQ1:CMP#38:BCCP%+6:CMP#220:BCCTT180 90 | 3065ASLA:CLC:ADC#90:STAQQ19+1:LDA#8:STAQQ19+2:JMPTT15 91 | 3300.TT23\ShrtSc 92 | 3310LDA#128:JSRTT66:LDA#16:JSRDOVDU19:LDA#CYAN\WH:JSRDOCOL:LDA#7:JSRDOXC:LDA#190:JSRNLIN3:JSRTT14:JSRTT103:JSRTT81:LDA#CYAN:JSRDOCOL 93 | 3349LDA#0:STAXX20:LDX#24:.EE3 STAINWK,X:DEX:BPLEE3 94 | 3350.TT182 LDAQQ15+3:SEC:SBCQQ0:BCSTT184:EOR#FF:ADC#1:.TT184 CMP#20:BCSTT187:LDAQQ15+1:SEC:SBCQQ1:BCSTT186:EOR#FF:ADC#1:.TT186 CMP#38:BCSTT187 95 | 3370LDAQQ15+3:SEC:SBCQQ0:ASLA:ASLA:ADC#104:STAXX12:LSRA:LSRA:LSRA:INA\+++:JSRDOXC:LDAQQ15+1:SEC:SBCQQ1:ASLA:ADC#90:STAK4:LSRA:LSRA:LSRA 96 | 3377TAY:LDXINWK,Y:BEQEE4:INY:LDXINWK,Y:BEQEE4:DEY:DEY:LDXINWK,Y:BNEee1:.EE4 TYA:JSRDOYC:CPY#3:BCCTT187:LDA#FF:STAINWK,Y 97 | 3380LDA#128:STAQQ17:JSRcpl:.ee1 98 | 3390\drawbigstars:LDA#0:STAK3+1:STAK4+1:STAK+1:LDAXX12:STAK3:LDAQQ15+5:AND#1:ADC#2:STAK:JSRFLFLLS:JSRSUN:JSRFLFLLS 99 | 3400.TT187 JSRTT20:INCXX20:BNEP%+5:JMPHBFL:JMPTT182 \<=Ian=> 100 | 3450.TT81 LDX#5:LDAQQ21,X:STAQQ15,X:DEX:BPLTT81+2 101 | 3500RTS:.TT111 JSRTT81:LDY#127:STYT:LDA#0:STAU 102 | 3510.TT130 LDAQQ15+3:SEC:SBCQQ9:BCSTT132:EOR#FF:ADC#1:.TT132 LSRA:STAS:LDAQQ15+1:SEC:SBCQQ10:BCSTT134:EOR#FF:ADC#1:.TT134 LSRA:CLC:ADCS:CMPT:BCSTT135 103 | 3550STAT:LDX#5:.TT136 LDAQQ15,X:STAQQ19,X:DEX:BPLTT136:LDAU:STAZZ:.TT135 104 | 3560JSRTT20:INCU:BNETT130:LDX#5:.TT137 LDAQQ19,X:STAQQ15,X:DEX 105 | 3570BPLTT137:LDAQQ15+1:STAQQ10:LDAQQ15+3:STAQQ9 106 | 3575SEC:SBCQQ0:BCSTT139:EOR#FF:ADC#1:.TT139 JSRSQUA2:STAK+1:LDAP:STAK:LDAQQ10 107 | 3590SEC:SBCQQ1:BCSTT141:EOR#FF:ADC#1:.TT141 LSRA:JSRSQUA2:PHA:LDAP:CLC:ADCK 108 | 3610STAQ:PLA:ADCK+1:STAR:JSRLL5:LDAQ:ASLA:LDX#0:STXQQ8+1:ROLQQ8+1:ASLA:ROLQQ8+1:STAQQ8:JMPTT24 109 | 4340.dockEd JSRCLYNS:LDA#15:JSRDOXC:LDA#RED:JSRDOCOL:LDA#205:JMPDETOK \<=Ian=> 110 | 4350.hyp LDAQQ12:BNEdockEd:LDAQQ22+1:BEQP%+3:RTS:LDA#CYAN:JSRDOCOL:JSRCTRL:BMIGhy:LDAQQ11:BEQTTX110:AND#192:BNEP%+3:RTS \<=Ian=> 111 | 4353JSRhm:.TTX111 112 | 4355LDAQQ8:ORAQQ8+1:BNEP%+3:RTS: LDX#5:.sob LDAQQ15,X:STAsafehouse,X:DEX:BPLsob: LDA#7:JSRDOXC:LDA#23:JSRDOYC:LDA#0:STAQQ17:LDA#189:JSRTT27:LDAQQ8+1:BNEgoTT147:LDAQQ14:CMPQQ8:BCSP%+5:.goTT147 JMPTT147 113 | 4380LDA#&2D:JSRTT27:JSRcpl:.wW LDA#15:.wW2 STAQQ22+1:STAQQ22:TAX:JMPee3\hy5 RTS 114 | 4390.TTX110 JSRTT111:JMPTTX111 115 | 4392.Ghy LDXGHYP:BEQzZ+1:INX:\STXQQ8:\STXQQ8+1:STXGHYP:STXFIST:LDA#2:JSRwW2:LDX#5:INCGCNT:LDAGCNT:AND#7:STAGCNT:.G1 LDAQQ21,X:ASLA:ROLQQ21,X:DEX:BPLG1:\JSRDORND:.zZ LDA#&60:STAQQ9:STAQQ10:JSRTT110:JSRTT111 116 | 4393LDX#5:.dumdeedum LDAQQ15,X:STAsafehouse,X:DEX:BPLdumdeedum:LDX#0:STXQQ8:STXQQ8+1:LDA#116:JSRMESS 117 | 4394.jmp LDAQQ9:STAQQ0:LDAQQ10:STAQQ1:.hy5 RTS 118 | 4395.ee3 LDA#RED:JSRDOCOL:LDA#1:JSRDOXC:JSRDOYC:LDY#0:.pr6 CLC:.pr5 LDA#5:JMPTT11 119 | 4400.TT147 LDA#202:.prq JSRTT27:LDA#&3F:JMPTT27 120 | 4900.TT151q PLA:RTS\no trade items in MJ 121 | 5000.TT151\ Market prices on one item 122 | 5010PHA:STAQQ19+4:ASLA:ASLA:STAQQ19:LDAMJ:BNETT151q:LDA#1:JSRDOXC:PLA:ADC#208 123 | 5015JSRTT27:LDA#14:JSRDOXC:LDXQQ19:LDAQQ23+1,X:STAQQ19+1:LDAQQ26:ANDQQ23+3,X:CLC:ADCQQ23,X:STAQQ24:JSRTT152 124 | 5050JSRvar:LDAQQ19+1:BMITT155:LDAQQ24:ADCQQ19+3:JMPTT156 125 | 5060.TT155 LDAQQ24:SEC:SBCQQ19+3:.TT156 STAQQ24:STAP:LDA#0:JSRGC2 126 | 5070SEC:JSRpr5:LDYQQ19+4:LDA#5:LDXAVL,Y:STXQQ25 127 | 5100CLC:BEQTT172:JSRpr2+2:JMPTT152:.TT172 LDA#25:JSRDOXC:LDA#&2D:BNETT162+2 128 | 5110.TT152 LDAQQ19+1:AND#96:BEQTT160:CMP#32:BEQTT161 129 | 5120JSRTT16a:.TT162 LDA#32:JMPTT27 130 | 5130.TT160 LDA#&74:JSRTT26:BCCTT162 131 | 5140.TT161 LDA#&6B:JSRTT26:.TT16a LDA#&67:JMPTT26 132 | 5160.TT163 LDA#17:JSRDOXC:LDA#FF:BNETT162+2 133 | 5200.TT167\Market prices loop 134 | 5210LDA#16:JSRTRADEMODE:LDA#5:JSRDOXC:LDA#167:JSRNLIN3:LDA#3:JSRDOYC:JSRTT163:LDA#6:JSRDOYC:LDA#0:STAQQ29:.TT168 LDX#128:STXQQ17:JSRTT151:JSRINCYC 135 | 5250INCQQ29:LDAQQ29:CMP#17:BCCTT168:RTS 136 | 5900.var LDAQQ19+1:AND#31:LDYQQ28:STAQQ19+2:CLC:LDA#0:STAAVL+16:.TT153 DEY:BMITT154:ADCQQ19+2:JMPTT153:.TT154 STAQQ19+3:RTS 137 | 5980.hyp1 JSRTT111:JSRjmp:LDX#5:.TT112 LDAsafehouse,X:STAQQ2,X:DEX:BPLTT112:INX:STXEV:LDAQQ3:STAQQ28:LDAQQ5:STAtek:LDAQQ4:STAgov:JSRDORND:STAQQ26 138 | 5990LDX#0:STXXX4:.hy9 LDAQQ23+1,X:STAQQ19+1:JSRvar:LDAQQ23+3,X:ANDQQ26:CLC:ADCQQ23+2,X:LDYQQ19+1:BMITT157:SEC:SBCQQ19+3:JMPTT158:.TT157 CLC:ADCQQ19+3:.TT158 BPLTT159:LDA#0:.TT159 139 | 5994LDYXX4:AND#63:STAAVL,Y:INY:TYA:STAXX4:ASLA:ASLA:TAX:CMP#63:BCChy9:.hyR RTS 140 | 5995.GTHG JSRZe:LDA#FF:STAINWK+32:LDA#THG:JSRNWSHP:LDA#TGL:JMPNWSHP 141 | 5996.ptg LSRCOK:SEC:ROLCOK 142 | 5998.MJP \JSRCATLOD:LDA#3:JSRTT66:JSRLL164:JSRRES2:STYMJ:.MJP1 JSRGTHG:LDA#3:CMPMANY+THG:BCSMJP1:STANOSTM:LDX#0:JSRLOOK1:LDAQQ1:EOR#31:STAQQ1 143 | 6000.RTS111 RTS:.TT18\HSPC 144 | 6005LDAQQ14:SEC:SBCQQ8:BCSP%+4:LDA#0:STAQQ14:LDAQQ11:BNEee5:JSRTT66:JSRLL164:.ee5 JSRCTRL:ANDPATG:BMIptg:JSRDORND:CMP#253:BCSMJP:\JSRTT111:JSRhyp1+3:JSRRES2:JSRSOLAR:\JSRCATLOD\JSRLOMOD 145 | 6500LDAQQ11:AND#63:BNERTS111:JSRTTX66:LDAQQ11:BNETT114:INCQQ11:.TT110 LDXQQ12:BEQNLUNCH 146 | 6508JSRLAUN:JSRRES2:JSRTT111:INCINWK+8:JSRSOS1:LDA#128:STAINWK+8:INCINWK+7:JSRNWSPS:LDA#12:STADELTA:JSRBAD:ORAFIST:STAFIST 147 | 6509LDA#FF:STAQQ11:JSRHFS1 148 | 6510.NLUNCH LDX#0:STXQQ12:JMPLOOK1:.TT114 BMITT115:JMPTT22:.TT115 JMPTT23 149 | 6530.LCASH STXT1:LDACASH+3:SEC:SBCT1:STACASH+3:STYT1:LDACASH+2:SBCT1:STACASH+2:LDACASH+1:SBC#0:STACASH+1:LDACASH:SBC#0:STACASH:BCSTT113 150 | 6540.MCASH TXA:CLC:ADCCASH+3:STACASH+3:TYA:ADCCASH+2:STACASH+2:LDACASH+1:ADC#0:STACASH+1:LDACASH:ADC#0:STACASH:CLC:.TT113 RTS 151 | 6550.GCASH JSRMULTU:.GC2 ASLP:ROLA:ASLP:ROLA:TAY:LDXP:RTS 152 | 6590.RDLI EQUS("R.D.CODE"):EQUB13 153 | 6690.bay JMPBAY 154 | 6700.EQSHP LDA#32:JSRTRADEMODE:LDA#12:JSRDOXC:LDA#207:JSRspc:LDA#185:JSRNLIN3:LDA#128:STAQQ17:JSRINCYC:LDAtek:CLC:ADC#3:CMP#12:BCCP%+4:LDA#14:STAQ:STAQQ25:INCQ:LDA#70:SEC:SBCQQ14:ASLA:STAPRXS 155 | 6710LDX#1:.EQL1 STXXX13:JSRTT67:LDXXX13:CLC:JSRpr2:JSRTT162:LDAXX13:CLC:ADC#&68:JSRTT27:LDAXX13:JSRprx-3:SEC:LDA#25:JSRDOXC:LDA#6:JSRTT11:LDXXX13:INX:CPXQ:BCCEQL1 156 | 6720JSRCLYNS:LDA#127:JSRprq:JSRgnum:beqbay:bcsbay:SBC#0:PHA:LDA#2:JSRDOXC:JSRINCYC:PLA:PHA:JSReq:PLA:BNEet0:LDX#70:STXQQ14:.et0 CMP#1:BNEet1:LDXNOMSL:INX:LDY#124:CPX#5:BCSpres 157 | 6730STXNOMSL:JSRmsblob:LDA#1:.et1 LDY#&6B:CMP#2:BNEet2:LDX#37:CPXCRGO:BEQpres:STXCRGO:.et2 CMP#3:BNEet3:INY:LDXECM:BNEpres:DECECM:.et3 CMP#4:BNEet4:JSRqv:LDA#POW:JSRrefund:LDA#4:.et4 158 | 6740CMP#5:BNEet5:JSRqv:LDA#POW+128:JSRrefund:.et5 159 | 6750LDY#&6F:CMP#6:BNEet6:LDXBST:BEQed9:.pres STYK:JSRprx:JSRMCASH:LDAK:JSRspc:LDA#31:JSRTT27:.err JSRdn2:JMPBAY:.ed9 DECBST:.et6 INY:CMP#7:BNEet7:LDXESCP:BNEpres:DECESCP:.et7 INY:CMP#8:BNEet8:LDXBOMB:BNEpres:LDX#&7F:STXBOMB:.et8 160 | 6800INY:CMP#9:BNEetA:LDXENGY:BNEpres:INCENGY:.etA INY:CMP#10:BNEetB:LDXDKCMP:BNEpres:DECDKCMP:.etB:INY:CMP#11:BNEet9:LDXGHYP:BNEpres:DECGHYP:.et9 INY:CMP#12:BNEet10:JSRqv:LDA#Armlas:JSRrefund:.et10 INY:CMP#13:BNEet11:JSRqv:LDA#Mlas 161 | 6810JSRrefund:.et11 JSRdn:JMPEQSHP:.dn JSRTT162:LDA#119:JSRspc:.dn2 JSRBEEP:LDY#50:JMPDELAY 162 | 6900.eq JSRprx:JSRLCASH:BCSc:LDA#197:JSRprq:JMPerr:SEC:SBC#1:.prx ASLA:TAY:LDXPRXS,Y:LDAPRXS+1,Y:TAY:.c RTS 163 | 6910.qv LDAtek:CMP#8:BCCP%+7:LDA#32:JSRTT66:LDA#16:TAY:JSRDOYC:.qv1 LDA#12:JSRDOXC:TYA:CLC:ADC#B-16:JSRspc:LDAYC:CLC:ADC#&50:JSRTT27:JSRINCYC:LDYYC:CPY#20:BCCqv1:JSRCLYNS:.qv2 164 | 6911LDA#175:JSRprq:JSRTT217:SEC:SBC#&30:CMP#4:BCCqv3:JSRCLYNS:JMPqv2 165 | 6920.qv3 TAX:RTS:.hm JSRTT103:JSRTT111:JSRTT103:JMPCLYNS 166 | 6930\ref2 LDY#187\JMPpres\Belgium:.refund STAT1:LDALASER,X:BEQref3\CMPT1\BEQref2:LDY#4:CMP#POW:BEQref1:LDY#5:CMP#POW+128:BEQref1:LDY#12\11:CMP#Armlas:BEQref1:\Mlas:LDY#13\12:.ref1 STXZZ:TYA:JSRprx:JSRMCASH:LDXZZ:.ref3 LDAT1:STALASER,X:RTS 167 | 9800.PRXS EQUW1:EQUW300:EQUW4000:EQUW6000:EQUW4000:EQUW10000:EQUW5250:EQUW10000:EQUW9000:EQUW15000:EQUW10000:EQUW50000:EQUW60000:EQUW8000 168 | 9900] 169 | 9910IFZ>4OSCLI("S.ELTD "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H%) 170 | 9920PRINT" d";:GOTO10 171 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITED.inf: -------------------------------------------------------------------------------- 1 | $.ELITED 000000 000000 003806 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEE.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 11GOTO20 11 | 12*L.ELITEF 12 | 20REM ELITE SP 13 | 100H%=L%+P%-C%:O%=W%:[OPTZ 14 | 190.cpl LDX#5:.TT53 LDAQQ15,X:STAQQ19,X:DEX:BPLTT53:LDY#3:BITQQ15:BVSP%+3:DEY:STYT:.TT55 LDAQQ15+5:AND#31:BEQP%+7:ORA#128:JSRTT27:JSRTT54:DECT:BPLTT55:LDX#5:.TT56 LDAQQ19,X:STAQQ15,X:DEX:BPLTT56:RTS 15 | 200.cmn LDY#0:.QUL4 LDANAME,Y:CMP#13:BEQypl-1:JSRTT26:INY:BNEQUL4:RTS 16 | 300.ypl BITMJ:BMIypl16:JSRTT62:JSRcpl:.TT62 LDX#5:.TT78 LDAQQ15,X:LDYQQ2,X:STAQQ2,X:STYQQ15,X:DEX:BPLTT78:.ypl16 RTS 17 | 500.tal CLC:LDXGCNT:INX:JMPpr2:.fwl LDA#105:JSRTT68:LDXQQ14:SEC:JSRpr2:LDA#195:JSRplf:.PCASH LDA#119:BNETT27 18 | 510.csh LDX#3:.pc1 LDACASH,X:STAK,X:DEX:BPLpc1:LDA#9:STAU:SEC:JSRBPRNT:LDA#226:.plf JSRTT27:JMPTT67:.TT68 JSRTT27:.TT73 LDA#&3A 19 | 600.TT27 TAX:BEQcsh:BMITT43:DEX:BEQtal:DEX:BEQypl:dex:bneP%+5:JMPcpl:dex:beqcmn:dex:beqfwl:dex:bneP%+7:LDA#128:STAQQ17:RTS:DEX:DEX:BNEP%+5:STXQQ17:RTS:dex:beqcrlf:CMP#&60:BCSex:CMP#14:BCCP%+6:CMP#32:BCCqw:LDXQQ17 20 | 620BEQTT74:BMITT41:BITQQ17:BVSTT46:.TT42 CMP#65:BCCTT44:CMP#&5B:BCSTT44:ADC#32:.TT44 JMPTT26:.TT41 BITQQ17:BVSTT45:CMP#65:BCCTT74:PHA:TXA:ORA#64:STAQQ17:PLA:BNETT44 21 | 630.qw ADC#114:BNEex:.crlf LDA#21:JSRDOXC:JMPTT73:.TT45 CPX#FF:BEQTT48:CMP#65:BCSTT42:.TT46 PHA:TXA:AND#191:STAQQ17:PLA:.TT74 JMPTT26:.TT43 CMP#160:BCSTT47:AND#127:ASLA:TAY:LDAQQ16,Y 22 | 670JSRTT27:LDAQQ16+1,Y:CMP#63:BEQTT48:JMPTT27:.TT47 SBC#160:.ex TAX:LDA#(QQ18 MOD256):STAV:LDA#(QQ18 DIV256):STAV+1:LDY#0:TXA:BEQTT50 23 | 680.TT51 LDA(V),Y:BEQTT49:INY:BNETT51:INCV+1:BNETT51:.TT49 INY:BNETT59:INCV+1:.TT59 DEX:BNETT51:.TT50 24 | 693TYA:PHA:LDAV+1:PHA:LDA(V),Y:EOR#35 25 | 695JSRTT27:PLA:STAV+1:PLA:TAY:INY:BNEP%+4:INCV+1:LDA(V),Y:BNETT50:.TT48 RTS 26 | 1990.EX2 LDAINWK+31:ORA#&A0:STAINWK+31:RTS 27 | 2000.DOEXP LDAINWK+31:AND#64:BEQP%+5:JSRPTCLS:LDAINWK+6:STAT:LDAINWK+7:CMP#&20:BCCP%+6:LDA#&FE:BNEyy:ASLT:ROLA:ASLT:ROLA:SEC:ROLA:.yy STAQ:LDY#1:LDA(XX19),Y:ADC#4:BCSEX2 28 | 2040STA(XX19),Y:JSRDVID4:LDAP:CMP#&1C:BCCP%+6:LDA#&FE:BNE`_:ASLR:ROLA:ASLR:ROLA:ASLR:ROLA:.`_ DEY:STA(XX19),Y:LDAINWK+31:AND#&BF:STAINWK+31:AND#8:BEQTT48 29 | 2050LDY#2:LDA(XX19),Y:TAY:.EXL1 LDAXX3-7,Y:STA(XX19),Y:DEY:CPY#6:BNEEXL1:LDAINWK+31:ORA#64:STAINWK+31 30 | 2100.PTCLS LDY#0:LDA(XX19),Y:STAQ:INY:LDA(XX19),Y:BPLP%+4:EOR#FF:LSRA:LSRA:LSRA:ORA#1:STAU:INY:LDA(XX19),Y:STATGT:LDARAND+1:PHA 31 | 2110LDY#6:.EXL5 LDX#3:.EXL3 INY:LDA(XX19),Y:STAK3,X:DEX:BPLEXL3:STYCNT:LDY#2:.EXL2 INY:LDA(XX19),Y:EORCNT:STARAND-3,Y:CPY#6:BNEEXL2:LDYU 32 | 2140.EXL4 JSRDORND2:STAZZ:LDAK3+1:STAR:LDAK3:JSREXS1:BNEEX11:CPX#2*Y-1:BCSEX11:STXY1:LDAK3+3:STAR:LDAK3+2:JSREXS1:BNEEX4:LDAY1:JSRPIXEL3:.EX4 DEY:BPLEXL4:LDYCNT:CPYTGT:BCCEXL5 33 | 2180PLA:STARAND+1:LDAK%+6:STARAND+3:RTS:.EX11 JSRDORND2:JMPEX4 34 | 2200.EXS1 STAS:JSRDORND2:ROLA:BCSEX5:JSRFMLTU:ADCR:TAX:LDAS:ADC#0:RTS 35 | 2210.EX5 JSRFMLTU:STAT:LDAR:SBCT:TAX:LDAS:SBC#0:RTS 36 | 3008.SOS1 JSRmsblob:LDA#127:STAINWK+29:STAINWK+30:LDAtek:AND#2:ORA#128:JMPNWSHP 37 | 3010.SOLAR LSRFIST:JSRZINF:LDAQQ15+1:AND#3:ADC#3:STAINWK+8:RORA:STAINWK+2:STAINWK+5 38 | 3020JSRSOS1:LDAQQ15+3:AND#7:ORA#129:STAINWK+8:LDAQQ15+5:AND#3:STAINWK+2:STAINWK+1:LDA#0:STAINWK+29:STAINWK+30:LDA#&81:JSRNWSHP 39 | 3600.NWSTARS LDAQQ11:\ORAMJ:BNEWPSHPS:.nWq LDYNOSTM:.SAL4 JSRDORND:ORA#8:STASZ,Y:STAZZ:JSRDORND:STASX,Y:STAX1:JSRDORND:STASY,Y:STAY1:JSRPIXEL2:DEY:BNESAL4:JSRPBFL 40 | 3710.WPSHPS LDX#0:.WSL1 LDAFRIN,X:BEQWS2:BMIWS1:STATYPE:JSRGINF:LDY#31 41 | 3730.WSL2 LDA(INF),Y:STAINWK,Y:DEY:BPLWSL2:STXXSAV:JSRSCAN:LDXXSAV:LDY#31:LDA(INF),Y:AND#&A7:STA(INF),Y:.WS1 INX:BNEWSL1:.WS2 STZLSP \++:LDX#FF 42 | 3740.FLFLLS LDY#2*Y-1:LDA#0:.SAL6 STALSO,Y:DEY:BNESAL6:DEY:STYLSX:RTS 43 | 3810.DET1 LDA#DODIALS:JSROSWRCH:TXA:JMPOSWRCH 44 | 3900DEX:RTS:.SHD INX:BEQSHD-2:.DENGY DECENERGY:PHP:BNEP%+5:INCENERGY:PLP:RTS 45 | 4000.COMPAS JSRDOT:LDASSPR:BNESP1:JSRSPS1:BRASP2\++:.SPS2 ASLA:TAX:LDA#0:RORA:TAY:LDA#20 \14:STAQ:TXA:JSRDVID4:LDXP 46 | 4080TYA:BMILL163:LDY#0:RTS:.LL163 LDY#FF:TXA:EOR#FF:TAX:INX:RTS 47 | 4090.SPS4 LDX#8:.SPL1 LDAK%+NI%,X:STAK3,X:DEX:BPLSPL1:JMPTAS2 48 | 4100.SP1 JSRSPS4:.SP2 LDAXX15:JSRSPS2:TXA:ADC#195\X-1:STACOMX:LDAXX15+1:JSRSPS2:STXT:LDA#204:SBCT:STACOMY 49 | 4130LDA#WHITE2:LDXXX15+2:BPLP%+4:LDA#GREEN2:STACOMC 50 | 4200.DOT LDACOMY:STADOTY1:LDACOMX:STADOTX1:LDACOMC:STADOTCOL:LDX#(DOTpars MOD256):LDY#(DOTpars DIV256):LDA#DOdot:JMPOSWORD:.DOTpars EQUB5:EQUB0:.DOTX1 brk:.DOTY1 brk:.DOTCOL brk 51 | 4250RTS 52 | 4300.OOPS STAT:LDX#0:LDY#8:LDA(INF),Y:BMIOO1:LDAFSH:SBCT:BCCOO2:STAFSH:RTS:.OO2\LDX#0:STZFSH\X++:BCCOO3:.OO1 LDAASH:SBCT:BCCOO5:STAASH:RTS:.OO5\LDX#0:STZASH\X++:.OO3 ADCENERGY:STAENERGY:BEQP%+4:BCSP%+5:JMPDEATH:JSREXNO3:JMPOUCH 53 | 4410.SPS3 LDAK%+1,X:STAK3,X:LDAK%+2,X:TAY:AND#127:STAK3+1,X:TYA:AND#128:STAK3+2,X:RTS 54 | 4450.GINF TXA:ASLA:TAY:LDAUNIV,Y:STAINF:LDAUNIV+1,Y:STAINF+1:RTS 55 | 4480.NWSPS JSRSPBLB:LDX#&81:STXINWK+32:LDX#0:STXINWK+30:STXNEWB:\STXINWK+31:STXFRIN+1:DEX:STXINWK+29:LDX#10:JSRNwS1:JSRNwS1:JSRNwS1 56 | 4484LDAspasto:STAXX21+2*SST-2:LDAspasto+1:STAXX21+2*SST-1:LDAtek:CMP#10:BCCnotadodo:LDAXX21+2*DOD-2:STAXX21+2*SST-2:LDAXX21+2*DOD-1:STAXX21+2*SST-1:.notadodo 57 | 4490LDA#(LSO MOD256):STAINWK+33:LDA#(LSO DIV256):STAINWK+34:LDA#SST 58 | 4500.NWSHP STAT:LDX#0:.NWL1 LDAFRIN,X:BEQNW1:INX:CPX#NOSH:BCCNWL1:.NW3 CLC:RTS 59 | 4510.NW1 JSRGINF:LDAT:BMINW2:ASLA:TAY:LDAXX21-1,Y:BEQNW3:STAXX0+1:LDAXX21-2,Y:STAXX0:CPY#2*SST:BEQNW6:LDY#5:LDA(XX0),Y:STAT1:LDASLSP:SEC:SBCT1:STAINWK+33:LDASLSP+1:SBC#0:STAINWK+34 60 | 4530LDAINWK+33:\SEC:SBCINF:TAY:LDAINWK+34:SBCINF+1:BCCNW3+1:BNENW4:CPY#NI%:BCCNW3+1:.NW4 61 | 4550LDAINWK+33:STASLSP:LDAINWK+34:STASLSP+1:.NW6 LDY#14:LDA(XX0),Y:STAINWK+35:LDY#19:LDA(XX0),Y:AND#7:STAINWK+31 62 | 4560LDAT:.NW2 STAFRIN,X:TAX:BMINW8:CPX#HER:BEQgangbang:CPX#JL:BCCNW7:CPX#JH:BCSNW7:.gangbang INCJUNK:.NW7 INCMANY,X:.NW8 LDYT:LDAE%-1,Y:AND#&6F:ORANEWB:STANEWB:LDY#NI%-1:.NWL3 LDAINWK,Y:STA(INF),Y:DEY:BPLNWL3:SEC:RTS 63 | 4600.NwS1 LDAINWK,X:EOR#128:STAINWK,X:INX:INX:RTS 64 | 4710.ABORT LDX#FF:.ABORT2 STXMSTG:LDXNOMSL:JSRMSBAR:STYMSAR:RTS 65 | 4730.ECBLB2 LDA#32:STAECMA:ASLA:JSRNOISE:.ECBLB LDA#DOBULB:JSROSWRCH:LDA#FF:JMPOSWRCH 66 | 4740.SPBLB LDA#DOBULB:JSROSWRCH:LDA#0:JMPOSWRCH 67 | 4899.msbpars EQUB4:EQUD0 68 | 4900.MSBAR PHX\++:STXmsbpars+2:STYmsbpars+3:PHY:LDX#(msbpars MOD256):LDY#(msbpars DIV256):LDA#DOmsbar:JSROSWORD:LDY#0:PLA:PLX\++:RTS 69 | 5000.PROJ \K3,K4 (2bTC)=screen X,Y for INWK coords 70 | 5005LDAINWK:STAP:LDAINWK+1:STAP+1:LDAINWK+2:JSRPLS6:BCSPL2-1:LDAK:ADC#X:STAK3:TXA:ADC#0:STAK3+1 71 | 5010LDAINWK+3:STAP:LDAINWK+4:STAP+1:LDAINWK+5:EOR#128:JSRPLS6:BCSPL2-1:LDAK:ADC#Y:STAK4:TXA:ADC#0:STAK4+1:CLC:RTS 72 | 5020.PL2 LDATYPE:LSRA:BCSPL57:JSRLS2FL:STZLSP \++:RTS:.PL57 JMPWPLS 73 | 5040.PLANET LDA#GREEN:JSRDOCOL:LDAINWK+8:\BMIPL2:CMP#48:BCSPL2:ORAINWK+7:BEQPL2:JSRPROJ:BCSPL2 74 | 5090LDA#96:STAP+1:LDA#0:STAP:JSRDVID3B2:LDAK+1:BEQPL82:LDA#&F8:STAK:.PL82 75 | 5110LDATYPE:LSRA:BCCPL9:JMPSUN:.PL9 JSRLS2FL:STZLSP:JSRCIRCLE:BCSPL20:LDAK+1:BEQPL25:.PL20 JMPLS2FL 76 | 5160.PL25 LDATYPE:CMP#&80:BNEPL26:LDAK:CMP#6:BCCPL20:LDAINWK+14:EOR#128:STAP:LDAINWK+20:JSRPLS4:LDX#9:JSRPLS1:STAK2:STYXX16:JSRPLS1:STAK2+1:STYXX16+1:LDX#15:JSRPLS5 77 | 5230JSRPLS2:LDAINWK+14:EOR#128:STAP:LDAINWK+26:JSRPLS4 78 | 5240LDX#21:JSRPLS5:JSRPLS2:JMPLS2FL 79 | 5270.PL26\crtr:LDAINWK+20:BMIPL20 80 | 5280LDX#15:JSRPLS3:CLC:ADCK3:STAK3:TYA:ADCK3+1:STAK3+1:JSRPLS3:STAP:LDAK4:SEC:SBCP:STAK4:STYP:LDAK4+1:SBCP:STAK4+1 81 | 5300LDX#9:JSRPLS1:LSRA:STAK2:STYXX16:JSRPLS1:LSRA:STAK2+1:STYXX16+1 82 | 5310LDX#21:JSRPLS1:LSRA:STAK2+2:STYXX16+2:JSRPLS1:LSRA:STAK2+3:STYXX16+3 83 | 5320LDA#64:STATGT:STZCNT2 \++useA:JSRPLS22:JMPLS2FL 84 | 5330.PLS1 LDAINWK,X:STAP:LDAINWK+1,X:AND#127:STAP+1:LDAINWK+1,X:AND#128 85 | 5340JSRDVID3B2:LDAK:LDYK+1:BEQP%+4:LDA#&FE:LDYK+3:INX:INX:RTS 86 | 5350.PLS2 LDA#31:STATGT:.PLS22 LDX#0:STXCNT:DEX:STXFLAG:.PLL4 87 | 5360LDACNT2:AND#31:TAX:LDASNE,X:STAQ:LDAK2+2:JSRFMLTU:STAR:LDAK2+3:JSRFMLTU:STAK:LDXCNT2:CPX#33:LDA#0:RORA:STAXX16+5 88 | 5370LDACNT2:CLC:ADC#16:AND#31:TAX:LDASNE,X:STAQ:LDAK2+1:JSRFMLTU:STAK+2:LDAK2:JSRFMLTU:STAP:LDACNT2:ADC#15:AND#63:CMP#33:LDA#0:RORA:STAXX16+4 89 | 5380LDAXX16+5:EORXX16+2:STAS:LDAXX16+4:EORXX16:JSRADD:STAT:BPLPL42:TXA:EOR#FF:CLC:ADC#1:TAX:LDAT:EOR#&7F:ADC#0:STAT:.PL42:TXA:ADCK3:STAK6:LDAT:ADCK3+1:STAK6+1 90 | 5390LDAK:STAR:LDAXX16+5:EORXX16+3:STAS:LDAK+2:STAP:LDAXX16+4:EORXX16+1:JSRADD:EOR#128:STAT:BPLPL43:TXA:EOR#FF:CLC:ADC#1:TAX:LDAT:EOR#&7F:ADC#0:STAT:.PL43 91 | 5400JSRBLINE:CMPTGT:BEQP%+4:BCSPL40:LDACNT2:CLC:ADCSTP:AND#63:STACNT2:JMPPLL4:.PL40 RTS 92 | 5410JMPWPLS:.PLF3 TXA:EOR#FF:CLC:ADC#1:TAX:.PLF17 LDA#FF:BNEPLF5 93 | 5430.SUN LDA#1:STALSX:JSRCHKON:BCSPLF3-3:LDA#0:LDXK:CPX#&60:ROLA:CPX#&28:ROLA:CPX#&10:ROLA 94 | 5450.PLF18 STACNT:LDA#2*Y-1:LDXP+2:BNEPLF2:CMPP+1:BCCPLF2:LDAP+1:BNEPLF2:LDA#1:.PLF2 STATGT 95 | 5460LDA#2*Y-1:SEC:SBCK4:TAX:LDA#0:SBCK4+1:BMIPLF3:BNEPLF4:INX:DEX:BEQPLF17:CPXK:BCCPLF5:.PLF4 LDXK:LDA#0:.PLF5 STXV:STAV+1 96 | 5470LDAK:JSRSQUA2:STAK2+1:LDAP:STAK2:LDY#2*Y-1:LDASUNX:STAYY:LDASUNX+1:STAYY+1:.PLFL2 CPYTGT:BEQPLFL:LDALSO,Y:BEQPLF13:JSRHLOIN2:.PLF13 DEY:BNEPLFL2 97 | 5480.PLFL LDAV:JSRSQUA2:STAT:LDAK2:SEC:SBCP:STAQ:LDAK2+1:SBCT:STAR:STYY1:JSRLL5:LDYY1:JSRDORND:ANDCNT:CLC:ADCQ:BCCPLF44:LDA#FF:.PLF44 98 | 5490LDXLSO,Y:STALSO,Y:BEQPLF11:LDASUNX:STAYY:LDASUNX+1:STAYY+1:TXA:JSREDGES:LDAX1:STAXX:LDAX2:STAXX+1 99 | 5500LDAK3:STAYY:LDAK3+1:STAYY+1:LDALSO,Y:JSREDGES:BCSPLF23:LDAX2:LDXXX:STXX2:STAXX:JSRHLOIN:.PLF23 LDAXX:STAX1:LDAXX+1:STAX2:.PLF16 JSRHLOIN:.PLF6 100 | 5530DEY:BEQPLF8:LDAV+1:BNEPLF10:DECV:BNEPLFL:DECV+1:.PLFLS JMPPLFL 101 | 5535.PLF11 LDXK3:STXYY:LDXK3+1:STXYY+1:JSREDGES:BCCPLF16:LDA#0:STALSO,Y:BEQPLF6 102 | 5540.PLF10 LDXV:INX:STXV:CPXK:BCCPLFLS:BEQPLFLS:LDASUNX:STAYY:LDASUNX+1:STAYY+1:.PLFL3 LDALSO,Y:BEQPLF9:JSRHLOIN2 103 | 5550.PLF9 DEY:BNEPLFL3:.PLF8 CLC:LDAK3:STASUNX:LDAK3+1:STASUNX+1:JSRHBFL:.RTS2 RTS 104 | 5600.CIRCLE JSRCHKON:BCSRTS2 105 | 5700LDXK:LDA#8:CPX#4:BCCPL89:LSRA:CPX#50:BCCPL89:LSRA:.PL89 STASTP:.CIRCLE3 LDX#FF:STXFLAG:INX:STXCNT:.PLL3 106 | 5710LDACNT:JSRFMLTU2:LDX#0:STXT:LDXCNT:CPX#33:BCCPL37:EOR#FF:ADC#0:TAX:LDA#FF:ADC#0:STAT:TXA:CLC 107 | 5720.PL37 ADCK3:STAK6:LDAK3+1:ADCT:STAK6+1 108 | 5730LDACNT:CLC:ADC#16:JSRFMLTU2:TAX:LDA#0:STAT:LDACNT:ADC#15:AND#63:CMP#33:BCCPL38:TXA:EOR#FF:ADC#0:TAX:LDA#FF:ADC#0:STAT:CLC 109 | 5740.PL38 JSRBLINE:CMP#65:BCSP%+5:JMPPLL3:CLC:RTS 110 | 5745.CIRCLE2 STZLSP:JSRCIRCLE3 111 | 5750.LS2FL LDYLSP:.WP3 STYT:BEQWP1:LDA#&81:JSROSWRCH:TYA:BMIWP2:SEC:ROLA:JSROSWRCH:LDY#0:.WPL1 LDALSX2,Y:JSROSWRCH:LDALSY2,Y:JSROSWRCH:INY:LDALSX2,Y:JSROSWRCH:LDALSY2,Y:JSROSWRCH:INY:CPYT:BCCWPL1:.WP1 RTS 112 | 5760.WP2 ASLA:ADC#4:JSROSWRCH:LDY#126:JSRWPL1:LDY#126:JMPWP3 113 | 5790.WPLS LDALSX:BMIWP1:LDASUNX:STAYY:LDASUNX+1:STAYY+1:LDY#2*Y-1:.WPL2 LDALSO,Y:BEQP%+5:JSRHLOIN2:DEY:BNEWPL2:DEY:STYLSX:JMPHBFL 114 | 5800.EDGES STAT:CLC:ADCYY:STAX2:LDAYY+1:ADC#0:BMIED1:BEQP%+6:LDA#254:STAX2 115 | 5810LDAYY:SEC:SBCT:STAX1:LDAYY+1:SBC#0:BNEED3:CLC:RTS 116 | 5820.ED3 BPLED1:LDA#2:STAX1:CLC:RTS:.ED1 LDA#0:STALSO,Y:SEC:RTS 117 | 5850.CHKON LDAK3:CLC:ADCK:LDAK3+1:ADC#0:BMIPL21:LDAK3:SEC:SBCK:LDAK3+1:SBC#0:BMIPL31:BNEPL21:.PL31 118 | 5860LDAK4:CLC:ADCK:STAP+1:LDAK4+1:ADC#0:BMIPL21:STAP+2:LDAK4:SEC:SBCK:TAX:LDAK4+1:SBC#0:BMIPL44:BNEPL21:CPX#2*Y-1:RTS:.PL21 SEC:RTS 119 | 5900.PLS3 JSRPLS1:STAP:LDA#222:STAQ:STXU:JSRMULTU:LDXU:LDYK+3:BPLPL12:EOR#FF:CLC:ADC#1:BEQPL12:LDY#FF:RTS:.PL12 LDY#0:RTS 120 | 5910.PLS4 STAQ:JSRARCTAN:LDXINWK+14:BMIP%+4:EOR#128:LSRA:LSRA:STACNT2:RTS 121 | 5920.PLS5 JSRPLS1:STAK2+2:STYXX16+2:JSRPLS1:STAK2+3:STYXX16+3:RTS 122 | 5930.PLS6 JSRDVID3B2:LDAK+3:AND#127:ORAK+2:BNEPL21:LDXK+1:CPX#4:BCSPL6:LDAK+3:\CLC:BPLPL6:LDAK:EOR#FF:ADC#1:STAK:TXA:EOR#FF:ADC#0:TAX:.PL44 CLC:.PL6 RTS 123 | 7200.TT17 JSRDOKEY:LDX#0:JSRDKS4:STAnewlocn:LDAJSTK:BEQTJ1:LDAJSTX:EOR#FF:JSRTJS1:TYA:BITnewlocn:BPLP%+3:ASLA:TAX 124 | 7210LDAJSTY:.TJS1 TAY:LDA#0:CPY#&10:SBC#0:CPY#&40:SBC#0:CPY#&C0:ADC#0:CPY#&E0:ADC#0 125 | 7220BITnewlocn:BPLP%+3:ASLA:TAY:LDAKL:RTS 126 | 7222.newlocn BRK 127 | 7250.TJ1 LDAKL:LDX#0:LDY#0:CMP#&19:BNEP%+3:DEX:CMP#&79:BNEP%+3:INX:CMP#&39:BNEP%+3:INY:CMP#&29:BNEP%+3:DEY:TXA:BITnewlocn:BPLP%+4:ASLA:ASLA:TAX:TYA:BITnewlocn:BPLP%+4:ASLA:ASLA:TAY:LDAKL:RTS 128 | 7550.ping LDX#1:.pl1 LDAQQ0,X:STAQQ9,X:DEX:BPLpl1:RTS 129 | 9500]:PRINT" E"; 130 | 9710IFZ>4OSCLI("S.ELTE "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H%) 131 | 9720GOTO12 132 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEE.inf: -------------------------------------------------------------------------------- 1 | $.ELITEE 000000 000000 002EDC 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEF.inf: -------------------------------------------------------------------------------- 1 | $.ELITEF 000000 000000 00438C 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEG.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 11GOTO20 11 | 12*L.ELITEF 12 | 13GOTO20 13 | 14*L.ELITEG 14 | 15GOTO20 15 | 16*L.ELITEH 16 | 20REM ELITE SP 17 | 100H%=L%+P%-C%:O%=W% 18 | 500B%=((P%AND&FF00)+256)-P%:P%=(P%AND&FF00)+256:O%=O%+B%:[OPTZ 19 | 700.log:]:logof2=LOG(2):IFZ=6 FORI%=1TO255:B%=&2000*LOG(I%)/logof2:B%=INT(B%+.5):I%?O%=B%DIV256:?(O%+I%+&100)=B%MOD256:NEXT 20 | 710P%=P%+&200:O%=O%+&200:logL=log+&100:[OPTZ 21 | 720.antilog:]:IFZ=6 FORI%=0TO255:B%=INT(2^((I%/2+128)/16)+.5)DIV256:B%=B%+(B%=256):I%?O%=B%:NEXT 22 | 722P%=P%+256:O%=O%+256:[OPTZ 23 | 725.antilogODD:]:IFZ=6 FORI%=0TO255:B%=INT(2^((I%/2+128.25)/16)+.5)DIV256:B%=B%+(B%=256):I%?O%=B%:NEXT 24 | 730P%=P%+256:O%=O%+256:[OPTZ 25 | 7000.SHPPT JSREE51:JSRPROJ:ORAK3+1:BNEnono:LDAK4:CMP#Y*2-2:BCSnono:LDY#2:jsrShpt:ldy#6:ldaK4:ADC#1:jsrShpt:LDA#8:ORAXX1+31:STAXX1+31:LDA#9:JMPLL81+2:PLA:PLA:.nono lda#&F7:andXX1+31:staXX1+31:RTS 26 | 7010.Shpt STA(XX19),Y:iny:iny:STA(XX19),Y:LDAK3:DEY:STA(XX19),Y:ADC#3:BCSnono-2:dey:dey:STA(XX19),Y:rts 27 | 8040.LL5 \2BSQRT Q=SQR(RQ) 28 | 8045LDYR:LDAQ:STAS:LDX#0:STXQ:LDA#8:STAT:.LL6 CPXQ:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCQ:TAX:.LL7 ROLQ:ASLS:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLS:TYA:ROLA:TAY:TXA:ROLA:TAX:DECT:BNELL6:RTS 29 | 8065.LL28 \BFRDIV R=A*256/Q 30 | 8066CMPQ:BCSLL2:STAwidget:TAX:BEQLLfix:LDAlogL,X:LDXQ:SEC:SBClogL,X:BMInoddlog:LDXwidget:LDAlog,X:LDXQ:SBClog,X:BCSLL2:TAX:LDAantilog,X:.LLfix STAR:RTS 31 | 8067.noddlog LDXwidget:LDAlog,X:LDXQ:SBClog,X:BCSLL2:TAX:LDAantilogODD,X:STAR:RTS 32 | 8070.LL31 ASLA:BCSLL29:CMPQ:BCCP%+4:SBCQ:ROLR:BCSLL31:RTS:.LL29 SBCQ:SEC:ROLR:BCSLL31:LDAR:RTS:.LL2 LDA#FF:STAR:RTS 33 | 8085.LL38 \BADD(S)A=R+Q(SA) 34 | 8090EORS:BMILL39:LDAQ:CLC:ADCR:RTS:.LL39 LDAR:SEC:SBCQ 35 | 8095BCCP%+4:CLC:RTS:PHA:LDAS:EOR#128:STAS:PLA:EOR#255:ADC#1:RTS 36 | 8100.LL51 \XX12=XX15.XX16 37 | 8105LDX#0:LDY#0:.ll51 LDAXX15:STAQ:LDAXX16,X:JSRFMLTU:STAT:LDAXX15+1:EORXX16+1,X:STAS:LDAXX15+2 38 | 8115STAQ:LDAXX16+2,X:JSRFMLTU:STAQ:LDAT:STAR:LDAXX15+3 39 | 8120EORXX16+3,X:JSRLL38:STAT:LDAXX15+4:STAQ:LDAXX16+4,X:JSRFMLTU:STAQ:LDAT:STAR:LDAXX15+5:EORXX16+5,X 40 | 8130JSRLL38:STAXX12,Y:LDAS:STAXX12+1,Y:INY:INY:TXA:CLC:ADC#6:TAX:CMP#17:BCCll51:RTS 41 | 8132.LL25 JMPPLANET 42 | 8135.LL9 LDXTYPE:BMILL25:LDAshpcol,X:JSRDOCOL \ ENTRY 43 | 8140LDA#31:STAXX4:LDANEWB:BMIEE51:LDA#32:BITXX1+31:BNEEE28 44 | 8144BPLEE28:ORAXX1+31:AND#&3F:STAXX1+31:LDA#0:LDY#28:STA(INF),Y:LDY#30:STA(INF),Y:JSREE51:LDY#1:LDA#18:STA(XX19),Y:LDY#7:LDA(XX0),Y:LDY#2:STA(XX19),Y 45 | 8146\LDAXX1+32\AND#&7F\STAXX1+32:.EE55 INY:JSRDORND:STA(XX19),Y:CPY#6:BNEEE55:.EE28 46 | 8150LDAXX1+8:.EE49 BPLLL10:.LL14 LDAXX1+31:AND#32:BEQEE51:LDAXX1+31:AND#&F7:STAXX1+31:JMPDOEXP:.EE51 47 | 8155LDA#8:BITXX1+31:BEQLL10-1:EORXX1+31:STAXX1+31:JMPLL155:\LL24 48 | 8165RTS:.LL10 49 | 8175LDAXX1+7:CMP#&C0:BCSLL14:LDAXX1:CMPXX1+6:LDAXX1+1:SBCXX1+7:BCSLL14:LDAXX1+3:CMPXX1+6:LDAXX1+4:SBCXX1+7:BCSLL14 50 | 8205LDY#6:LDA(XX0),Y:TAX:LDA#255:STAXX3,X:STAXX3+1,X 51 | 8215LDAXX1+6:STAT:LDAXX1+7:LSRA:RORT:LSRA:RORT:LSRA:RORT:LSRA:BNELL13:LDAT:RORA:LSRA:LSRA:LSRA:STAXX4 52 | 8225BPLLL17:.LL13 LDY#13:LDA(XX0),Y:CMPXX1+7:BCSLL17:LDA#32:ANDXX1+31:BNELL17:JMPSHPPT:.LL17 53 | 8275LDX#5:.LL15 LDAXX1+21,X:STAXX16,X:LDAXX1+15,X:STAXX16+6,X:LDAXX1+9,X:STAXX16+12,X:DEX:BPLLL15 54 | 8290LDA#197 \NORM:STAQ:LDY#16:.LL21 LDAXX16,Y:ASLA:LDAXX16+1,Y 55 | 8295ROLA:JSRLL28:LDXR:STXXX16,Y:DEY:DEY:BPLLL21 56 | 8300LDX#8:.ll91 LDAXX1,X:STAXX18,X:DEX:BPLll91 57 | 8315LDA#255:STAXX2+15 58 | 8320LDY#12:LDAXX1+31:AND#32:BEQEE29:LDA(XX0),Y:LSRA:LSRA:TAX:LDA#FF:.EE30 STAXX2,X:DEX:BPLEE30:INX:STXXX4:.LL41 JMPLL42:.EE29 LDA(XX0),Y:BEQLL41:STAXX20 59 | 8330\DtProd^XX2 60 | 8335LDY#18:LDA(XX0),Y:TAX:LDAXX18+7:.LL90 TAY:BEQLL91:INX:LSRXX18+4:RORXX18+3:LSRXX18+1:RORXX18:LSRA:RORXX18+6:TAY:BNELL90+3:.LL91 STXXX17:LDAXX18+8 61 | 8350STAXX15+5:LDAXX18:STAXX15:LDAXX18+2:STAXX15+1:LDAXX18+3:STAXX15+2:LDAXX18+5:STAXX15+3:LDAXX18+6:STAXX15+4:JSRLL51:LDAXX12:STAXX18:LDAXX12+1:STAXX18+2:LDAXX12+2 62 | 8365STAXX18+3:LDAXX12+3:STAXX18+5:LDAXX12+4:STAXX18+6:LDAXX12+5:STAXX18+8 63 | 8375LDY#4:LDA(XX0),Y:CLC:ADCXX0:STAV:LDY#17:LDA(XX0),Y:ADCXX0+1:STAV+1:LDY#0 64 | 8385.LL86 LDA(V),Y:STAXX12+1:AND#31:CMPXX4:BCSLL87 65 | 8390TYA:LSRA:LSRA:TAX:LDA#255:STAXX2,X:TYA:ADC#4 66 | 8395TAY:JMPLL88:.LL87 LDAXX12+1:ASLA:STAXX12+3:ASLA:STAXX12+5 67 | 8400INY:LDA(V),Y:STAXX12:INY:LDA(V),Y:STAXX12+2:INY:LDA(V),Y 68 | 8405STAXX12+4:LDXXX17:CPX#4:BCCLL92:.LL143 69 | 8410\Face offset<255 157 | 9090TXA:CLC:ADCXX15+2:STAXX15+2:TYA:ADCXX15+3:STAXX15+3 158 | 9095LDX#FF:STXXX15:INX:STXXX15+1 159 | 9100.LL134 LDAXX15+3:BPLLL135:STAS:LDAXX15+2:STAR \ Y1<0 160 | 9105JSRLL123:TXA:CLC:ADCXX15:STAXX15:TYA:ADCXX15+1:STAXX15+1 161 | 9110LDA#0:STAXX15+2:STAXX15+3 162 | 9115.LL135 \BNELL139:LDAXX15+2:SEC:SBC#Y*2:STAR \ Y1>191 163 | 9120LDAXX15+3:SBC#0:STAS:BCCLL136:.LL139 JSRLL123:TXA:CLC:ADCXX15 164 | 9130STAXX15:TYA:ADCXX15+1:STAXX15+1:LDA#Y*2-1:STAXX15+2:LDA#0:STAXX15+3:.LL136 RTS 165 | 9140\ YX=SR*M/256 166 | 9142.LL120 LDAXX15:STAR 167 | 9145\.LL120:JSRLL129:PHA:LDXT:BNELL121:.LL122 168 | 9160LDA#0:TAX:TAY:LSRS:RORR:ASLQ:BCCLL126:.LL125 TXA:CLC 169 | 9165ADCR:TAX:TYA:ADCS:TAY:.LL126 LSRS:RORR:ASLQ:BCSLL125 170 | 9170BNELL126:PLA:BPLLL133:RTS 171 | 9180\ YX=SR*256/M (M=grad.) 172 | 9185.LL123 JSRLL129:PHA:LDXT:BNELL122:.LL121 173 | 9200LDA#255:TAY:ASLA:TAX:.LL130 ASLR:ROLS:LDAS:BCSLL131 174 | 9205CMPQ:BCCLL132:.LL131 SBCQ:STAS:LDAR:SBC#0:STAR:SEC 175 | 9210.LL132 TXA:ROLA:TAX:TYA:ROLA:TAY:BCSLL130:PLA:BMILL128 176 | 9215.LL133 TXA:EOR#FF:\CLC:ADC#1:TAX:TYA:EOR#FF:ADC#0:TAY:.LL128 RTS 177 | 9216.LL129 LDXXX12+2:STXQ:LDAS:BPLLL127:LDA#0:SEC:SBCR:STAR:LDAS:PHA:EOR#255:ADC#0:STAS:PLA:.LL127 EORXX12+3:RTS 178 | 9300.LL145 \CLIP 179 | 9305LDA#0:STASWAP 180 | 9310LDAXX15+5:.LL147 LDX#Y*2-1:ORAXX12+1:BNELL107:CPXXX12 181 | 9315BCCLL107:LDX#0:.LL107 STXXX13:LDAXX15+1:ORAXX15+3:BNELL83 182 | 9320LDA#Y*2-1:CMPXX15+2:BCCLL83 183 | 9325LDAXX13:BNELL108:.LL146 LDAXX15+2 184 | 9330STAXX15+1:LDAXX15+4:STAXX15+2:LDAXX12:STAXX15+3:LDASWAP:BEQnoswap:LDAX1:LDYX2:STAX2:STYX1:LDAY1:LDYY2:STAY2:STYY1:.noswap CLC:RTS 185 | 9335.LL109 SEC:RTS:.LL108 LSRXX13:.LL83 186 | 9340LDAXX13:BPLLL115 187 | 9345LDAXX15+1:ANDXX15+5:BMILL109:LDAXX15+3:ANDXX12+1:BMILL109 188 | 9350LDXXX15+1:DEX:TXA:LDXXX15+5:DEX:STXXX12+2:ORAXX12+2 189 | 9355BPLLL109:LDAXX15+2:CMP#Y*2:LDAXX15+3:SBC#0:STAXX12+2 190 | 9360LDAXX12:CMP#Y*2:LDAXX12+1:SBC#0:ORAXX12+2:BPLLL109 191 | 9365.LL115 TYA:PHA:LDAXX15+4:SEC:SBCXX15:STAXX12+2:LDAXX15+5 192 | 9370SBCXX15+1:STAXX12+3:LDAXX12:SEC:SBCXX15+2:STAXX12+4 193 | 9375LDAXX12+1:SBCXX15+3:STAXX12+5:EORXX12+3:STAS 194 | 9380LDAXX12+5:BPLLL110:LDA#0:SEC:SBCXX12+4:STAXX12+4:LDA#0:SBCXX12+5:STAXX12+5 195 | 9385.LL110 LDAXX12+3:BPLLL111:SEC:LDA#0:SBCXX12+2:STAXX12+2:LDA#0:SBCXX12+3 196 | 9390\GETgrad 197 | 9395.LL111 TAX:BNELL112:LDXXX12+5:BEQLL113:.LL112 LSRA:RORXX12+2 198 | 9400LSRXX12+5:RORXX12+4:JMPLL111:.LL113 STXT:LDAXX12+2 199 | 9405CMPXX12+4:BCCLL114:STAQ:LDAXX12+4:JSRLL28 200 | 9410 \ Use Y/X grad. 201 | 9415JMPLL116:.LL114 LDAXX12+4:STAQ:LDAXX12+2:JSRLL28 202 | 9420 \ Use X/Y grad. 203 | 9425DECT:.LL116 LDAR:STAXX12+2:LDAS:STAXX12+3 204 | 9430LDAXX13:BEQLL138:BPLLLX117:.LL138 JSRLL118 205 | 9435LDAXX13:BPLLL124 206 | 9440.LL117 LDAXX15+1:ORAXX15+3:BNELL137:LDAXX15+2:CMP#Y*2 207 | 9445BCSLL137:.LLX117 LDXXX15:LDAXX15+4:STAXX15:STXXX15+4:LDAXX15+5 208 | 9450LDXXX15+1:STXXX15+5:STAXX15+1:LDXXX15+2:LDAXX12:STAXX15+2 209 | 9455STXXX12:LDAXX12+1:LDXXX15+3:STXXX12+1:STAXX15+3:JSRLL118 210 | 9460DECSWAP 211 | 9465.LL124 PLA:TAY:JMPLL146:.LL137 PLA:TAY:SEC:RTS 212 | 9520] 213 | 9530PRINT" G"; 214 | 9710IFZ>4OSCLI"SAVE ELTG "+STR$~W%+" "+STR$~O%+" "+STR$~S%+" "+STR$~H% 215 | 9720GOTO16 216 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEG.inf: -------------------------------------------------------------------------------- 1 | $.ELITEG 000000 000000 0031FA 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEH.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 11GOTO20 11 | 12*L.ELITEF 12 | 13GOTO20 13 | 14*L.ELITEG 14 | 15GOTO20 15 | 16*L.ELITEH 16 | 17GOTO20 17 | 18*L.ELITEI 18 | 20REM ELITE SP 19 | 100H%=L%+P%-C%:O%=W% 20 | 1000[OPTZ 21 | 4000\CATLOD DECCTLDL+8\JSRCATLODS\INCCTLDL+8\.CATLODS LDA#&7F\LDX#(CTLDL MOD256)\LDY#(CTLDL DIV256)\JMPOSWORD 22 | 4810\CTLDL EQUB0\EQUD&E00\EQUB3\EQUB&53\EQUB0\EQUB1\EQUB&21\EQUB0 23 | 7000.MVEIT LDAINWK+31:AND#&A0:BNEMV30 24 | 7011LDAMCNT:EORXSAV:AND#15:BNEMV3:JSRTIDY:.MV3 LDXTYPE:BPLP%+5:JMPMV40:LDAINWK+32:BPLMV30:CPX#MSL:BEQMV26 25 | 7014LDAMCNT:EORXSAV:AND#7:BNEMV30:.MV26 JSRTACTICS:.MV30 JSRSCAN 26 | 7020LDAINWK+27:ASLA:ASLA:STAQ:LDAINWK+10:AND#127:JSRFMLTU:STAR:LDAINWK+10:LDX#0:JSRMVT1-2 27 | 7025LDAINWK+12:AND#127:JSRFMLTU:STAR:LDAINWK+12:LDX#3:JSRMVT1-2:LDAINWK+14:AND#127:JSRFMLTU:STAR:LDAINWK+14:LDX#6:JSRMVT1-2 28 | 7030LDAINWK+27:CLC:ADCINWK+28:BPLP%+4:LDA#0:LDY#15:CMP(XX0),Y:BCCP%+4:LDA(XX0),Y:STAINWK+27:LDA#0:STAINWK+28 29 | 7040LDXALP1:LDAINWK:EOR#FF:STAP:LDAINWK+1:JSRMLTU2-2:STAP+2:LDAALP2+1:EORINWK+2:LDX#3:JSRMVT6 30 | 7045STAK2+3:LDAP+1:STAK2+1:EOR#FF:STAP:LDAP+2:STAK2+2\K2=Y-aX 31 | 7050LDXBET1:JSRMLTU2-2:STAP+2:LDAK2+3:EORBET2:LDX#6:JSRMVT6:STAINWK+8:LDAP+1:STAINWK+6:EOR#FF:STAP:LDAP+2:STAINWK+7\Z=Z+bK2 32 | 7060JSRMLTU2:STAP+2:LDAK2+3:STAINWK+5:EORBET2:EORINWK+8:BPLMV43:LDAP+1:ADCK2+1:STAINWK+3:LDAP+2:ADCK2+2:STAINWK+4:JMPMV44:.MV43 33 | 7070LDAK2+1:SBCP+1:STAINWK+3:LDAK2+2:SBCP+2:STAINWK+4:BCSMV44:LDA#1:SBCINWK+3:STAINWK+3:LDA#0:SBCINWK+4:STAINWK+4:LDAINWK+5:EOR#128:STAINWK+5 34 | 7080.MV44\Y=K2-bZ:LDXALP1:LDAINWK+3:EOR#FF:STAP:LDAINWK+4:JSRMLTU2-2:STAP+2:LDAALP2:EORINWK+5:LDX#0:JSRMVT6:STAINWK+2:LDAP+2:STAINWK+1:LDAP+1:STAINWK\X=X+aY 35 | 7110.MV45 LDADELTA:STAR:LDA#128:LDX#6:JSRMVT1:LDATYPE:AND#&81:CMP#&81:BNEP%+3:RTS \Z=Z-d 36 | 7120LDY#9:JSRMVS4:LDY#15:JSRMVS4:LDY#21:JSRMVS4:LDAINWK+30:AND#128:STARAT2:LDAINWK+30:AND#127:BEQMV8:CMP#127:SBC#0:ORARAT2:STAINWK+30 37 | 7130LDX#15:LDY#9:JSRMVS5:LDX#17:LDY#11:JSRMVS5:LDX#19:LDY#13:JSRMVS5 38 | 7160.MV8 LDAINWK+29:AND#128:STARAT2:LDAINWK+29:AND#127:BEQMV5:CMP#127:SBC#0:ORARAT2:STAINWK+29 39 | 7170LDX#15:LDY#21:JSRMVS5:LDX#17:LDY#23:JSRMVS5:LDX#19:LDY#25:JSRMVS5 40 | 7210.MV5 LDAINWK+31:AND#&A0:BNEMVD1:LDAINWK+31:ORA#16:STAINWK+31:JMPSCAN:.MVD1 LDAINWK+31:AND#&EF:STAINWK+31:RTS 41 | 7300AND#128:.MVT1 ASLA:STAS:LDA#0:RORA:STAT:LSRS:EORINWK+2,X:BMIMV10:LDAR:ADCINWK,X:STAINWK,X:LDAS:ADCINWK+1,X:STAINWK+1,X:LDAINWK+2,X:ADC#0:ORAT:STAINWK+2,X:RTS 42 | 7310.MV10 LDAINWK,X:SEC:SBCR:STAINWK,X:LDAINWK+1,X:SBCS:STAINWK+1,X:LDAINWK+2,X:AND#127:SBC#0:ORA#128:EORT:STAINWK+2,X:BCSMV11 43 | 7320LDA#1:SBCINWK,X:STAINWK,X:LDA#0:SBCINWK+1,X:STAINWK+1,X:LDA#0:SBCINWK+2,X:AND#127:ORAT:STAINWK+2,X:.MV11 RTS 44 | 7500.MVS4 LDAALPHA:STAQ:LDXINWK+2,Y:STXR:LDXINWK+3,Y:STXS:LDXINWK,Y:STXP:LDAINWK+1,Y:EOR#128:JSRMAD:STAINWK+3,Y:STXINWK+2,Y:STXP\Y=Y-aX 45 | 7520LDXINWK,Y:STXR:LDXINWK+1,Y:STXS:LDAINWK+3,Y:JSRMAD:STAINWK+1,Y:STXINWK,Y:STXP\X=X+aY 46 | 7530LDABETA:STAQ:LDXINWK+2,Y:STXR:LDXINWK+3,Y:STXS:LDXINWK+4,Y:STXP:LDAINWK+5,Y:EOR#128:JSRMAD:STAINWK+3,Y:STXINWK+2,Y:STXP\Y=Y-bZ 47 | 7540LDXINWK+4,Y:STXR:LDXINWK+5,Y:STXS:LDAINWK+3,Y:JSRMAD:STAINWK+5,Y:STXINWK+4,Y:RTS \Z=Z+bY 48 | 7650.MVT6 TAY:EORINWK+2,X:BMIMV50:LDAP+1:CLC:ADCINWK,X:STAP+1:LDAP+2:ADCINWK+1,X:STAP+2:TYA:RTS 49 | 7660.MV50 LDAINWK,X:SEC:SBCP+1:STAP+1:LDAINWK+1,X:SBCP+2:STAP+2:BCCMV51:TYA:EOR#128:RTS:.MV51 LDA#1:SBCP+1:STAP+1:LDA#0:SBCP+2:STAP+2:TYA:RTS 50 | 7700.MV40 LDAALPHA:EOR#128:STAQ:LDAINWK:STAP:LDAINWK+1:STAP+1:LDAINWK+2:JSRMULT3:LDX#3:JSRMVT3\K=Y-aX 51 | 7710LDAK+1:STAK2+1:STAP:LDAK+2:STAK2+2:STAP+1:LDABETA:STAQ:LDAK+3:STAK2+3:JSRMULT3:LDX#6:JSRMVT3:LDAK+1:STAP:STAINWK+6:LDAK+2:STAP+1:STAINWK+7:LDAK+3:STAINWK+8\Z=Z+bK2 52 | 7720EOR#128:JSRMULT3:LDAK+3:AND#128:STAT:EORK2+3:BMIMV1:LDAK:CLC:ADCK2:LDAK+1:ADCK2+1:STAINWK+3:LDAK+2:ADCK2+2:STAINWK+4:LDAK+3:ADCK2+3:JMPMV2 53 | 7740.MV1 LDAK:SEC:SBCK2:LDAK+1:SBCK2+1:STAINWK+3:LDAK+2:SBCK2+2:STAINWK+4:LDAK2+3:AND#127:STAP:LDAK+3:AND#127:SBCP:STAP:BCSMV2 54 | 7750LDA#1:SBCINWK+3:STAINWK+3:LDA#0:SBCINWK+4:STAINWK+4:LDA#0:SBCP:ORA#128:.MV2 EORT:STAINWK+5\Y=K2-bZ 55 | 7760LDAALPHA:STAQ:LDAINWK+3:STAP:LDAINWK+4:STAP+1:LDAINWK+5:JSRMULT3:LDX#0:JSRMVT3:LDAK+1:STAINWK:LDAK+2:STAINWK+1:LDAK+3:STAINWK+2\X=X+aY 56 | 7770JMPMV45 57 | 8000.Checksum SEC:LDY#0:STYV:LDX#&10:LDA(SC)\++RH:TXA:.CHKLoop STXV+1:STYT:ADC(V),Y:EORT:SBCV+1:DEY:BNECHKLoop:INX:CPX#&A0:BCCCHKLoop:CMPS%-1:BNEChecksum:RTS 58 | 8500.PLUT LDXVIEW:BEQPU2-1:.PU1 DEX:BNEPU2 59 | 8510LDAINWK+2:EOR#128:STAINWK+2:LDAINWK+8:EOR#128:STAINWK+8:LDAINWK+10:EOR#128:STAINWK+10:LDAINWK+14:EOR#128:STAINWK+14:LDAINWK+16:EOR#128:STAINWK+16 60 | 8520LDAINWK+20:EOR#128:STAINWK+20:LDAINWK+22:EOR#128:STAINWK+22:LDAINWK+26:EOR#128:STAINWK+26:RTS 61 | 8530.PU2 LDA#0:CPX#2:RORA:STARAT2:EOR#128:STARAT 62 | 8540LDAINWK:LDXINWK+6:STAINWK+6:STXINWK:LDAINWK+1:LDXINWK+7:STAINWK+7:STXINWK+1:LDAINWK+2:EORRAT:TAX:LDAINWK+8:EORRAT2:STAINWK+2:STXINWK+8 63 | 8550LDY#9:JSRPUS1 64 | 8560LDY#15:JSRPUS1 65 | 8570LDY#21 66 | 8600.PUS1 LDAINWK,Y:LDXINWK+4,Y:STAINWK+4,Y:STXINWK,Y:LDAINWK+1,Y:EORRAT:TAX:LDAINWK+5,Y:EORRAT2:STAINWK+1,Y:STXINWK+5,Y:.LO2 RTS 67 | 8990.LQ STXVIEW:JSRTT66:JSRSIGHT:JMPNWSTARS 68 | 9000.LOOK1 LDA#0:JSRDOVDU19:LDYQQ11:BNELQ:CPXVIEW:BEQLO2:STXVIEW:JSRTT66:JSRFLIP:JSRWPSHPS 69 | 9010.SIGHT LDYVIEW:LDALASER,Y:BEQLO2:LDA#YELLOW:JSRDOCOL:LDA#128:STAQQ19:LDA#Y-24:STAQQ19+1:LDA#20:STAQQ19+2:JSRTT15b:LDA#10:STAQQ19+2:JMPTT15b \<<=Ian=>> 70 | 9400.TT66 STAQQ11:.TTX66 JSRMT2:JSRPBZE:JSRHBZE:STZLBUP:STZLSP \++:LDA#128:STAQQ17:STADTW2:JSRFLFLLS:LDA#YELLOW:JSRDOCOL:STZLAS2:STZDLY:STZde\+++:LDA#11:JSROSWRCH 71 | 9410LDXQQ22+1:BEQOLDBOX:JSRee3:.OLDBOX:LDA#1:JSRDOYC:LDAQQ11:BNEtt66:LDA#11:JSRDOXC:LDA#CYAN:JSRDOCOL:LDAVIEW:ORA#&60:JSRTT27:JSRTT162:LDA#175:JSRTT27:.tt66 72 | 9420LDA#1:JSRDOXC:JSRDOYC:LDX#0:STXQQ17:RTS 73 | 9430.BOX LDA#YELLOW:JSRDOCOL:LDX#0:STXQQ17:STXX1:STXY1:STXY2:DEX:STXX2:JSRLL30:LDA#2:STAX1:STAX2:JSRBOS2:.BOS2 JSRBOS1:.BOS1 LDA#0:STAY1:LDA#2*Y-1:STAY2:DECX1:DECX2:JMPLL30 74 | 9450.DELAY JSRWSCAN:DEY:BNEDELAY:RTS 75 | 9460.CLYNS LDA#FF:STADTW2:LDA#128:STAQQ17:LDA#21:STAYC:LDA#1:STAXC:LDA#clyns:JSROSWRCH:JSROSWRCH:LDA#0:TAY:.SC5 RTS 76 | 9499.SCANpars EQUB7:EQUB0:.SCANflg brk:.SCANlen brk:.SCANcol brk:.SCANx1 brk:.SCANy1 brk 77 | 9500.SCAN LDAINWK+31:AND#16:BEQSC5 78 | 9505LDXTYPE:BMISC5:LDAscacol,x:STASCANcol:LDAINWK+1:ORAINWK+4:ORAINWK+7:AND#&C0:BNESC5 79 | 9510LDAINWK+1:CLC:LDXINWK+2:BPLSC2:EOR#FF:ADC#1:.SC2 ADC#123:STASCANx1 80 | 9520LDAINWK+7:LSRA:LSRA:CLC:LDXINWK+8:BPLSC3:EOR#FF:SEC:.SC3 ADC#35:EOR#FF:STASC 81 | 9530LDAINWK+4:LSRA:CLC:LDXINWK+5:BMISCD6:EOR#FF:SEC:.SCD6 ADCSC:BPLFIXIT:CMP#194:BCSP%+4:LDA#194:CMP#247:BCCP%+4:.FIXIT LDA#246 82 | 9535STASCANy1:SEC:SBCSC:STASCANlen:RORSCANflg:.SC48 LDX#(SCANpars MOD256):LDY#(SCANpars DIV256):LDA#onescan:JMPOSWORD 83 | 9700.WSCpars EQUB2:EQUB2:EQUW0:.WSCAN PHX:PHY:\++:LDA#wscn:LDX#(WSCpars MOD256):LDY#(WSCpars DIV256):JSROSWORD:PLY:PLX:RTS 84 | 9900] 85 | 9910PRINT" H "; 86 | 9920IFZ>4OSCLI"SAVE ELTH "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H% 87 | 9930GOTO18 88 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEH.inf: -------------------------------------------------------------------------------- 1 | $.ELITEH 000000 000000 001B2D 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEI.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 11GOTO20 11 | 12*L.ELITEF 12 | 13GOTO20 13 | 14*L.ELITEG 14 | 15GOTO20 15 | 16*L.ELITEH 16 | 17GOTO20 17 | 18*L.ELITEI 18 | 19GOTO30 19 | 20*L.ELITEJ 20 | 30REM ELITE SP 21 | 100H%=L%+P%-C%:O%=W% 22 | 200W=5:W2=16:WY=12:W2Y=2.5*WY:D=80 23 | 1000[OPTZ 24 | 1200.HIMCNT BRK 25 | 1900.ZINF2 LDA#0:LDX#NI%-1:.DML1 STAINWK,X:DEX:BPLDML1:LDA#96:STAINWK+18:STAINWK+22:STAINWK+14:RTS 26 | 1920.TWIST2 EQUB&2C:.TWIST LDA#0:STARAT2:LDX#15:LDY#9:JSRMVS5:LDX#17:LDY#11:JSRMVS5:LDX#19:LDY#13:JMPMVS5 27 | 1940.STORE LDY#NI%-1:.DML2 LDAINWK,Y:STA(INF),Y:DEY:BPLDML2:RTS 28 | 2000.DEMON 29 | 2005LDA#1:JSRTT66:JSRRESET:LDA#0:STAALPHA:STAALP1:STADELTA:STAscacol+CYL:JSRDOVDU19 30 | 2010JSRnWq:LDX#(acorn MOD256):LDY#(acorn DIV256):JSRSLIDE 31 | 2020JSRZINF2:LDA#128:STAINWK+5:LDA#100:STAINWK+3:LDA#LGO:STATYPE:JSRNWSHP:LDA#150:STAMCNT 32 | 2030.FLYL1 LDAINWK+6:CLC:ADC#3:STAINWK+6:LDAINWK+7:ADC#0:STAINWK+7:JSRLL9:DECMCNT:BNEFLYL1 33 | 2040.FLYL2 LDAINWK+6:CLC:ADC#2:STAINWK+6:LDAINWK+7:ADC#0:STAINWK+7 34 | 2050LDA#128:JSRTWIST2 35 | 2060\DECINWK+3:JSRLL9:LDAINWK+14:BPLFLYL2 36 | 2070JSRSTORE 37 | 2100JSRZINF2:LDA#108:STAINWK+3:LDA#40:STAINWK+6:LDA#128:STAINWK+8:LDA#CYL:STATYPE:JSRNWSHP:LDA#1:STAINWK+27:STAHIMCNT:LDA#90:STAMCNT 38 | 2105JSRTWIST:JSRTWIST:JSRTWIST 39 | 2110.FLYL4 JSRLL9:JSRMVEIT:DECMCNT:BNEFLYL4:DECHIMCNT:BPLFLYL4 40 | 2112JSRZZAAP:LDA#0:JSRNOISE:LDY#10:JSRDELAY 41 | 2120LDA#44:STAINWK+29:LDA#8:STAINWK+27:LDA#&87:STAINWK+30:JSRSTORE:LDA#128:TSBK%+31 \++:JSREXNO3 42 | 2122JSRZZAAP 43 | 2130.FLYL5 LDX#NI%-1:.DML3 LDAK%,X:STAINWK,X:DEX:BPLDML3:INX:JSRGINF:LDAXX21-2+2*LGO:STAXX0:LDAXX21-1+2*LGO:STAXX0+1:LDA#LGO:STATYPE:INCINWK:JSRLL9:JSRSTORE 44 | 2135JSRPBFL:LDAINWK+31:AND#&A0:CMP#&A0:PHP 45 | 2140LDX#NI%-1:.DML4 LDAK%+NI%,X:STAINWK,X:DEX:BPLDML4:LDX#1:JSRGINF:LDAXX21-2+2*CYL:STAXX0:LDAXX21-1+2*CYL:STAXX0+1:LDA#CYL:STATYPE:JSRMVEIT:JSRLL9:JSRSTORE 46 | 2150PLP:BNEFLYL5 47 | 2160LDA#14:STADELTA:STZDELT4 \++:LSRA:RORDELT4:LSRA:RORDELT4:STADELT4+1 48 | 2200LDX#(byian MOD256):LDY#(byian DIV256):JSRSLIDE 49 | 2210LDX#NI%-1:.DML5 LDAK%+NI%,X:STAINWK,X:DEX:BPLDML5 50 | 2220.FLYL6 JSRSTARS1:JSRMVEIT:JSRLL9:LDAINWK+8:BPLFLYL6 51 | 2240LDX#(true3 MOD256):LDY#(true3 DIV256):JSRSLIDE 52 | 2300JSRRES2:LDA#&E0:STAINWK+14:STZDELTA:STZALPHA:STZALP1 \++ 53 | 2310LDX#15:STXINWK+27:LDX#5:STXINWK+7:LDA#ADA:STATYPE:JSRNWSHP 54 | 2330.FLYL7 JSRMVEIT:JSRLL9:LDAINWK+7:BNEFLYL7:LDA#3:STAINWK+29:STAINWK+30:LDAINWK+8:BPLFLYL7 55 | 2500JSRSCAN:JSRRES2:LDA#CYAN2:STAscacol+CYL:JMPDEATH2 \More Demo stuff here 56 | 3050.SLIDE JSRGRIDSET:JSRZEVB:LDA#YELLOW:JSRDOCOL 57 | 3060LDA#254:STABALI:.SLL2 JSRGRID:DECBALI:DECBALI:BNESLL2 58 | 3070.SL1 JSRZEVB:LDA#2:STABALI 59 | 3100.GRID LDY#0:STYUPO:STYINWK+8:STYINWK+1:STYINWK+4:DEY:.GRIDL INY 60 | 3105STZINWK+7 \++:LDAY1TB,Y:BNEP%+5:JMPGREX:SEC:SBCBALI:BCCGRIDL:STAR:ASLA:ROLINWK+7:ASLA:ROLINWK+7:ADC#D:STAINWK+6:LDAINWK+7:ADC#0:STAINWK+7 61 | 3110STZS:LDA#128:STAP:JSRADD:STAINWK+5:STXINWK+3 62 | 3115LDAX1TB,Y:EOR#128:BPLGR2:EOR#FF:INA \++:.GR2 STAINWK:LDAX1TB,Y:EOR#128:AND#128:STAINWK+2 63 | 3120STYYS:JSRPROJ:LDYYS:LDAK3:STAXX15:LDAK3+1:STAXX15+1:LDAK4:STAXX15+2:LDAK4+1:STAXX15+3 64 | 3130STZINWK+7 \++:LDAY2TB,Y:SEC:SBCBALI:BCCGR6:STAR:ASLA:ROLINWK+7:ASLA:ROLINWK+7:ADC#D:STAINWK+6:LDAINWK+7:ADC#0:STAINWK+7 65 | 3140STZS:LDA#128:STAP:JSRADD:STAINWK+5:STXINWK+3 66 | 3150LDAX2TB,Y:EOR#128:BPLGR3:EOR#FF:INA \++:.GR3 STAINWK:LDAX2TB,Y:EOR#128:AND#128:STAINWK+2 67 | 3160JSRPROJ:LDAK3:STAXX15+4:LDAK3+1:STAXX15+5:LDAK4:STAXX12:LDAK4+1:STAXX12+1 68 | 3180JSRLL145:LDYYS:BCSGR6:INCUPO:LDXUPO:LDAX1:STAX1UB,X:LDAY1:STAY1UB,X:LDAX2:STAX2UB,X:LDAY2:STAY2UB,X 69 | 3190.GR6 JMPGRIDL 70 | 3195.GREX 71 | 3200LDYUPO:BEQGREX2:.GRL2 LDAY1VB,Y:BEQGR4:STAY1:LDAX1VB,Y:STAX1:LDAX2VB,Y:STAX2:LDAY2VB,Y:STAY2:JSRLOIN 72 | 3210.GR4 LDAX1UB,Y:STAX1:STAX1VB,Y:LDAY1UB,Y:STAY1:STAY1VB,Y:LDAX2UB,Y:STAX2:STAX2VB,Y:LDAY2UB,Y:STAY2:STAY2VB,Y 73 | 3220JSRLOIN:DEY:BNEGRL2:JSRLBFL:.GREX2 RTS 74 | 3300.ZEVB LDA#0:TAY:.SLL1 STAY1VB,Y:DEY:BNESLL1:RTS 75 | 4000.GRIDSET STXGSL1+1:STYGSL1+2:LDA#254:STAYP:LDY#0:LDX#0:STXXP:.GSL1 LDAP%,Y:BEQGRSEX:STYT:SEC:SBC#44:STAS:ASLA:ASLA:ADCS:TAY 76 | 4010LDALTDEF,Y:JSRGRS1:LDALTDEF+1,Y:JSRGRS1:LDALTDEF+2,Y:JSRGRS1:LDALTDEF+3,Y:JSRGRS1:LDALTDEF+4,Y:JSRGRS1 77 | 4020LDYT:INY:LDAXP:CLC:ADC#W2:STAXP:BCCGSL1:LDA#0:STAXP:LDAYP:SBC#W2Y:STAYP:JMPGSL1 78 | 4030.GRSEX LDA#0:STAY1TB,X:RTS 79 | 4200.GRS1 BEQGRR1:STAR:AND#15:STYP:TAY:LDANOFX,Y:CLC:ADCXP:STAX1TB,X:LDAYP:SEC:SBCNOFY,Y:STAY1TB,X 80 | 4210LDAR:LSRA:LSRA:LSRA:LSRA:TAY:LDANOFX,Y:CLC:ADCXP:STAX2TB,X:LDAYP:SEC:SBCNOFY,Y:STAY2TB,X:INX:LDYP:.GRR1 RTS 81 | 4300.ZZAAP LDA#RED:JSRDOCOL:LDA#128:STAX1:STAX2:LDA#67:STAY1:LDA#160:STAY2:JMPLL30 82 | 5000.LTDEF 83 | 5010]:RESTORE5044:FORI%=44TO90:FORJ%=1TO5:READA$:A%=EVAL("&"+A$):[OPTZ:EQUBA%:]:NEXT, 84 | 5044DATA 63,34,47,76,97 85 | 5045DATA 35,00,00,00,00 86 | 5046DATA 63,34,47,76,00 87 | 5047DATA 61,00,00,00,00 88 | 5048DATA 73,31,15,57,00 89 | 5049DATA 31,17,00,00,00 90 | 5050DATA 02,25,53,36,68 91 | 5051DATA 02,28,86,35,00 92 | 5052DATA 82,23,35,00,00 93 | 5053DATA 20,03,35,58,86 94 | 5054DATA 20,06,68,85,53 95 | 5055DATA 02,28,00,00,00 96 | 5056DATA 60,02,28,86,35 97 | 5057DATA 82,20,03,35,00 98 | 5058DATA 00,00,00,00,00 99 | 5059DATA 00,00,00,00,00 100 | 5060DATA 00,00,00,00,00 101 | 5061DATA 00,00,00,00,00 102 | 5062DATA 00,00,00,00,00 103 | 5063DATA 00,00,00,00,00 104 | 5064DATA 00,00,00,00,00 105 | 5065DATA 60,02,28,35,00 106 | 5066DATA 60,02,28,86,35 107 | 5067DATA 86,60,02,00,00 108 | 5068DATA 60,05,56,00,00 109 | 5069DATA 86,60,02,35,00 110 | 5070DATA 60,02,35,00,00 111 | 5071DATA 45,58,86,60,02 112 | 5072DATA 60,28,35,00,00 113 | 5073DATA 17,00,00,00,00 114 | 5074DATA 28,86,63,00,00 115 | 5075DATA 60,23,83,00,00 116 | 5076DATA 86,60,00,00,00 117 | 5077DATA 60,04,42,28,00 118 | 5078DATA 60,08,82,00,00 119 | 5079DATA 60,02,28,86,00 120 | 5080DATA 60,02,25,53,00 121 | 5081DATA 60,02,28,86,48 122 | 5082DATA 60,02,25,53,48 123 | 5083DATA 20,03,35,58,86 124 | 5084DATA 02,17,00,00,00 125 | 5085DATA 28,86,60,00,00 126 | 5086DATA 27,70,00,00,00 127 | 5087DATA 28,84,46,60,00 128 | 5088DATA 26,08,00,00,00 129 | 5089DATA 74,04,24,00,00 130 | 5090DATA 02,26,68,00,00 131 | 5400[OPTZ 132 | 5500.NOFX EQUB4:EQUB8:EQUB12 133 | 5510 EQUB4:EQUB8:EQUB12 134 | 5520 EQUB4:EQUB8:EQUB12 135 | 5530 EQUB4:EQUB8:EQUB12 136 | 5550.NOFY EQUB0:EQUB0:EQUB0 137 | 5560 EQUBWY:EQUBWY:EQUBWY 138 | 5570 EQUB2*WY:EQUB2*WY:EQUB2*WY 139 | 5580 EQUB2.5*WY:EQUB2.5*WY:EQUB2.5*WY 140 | 5999\ \......+......./\......+......./\......+......./\......+......" 141 | 6000.acorn EQUS":::ACORNSOFT::::;;;;;;;;;;;;;;;;::::PRESENTS":EQUB0 142 | 6100.byian EQUS"::::::BY:;::::::;;;;IAN;BELL;;;;::::::AND:::::::;;DAVID;BRABEN":EQUB0 143 | 6200.true3 EQUS"THE:GALAXY:IS:INTURMOIL,THE:NAVYFAR:AWAY:AS::THEEMPIRE:CRUMBLES.":EQUB0 144 | 9900] 145 | 9910PRINT"I "; 146 | 9920IFZ>4OSCLI"SAVE ELTI "+STR$~W%+" "+STR$~O%+" "+STR$~L%+" "+STR$~H% 147 | 9930GOTO20 148 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEI.inf: -------------------------------------------------------------------------------- 1 | $.ELITEI 000000 000000 001A06 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEJ.TXT: -------------------------------------------------------------------------------- 1 | 1GOTO20 2 | 2*L.ELITEB 3 | 3GOTO20 4 | 4*L.ELITEA 5 | 6*L.ELITEC 6 | 7GOTO20 7 | 8*L.ELITED 8 | 9GOTO20 9 | 10*L.ELITEE 10 | 11GOTO20 11 | 12*L.ELITEF 12 | 13GOTO20 13 | 14*L.ELITEG 14 | 15GOTO20 15 | 16*L.ELITEH 16 | 17GOTO20 17 | 18*L.ELITEI 18 | 19GOTO30 19 | 20*L.ELITEJ 20 | 30REM ELITE 21 | 100H%=L%+P%-C%:O%=W% 22 | 3000[OPTZ:.TKN1 EQUBVE:] 23 | 3010RESTORE 4010 24 | 3020FORI%=1TO255 25 | 3030READA$:GOSUB10000 26 | 3040IFRIGHT$(A$,1)="#" P%=P%-2:O%=O%-2:GOTO3030 27 | 3050NEXTI% 28 | 3060READ A1$ 29 | 3100READ NRU%:RUPLA=P%:O1%=O%:RUGAL=P%+NRU%:O2%=O%+NRU%:P%=P%+2*NRU%:O%=O%+2*NRU% 30 | 3105[OPTZ:.RUTOK EQUBVE:] 31 | 3110FORI%=0TONRU%-1:READ planet,galaxy,A$ 32 | 3120O1%?I%=planet:O2%?I%=galaxy:GOSUB10000 33 | 3130NEXTI% 34 | 3220READA2$ 35 | 4000REM Line Number=10*Token Number + 4000 36 | 4010DATA"<009><011><030><001><008> <241>SK AC<233>SS ME<225><215><010><002>1. <149><215>2. SA<250> <154> <004><215>3. C<245>A<224>GUE<215>4. DEL<221>E<208>FI<229><215>5. EX<219><215>" 37 | 4020DATA"<012>WHICH <151>?","COMPE<251)<251><223> <225>MB<244>:","<150><151> <016><152><215>","<176><109><202><110><177>" 38 | 4060DATA" <149> <001>(Y/N)?<002><012><012>","P<242>SS SPA<233> <253> FI<242>,<154>.<012><012>","<154>'S<200>","<021>FI<229><201>DEL<221>E?" 39 | 4095REM....................... 40 | 4100DATA"<023><014><002>G<242><221><240>GS<213><178><019>I <247>G<208>MOM<246>T OF <179>R V<228>U<216><229> <251>ME<204>#" 41 | 4101DATA"WE W<217>LD LIKE <179><201>DO<208>L<219>T<229> JOB F<253> <236><204><147><207> <179> <218>E HE<242><202>A<210>MODEL, <147><019>C<223><222>RICT<253>, E<254>IP<196>WI<226><208>TOP#" 42 | 4102DATA" <218>CR<221><210>SHIELD G<246><244><245><253><204>UNF<253>TUN<245>ELY <219>'S <247><246> <222>OL<246><204><022>#" 43 | 4103DATA"<219> W<246>T MISS<195>FROM <217>R <207> Y<238>D <223> <019><230><244> FI<250> M<223><226>S AGO<178><028><204><179>R MISSI<223>, SH<217>LD <179> DECIDE<201>AC<233>PT <219>, IS<201><218>EK<178>D<237>TROY #" 44 | 4104DATA"<148><207><204><179> A<242> CAU<251><223><196><226><245> <223>LY <006><117><005>S W<220>L P<246><221><248>TE <147>NEW SHIELDS<178><226><245> <147><019>C<223><222>RICT<253><202>F<219>T<196>WI<226>#" 45 | 4105DATA" <255> <006><108><005><177><002><008>GOOD LUCK, <154><212><022>" 46 | 4108REM.................. 47 | 4110DATA"<025><009><030><023><014><002> <245>T<246><251><223><213>. <019>WE HA<250> NE<196>OF <179>R <218>RVIC<237> AGA<240><204>#" 48 | 4111DATA"IF <179> W<217>LD <247> <235> GOOD AS<201>GO<201><019><233><244><241> <179> W<220>L <247> BRIEF<252><204>IF SUC<233>SSFUL, <179> W<220>L <247> WELL <242>W<238>D<252><212><024>" 49 | 4120DATA"(<019>C) AC<253>N<235>FT 1984","BY D.B<248><247>N & I.<247>LL","<021><145><200><026>" 50 | 4150DATA"<025><009><030><023><014><002> C<223>G<248>TU<249><251><223>S <154>!<012><012><226><244>E<013> W<220>L <228>WAYS <247><208>P<249><233> F<253> <179> <240><211><204><255>D <239>Y<247> <235><223><244> <226><255> <179> <226><240>K#" 51 | 4151DATA"..<212><024>" 52 | 4160DATA"F<216><229>D","<227>T<216><229>","WELL K<227>WN","FAMO<236>","<227>T<252>" 53 | 4210DATA"<250>RY","M<220>DLY","MO<222>","<242>AS<223><216>LY","" 54 | 4260DATA"<165>","<114>","G<242><245>","VA<222>","P<240>K" 55 | 4310DATA"<002><119> <118><013> <185>A<251><223>S","<156>S","<117>","<128> F<253><237>TS","O<233><255>S" 56 | 4360DATA"SHYN<237>S","S<220>L<240><237>S","<239>T<195>T<248><241><251><223>S","<224><245>H<195>OF <100>","<224><250> F<253> <100>" 57 | 4410DATA"FOOD B<229>ND<244>S","T<217>RI<222>S","PO<221>RY","<241>SCOS","<108>" 58 | 4460DATA"W<228>K<195><158>","C<248>B","B<245>","<224>B<222>","<018>" 59 | 4510DATA"<247>S<221>","P<249>GU<252>","<248>VAG<252>","CURS<252>","SC<217>RG<252>" 60 | 4560DATA"<113> CIV<220> W<238>","<104> <095> <096>S","A <104> <241><218>A<218>","<113> E<238><226><254>AK<237>","<113> <235><249>R AC<251>V<219>Y" 61 | 4610DATA"<175><093> <094>","<147><017> <095> <096>","<175><193>S' <098> <099>","<002><122><013>","<175><107> <108>" 62 | 4660DATA"JUI<233>","B<248>NDY","W<245><244>","B<242>W","G<238>G<229> B<249><222><244>S" 63 | 4710DATA"<018>","<017> <096>","<017> <018>","<017> <104>","<104> <018>" 64 | 4760DATA"F<216>U<224><236>","EXO<251>C","HOOPY","U<225>SU<228>","EXC<219><240>G" 65 | 4810DATA"CUIS<240>E","NIGHT LIFE","CASI<227>S","S<219> COMS","<002><122><013>" 66 | 4860DATA"<003>","<147><145> <003>","<147><146> <003>","<148><145>","<148><146>" 67 | 4910DATA"S<223> OF<208>B<219>CH","SC<217>ND<242>L","B<249>CKGU<238>D","ROGUE","WH<253><237><223> <247><221><229> HEAD<196>F<249>P E<238>'D KNA<250>" 68 | 4960DATA"N UN<242><239>RK<216><229>"," B<253><240>G"," DULL"," TE<241>O<236>"," <242>VOLT<240>G" 69 | 5010DATA"<145>","<146>","P<249><233>","L<219>T<229> <145>","DUMP" 70 | 5060DATA"I HE<238><208><114> <224>OK<195><207> APPE<238><196><245><209>","YEAH, I HE<238><208><114> <207> <229>FT<209><208> WHI<229> BACK","G<221> <179>R IR<223> ASS OV<244> TO<209>" 71 | 5090DATA"<235>ME <115><210><207> WAS <218><246> <245><209>","TRY<209>" 72 | 5110DATA"","","","" 73 | 5150DATA"WASP","MO<226>","GRUB","<255>T","<018>" 74 | 5200DATA"PO<221>","<238>TS G<248>DU<245>E","YAK","SNA<220>","SLUG" 75 | 5250DATA"TROPIC<228>","D<246><218>","<248><240>","IMP<246><221><248>B<229>","EXU<247><248>NT" 76 | 5300DATA"FUNNY","WI<244>D","U<225>SU<228>","<222><248>N<231>","PECULI<238>" 77 | 5350DATA"F<242><254><246>T","OCCASI<223><228>","UNP<242><241>CT<216><229>","D<242>ADFUL","<171>" 78 | 5400DATA"<092> <091> F<253> <101>","<140><178><101>","<102> BY <103>","<140> BUT <142>"," A<111> <112>" 79 | 5450DATA"PL<255><221>","W<253>LD","<226>E ","<226>IS ","<224>AD<210><154>" 80 | 5500DATA"<009><011><001><008>","DRI<250>"," C<245>A<224>GUE","I<255>","<019>COMM<255>D<244>" 81 | 5550DATA"<104>","M<217>NTA<240>","<252>IB<229>","T<242>E","SPOTT<252>" 82 | 5600DATA"<120>","<121>","<097>OID","<127>","<126>" 83 | 5650DATA"<255>CI<246>T","EX<233>P<251><223><228>","EC<233>NTRIC","<240>G<248><240><252>","<114>" 84 | 5700DATA"K<220>L<244>","DEADLY","EV<220>","<229><226><228>","VICIO<236>" 85 | 5750DATA"<219>S ","<013><014><019>",".<012><015>"," <255>D ","Y<217>" 86 | 5800DATA"P<238>K<195>M<221><244>S","D<236>T C<224>UDS","I<233> <247>RGS","ROCK F<253><239><251><223>S","VOLCA<227><237>" 87 | 5850DATA"PL<255>T","TULIP","B<255><255>A","C<253>N","<018>WE<252>" 88 | 5900DATA"<018>","<017> <018>","<017> <104>","<240>HA<234>T<255>T","<191>" 89 | 5950DATA"<240>G ","<252> ","","","" 90 | 6000DATA" NAME? "," TO "," IS ","WAS <249><222> <218><246> <245> <019>",".<012> <019>" 91 | 6050DATA"DOCK<252>","<001>(Y/N)?","SHIP"," A "," <244>RI<236>" 92 | 6100DATA" NEW ","<002> H<244> <239>J<237>TY'S SPA<233> NAVY<013>","<177><008><001> M<237>SA<231> <246>DS"," <154> <004>, I <013>AM<002> CAPTA<240> <027> <013>OF<211>","" 93 | 6150DATA"<015> UNK<227>WN <145>","<009><008><023><030><001><240>COM<195>M<237>SA<231>","CURRU<226><244>S","FOSDYKE SMY<226>E","F<253>T<237><254>E" 94 | 6200DATA"<203><242><237><241><233>","IS <247>LIEV<252><201>HA<250> JUMP<252><201><148>G<228>AXY" 95 | 6220DATA"<025><009><030><029><014><002>GOOD DAY <154> <004><204>I<013> AM <019>AG<246>T <019>B<249>KE OF <019>NAVAL <019><240>TEL<229>G<246><233><204>AS <179> K<227>W, <147><019>NAVY HA<250> <247><246> KEEP<195><147><019><226><238>GOIDS#" 96 | 6221DATA" OFF <179>R ASS <217>T <240> DEEP SPA<233> F<253> <239>NY YE<238>S <227>W. <019>WELL <147>S<219>UA<251><223> HAS CH<255>G<252><204><217>R BOYS <238>E <242>ADY F<253><208>PUSH RIGHT<201><147>#" 97 | 6222DATA"HOME SYSTEM OF <226>O<218> MO<226><244>S<204><024><009><030><029>I<013> HA<250> OBTA<240><196><147>DEF<246><233> P<249>NS F<253> <226>EIR <019>HI<250> <019>W<253>LDS<204><147><247><221><229>S K<227>W WE'<250> GOT <235>ME<226>#" 98 | 6223DATA"<195>BUT <227>T WH<245><204>IF <019>I T<248>NSM<219> <147>P<249>NS<201><217>R BA<218> <223> <019><234><242><248> <226>EY'LL <240>T<244><233>PT <147>TR<255>SMISSI<223>.#" 99 | 6224DATA" <019>I NE<252><208><207><201><239>KE <147>RUN<204><179>'<242> E<229>CT<252>#" 100 | 6226DATA"<204><147>P<249>NS A<242> UNIPUL<218> COD<196>WI<226><240> <148>TR<255>SMISSI<223><204><008><179> W<220>L <247> PAID<204> <019>GOOD LUCK <154><212><024>" 101 | 6230DATA"<025><009><029><030><008><014><013><019>WELL D<223>E <154><204><179> HA<250> <218>RV<196>US WELL<178>WE SH<228>L <242>MEMB<244><204>#" 102 | 6231DATA"WE DID <227>T EXPECT <147><019><226><238>GOIDS<201>F<240>D <217>T AB<217>T <179><204>#" 103 | 6233DATA"F<253> <147>MOM<246>T P<229>A<218> AC<233>PT <148>#" 104 | 6234DATA"<019>NAVY <006><114><005> AS PAYM<246>T<212><024>" 105 | 6240DATA"" 106 | 6250DATA"SH<242>W","<247>A<222>","BIS<223>","SNAKE","WOLF" 107 | 6300DATA"<229>OP<238>D","C<245>","M<223>KEY","GO<245>","FISH" 108 | 6350DATA"<106> <105>","<017> <120> <123>","<175><107> <121> <123>","<124> <125>","<106> <105>" 109 | 6400DATA"ME<245>","CUTL<221>","<222>EAK","BURG<244>S","<235>UP" 110 | 6450DATA"I<233>","MUD","Z<244>O-<019>G","VACUUM","<017> ULT<248" 111 | 6500DATA"HOCKEY","CRICK<221>","K<238><245>E","PO<224>","T<246>NIS" 112 | 6550DATA"","WAZOOM!" 113 | 6700DATA 26 114 | 7000DATA 211,128, "<147>CO<224>NI<222>S HE<242> HA<250> VIOL<245><252><002> <240>T<244>G<228>AC<251>C C<224>N<195>PROTOCOL<013><178>SH<217>LD <247> AVOID<252>" 115 | 7001REM Teorge 116 | 7010DATA 150,0, "<147>C<223><222>RICT<253> <203><242><237><241><233>, <154>" 117 | 7011REM Xeer 118 | 7020DATA 36,0, "A <114> <224>OK<195><207> <229>FT HE<242><208>WHI<229> BACK. LOOK<196>B<217>ND F<253> <238>E<230>" 119 | 7021REM Reesdice 120 | 7030DATA 28,0, "YEP,<208><114><210><207> HAD<208>G<228>AC<251>C HYP<244>DRI<250> F<219>T<196>HE<242>. <236><196><219> TOO" 121 | 7031REM Arexe 122 | 7040DATA 253,1, "<148> <114> <207> DEHYP<196>HE<242> FROM <227>WHE<242>, SUN SKIMM<252><178>JUMP<252>. I HE<238> <219> W<246>T<201><240><234><247>" 123 | 7041REM Errius 124 | 7050DATA 79,1, "<115> <207> W<246>T F<253> ME <245> A<236><238>. MY <249>S<244>S DIDN'T EV<246> SC<248>TCH <147><115>" 125 | 7051REM Inbibe 126 | 7060DATA 53,1, "OH DE<238> ME Y<237>.<208>FRIGHTFUL ROGUE WI<226> WH<245> I <247>LIE<250> <179> PEOP<229> C<228>L<208><229>AD PO<222><244>I<253> SHOT UP <224>TS OF <226>O<218> <247>A<222>LY PI<248>T<237><178>W<246>T<201><236><229>RI" 127 | 7061REM Ausar 128 | 7070DATA 118,1, "<179> C<255> TACK<229> <147><104> <115> IF <179> LIKE. HE'S <245> <253><238><248>" 129 | 7071REM Usleri 130 | 7080DATA 100,130, "<001>COM<195><235><223>: EL<219>E II" 131 | 7081REM 3d Gal 132 | 7090DATA 32,1, "<116>" 133 | 7100DATA 68,1, "<116>" 134 | 7110DATA 164,1, "<116>" 135 | 7120DATA 220,1, "<116>" 136 | 7130DATA 106,1, "<116>" 137 | 7140DATA 16,1, "<116>" 138 | 7150DATA 162,1, "<116>" 139 | 7160DATA 3,1, "<116>" 140 | 7170DATA 107,1, "<116>" 141 | 7180DATA 26,1, "<116>" 142 | 7190DATA 192,1, "<116>" 143 | 7200DATA 184,1, "<116>" 144 | 7210DATA 5,1, "<116>" 145 | 7211REM Pointers to Errius 146 | 7220DATA 101,2, "BOY A<242> <179> <240> <147>WR<223>G G<228>AXY!" 147 | 7221REM 3d Galaxy 148 | 7230DATA 193,1, "<226><244>E'S<208><242><228> <115> PI<248>TE <217>T <226><244>E" 149 | 7231REM Orrara 150 | 7240DATA 41,&82,"<147><193>S OF <109> A<242> <235> A<239>Z<240>GLY PRIMI<251><250> <226><245> <226>EY <222><220>L <226><240>K <019>***** ******<202> 3D" 151 | 7241REM 4th Gal 152 | 7250DATA 7,128,"<002>BITS'N PIECES - END OF PART 1" 153 | 7490DATA "WAZEE!" 154 | 7500[OPTZ 155 | 7510.MTIN EQUB16:EQUB21:EQUB26:EQUB31:EQUB155: EQUB160:EQUB46:EQUB165:EQUB36:EQUB41: EQUB61:EQUB51:EQUB56:EQUB170:EQUB66: EQUB71:EQUB76:EQUB81:EQUB86:EQUB140: EQUB96:EQUB101:EQUB135:EQUB130:EQUB91 156 | 7520EQUB106:EQUB180:EQUB185:EQUB190:EQUB225: EQUB230:EQUB235:EQUB240:EQUB245:EQUB250: EQUB115:EQUB120:EQUB125 157 | 7990\................... 158 | 9000.COLD \Move WORDS and SHIPS to proper places 159 | 9100LDA#(F%MOD256):STAV:LDA#(F%DIV256):STAV+1:LDA#(QQ18 MOD256):STASC:LDA#(QQ18 DIV256):STASC+1:LDX#4:JSRmvblock 160 | 9120LDA#(F%MOD256):STAV:LDA#((F%DIV256)+4):STAV+1:LDA#(D%MOD256):STASC:LDA#(D%DIV256):STASC+1:LDX#&22 161 | 9200.mvblock LDY#0:.mvbllop LDA(V),Y:STA(SC),Y:INY:BNEmvbllop:INCV+1:INCSC+1:DEX:BNEmvbllop:RTS 162 | 9900] 163 | 9910F%=P%:PRINT"J" 164 | 9920IFZ>4OSCLI"SAVE ELTJ "+STR$~W%+" "+STR$~O%+" "+STR$~BEGIN+" "+STR$~H% 165 | 9930IFZ=4GOTO4 166 | 9940PRINT~C% F% S% K%" (Free: ";K%-F%;") ZP:";~ZP',A1$,A2$ 167 | 9950Q%=&12345678:REM Flag knowledge of F% 168 | 9999END 169 | 10000IF A$=""THEN?O%=0EORVE:O%=O%+1:P%=P%+1:RETURN 170 | 10010FORJ%=1TOLENA$:IF MID$(A$,J%,1)="<" THEN [OPTZ:EQUB(VAL(MID$(A$,J%+1,3)))EORVE:]:J%=J%+4 ELSE [OPTZ:EQUB(ASC(MID$(A$,J%,1)))EORVE:] 171 | 10020NEXTJ%:[OPTZ:EQUBVE:]:RETURN 172 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEJ.inf: -------------------------------------------------------------------------------- 1 | $.ELITEJ 000000 000000 002F17 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.ELITEZ.inf: -------------------------------------------------------------------------------- 1 | $.ELITEZ 000000 000000 005AF9 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.LOGTEST.inf: -------------------------------------------------------------------------------- 1 | $.LOGTEST 000000 000000 000317 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.LOGTEST.txt: -------------------------------------------------------------------------------- 1 | 5P=&70:Q=P+1:R=Q+1 2 | 10DIMP%&1000 3 | 500B%=((P%AND&FF00)+256)-P%:P%=(P%AND&FF00)+256:O%=O%+B%:[ 4 | 700.log:]:logof2=LOG(2):FORI%=1TO255:B%=INT(32*LOG(I%)/logof2+.5):B%=B%+(B%=256):I%?P%=B%:NEXT 5 | 710P%=P%+256:O%=O%+256:[ 6 | 720.antilog:]:FORI%=0TO255:B%=INT(2^((I%/2+128)/16)+.5)DIV256:B%=B%+(B%=256):I%?P%=B%:NEXT 7 | 730P%=P%+256:O%=O%+256:[ 8 | 6120.MU3 LDXP:RTS:.MU3again LDA#0:LDXP:RTS 9 | 6125.FMLTU \A=A*Q/256unsg:STXP:TAX:BEQMU3:LDAlog,X:LDXQ:BEQMU3again:CLC:ADClog,X:BCCMU3again:TAX:LDAantilog,X:LDXP:RTS 10 | 8060.labelpqrs LDA#&FF:.labelpq2 STAR:RTS 11 | 8065.LL28 \BFRDIV R=A*256/Q 12 | 8070CMPQ:BCSlabelpqrs:TAX:BEQlabelpq2:LDAlog,X:SEC:LDXQ:SBClog,X:TAX:LDAantilog,X:STAR:CLC:RTS 13 | 9000] 14 | 9005MODE0 15 | 9010FORA%=0TO255:?Q=99:Y=USR(FMLTU)AND&FF:PLOT69,A%*4,Y*4:NEXT 16 | >*SPOOOL 17 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.LOGTST2.inf: -------------------------------------------------------------------------------- 1 | $.LOGTST2 000000 000000 0003A1 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.LOGTST2.txt: -------------------------------------------------------------------------------- 1 | 0REM logof2=LOG(2):FORI%=1TO255:B%=INT(32*LOG(I%)/logof2+.5):B%=B%+(B%=256):PLOT69,I%*4,B%*4:NEXT 2 | 5P=&70:Q=P+1:R=Q+1 3 | 10DIMP%&1000 4 | 500B%=((P%AND&FF00)+256)-P%:P%=(P%AND&FF00)+256:O%=O%+B%:[ 5 | 700.log:]:logof2=LOG(2):FORI%=1TO255:B%=INT(32*LOG(I%)/logof2+.5):B%=B%+(B%=256):I%?P%=B%:NEXT 6 | 710P%=P%+256:O%=O%+256:[ 7 | 720.antilog:]:FORI%=0TO255:B%=INT(2^((I%/2+128)/16)+.5)DIV256:B%=B%+(B%=256):I%?P%=B%:NEXT 8 | 730P%=P%+256:O%=O%+256:[ 9 | 6120.MU3 LDXP:RTS:.MU3again LDA#0:LDXP:RTS 10 | 6125.FMLTU \A=A*Q/256unsg:STXP:TAX:BEQMU3:LDAlog,X:LDXQ:BEQMU3again:CLC:ADClog,X:BCCMU3again:TAX:LDAantilog,X:LDXP:RTS 11 | 8060.labelpqrs LDA#&FF:.labelpq2 STAR:RTS :.notnow LDA#0:STAR:RTS 12 | 8065.LL28 \BFRDIV R=A*256/Q 13 | 8070CMPQ:BCSlabelpqrs:TAX:BEQlabelpq2:LDAlog,X:SEC:LDXQ:SBClog,X:BPLnotnow:ASLA:TAX:LDAantilog,X:STAR:CLC:RTS 14 | 9000] 15 | 9005MODE0 16 | 9010FORA%=0TO255:CALLLL28:?Q=234:Y=?R:PLOT69,A%*4,Y*4:NEXT 17 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.MOD12SC.inf: -------------------------------------------------------------------------------- 1 | $.MOD12SC 000000 000000 000582 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.MOD12SC.txt: -------------------------------------------------------------------------------- 1 | 20REM ELITE - I/O Processor code 2 | 25 3 | 26 4 | 40DIMW%&2000:REM Second Processor Only 5 | 100C%=&2400:L%=C%:Z=0 6 | 150FF=&FF:OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:OSFILE=&FFDD:SCLI=&FFF7:VIA=&FE40:USVIA=VIA:IRQ1V=&204:VSCAN=57:XX21=D%:USVEC=&200:WRCHV=&20E:WORDV=&20C 7 | 200FORZ=4TO6STEP2 8 | 220P%=C%:O%=W% 9 | 1000O%=W%:H%=L%+P%-C%:Q%=FALSE 10 | 1005[OPTZ 11 | 1010.TVT3 EQUD&17243400:EQUD&47576474:EQUD&8696A1B1:EQUD&C6D6E1F1 \View YRC 12 | 1030.STARTUP 13 | 1034SEI:LDA#&39:STAVIA+&E:LDAIRQ1V:STAVEC:LDAIRQ1V+1:STAVEC+1:LDA#IRQ1 MOD256:STAIRQ1V:LDA#IRQ1 DIV256:STAIRQ1V+1:LDA#VSCAN:STAUSVIA+5:CLI:RTS 14 | 9718 15 | 9720\ .................... Interrupts ......................... 16 | 9721 17 | 9730.TVT1 EQUD&16254334:EQUD&52617086:EQUD&96A5B4C3:EQUD&D2E1F007 \Dials 18 | 9739.IRQ1 TYA:PHA:LDY#15:LDA#2:BITVIA+&D:BNELINSCN:BVCjvec:LDA#&14:STA&FE20:LDAESCP:AND#4:EOR#&34:STA&FE21\ESCP:.VNT2:LDATVT1,Y:STA&FE21:DEY:BNEVNT2:.jvec PLA:TAY:JMP(VEC) 19 | 9740.LINSCN LDA#30:STADL:STAUSVIA+4:LDA#VSCAN:STAUSVIA+5:LDAHFX:BNEjvec:LDA#&18:STA&FE20:.VNT3 LDATVT3,Y:STA&FE21:DEY:BNEVNT3:\LDAsvn:\BMIjvec:PLA:TAY:LDA&FE41:LDA&FC:RTI 20 | 9900]NEXTZ 21 | 9905INPUT"Insert destination disk and hit RETURN"A$ 22 | 9910OSCLI"S.MODE1/2 "+STR$~W%+" "+STR$~O%+" FFFF"+STR$~STARTUP+" FFFF"+STR$~H% 23 | 9920PRINT"CODE:";~C%",";~P%" (";&4000-P%" Free) ZP:";~ZP 24 | 9930END 25 | 10000DEFFNZT(N%):ZP=ZP+N%:=ZP-N% 26 | 10010DEFFNZ:ZP=ZP+1:=ZP-1 27 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.PMODU.inf: -------------------------------------------------------------------------------- 1 | $.PMODUP 000000 000000 0011BD 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/P.PMODU.txt: -------------------------------------------------------------------------------- 1 | 10REM Prepare SHIP MODULE 2 | 30D%=&D000 3 | 50 4 | 60 NUM%=0 5 | 70?&D000=&1B:IF ?&D000<>&1B PRINT"Need Tube":END 6 | 72READ DEX$ 7 | 73N$="P.SHIPS" 8 | 75IF HIMEM<>&8000 PRINT"Need LoBasic!":END 9 | 80PS=10000:SS=2 10 | 90RESTORE1000:READN%:B%=D%:E%=D%+2*N%:C%=E%+N% 11 | 100FORI%=1TON%:READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z 12 | 110IF I%=PS THEN !B%=&7F00:B%=B%+2:GOTO150 13 | 140IF MID$(DEX$,I%,1)="." !B%=0:B%=B%+2:ELSE !B%=C%:B%=B%+2:C%=C%+EVAL("&"+B$) 14 | 150NEXT 15 | 160RESTORE2010:E%=D%+2*N%:C%=E%+N% 16 | 170FORI%=1TON%:READ A$,B$,P,Q,R,S,T,U,V,W,X,Y,Z 17 | 180IF I%=PS GOTO240 18 | 205IF MID$(DEX$,I%,1)="."GOTO240 19 | 206PRINTA$","; 20 | 210IF A$="BARREL" C2%=C% 21 | 220IF A$="ESCAP" C3%=C% 22 | 230PROCSET(C%):C%=C%+EVAL("&"+B$) 23 | 240NEXT:PRINT 'NUM%,~D% E% C% 24 | 250INPUT"Insert assembly disk in Drive 0 and hit RETURN"A$ 25 | 260OSCLI("S.:2."+N$+" "+STR$~D%+" "+STR$~(C%+10)) 26 | 270 27 | 290END 28 | 299 29 | 300REM Bit 0 => High Tek 30 | 302REM Bit 1 => Safe Sys 31 | 303 32 | 500REM :.Junk.::Trad::..PaH..::.LW. 33 | 502 34 | 510REM MSEPBBASSTCPBA-VSMKAGCWCAPFMTTCL 35 | 511REM ipslaosphroyon-iiardeboosyeohhoo 36 | 512REM scctrltluabtaa-pdmadk1rbptrrglng 37 | 513REM ..:......::....::.......::.....: 38 | 600DATA 1111111111111111111111111111111111......... 39 | 880REM MSEPBBASSTCPBA-VSMKAGCWCAPFMTTC 40 | 1000DATA 34 41 | 1005REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 42 | 1006 43 | 2010DATA MISSILE,FE, 40, 2, 44, 20, 1, 0, 0, 14, 0,&00 ,1 44 | 2020DATA SPCSTN,11C,160,240, 0, 21, 12, 6, 0,120, 0,&00 ,1 45 | 2025REM ...Space Junk... 46 | 2030DATA ESCAP, 54, 16, 17, 8, 6, 4, 0, 0, 8,&20,&01 ,1 47 | 2040DATA PLATLET,40, 10, 16, 16, 04, 1, 0, 0, 05,&80,&00 ,0 48 | 2050DATA BARREL, A8, 20, 17, 15, 12, 3, 0, 0, 12, 0,&00 ,1 49 | 2060DATA BOULDER,A2, 30, 20, 30, 11, 2, 0, 1, 20, 0,&00 ,1 50 | 2070DATA ASTROID,D6, 80, 60, 30, 16, 7, 0, 5, 50, 0,&00 ,0 51 | 2080DATA SPLNTER,3C, 16, 20, 10, 6, 4, 0, 0, 8,&B0,&00 ,0 52 | 2090DATA SHUTTLE,132,50, 32, 8, 27, 8, 0, 0, 22, 15,&21 ,0 53 | 2100DATA TRANSP ,1E2,50, 32, 10, 36, 5, 0, 0, 16, 0,&61 ,0 54 | 2105REM ...Traders... 55 | 2110DATA COBRA, 188, 95,150, 28, 38, 9, 19, 0, 50, 3,&A0 ,0 56 | 2120DATA PYTHON, F2, 80,250, 20, 21, 9,&1B, 0, 40, 5,&A0 ,1 57 | 2130DATA BOA, F6, 70,250, 24, 22, 8,&1C, 0, 40, 5,&A0 ,0 58 | 2140DATA ANACON,102,100,252, 14, 22, 10,&3F, 0,&24, 7,&A1 ,0 59 | 2150DATA ASTROID,D6, 80,180, 30, 16, 11, 2, 0, 50, 7,&A1 ,0 60 | 2160DATA VIPER, DA, 75,140, 32, 19, 9, 17, 0, 23, 0,&C2 ,1 61 | 2162REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 62 | 2165REM ...Pack Hunters... 63 | 2170DATA SIDEWND,A8, 65, 70, 37, 15, 6, 16, 50, 20, 0,&0C ,1 64 | 2180DATA MAMBA, 12E, 70, 90, 30, 23, 7, 18,150, 25, 1,&8C ,1 65 | 2190DATA TIKRAIT,E6, 60, 80, 30, 21, 3, 16,100, 20, 1,&8C, 1 66 | 2200DATA ADDER, 130, 50, 85, 24, 24, 4, 16, 40, 20, 0,&8C, 0 67 | 2210DATA GECKO, C4, 99, 70, 30, 16, 5, 16, 55, 18, 0,&0C, 0 68 | 2220DATA COBMK1, C6, 99, 90, 26, 17, 5, 18, 75, 19, 3,&8C, 0 69 | 2230DATA WORM, B0, 99, 30, 23, 18, 3, 8, 0, 19, 0,&05, 0 70 | 2235REM ...Lone Wolves... 71 | 2240DATA COBRA, 188, 95,150, 28, 38, 9, 18,175, 50, 1,&8C ,1 72 | 2250DATA ASP, 12A, 60,150, 40, 25, 5,&29,200, 40, 0,&8C, 0 73 | 2260DATA PYTHON, F2, 80,250, 20, 21, 9, 27,200, 40, 2,&8C ,0 74 | 2270DATA FERDELA,11A,40,160, 30, 26, 5,&12, 0, 40, 0,&82, 1 75 | 2280DATA MORAY, D8, 30,100, 25, 17, 5, 16, 50, 40, 1,&0C, 0 76 | 2290DATA THAARG,11C, 99,240, 39, 25, 8, 22,500, 55, 0,&0C, 0 77 | 2300DATA TGLET, 6C, 40, 20, 30, 16, 3, 16, 50, 20,&F0,&04, 0 78 | 2310DATA CONSTRI,102,65,252, 36, 19, 10,&34, 0, 45,&03,&04, 0 79 | 2315REM..................... 80 | 2320DATA LOGO, 1B8,99,252, 36, 37, 12, 0, 0, 99,&00,&00, 0 81 | 2330DATA COUGAR, 102,70,252, 40, 25, 9, &34, 0, 34,&03,&20 ,1 82 | 2340DATA DODEC, 15C,180,240, 0, 24, 12, 0, 0,125, 0,&00 ,1 83 | 2994 84 | 2995REM HEX RAD ENE VEL LIN EXP MIS BTY DPT BAR PRF USE 85 | 2996 86 | 3000 REM length,hits rad,energy,vel,no.lines+1,no.exp nodes,no.missiles,Bounty,Distance at which point,barrel no,profile,used? 87 | 10000DEF PROCSET(C%):OSCLI("LOAD "+A$+" "+STR$~C%):C%?1=P*P MOD256:C%?2=P*P DIV256:C%?14=Q:C%?15=R:C%?5=4*S+5:C%?7=4*T+6:C%?19=U:C%?10=V MOD256:C%?11=V DIV256:C%?13=W:?C%=X:E%?(I%-1)=Y 88 | 10010IF 4*T+6>=4*S+1 THEN PRINT"Too many explosion nodes for "A$:STOP 89 | 10040IFA$="SPLNTER" THEN VDU7:OFSET=C3%-C%+C3%?3+(C3%?16)*256:C%?3=OFSET AND255:C%?16=(OFSET AND&FF00)DIV256 90 | 10050IFA$="TGLET" THEN VDU7:OFSET=C2%-C%+C2%?3+(C2%?16)*256:C%?3=OFSET AND255:C%?16=(OFSET AND&FF00)DIV256 91 | 10060ENDPROC 92 | -------------------------------------------------------------------------------- /1-source-files/original-sources/README.md: -------------------------------------------------------------------------------- 1 | # Original source code for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the original source code for the 6502 Second Processor version of Elite from Ian Bell's personal website. 4 | 5 | --- 6 | 7 | Right on, Commanders! 8 | 9 | _Mark Moxon_ -------------------------------------------------------------------------------- /1-source-files/original-sources/S.DATE2.inf: -------------------------------------------------------------------------------- 1 | $.DATE2S 000000 000000 000086 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.DATE2.txt: -------------------------------------------------------------------------------- 1 | 10REM Create P.DATE2P 2 | 20MODE1 3 | 30PRINT"2nd Pro ELITE -Finished 13/12/84" 4 | 40*S.:2.P.DATE2P FFFF3000+200 5 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.ELITAS.TXT: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITEa - Second I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C% 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 3000FORZ=4TO6STEP2 9 | 3010P%=C%:O%=CODE 10 | 4000[OPTZ 11 | 5000.ENTRY 12 | 5130EQUS FNMVE(DIALS,&7000,&E) \Move Dials bit dump to screen 13 | 5140\EQUS FNMVE(DATE,&6000,&1) 14 | 5150EQUS FNMVE(ASOFT,&4200,&1) 15 | 5160EQUS FNMVE(ELITE,&4600,&1) 16 | 5170EQUS FNMVE(CpASOFT,&6C00,&1) 17 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JSRSCLI \*RUN I-CODE 18 | 5220LDX#(MESS3 MOD256):LDY#(MESS3 DIV256):JMPSCLI \*RUN P-CODE 19 | 5230.MESS2 EQUS("R.I.CODE"):EQUB13 20 | 5240.MESS3 EQUS("R.P.CODE"):EQUB13 21 | 6500.MVPG LDY#0:.MPL LDA(Z1),Y:STA(Z2),Y:DEY:BNEMPL:RTS 22 | 6550.MVBL JSRMVPG:INCZ1+1:INCZ2+1:DEX:BPLMVBL:RTS 23 | 6700.DIALS EQUS FNSHUVE(":2.P.DIALS2P",&E00) 24 | 6720.DATE EQUS FNSHUVE(":2.DATE2P",&200) 25 | 6730.ASOFT EQUS FNSHUVE(":2.Z.ACSOFT",&200) 26 | 6740.ELITE EQUS FNSHUVE(":2.Z.ELITE",&200) 27 | 6750.CpASOFT EQUS FNSHUVE(":2.Z.(C)ASFT",&200) 28 | 7000] 29 | 7020NEXTZ 30 | 7100PRINT~CODE O% P% ENTRY 31 | 7110INPUT"Insert destination disk and hit RETURN"A$ 32 | 7120OSCLI("S.:0.I.ELITEa "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 33 | 7200END 34 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 35 | 10100DEF FNE(I%) 36 | 10110[OPTZ 37 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 38 | 10130] 39 | 10140="" 40 | 10200DEF FNMVE(S%,D%,PA%) 41 | 10210[OPTZ 42 | 10220LDA#(S%MOD256):STAZ1:LDA#(S%DIV256):STAZ1+1:LDA#(D%MOD256):STAZ2:LDA#(D%DIV256):STAZ2+1:LDX#PA%:JSRMVBL 43 | 10230] 44 | 10240="" 45 | 10400DEF FNSHUVE(A$,LE%) 46 | 10420IF Z=6 OSCLI("L."+A$+" "+STR$~O%) 47 | 10430P%=P%+LE%:O%=O%+LE% 48 | 10440="" 49 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.ELITAS.inf: -------------------------------------------------------------------------------- 1 | $.ELITASS 000000 000000 0006A8 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.ELITES.TXT: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITE I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C%:svn=&7FFD 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7:IRQ1V=&204 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 1030VIA=&FE40 9 | 1040MESS2=&8888:happy=&8888 10 | 3000FORZ=4TO6STEP2 11 | 3010P%=C%:O%=CODE 12 | 3015RESTORE:READN% 13 | 3020B%=P%:FORI%=0TON%-1:READA:PROCP(A):NEXT 14 | 3100E%=P%:FORI%=1TO4:FORJ%=1TO14:READA:PROCP(A):NEXT, 15 | 4000[OPTZ 16 | 4900.ENTRY CLD 17 | 4910LDA#&81:LDX#0:LDY#&FF:JSROSBYTE:TXA:BNEnot0:TYA:BNEnot0:JMPhappy:.not0 INX:BNEblap1:INY:BEQblap2 18 | 4920.blap1 JMPhappy\JSRZZZAP\BRK\BRK\EQUS" This program only runs on a BBC Micro with 6502 Second Processor\EQUW&0C0A\BRK 19 | 4930.blap2 LDA#&EA:DEY:JSROSBYTE:TXA:BNEhappy:JSRZZZAP:BRK:BRK:EQUS"This program needs a 6502 Second Processor":EQUW&D0A:BRK 20 | 4940.ZZZAP LDA#(happy MOD256):STAZP:LDX#(happy DIV256):LDY#0:.ZZZAPL STXZP+1:STA(ZP),Y:INY:BNEZZZAPL:INX:CPX#((MESS2 DIV256)+1):BNEZZZAPL:RTS 21 | 4950.happy 22 | 4960\ Only run if OSBYTE&81,0,&FF returns X and Y zero OR if (OSBYTE&81,0,&FF returns XY=&FFFF AND OSBYTE&EA,0,&FF returns X nonzero) 23 | 4980\..... 24 | 5000LDA#16:LDX#3:JSROSBYTE \ADC 25 | 5001LDA#190:LDX#8:JSROSB \8bitADC 26 | 5002LDA#200:LDX#3:JSROSB \break,escape 27 | 5005\LDA#144\LDX#255\JSROSB \TV 28 | 5006LDA#225:LDX#128:JSROSB \fn keys 29 | 5007LDA#13:LDX#2:JSROSB \kybrd buffer 30 | 5008LDA#(B% MOD256):STAZP:LDA#(B% DIV256):STAZP+1:LDY#0:.LOOP LDA(ZP),Y:JSROSWRCH:INY:CPY#N%:BNELOOP \set up mode 31 | 5009LDA#20:LDX#0:JSROSB \Implode character definitions 32 | 5010LDA#4:LDX#1:JSROSB \cursor 33 | 5020LDA#9:LDX#0:JSROSB \flashing 34 | 5030\.... 35 | 5050JSRPLL1 \Draw Saturn 36 | 5060\.... 37 | 5100EQUS FNE(0):EQUS FNE(1):EQUS FNE(2):EQUS FNE(3) \envelopes 38 | 5110\..... 39 | 5200LDX#(MESS1 MOD256):LDY#(MESS1 DIV256):JSRSCLI \*DIR E 40 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JMPSCLI \*RUN ELITEa 41 | 5370\ 42 | 5380\......Saturn....... 43 | 5390\ 44 | 5400.PLL1 LDAVIA+4:STARAND+1:JSRDORND:JSRSQUA2:STAZP+1:LDAP:STAZP:JSRDORND:STAYY:JSRSQUA2:TAX:LDAP:ADCZP:STAZP:TXA:ADCZP+1:BCSPLC1 45 | 5410STAZP+1:LDA#1:SBCZP:STAZP:LDA#&40:SBCZP+1:STAZP+1:BCCPLC1:JSRROOT:LDAZP:LSRA:TAX:LDAYY:CMP#128:RORA:JSRPIX 46 | 5420.PLC1 DECCNT:BNEPLL1:DECCNT+1:BNEPLL1 47 | 5450.PLL2 JSRDORND:TAX:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:ADCZP+1:CMP#&11:BCCPLC2:LDAYY:JSRPIX 48 | 5460.PLC2 DECCNT2:BNEPLL2:DECCNT2+1:BNEPLL2 49 | 5500.PLL3 JSRDORND:STAZP:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:STAT 50 | 5510ADCZP+1:STAZP+1:LDAZP:CMP#128:RORA:CMP#128:RORA:ADCYY:TAX:JSRSQUA2:TAY:ADCZP+1 51 | 5520BCSPLC3:CMP#&50:BCSPLC3:CMP#&20:BCCPLC3:TYA:ADCT:CMP#&10:BCSPL1:LDAZP:BPLPLC3:.PL1 LDAYY:JSRPIX 52 | 5550.PLC3 DECCNT3:BNEPLL3:DECCNT3+1:BNEPLL3 53 | 5800.DORND LDARAND+1:TAX:ADCRAND+3:STARAND+1:STXRAND+3:LDARAND:TAX:ADCRAND+2:STARAND:STXRAND+2:RTS 54 | 5810.RAND EQUD &34785349 55 | 5815.SQUA2 BPLSQUA:EOR#FF:CLC:ADC#1 56 | 5820.SQUA STAQ:STAP:LDA#0:LDY#8:LSRP:.SQL1 BCCSQ1:CLC:ADCQ:.SQ1 RORA:RORP:DEY:BNESQL1:RTS 57 | 5850.PIX TAY:EOR#128:LSRA:LSRA:LSRA:ASLA:ORA#&40:STAZP+1:TXA:EOR#128:AND#&FC:ASLA:STAZP:BCCP%+4:INCZP+1:TYA:AND#7:TAY:TXA:AND#7:TAX 58 | 5860LDATWOS,X:STA(ZP),Y:RTS 59 | 5870.TWOS EQUD &10204080:EQUD&01020408 60 | 5880.CNT EQUW&300:.CNT2 EQUW &1DD:.CNT3 EQUW &333 61 | 5890.ROOT LDYZP+1:LDAZP:STAQ:LDX#0:STXZP:LDA#8:STAP:.LL6 CPXZP:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCZP:TAX:.LL7 ROLZP:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:DECP:BNELL6:RTS 62 | 5900.OSB LDY#0:JMPOSBYTE 63 | 6000.MESS1 EQUS("DIR E"):EQUB13 64 | 6010.MESS2 EQUS("R.I.ELITEa"):EQUB13 65 | 7000] 66 | 7020NEXTZ 67 | 7100PRINT~CODE O% P% ENTRY 68 | 7110INPUT"Insert destination disk and hit RETURN"A$ 69 | 7120OSCLI("S.:0.$.ELITE "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 70 | 7200END 71 | 8000REM-------VDU CODES--------- 72 | 8010DATA77 73 | 8100DATA 22,1,28,2,17,15,16 74 | 8110DATA 23,0, 6,31,0,0,0,0,0,0 75 | 8112DATA 23,0,12, 8,0,0,0,0,0,0 76 | 8114DATA 23,0,13, 0,0,0,0,0,0,0 77 | 8116DATA 23,0, 1,64,0,0,0,0,0,0 78 | 8118DATA 23,0, 2,90,0,0,0,0,0,0 79 | 8120DATA 23,0,10,32,0,0,0,0,0,0 80 | 8130DATA 23,0,&87,34,0,0,0,0,0,0 81 | 9000REM-------ENVELOPES--------- 82 | 9100DATA1,1,0,111,-8,4,1,8, 8,-2,0,-1,126,44 83 | 9110DATA2,1,14,-18,-1,44,32,50, 6,1,0,-2,120,126 84 | 9120DATA3,1,1,-1,-3,17,32,128,1,0,0,-1,1,1 85 | 9130DATA4,1,4,-8,44,4,6,8,22,0,0,-127,126,0 86 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 87 | 10100DEF FNE(I%) 88 | 10110[OPTZ 89 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 90 | 10130] 91 | 10140="" 92 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.ELITES.inf: -------------------------------------------------------------------------------- 1 | $.ELITESS 000000 000000 001146 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.PCODES.TXT: -------------------------------------------------------------------------------- 1 | 10REM Prepare the Big Code File 2 | 20 3 | 25REM P.CODE 4 | 30 5 | 35REM (a provisional name, ahem) 6 | 50MODE7 7 | 60IF Q%<>&12345678 PRINT"I don't know F%,S%!":END 8 | 100C%=&1000:L%=C% 9 | 120HIMEM=L% 10 | 200*L.ELTA 11 | 210*L.ELTB 12 | 220*L.ELTC 13 | 230*L.ELTD 14 | 240*L.ELTE 15 | 250*L.ELTF 16 | 260*L.ELTG 17 | 270*L.ELTH 18 | 280*L.ELTI 19 | 290*L.ELTJ 20 | 300OSCLI("L.:2.P.WORDS "+STR$~F%) 21 | 310OSCLI("L.:2.P.SHIPS "+STR$~(F%+&400)) 22 | 350P%=&70:[.ZP SEC:LDY#0:STYZP:LDX#&10:TXA:.CHKL STXZP+1:STYZP+3:ADC(ZP),Y:EORZP+3:SBCZP+1:DEY:BNECHKL:INX:CPX#&A0:BCCCHKL:STAS%-1:RTS:] 23 | 360CALLZP 24 | 392P%=&70:[.SC LDY#0:STYSC:LDX#&13:.DEEL STXSC+1:TYA:EOR(SC),Y:EOR#&75:STA(SC),Y:DEY:BNEDEEL:INX:CPX#&A0:BNEDEEL:RTS:] 25 | 393CALLSC 26 | 400P%=&70:[.V LDA#G%MOD256:.SC STAV:LDA#G%DIV256:STAV+1:LDA#(F%-1)MOD256:STASC:LDA#(F%-1)DIV256:STASC+1:.whiz LDA(V):PHA:LDA(SC):STA(V):PLA:STA(SC):INCV:BNEP%+4:INCV+1:LDASC:BNEP%+4:DECSC+1:DECSC:DEA:CMPV:LDASC+1:SBCV+1:BCSwhiz:RTS:] 27 | 410CALLV 28 | 450INPUT"Insert destination disk in Drive 0 and"'" Press Return"A$ 29 | 500OSCLI("S.CODE "+STR$~L% +" "+STR$~(F%+&400+&2200)+" "+STR$~S%+" "+STR$~L%) 30 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.PCODES.inf: -------------------------------------------------------------------------------- 1 | $.PCODES 000000 000000 00047A 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.STEST.inf: -------------------------------------------------------------------------------- 1 | $.STEST 000000 000000 0014A0 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/S.STEST.txt: -------------------------------------------------------------------------------- 1 | 5REM Source Code for Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C%:svn=&7FFD 3 | 20MOS=S%+8 4 | 100DIM CODE &1000 5 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7:IRQ1V=&204 6 | 1010ZP=&70:P=&72:Q=&73:YY=&74:T=&75 7 | 1020FF=&FF 8 | 1030REM VIA=&FE40:USVIA=VIA:VSCAN=57:VEC=&7FFE 9 | 3000FORZ=4TO6STEP2 10 | 3010P%=C%:O%=CODE 11 | 3015RESTORE:READN% 12 | 3020B%=P%:FORI%=0TON%-1:READA:PROCP(A):NEXT 13 | 3100E%=P%:FORI%=1TO4:FORJ%=1TO14:READA:PROCP(A):NEXT, 14 | 4000[OPTZ 15 | 5000.ENTRY LDA#16:LDX#3:JSROSBYTE \ADC 16 | 5001LDA#190:LDX#8:JSROSB \8bitADC 17 | 5002LDA#200:LDX#3:JSROSB \break,escape 18 | 5005LDA#144:LDX#255:JSROSB \TV 19 | 5006LDA#225:LDX#128:JSROSB \fn keys 20 | 5007LDA#13:LDX#2:JSROSB \kybrd buffer 21 | 5008LDA#(B% MOD256):STAZP:LDA#(B% DIV256):STAZP+1:LDY#0:.LOOP LDA(ZP),Y:JSROSWRCH:INY:CPY#N%:BNELOOP \set up mode 22 | 5009LDA#20:LDX#0:JSROSB \Implode character definitions 23 | 5010LDA#4:LDX#1:JSROSB \cursor 24 | 5020LDA#9:LDX#0:JSROSB \flashing 25 | 5030\LDA#172\LDX#0\LDY#FF\JSROSBYTE\STXTRTB%\STYTRTB%+1 \int-ascii table 26 | 5050JSRPLL1 27 | 5100EQUS FNE(0):EQUS FNE(1):EQUS FNE(2):EQUS FNE(3) \envelopes 28 | 5105LDX#(MESS1 MOD256):LDY#(MESS1 DIV256):JSRSCLI 29 | 5110LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JSRSCLI 30 | 5120LDX#(MESS3 MOD256):LDY#(MESS3 DIV256):JSRSCLI 31 | 5130LDX#(MESS4 MOD256):LDY#(MESS4 DIV256):JSRSCLI 32 | 5140LDX#(MESS5 MOD256):LDY#(MESS5 DIV256):JSRSCLI 33 | 5150LDX#(MESS6 MOD256):LDY#(MESS6 DIV256):JSRSCLI 34 | 5160LDX#(MESS7 MOD256):LDY#(MESS7 DIV256):JSRSCLI 35 | 5170\MESS 8 is to load ELTG - now *run in parasite 36 | 5180LDX#(MESS9 MOD256):LDY#(MESS9 DIV256):JSRSCLI 37 | 5190LDX#(MESS10 MOD256):LDY#(MESS10 DIV256):JSRSCLI 38 | 5200LDX#(MESS11 MOD256):LDY#(MESS11 DIV256):JSRSCLI 39 | 5210LDX#(MESS12 MOD256):LDY#(MESS12 DIV256):JSRSCLI 40 | 5212LDX#(MESS13 MOD256):LDY#(MESS13 DIV256):JSRSCLI 41 | 5213LDX#(MESS14 MOD256):LDY#(MESS14 DIV256):JSRSCLI 42 | 5214LDX#(MESS15 MOD256):LDY#(MESS15 DIV256):JSRSCLI 43 | 5216LDX#(MESS16 MOD256):LDY#(MESS16 DIV256):JSRSCLI 44 | 5220LDX#(MESS8 MOD256):LDY#(MESS8 DIV256):JSRSCLI 45 | 5310\LDA#140\LDX#12\JSROSBYTE \ *TAPE no longer needed 46 | 5370\LDAS%+6\STA&202\LDAS%+7\STA&203\LDAS%+2\STA&20E\LDAS%+3\STA&20F \ Needs another bit of MCTEST running in i/o processor 47 | 5380.SETUP \SEI:\LDAVIA+4:\STA1:\LDA#&39:\STAVIA+&E:\LDA#&7F:\STA&FE6E:\LDAIRQ1V:\STAVEC:\LDAIRQ1V+1:\STAVEC+1:\LDAS%+4:\STAIRQ1V:\LDAS%+5:\STAIRQ1V+1:\LDA#VSCAN:\STAUSVIA+5:\CLI 48 | 5400.PLL1 \LDAVIA+4:STARAND+1:JSRDORND:JSRSQUA2:STAZP+1:LDAP:STAZP:JSRDORND:STAYY:JSRSQUA2:TAX:LDAP:ADCZP:STAZP:TXA:ADCZP+1:BCSPLC1 49 | 5410STAZP+1:LDA#1:SBCZP:STAZP:LDA#&40:SBCZP+1:STAZP+1:BCCPLC1:JSRROOT:LDAZP:LSRA:TAX:LDAYY:CMP#128:RORA:JSRPIX 50 | 5420.PLC1 DECCNT:BNEPLL1:DECCNT+1:BNEPLL1 51 | 5450.PLL2 JSRDORND:TAX:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:ADCZP+1:CMP#&11:BCCPLC2:LDAYY:JSRPIX 52 | 5460.PLC2 DECCNT2:BNEPLL2:DECCNT2+1:BNEPLL2 53 | 5500.PLL3 JSRDORND:STAZP:JSRSQUA2:STAZP+1:JSRDORND:STAYY:JSRSQUA2:STAT 54 | 5510ADCZP+1:STAZP+1:LDAZP:CMP#128:RORA:CMP#128:RORA:ADCYY:TAX:JSRSQUA2:TAY:ADCZP+1 55 | 5520BCSPLC3:CMP#&50:BCSPLC3:CMP#&20:BCCPLC3:TYA:ADCT:CMP#&10:BCSPL1:LDAZP:BPLPLC3:.PL1 LDAYY:JSRPIX 56 | 5550.PLC3 DECCNT3:BNEPLL3:DECCNT3+1:BNEPLL3 57 | 5800.DORND LDARAND+1:TAX:ADCRAND+3:STARAND+1:STXRAND+3:LDARAND:TAX:ADCRAND+2:STARAND:STXRAND+2:RTS 58 | 5810.RAND EQUD &34785349 59 | 5815.SQUA2 BPLSQUA:EOR#FF:CLC:ADC#1 60 | 5820.SQUA STAQ:STAP:LDA#0:LDY#8:LSRP:.SQL1 BCCSQ1:CLC:ADCQ:.SQ1 RORA:RORP:DEY:BNESQL1:RTS 61 | 5850.PIX TAY:EOR#128:LSRA:LSRA:LSRA:ASLA:ORA#&40:STAZP+1:TXA:EOR#128:AND#&FC:ASLA:STAZP:BCCP%+4:INCZP+1:TYA:AND#7:TAY:TXA:AND#7:TAX 62 | 5860LDATWOS,X:STA(ZP),Y:RTS 63 | 5870.TWOS EQUD &10204080:EQUD&01020408 64 | 5880.CNT EQUW&300:.CNT2 EQUW &1DD:.CNT3 EQUW &333 65 | 5890.ROOT LDYZP+1:LDAZP:STAQ:LDX#0:STXZP:LDA#8:STAP:.LL6 CPXZP:BCCLL7:BNELL8:CPY#&40:BCCLL7:.LL8 TYA:SBC#&40:TAY:TXA:SBCZP:TAX:.LL7 ROLZP:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:ASLQ:TYA:ROLA:TAY:TXA:ROLA:TAX:DECP:BNELL6:RTS 66 | 5900.OSB LDY#0:JMPOSBYTE 67 | 6000.MESS1 EQUS("DIR P"):EQUB13 68 | 6010.MESS2 EQUS("L.ELTA"):EQUB13 69 | 6020.MESS3 EQUS("L.ELTB"):EQUB13 70 | 6030.MESS4 EQUS("L.ELTC"):EQUB13 71 | 6040.MESS5 EQUS("L.ELTD"):EQUB13 72 | 6050.MESS6 EQUS("L.ELTE"):EQUB13 73 | 6060.MESS7 EQUS("L.ELTF"):EQUB13 74 | 6070.MESS8 EQUS("RUN P.ELTG"):EQUB13 75 | 6100.MESS9 EQUS("L.:2.SHIPS "+STR$~(D%+L%-C%)):EQUB13 76 | 6110.MESS10 EQUS("L.:2.WORDS"):EQUB13 77 | 6120.MESS11 EQUS("L.:2.DIALS2P"):EQUB13 78 | 6130.MESS12 EQUS("RUN ELTZ"):EQUB13 79 | 6140.MESS13 EQUS("L.ELTH"):EQUB13 80 | 6150.MESS14 EQUS("L.ELTI"):EQUB13 81 | 6160.MESS15 EQUS("L.ELTJ"):EQUB13 82 | 6170.MESS16 EQUS("DIR E"):EQUB13 83 | 7000] 84 | 7020NEXTZ 85 | 7100PRINT~CODE O% P% ENTRY 86 | 7110INPUT"Insert assembly disk and hit RETURN"A$ 87 | 7120OSCLI("S.PRTEST "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 88 | 7200END 89 | 8000DATA67 90 | 8100DATA 22,1,28,2,17,15,16 91 | 8110DATA 23,0, 6,31,0,0,0,0,0,0 92 | 8112DATA 23,0,12, 8,0,0,0,0,0,0 93 | 8114DATA 23,0,13, 0,0,0,0,0,0,0 94 | 8116DATA 23,0, 1,64,0,0,0,0,0,0 95 | 8118DATA 23,0, 2,94,0,0,0,0,0,0 96 | 8120DATA 23,0,10,32,0,0,0,0,0,0 97 | 9100DATA1,1,0,111,-8,4,1,8, 8,-2,0,-1,126,44 98 | 9110DATA2,1,14,-18,-1,44,32,50, 6,1,0,-2,120,126 99 | 9120DATA3,1,1,-1,-3,17,32,128,1,0,0,-1,1,1 100 | 9130DATA4,1,4,-8,44,4,6,8,22,0,0,-127,126,0 101 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 102 | 10100DEF FNE(I%) 103 | 10110[OPTZ 104 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 105 | 10130] 106 | 10140="" 107 | >*EXECSPOOL 108 | -------------------------------------------------------------------------------- /1-source-files/original-sources/T.ELITAS.inf: -------------------------------------------------------------------------------- 1 | $.ELITAST 000000 000000 0006A7 2 | -------------------------------------------------------------------------------- /1-source-files/original-sources/T.ELITAS.txt: -------------------------------------------------------------------------------- 1 | 5REM Source Code for ELITEa - Second I/O Loader 2 | 10C%=&2000:L%=C%:D%=&D000:LC%=&8000-C% 3 | 100DIM CODE &4000 4 | 1000OSWRCH=&FFEE:OSBYTE=&FFF4:OSWORD=&FFF1:SCLI=&FFF7 5 | 1010ZP=&90:P=&92:Q=&93:YY=&94:T=&95 6 | 1011Z1=ZP:Z2=P 7 | 1020FF=&FF 8 | 3000FORZ=4TO6STEP2 9 | 3010P%=C%:O%=CODE 10 | 4000[OPTZ 11 | 5000.ENTRY 12 | 5130EQUS FNMVE(DIALS,&7000,&E) \Move Dials bit dump to screen 13 | 5140EQUS FNMVE(DATE,&6000,&1) 14 | 5150EQUS FNMVE(ASOFT,&4200,&1) 15 | 5160EQUS FNMVE(ELITE,&4600,&1) 16 | 5170EQUS FNMVE(CpASOFT,&6C00,&1) 17 | 5210LDX#(MESS2 MOD256):LDY#(MESS2 DIV256):JSRSCLI \*RUN I-CODE 18 | 5220LDX#(MESS3 MOD256):LDY#(MESS3 DIV256):JMPSCLI \*RUN P-CODE 19 | 5230.MESS2 EQUS("R.I.CODE"):EQUB13 20 | 5240.MESS3 EQUS("R.P.CODE"):EQUB13 21 | 6500.MVPG LDY#0:.MPL LDA(Z1),Y:STA(Z2),Y:DEY:BNEMPL:RTS 22 | 6550.MVBL JSRMVPG:INCZ1+1:INCZ2+1:DEX:BPLMVBL:RTS 23 | 6700.DIALS EQUS FNSHUVE(":2.P.DIALS2P",&E00) 24 | 6720.DATE EQUS FNSHUVE(":2.DATE2P",&200) 25 | 6730.ASOFT EQUS FNSHUVE(":2.Z.ACSOFT",&200) 26 | 6740.ELITE EQUS FNSHUVE(":2.Z.ELITE",&200) 27 | 6750.CpASOFT EQUS FNSHUVE(":2.Z.(C)ASFT",&200) 28 | 7000] 29 | 7020NEXTZ 30 | 7100PRINT~CODE O% P% ENTRY 31 | 7110INPUT"Insert destination disk and hit RETURN"A$ 32 | 7120OSCLI("S.:0.$.ELITEa "+STR$~CODE +" "+STR$~O% +" FFFF"+STR$~ENTRY +" FFFF"+STR$~C%) 33 | 7200END 34 | 10000DEFPROCP(A):?O%=A:O%=O%+1:P%=P%+1:ENDPROC 35 | 10100DEF FNE(I%) 36 | 10110[OPTZ 37 | 10120LDX#((E%+I%*14)MOD256):LDY#((E%+I%*14)DIV256):LDA#8:JSROSWORD 38 | 10130] 39 | 10140="" 40 | 10200DEF FNMVE(S%,D%,PA%) 41 | 10210[OPTZ 42 | 10220LDA#(S%MOD256):STAZ1:LDA#(S%DIV256):STAZ1+1:LDA#(D%MOD256):STAZ2:LDA#(D%DIV256):STAZ2+1:LDX#PA%:JSRMVBL 43 | 10230] 44 | 10240="" 45 | 10400DEF FNSHUVE(A$,LE%) 46 | 10420IF Z=6 OSCLI("L."+A$+" "+STR$~O%) 47 | 10430P%=P%+LE%:O%=O%+LE% 48 | 10440="" 49 | -------------------------------------------------------------------------------- /2-build-files/README.md: -------------------------------------------------------------------------------- 1 | # Build files for the 6502 Second Processor version of Elite 2 | 3 | This folder contains support scripts for building the 6502 Second Processor version of Elite. 4 | 5 | * [crc32.py](crc32.py) calculates checksums during the verify stage and compares the results with the relevant binaries in the [4-reference-binaries](../4-reference-binaries) folder 6 | 7 | * [elite-checksum.py](elite-checksum.py) adds checksums and encryption to the assembled output 8 | 9 | * [elite-decrypt.py](elite-decrypt.py) decrypts an encrypted game binary by doing the opposite to the elite-checksum.py script (this is not used in the build process, but is useful when trying to decrypt any new releases that might be found) 10 | 11 | It also contains the `make.exe` executable for Windows, plus the required DLL files. 12 | 13 | --- 14 | 15 | Right on, Commanders! 16 | 17 | _Mark Moxon_ -------------------------------------------------------------------------------- /2-build-files/crc32.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # ****************************************************************************** 4 | # 5 | # ELITE VERIFICATION SCRIPT 6 | # 7 | # Written by Kieran Connell, extended by Mark Moxon 8 | # 9 | # This script performs checksums on the compiled files from the build process, 10 | # and checks them against the extracted files from the original source disc 11 | # 12 | # ****************************************************************************** 13 | 14 | from __future__ import print_function 15 | import sys 16 | import os 17 | import os.path 18 | import zlib 19 | 20 | 21 | def main(): 22 | if len(sys.argv) <= 2: 23 | # Do CRC on single folder 24 | folder = sys.argv[1] if len(sys.argv) == 2 else "." 25 | names = sorted(os.listdir(folder)) 26 | 27 | print() 28 | print('Checksum Size Filename') 29 | print('------------------------------------------') 30 | 31 | for name in names: 32 | if name.endswith(".bin"): 33 | full_name = os.path.join(folder, name) 34 | if not os.path.isfile(full_name): 35 | continue 36 | with open(full_name, 'rb') as f: 37 | data = f.read() 38 | print('%08x %5d %s' % ( 39 | zlib.crc32(data) & 0xffffffff, 40 | len(data), 41 | full_name) 42 | ) 43 | print() 44 | else: 45 | # Do CRC on two folders 46 | folder1 = sys.argv[1] 47 | names1 = sorted(os.listdir(folder1)) 48 | folder2 = sys.argv[2] 49 | names2 = sorted(os.listdir(folder2)) 50 | names = list(names1) 51 | names.extend(x for x in names2 if x not in names) 52 | 53 | if '4-reference-binaries' in folder1: 54 | src = '[--originals--]' 55 | elif 'output' in folder1: 56 | src = '[---output----]' 57 | else: 58 | src = '[{0: ^13}]'.format(folder1[0:13]).replace(' ', '-') 59 | 60 | if '4-reference-binaries' in folder2: 61 | dest = '[--originals--]' 62 | elif 'output' in folder2: 63 | dest = '[---output----]' 64 | else: 65 | dest = '[{0: ^13}]'.format(folder2[0:13]).replace(' ', '-') 66 | 67 | print('Results for variant: ' + os.path.basename(folder1)) 68 | print(src + ' ' + dest) 69 | print('Checksum Size Checksum Size Match Filename') 70 | print('-----------------------------------------------------------') 71 | 72 | for name in names: 73 | if name.endswith(".bin"): 74 | full_name1 = os.path.join(folder1, name) 75 | full_name2 = os.path.join(folder2, name) 76 | 77 | if name in names1 and name in names2 and os.path.isfile(full_name1) and os.path.isfile(full_name2): 78 | with open(full_name1, 'rb') as f: 79 | data1 = f.read() 80 | with open(full_name2, 'rb') as f: 81 | data2 = f.read() 82 | crc1 = zlib.crc32(data1) & 0xffffffff 83 | crc2 = zlib.crc32(data2) & 0xffffffff 84 | match = ' Yes ' if crc1 == crc2 and len(data1) == len(data2) else ' No ' 85 | print('%08x %5d %08x %5d %s %s' % ( 86 | crc1, 87 | len(data1), 88 | crc2, 89 | len(data2), 90 | match, 91 | name) 92 | ) 93 | elif name in names1 and os.path.isfile(full_name1): 94 | with open(full_name1, 'rb') as f: 95 | data = f.read() 96 | print('%08x %5d %s %s %s %s' % ( 97 | zlib.crc32(data) & 0xffffffff, 98 | len(data), 99 | '- ', 100 | ' -', 101 | ' - ', 102 | name) 103 | ) 104 | elif name in names2 and os.path.isfile(full_name2): 105 | with open(full_name2, 'rb') as f: 106 | data = f.read() 107 | print('%s %s %08x %5d %s %s' % ( 108 | '- ', 109 | ' -', 110 | zlib.crc32(data) & 0xffffffff, 111 | len(data), 112 | ' - ', 113 | name) 114 | ) 115 | print() 116 | 117 | 118 | if __name__ == '__main__': 119 | main() 120 | -------------------------------------------------------------------------------- /2-build-files/elite-checksum.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # ****************************************************************************** 4 | # 5 | # 6502 SECOND PROCESSOR ELITE CHECKSUM SCRIPT 6 | # 7 | # Written by Mark Moxon, and inspired by Kieran Connell's version for the 8 | # cassette version of Elite 9 | # 10 | # This script applies encryption and checksums to the compiled binary for the 11 | # main parasite game code. It reads the unencrypted "P.CODE.unprot.bin" binary 12 | # and generates an encrypted version as "P.CODE", based on the code in the 13 | # original "S.PCODES" BASIC source program 14 | # 15 | # ****************************************************************************** 16 | 17 | from __future__ import print_function 18 | import sys 19 | 20 | argv = sys.argv 21 | encrypt = True 22 | release = 2 23 | 24 | for arg in argv[1:]: 25 | if arg == "-u": 26 | encrypt = False 27 | if arg == "-rel1": 28 | release = 1 29 | if arg == "-rel2": 30 | release = 2 31 | if arg == "-rel3": 32 | release = 3 33 | 34 | print("6502SP Elite Checksum") 35 | print("Encryption = ", encrypt) 36 | 37 | # Configuration variables for scrambling code and calculating checksums 38 | # 39 | # Values must match those in 3-assembled-output/compile.txt 40 | # 41 | # If you alter the source code, then you should extract the correct values for 42 | # the following variables and plug them into the following, otherwise the game 43 | # will fail the checksum process and will hang on loading 44 | # 45 | # You can find the correct values for these variables by building your updated 46 | # source, and then searching compile.txt for "elite-checksum.py", where the new 47 | # values will be listed 48 | 49 | if release == 1: 50 | # Source disc variant 51 | s = 0x106A # S% 52 | g = 0x10D1 # G% 53 | f = 0x81B0 # F% 54 | elif release == 2: 55 | # SNG45 variant 56 | s = 0x106A # S% 57 | g = 0x10D1 # G% 58 | f = 0x818F # F% 59 | elif release == 3: 60 | # Executive variant 61 | s = 0x106C # S% 62 | g = 0x10D3 # G% 63 | f = 0x82E7 # F% 64 | 65 | # Load assembled code file for P.CODE 66 | 67 | data_block = bytearray() 68 | 69 | elite_file = open("3-assembled-output/P.CODE.unprot.bin", "rb") 70 | data_block.extend(elite_file.read()) 71 | elite_file.close() 72 | 73 | # Commander data checksum 74 | 75 | if release == 1: 76 | # Source disc 77 | commander_start = 12 + 5 78 | elif release == 2: 79 | # SNG45 80 | commander_start = 12 + 5 81 | elif release == 3: 82 | # Executive 83 | commander_start = 14 + 5 84 | 85 | commander_offset = 0x52 86 | CH = 0x4B - 2 87 | CY = 0 88 | for i in range(CH, 0, -1): 89 | CH = CH + CY + data_block[commander_start + i + 7] 90 | CY = (CH > 255) & 1 91 | CH = CH % 256 92 | CH = CH ^ data_block[commander_start + i + 8] 93 | 94 | print("Commander checksum = ", hex(CH)) 95 | 96 | data_block[commander_start + commander_offset] = CH ^ 0xA9 97 | data_block[commander_start + commander_offset + 1] = CH 98 | 99 | # First part: ZP routine, which sets the checksum byte at S%-1 100 | 101 | s_checksum = 0x10 102 | carry = 1 103 | for x in range(0x10, 0xA0): 104 | for y in [0] + list(range(255, 0, -1)): 105 | i = x * 256 + y 106 | s_checksum += data_block[i - 0x1000] + carry 107 | if s_checksum > 255: 108 | carry = 1 109 | else: 110 | carry = 0 111 | s_checksum = s_checksum % 256 112 | s_checksum ^= y 113 | s_checksum = s_checksum % 256 114 | sub = x + (1 - carry) 115 | if sub > s_checksum: 116 | s_checksum = s_checksum + 256 - sub 117 | carry = 0 118 | else: 119 | s_checksum -= sub 120 | carry = 1 121 | s_checksum = s_checksum % 256 122 | carry = 0 123 | s_checksum = s_checksum % 256 124 | s_checksum = s_checksum % 256 125 | 126 | print("S%-1 checksum = ", s_checksum) 127 | 128 | if encrypt: 129 | data_block[s - 0x1000 - 1] = s_checksum % 256 130 | 131 | # Second part: SC routine, which EORs bytes between &1300 and &9FFF 132 | 133 | if encrypt: 134 | for n in range(0x1300, 0xA000): 135 | data_block[n - 0x1000] = data_block[n - 0x1000] ^ (n % 256) ^ 0x75 136 | 137 | # Third part: V, which reverses the order of bytes between G% and F%-1 138 | 139 | if encrypt: 140 | f -= 1 141 | while g < f: 142 | tmp = data_block[g - 0x1000] 143 | data_block[g - 0x1000] = data_block[f - 0x1000] 144 | data_block[f - 0x1000] = tmp 145 | g += 1 146 | f -= 1 147 | 148 | # Write output file for P.CODE 149 | 150 | output_file = open("3-assembled-output/P.CODE.bin", "wb") 151 | output_file.write(data_block) 152 | output_file.close() 153 | 154 | print("3-assembled-output/P.CODE.bin file saved") 155 | -------------------------------------------------------------------------------- /2-build-files/elite-decrypt.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # ****************************************************************************** 4 | # 5 | # 6502 SECOND PROCESSOR ELITE DECRYPTION SCRIPT 6 | # 7 | # Written by Mark Moxon 8 | # 9 | # This script removes encryption and checksums from the compiled binary for 10 | # the main game code. It reads the encrypted "P.CODE.bin" binary and generates a 11 | # decrypted version as "P.CODE.decrypt.bin" 12 | # 13 | # Files are saved using the decrypt.bin suffix so they don't overwrite any 14 | # existing unprot.bin files, so they can be compared if required 15 | # 16 | # Run this script by changing directory to the repository's root folder and 17 | # running the script with "python 2-build-files/elite-decrypt.py" 18 | # 19 | # You can decrypt specific releases by adding the following arguments, as in 20 | # "python 2-build-files/elite-decrypt.py -rel1" for example: 21 | # 22 | # -rel1 Decrypt the source disc variant from Ian Bell's site 23 | # -rel2 Decrypt the SNG45 release 24 | # -rel3 Decrypt the Executive version 25 | # 26 | # If unspecified, the default is rel2 27 | # 28 | # ****************************************************************************** 29 | 30 | from __future__ import print_function 31 | import sys 32 | 33 | print() 34 | print("BBC 6502 Second Processor Elite decryption") 35 | 36 | argv = sys.argv 37 | release = 2 38 | folder = "sng45" 39 | 40 | for arg in argv[1:]: 41 | if arg == "-rel1": 42 | release = 1 43 | folder = "source-disc" 44 | if arg == "-rel2": 45 | release = 2 46 | folder = "sng45" 47 | if arg == "-rel3": 48 | release = 3 49 | folder = "executive" 50 | 51 | print("Elite Decryption") 52 | 53 | data_block = bytearray() 54 | 55 | # Load assembled code file 56 | 57 | elite_file = open("4-reference-binaries/" + folder + "/P.CODE.bin", "rb") 58 | data_block.extend(elite_file.read()) 59 | elite_file.close() 60 | 61 | print() 62 | print("[ Read ] 4-reference-binaries/" + folder + "/P.CODE.bin") 63 | 64 | # Do decryption 65 | 66 | # Third part: V, which reverses the order of bytes between G% and F%-1 67 | # Can be reversed by simply repeating the reversal 68 | # 69 | # These values can be calculated from the unused code at prtblock, 70 | # which contains a CMP F%-1 instruction 71 | 72 | if release == 1: 73 | # Source disc 74 | g = 0x10D1 75 | f = 0x81B0 - 1 76 | elif release == 2: 77 | # SNG45 78 | g = 0x10D1 79 | f = 0x818F - 1 80 | elif release == 3: 81 | # Executive 82 | g = 0x10D3 83 | f = 0x82e7 - 1 84 | 85 | while g < f: 86 | tmp = data_block[g - 0x1000] 87 | data_block[g - 0x1000] = data_block[f - 0x1000] 88 | data_block[f - 0x1000] = tmp 89 | g += 1 90 | f -= 1 91 | 92 | # Second part: SC routine, which EORs bytes between &1300 and &9FFF 93 | # Can be reversed by simply repeating the EOR 94 | 95 | for n in range(0x1300, 0xA000): 96 | data_block[n - 0x1000] = data_block[n - 0x1000] ^ (n % 256) ^ 0x75 97 | 98 | # First part: ZP routine, which sets the checksum byte at S%-1 99 | # Can be reversed by setting the checksum to an RTS, as in the source 100 | 101 | s = 0x106A 102 | data_block[s - 0x1000 - 1] = 0x60 103 | 104 | print("[ Decrypt ] 4-reference-binaries/" + folder + "/P.CODE.bin") 105 | 106 | # Write output file for P.CODE.decrypt 107 | 108 | output_file = open("4-reference-binaries/" + folder + "/P.CODE.decrypt.bin", "wb") 109 | output_file.write(data_block) 110 | output_file.close() 111 | 112 | print("[ Save ] 4-reference-binaries/" + folder + "/P.CODE.decrypt.bin") 113 | print() 114 | -------------------------------------------------------------------------------- /2-build-files/libiconv2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/2-build-files/libiconv2.dll -------------------------------------------------------------------------------- /2-build-files/libintl3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/2-build-files/libintl3.dll -------------------------------------------------------------------------------- /2-build-files/make.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/2-build-files/make.exe -------------------------------------------------------------------------------- /3-assembled-output/ELITE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELITE.bin -------------------------------------------------------------------------------- /3-assembled-output/ELITEa.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELITEa.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTA.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTA.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTB.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTB.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTC.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTC.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTD.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTD.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTE.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTF.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTF.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTG.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTG.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTH.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTH.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTI.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTI.bin -------------------------------------------------------------------------------- /3-assembled-output/ELTJ.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/ELTJ.bin -------------------------------------------------------------------------------- /3-assembled-output/I.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/I.CODE.bin -------------------------------------------------------------------------------- /3-assembled-output/P.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/P.CODE.bin -------------------------------------------------------------------------------- /3-assembled-output/P.CODE.unprot.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/P.CODE.unprot.bin -------------------------------------------------------------------------------- /3-assembled-output/README.md: -------------------------------------------------------------------------------- 1 | # Assembled output for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the output binaries from the build process for the 6502 Second Processor version of Elite. 4 | 5 | It also contains [compile.txt](compile.txt), which contains the output from the assembly process. This is very useful when debugging the build process. 6 | 7 | --- 8 | 9 | Right on, Commanders! 10 | 11 | _Mark Moxon_ -------------------------------------------------------------------------------- /3-assembled-output/README.txt: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------- 3 | Acornsoft Elite 4 | 5 | Version: BBC with 6502 Second Processor 6 | Variant: Acornsoft SNG45 release 7 | Product: Acornsoft SNG45 8 | Acornsoft SNG47 9 | 10 | See www.bbcelite.com for details 11 | --------------------------------------- 12 | -------------------------------------------------------------------------------- /3-assembled-output/SHIPS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/SHIPS.bin -------------------------------------------------------------------------------- /3-assembled-output/WORDS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/3-assembled-output/WORDS.bin -------------------------------------------------------------------------------- /4-reference-binaries/README.md: -------------------------------------------------------------------------------- 1 | # Reference binaries for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the binaries from the original sources for the 6502 Second Processor version of Elite on Ian Bell's personal website, as well as reference binaries for the other releases. 4 | 5 | * [executive](executive) contains the binaries from the Executive version 6 | 7 | * [sng45](sng45) contains the binaries from the Acornsoft SNG45 release 8 | 9 | * [source-disc](source-disc) contains the binaries from the source disc on Ian Bell's personal website 10 | 11 | --- 12 | 13 | Right on, Commanders! 14 | 15 | _Mark Moxon_ -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELITE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELITE.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELITEa.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELITEa.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTA.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTA.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTB.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTB.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTC.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTC.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTD.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTD.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTE.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTF.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTF.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTG.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTG.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTH.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTH.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTI.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTI.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/ELTJ.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/ELTJ.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/I.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/I.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/P.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/P.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/P.CODE.unprot.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/P.CODE.unprot.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/SHIPS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/SHIPS.bin -------------------------------------------------------------------------------- /4-reference-binaries/executive/WORDS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/executive/WORDS.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELITE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELITE.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELITEa.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELITEa.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTA.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTA.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTB.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTB.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTC.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTC.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTD.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTD.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTE.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTF.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTF.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTG.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTG.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTH.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTH.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTI.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTI.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/ELTJ.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/ELTJ.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/I.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/I.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/P.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/P.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/P.CODE.unprot.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/P.CODE.unprot.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/SHIPS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/SHIPS.bin -------------------------------------------------------------------------------- /4-reference-binaries/sng45/WORDS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/sng45/WORDS.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELITE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELITE.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELITEa.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELITEa.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTA.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTA.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTB.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTB.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTC.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTC.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTD.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTD.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTE.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTF.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTF.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTG.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTG.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTH.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTH.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTI.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTI.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/ELTJ.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/ELTJ.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/I.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/I.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/P.CODE.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/P.CODE.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/P.CODE.unprot.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/P.CODE.unprot.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/SHIPS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/SHIPS.bin -------------------------------------------------------------------------------- /4-reference-binaries/source-disc/WORDS.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/4-reference-binaries/source-disc/WORDS.bin -------------------------------------------------------------------------------- /5-compiled-game-discs/README.md: -------------------------------------------------------------------------------- 1 | # Compiled game discs for the 6502 Second Processor version of Elite 2 | 3 | This folder contains the SSD disc images for the 6502 Second Processor version of Elite, as produced by the build process. There is one SSD file for each supported release. These SSD images can be loaded into an emulator like JSBeeb or BeebEm, or into a real BBC Micro using a device like a Gotek. 4 | 5 | --- 6 | 7 | Right on, Commanders! 8 | 9 | _Mark Moxon_ -------------------------------------------------------------------------------- /5-compiled-game-discs/elite-6502sp-executive.ssd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/5-compiled-game-discs/elite-6502sp-executive.ssd -------------------------------------------------------------------------------- /5-compiled-game-discs/elite-6502sp-from-source-disc.ssd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/5-compiled-game-discs/elite-6502sp-from-source-disc.ssd -------------------------------------------------------------------------------- /5-compiled-game-discs/elite-6502sp-sng45.ssd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markmoxon/elite-source-code-6502-second-processor/efbfe9ec79ffd12e94914dd153304acbaf78946a/5-compiled-game-discs/elite-6502sp-sng45.ssd -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | BEEBASM?=beebasm 2 | PYTHON?=python 3 | 4 | # A make command with no arguments will build the SNG45 variant with 5 | # encrypted binaries, checksums enabled, the standard commander and 6 | # crc32 verification of the game binaries 7 | # 8 | # Optional arguments for the make command are: 9 | # 10 | # variant= Build the specified variant: 11 | # 12 | # sng45 (default) 13 | # source-disc 14 | # executive 15 | # 16 | # commander=max Start with a maxed-out commander 17 | # 18 | # encrypt=no Disable encryption and checksum routines 19 | # 20 | # match=no Do not attempt to match the original game binaries 21 | # (i.e. omit workspace noise) 22 | # 23 | # verify=no Disable crc32 verification of the game binaries 24 | # 25 | # So, for example: 26 | # 27 | # make variant=source-disc commander=max encrypt=no match=no verify=no 28 | # 29 | # will build an unencrypted source disc variant with a maxed-out commander, 30 | # no workspace noise and no crc32 verification 31 | # 32 | # The following variables are written into elite-build-options.asm depending on 33 | # the above arguments, so they can be passed to BeebAsm: 34 | # 35 | # _VERSION 36 | # 3 = BBC Micro with 6502 Second Processor 37 | # 38 | # _VARIANT 39 | # 1 = Source disc 40 | # 2 = SNG45 (default) 41 | # 3 = Executive version 42 | # 43 | # _MAX_COMMANDER 44 | # TRUE = Maxed-out commander 45 | # FALSE = Standard commander 46 | # 47 | # _REMOVE_CHECKSUMS 48 | # TRUE = Disable checksum routines 49 | # FALSE = Enable checksum routines 50 | # 51 | # _MATCH_ORIGINAL_BINARIES 52 | # TRUE = Match binaries to released version (i.e. fill workspaces with noise) 53 | # FALSE = Zero-fill workspaces 54 | # 55 | # The encrypt and verify arguments are passed to the elite-checksum.py and 56 | # crc32.py scripts, rather than BeebAsm 57 | 58 | ifeq ($(commander), max) 59 | max-commander=TRUE 60 | else 61 | max-commander=FALSE 62 | endif 63 | 64 | ifeq ($(encrypt), no) 65 | unencrypt=-u 66 | remove-checksums=TRUE 67 | else 68 | unencrypt= 69 | remove-checksums=FALSE 70 | endif 71 | 72 | ifeq ($(match), no) 73 | match-original-binaries=FALSE 74 | else 75 | match-original-binaries=TRUE 76 | endif 77 | 78 | ifeq ($(variant), source-disc) 79 | variant-number=1 80 | folder=source-disc 81 | suffix=-from-source-disc 82 | boot=-boot ELITE 83 | else ifeq ($(variant), executive) 84 | variant-number=3 85 | folder=executive 86 | suffix=-executive 87 | boot=-boot ELITE 88 | else 89 | variant-number=2 90 | folder=sng45 91 | suffix=-sng45 92 | boot=-opt 2 93 | endif 94 | 95 | .PHONY:all 96 | all: 97 | echo _VERSION=3 > 1-source-files/main-sources/elite-build-options.asm 98 | echo _VARIANT=$(variant-number) >> 1-source-files/main-sources/elite-build-options.asm 99 | echo _REMOVE_CHECKSUMS=$(remove-checksums) >> 1-source-files/main-sources/elite-build-options.asm 100 | echo _MATCH_ORIGINAL_BINARIES=$(match-original-binaries) >> 1-source-files/main-sources/elite-build-options.asm 101 | echo _MAX_COMMANDER=$(max-commander) >> 1-source-files/main-sources/elite-build-options.asm 102 | $(BEEBASM) -i 1-source-files/main-sources/elite-source.asm -v > 3-assembled-output/compile.txt 103 | $(BEEBASM) -i 1-source-files/main-sources/elite-bcfs.asm -v >> 3-assembled-output/compile.txt 104 | $(BEEBASM) -i 1-source-files/main-sources/elite-z.asm -v >> 3-assembled-output/compile.txt 105 | $(BEEBASM) -i 1-source-files/main-sources/elite-loader1.asm -v >> 3-assembled-output/compile.txt 106 | $(BEEBASM) -i 1-source-files/main-sources/elite-loader2.asm -v >> 3-assembled-output/compile.txt 107 | $(BEEBASM) -i 1-source-files/main-sources/elite-readme.asm -v >> 3-assembled-output/compile.txt 108 | $(PYTHON) 2-build-files/elite-checksum.py $(unencrypt) -rel$(variant-number) 109 | $(BEEBASM) -i 1-source-files/main-sources/elite-disc.asm -do 5-compiled-game-discs/elite-6502sp$(suffix).ssd $(boot) -title "E L I T E" 110 | ifneq ($(verify), no) 111 | @$(PYTHON) 2-build-files/crc32.py 4-reference-binaries/$(folder) 3-assembled-output 112 | endif 113 | 114 | .PHONY:b2 115 | b2: 116 | curl -G "http://localhost:48075/reset/b2" 117 | curl -H "Content-Type:application/binary" --upload-file "5-compiled-game-discs/elite-6502sp$(suffix).ssd" "http://localhost:48075/run/b2?name=elite-6502sp$(suffix).ssd" 118 | -------------------------------------------------------------------------------- /make.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | SETLOCAL 3 | SET BEEBASM=C:\Users\user\bin\beebasm.exe 4 | SET PYTHON=C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe 5 | 2-build-files\make %* 6 | --------------------------------------------------------------------------------