10.07.2015 Views

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

Uncompressed - The Tech Heap

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

EXTENDED BASIC UNRAVELLED II HOW TO USE THIS BOOK ORIGIN: SPECTRAL ASSOCREVISED:12/26/99 WALTER K ZYDHEKHOW TO USE THIS BOOKExtended BASIC Unravelled is a commented, disassembled listing of the ColorComputer Extended BASIC ROM. <strong>The</strong> author has never seen any kind of source listingfor the Color Computer ROMs, so the comments and disassembly are 100% unique. Someof the variable label literals, which were used, have come from published memorymaps of systems, which use a BASIC similar to that used in the Color Computer.<strong>The</strong> labels used in the disassembly correspond to absolute addresses in RAMpreceded by an ‘L’. <strong>The</strong> labels correspond to the addresses in Version 1.0 of theROM, which may cause some confusion when trying to cross-index the 1.0 and 1.1versions.Literal labels have been assigned to RAM variables (memory locations thatcontain data which may change) and some ROM routines and data tables. <strong>The</strong> symboltable in Appendix C will allow the user to locate the address of the literal label.If the address is between 0 and $989, the literal is a RAM variable, thedescription of which will be found in appendix A, the Memory Map. If the address isbetween $8000 and $9FFF, the label will be found in the Extended BASIC listing. Ifit is between $A000 and $BFFF, the label is in the Color BASIC listing and if it isbetween $C000 and $DFFF, the label is in the Disk BASIC listing. Some of theliteral values such as SKP1, SECLEN, etc. are values not associated with anaddress. <strong>The</strong>y are defined at the beginning of the Memory Map (appendix A) in thetable of EQUATES (EQU). <strong>The</strong>re is a small group of EQUates at the beginning of theExtended Basic disassembly listing (Appendix B).<strong>The</strong> “>“ symbol will occasionally appear to the left of the address of aninstruction. This symbol is used to indicate that a JMP, JSR or LBxx instruction isbeing used when a BRA, BSR or Bxx instruction would suffice. <strong>The</strong>se instructions maybe replaced by their short versions in order to save a few bytes if necessary.<strong>The</strong>re are several places in the original object code where an instruction ofthe form LDA 0,R (where R=X,Y,U,S) has been used. <strong>The</strong>se have been replaced byinstructions of the form LDA ,R which is more efficient in terms of processor time(one cycle shorter).<strong>The</strong> reader will find a few places in the disassembly where an instructionsuch as LDA #0 is found. <strong>The</strong>se instructions usually stem from an original sourcecode instruction, which is like LDA #LABEL with LABEL equal to zero. <strong>The</strong> originalprogrammer did not go back and change those instructions to a CLRA. In someinstances an LDA #0 may be necessary, as the programmer did not wish theinstruction to modify the CARRY flag.<strong>The</strong> different versions of the ROMs provided in this book are kept in onelarge disk file with conditional assembly flags which allow the assembly ofwhichever version is desired by merely changing a single flag in the sourcelisting. This is a convenient method of keeping track of the different versions ofthe ROMs but it can cause havoc with the line numbers at the extreme left of thedisassembly listing. <strong>The</strong> line numbers keep track of EVERY line in the sourcelisting regardless of whether or not that particular line is assembled. If whenusing the disassembly listings, you notice a gap in the line numbers it means thatthe missing line numbers correspond to a section of code, which was skipped duringthe assembly of that particular listing. This invariably means that there is adifference in the ROMs at that particular point.4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!