Uncompressed - The Tech Heap
Uncompressed - The Tech Heap
Uncompressed - The Tech Heap
- 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